// Self-hosted webfonts (latin subset). Replaces the Google Fonts <link> in // index.html so the PWA works offline + is same-origin (which lets the share // card rasterizer embed them — see lib/rasterize.js). Files in public/fonts/,// generated from the Google Fonts css2 endpoint. @font-face{font-family:"Instrument Serif";font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/instrument-serif-400-italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Instrument Serif";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/instrument-serif-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter-500.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-600.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-500.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/jetbrains-mono-600.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-0: oklch(.14 .008 55);--bg-1: oklch(.17 .01 55);--bg-2: oklch(.205 .012 55);--bg-3: oklch(.245 .014 55);--bg-4: oklch(.29 .016 55);--fg-0: oklch(.96 .012 85);--fg-1: oklch(.82 .014 80);--fg-2: oklch(.62 .016 75);--fg-3: oklch(.44 .014 70);--line: oklch(.32 .014 65);--line-strong: oklch(.4 .018 65);--c-green: oklch(.72 .19 145);--c-yellow: oklch(.86 .17 95);--c-orange: oklch(.74 .18 55);--c-red: oklch(.66 .24 25);--c-purple: oklch(.6 .22 305);--c-blackout: oklch(.48 .22 330);--c-death: oklch(.3 .08 300);--accent: oklch(.82 .14 75);--accent-dim: oklch(.55 .09 75);--train-1: oklch(.85 .1 175);--train-2: oklch(.74 .14 200);--train-3: oklch(.62 .17 225);--train-4: oklch(.5 .19 250);--train-5: oklch(.4 .19 275);--train-6: oklch(.32 .17 285);--plume-1: oklch(.84 .1 145);--plume-2: oklch(.74 .14 145);--plume-3: oklch(.63 .17 145);--plume-4: oklch(.52 .19 145);--plume-5: oklch(.42 .18 145);--plume-6: oklch(.32 .15 145);--plume-leaf: oklch(.68 .18 140);--plume-leaf-deep: oklch(.42 .16 145);--plume-ember: oklch(.78 .16 50);--plume-smoke: oklch(.78 .04 145);--train-pip: var(--train-1);--nuke-pip: oklch(.72 .16 55);--r-sm: 10px;--r-md: 16px;--r-lg: 22px;--r-xl: 28px;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", monospace;--font-serif: "Instrument Serif", "Iowan Old Style", Georgia, serif;--font-sans: "Inter", -apple-system, "SF Pro Text", system-ui, sans-serif;--tab-h: 68px;--safe-b: env(safe-area-inset-bottom, 0px)}*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;padding:0;height:100%;overflow:hidden}body{background:#030202;color:var(--fg-0);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}a{color:inherit;text-decoration:none}input,textarea{font:inherit}#app{display:flex;flex-direction:column;height:100%;position:relative;overflow:hidden}.screen{position:absolute;inset:0;bottom:calc(var(--tab-h) + var(--safe-b));overflow-y:auto;overflow-x:hidden;scrollbar-width:none;opacity:0;pointer-events:none;transition:opacity .18s cubic-bezier(.4,0,.2,1)}.screen::-webkit-scrollbar{display:none}.screen.active{opacity:1;pointer-events:auto}.screen-inner{padding:0 0 112px}.screen-header{padding:30px 20px 16px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.screen-title{font-family:var(--font-serif);font-size:34px;line-height:1;color:var(--fg-0)}#tabbar{position:absolute;left:0;right:0;bottom:0;height:calc(var(--tab-h) + var(--safe-b));padding-bottom:var(--safe-b);display:grid;grid-template-columns:repeat(4,1fr);align-items:center;background:#0a0705e6;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid oklch(1 0 0 / .06);z-index:40}.tab-btn{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--fg-3);padding:8px 4px;min-width:0;transition:color .12s ease}.tab-btn.active{color:var(--fg-0)}.tab-label{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}#fab{position:absolute;right:22px;bottom:calc(var(--tab-h) + var(--safe-b) + 41px);width:56px;height:56px;border-radius:50%;background:var(--accent);color:#0c0806;display:flex;align-items:center;justify-content:center;z-index:41;animation:fab-glow 3.2s ease-in-out infinite;transition:transform .12s ease}#fab:active{transform:scale(.92)}@keyframes fab-glow{0%,to{box-shadow:0 10px 40px #fe860f80,0 4px 14px #fe860f73}50%{box-shadow:0 12px 50px #fe860fa6,0 4px 18px #fe860f8c}}@media (prefers-reduced-motion: reduce){#fab{animation:none}}#fab-train{position:absolute;right:74px;bottom:calc(var(--tab-h) + var(--safe-b) + 21px);width:44px;height:44px;padding:0;background:transparent;border:none;display:flex;align-items:center;justify-content:center;z-index:41;cursor:pointer}.fab-train-circle{width:36px;height:36px;border-radius:50%;background:#1e7ca1;color:#e6e6ec;display:flex;align-items:center;justify-content:center;box-shadow:0 7px 20px #1e7ca173,0 3px 8px #1e7ca166;transition:transform .12s ease,box-shadow .12s ease}#fab-train:hover .fab-train-circle{transform:translateY(-1px);box-shadow:0 10px 28px #1e7ca180,0 4px 12px #1e7ca173}#fab-train:active .fab-train-circle{transform:scale(.92)}#fab-train:focus-visible{outline:2px solid oklch(.55 .1 230);outline-offset:2px;border-radius:50%}#fab-plume{position:absolute;right:36px;bottom:calc(var(--tab-h) + var(--safe-b) - 4px);width:44px;height:44px;padding:0;background:transparent;border:none;display:flex;align-items:center;justify-content:center;z-index:41;cursor:pointer}.fab-plume-circle{width:38px;height:38px;border-radius:50%;background:radial-gradient(circle at 30% 30%,var(--plume-leaf) 0%,var(--plume-leaf-deep) 100%);color:#f4f7ee;display:flex;align-items:center;justify-content:center;box-shadow:0 7px 20px oklch(.55 .18 145 / .42),0 3px 8px oklch(.55 .18 145 / .36);transition:transform .12s ease,box-shadow .12s ease}#fab-plume:hover .fab-plume-circle{transform:translateY(-1px);box-shadow:0 10px 28px oklch(.55 .18 145 / .48),0 4px 12px oklch(.55 .18 145 / .42)}#fab-plume:active .fab-plume-circle{transform:scale(.92)}#fab-plume:focus-visible{outline:2px solid var(--plume-leaf);outline-offset:2px;border-radius:50%}.log-stage{--sheet-accent: oklch(var(--sheet-accent-l) var(--sheet-accent-c) var(--sheet-accent-h));--sheet-accent-fg-medium: oklch(var(--sheet-accent-l-medium) var(--sheet-accent-c) var(--sheet-accent-h));--sheet-accent-fg-bright: oklch(var(--sheet-accent-l-bright) var(--sheet-accent-c) var(--sheet-accent-h));--sheet-accent-soft-bg: oklch(var(--sheet-accent-l) var(--sheet-accent-c) var(--sheet-accent-h) / .22);--sheet-accent-soft-border: oklch(var(--sheet-accent-l) var(--sheet-accent-c) var(--sheet-accent-h) / .45);--sheet-accent-shutter-ring: oklch(var(--sheet-accent-l) var(--sheet-accent-c) var(--sheet-accent-h) / .4);display:flex;flex-direction:column;gap:18px;padding:4px 4px 8px}.log-stage--train{--sheet-accent-l: .55;--sheet-accent-c: .1;--sheet-accent-h: 230;--sheet-accent-l-medium: .65;--sheet-accent-l-bright: .7}.log-stage--plume{--sheet-accent-l: .55;--sheet-accent-c: .18;--sheet-accent-h: 145;--sheet-accent-l-medium: .65;--sheet-accent-l-bright: .72}.log-eyebrow{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--sheet-accent-fg-medium)}.log-hero{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0 8px}.log-hero-tick{font-family:var(--font-mono);color:var(--sheet-accent);font-size:14px;letter-spacing:.18em;opacity:.6}.log-hero-amount{font-family:var(--font-serif);font-size:56px;line-height:1.05;color:var(--sheet-accent-fg-bright);font-feature-settings:"tnum";letter-spacing:-.01em;transition:color .16s ease}.log-hero-amount[data-zero="1"]{color:var(--fg-3)}.log-hero-unit{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-2);margin-top:4px}.log-hero-sub{font-family:var(--font-mono);font-size:12px;color:var(--fg-2);letter-spacing:.02em;margin-top:8px;min-height:14px}.log-activity-row{display:flex;gap:6px;flex-wrap:wrap}.log-activity-row .chip{cursor:pointer;user-select:none}.log-activity-row .chip[aria-pressed=true]{background:var(--sheet-accent-soft-bg);border-color:var(--sheet-accent-soft-border);color:#e6e6ec}.log-more-link{font-family:var(--font-mono);font-size:11px;color:var(--fg-3);letter-spacing:.08em;text-transform:uppercase;background:transparent;border:0;padding:5px 8px;cursor:pointer}.log-more-link:hover{color:var(--fg-1)}.log-value-row{display:flex;gap:10px;align-items:center}.log-value-input{flex:1;min-width:0;padding:12px 14px;background:var(--bg-3);border:1px solid var(--line);border-radius:12px;color:var(--fg-0);font-family:var(--font-mono);font-size:16px}.log-value-input:focus{outline:none;border-color:var(--sheet-accent)}.log-unit-suffix{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-2)}.log-quick-chips{display:flex;gap:6px;flex-wrap:wrap}.log-disclosure{background:transparent;border:0;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-3);padding:2px 0;cursor:pointer;align-self:flex-start}.log-disclosure:hover{color:var(--fg-1)}.log-disclosure[disabled]{opacity:.4;cursor:not-allowed}.log-when-row{display:flex;flex-direction:column;gap:8px}.log-when-line{display:flex;align-items:center;justify-content:space-between;gap:12px;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--fg-2)}.log-when{width:100%;padding:10px 12px;background:var(--bg-3);border:1px solid var(--line);border-radius:12px;color:var(--fg-0);font-family:var(--font-mono);font-size:13px}.log-bottom{display:flex;align-items:center;justify-content:center;gap:18px;padding-top:8px}.log-shutter{width:74px;height:74px;border-radius:50%;background:var(--sheet-accent);color:#e6e6ec;border:4px solid var(--sheet-accent-shutter-ring);box-shadow:0 0 0 2px #0006;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .12s ease,opacity .12s ease}.log-shutter:active{transform:scale(.94)}.log-shutter[disabled]{opacity:.5;cursor:not-allowed}.log-shutter svg{display:block}.log-quick{flex:0 0 auto;padding:12px 16px;border-radius:14px;background:#ffffff0a;color:var(--fg-1);font-family:var(--font-mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:transform .12s ease,background .12s ease}.log-quick:hover{background:#ffffff12}.log-quick:active{transform:scale(.96)}.log-quick[disabled]{opacity:.5;cursor:not-allowed}.log-error{color:var(--c-red);font-size:12px;min-height:16px;text-align:center}.plume-scan-tile{position:relative;aspect-ratio:16 / 9;border:1px solid var(--sheet-accent-soft-border);border-radius:14px;background:#151d15;display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--fg-0)}.plume-scan-tile[aria-disabled=true]{opacity:.7;cursor:not-allowed}.plume-scan-tile--button{width:100%;cursor:pointer;padding:0;font:inherit;transition:border-color .15s ease,background .15s ease}.plume-scan-tile--button:hover{border-color:var(--sheet-accent);background:#162316}.plume-scan-tile--button:active{transform:scale(.99)}.plume-scan-tile--analyzing,.plume-scan-tile--reviewing{background:var(--bg-1)}.plume-scan-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.55)}.plume-scan-text--analyzing,.plume-scan-text--reviewing{position:relative;z-index:1;padding:16px}.plume-scan-text--analyzing .plume-scan-title{color:var(--sheet-accent);animation:plume-scan-pulse 1.4s ease-in-out infinite}@keyframes plume-scan-pulse{0%,to{opacity:.6}50%{opacity:1}}@media (prefers-reduced-motion: reduce){.plume-scan-text--analyzing .plume-scan-title{animation:none;opacity:1}}.plume-scan-detected{font-size:20px;color:var(--fg-0);margin-bottom:6px}.plume-scan-clear{position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;background:#0009;border:1px solid oklch(1 0 0 / .2);color:var(--fg-0);font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:2}.plume-scan-clear:hover{background:#000000c7}.plume-scan-actions{display:flex;justify-content:flex-end;margin-top:-10px}.plume-scan-corners{position:absolute;inset:8px;pointer-events:none}.plume-scan-corner{position:absolute;width:16px;height:16px;border:2px solid var(--sheet-accent)}.plume-scan-corner--tl{top:0;left:0;border-right:0;border-bottom:0}.plume-scan-corner--tr{top:0;right:0;border-left:0;border-bottom:0}.plume-scan-corner--bl{bottom:0;left:0;border-right:0;border-top:0}.plume-scan-corner--br{bottom:0;right:0;border-left:0;border-top:0}.plume-scan-text{text-align:center;padding:0 16px}.plume-scan-title{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--sheet-accent-fg-medium)}.plume-scan-sub{margin-top:6px;font-family:var(--font-mono);font-size:10.5px;color:var(--fg-3);letter-spacing:.02em}.plume-vessel-chip{display:inline-flex;align-items:center;gap:6px;cursor:pointer;user-select:none}.plume-vessel-glyph{font-size:14px;line-height:1}.plume-preview-line{margin-top:10px;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.04em;color:var(--sheet-accent-fg-medium)}.card{background:var(--bg-2);border:1px solid oklch(1 0 0 / .04);border-radius:var(--r-lg);margin:0 16px 12px}.card-p{padding:18px}.card-header{padding:18px 18px 0}.hair{height:1px;background:#ffffff0f;margin:0 18px}.label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-2);font-weight:500}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.serif{font-family:var(--font-serif);font-weight:400}.press{transition:transform .12s ease}.press:active{transform:scale(.98)}.sq{display:inline-flex;align-items:center;justify-content:center;border-radius:6px;box-shadow:inset 0 0 0 1px #ffffff14;font-weight:700}.sq--green{background:var(--c-green)}.sq--yellow{background:var(--c-yellow)}.sq--orange{background:var(--c-orange)}.sq--red{background:var(--c-red)}.sq--purple{background:var(--c-purple)}.sq--blackout{background:var(--c-blackout)}.sq--death{background:var(--c-death)}.sq.sq--blackout,.sq.sq--death,.heat-cell.sq--blackout,.heat-cell.sq--death{background:#000}.sq--empty{background:#1d1a17;box-shadow:inset 0 0 0 1px #ffffff0a}.ringed-sq{position:relative;display:inline-block;flex-shrink:0}.ringed-sq__body{position:absolute;display:flex;align-items:center;justify-content:center;box-shadow:none}.ringed-sq__rings{position:absolute;inset:0;pointer-events:none}.sq--train-1{background:var(--train-1)}.sq--train-2{background:var(--train-2)}.sq--train-3{background:var(--train-3)}.sq--train-4{background:var(--train-4)}.sq--train-5{background:var(--train-5)}.sq--train-6{background:var(--train-6)}.sq--plume-1{background:var(--plume-1)}.sq--plume-2{background:var(--plume-2)}.sq--plume-3{background:var(--plume-3)}.sq--plume-4{background:var(--plume-4)}.sq--plume-5{background:var(--plume-5)}.sq--plume-6{background:var(--plume-6)}.cal-header-row{position:sticky;top:0;z-index:10;background:var(--bg-0);padding:30px 16px 16px;display:flex;align-items:center;flex-wrap:wrap;gap:12px 10px}.cal-header-row .screen-title{margin-right:auto}.cal-header-actions{display:flex;align-items:center;gap:10px}.cal-view-toggle{display:inline-flex;gap:0;padding:2px;background:#00000047;border-radius:9px;height:28px;box-shadow:inset 0 1px 2px #00000073}.cal-view-tab{padding:0 10px;height:100%;display:flex;align-items:center;border-radius:7px;font-size:12px;font-family:var(--font-mono);letter-spacing:.04em;color:var(--fg-2);cursor:pointer;user-select:none;background:#ffffff08;box-shadow:inset 0 0 0 1px #ffffff14;transition:color .12s ease,background .12s ease,box-shadow .12s ease}.cal-view-tab+.cal-view-tab{margin-left:4px}.cal-view-tab:hover{color:var(--fg-1);background:#ffffff0f}.cal-view-tab[aria-selected=true],.cal-view-tab[aria-pressed=true]{background:var(--bg-3);color:var(--fg-0);box-shadow:0 1px 2px #0006,inset 0 0 0 1px #ffffff1f}.avatar{border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:600;color:var(--fg-1);border:1px solid oklch(1 0 0 / .06);overflow:hidden;flex-shrink:0}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.live-dot{width:8px;height:8px;border-radius:50%;background:var(--live-dot-color, var(--c-green));display:inline-block;position:relative;flex-shrink:0}.live-dot:before{content:"";position:absolute;inset:0;border-radius:50%;background:var(--live-dot-color, var(--c-green));animation:pulse-ring 1.6s ease-out infinite}@keyframes pulse-ring{0%{transform:scale(.8);opacity:.8}to{transform:scale(2.2);opacity:0}}@media (prefers-reduced-motion: reduce){.live-dot:before{animation:none}}.snap-row{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0 18px 2px;margin:0 -18px}.snap-row::-webkit-scrollbar{display:none}.snap-row>*{scroll-snap-align:start;flex-shrink:0}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;background:#ffffff0f;border:1px solid oklch(1 0 0 / .05);border-radius:999px;font-size:11.5px;color:var(--fg-1);font-family:var(--font-mono);letter-spacing:.02em}.chip--accent{background:#f9b64f1f;border-color:#f9b64f38;color:var(--accent)}.chip--green{background:#43c2511f;border-color:#43c25138;color:var(--c-green)}.prog{height:4px;background:#ffffff0f;border-radius:2px;overflow:hidden}.prog>span{display:block;height:100%;border-radius:2px;background:var(--accent);transition:width .36s cubic-bezier(.2,.8,.2,1)}.scale-strip{display:flex;gap:3px;height:6px}.scale-strip span{flex:1;border-radius:2px;opacity:.22;transition:opacity .24s ease}.scale-strip span.active{opacity:1}@keyframes shimmer{0%{opacity:.3}50%{opacity:.6}to{opacity:.3}}.skel{background:var(--bg-3);border-radius:6px;animation:shimmer 1.2s linear infinite}.sheet-backdrop{position:fixed;inset:0;background:#00000080;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:50;opacity:0;pointer-events:none;transition:opacity .22s ease}.sheet-backdrop.open{opacity:1;pointer-events:auto}.sheet{position:fixed;left:0;right:0;bottom:0;background:var(--bg-1);border-top-left-radius:28px;border-top-right-radius:28px;border-top:1px solid oklch(1 0 0 / .06);z-index:51;box-shadow:0 -20px 50px #00000080;transform:translateY(100%);transition:transform .32s cubic-bezier(.32,.72,0,1);max-height:92vh;overflow-y:auto}.sheet.open{transform:translateY(0)}.sheet-handle{width:38px;height:4px;border-radius:2px;background:#ffffff2e;margin:12px auto 0}.sheet-close{position:absolute;top:16px;right:16px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#ffffff14;color:var(--fg-2)}.sheet-content{padding:16px 20px calc(32px + var(--safe-b))}.camera-header{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:12px}.camera-vf{width:100%;aspect-ratio:3/4;border-radius:18px;overflow:hidden;background:#070504;position:relative;border:1px solid oklch(1 0 0 / .05);display:flex;align-items:center;justify-content:center}.camera-vf--fallback{background:linear-gradient(180deg,#ffffff05,#0000001a),#070504}.camera-preview{width:100%;height:100%;object-fit:cover;display:block;background:#070504}.camera-vf-placeholder{font-family:var(--font-mono);font-size:10.5px;color:#ffffff40;letter-spacing:.12em;text-transform:uppercase}.camera-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none}.camera-flash.active{animation:camera-flash .28s ease-out}@keyframes camera-flash{0%{opacity:0}35%{opacity:.8}to{opacity:0}}.camera-vf-bottom{position:absolute;left:20px;right:20px;bottom:20px;display:flex;flex-direction:column;align-items:center;gap:10px}.camera-vf-hint{font-family:var(--font-mono);font-size:10.5px;color:#ffffffb3;letter-spacing:.08em;text-transform:uppercase}.camera-shutter{width:74px;height:74px;border-radius:50%;background:#f9f5ec;border:4px solid oklch(1 0 0 / .4);box-shadow:0 0 0 2px #0006}.capture-actions{display:flex;gap:10px;margin-top:14px}.btn-lib{flex:1;padding:12px;border-radius:14px;background:#ffffff0a;color:var(--fg-1);font-family:var(--font-mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase}.camera-notice,.camera-error{font-size:12px;margin-top:12px;text-align:center}.camera-notice{color:var(--fg-2)}.camera-error{color:var(--c-red)}.camera-title{font-family:var(--font-serif);font-size:28px;color:var(--fg-0)}.camera-hint{font-size:13px;color:var(--fg-2);margin-top:8px}.btn-capture{flex:1;background:var(--accent);color:#0c0806;border-radius:var(--r-md);padding:14px;font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;transition:transform .2s ease,opacity .2s ease}.btn-capture:active{transform:scale(.92)}.btn-lib-outline{padding:14px 16px;border:1px solid oklch(1 0 0 / .1);border-radius:var(--r-md);color:var(--fg-1);font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase}.analyzing-thumb{width:100%;height:200px;object-fit:cover;border-radius:var(--r-md)}.analyzing-prog{margin-top:16px}.confirm-detected{font-family:var(--font-serif);font-size:22px;margin:8px 0 16px}.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.tile{background:var(--bg-3);border:1px solid oklch(1 0 0 / .06);border-radius:var(--r-md);padding:12px}.tile-label{font-family:var(--font-mono);font-size:10px;color:var(--fg-3);letter-spacing:.1em;text-transform:uppercase}.tile-input{font-family:var(--font-mono);font-size:20px;font-weight:600;color:var(--fg-0);background:none;border:none;width:100%;margin-top:4px;padding:0}.tile-input:focus{outline:none}.nukes-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;font-family:var(--font-mono);font-size:14px;font-weight:600;margin-bottom:12px}.btn-log{width:100%;background:var(--accent);color:#0c0806;border-radius:var(--r-lg);padding:16px;font-family:var(--font-mono);font-size:13px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;margin-top:12px}.detail-meta{font-family:var(--font-mono);font-size:12px;color:var(--fg-2)}#toast{position:fixed;bottom:calc(var(--tab-h) + var(--safe-b) + 16px);left:50%;transform:translate(-50%) translateY(20px);background:var(--bg-3);border:1px solid oklch(1 0 0 / .1);border-radius:999px;padding:8px 16px;font-family:var(--font-mono);font-size:12px;color:var(--fg-0);opacity:0;transition:opacity .2s ease,transform .2s ease;z-index:60;pointer-events:none;white-space:nowrap}#toast.show{opacity:1;transform:translate(-50%) translateY(0)}#auth-wall{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#030202;padding:24px;z-index:100}.auth-title{font-family:var(--font-serif);font-size:42px;margin-bottom:8px}.auth-sub{font-size:14px;color:var(--fg-2);margin-bottom:32px}.auth-btn{width:100%;max-width:320px;padding:14px 20px;border-radius:var(--r-lg);font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;margin-bottom:10px;display:flex;align-items:center;justify-content:center;gap:8px}.auth-btn-discord{background:#5865f2;color:#fff}.auth-btn-google{background:#ffffff0f;border:1px solid oklch(1 0 0 / .1);color:var(--fg-1)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}[disabled],.disabled{opacity:.4;pointer-events:none}.update-prompt{position:fixed;left:12px;right:12px;bottom:calc(var(--tab-h) + var(--safe-b) + 12px);background:var(--bg-2);color:var(--fg-0);border:1px solid var(--line-strong);border-radius:var(--r-md);padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 12px 32px #00000073;z-index:60}.plume-smoke{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen;z-index:0}.screen[data-view=bar] .screen-inner{position:relative;z-index:1}.today-hero{padding:20px 18px 14px}.today-hero-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.today-meta{min-width:0;flex:1}.today-main-row{display:flex;align-items:center;gap:12px;margin-top:6px}.today-big{font-family:var(--font-mono);font-size:72px;line-height:1;letter-spacing:-.04em;font-weight:600;transition:opacity .14s ease,transform .14s ease}.today-square{flex-shrink:0}.today-status-line{display:flex;align-items:baseline;gap:4px;margin-top:8px;font-size:13px;color:var(--fg-2);flex-wrap:wrap}.today-status-line #bar-color-label{font-size:22px;line-height:1;font-family:var(--font-serif);color:var(--fg-0)}.scale-wrap{margin-top:12px;display:flex;align-items:center;gap:10px}.scale-ticks{display:flex;flex:1;gap:3px;-webkit-mask-image:linear-gradient(to right,black 0,black 94%,transparent 100%);mask-image:linear-gradient(to right,black 0,black 94%,transparent 100%)}.scale-tick-seg{flex:1;height:6px;border-radius:2px;opacity:.22;transition:opacity .24s cubic-bezier(.2,.8,.2,1)}.scale-tick-seg.active{opacity:1}.scale-labels{display:flex;gap:3px;margin-top:5px;padding-bottom:14px;font-family:var(--font-mono);font-size:9.5px;color:var(--fg-3);letter-spacing:.08em}.scale-labels>span{flex:1;text-align:center}.today-affordances{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px;font-family:var(--font-mono);font-size:11px;color:var(--fg-2);letter-spacing:.04em}.today-affordance{display:inline-flex;align-items:center;gap:5px}.today-affordance:before{content:"";width:8px;height:8px;border-radius:50%;display:inline-block}.today-affordance--nuke:before{background:var(--nuke-pip)}.today-affordance--train:before{background:var(--train-pip)}.today-affordance--plume:before{background:var(--plume-leaf)}.today-streak{min-width:76px;text-align:right;flex-shrink:0;padding-top:2px}.today-streak-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-2)}.today-streak-value{margin-top:4px;font-family:var(--font-mono);font-size:34px;line-height:.95;color:var(--fg-0)}.today-streak-value small{font-size:18px;color:var(--fg-1)}.today-streak-line{margin-top:4px;font-family:var(--font-mono);font-size:11px;color:var(--fg-3);letter-spacing:.02em;text-transform:lowercase}.quick-row{display:flex;gap:8px;align-items:stretch}.quick-describe-field{flex:1;min-width:0;display:flex;align-items:center;gap:8px;height:48px;padding:0 12px;background:#ffffff0a;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid oklch(1 0 0 / .08);border-radius:14px;transition:border-color .15s ease}.quick-describe-field:focus-within{border-color:#fe860f8c}.quick-describe-prompt{font-family:var(--font-mono);font-size:13px;color:var(--fg-3);user-select:none}.quick-describe-field:focus-within .quick-describe-prompt,.quick-describe-field.has-text .quick-describe-prompt{color:var(--accent)}.quick-describe-input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--fg-0);font-family:var(--font-mono);font-size:13px;letter-spacing:.01em;padding:0}.quick-describe-input::placeholder{color:var(--fg-3);opacity:1}.quick-describe-submit{width:28px;height:28px;border-radius:8px;background:var(--accent);color:#120805;display:none;place-items:center;flex-shrink:0}.quick-describe-field.has-text .quick-describe-submit{display:grid}.quick-chip-primary{flex-shrink:0;height:48px;padding:0 14px;border-radius:14px;background:#fe860f29;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid oklch(.74 .18 55 / .5);color:var(--accent);display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:12.5px;font-weight:600;letter-spacing:.08em}.quick-chip-secondary{flex-shrink:0;width:200px;height:48px;padding:0 12px;border-radius:14px;background:#ffffff0a;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid oklch(1 0 0 / .08);color:var(--fg-0);display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:2px;font-family:var(--font-mono);font-weight:600;line-height:1.1}.quick-chip-secondary .qcs-name{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.quick-chip-secondary .qcs-meta{font-size:9px;color:var(--fg-2);letter-spacing:.04em;opacity:.9;text-align:center}.quick-row-hint{margin-top:8px;font-family:var(--font-mono);font-size:9.5px;color:var(--fg-3);letter-spacing:.06em}.sec-head{display:flex;align-items:flex-end;justify-content:space-between;padding:0 18px;margin-bottom:10px}.sec-head--stacked{align-items:flex-start}.sec-kicker{margin-bottom:4px}.sec-title{font-family:var(--font-serif);font-size:22px;line-height:1.1;color:var(--fg-0)}.rn-empty{padding:16px 18px;font-size:13px;color:var(--fg-3);font-family:var(--font-mono)}.rn-card{width:88px;display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 8px 12px;background:var(--bg-2);border:1px solid oklch(1 0 0 / .05);border-radius:var(--r-md);cursor:pointer}.rn-timeago{font-family:var(--font-mono);font-size:10px;color:var(--fg-3);letter-spacing:.06em}.rn-drink{font-size:11px;color:var(--fg-2);text-align:center;line-height:1.2;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}.rn-rooms{padding:0;overflow:hidden}.rn-room{padding:10px 14px 12px;border-bottom:1px solid oklch(1 0 0 / .05)}.rn-room:last-child{border-bottom:none}.rn-room--nuke{background:linear-gradient(to right,oklch(.74 .18 55 / .06),transparent 70%)}.rn-room--train{background:linear-gradient(to right,oklch(.62 .17 225 / .06),transparent 70%)}.rn-room--plume{background:linear-gradient(to right,oklch(.68 .18 140 / .06),transparent 70%)}.rn-room-title{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-2);margin-bottom:8px}.rn-room-empty{color:var(--fg-3);font-family:var(--font-mono);font-size:11px;padding:2px 0 4px}.rn-room-friends{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;padding:5px 0}.rn-room-friends::-webkit-scrollbar{display:none}.rn-mini{flex-shrink:0;width:48px;text-align:center}.rn-mini-avatar{position:relative;width:32px;height:32px;margin:0 auto}.rn-mini-ring{position:absolute;inset:-2px;border-radius:50%;pointer-events:none}.rn-mini-name{margin-top:4px;font-size:10px;color:var(--fg-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-item{margin:0 16px 10px;background:var(--bg-2);border:1px solid oklch(1 0 0 / .04);border-radius:var(--r-lg);overflow:hidden}.feed-item-inner{padding:14px 14px 10px}.fi-row{display:flex;align-items:center;gap:8px}.fi-name{font-weight:600;font-size:14px}.fi-time{font-family:var(--font-mono);font-size:11px;color:var(--fg-3);padding-left:2px}.fi-drink{font-family:var(--font-serif);font-size:17px;margin:6px 0 2px}.fi-meta-line{font-family:var(--font-mono);font-size:11px;color:var(--fg-2);letter-spacing:.04em}.fi-photo{width:100%;max-height:360px;object-fit:contain;display:block;background:var(--bg-3)}.train-route{width:100%;display:block;background:#14141a;aspect-ratio:16 / 9}img.fi-photo.train-route{object-fit:cover;max-height:none}.train-route--svg{height:auto}.fi-photo-placeholder{height:180px;background:repeating-linear-gradient(135deg,#2a221d 0 12px,#221b17 12px 24px)}.fi-actions{display:flex;align-items:flex-start;gap:10px;padding:8px 14px 12px}.fi-cheers{display:flex;flex-direction:column;align-items:flex-start;gap:5px}.cheer-stack{display:inline-flex;align-items:center;background:transparent;border:none;cursor:pointer;padding:3px 2px;margin-top:2px}.cheer-stack .cheer-stack-av{border:1.5px solid var(--bg-2);box-sizing:content-box}.cheer-stack .cheer-stack-av+.cheer-stack-av{margin-left:-7px}.cheer-stack-count{margin-left:8px;font-family:var(--font-mono);font-size:12px;color:var(--accent)}.cheers-pill{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;background:#ffffff0d;border:1px solid oklch(1 0 0 / .08);border-radius:999px;font-size:12px;font-family:var(--font-mono);cursor:pointer;transition:background .16s cubic-bezier(.2,.8,.2,1),border-color .16s ease;color:var(--fg-1)}.cheers-pill.cheered{background:#f9b64f24;border-color:#f9b64f59;color:var(--accent)}.cheers-count{display:inline-block;transition:transform .2s ease}.cheers-count.pulse{animation:count-pulse .2s ease}@keyframes count-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.feed-empty{padding:32px 18px;text-align:center;color:var(--fg-3);font-size:13px;font-family:var(--font-mono)}.cheersed-by-list{display:flex;flex-direction:column;gap:4px;padding:4px 2px 8px}.cheersed-by-item{display:flex;align-items:center;gap:12px;padding:8px 4px}.cheersed-by-name{font-size:14px;color:var(--fg-1)}.cheersed-by-time{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--fg-3)}.cheersed-by-empty{padding:24px 8px;text-align:center;color:var(--fg-3);font-size:13px;font-family:var(--font-mono)}.cal-people{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;padding:4px 18px 10px}.cal-people::-webkit-scrollbar{display:none}.cal-person-btn{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:62px;scroll-snap-align:start;cursor:pointer;opacity:.5;transition:opacity .16s ease}.cal-person-btn.selected{opacity:1}.cal-person-name{font-size:11px;color:var(--fg-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60px}.cal-person-btn.selected .cal-person-name{color:var(--fg-0);font-weight:600}.cal-records{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 16px 12px}.cal-record{background:var(--bg-2);border:1px solid oklch(1 0 0 / .04);border-radius:var(--r-md);padding:12px 10px;min-height:96px;display:flex;flex-direction:column}.cal-record-label{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3);display:flex;align-items:center;gap:5px}.cal-record-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.cal-record-value{font-family:var(--font-mono);font-size:18px;font-weight:600;color:var(--fg-0);margin-top:4px}.cal-record-sub{font-family:var(--font-mono);font-size:10px;color:var(--fg-3);margin-top:2px}.cal-nav{display:flex;align-items:center;justify-content:space-between;padding:0 16px 12px;gap:8px}.cal-nav-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid oklch(1 0 0 / .08);border-radius:var(--r-sm);color:var(--fg-1)}.cal-month-label{font-family:var(--font-mono);font-size:13px;letter-spacing:.06em;color:var(--fg-0)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:0 16px}.cal-dow{text-align:center;font-family:var(--font-mono);font-size:10px;color:var(--fg-3);letter-spacing:.08em;padding-bottom:6px}.cal-cell{display:flex;flex-direction:column;align-items:center;padding:4px 2px 6px;border-radius:10px;min-height:52px;position:relative;cursor:default}.cal-cell.today{outline:2px solid var(--accent);outline-offset:1px}.cal-dnum{font-family:var(--font-mono);font-size:10px;color:var(--fg-3);align-self:flex-end;margin-right:3px;line-height:1}.cal-sq{margin-top:4px}.cal-cell--plumed{--plume-strength: .4}.cal-cell--plumed:before,.cal-cell--plumed:after{content:"";position:absolute;pointer-events:none;inset:-6px;border-radius:14px;mix-blend-mode:screen;opacity:var(--plume-strength);z-index:0}.cal-cell--plumed:before{background:radial-gradient(circle at 30% 70%,oklch(.86 .04 145 / .42) 0%,oklch(.86 .04 145 / .1) 38%,transparent 70%);animation:plume-ring-a 7.2s ease-in-out infinite}.cal-cell--plumed:after{background:radial-gradient(circle at 70% 30%,oklch(.92 .03 140 / .38) 0%,oklch(.92 .03 140 / .08) 42%,transparent 74%);animation:plume-ring-b 9.1s ease-in-out infinite}.cal-cell--plumed>*{position:relative;z-index:1}@keyframes plume-ring-a{0%,to{transform:translate(0) scale(1)}50%{transform:translate(2px,-2px) scale(1.04)}}@keyframes plume-ring-b{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-2px,2px) scale(1.05)}}@media (prefers-reduced-motion: reduce){.cal-cell--plumed:before,.cal-cell--plumed:after{animation:none}}.cal-cell--shared{box-shadow:0 0 0 2px oklch(.55 .18 240 / .9),0 0 8px oklch(.55 .18 240 / .5)}.cal-cell--all-cheers{box-shadow:0 0 0 2px var(--accent),0 0 10px #f9b64f80}.compare-cell-top{display:flex;justify-content:space-between;align-items:flex-start;width:100%;padding:0 3px}.compare-cheers{font-size:11px;line-height:1}.compare-lanes{width:100%;display:flex;flex-direction:column;gap:2px;margin-top:3px;padding:0 3px}.compare-lane{display:flex;align-items:center;gap:2px}.compare-lane-num{font-family:var(--font-mono);font-size:7px;color:var(--fg-3);width:5px;text-align:right;flex-shrink:0}.compare-lane-bar{flex:1;height:5px;border-radius:1.5px}.compare-num-badge{position:absolute;top:-3px;right:-3px;background:var(--accent);color:#080503;font-family:var(--font-mono);font-size:9px;font-weight:700;width:15px;height:15px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--bg-0);line-height:1}.cal-footer{display:flex;justify-content:space-around;padding:12px 16px 0;font-family:var(--font-mono);font-size:11px;color:var(--fg-2)}.cal-footer span strong{display:block;font-size:14px;color:var(--fg-0)}.heat-strip{display:grid;grid-template-rows:repeat(7,1fr);grid-template-columns:repeat(12,1fr);grid-auto-flow:column;gap:3px;container-type:inline-size}.heat-cell{aspect-ratio:1;border-radius:3px;display:flex;align-items:center;justify-content:center;min-width:0;overflow:hidden;line-height:1;font-size:clamp(12px,6.5cqw,128px)}.rhythm-kicker{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3)}.pattern-card{padding:14px 18px}.pattern-kicker{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.pattern-text{font-size:15px;font-weight:500;margin-top:4px}.weekday-bars{display:flex;gap:6px;align-items:flex-end;height:60px;margin-top:12px}.weekday-bar-wrap{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px}.weekday-bar{width:100%;border-radius:3px}.weekday-day{font-family:var(--font-mono);font-size:9px;color:var(--fg-3)}.podium-banner{margin:0 16px 12px;background:var(--bg-2);border:1px solid oklch(1 0 0 / .04);border-radius:var(--r-lg);padding:14px 18px;display:flex;align-items:center;gap:12px}.podium-rank{font-family:var(--font-mono);font-size:28px;font-weight:600;color:var(--accent)}.race-row{margin:0 16px 8px;background:var(--bg-2);border:1px solid oklch(1 0 0 / .04);border-radius:var(--r-md);padding:12px 14px;display:block;width:calc(100% - 32px);text-align:left}.race-row:focus-visible{outline:2px solid oklch(.82 .14 75 / .7);outline-offset:2px}.race-row-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.race-label{font-size:13px;font-weight:500}.race-you{font-family:var(--font-mono);font-size:12px;color:var(--fg-1)}.leader-chip{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;padding:3px 8px;background:#43c25124;border:1px solid oklch(.72 .19 145 / .28);border-radius:999px;color:var(--c-green)}.race-gap{font-family:var(--font-mono);font-size:12px;color:var(--fg-3)}.race-icon{display:inline-block;margin-right:4px}.race-row--train .prog>span{background:var(--train-1)}.race-row--train .leader-chip{background:#82e3ca2e;border-color:#82e3ca59;color:var(--train-1)}.race-row--plume .prog>span{background:var(--plume-leaf)}.race-row--plume .leader-chip{background:#52b23b2e;border-color:#52b23b59;color:var(--plume-leaf)}.podium-sheet-title{font-family:var(--font-serif);font-size:28px;line-height:1;color:var(--fg-0)}.podium-sheet-sub{margin-top:6px;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-2)}.podium-sheet-list{display:flex;flex-direction:column;gap:10px;margin-top:18px}.podium-sheet-item{display:grid;grid-template-columns:34px auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px;background:var(--bg-2);border:1px solid oklch(1 0 0 / .04);border-radius:var(--r-md)}.podium-sheet-item.is-me{border-color:#f9b64f40;background:linear-gradient(180deg,oklch(.82 .14 75 / .06),transparent),var(--bg-2)}.podium-sheet-rank{font-family:var(--font-mono);font-size:12px;color:var(--fg-2);letter-spacing:.04em}.podium-sheet-copy{min-width:0}.podium-sheet-name{font-size:14px;font-weight:500;color:var(--fg-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.podium-sheet-meta{display:flex;align-items:center;gap:8px;margin-top:6px}.podium-sheet-meta .prog{flex:1}.podium-sheet-value{display:flex;align-items:baseline;gap:6px;white-space:nowrap}.podium-sheet-value-num{font-family:var(--font-mono);font-size:16px;color:var(--fg-0)}.podium-sheet-value-unit{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3)}.podium-sheet-empty{padding:6px 0 2px;font-size:13px;color:var(--fg-3)}.badges-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:0 16px}.badge-cell{background:var(--bg-2);border:1px solid oklch(1 0 0 / .04);border-radius:var(--r-md);padding:14px 8px;display:flex;flex-direction:column;align-items:center;gap:6px;opacity:.4;transition:opacity .18s ease;width:100%;text-align:center}.badge-cell.earned{opacity:1;border-color:#f9b64f40}.badge-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px;background:#f9b64f1a}.badge-cell.earned .badge-icon{background:#f9b64f2e}.badge-name-line{display:flex;align-items:center;justify-content:center;gap:6px;min-height:24px}.badge-name{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-2);text-align:center;min-width:0}.badge-cell.earned .badge-name{color:var(--fg-0)}.badge-multiplier{font-family:var(--font-mono);font-size:10px;letter-spacing:.02em;color:#fff9;white-space:nowrap;flex-shrink:0}.badge-multiplier.double{font-weight:700}.badge-multiplier.cap{font-weight:700;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.badge-desc{font-size:11px;line-height:1.35;color:var(--fg-3);text-align:center;min-height:30px}.badge-cell.earned .badge-desc{color:var(--fg-2)}.badge-card-progress{margin-top:8px;width:100%}.badge-card-progress-meta{margin-bottom:4px;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;color:var(--fg-2);text-align:center}.badge-card-progress .prog{height:5px}.badge-sheet-group+.badge-sheet-group{margin-top:16px}.badge-sheet-list{display:flex;flex-direction:column;gap:10px}.badge-list-item{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;align-items:start;padding:12px 14px;background:var(--bg-2);border:1px solid oklch(1 0 0 / .04);border-radius:var(--r-md);opacity:.45}.badge-list-item.earned{opacity:1;border-color:#f9b64f40}.badge-list-item.earned-section{opacity:.82}.badge-list-icon{width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:20px;background:#f9b64f1a}.badge-list-item.earned .badge-list-icon{background:#f9b64f2e}.badge-list-copy{min-width:0}.badge-list-name-line{display:flex;align-items:center;gap:8px}.badge-list-name{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-1);margin-bottom:4px}.badge-list-item.earned .badge-list-name{color:var(--fg-0)}.badge-list-desc{font-size:12px;line-height:1.45;color:var(--fg-3)}.badge-list-item.earned .badge-list-desc{color:var(--fg-2)}.badge-sheet-section-title{margin:16px 0 10px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.badge-sheet-progress{padding-top:0}.badge-detail-title-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.badge-detail-title{font-size:20px;font-weight:600;color:var(--fg-0)}.badge-detail-desc{font-size:13px;line-height:1.5;color:var(--fg-2)}.badge-ledger{display:flex;flex-direction:column;gap:10px}.badge-ledger-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.badge-ledger-date{font-size:13px;color:var(--fg-1)}.badge-ledger-annotation{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#ffffff8c;white-space:nowrap}.badge-ledger-empty{font-size:12px;color:var(--fg-3)}.social-widget{margin:0 16px 12px;background:var(--bg-2);border:1px solid oklch(1 0 0 / .04);border-radius:var(--r-lg);overflow:hidden}.social-widget-inner{padding:16px}.social-widget-title{font-size:16px;font-weight:600;color:var(--fg-0)}.social-widget-sub{font-size:12px;color:var(--fg-2);margin-top:2px}.social-types-shell{margin-top:12px}.social-types-chart{overflow:hidden;border-radius:18px;border:1px solid oklch(1 0 0 / .06);background:radial-gradient(120% 100% at 0% 0%,oklch(.3 .1 55 / .1),transparent 50%),radial-gradient(100% 80% at 100% 100%,oklch(.3 .1 300 / .08),transparent 52%),linear-gradient(180deg,#110c09,#0c0806);box-shadow:inset 0 1px #ffffff08}.social-types-svg{display:block;width:100%;height:auto}.social-types-empty{min-height:220px;display:grid;place-items:center;padding:18px;text-align:center;font-size:12px;color:var(--fg-2)}.social-types-user-label{fill:var(--fg-1);font-family:var(--font-mono);font-size:10px;letter-spacing:.03em}.social-types-user-label.is-selected{fill:var(--fg-0)}.social-types-bucket-label{fill:var(--fg-0);font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em}.social-types-bucket-nickname{fill:var(--fg-3);font-family:var(--font-serif);font-size:11px;font-style:italic}.social-types-detail{margin-top:12px;min-height:48px;color:var(--fg-2);font-size:12px;line-height:1.5}.social-types-detail.is-idle{display:flex;align-items:center}.social-types-readout{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.social-types-chip{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;border:1px solid oklch(1 0 0 / .08);background:#ffffff0a;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-1)}.social-types-chip.is-user{color:var(--accent);border-color:#f9b64f3d;background:#f9b64f1a}.social-types-chip.is-bucket{color:var(--fg-0)}.social-types-chip[data-tone=green]{color:var(--c-green);border-color:#43c2513d;background:#43c2511a}.social-types-chip[data-tone=yellow]{color:var(--c-yellow);border-color:#f4ce233d;background:#f4ce231a}.social-types-chip[data-tone=orange]{color:var(--c-orange);border-color:#fe860f3d;background:#fe860f1a}.social-types-chip[data-tone=red]{color:var(--c-red);border-color:oklch(.66 .24 25 / .24);background:oklch(.66 .24 25 / .1)}.social-types-chip[data-tone=purple]{color:var(--c-purple);border-color:#a050e63d;background:#a050e61a}.social-types-chip[data-tone=blackout]{color:var(--c-blackout);border-color:oklch(.48 .22 330 / .24);background:oklch(.48 .22 330 / .1)}.social-types-copy{color:var(--fg-0);font-size:13px}.social-types-meta{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--fg-3)}.settings-section{margin:0 16px 12px;background:var(--bg-2);border:1px solid oklch(1 0 0 / .04);border-radius:var(--r-lg);overflow:hidden}.settings-section-title{padding:14px 16px 10px;font-size:13px;font-weight:600;color:var(--fg-0)}.settings-section-sub{padding:0 16px 12px;font-size:12px;color:var(--fg-2)}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid oklch(1 0 0 / .04);font-size:14px}.settings-row-label{color:var(--fg-1)}.settings-row-value{color:var(--fg-3);font-size:13px}.settings-btn{width:100%;padding:14px 16px;text-align:center;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);border-top:1px solid oklch(1 0 0 / .04);cursor:pointer}.settings-link-chip{display:flex;align-items:center;gap:10px;padding:10px 16px;border-top:1px solid oklch(1 0 0 / .04)}.settings-link-provider{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-2);min-width:56px}.settings-link-name{font-size:13px;color:var(--fg-0)}.settings-link-action{margin-left:auto}.settings-link-action a,.settings-link-action button{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);padding:4px 8px;border:1px solid oklch(.82 .14 75 / .25);border-radius:var(--r-sm)}.health-row{display:grid;grid-template-columns:minmax(0,88px) minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px 16px;border-top:1px solid oklch(1 0 0 / .04)}.health-row+.health-row{border-top:1px solid oklch(1 0 0 / .04)}.health-row-provider{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-2)}.health-row-provider--strava{text-transform:none;letter-spacing:.02em;font-size:12px}.health-row-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--fg-2)}.health-row-detail{color:var(--fg-3)}.health-state{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;border-radius:999px;border:1px solid oklch(1 0 0 / .08)}.health-state--linked{color:var(--c-green);border-color:#43c25147}.health-state--unlinked{color:var(--fg-3)}.health-state--error{color:var(--c-red);border-color:oklch(.66 .24 25 / .28)}.health-action{width:auto;padding:8px 12px;border-top:none;border:1px solid oklch(.82 .14 75 / .25);border-radius:var(--r-sm);font-size:10px}.health-row .health-action--long{grid-column:1 / -1;width:100%;padding:10px 12px;font-size:11px;line-height:1.3;white-space:normal;text-align:center}.settings-btn--ghost{color:var(--fg-2);border-color:#ffffff1f}.health-row .settings-btn--ghost+.settings-btn--ghost,.health-row .health-action+.health-action{margin-left:6px}.health-row--strava{display:flex;flex-direction:column;align-items:stretch;gap:10px}.health-row--strava .strava-row-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}.strava-linked-name{font-size:14px;font-weight:500;color:var(--fg-1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strava-linked-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--fg-3)}.strava-linked-meta a{color:var(--fg-2)}.strava-unlink-btn{width:100%;padding:10px 12px;text-align:center;font-size:11px;line-height:1.3;white-space:normal}.strava-official-btn{align-self:flex-start}.strava-official-btn:hover{opacity:.9}.strava-official-btn:active{opacity:.8}.mode-toggle{display:inline-flex;border-radius:999px;background:#ffffff0d;border:1px solid oklch(1 0 0 / .08);overflow:hidden}.mode-option{padding:6px 12px;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-2);cursor:pointer;transition:background .12s ease,color .12s ease}.mode-option.active{background:var(--accent);color:#0c0806}.settings-input{width:100%;padding:10px 12px;background:#ffffff0a;border:1px solid oklch(1 0 0 / .08);border-radius:var(--r-sm);color:var(--fg-0);font-size:14px;margin:4px 0}.settings-input:focus{outline:2px solid var(--accent);outline-offset:1px}.settings-message{font-size:12px;color:var(--fg-2);padding:4px 0}.settings-error{font-size:12px;color:var(--c-red);padding:4px 0}.follow-list-row{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid oklch(1 0 0 / .04);gap:12px}.follow-list-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px}.follow-chip{border-radius:999px;padding:7px 11px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid oklch(1 0 0 / .08);white-space:nowrap}.follow-chip--off{background:#ffffff0a;color:var(--fg-1)}.follow-chip--on{background:oklch(.78 .17 85 / .16);color:var(--accent);border-color:#f9b64f38}.follow-chip--vanish{animation:follow-chip-vanish .26s ease forwards;transform-origin:center}@keyframes follow-chip-vanish{0%{transform:scale(1);opacity:1}35%{transform:scale(1.2);opacity:1}to{transform:scale(0);opacity:0}}.follow-inline-card,.perm-card,.perm-nudge-card{margin:10px 16px 12px;padding:14px;border-radius:16px;background:#ffffff0a;border:1px solid oklch(1 0 0 / .07)}.perm-card--granted{border-color:#53c75d40}.perm-card--blocked{border-color:#f3625d38}.perm-card-title{font-size:14px;font-weight:600;color:var(--fg-0)}.perm-card-copy,.perm-card-link,.follow-inline-copy,.follow-inline-steps{font-size:12px;color:var(--fg-2);margin-top:6px}.follow-inline-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.follow-inline-btn{border-radius:999px;padding:8px 12px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;background:#ffffff0d;border:1px solid oklch(1 0 0 / .08);color:var(--fg-1)}.follow-inline-btn--primary{background:var(--accent);color:#0c0806;border-color:transparent}.feed-item--highlight{box-shadow:0 0 0 2px #f9b64f59}.status-chip{display:inline-flex;align-items:center;gap:8px;margin-bottom:10px;padding:6px 10px;border-radius:999px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;border:1px solid oklch(1 0 0 / .08)}.status-chip--live{color:var(--c-green);background:#43c2511f}.status-chip--waiting{color:var(--accent);background:oklch(.78 .17 85 / .12);animation:pulse-chip 1.1s ease-in-out infinite}.status-chip--blocked{color:var(--fg-2);background:#ffffff0a}@keyframes pulse-chip{0%{opacity:.65}50%{opacity:1}to{opacity:.65}}.toggle{width:44px;height:26px;border-radius:999px;background:#ffffff26;position:relative;cursor:pointer;transition:background .2s ease;flex-shrink:0}.toggle.on{background:var(--c-green)}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s ease;box-shadow:0 1px 4px #00000040}.toggle.on:after{transform:translate(18px)}.profile-preview{display:flex;align-items:center;gap:12px;padding:14px 16px}
