*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{background:var(--c-bg);color:var(--c-ink);font-family:var(--f-body);font-size:var(--t-body);overscroll-behavior:none;margin:0;line-height:1.5}.inscribe{font-family:var(--f-display);letter-spacing:.01em}.lbl{font-size:var(--t-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--c-muted)}.num{font-variant-numeric:tabular-nums}.muted{color:var(--c-muted)}.shell{flex-direction:column;height:100%;display:flex}.screen{padding:var(--s-4) var(--s-3) var(--s-5);gap:var(--s-3);flex-direction:column;flex:1;animation:.22s cubic-bezier(.16,1,.3,1) ember-in;display:flex;overflow-y:auto}.tabbar{background:var(--c-bgDeep);border-top:1px solid var(--c-line);padding-bottom:env(safe-area-inset-bottom);display:flex}.tabbar button{padding:var(--s-2) 0 var(--s-3);font-size:var(--t-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--c-muted);font-family:var(--f-body);cursor:pointer;background:0 0;border:none;flex:1}.tabbar button.on{color:var(--c-ember);box-shadow:inset 0 2px 0 var(--c-ember);font-weight:700}.card{background:var(--c-panel);border:1px solid var(--c-line);border-radius:var(--r-md);padding:var(--s-3);gap:var(--s-2);flex-direction:column;display:flex;box-shadow:inset 0 1px #ffa65712}.card.enter{animation:.22s cubic-bezier(.16,1,.3,1) backwards ember-in}.row{align-items:center;gap:var(--s-2);display:flex}.row.spread{justify-content:space-between}.hero{border-radius:var(--r-md);min-height:150px;padding:var(--s-3);background-position:50% 25%;background-size:cover;flex-direction:column;justify-content:flex-end;display:flex;position:relative;overflow:hidden}.hero:before{content:"";background:var(--g-heroScrim);position:absolute;inset:0}.hero>*{position:relative}button.btn,button.cta{font-family:var(--f-body);font-size:var(--t-caption);border-radius:var(--r-sm);border:1px solid var(--c-line);background:var(--c-panelRaised);color:var(--c-ink);padding:var(--s-2) var(--s-3);cursor:pointer;transition:transform .12s cubic-bezier(.4,0,.6,1)}button.btn:active,button.cta:active{transform:scale(.96)}button.btn:disabled{opacity:.45}button.cta{background:var(--g-emberFill);border-color:var(--c-ember);color:var(--c-emberInk);font-weight:700;font-size:var(--t-body);padding:var(--s-3)}button.cta.pulse{animation:2.6s ease-in-out infinite cta-pulse}button.cta span.sub{font-weight:400;font-size:var(--t-micro);opacity:.85;display:block}button:focus-visible{outline:2px solid var(--c-emberHot);outline-offset:2px}.btnrow{gap:var(--s-2);display:flex}.btnrow .cta{flex:1.4}.btnrow .btn{flex:1}.bar{border-radius:var(--r-pill);background:var(--c-barTrack);height:10px;overflow:hidden}.bar>i{border-radius:var(--r-pill);background:var(--g-emberFill);height:100%;transition:width .42s;display:block}.bar.gold>i{background:var(--c-oldGold)}.bar.danger>i{background:var(--c-bloodrune)}.bar.energy>i{background:var(--c-vitriol)}.chip{font-size:var(--t-micro);letter-spacing:.06em;text-transform:uppercase;border-radius:var(--r-pill);border:1px solid var(--c-ember);color:var(--c-ember);white-space:nowrap;padding:3px 10px}.chip.solid{background:var(--g-emberFill);color:var(--c-emberInk);border:none}.chip.ok{border-color:var(--c-ok);color:var(--c-vitriol)}.chip.quiet{border-color:var(--c-line);color:var(--c-muted)}.statgrid{gap:var(--s-2);grid-template-columns:1fr 1fr;display:grid}.stat{background:var(--c-panel);border:1px solid var(--c-line);border-radius:var(--r-md);padding:var(--s-2) var(--s-3);flex-direction:column;gap:2px;display:flex;box-shadow:inset 0 1px #ffa65712}.stat b{font-family:var(--f-display);font-variant-numeric:tabular-nums;font-size:24px}.log{font-family:var(--f-mono);font-size:var(--t-caption);flex-direction:column;gap:3px;max-height:130px;display:flex;overflow-y:auto}.log p{margin:0}.log .crit{color:var(--c-ember);font-weight:700}.log .dim{color:var(--c-muted)}.scrim{z-index:20;background:#08060cc7;align-items:flex-end;animation:.22s fade-in;display:flex;position:fixed;inset:0}.sheet{background:var(--c-bg);border-top:1px solid var(--c-line);border-radius:var(--r-md) var(--r-md) 0 0;width:100%;max-height:86vh;padding:var(--s-3) var(--s-3) calc(var(--s-5) + env(safe-area-inset-bottom));gap:var(--s-3);flex-direction:column;animation:.22s cubic-bezier(.16,1,.3,1) rise;display:flex;overflow-y:auto}.modal-center{padding:var(--s-3);justify-content:center;align-items:center}.modal{background:var(--c-panel);border:1px solid var(--c-line);border-radius:var(--r-md);width:100%;max-width:420px;max-height:90vh;padding:var(--s-3);gap:var(--s-3);flex-direction:column;animation:.22s cubic-bezier(.16,1,.3,1) ember-in;display:flex;overflow-y:auto;box-shadow:0 14px 40px #0009}.toasts{top:var(--s-3);left:var(--s-3);right:var(--s-3);z-index:30;gap:var(--s-2);pointer-events:none;flex-direction:column;display:flex;position:fixed}.toast{background:var(--c-panelRaised);border:1px solid var(--c-ember);border-radius:var(--r-sm);padding:var(--s-2) var(--s-3);font-size:var(--t-caption);pointer-events:auto;animation:.22s cubic-bezier(.16,1,.3,1) drop-in;box-shadow:0 6px 20px #00000080}.celebrate{z-index:40;justify-content:center;align-items:center;gap:var(--s-3);text-align:center;padding:var(--s-5);background:#08060cdb;flex-direction:column;animation:.22s fade-in;display:flex;position:fixed;inset:0}.celebrate .burst{background:radial-gradient(circle, var(--c-emberHot), var(--c-ember) 55%, transparent 72%);border-radius:50%;justify-content:center;align-items:center;width:130px;height:130px;font-size:52px;animation:.9s cubic-bezier(.16,1,.3,1) rune-burst;display:flex}.celebrate img.burst-art{object-fit:cover;border:3px solid var(--c-ember);border-radius:50%;width:150px;height:150px;animation:.9s cubic-bezier(.16,1,.3,1) rune-burst}.celebrate h2{font-family:var(--f-display);font-size:var(--t-display);margin:0;animation:.42s cubic-bezier(.16,1,.3,1) .15s backwards rise}.celebrate p{color:var(--c-muted);margin:0;animation:.42s cubic-bezier(.16,1,.3,1) .26s backwards rise}.auth{min-height:100%;padding:var(--s-5) var(--s-4) calc(var(--s-5) + env(safe-area-inset-bottom));background-position:50% 20%;background-size:cover;flex-direction:column;justify-content:flex-end;display:flex;position:relative}.auth:before{content:"";background:linear-gradient(#0e0b1340, var(--c-bg) 78%);position:absolute;inset:0}.auth>*{position:relative}.auth h1{font-family:var(--f-display);margin:0 0 2px;font-size:42px;animation:.42s cubic-bezier(.16,1,.3,1) rise}.auth form{gap:var(--s-2);margin-top:var(--s-3);flex-direction:column;display:flex}input{font:inherit;background:var(--c-panel);border:1px solid var(--c-line);border-radius:var(--r-sm);color:var(--c-ink);padding:var(--s-3)}input:focus-visible{outline:2px solid var(--c-ember);outline-offset:1px}.link{color:var(--c-ember);font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.error{color:var(--c-emberHot);font-size:var(--t-caption)}.avatar{object-fit:cover;border:2px solid var(--c-ember);border-radius:50%;width:52px;height:52px}.shimmer{background:linear-gradient(100deg, var(--c-ink) 42%, var(--c-emberHot) 50%, var(--c-ink) 58%);color:#0000;background-size:220% 100%;-webkit-background-clip:text;background-clip:text;animation:5.5s linear infinite shimmer}.countup{display:inline-block}.countup.bump{animation:.42s cubic-bezier(.16,1,.3,1) bump}.sparks{pointer-events:none;position:absolute;inset:0}@keyframes ember-in{0%{opacity:0;transform:translateY(10px)}}@keyframes rise{0%{opacity:0;transform:translateY(22px)}}@keyframes drop-in{0%{opacity:0;transform:translateY(-16px)}}@keyframes fade-in{0%{opacity:0}}@keyframes cta-pulse{0%,to{box-shadow:0 0 #ff7a2f73}50%{box-shadow:0 0 22px 2px #ff7a2f8c}}@keyframes rune-burst{0%{opacity:0;transform:scale(.2)rotate(-12deg)}55%{opacity:1;transform:scale(1.12)rotate(2deg)}to{transform:scale(1)rotate(0)}}@keyframes shimmer{to{background-position:-220% 0}}@keyframes bump{30%{color:var(--c-emberHot);transform:scale(1.25)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}.shimmer{color:var(--c-ink);background:0 0;animation:none}.sparks{display:none}}
