:root{color-scheme:dark;--bg: #0a0b12;--surface-1: #13141e;--surface-2: #1b1c29;--surface-3: #252638;--line: #2a2b3d;--line-strong: #3a3b52;--scrim: rgb(5 5 10 / .66);--text: #f2f1f8;--text-2: #a7a6bd;--text-3: #6e6d86;--accent: #ff4f9a;--accent-2: #ff9a4d;--accent-ink: #12020a;--accent-soft: color-mix(in srgb, var(--accent) 16%, transparent);--cool: #34d6c8;--cool-soft: color-mix(in srgb, var(--cool) 16%, transparent);--sunset: linear-gradient(120deg, var(--accent) 0%, var(--accent-2) 100%);--ok: #3ddc97;--ok-soft: color-mix(in srgb, var(--ok) 16%, transparent);--warn: #ffbe4d;--warn-soft: color-mix(in srgb, var(--warn) 16%, transparent);--err: #ff5d6c;--err-soft: color-mix(in srgb, var(--err) 16%, transparent);--char-1: #ff6fb1;--char-2: #4fb3ff;--char-3: #ffa24c;--char-4: #3ddc97;--cat-1: #ff6fb1;--cat-2: #4fb3ff;--cat-3: #ffbe4d;--cat-4: #3ddc97;--cat-5: #b98cff;--cat-6: #34d6c8;--cat-7: #ff8a5c;--cat-8: #e6e36a;--platinum: #a9c8ff;--gold: #f5c542;--silver: #c9ced6;--bronze: #d08a52;--font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fs-xs: .75rem;--fs-sm: .875rem;--fs-md: 1rem;--fs-lg: 1.25rem;--fs-xl: 1.75rem;--fs-hero: 2.75rem;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--r-sm: 8px;--r-md: 12px;--r-lg: 18px;--r-pill: 999px;--tap: 44px;--tap-lg: 56px;--tabbar-h: 64px;--topbar-h: 52px;--content-w: 560px;--gutter: 16px;--shadow-sheet: 0 -12px 40px rgb(0 0 0 / .5);--ease: cubic-bezier(.2, .8, .2, 1);--dur: .18s}@media (prefers-reduced-motion: reduce){:root{--dur: 0ms}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{background:var(--bg)}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-md);line-height:1.4;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:default}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3{margin:0;line-height:1.2}ul{list-style:none;margin:0;padding:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.shell{min-height:100dvh}.topbar{position:sticky;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease);top:0;z-index:20;display:flex;align-items:center;gap:var(--s-2);min-height:calc(var(--topbar-h) + env(safe-area-inset-top));padding:env(safe-area-inset-top) var(--gutter) 0;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid transparent}.topbar.scrolled{border-bottom-color:color-mix(in srgb,var(--line) 70%,transparent);background:color-mix(in srgb,var(--bg) 82%,transparent)}.topbar-inner{display:flex;align-items:center;gap:var(--s-2);width:100%;max-width:var(--content-w);margin:0 auto}.topbar h1{font-size:var(--fs-lg);font-weight:800;letter-spacing:-.01em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .back{margin-left:calc(-1 * var(--s-2))}.content{max-width:var(--content-w);margin:0 auto;padding:var(--s-3) var(--gutter) calc(var(--tabbar-h) + env(safe-area-inset-bottom) + var(--s-8))}.stack{display:flex;flex-direction:column;gap:var(--s-3)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:center;padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb,var(--surface-1) 94%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line)}.tabbar-inner{display:grid;grid-template-columns:repeat(5,1fr);width:100%;max-width:var(--content-w)}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;height:var(--tabbar-h);border:0;background:none;color:var(--text-3);font-size:.6875rem;font-weight:600;letter-spacing:.02em;text-decoration:none;position:relative}.tab svg{width:24px;height:24px}.tab.active{color:var(--text)}.tab .dot{position:absolute;top:10px;right:calc(50% - 18px)}.card{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-4)}.card+.card{margin-top:0}.content>.card,.content>section,.content>details{margin-bottom:var(--s-3)}.card.tight{padding:var(--s-3)}.card.flush{padding:0;overflow:hidden}.card.hero{background:radial-gradient(120% 140% at 100% 0%,color-mix(in srgb,var(--accent) 22%,transparent) 0%,transparent 55%),radial-gradient(90% 120% at 0% 100%,color-mix(in srgb,var(--cool) 14%,transparent) 0%,transparent 60%),var(--surface-1)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);margin-bottom:var(--s-2)}.label{font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--text-3)}.card>.label{margin-bottom:var(--s-2)}.section-title{display:flex;align-items:baseline;justify-content:space-between;margin:var(--s-5) var(--s-1) var(--s-2)}.section-title h2{font-size:var(--fs-sm);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--text-2)}.muted{color:var(--text-2);font-size:var(--fs-sm)}.faint{color:var(--text-3);font-size:var(--fs-xs)}.small{font-size:var(--fs-xs);margin-top:var(--s-2)}.big,.hero-num{font-size:var(--fs-hero);font-weight:800;letter-spacing:-.02em;line-height:1.05}.num-lg{font-size:var(--fs-xl);font-weight:800;letter-spacing:-.01em}.row{display:flex;justify-content:space-between;align-items:center;gap:var(--s-2)}.row.top{align-items:flex-start}.grow{flex:1;min-width:0}.cap{text-transform:capitalize}.error-text{color:var(--err)}.ok-text{color:var(--ok)}.spaced{margin-top:var(--s-4)}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}dl{display:grid;grid-template-columns:auto 1fr;gap:6px var(--s-4);margin:var(--s-2) 0 0;font-size:var(--fs-sm)}dt{color:var(--text-3)}dd{margin:0;overflow-wrap:anywhere}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-4);border-radius:var(--r-md);border:1px solid var(--line-strong);background:var(--surface-2);color:var(--text);font-weight:600;text-decoration:none;transition:transform var(--dur) var(--ease),background var(--dur) var(--ease)}.btn:active:not(:disabled){transform:scale(.97)}.btn svg{width:20px;height:20px;flex:none}.btn.primary,.capture{background:var(--sunset);border:0;color:var(--accent-ink);font-weight:800}.btn.danger{color:var(--err);border-color:color-mix(in srgb,var(--err) 40%,transparent);background:var(--err-soft)}.btn.ghost{background:none;border-color:transparent;color:var(--text-2)}.btn.block,.capture{width:100%}.btn.lg,.capture{min-height:var(--tap-lg);font-size:1.0625rem;border-radius:var(--r-md)}.capture{display:flex;align-items:center;justify-content:center;gap:var(--s-2)}.capture svg{width:22px;height:22px}.capture:disabled{opacity:.6}.secondary{min-height:var(--tap);border-radius:var(--r-md);border:1px solid var(--line-strong);background:var(--surface-2);color:var(--text);font-weight:600}.icon-btn{display:inline-grid;place-items:center;width:var(--tap);height:var(--tap);flex:none;border-radius:var(--r-pill);border:0;background:none;color:var(--text-2)}.icon-btn svg{width:22px;height:22px}.icon-btn.filled{background:var(--surface-2);color:var(--text)}.link{background:none;border:0;color:var(--text-2);padding:var(--s-3) 0;min-height:var(--tap);text-decoration:underline;text-underline-offset:3px}.actions{display:flex;flex-direction:column;gap:var(--s-2);margin-top:var(--s-3)}.actions.inline{flex-direction:row}.actions.inline>*{flex:1}.fab{position:fixed;right:max(var(--gutter),calc((100vw - var(--content-w)) / 2 + var(--gutter)));bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + var(--s-4));z-index:25;display:inline-flex;align-items:center;gap:var(--s-2);height:var(--tap-lg);padding:0 var(--s-5) 0 var(--s-4);border:0;border-radius:var(--r-pill);background:var(--sunset);color:var(--accent-ink);font-weight:800;box-shadow:0 8px 24px color-mix(in srgb,var(--accent) 35%,transparent)}.fab svg{width:22px;height:22px}.kinds,.chips{display:flex;flex-wrap:wrap;gap:var(--s-2)}.chips.scroll{flex-wrap:nowrap;overflow-x:auto;margin:0 calc(-1 * var(--gutter));padding:2px var(--gutter);scrollbar-width:none}.chips.scroll::-webkit-scrollbar{display:none}.filters,.tabs{margin-bottom:var(--s-3)}.chip{display:inline-flex;align-items:center;gap:6px;flex:none;min-height:40px;padding:0 var(--s-4);border-radius:var(--r-pill);border:1px solid var(--line-strong);background:var(--surface-1);color:var(--text-2);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}.chip.active{border-color:transparent;background:var(--text);color:var(--bg)}.chip .count{opacity:.7;font-weight:500}.chip.wrong{min-height:32px;padding:0 var(--s-3);font-size:var(--fs-xs);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent)}.chip.sync{min-height:32px;font-size:var(--fs-xs)}.pill{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:0 var(--s-3);border-radius:var(--r-pill);border:0;background:var(--surface-2);color:var(--text-2);font-size:var(--fs-xs);font-weight:700;white-space:nowrap;text-decoration:none}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn,.pill.queued{background:var(--warn-soft);color:var(--warn)}.pill.err{background:var(--err-soft);color:var(--err)}.pill.accent,.pill.update{background:var(--sunset);color:var(--accent-ink)}.pill.live:before,.dot{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:currentColor}.pill.live:before{animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{50%{opacity:.35}}.dot.accent{background:var(--accent)}.badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-pill);background:var(--accent);color:var(--accent-ink);font-size:.6875rem;font-weight:800}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;border-radius:var(--r-md);background:var(--surface-2)}.segmented button{min-height:40px;border:0;border-radius:calc(var(--r-md) - 4px);background:none;color:var(--text-2);font-weight:700;font-size:var(--fs-sm)}.segmented button.active{background:var(--surface-3);color:var(--text);box-shadow:0 1px #ffffff0a inset}.who{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:var(--s-2)}.who button{display:flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap-lg);border-radius:var(--r-md);border:1px solid var(--line-strong);background:var(--surface-1);color:var(--text-2);font-weight:800}.who button.active{color:var(--text);border-color:var(--c);background:color-mix(in srgb,var(--c) 18%,var(--surface-1))}.avatar{display:inline-grid;place-items:center;width:28px;height:28px;flex:none;border-radius:50%;background:color-mix(in srgb,var(--c, var(--text-3)) 28%,transparent);color:var(--c, var(--text-2));font-size:var(--fs-xs);font-weight:800}.avatar.sm{width:20px;height:20px;font-size:.625rem}.bar{height:6px;border-radius:3px;background:var(--surface-3);overflow:hidden;margin:var(--s-2) 0}.bar span{display:block;height:100%;border-radius:3px;background:var(--sunset);transition:width .4s var(--ease)}.bar.cool span{background:var(--cool)}.bar.done span{background:var(--ok)}.ring{position:relative;display:inline-grid;place-items:center;flex:none}.ring svg{transform:rotate(-90deg)}.ring .track{stroke:var(--surface-3)}.ring .fill{stroke:url(#sunset);transition:stroke-dashoffset .5s var(--ease)}.ring .value{position:absolute;font-weight:800;font-size:var(--fs-sm)}.rings{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-2)}.ring-tile{display:flex;flex-direction:column;align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-2);border-radius:var(--r-lg);border:1px solid var(--line);background:var(--surface-1);text-decoration:none;color:var(--text)}.ring-tile .muted{font-size:var(--fs-xs)}.list>li,.rows>*{border-top:1px solid var(--line)}.list>li:first-child,.rows>*:first-child{border-top:0}.item{display:flex;align-items:center;gap:var(--s-3);min-height:var(--tap-lg);padding:var(--s-2) 0}.item .body{flex:1;min-width:0}.item .title{font-weight:600}.item.done .title{color:var(--text-2)}.item-btn{all:unset;display:flex;align-items:center;gap:var(--s-3);flex:1;min-width:0;cursor:pointer;min-height:var(--tap)}.nav-row{display:flex;align-items:center;gap:var(--s-3);width:100%;min-height:64px;padding:var(--s-3) var(--s-4);border:0;background:none;text-align:left;text-decoration:none;color:var(--text)}.nav-row+.nav-row{border-top:1px solid var(--line)}.nav-row .chev{color:var(--text-3);width:20px;height:20px;flex:none}.nav-row .icon-tile{width:40px;height:40px}.icon-tile{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:var(--r-md);background:color-mix(in srgb,var(--c, var(--accent)) 18%,transparent);color:var(--c, var(--accent))}.icon-tile svg{width:20px;height:20px}.tick{display:grid;place-items:center;width:var(--tap);height:var(--tap);flex:none;border-radius:50%;border:2px solid var(--line-strong);background:none;color:var(--accent-ink);transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}.tick svg{width:22px;height:22px;opacity:0}.tick.on{border-color:transparent;background:var(--ok)}.tick.on svg{opacity:1}.tick:active{transform:scale(.9)}.tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-2);font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.tag.now{background:var(--accent-soft);color:var(--accent)}.tt{font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:700;flex:none}.tt.platinum{color:var(--platinum)}.tt.gold{color:var(--gold)}.tt.silver{color:var(--silver)}.tt.bronze{color:var(--bronze)}.thumb{width:44px;height:44px;border-radius:var(--r-sm);flex:none;background:var(--surface-3);object-fit:cover}.item.done .thumb{opacity:.5}details.group>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:var(--s-2);min-height:var(--tap);font-weight:700}details.group>summary::-webkit-details-marker{display:none}details.group>summary .chev{width:18px;height:18px;color:var(--text-3);transition:transform var(--dur) var(--ease)}details.group[open]>summary .chev{transform:rotate(90deg)}input,textarea,select{width:100%;font:inherit;font-size:var(--fs-md);padding:12px 14px;border-radius:var(--r-md);border:1px solid var(--line-strong);background:var(--bg);color:var(--text);margin:var(--s-2) 0}textarea{min-height:140px;resize:vertical;line-height:1.5}input::placeholder,textarea::placeholder{color:var(--text-3)}.field{display:block;margin-bottom:var(--s-2)}.field>span{display:block;font-size:var(--fs-xs);font-weight:700;color:var(--text-2);text-transform:uppercase;letter-spacing:.08em}.search{position:relative}.search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--text-3)}.search input{padding-left:38px}.composer{display:flex;gap:var(--s-2);align-items:center}.composer input{margin:0}.switch{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-3) 0;border-bottom:1px solid var(--line)}.switch>span{display:flex;flex-direction:column;gap:2px}.switch input{-moz-appearance:none;appearance:none;-webkit-appearance:none;position:relative;flex:none;width:52px;height:32px;margin:0;padding:0;border:0;border-radius:var(--r-pill);background:var(--surface-3);cursor:pointer;transition:background var(--dur) var(--ease)}.switch input:before{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:var(--text);box-shadow:0 1px 3px #0006;transition:transform var(--dur) var(--ease)}.switch input:checked{background:var(--accent)}.switch input:checked:before{transform:translate(20px)}.switch input:disabled{opacity:.4;cursor:default}.sheet-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--scrim);animation:fade var(--dur) var(--ease)}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:51;max-width:var(--content-w);max-height:88dvh;margin:0 auto;overflow-y:auto;padding:var(--s-2) var(--gutter) calc(var(--s-6) + env(safe-area-inset-bottom));border-radius:var(--r-lg) var(--r-lg) 0 0;background:var(--surface-1);border-top:1px solid var(--line-strong);box-shadow:var(--shadow-sheet);animation:rise .24s var(--ease)}.sheet .grabber{width:40px;height:4px;border-radius:2px;background:var(--line-strong);margin:0 auto var(--s-3)}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);margin-bottom:var(--s-3)}.sheet-head h2{font-size:var(--fs-lg);font-weight:800}@keyframes rise{0%{transform:translateY(24px);opacity:0}}@keyframes fade{0%{opacity:0}}.assistant .search{margin-bottom:var(--s-2)}.assistant .answer{padding:var(--s-2) 0;gap:var(--s-2);font-weight:600}.assistant .list{margin-top:var(--s-1)}.pin.target{--c: var(--accent);transform:scale(1.25);filter:drop-shadow(0 0 6px var(--accent))}.pin.here{--c: #4cc2ff;border-radius:50%}.banner,.stale{margin:0 0 var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-md);font-size:var(--fs-sm);background:var(--warn-soft);color:var(--warn)}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--s-2);padding:var(--s-8) var(--s-4);color:var(--text-2)}.empty .icon-tile{width:56px;height:56px;border-radius:var(--r-lg);margin-bottom:var(--s-2)}.empty .icon-tile svg{width:28px;height:28px}.empty h3{color:var(--text);font-size:var(--fs-lg)}.empty p{margin:0;max-width:34ch;font-size:var(--fs-sm)}.hero-meta{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-4);margin-top:var(--s-2)}.others{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--s-2);margin-top:var(--s-3)}.other{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border-radius:var(--r-md);background:color-mix(in srgb,var(--surface-2) 70%,transparent);font-size:var(--fs-sm)}.analysis{margin:var(--s-2) 0;font-size:var(--fs-sm);color:var(--text-2)}.analysis.pending{color:var(--warn)}.analysis.failed{color:var(--err)}.frame{display:block;width:100%;border-radius:var(--r-md);margin:var(--s-3) 0;background:var(--bg)}.frame.empty{aspect-ratio:16 / 9;display:flex;align-items:center;justify-content:center;padding:0}.timeline{position:relative;margin-top:var(--s-3)}.timeline:before{content:"";position:absolute;left:52px;top:6px;bottom:6px;width:2px;background:var(--line);border-radius:1px}.entry{position:relative;display:grid;grid-template-columns:40px 26px 1fr;align-items:start;gap:0 var(--s-1);padding:6px 0}.entry time{font-size:var(--fs-xs);color:var(--text-3);padding-top:2px;text-align:right;padding-right:4px}.entry .node{position:relative;z-index:1;justify-self:center;width:12px;height:12px;margin-top:4px;border-radius:50%;background:var(--k, var(--text-3));box-shadow:0 0 0 3px var(--surface-1)}.entry .text{font-size:var(--fs-sm);overflow-wrap:anywhere}.entry.k-note .text{color:var(--text);font-style:italic}.entry.k-mission{--k: var(--accent)}.entry.k-trophy{--k: var(--gold)}.entry.k-character{--k: var(--cool)}.entry.k-note{--k: var(--text)}.entry.k-tick,.entry.k-collectible{--k: var(--ok)}.entry.k-list{--k: var(--cat-5)}.entry.k-capture{--k: var(--text-3)}.entry.k-reset{--k: var(--err)}.stats{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-3)}.stat{display:inline-flex;align-items:baseline;gap:4px;padding:4px 10px;border-radius:var(--r-pill);background:var(--surface-2);font-size:var(--fs-xs);color:var(--text-2)}.stat b{color:var(--text);font-size:var(--fs-sm)}.delta-up{color:var(--ok)}.delta-down{color:var(--err)}.map-wrap{position:fixed;inset:calc(var(--topbar-h) + env(safe-area-inset-top)) 0 calc(var(--tabbar-h) + env(safe-area-inset-bottom)) 0;z-index:1}.map{position:absolute;top:0;right:0;bottom:0;left:0;background:#0d0f18}.map-overlay{position:absolute;left:0;right:0;top:0;z-index:500;padding:var(--s-2) var(--gutter) 0;pointer-events:none}.map-overlay>*{pointer-events:auto}.map-overlay .chips.scroll{margin:0 calc(-1 * var(--gutter))}.map-overlay .chip{background:color-mix(in srgb,var(--surface-1) 92%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.map-overlay .chip.active{background:var(--text)}.map-crosshair{position:absolute;left:50%;top:50%;z-index:450;width:28px;height:28px;margin:-14px 0 0 -14px;color:var(--text-2);pointer-events:none;opacity:.7}.map-hint{position:absolute;left:var(--gutter);right:var(--gutter);bottom:var(--s-4);z-index:500;text-align:center;pointer-events:none}.map-hint span{display:inline-block;padding:6px 12px;border-radius:var(--r-pill);background:color-mix(in srgb,var(--surface-1) 90%,transparent);color:var(--text-2);font-size:var(--fs-xs)}.map-fab{bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + var(--s-6) + 28px)}.pin{width:22px;height:22px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--c);border:2px solid rgb(10 11 18 / .85);box-shadow:0 2px 6px #00000080}.pin.done{opacity:.35;filter:grayscale(.6)}.pin.custom{border-color:#fff}.map.leaflet-container{background:#0d0f18;font:inherit}.leaflet-control-zoom{display:none}.leaflet-control-attribution{background:#0a0b12b3!important;color:var(--text-3)!important;font-size:10px}.leaflet-control-attribution a{color:var(--text-2)!important}.guide-card{display:block;width:100%;text-align:left;border:1px solid var(--line);background:var(--surface-1);border-radius:var(--r-lg);padding:var(--s-4);color:var(--text);text-decoration:none}.guide-card h3{font-size:var(--fs-md);margin-bottom:4px}.guide-card p{margin:0;color:var(--text-2);font-size:var(--fs-sm);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.prose{font-size:1.0625rem;line-height:1.6}.prose h2{font-size:var(--fs-lg);margin:var(--s-6) 0 var(--s-2)}.prose h3{font-size:var(--fs-md);margin:var(--s-5) 0 var(--s-2)}.prose p{margin:0 0 var(--s-3)}.prose ul,.prose ol{margin:0 0 var(--s-3);padding-left:1.3em}.prose ul{list-style:disc}.prose li{margin:4px 0}.prose code{background:var(--surface-2);padding:1px 6px;border-radius:4px;font-size:.9em}.prose blockquote{margin:0 0 var(--s-3);padding:var(--s-2) var(--s-3);border-left:3px solid var(--accent);background:var(--surface-1);border-radius:0 var(--r-sm) var(--r-sm) 0;color:var(--text-2)}.login{max-width:420px;margin:0 auto;padding:18vh var(--gutter) var(--s-8)}.login h1{font-size:2.25rem;font-weight:900;letter-spacing:-.03em;background:var(--sunset);-webkit-background-clip:text;background-clip:text;color:transparent}.login p{color:var(--text-2)}@media (min-width: 720px){.content{padding-top:var(--s-5)}}.leaflet-tooltip{background:var(--surface-2, #1c1d2b);color:var(--text, #fff);border:1px solid var(--border, #2a2b3d);font-weight:700;box-shadow:0 6px 18px #0006}.leaflet-tooltip-top:before{border-top-color:var(--surface-2, #1c1d2b)}html[data-text=large]{font-size:112.5%}button,a,.tab,.chip,.nav-row,.switch{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}img{-webkit-user-drag:none}.crash{display:grid;gap:var(--s-2);justify-items:start}.crash h2{margin:0;font-size:var(--fs-lg)}.crash code{max-width:100%;font-size:var(--fs-sm)}.crash .row{gap:var(--s-2)}input,textarea{-webkit-user-select:text;user-select:text}.center{text-align:center}.intro{margin:0 var(--s-1)}.page{animation-duration:.26s;animation-timing-function:var(--ease);animation-fill-mode:both}.page.enter-push{animation-name:push-in}.page.enter-pop{animation-name:pop-in-page}.page.enter-tab{animation-name:fade;animation-duration:.18s}@keyframes push-in{0%{opacity:0;transform:translate(28px)}}@keyframes pop-in-page{0%{opacity:0;transform:translate(-28px)}}.title-anim{animation:title-in .22s var(--ease)}@keyframes title-in{0%{opacity:0;transform:translateY(4px)}}.pop-in{animation:pop .26s var(--ease)}@keyframes pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.06)}}.rise-in{animation:rise .26s var(--ease) both}.tabbar-inner{position:relative}.tab-indicator{position:absolute;top:0;left:0;width:calc(100% / var(--tab-n));height:3px;display:flex;justify-content:center;transform:translate(calc(var(--tab-i) * 100%));transition:transform .32s var(--ease);pointer-events:none}.tab-indicator:before{content:"";width:28px;height:3px;border-radius:0 0 3px 3px;background:var(--sunset)}.tab svg{transition:transform var(--dur) var(--ease)}.tab:active svg{transform:scale(.86)}.tab.active svg{transform:translateY(-1px)}.settings-btn{margin-right:calc(-1 * var(--s-2));color:var(--text-2)}.pill.status{min-width:30px;justify-content:center}.nav-row{transition:background var(--dur) var(--ease)}.nav-row:active{background:var(--surface-2)}.ring-tile,.guide-card,a.card{transition:transform var(--dur) var(--ease),background var(--dur) var(--ease)}.ring-tile:active,.guide-card:active,a.card:active{transform:scale(.98);background:var(--surface-2)}.chip{transition:background var(--dur) var(--ease),color var(--dur) var(--ease),transform var(--dur) var(--ease)}.chip:active{transform:scale(.95)}.segmented button{transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.icon-btn{transition:background var(--dur) var(--ease),transform var(--dur) var(--ease)}.icon-btn:active:not(:disabled){transform:scale(.9);background:var(--surface-2)}.tick.on{animation:tick-pop .32s var(--ease)}@keyframes tick-pop{0%{transform:scale(.8)}55%{transform:scale(1.12)}to{transform:scale(1)}}.tick.on svg{animation:tick-draw .26s var(--ease) both}@keyframes tick-draw{0%{opacity:0;transform:scale(.4) rotate(-20deg)}}.fab{animation:fab-in .32s var(--ease) both;transition:transform var(--dur) var(--ease)}.fab:active{transform:scale(.94)}@keyframes fab-in{0%{opacity:0;transform:translateY(16px) scale(.9)}}.toaster{position:fixed;left:0;right:0;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + var(--s-3));z-index:60;display:flex;flex-direction:column;align-items:center;gap:var(--s-2);padding:0 var(--gutter);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:var(--s-3);width:100%;max-width:calc(var(--content-w) - 2 * var(--gutter));min-height:52px;padding:10px var(--s-2) 10px var(--s-3);border-radius:var(--r-md);background:color-mix(in srgb,var(--surface-3) 94%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line-strong);box-shadow:0 10px 30px #00000073;touch-action:pan-y;animation:toast-in .28s var(--ease) both;transition:transform .2s var(--ease),opacity .2s var(--ease)}.toast.dragging{transition:none}.toast.leaving{animation:toast-out .2s var(--ease) both}@keyframes toast-in{0%{opacity:0;transform:translateY(18px) scale(.96)}}@keyframes toast-out{to{opacity:0;transform:translateY(12px) scale(.96)}}.toast-icon{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:50%;background:var(--ok-soft);color:var(--ok)}.toast.error .toast-icon{background:var(--err-soft);color:var(--err)}.toast.warn .toast-icon{background:var(--warn-soft);color:var(--warn)}.toast.info .toast-icon{background:var(--cool-soft);color:var(--cool)}.toast-body{flex:1;min-width:0;display:flex;flex-direction:column;font-size:var(--fs-sm)}.toast-body strong{font-size:var(--fs-sm)}.toast-body span{color:var(--text-2)}.toast-body strong+span{font-size:var(--fs-xs)}.toast-body>span:only-child{color:var(--text)}.toast-action{flex:none;min-height:var(--tap);padding:0 var(--s-3);border:0;border-radius:var(--r-sm);background:none;color:var(--accent);font-weight:800}.toast-action:active{background:var(--accent-soft)}.sheet{padding-top:0;outline:none;overscroll-behavior:contain;transition:transform .22s var(--ease);animation:sheet-in .3s var(--ease)}.sheet.dragging{transition:none}.sheet.closing{animation:sheet-out .2s var(--ease) both}.sheet-scrim.closing{animation:fade-out .2s var(--ease) both}@keyframes sheet-in{0%{transform:translateY(100%)}}@keyframes sheet-out{to{transform:translateY(100%)}}@keyframes fade-out{to{opacity:0}}.sheet-drag{position:sticky;top:0;z-index:2;margin:0 calc(-1 * var(--gutter));padding:var(--s-2) var(--gutter) 0;background:var(--surface-1);touch-action:none;cursor:grab}.sheet-foot{position:sticky;bottom:calc(-1 * (var(--s-6) + env(safe-area-inset-bottom)));padding:var(--s-3) 0;background:var(--surface-1)}.ask-body{margin:0 0 var(--s-2)}.btn.danger.solid{background:var(--err);color:#1a0306;border:0;font-weight:800}.ptr{position:fixed;left:50%;top:calc(var(--topbar-h) + env(safe-area-inset-top));z-index:19;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--surface-2);border:1px solid var(--line-strong);color:var(--accent);box-shadow:0 6px 18px #0006;pointer-events:none;opacity:0}.ptr:not(.showing){transition:transform .24s var(--ease),opacity .24s var(--ease)}.ptr span{display:grid}.ptr.busy span{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{border-radius:var(--r-lg);background:linear-gradient(100deg,var(--surface-1) 30%,var(--surface-2) 50%,var(--surface-1) 70%) 0 0 / 300% 100%;animation:shimmer 1.4s linear infinite}.skeleton.block{height:60vh}.row-skel{height:64px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.install-nudge{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}.install-nudge img{border-radius:10px;flex:none}.install-nudge .icon-btn{margin-right:calc(-1 * var(--s-2))}.steps{display:flex;flex-direction:column;gap:var(--s-3);padding:0;margin:0 0 var(--s-4)}.steps li{display:flex;gap:var(--s-3);align-items:center}.steps svg{vertical-align:-3px;color:var(--cool)}.step-n{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:800;font-size:var(--fs-sm)}.setting-row{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);min-height:64px}.setting-row .muted{display:block;font-size:var(--fs-xs)}.setting{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--s-3) 0;border-bottom:1px solid var(--line)}.setting.stacked{flex-direction:column;align-items:stretch;gap:var(--s-2)}.setting.stacked input,.setting.stacked select,.setting.stacked textarea{margin:0}.card>.setting:last-child,.card>.switch:last-child{border-bottom:0}.card>.setting:first-child,.card>.switch:first-child{padding-top:0}.card.flush>.switch,.card.flush>.setting{padding-left:var(--s-4);padding-right:var(--s-4)}.field-label{display:flex;flex-direction:column;gap:2px;min-width:0}.field-label strong{display:inline-flex;align-items:center;gap:6px}.field-label .muted,.switch .muted{font-size:var(--fs-xs)}.reset-link{align-self:flex-start;background:none;border:0;padding:4px 0;color:var(--cool);font-size:var(--fs-xs);font-weight:600}.stepper-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none}.stepper{display:flex;align-items:center;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--bg);overflow:hidden}.stepper button{display:grid;place-items:center;width:var(--tap);height:var(--tap);border:0;background:var(--surface-2);color:var(--text)}.stepper button:active:not(:disabled){background:var(--surface-3)}.stepper input{width:72px;margin:0;padding:0 4px;border:0;border-radius:0;background:none;text-align:center;font-weight:700;height:var(--tap)}.tags{display:flex;flex-wrap:wrap;gap:var(--s-2);align-items:center}.tag-chip{display:inline-flex;align-items:center;gap:2px;padding:0 2px 0 var(--s-3);min-height:34px;border-radius:var(--r-pill);background:var(--surface-2);border:1px solid var(--line-strong);font-size:var(--fs-sm);font-weight:600}.tag-chip button{display:grid;place-items:center;width:30px;height:30px;border:0;border-radius:50%;background:none;color:var(--text-3)}.tag-add{display:flex;gap:var(--s-2);align-items:center;width:100%}.tag-add input{margin:0}textarea.code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.8125rem;line-height:1.45;min-height:50dvh;white-space:pre}.save-bar{position:fixed;left:var(--gutter);right:var(--gutter);bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + var(--s-3));z-index:40;max-width:calc(var(--content-w) - 2 * var(--gutter));margin:0 auto;display:flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-2) var(--s-2) var(--s-4);border-radius:var(--r-lg);background:color-mix(in srgb,var(--surface-3) 95%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line-strong));box-shadow:0 10px 30px #00000080}.save-bar~*{scroll-margin-bottom:96px}.content:has(.save-bar){padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 96px)}body:has(.sheet) .toaster{top:calc(env(safe-area-inset-top) + var(--s-2));bottom:auto}body:has(.save-bar):not(:has(.sheet)) .toaster{bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 84px)}.rot-up{display:inline-grid;transform:rotate(-90deg)}.history{list-style:none;padding:0;margin:0}.history .row{justify-content:flex-start}.diff{margin-top:var(--s-2);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.75rem;color:var(--text-2);overflow-wrap:anywhere}.diff li{padding:2px 0}.dot.accent{width:7px;height:7px}html[data-motion=reduced] *,html[data-motion=reduced] *:before,html[data-motion=reduced] *:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}html,body,.shell{overflow-x:clip}.skel-card{display:flex;flex-direction:column;gap:var(--s-3)}.skel{display:block;border-radius:6px;background:linear-gradient(100deg,var(--surface-2) 30%,var(--surface-3) 50%,var(--surface-2) 70%) 0 0 / 300% 100%;animation:shimmer 1.4s linear infinite}.skel-label{width:30%;height:10px}.skel-hero{width:45%;height:40px;border-radius:10px}.skel-bar{width:100%;height:6px}.skel-title{width:40%;height:16px}.skel-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);min-height:36px}.skel-line{height:12px}.skel-dot{width:32px;height:32px;border-radius:50%;flex:none}.item.mission .title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.item.mission.playing .title{color:var(--accent)}.phase-btn{position:relative;display:grid;place-items:center;width:var(--tap);height:var(--tap);flex:none;align-self:center;border-radius:50%;border:2px solid var(--line-strong);background:none;color:var(--text-3);-webkit-touch-callout:none;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease),transform var(--dur) var(--ease)}.phase-btn svg{width:18px;height:18px}.phase-btn.todo svg{margin-left:2px;opacity:.55}.phase-btn.playing{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.phase-btn.playing svg{margin-left:2px}.phase-btn.playing:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;border-radius:50%;border:2px solid var(--accent);animation:ring-pulse 1.8s var(--ease) infinite}@keyframes ring-pulse{0%{transform:scale(1);opacity:.7}to{transform:scale(1.35);opacity:0}}.phase-btn.done{border-color:transparent;background:var(--ok);color:var(--accent-ink);animation:tick-pop .32s var(--ease)}.phase-btn.done svg{width:22px;height:22px}.phase-btn:active{transform:scale(.9)}.chips.scroll{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--gutter),#000 calc(100% - var(--gutter)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--gutter),#000 calc(100% - var(--gutter)),transparent 100%)}.kind-pick{display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:0 var(--s-2) 0 var(--s-3);border-radius:var(--r-pill);border:1px solid var(--line-strong);background:var(--surface-2);color:var(--text);font-size:var(--fs-sm);font-weight:700}.kind-pick svg{transform:rotate(90deg);color:var(--text-3)}.kind-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s-2);margin-bottom:var(--s-2)}.kind-grid .chip{justify-content:center;min-height:var(--tap)}.player{display:flex;flex-direction:column;gap:var(--s-4)}.player-id{display:flex;align-items:center;gap:var(--s-3)}.player-id .avatar{width:40px;height:40px;font-size:var(--fs-md)}.player-name{font-size:var(--fs-lg);font-weight:800;line-height:1.15}.player-id .label{margin:0}.money{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap}.money .label{margin-bottom:2px}.money .bank{text-align:right}.money .bank .num-lg{color:var(--text-2)}.loadout{display:flex;flex-direction:column;gap:var(--s-2);padding-top:var(--s-3);border-top:1px solid color-mix(in srgb,var(--line) 80%,transparent)}.weapon{display:flex;align-items:center;gap:var(--s-3)}.weapon .icon-tile{--c: var(--c, var(--accent))}.weapon .grow{display:flex;flex-direction:column;min-width:0}.weapon .label{margin:0}.ammo{font-size:var(--fs-lg);font-variant-numeric:tabular-nums;white-space:nowrap}.ammo .faint{font-size:var(--fs-sm)}.stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:var(--s-2)}.stat-grid>.stat-tile{justify-content:space-between}.stat-grid>.stat-tile:last-child:nth-child(odd){grid-column:1 / -1}@media (min-width: 560px){.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.stat-grid>.stat-tile:last-child:nth-child(odd){grid-column:auto}}.stat-tile{display:flex;flex-direction:column;gap:6px;padding:var(--s-2) var(--s-3);border-radius:var(--r-md);background:color-mix(in srgb,var(--surface-2) 70%,transparent);min-width:0}.stat-tile .label{margin:0}.stat-tile .stars{min-height:16px;align-items:center}.stat-tile.health.low .meter span{background:var(--err)}.meter{display:block;height:5px;border-radius:3px;background:var(--surface-3);overflow:hidden}.meter span{display:block;height:100%;border-radius:3px;background:var(--ok);transition:width .4s var(--ease)}.stat-tile.armour .meter span{background:var(--char-2)}.stat-tile.special .meter span{background:var(--warn)}.stars{display:flex;gap:2px;color:var(--surface-3)}.stars .on{color:var(--warn)}.stars svg{fill:currentColor}.where{display:flex;align-items:center;gap:6px;margin-top:calc(-1 * var(--s-2))}.player .others{display:flex;flex-direction:column;gap:0;margin:0;padding-top:var(--s-2);border-top:1px solid color-mix(in srgb,var(--line) 80%,transparent)}.player .other{background:none;padding:6px 0;border-radius:0;font-size:var(--fs-sm)}.player .other strong{font-variant-numeric:tabular-nums}
