:root{color:#e7e1d7;font-synthesis:none;text-rendering:optimizelegibility;--page-background:#131517;--board-background:#191b1d;--surface-background:#202326;--surface-strong:#272a2d;--text-primary:#e7e1d7;--text-muted:#aaa59c;--thread-colour:#d1cbc0;--thread-impact:#fffaf0;--thread-gap:#191b1d;--thread-blocked-flash:#d0977e;--life-active:#e1dbd0;--life-empty-border:#5f6263;--life-empty-fill:#e7e1d708;--starter-cue:#c2bcb2;--border-colour:#e7e1d738;--button-background:#ddd6cb;--button-text:#202224;--overlay-background:#191b1df2;--debug-text:#9d9992;--thread-core-opacity:.82;background:#131517;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}html,body{background:var(--page-background)}body{min-height:100dvh;overflow-x:hidden}button{font:inherit}.app-shell{width:min(100%,31rem);min-height:100dvh;padding:max(.85rem, env(safe-area-inset-top)) .9rem max(.7rem, env(safe-area-inset-bottom));color:var(--text-primary);background:var(--board-background);flex-direction:column;gap:.45rem;margin:0 auto;display:flex}.game-header{z-index:3;flex:none;justify-content:space-between;align-items:center;gap:1rem;min-height:2.5rem;padding:0 .15rem;display:flex;position:relative}.level-label{color:var(--text-primary);letter-spacing:.015em;margin:0;font-size:.98rem;font-weight:540}.lives{align-items:center;gap:.46rem;display:flex}.life{border:1.5px solid var(--life-empty-border);background:var(--life-empty-fill);border-radius:50%;width:.92rem;height:.92rem;display:block}.life--active{border-color:var(--life-active);background:var(--life-active)}.debug-hud{color:var(--debug-text);justify-content:space-between;align-items:center;gap:.75rem;font-size:.66rem;display:flex;position:absolute;top:calc(100% + .15rem);left:.15rem;right:.15rem}.reset-button{border:1px solid var(--border-colour);min-width:44px;min-height:34px;color:var(--text-primary);background:var(--surface-background);cursor:pointer;border-radius:999px;padding:.3rem .75rem}.reset-button:hover,.reset-button:focus-visible{border-color:var(--text-muted);outline:none}.board-frame{flex:auto;place-items:center;min-height:0;display:grid;position:relative;overflow:hidden}.level-one-instruction{z-index:1;width:min(24rem,100% - 1rem);color:var(--text-primary);text-align:center;pointer-events:none;position:absolute;top:.2rem;left:50%;transform:translate(-50%)}.level-one-instruction p{letter-spacing:.008em;margin:0;font-size:clamp(.83rem,3.3vw,.96rem);font-weight:520;line-height:1.35}.level-one-instruction p+p{color:var(--text-muted);margin-top:.18rem;font-size:clamp(.68rem,2.7vw,.76rem);font-weight:430}.puzzle-board{width:100%;height:100%;max-height:calc(100dvh - 4.7rem);display:block;overflow:visible}.connection,.underpass,.underpass-mask{pointer-events:none;shape-rendering:geometricprecision}.connection--converging{transform-box:fill-box;transform-origin:50%;animation:.36s linear forwards successful-thread}.connection--impact,.token-motion--impact{opacity:0}.token{cursor:pointer;outline:none}.token--disabled{pointer-events:none}.token-motion{transform-box:fill-box;transform-origin:50%}.token-motion--converging{animation:.36s linear forwards successful-token}.token-motion--blocked{animation:.36s ease-out token-blocked-bounce}.token-hit-area{fill:#0000;stroke:#0000}.token-glyph{shape-rendering:geometricprecision}.underpass--flashing{animation:.36s ease-out underpass-flash}.healing-dashes{animation:.18s ease-out forwards healing-dashes}.healing-solid{filter:drop-shadow(0 0 4px var(--thread-impact));animation:.18s ease-out forwards healing-sweep}.thread-impact{pointer-events:none;filter:drop-shadow(0 0 5px var(--thread-impact))}.thread-impact__ring{fill:none;stroke:var(--thread-impact);stroke-width:3px;transform-box:fill-box;transform-origin:50%;animation:.18s ease-out forwards impact-ring}.thread-impact__core{fill:var(--thread-impact);animation:.18s ease-out forwards impact-core}.starter-cue{fill:none;stroke:var(--starter-cue);stroke-width:2px;vector-effect:non-scaling-stroke;pointer-events:none;transform-box:fill-box;transform-origin:50%;animation:1.8s ease-in-out infinite starter-cue-breathe}.result-card{z-index:2;border:1px solid var(--border-colour);width:min(17rem,100% - 2rem);color:var(--text-primary);background:var(--overlay-background);text-align:center;border-radius:.7rem;padding:1.25rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 .8rem 2.2rem #0000002e}.result-card>.result-title{letter-spacing:.01em;margin:0 0 .9rem;font-size:1.3rem;font-weight:560}.result-card button,.test-session button{border:1px solid var(--border-colour);min-height:44px;color:var(--button-text);background:var(--button-background);cursor:pointer;border-radius:999px;padding:.55rem 1rem}.result-actions{justify-content:center;gap:.55rem;display:flex}.result-actions--stacked{flex-direction:column;align-items:stretch}.mock-ad-state,.result-message,.interstitial-debug,.result-debug-summary{color:var(--text-muted);margin:.75rem 0 0;font-size:.7rem;line-height:1.4}.result-card .result-button--secondary{color:var(--text-primary);background:0 0}.mock-interstitial-overlay{z-index:100;color:var(--text-primary);background:var(--board-background);text-align:center;place-items:center;padding:2rem;display:grid;position:fixed;inset:0}.mock-interstitial-overlay p{letter-spacing:.035em;margin:0;font-size:clamp(1.4rem,6vw,2rem);font-weight:520}.game-footer{min-height:2.5rem;color:var(--debug-text);flex:none;justify-content:space-between;align-items:flex-end;gap:1rem;font-size:.72rem;display:flex}.game-footer p{max-width:58%;margin:0;line-height:1.35}.debug-stats{text-align:right;justify-items:end;gap:.15rem;display:grid}.debug-stats span{font-variant-numeric:tabular-nums}.debug-stats .attempt-metrics{font-size:.62rem}.test-session{border:1px solid var(--border-colour);color:var(--debug-text);background:var(--surface-background);border-radius:.55rem;flex:none;padding:.55rem .7rem;font-size:.68rem}.test-session summary{min-height:28px;color:var(--text-primary);cursor:pointer}.test-session pre{white-space:pre-wrap;word-break:break-word;max-height:9rem;margin:.5rem 0;overflow:auto}.test-session p{margin:.4rem 0 0}@keyframes successful-token{0%{opacity:1;filter:brightness();transform:translate(0)scale(1)}18%{opacity:1;filter:brightness(1.35);transform:translate(0)scale(1.12)}28%{opacity:1;filter:brightness(1.12);animation-timing-function:cubic-bezier(.72,0,1,.55);transform:translate(0)scale(1.03)}to{transform:translate(var(--move-x), var(--move-y)) scale(1.26);opacity:.25;filter:brightness(1.8)}}@keyframes successful-thread{0%{opacity:.82;stroke-width:4px;transform:scale(1)}18%{opacity:1;stroke-width:6px;filter:brightness(1.25);transform:scale(1)}30%{opacity:.92;stroke-width:4px;animation-timing-function:cubic-bezier(.72,0,1,.55);transform:scale(1)}to{opacity:.12;stroke-width:3px;filter:brightness(1.5);transform:scale(0)}}@keyframes token-blocked-bounce{0%,to{transform:translate(0)}38%{transform:translate(var(--nudge-x), var(--nudge-y))}65%{transform:translate(calc(var(--nudge-x) * -.22), calc(var(--nudge-y) * -.22))}}@keyframes starter-cue-breathe{0%,to{opacity:.34;transform:scale(.96)}50%{opacity:.72;transform:scale(1.04)}}@keyframes impact-ring{0%{opacity:1;transform:scale(.35)}to{opacity:0;transform:scale(3.2)}}@keyframes impact-core{0%{opacity:1;r:5}55%{opacity:.9;r:9}to{opacity:0;r:2}}@keyframes healing-dashes{0%{opacity:1}to{opacity:0}}@keyframes healing-sweep{0%{stroke-dashoffset:50px;opacity:.4}55%{opacity:1;stroke-width:7px}to{stroke-dashoffset:0;opacity:1;stroke-width:4px}}@keyframes underpass-flash{0%,to{stroke-width:4px;opacity:1}45%{stroke:var(--thread-blocked-flash);stroke-width:8px;opacity:.65}}@media (width>=42rem){.app-shell{padding-inline:1.35rem}}@media (height<=42rem){.app-shell{padding-top:max(.55rem, env(safe-area-inset-top));padding-bottom:max(.45rem, env(safe-area-inset-bottom));gap:.2rem}.game-header{min-height:2.1rem}.puzzle-board{max-height:calc(100dvh - 3.6rem)}.level-one-instruction{top:0}}@media (prefers-reduced-motion:no-preference){.token,.reset-button{transition:opacity .16s,border-color .16s}}@media (prefers-reduced-motion:reduce){.starter-cue{opacity:.5;animation:none}}
