:root{--bg: #0f0f0f;--panel: #1a1a1a;--panel-2: #242424;--line: #2a2a2a;--text: #f5f5f5;--muted: #888;--accent: #ff5e3a;--commit: #4ade80;--bad: #ef4444;--hot: #ff3d7f;--acid: #d4ff00;--chrome: #c0c4cc;--font-display: "Archivo Black", "Helvetica Neue", system-ui, sans-serif;--font-body: "Inter", system-ui, -apple-system, sans-serif;--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-5: 1.25rem;--s-6: 1.5rem;--s-8: 2rem;--s-10: 2.5rem;--s-12: 3rem;--t-xs: clamp(.6875rem, .65rem + .2vw, .75rem);--t-sm: clamp(.8125rem, .78rem + .2vw, .875rem);--t-base: clamp(.9375rem, .91rem + .2vw, 1rem);--t-lg: clamp(1.0625rem, 1rem + .4vw, 1.25rem);--t-xl: clamp(1.25rem, 1.1rem + .8vw, 1.5rem);--t-2xl: clamp(1.75rem, 1.5rem + 1.2vw, 2.25rem);--t-3xl: clamp(2.5rem, 2rem + 2.4vw, 4rem);--t-hero: clamp(3rem, 2.2rem + 4vw, 6rem);--w-app: min(480px, 100vw);--r-xs: 4px;--r-sm: 8px;--r-md: 12px;--r-lg: 14px;--r-xl: 20px;--r-sheet: 20px 20px 0 0;--r-pill: 999px;--r-circle: 50%;--bw-thin: 1px;--bw-die: 3px;color-scheme:dark}@media (prefers-reduced-motion: no-preference){:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.4;overscroll-behavior-y:contain;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;height:100%}.hot-mark{font-family:var(--font-display);font-style:italic;letter-spacing:.02em;text-transform:uppercase;display:inline-block;transform:skew(-8deg)}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);height:100svh;height:100dvh}#app{height:100%}.app{max-width:var(--w-app);margin-inline:auto;padding:var(--s-2) var(--s-3) var(--s-1);display:flex;flex-direction:column;gap:var(--s-2);height:100%;transition:transform .5s cubic-bezier(.2,.8,.2,1)}.app.flipped,.app.flipped .camera-sheet{transform:rotate(180deg);transform-origin:center center}.scoreboard{display:flex;gap:var(--s-2);align-items:stretch;flex:0 0 auto}.scoreboard .chip{flex:1 1 0;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-2) var(--s-3);position:relative;display:flex;flex-direction:column;justify-content:center;min-width:0;overflow:hidden;opacity:.62;transition:background .4s ease,border-color .4s ease,opacity .4s ease,flex-grow .4s ease,transform .06s ease;cursor:pointer;text-align:left;font-family:inherit;color:inherit}.scoreboard .chip:active{transform:scale(.98)}.scoreboard .chip-badge{position:absolute;top:var(--s-1);right:var(--s-1);display:flex;align-items:center;gap:3px;padding:2px 6px;border-radius:var(--r-pill);background:var(--bg);border:1px solid var(--line);font-size:10px;color:var(--muted);pointer-events:none;line-height:1}.scoreboard .chip-badge-mode{font-family:var(--font-display);font-style:italic;letter-spacing:.04em;transform:skew(-6deg);display:inline-block}.scoreboard .chip-badge-flip{color:var(--hot);font-size:12px;display:inline-flex;align-items:center}.scoreboard .chip-badge-gear{font-size:12px;margin-inline-start:1px;opacity:.8;display:inline-flex;align-items:center}.scoreboard .chip.current .chip-badge{background:var(--bg);border-color:color-mix(in srgb,var(--player-color, var(--accent)) 50%,var(--line));color:var(--player-color, var(--accent))}.scoreboard .chip-stripe{position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--player-color, var(--line));opacity:.6;transition:opacity .4s ease,width .4s ease}.scoreboard .chip.current{flex-grow:1.7;opacity:1;background:color-mix(in srgb,var(--player-color, var(--accent)) 14%,var(--panel));border-color:var(--player-color, var(--accent));box-shadow:0 0 0 1px color-mix(in srgb,var(--player-color, var(--accent)) 40%,transparent),0 6px 18px -8px color-mix(in srgb,var(--player-color, var(--accent)) 60%,transparent);animation:chip-handoff .6s cubic-bezier(.2,.8,.2,1)}.scoreboard .chip.current .chip-stripe{width:6px;opacity:1}.scoreboard .chip.current .chip-score{font-size:var(--t-2xl, var(--t-xl));color:var(--player-color, var(--accent))}@keyframes chip-handoff{0%{transform:scale(.97)}60%{transform:scale(1.03)}to{transform:scale(1)}}.scoreboard .chip-name{font-size:var(--t-xs);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scoreboard .chip.current .chip-name{color:var(--player-color, var(--accent))}.scoreboard .chip-score{font-size:var(--t-xl);font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.scoreboard .chip-not-in{font-size:10px;color:var(--muted)}.scoreboard .chip-farkles{position:absolute;top:4px;right:8px;color:var(--bad);font-size:16px;letter-spacing:2px}.scoreboard .gear{flex:0 0 44px;background:transparent;border:1px solid var(--line);border-radius:var(--r-md);color:var(--muted);font-size:var(--t-lg);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.scoreboard .gear svg{width:1.1em;height:1.1em}.meta{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex:0 0 auto;font-size:var(--t-base);padding:var(--s-2) var(--s-2);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md)}.meta-left{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.meta-dice{color:var(--muted)}.meta-dice strong{color:var(--text);font-size:var(--t-lg);font-variant-numeric:tabular-nums;margin-inline-end:2px}.meta-right{display:flex;gap:var(--s-2);align-items:center;margin-inline-start:auto}.icon-btn{width:36px;height:36px;border-radius:var(--r-md);border:1px solid var(--line);background:transparent;color:var(--muted);font-size:var(--t-base);cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}.icon-btn[aria-pressed=true]{background:var(--panel-2);color:var(--text)}.icon-btn svg{width:1.1em;height:1.1em}.at-risk{display:inline-flex;align-items:center;gap:var(--s-2);padding:var(--s-1) var(--s-3);border-radius:var(--r-pill);background:var(--bg);border:1px solid var(--line);font-variant-numeric:tabular-nums;font-size:var(--t-sm);transition:background .3s ease,border-color .3s ease,color .3s ease}.at-risk.idle{color:var(--muted)}.at-risk.idle .risk-stack{display:none}.at-risk-label{font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.at-risk-num{font-size:var(--t-lg);font-weight:700}.risk-stack{display:inline-flex;align-items:flex-end;height:14px;width:28px;position:relative}.risk-chip{position:absolute;left:calc(var(--i) * 1.5px);bottom:0;width:10px;height:calc(3px + var(--i) * .6px);border-radius:2px;background:currentColor;opacity:.85;animation:chip-stack .25s cubic-bezier(.2,.8,.2,1)}@keyframes chip-stack{0%{transform:translateY(-6px);opacity:0}to{transform:translateY(0);opacity:.85}}.at-risk.tier-1{color:var(--accent);border-color:#ff8a3d66}.at-risk.tier-2{color:#facc15;border-color:#facc1580;background:color-mix(in srgb,#facc15 8%,var(--panel))}.at-risk.tier-3{color:#a855f7;border-color:#a855f78c;background:color-mix(in srgb,#a855f7 10%,var(--panel));box-shadow:0 0 12px #a855f740}.at-risk.tier-4{color:var(--acid);border-color:var(--hot);background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 30%,var(--panel)),color-mix(in srgb,var(--hot) 30%,var(--panel)));box-shadow:0 0 16px #ff3d7f66;animation:risk-pulse 1.4s ease-in-out infinite}.at-risk.tier-4 .at-risk-num{font-family:var(--font-display);font-style:italic;letter-spacing:-.01em}@keyframes risk-pulse{0%,to{filter:brightness(1)}50%{filter:brightness(1.15)}}.meta-hot{font-family:var(--font-display);background:var(--hot);color:#000;padding:2px 8px 1px;border-radius:var(--r-xs);font-size:12px;letter-spacing:.05em;font-style:italic;transform:skew(-8deg);display:inline-block;animation:hot-wiggle 1.4s ease-in-out infinite;text-shadow:0 0 12px rgba(255,61,127,.6)}@keyframes hot-wiggle{0%,to{transform:skew(-8deg) translateY(0)}50%{transform:skew(-8deg) translateY(-1px)}}.meta-tag-along{color:var(--accent)}.modes{display:flex;gap:4px;flex:0 0 auto}.mode-pill{width:28px;height:28px;border-radius:var(--r-sm);background:var(--panel);border:1px solid var(--line);color:var(--muted);font-size:12px;font-weight:700;cursor:pointer;padding:0}.mode-pill.active{background:var(--text);color:#000;border-color:var(--text)}.player-config{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}.pc-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000080;pointer-events:auto;animation:pc-fade .2s ease-out}@keyframes pc-fade{0%{opacity:0}to{opacity:1}}.pc-sheet{position:relative;pointer-events:auto;width:100%;max-width:var(--w-app);background:var(--panel);border-radius:var(--r-sheet);border-top:1px solid var(--line);border-inline:1px solid var(--line);display:flex;flex-direction:column;max-height:85vh;animation:pc-slide .25s cubic-bezier(.2,.8,.2,1);padding-bottom:env(safe-area-inset-bottom)}@keyframes pc-slide{0%{transform:translateY(100%)}to{transform:translateY(0)}}.pc-sheet header{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);position:relative}.pc-stripe{width:4px;align-self:stretch;border-radius:var(--r-pill);background:var(--player-color)}.pc-title{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.pc-sheet h2{margin:0;font-size:var(--t-xl);font-weight:700;color:var(--player-color)}.pc-subtitle{margin:0;font-size:var(--t-xs);color:var(--muted);line-height:1.4}.pc-sheet header button[data-close]{background:transparent;border:none;color:var(--muted);font-size:28px;width:36px;height:36px;cursor:pointer}.pc-body{padding:0 var(--s-4) var(--s-4);display:flex;flex-direction:column;gap:var(--s-4);overflow-y:auto}.pc-field{display:flex;flex-direction:column;gap:var(--s-2)}.pc-field>span:first-child,.pc-field>span>strong{font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}.pc-label{display:flex;flex-direction:column;gap:3px}.pc-label>small{font-size:var(--t-xs);text-transform:none;letter-spacing:0;font-weight:400;color:var(--muted);line-height:1.4}.pc-field input[type=text]{background:var(--bg);border:1px solid var(--line);color:var(--text);padding:var(--s-2) var(--s-3);border-radius:var(--r-md);font-size:var(--t-base);font-family:inherit}.pc-field input[type=text]:focus{outline:none;border-color:var(--player-color)}.pc-colors{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--s-2)}.pc-color-swatch{aspect-ratio:1;border-radius:var(--r-md);border:2px solid transparent;cursor:pointer;padding:0;transition:transform .1s ease,border-color .2s ease}.pc-color-swatch.active{border-color:var(--text);transform:scale(1.05)}.pc-modes{display:flex;flex-direction:column;gap:var(--s-2)}.pc-mode-pill{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-3);display:grid;grid-template-columns:64px 1fr;align-items:center;gap:var(--s-3);cursor:pointer;font-family:inherit;color:var(--text);text-align:left}.pc-mode-pill strong{font-family:var(--font-display);font-style:italic;font-size:var(--t-lg);letter-spacing:.02em;transform:skew(-6deg);justify-self:start}.pc-mode-pill span{font-size:var(--t-sm);color:var(--muted);line-height:1.4}.pc-mode-pill.active{background:var(--player-color);border-color:var(--player-color);color:#000}.pc-mode-pill.active span{color:#000000a6}.pc-toggle{flex-direction:row;align-items:center;justify-content:space-between;cursor:pointer}.pc-toggle>span{display:flex;flex-direction:column;gap:2px;text-transform:none;letter-spacing:0}.pc-toggle>span>strong{text-transform:none;font-size:var(--t-base);letter-spacing:0;color:var(--text);font-weight:600}.pc-toggle>span>small{font-size:var(--t-xs);color:var(--muted)}.pc-toggle input[type=checkbox]{width:24px;height:24px;accent-color:var(--player-color);flex-shrink:0}.pc-sheet footer{padding:var(--s-3) var(--s-4) var(--s-4);border-top:1px solid var(--line);display:flex;flex-direction:column;gap:var(--s-2)}.pc-footnote{margin:0;font-size:var(--t-xs);color:var(--muted);text-align:center;line-height:1.4}.pc-done{width:100%;min-height:max(48px,3rem);background:var(--player-color);color:#000;border:none;border-radius:var(--r-lg);font-size:var(--t-base);font-weight:700;cursor:pointer}.tray{flex:1 1 auto;display:flex;align-items:center;justify-content:center;min-height:0;padding:4px 0}.tray-empty .placeholder{width:100%;text-align:center;color:var(--muted);font-size:14px}.tray-hero{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-3);background:linear-gradient(180deg,color-mix(in srgb,var(--player-color, var(--accent)) 10%,var(--panel)),color-mix(in srgb,var(--player-color, var(--accent)) 4%,var(--panel)) 60%,var(--panel));border:1px solid color-mix(in srgb,var(--player-color, var(--accent)) 30%,var(--line));border-radius:var(--r-lg);color:inherit;font-family:inherit;cursor:pointer;padding:var(--s-4);position:relative;overflow:hidden;transition:transform .12s cubic-bezier(.2,.8,.2,1),border-color .3s ease,background .3s ease;animation:tray-hero-in .4s cubic-bezier(.2,.8,.2,1)}.tray-hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--player-color, var(--accent)) 20%,transparent),transparent 65%);opacity:.5;pointer-events:none}.tray-hero:active{transform:scale(.98)}.tray-hero:hover{border-color:color-mix(in srgb,var(--player-color, var(--accent)) 60%,var(--line))}.tray-hero-cta{display:flex;flex-direction:column;align-items:center;gap:2px;position:relative}.tray-hero-eyebrow{font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);font-weight:600}.tray-hero-num{font-family:var(--font-display);font-style:italic;font-size:var(--t-hero);line-height:.9;letter-spacing:.01em;transform:skew(-6deg);color:var(--player-color, var(--accent));text-shadow:0 0 24px color-mix(in srgb,var(--player-color, var(--accent)) 50%,transparent)}.tray-hero-label{font-size:var(--t-sm);text-transform:uppercase;letter-spacing:.18em;color:var(--muted);font-weight:600}.tray-hero-kept{display:flex;flex-direction:column;align-items:center;gap:6px;position:relative}.tray-hero-kept-label{font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.16em;color:var(--muted);opacity:.7}.tray-hero-kept-dice{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;max-width:min(80vw,360px)}.kept-die{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:var(--r-sm, 6px);background:var(--bg);color:var(--muted);opacity:.7}.kept-die svg{width:80%;height:80%}@keyframes tray-hero-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.tray-hero.hot{background:linear-gradient(180deg,color-mix(in srgb,var(--hot) 18%,var(--panel)),color-mix(in srgb,var(--accent) 8%,var(--panel)) 60%,var(--panel));border-color:var(--hot)}.tray-hero.hot:before{background:radial-gradient(ellipse at center,color-mix(in srgb,var(--acid) 15%,transparent),transparent 60%);opacity:.7}.tray-hero.hot .tray-hero-num{color:var(--hot);text-shadow:0 0 24px color-mix(in srgb,var(--hot) 60%,transparent)}.tray-hero.hot .tray-hero-eyebrow{color:var(--acid);letter-spacing:.22em}.tray-flow{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;width:100%}.tray-grouped{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:14px;width:100%}.tray-easy{display:flex;flex-direction:column;gap:var(--s-3);width:100%}.group-legend{display:flex;flex-wrap:wrap;gap:var(--s-2);justify-content:center}.legend-chip{font-size:var(--t-xs);font-weight:700;letter-spacing:.02em;padding:4px 10px;border-radius:var(--r-pill);background:var(--panel);border:1px solid}.legend-chip.legend-0{color:#f97316;border-color:#f97316;background:#f973161a}.legend-chip.legend-1{color:#06b6d4;border-color:#06b6d4;background:#06b6d41a}.legend-chip.legend-2{color:#a855f7;border-color:#a855f7;background:#a855f71a}.legend-chip.legend-3{color:#facc15;border-color:#facc15;background:#facc151a}.legend-chip.legend-4{color:#ec4899;border-color:#ec4899;background:#ec48991a}.legend-chip.legend-5{color:#22c55e;border-color:#22c55e;background:#22c55e1a}.tray-grid-2row{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:var(--s-3);width:100%;max-width:min(360px,80vw);margin-inline:auto}.tray-grid-2row .die.leftover{opacity:.45}.tray-grid-2row .die.group-0{border-color:#f97316}.tray-grid-2row .die.group-1{border-color:#06b6d4}.tray-grid-2row .die.group-2{border-color:#a855f7}.tray-grid-2row .die.group-3{border-color:#facc15}.tray-grid-2row .die.group-4{border-color:#ec4899}.tray-grid-2row .die.group-5{border-color:#22c55e}.tray-scatter{position:relative;width:min(100%,360px);aspect-ratio:1;margin-inline:auto;background:#ff8a3d0a;border:1px dashed rgba(255,138,61,.18);border-radius:var(--r-md)}.tray-scatter .die{aspect-ratio:1;height:auto}.dice-group{display:flex;flex-direction:column;gap:4px;padding:6px 6px 8px;border-radius:var(--r-md);flex:0 1 auto;align-items:center}.dice-group .dice-row{display:flex;gap:6px;align-items:center}.group-label{font-size:var(--t-xs);text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:#ffffffd9;text-align:center;white-space:nowrap}.dice-group.leftover .group-label{color:var(--muted)}.dice-group.scoring{background:#ff8a3d14;box-shadow:inset 0 0 0 1px #ff8a3d66}.dice-group.scoring.group-0{box-shadow:inset 0 0 0 2px #f97316;background:#f973161a}.dice-group.scoring.group-1{box-shadow:inset 0 0 0 2px #06b6d4;background:#06b6d41a}.dice-group.scoring.group-2{box-shadow:inset 0 0 0 2px #a855f7;background:#a855f71a}.dice-group.scoring.group-3{box-shadow:inset 0 0 0 2px #facc15;background:#facc151a}.dice-group.scoring.group-4{box-shadow:inset 0 0 0 2px #ec4899;background:#ec48991a}.dice-group.scoring.group-5{box-shadow:inset 0 0 0 2px #22c55e;background:#22c55e1a}.dice-group.leftover{opacity:.45}.tray-grouped .die{width:52px}.die{--rot: 0deg;--lift: 0px;aspect-ratio:1;background:#f5f5f5;border:3px solid transparent;border-radius:var(--r-md);padding:0;cursor:pointer;transition:transform .1s,border-color .1s;transform:translateY(var(--lift)) rotate(var(--rot))}.die svg{width:100%;height:100%;display:block}.die svg circle{fill:#1a1a1a}.die.selected{border-color:var(--accent);--lift: -4px}.die.auto{border-color:var(--commit)}.die.hint-0{box-shadow:inset 0 0 0 3px #f97316}.die.hint-1{box-shadow:inset 0 0 0 3px #06b6d4}.die.hint-2{box-shadow:inset 0 0 0 3px #a855f7}.die.hint-3{box-shadow:inset 0 0 0 3px #facc15}.die.hint-4{box-shadow:inset 0 0 0 3px #ec4899}.die.hint-5{box-shadow:inset 0 0 0 3px #22c55e}.die:disabled{opacity:.7}.die.dead{outline:2px dashed var(--bad);outline-offset:2px;animation:die-dead-pulse 1.2s ease-in-out infinite}@keyframes die-dead-pulse{0%,to{outline-color:var(--bad)}50%{outline-color:color-mix(in srgb,var(--bad) 40%,transparent)}}.preview-row{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:var(--s-2);font-size:var(--t-sm);font-variant-numeric:tabular-nums;min-height:1.5lh}.preview-row.hidden{display:none}.preview-row.valid .preview-points{color:var(--commit);font-weight:700;font-size:15px}.preview-row .preview-desc{color:var(--muted)}.preview-row .preview-hint{color:var(--muted);font-style:italic}.preview-row.invalid .preview-hint{color:var(--bad);font-style:normal}.actions{display:flex;gap:8px;flex-wrap:wrap;flex:0 0 auto;padding-top:4px}.actions .btn-primary{flex:1;min-height:max(56px,3.5rem);border-radius:var(--r-lg);border:none;background:var(--accent);color:#000;font-size:var(--t-lg);font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer;letter-spacing:.01em;transition:transform .06s ease}.actions .btn-primary:active:not(:disabled){transform:scale(.97)}.actions .btn-primary.commit{background:var(--commit)}.actions .btn-primary.press{background:var(--accent)}.actions .btn-primary:disabled{opacity:.45;cursor:not-allowed}.actions .btn-secondary{flex:0 0 auto;min-height:max(56px,3.5rem);padding-inline:var(--s-4);border-radius:var(--r-lg);background:var(--panel);border:1px solid var(--line);color:var(--text);font-size:var(--t-base);font-weight:500;cursor:pointer}.actions-note{flex-basis:100%;text-align:center;font-size:11px;color:var(--muted);margin-top:2px}.tertiary{flex-basis:100%;display:flex;justify-content:center;gap:16px}.tertiary-btn{background:transparent;border:none;color:var(--muted);font-size:11px;padding:4px 0;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.tertiary-btn svg{width:1.1em;height:1.1em}.review-actions .review-retake{display:inline-flex;align-items:center;gap:6px}.review-actions .review-retake svg{width:1.1em;height:1.1em}.review-pill .check-glyph{display:inline-flex;align-items:center;vertical-align:-.1em}.pc-footnote-icon{display:inline-flex;align-items:center;vertical-align:-.15em}.onboarding-icon{display:inline-flex;align-items:center;vertical-align:-.15em;font-size:1.2em}.log-peek{flex:0 0 auto;display:flex;align-items:center;gap:var(--s-2);padding-block:var(--s-2);background:transparent;border:none;color:var(--muted);font-size:var(--t-xs);text-align:left;cursor:pointer;border-top:1px solid var(--line)}.log-peek .chev{flex:0 0 auto;color:var(--accent)}.log-peek .log-peek-text{flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.log-sheet{position:fixed;inset:auto 0 0 0;background:var(--panel);border-top:1px solid var(--line);border-radius:var(--r-sheet);max-height:70vh;display:flex;flex-direction:column;z-index:15;padding:8px 12px env(safe-area-inset-bottom)}.log-sheet header{display:flex;justify-content:space-between;align-items:center}.log-sheet header h2{margin:0;font-size:16px}.log-sheet header button{background:transparent;border:none;color:var(--text);font-size:24px;width:36px;height:36px}.log-list{overflow-y:auto;display:flex;flex-direction:column;gap:4px;padding:8px 0;font-size:13px;color:var(--text)}.log-line{color:var(--muted)}.game-over{flex:1;display:flex;flex-direction:column;gap:16px;padding:16px 16px 24px;overflow-y:auto;max-width:480px;margin:0 auto;width:100%}.story-header{text-align:center;padding:16px 0 0}.story-eyebrow{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}.story-winner{margin:0;font-family:var(--font-display);font-style:italic;font-size:var(--t-3xl);letter-spacing:-.01em;line-height:1;transform:skew(-6deg);display:inline-block;color:var(--player-color, var(--accent))}.story-winner-line{margin:6px 0 0;font-size:13px;color:var(--muted)}.final-board.story-board{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.final-board.story-board li{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:12px;background:var(--panel);padding:10px 14px;border-radius:var(--r-md);font-variant-numeric:tabular-nums;border-left:4px solid var(--player-color, var(--line))}.final-board.story-board li.first{background:color-mix(in srgb,var(--player-color, var(--commit)) 14%,var(--panel));border-color:var(--player-color, var(--commit));font-weight:700}.final-board.story-board .rank{font-size:12px;color:var(--muted);text-align:center}.final-board.story-board .board-score{font-size:20px}.story-cards{display:flex;flex-direction:column;gap:10px}.story-card{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--player-color, var(--line));border-radius:var(--r-md);padding:12px 14px}.story-card header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.story-card-name{font-weight:700;color:var(--player-color, var(--text))}.story-card-score{font-variant-numeric:tabular-nums;font-weight:700;font-size:16px}.story-card ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--muted)}.story-card ul strong{color:var(--text);font-variant-numeric:tabular-nums}.story-pb{margin-top:6px;font-size:12px;color:var(--commit);font-weight:600}.story-actions{display:flex;gap:8px;margin-top:auto}.game-over .btn-primary{flex:1;min-height:56px;border:none;border-radius:var(--r-lg);background:var(--commit);color:#000;font-size:18px;font-weight:700;cursor:pointer}.btn-share{min-height:56px;padding:0 20px;border-radius:var(--r-lg);background:var(--panel);border:1px solid var(--line);color:var(--text);font-size:15px;font-weight:600;cursor:pointer}.toast{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 28px);left:50%;transform:translate(-50%);background:#000000d9;color:#fff;padding:10px 18px;border-radius:var(--r-pill);font-size:13px;z-index:50;animation:toast-in .18s ease-out;pointer-events:none}.toast.toast-out{opacity:0;transition:opacity .32s ease-in}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.fx{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;pointer-events:none;display:flex;align-items:center;justify-content:center;animation:fx-in .2s ease-out;transition:opacity .28s ease-in,transform .28s ease-in}.fx.fx-out{opacity:0;transform:scale(1.05)}@keyframes fx-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.fx-card{text-align:center;padding:28px 36px;border-radius:var(--r-xl);background:#000000c7;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.08);box-shadow:0 24px 60px #00000080}.fx-emoji{font-size:56px;line-height:1;margin-bottom:4px}.fx-title{font-family:var(--font-display);font-style:italic;font-size:var(--t-3xl);letter-spacing:.02em;font-variant-numeric:tabular-nums;transform:skew(-6deg);line-height:1}.fx-sub{font-size:12px;color:var(--muted);margin-top:6px;text-transform:uppercase;letter-spacing:.18em;font-weight:600}.fx-hot .fx-card{background:radial-gradient(circle at 20% 0%,rgba(255,255,255,.18),transparent 50%),linear-gradient(135deg,var(--accent),var(--hot));color:#fff;padding:36px 48px;box-shadow:0 0 0 1px #ffffff14,0 24px 60px #ff3d7f73,0 8px 20px #ff5e3a66}.fx-hot .fx-emoji{display:none}.fx-hot .fx-title{font-size:var(--t-hero);letter-spacing:-.02em;text-shadow:0 6px 24px rgba(0,0,0,.35);line-height:.95}.fx-hot .fx-sub{color:#000000b3;font-weight:800;font-size:14px;letter-spacing:.32em;margin-top:12px}.fx-farkle .fx-card{background:linear-gradient(135deg,#ef4444f5,#500000f2);color:#fff;box-shadow:0 24px 60px #ef444466}.fx-farkle .fx-title{font-size:clamp(2.5rem,2rem + 2.5vw,4rem);letter-spacing:-.01em;text-shadow:0 4px 16px rgba(0,0,0,.4)}.fx-farkle .fx-sub{color:#ffffffb3}.fx-penalty .fx-card{background:linear-gradient(135deg,#ef4444eb,#3c0000f2);color:#fff}.fx-penalty .fx-title{color:#fff}.fx-tier .fx-card{background:#242424eb;border:1px solid rgba(255,255,255,.1)}.fx-tier .fx-title{font-size:32px}.fx-tier .fx-sub{letter-spacing:.04em}.fx-tier-1 .fx-card{padding:18px 26px;background:linear-gradient(135deg,#ff8a3dd9,#b4501ee0);color:#fff}.fx-tier-1 .fx-title{color:#fff;font-size:28px}.fx-tier-1 .fx-emoji{font-size:36px}.fx-tier-2 .fx-card{background:linear-gradient(135deg,#facc15eb,#f59e0beb);color:#1a1a1a}.fx-tier-2 .fx-title{color:#1a1a1a;font-size:36px;font-weight:800}.fx-tier-2 .fx-sub{color:#0000008c}.fx-tier-2 .fx-emoji{font-size:44px}.fx-tier-3 .fx-card{padding:32px 44px;background:linear-gradient(135deg,#a855f7eb,#ec4899eb);color:#fff;box-shadow:0 0 0 4px #ffffff0d,0 24px 60px #a855f773}.fx-tier-3 .fx-title{font-size:44px;letter-spacing:.04em;text-shadow:0 2px 10px rgba(0,0,0,.3)}.fx-tier-3 .fx-emoji{font-size:56px}.fx-tier-4 .fx-card{padding:40px 52px;background:radial-gradient(circle at 30% 20%,rgba(212,255,0,.5),transparent 55%),linear-gradient(135deg,var(--hot) 0%,var(--accent) 50%,var(--acid) 100%);color:#0a0a0a;box-shadow:0 0 0 4px #d4ff0026,0 32px 80px #ff3d7f8c;animation:fx-in .3s ease-out,fx-shimmer 1.4s ease-in-out}.fx-tier-4 .fx-title{font-size:64px;letter-spacing:-.01em;text-shadow:0 4px 20px rgba(255,255,255,.25)}.fx-tier-4 .fx-emoji{font-size:64px}.fx-tier-4 .fx-sub{color:#0a0a0a}@keyframes fx-shimmer{0%,to{filter:brightness(1)}50%{filter:brightness(1.15) saturate(1.15)}}.onboarding{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);z-index:25;display:flex;align-items:center;justify-content:center;padding:env(safe-area-inset-top) 16px env(safe-area-inset-bottom)}.onboarding-card{max-width:380px;width:100%;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-xl);padding:32px 24px;text-align:center}.onboarding-emoji{font-size:64px;line-height:1;margin-bottom:8px}.onboarding-card h1{margin:0 0 var(--s-1);font-family:var(--font-display);font-style:italic;font-size:var(--t-hero);letter-spacing:-.01em;line-height:.95;background:linear-gradient(135deg,var(--accent),var(--hot));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;transform:skew(-6deg);display:inline-block}.onboarding-tag{margin:0 0 20px;color:var(--muted);font-size:14px}.onboarding-list{list-style:none;margin:0 0 24px;padding:0;text-align:left;display:flex;flex-direction:column;gap:10px;font-size:14px;line-height:1.45}.onboarding-list li{color:var(--text)}.onboarding-list strong{color:var(--accent)}.onboarding-names{display:flex;flex-direction:column;gap:6px;margin-bottom:16px;text-align:left}.onboarding-names span{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.onboarding-names input{background:var(--bg);border:1px solid var(--line);color:var(--text);padding:10px 12px;border-radius:var(--r-md);font-size:15px;font-family:inherit}.onboarding-names input:focus{outline:none;border-color:var(--accent)}.onboarding-go{width:100%;min-height:52px;border:none;border-radius:var(--r-lg);background:var(--accent);color:#000;font-size:17px;font-weight:700;cursor:pointer}.onboarding-install{margin-bottom:var(--s-4);padding:var(--s-3);border-radius:var(--r-md);background:color-mix(in srgb,var(--accent) 12%,var(--panel));border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));text-align:left}.onboarding-install-title{font-size:var(--t-sm);font-weight:700;color:var(--accent);margin-bottom:var(--s-1)}.onboarding-install-body{font-size:var(--t-xs);color:var(--text);line-height:1.5}.onboarding-install-body strong{color:var(--accent)}.admin-sheet{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);display:flex;flex-direction:column;z-index:10;padding:env(safe-area-inset-top) 12px env(safe-area-inset-bottom)}.admin-sheet header{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.admin-sheet header h2{margin:0}.admin-sheet header button{background:transparent;border:none;color:var(--text);font-size:28px}.admin-body{overflow-y:auto;padding-bottom:60px;display:flex;flex-direction:column;gap:8px}.admin-body h3{margin:16px 0 4px;font-size:14px;color:var(--muted);text-transform:uppercase}.admin-body .field{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0}.admin-body .field span{flex:1;font-size:14px}.admin-body .field input{flex:0 0 120px;background:var(--panel);border:1px solid var(--line);color:var(--text);padding:6px 8px;border-radius:var(--r-sm);font-size:14px;text-align:right}.admin-body .field input[type=text]{flex-basis:200px;text-align:left}.admin-body .field.toggle{padding:12px 0}.admin-body .field input[type=checkbox]{width:24px;height:24px;flex:0 0 24px;accent-color:var(--accent)}.admin-body .primary{margin-top:16px;padding:12px;background:var(--accent);border:none;border-radius:var(--r-md);font-size:16px;font-weight:700;color:#000}.model-section{display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md)}.model-status{font-size:14px;display:flex;align-items:center;gap:8px}.model-status .dot{width:8px;height:8px;border-radius:var(--r-circle);background:var(--muted)}.model-status .dot.on{background:var(--commit)}.hint{font-size:12px;color:var(--muted);margin:0}.instructions{font-size:13px;padding-left:20px;color:var(--text)}.instructions a{color:var(--accent)}details summary{font-size:13px;color:var(--accent);cursor:pointer;padding:4px 0}.model-actions{display:flex;gap:8px;align-items:center}.model-actions .upload{flex:1;background:var(--accent);color:#000;font-weight:600;font-size:14px;padding:10px 12px;border-radius:var(--r-md);text-align:center;cursor:pointer}.model-actions .upload input{display:none}.model-actions [data-model-remove]{background:transparent;border:1px solid var(--line);color:var(--text);padding:10px 14px;border-radius:var(--r-md);font-size:14px}.model-actions [data-model-remove]:disabled{opacity:.4}.bests-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.bests-list li{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 12px}.bests-name{font-weight:600}.bests-meta{font-size:12px;color:var(--muted);margin-top:2px}.bests-clear{margin-top:8px;background:transparent;border:1px solid var(--line);color:var(--muted);padding:8px 12px;border-radius:var(--r-sm);font-size:13px;cursor:pointer}.camera-sheet{flex:1 1 auto;min-height:0;background:#000;border-radius:var(--r-lg);overflow:hidden;display:flex;flex-direction:column;position:relative}.camera-sheet header{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;color:#fff;font-size:13px;flex:0 0 auto}.camera-sheet header button{background:transparent;border:none;color:#fff;font-size:22px;width:32px;height:32px}.viewfinder{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}.vf-stage{flex:1 1 auto;position:relative;overflow:hidden;background:#000;min-height:0}.vf-stage video{width:100%;height:100%;object-fit:cover;display:block}.frame-guide{position:absolute;left:var(--x);top:var(--y);width:var(--w);height:var(--h);border:2px solid var(--accent);border-radius:var(--r-md);box-shadow:0 0 0 9999px #00000073;pointer-events:none}.vf-hint{position:absolute;bottom:8px;left:0;right:0;text-align:center;color:#fff;font-size:13px;text-shadow:0 1px 2px rgba(0,0,0,.8);pointer-events:none}.capture-row{padding:12px;display:flex;justify-content:center;flex:0 0 auto}.shutter{width:56px;height:56px;border-radius:var(--r-circle);background:#fff;border:3px solid #fff;box-shadow:0 0 0 2px #000 inset}.review{flex:1 1 auto;display:flex;flex-direction:column;gap:var(--s-3);background:var(--bg);color:var(--text);min-height:0;padding:var(--s-3)}.review-header{display:flex;flex-direction:column;gap:var(--s-2);flex:0 0 auto}.review-title-row{display:flex;align-items:center;justify-content:space-between}.review-title{margin:0;font-family:var(--font-display);font-style:italic;font-size:var(--t-xl);letter-spacing:.02em;transform:skew(-6deg);display:inline-block}.review-status{display:flex;align-items:center;gap:var(--s-2)}.review-header button[data-close]{background:transparent;border:none;color:var(--text);font-size:28px;width:36px;height:36px}.review-pill{font-family:var(--font-display);font-style:italic;font-size:var(--t-xl);padding:4px 12px 3px;border-radius:var(--r-sm);letter-spacing:.02em;transform:skew(-6deg);display:inline-block;font-variant-numeric:tabular-nums}.review-pill.ok{background:var(--commit);color:#000}.review-pill.over{background:var(--bad);color:#fff}.review-pill.under{background:var(--hot);color:#000;animation:hot-wiggle 1.4s ease-in-out infinite}.review-msg{font-size:var(--t-sm);color:var(--muted)}.review-msg strong{color:var(--accent);font-weight:700}.review-stage{overflow:visible}.review-die{--rot: 0deg;position:absolute;aspect-ratio:1;transform:rotate(var(--rot))}.review-die-body{width:100%;height:100%;padding:0;border:3px solid transparent;border-radius:var(--r-md);background:#f5f5f5;cursor:pointer;display:block}.review-die-body svg{width:100%;height:100%;display:block}.review-die-body svg circle{fill:#1a1a1a}.review-die.manual .review-die-body{border-color:var(--hot);box-shadow:0 0 12px #ff3d7f80}.review-die.flagged .review-die-body{border-color:var(--bad);box-shadow:0 0 12px #ef44448c;animation:flagged-pulse 1.2s ease-in-out infinite}@keyframes flagged-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}.review-die-rm{position:absolute;top:-8px;right:-8px;width:22px;height:22px;border-radius:var(--r-circle);border:2px solid var(--bg);background:var(--bad);color:#fff;font-size:16px;font-weight:700;line-height:1;padding:0;cursor:pointer;z-index:1}.review-fallback{display:flex;gap:var(--s-2);flex-wrap:wrap;padding:var(--s-2)}.review-die-flat{position:relative;width:56px;height:56px}.review-die-flat [data-cycle]{width:100%;height:100%;padding:0;border:0;border-radius:var(--r-md);background:#f5f5f5}.review-die-flat [data-rm]{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:var(--r-circle);background:var(--bad);color:#fff;border:2px solid var(--bg);font-size:14px;padding:0}.review-actions{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;gap:var(--s-2);flex:0 0 auto}.review-actions .review-confirm{grid-column:1 / -1;min-height:max(56px,3.5rem);border:none;border-radius:var(--r-lg);background:var(--panel);color:var(--muted);font-size:var(--t-lg);font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer;transition:background .2s ease,color .2s ease}.review-actions .review-confirm.ready{background:var(--commit);color:#000}.review-actions .review-confirm:disabled{cursor:not-allowed}.review-actions .review-add,.review-actions .review-retake{min-height:max(48px,3rem);border-radius:var(--r-md);border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:var(--t-base);font-weight:600;cursor:pointer}.review-actions .review-add.pulsing{background:var(--hot);color:#000;border-color:var(--hot);animation:add-pulse 1.4s ease-in-out infinite}@keyframes add-pulse{0%,to{box-shadow:0 0 #ff3d7f80}50%{box-shadow:0 0 0 8px #ff3d7f00}}.review .hint{padding:8px 16px;text-align:center;font-size:14px}.review .hint.warn{color:var(--bad)}.die-row{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:8px}.die-row .die-mini{width:56px;height:56px;background:transparent;border:none;padding:0}.die-row .die-mini svg{width:100%;height:100%}.die-row .die-mini svg rect{fill:#f5f5f5}.die-row .die-mini svg circle{fill:#1a1a1a}.die-row .row-num{font-size:12px;color:var(--muted);width:24px;text-align:right}.die-row .value{flex:1;font-size:24px;font-weight:700}.die-row [data-action=remove]{background:transparent;border:none;color:var(--muted);font-size:24px;width:36px;height:36px}.diag{padding:8px 16px}.diag summary{font-size:13px;color:var(--accent);cursor:pointer}.overlay-wrap{position:relative;margin-top:8px;border-radius:var(--r-sm);overflow:hidden;background:#000}.overlay-wrap img{width:100%;display:block}.overlay-wrap svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.overlay-wrap svg .det{fill:none;stroke:#ff8a3d;stroke-width:4;vector-effect:non-scaling-stroke}.overlay-wrap svg .det-label{fill:#fff;font:700 32px system-ui;paint-order:stroke;stroke:#000;stroke-width:6;stroke-linejoin:round}.review .actions{display:flex;gap:8px;padding:16px}.review .actions button{flex:1;min-height:48px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:var(--r-md);font-size:16px}.review .actions .primary{background:var(--accent);border-color:var(--accent);color:#000;font-weight:700}.review .actions button:disabled{opacity:.4}.status{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:var(--text);font-size:16px}.status.error .msg{color:var(--bad);padding:0 24px;text-align:center}.status button{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:var(--r-md);padding:12px 24px}.status button.link{background:transparent;border:none;color:var(--muted);text-decoration:underline;padding:8px 12px;font-size:13px}
