:root{--font-display:"Fraunces", Georgia, serif;--font-ui:"Instrument Sans", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--font-type:var(--font-mono);--type-size:28px;--radius:10px;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-spring:cubic-bezier(.2, 1.5, .4, 1);--grain-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.1  0 0 0 0 0.08  0 0 0 0 0.05  0 0 0 .55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--bg);min-height:100vh;color:var(--ink);font:400 15px/1.55 var(--font-ui);-webkit-font-smoothing:antialiased;transition:background-color .5s var(--ease-out), color .5s var(--ease-out);margin:0}body:before{content:"";z-index:1000;pointer-events:none;background-image:var(--grain-image);opacity:calc(var(--grain) * .45);mix-blend-mode:multiply;position:fixed;inset:0}[data-theme=encre] body:before,[data-theme=nuit] body:before,[data-theme=phosphore] body:before{mix-blend-mode:screen;filter:invert()}::selection{background:var(--accent);color:var(--bg)}h1,h2,h3,p{margin:0}a{color:inherit}button,input,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.muted{color:var(--soft)}.eyebrow{font:600 11px/1 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--soft)}.link{color:var(--accent);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline;text-decoration-thickness:1px}.link:hover{text-decoration-thickness:2px}.key-btn{border:1px solid var(--line);background:var(--card);color:var(--ink);font:600 13px/1.2 var(--font-ui);cursor:pointer;box-shadow:0 3px 0 var(--line);border-radius:9px;align-items:center;gap:8px;padding:9px 16px;text-decoration:none;transition:transform 80ms,box-shadow 80ms,background-color .2s;display:inline-flex}.key-btn:hover{background:color-mix(in oklab, var(--card), var(--ink) 5%)}.key-btn:active{box-shadow:0 0 0 var(--line);transform:translateY(3px)}.key-btn--primary{background:var(--ink);color:var(--bg);border-color:var(--ink);box-shadow:0 3px 0 color-mix(in oklab, var(--ink), var(--accent) 45%)}.key-btn--primary:hover{background:color-mix(in oklab, var(--ink), var(--accent) 20%)}.key-btn--primary .kbd{color:var(--bg);border-color:color-mix(in oklab, var(--bg), transparent 55%);background:0 0}.key-btn--danger{color:var(--error)}.kbd{border:1px solid var(--line);background:var(--card);min-width:1.8em;color:var(--soft);font:500 11px/1.4 var(--font-mono);text-align:center;border-bottom-width:2px;border-radius:5px;padding:1px 6px 2px;display:inline-block}.chip{color:var(--soft);font:500 13px/1.2 var(--font-ui);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:999px;padding:5px 11px;transition:color .15s,background-color .15s,border-color .15s}.chip:hover{color:var(--ink)}.chip.is-active{background:var(--ink);color:var(--bg)}.segmented{border:1px solid var(--line);background:var(--card);border-radius:999px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.switch{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:999px;width:46px;height:26px;padding:0;transition:background-color .2s;position:relative}.switch-knob{background:var(--ghost);width:18px;height:18px;transition:transform .25s var(--ease-spring), background-color .2s;border-radius:50%;position:absolute;top:3px;left:3px}.switch[aria-checked=true]{background:var(--ink);border-color:var(--ink)}.switch[aria-checked=true] .switch-knob{background:var(--accent);transform:translate(20px)}.range-wrap{align-items:center;gap:12px;display:flex}.range{width:min(260px,50vw);accent-color:var(--accent)}.range-value{min-width:7ch;font:500 13px var(--font-mono);color:var(--soft)}.textarea{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);width:100%;font:15px/1.6 var(--font-type);resize:vertical;padding:14px 16px}.row-actions{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.toasts{z-index:900;gap:8px;display:grid;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{background:var(--ink);color:var(--bg);animation:toast-in .3s var(--ease-spring);border-radius:8px;padding:10px 18px;font-weight:500;box-shadow:0 10px 30px -10px #0006}.toast--out{animation:.25s forwards toast-out}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)scale(.96)}}@keyframes toast-out{to{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.app{grid-template-rows:auto 1fr auto;width:min(1180px,100%);min-height:100vh;margin:0 auto;padding:26px clamp(16px,4vw,44px) 20px;display:grid}.masthead{border-bottom:1px solid var(--line);transition:opacity .4s var(--ease-out);align-items:center;gap:28px;padding-bottom:18px;display:flex}.brand{align-items:baseline;gap:10px;text-decoration:none;display:flex}.brand-mark{background:var(--accent);width:14px;height:14px;box-shadow:3px 3px 0 var(--ink);border-radius:3px;align-self:center;transform:rotate(8deg)}.brand-name{font:italic 800 34px/1 var(--font-display);font-variation-settings:"opsz" 144, "SOFT" 100;letter-spacing:-.02em}.brand-tag{font:500 12px var(--font-ui);letter-spacing:.08em;color:var(--soft);font-variant:small-caps}.masthead-nav{gap:4px;margin-left:auto;display:flex}.nav-link{color:var(--soft);border-radius:8px;align-items:baseline;gap:6px;padding:8px 12px;font-weight:600;text-decoration:none;transition:color .15s,background-color .15s;display:flex}.nav-link:hover{color:var(--ink)}.nav-link.is-active{color:var(--ink);background:var(--card);box-shadow:inset 0 -2px 0 var(--accent)}.nav-index{font:500 10px var(--font-mono);color:var(--accent)}.goal{color:var(--soft);align-items:center;gap:10px;text-decoration:none;display:flex}.ring{transform:rotate(-90deg)}.ring-track,.ring-progress{fill:none;stroke-width:4px}.ring-track{stroke:var(--line)}.ring-progress{stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset .8s var(--ease-out)}.goal.is-done .ring-progress{stroke:var(--ok)}.goal-text{line-height:1.2;display:grid}.goal-label{font:600 13px var(--font-mono);color:var(--ink)}.streak{font-size:12px}.main{padding:28px 0 40px}.colophon{border-top:1px solid var(--line);color:var(--soft);transition:opacity .4s var(--ease-out);flex-wrap:wrap;justify-content:space-between;gap:12px;padding-top:16px;font-size:12px;display:flex}.colophon-mark{font-style:italic;font-family:var(--font-display)}body.is-typing .masthead,body.is-typing .colophon,body.is-typing .config-slot,body.is-typing .stage-foot{opacity:0;pointer-events:none}body.is-typing{cursor:none}.palette-backdrop{z-index:800;background:color-mix(in oklab, var(--bg), transparent 30%);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);place-items:start center;padding-top:12vh;animation:.15s fade-in;display:grid;position:fixed;inset:0}.palette{border:1px solid var(--line);background:var(--card);width:min(620px,100vw - 32px);box-shadow:0 30px 80px -30px #00000080, 0 4px 0 var(--line);animation:pop-in .2s var(--ease-spring);border-radius:14px;overflow:hidden}.palette-input{border:0;border-bottom:1px solid var(--line);width:100%;font:500 17px var(--font-ui);background:0 0;outline:none;padding:18px 20px}.palette-list{max-height:50vh;margin:0;padding:6px;list-style:none;overflow-y:auto}.palette-item{cursor:pointer;border-radius:8px;align-items:baseline;gap:12px;padding:9px 14px;display:flex}.palette-item.is-selected{background:var(--ink);color:var(--bg)}.palette-group{min-width:118px;font:500 11px var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--soft)}.palette-item.is-selected .palette-group{color:color-mix(in oklab, var(--bg), transparent 35%)}.palette-check{color:var(--accent);margin-left:auto;font-size:10px}.palette-empty{color:var(--soft);padding:14px}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(-8px)scale(.98)}}@media (width<=820px){.masthead{flex-wrap:wrap;gap:14px}.brand-tag,.nav-index{display:none}.masthead-nav{order:3;width:100%;margin-left:0;overflow-x:auto}.goal{margin-left:auto}}.test-view{gap:8px;display:grid}.config-slot{transition:opacity .4s var(--ease-out)}.config-bar{border:1px solid var(--line);background:var(--card);width:fit-content;max-width:100%;box-shadow:0 3px 0 var(--line);border-radius:16px;flex-wrap:wrap;justify-content:center;gap:8px 10px;margin:0 auto;padding:6px;display:flex}.config-group{flex-wrap:wrap;align-items:center;gap:2px;display:flex}.config-group+.config-group{border-left:1px dashed var(--line);padding-left:10px}.config-group--variants .chip.is-active,.config-group--language .chip.is-active{color:var(--accent);border-color:var(--accent);background:0 0}.stage{margin-top:44px;position:relative}.stage-head{align-items:flex-end;gap:26px;min-height:62px;margin-bottom:14px;display:flex}.counter{color:#0000;min-width:2ch;font:800 62px/.85 var(--font-display);font-variation-settings:"opsz" 144;font-variant-numeric:tabular-nums;-webkit-text-stroke:1.5px var(--accent);transition:color .3s}.counter.is-urgent{color:var(--accent);animation:1s ease-in-out infinite urgent}@keyframes urgent{50%{transform:translateY(-2px)rotate(-2deg)}}.live{gap:22px;padding-bottom:4px;display:flex}.live-item{font:500 11px var(--font-ui);letter-spacing:.08em;color:var(--soft);font-variant:small-caps;display:grid}.live-item strong{font:600 22px/1.1 var(--font-mono);letter-spacing:0;color:var(--ink)}.source-label{color:var(--soft);font:italic 400 16px var(--font-display);text-align:right;margin-left:auto;padding-bottom:6px}.stage[data-live=off] .counter,.stage[data-live=off] .live{visibility:hidden}.stage[data-live=minimal] .live{display:none}.ribbon{background:var(--line);border-radius:2px;height:2px;margin-bottom:28px;overflow:hidden}.ribbon-fill{background:var(--accent);transform-origin:0;height:100%;transform:scaleX(0)}.words-wrap{cursor:text;position:relative}.words{--line-step:1.75em;height:calc(3 * var(--line-step) - .25em);font:400 var(--type-size) / 1 var(--font-type);-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.words-track{transition:transform .28s var(--ease-out);flex-wrap:wrap;align-content:flex-start;display:flex;position:relative}.word{white-space:nowrap;height:1.5em;margin:0 .32em .25em 0;line-height:1.5em}.word:empty{min-width:.5em}.word--error{-webkit-text-decoration:underline wavy var(--error);text-decoration:underline wavy var(--error);text-underline-offset:.32em;text-decoration-thickness:1.5px}.l{color:var(--ghost);transition:color .1s}.l.ok{color:var(--ink);animation:.4s ease-out ink-dry}.l.ko{color:var(--error)}.l.extra{color:var(--extra);opacity:.75}@keyframes ink-dry{0%{color:var(--accent)}}.words--blind .l.ko,.words--blind .l.extra{color:var(--ink);opacity:1}.words--blind .word--error{text-decoration:none}.caret{z-index:2;width:3px;height:var(--letter-h,1.2em);background:var(--caret);pointer-events:none;transform:translate(calc(var(--caret-x,0px) - 1px), var(--caret-y,0px));border-radius:2px;position:absolute;top:0;left:0}.words--smooth .caret{transition:transform 90ms linear}.caret--idle{animation:1.1s ease-in-out infinite caret-blink}@keyframes caret-blink{50%{opacity:.1}}.words[data-caret=block] .caret:not(.caret--pace){opacity:.28;border-radius:3px;width:.62em}.words[data-caret=underline] .caret:not(.caret--pace){width:.62em;height:3px;transform:translate(var(--caret-x,0px), calc(var(--caret-y,0px) + var(--letter-h,1.2em) - 1px))}.caret--pace{background:var(--soft);opacity:.5;width:2px;transition:transform .12s linear}.words--carriage{height:1.5em;-webkit-mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000);mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000)}.words--carriage .words-track{flex-wrap:nowrap;transition:transform .12s linear}.focus-veil{z-index:5;background:color-mix(in oklab, var(--bg), transparent 22%);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--ink);font:italic 500 19px var(--font-display);cursor:pointer;border:0;border-radius:14px;place-items:center;animation:.25s fade-in;display:grid;position:absolute;inset:-14px}.type-input{opacity:0;pointer-events:none;border:0;width:1px;height:1px;padding:0;position:absolute;top:0;left:0}.stage-foot{transition:opacity .4s var(--ease-out);flex-direction:column;align-items:center;gap:14px;margin-top:34px;display:flex}.restart-btn{border:1px solid var(--line);background:var(--card);width:46px;height:46px;color:var(--soft);cursor:pointer;box-shadow:0 3px 0 var(--line);transition:transform .3s var(--ease-spring), color .15s;border-radius:50%;font-size:20px}.restart-btn:hover{color:var(--accent);transform:rotate(-120deg)}.hint{color:var(--soft);word-spacing:2px;font-size:12px}.keyboard-slot{margin-top:36px}.keyboard{--key:min(44px, 6.6vw);font-family:var(--font-mono);-webkit-user-select:none;user-select:none;justify-content:center;gap:6px;display:grid}.kb-row{transform:translateX(calc(var(--row) * var(--key) * .22));justify-content:center;gap:6px;display:flex}.kb-row:last-child{transform:none}.kb-key{width:calc(var(--key) * var(--w,1) + 6px * (var(--w,1) - 1));height:var(--key);border:1px solid var(--line);background:var(--card);color:var(--soft);box-shadow:0 3px 0 var(--line);border-radius:8px;place-items:center;font-size:13px;transition:background-color .2s,color .2s;display:grid;position:relative}.kb-shift{opacity:.6;font-size:9px;position:absolute;top:2px;left:6px}.keyboard--live .kb-key.is-next{border-color:var(--ink);background:var(--ink);color:var(--bg)}.kb-key.is-hit{animation:.18s key-press}.kb-key.is-miss{animation:.35s key-miss}@keyframes key-press{40%{box-shadow:0 0 0 var(--line);transform:translateY(3px)}}@keyframes key-miss{30%{background:var(--error);color:var(--bg);transform:translateY(3px)}}.keyboard--heatmap .kb-key{background:color-mix(in oklab, var(--accent) calc(var(--heat,0) * 90%), var(--card));color:var(--ink);cursor:help}.keyboard--heatmap .kb-key.is-unused{opacity:.4}@media (width<=640px){.stage-head{flex-wrap:wrap;gap:14px}.counter{font-size:46px}.source-label{text-align:left;width:100%;margin-left:0}.config-group+.config-group{border-left:0;padding-left:0}}.results-slot:empty{display:none}.fiche{border:1px solid var(--line);background:var(--card);box-shadow:0 1px 0 var(--line), 0 24px 50px -30px #00000059;animation:print-out .7s var(--ease-out);border-radius:4px 4px 12px 12px;gap:34px;margin-top:36px;padding:38px clamp(18px,4vw,44px) 30px;display:grid;position:relative}.fiche:before{content:"";background:radial-gradient(circle at 7px -1px, var(--bg) 5px, transparent 5.5px) 0 0 / 22px 10px repeat-x;height:10px;position:absolute;top:-1px;left:14px;right:14px}@keyframes print-out{0%{clip-path:inset(0 0 100%);transform:translateY(-24px)}to{clip-path:inset(0 0 -10%)}}.fiche-head{border-bottom:1px dashed var(--line);font:500 12px var(--font-mono);color:var(--soft);flex-wrap:wrap;align-items:baseline;gap:8px 20px;padding-bottom:14px;display:flex}.fiche-number{color:var(--accent);font-weight:600}.fiche-head time{margin-left:auto}.fiche-main{grid-template-columns:minmax(240px,.9fr) 1.6fr;align-items:center;gap:40px;display:grid}.hero{gap:4px;display:grid;position:relative}.hero-value{font:800 clamp(96px, 14vw, 150px) / .85 var(--font-display);font-variation-settings:"opsz" 144, "SOFT" 50;letter-spacing:-.04em;color:var(--ink);font-variant-numeric:tabular-nums;animation:count-in .6s var(--ease-spring) both .2s}@keyframes count-in{0%{opacity:0;transform:translateY(18px)}}.hero-hint{font:italic 15px var(--font-display);color:var(--soft)}.hero-delta{width:fit-content;font:600 12px var(--font-mono);border-radius:6px;margin-top:6px;padding:2px 8px}.hero-delta.is-up{background:color-mix(in oklab, var(--ok), transparent 82%);color:var(--ok)}.hero-delta.is-down{background:color-mix(in oklab, var(--error), transparent 86%);color:var(--error)}.stamp{border:3px solid var(--accent);color:var(--accent);font:italic 900 22px var(--font-display);letter-spacing:.12em;text-transform:uppercase;opacity:.9;animation:stamp .45s var(--ease-spring) both .6s;border-radius:6px;padding:4px 14px 6px;position:absolute;top:-6px;right:0;transform:rotate(-9deg)}.stamp--fail{border-color:var(--error);color:var(--error)}@keyframes stamp{0%{opacity:0;transform:rotate(-9deg)scale(2.4)}}.stat-grid{border:1px solid var(--line);border-radius:var(--radius);background:var(--line);grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:1px;display:grid;overflow:hidden}.stat-cell{background:var(--card);gap:2px;padding:14px 16px;display:grid}.stat-label{font:600 11px var(--font-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}.stat-value{font:600 24px/1.2 var(--font-mono);font-variant-numeric:tabular-nums}.stat-cell--metric .stat-value{color:var(--accent)}.section-title{font:italic 600 21px var(--font-display);margin-bottom:14px}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:16px;display:flex}.section-head .section-title{margin:0}.chart{width:100%;min-height:60px;position:relative}.chart-svg{max-width:100%;display:block;overflow:visible}.chart-grid{stroke:var(--line);stroke-dasharray:2 4}.chart-label{fill:var(--soft);font:500 10px var(--font-mono)}.chart-line{fill:none;stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.chart-line.serie-main{stroke:var(--ink);stroke-dasharray:3000;animation:draw-line 1.4s var(--ease-out) both}.chart-line.serie-raw{stroke:var(--ghost);stroke-width:1.5px;stroke-dasharray:4 4}.chart-line.serie-avg{stroke:var(--accent);stroke-width:2px}.chart-area{fill:color-mix(in oklab, var(--ink), transparent 92%);stroke:none}.chart-error{stroke:var(--error);stroke-width:2px;stroke-linecap:round}.chart-guide{stroke:var(--soft);stroke-dasharray:2 3}@keyframes draw-line{0%{stroke-dashoffset:3000px}to{stroke-dashoffset:0}}.chart-tip{background:var(--ink);color:var(--bg);font:500 12px var(--font-mono);pointer-events:none;white-space:nowrap;border-radius:8px;gap:2px;padding:8px 12px;display:grid;position:absolute;top:0;left:0}.chart-tip .is-error{color:color-mix(in oklab, var(--error), var(--bg) 30%)}.fiche-columns{grid-template-columns:1fr 1.2fr;gap:40px;display:grid}.reading{align-content:start;gap:12px;display:grid}.reading-bars{gap:8px;display:grid}.reading-row{grid-template-columns:110px 1fr 44px;align-items:center;gap:12px;font-size:13px;display:grid}.reading-bar{background:var(--line);border-radius:5px;height:10px;overflow:hidden}.reading-fill{height:100%;width:calc(var(--fill) * 100%);border-radius:inherit;background:var(--ghost);animation:grow .9s var(--ease-out) both .3s;transform-origin:0;display:block}.reading-row--weighted .reading-fill{background:var(--accent)}.reading-row--weighted{font-weight:700}.reading-value{font:600 14px var(--font-mono);text-align:right}@keyframes grow{0%{transform:scaleX(0)}}.reading-facts{grid-template-columns:auto 1fr;gap:4px 16px;margin:4px 0 0;font-size:13px;display:grid}.reading-facts dt{color:var(--soft)}.reading-facts dd{font-family:var(--font-mono);margin:0}.reading-insight{border-left:3px solid var(--accent);font:italic 15px/1.5 var(--font-display);padding-left:12px}.weak-keys{color:var(--soft);flex-wrap:wrap;align-items:center;gap:6px;margin-top:18px;font-size:13px;display:flex}.key-chip{border:1px solid var(--accent);min-width:26px;height:26px;color:var(--accent);font:600 14px var(--font-mono);border-radius:6px;place-items:center;padding:0 6px;display:inline-grid}.replay{border:1px dashed var(--line);border-radius:var(--radius);gap:14px;padding:20px;display:grid}.replay-head{align-items:center;gap:12px;display:flex}.replay-clock{font:600 14px var(--font-mono);margin-left:auto}.replay .words{font-size:calc(var(--type-size) * .8)}.replay-progress{background:var(--line);height:2px}.replay-progress-fill{background:var(--accent);width:0;height:100%}.fiche-actions{border-top:1px dashed var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding-top:20px;display:flex}.fiche-note{color:var(--soft);margin-left:auto;font-size:13px}@media (width<=860px){.fiche-main,.fiche-columns{grid-template-columns:1fr}}.page{gap:40px;animation:.35s fade-in;display:grid}.page-head{gap:10px;padding-bottom:8px;display:grid}.page-title{font:300 clamp(48px, 8vw, 84px) / .95 var(--font-display);font-variation-settings:"opsz" 144;letter-spacing:-.03em}.page-title em{color:var(--accent);font-style:italic;font-weight:800}.page-lede{max-width:60ch;font:italic 19px/1.45 var(--font-display);color:var(--soft)}.page-section{gap:18px;display:grid}.page-section-title{border-bottom:1px solid var(--line);font:600 26px var(--font-display);align-items:baseline;gap:12px;padding-bottom:10px;display:flex}.section-index{font:500 13px var(--font-mono);color:var(--accent)}.kpis{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;display:grid}.kpi{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:0 3px 0 var(--line);align-content:start;gap:4px;padding:16px 18px;display:grid}.kpi-label{font:600 11px var(--font-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}.kpi-value{font:700 34px/1.1 var(--font-display);font-variant-numeric:tabular-nums}.kpi-detail{color:var(--soft);font-size:12px}.goal-bar{gap:10px;display:grid}.goal-track{background:var(--line);border-radius:4px;height:8px;overflow:hidden}.goal-fill{width:calc(var(--fill) * 100%);background:var(--accent);height:100%;animation:grow .9s var(--ease-out) both;transform-origin:0;display:block}.calendar-wrap{gap:10px;display:grid;overflow-x:auto}.calendar{gap:4px;display:flex}.calendar-week{gap:4px;display:grid}.calendar-day{background:var(--line);border-radius:4px;width:16px;height:16px;display:inline-block}.calendar-day.level-1{background:color-mix(in oklab, var(--accent) 30%, var(--card))}.calendar-day.level-2{background:color-mix(in oklab, var(--accent) 55%, var(--card))}.calendar-day.level-3{background:color-mix(in oklab, var(--accent) 80%, var(--card))}.calendar-day.level-4{background:var(--accent)}.calendar-day.is-today{outline:2px solid var(--ink);outline-offset:1px}.calendar-day.is-future{opacity:.25}.calendar-legend{color:var(--soft);align-items:center;gap:4px;font-size:12px;display:flex}.badges{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;display:grid}.badge{border:2px dashed var(--line);border-radius:var(--radius);color:var(--soft);opacity:.7;gap:4px;padding:14px 16px;display:grid}.badge.is-unlocked{border-style:solid;border-color:var(--accent);color:var(--ink);opacity:1;transform:rotate(-.6deg)}.badge.is-unlocked:nth-child(2n){transform:rotate(.8deg)}.badge-title{font:italic 700 18px var(--font-display)}.badge.is-unlocked .badge-title{color:var(--accent)}.badge-desc{font-size:13px}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:13px}.table th,.table td{text-align:left;white-space:nowrap;padding:10px 14px}.table th{border-bottom:1px solid var(--line);font:600 11px var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--soft)}.table td{border-bottom:1px dashed var(--line);font-family:var(--font-mono)}.table tr:last-child td{border-bottom:0}.table td:nth-child(2){font-family:var(--font-ui)}.empty{border:2px dashed var(--line);border-radius:16px;justify-items:start;gap:12px;padding:40px;display:grid}.empty-title{font:italic 600 30px var(--font-display)}.settings-group{gap:4px;scroll-margin-top:20px;display:grid}.setting{border-bottom:1px dashed var(--line);grid-template-columns:minmax(200px,1fr) minmax(0,1.6fr);align-items:center;gap:24px;padding:16px 0;display:grid}.setting h3{font:600 15px var(--font-ui)}.setting p{color:var(--soft);font-size:13px}.setting-control{justify-content:flex-end;display:flex}.theme-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;width:100%;display:grid}.theme-swatch{border:1px solid var(--line);background:var(--card);cursor:pointer;transition:transform .2s var(--ease-spring);border-radius:10px;gap:6px;padding:6px 6px 8px;display:grid}.theme-swatch:hover{transform:translateY(-2px)}.theme-swatch.is-active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.theme-sample{background:var(--sw-bg);height:46px;font:600 18px var(--font-mono);border-radius:6px;align-items:center;gap:2px;padding:0 10px;display:flex}.sw-ink{color:var(--sw-ink)}.sw-ghost{color:var(--sw-ghost)}.sw-caret{background:var(--sw-accent);width:2px;height:20px;margin-left:2px}.theme-name{font-size:12px;font-weight:600}.custom-text{width:100%}.definitions{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}.definition{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);align-content:start;gap:12px;padding:22px;display:grid}.definition h3{font:600 18px var(--font-ui)}.definition-term{font:italic 800 26px var(--font-display);color:var(--accent)}.definition p{line-height:1.6}.formula{border-left:3px solid var(--ink);background:var(--bg);font:500 14px var(--font-mono);padding:10px 14px}.cost-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.cost{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);grid-template-columns:auto 1fr;align-items:baseline;gap:2px 12px;padding:12px 14px;display:grid}.cost-char{font:600 30px var(--font-mono);grid-row:span 2}.cost-value{font:700 16px var(--font-mono);color:var(--accent)}.cost-label{color:var(--soft);font-size:12px}.simulator p{max-width:75ch}.sim-controls{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.sim-output{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);gap:16px;padding:24px;display:grid}.sim-legend{flex-wrap:wrap;gap:18px;font-size:13px;display:flex}.sim-key:before{content:"";background:currentColor;border-radius:2px;width:14px;height:8px;margin-right:6px;display:inline-block}.sim-key.sim-common{color:var(--ink)}.sim-key.sim-long{color:var(--accent)}.sim-row{grid-template-columns:130px 1fr 120px;align-items:center;gap:16px;display:grid}.sim-label{font-weight:700}.sim-bars{gap:6px;display:grid}.sim-track{background:var(--line);border-radius:6px;height:12px;position:relative}.sim-range{opacity:.55;transition:left .3s var(--ease-out), width .3s var(--ease-out);border-radius:6px;position:absolute;top:0;bottom:0}.sim-mean{width:3px;transition:left .3s var(--ease-out);border-radius:2px;position:absolute;top:-3px;bottom:-3px;transform:translate(-1px)}.sim-common .sim-range,.sim-common .sim-mean{background:var(--ink)}.sim-long .sim-range,.sim-long .sim-mean{background:var(--accent)}.sim-values{font:600 14px var(--font-mono);text-align:right;display:grid}.sim-values small{font:500 11px var(--font-ui);color:var(--soft)}.note ul{gap:10px;max-width:80ch;margin:0;padding-left:20px;line-height:1.6;display:grid}@media (width<=720px){.setting{grid-template-columns:1fr;gap:10px}.setting-control{justify-content:flex-start}.sim-row{grid-template-columns:1fr;gap:6px}.sim-values{text-align:left}}.fx-canvas{z-index:960;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}.fx-shake-small{animation:.28s shake-small}.fx-shake-big{animation:.45s shake-big}@keyframes shake-small{25%{transform:translate(-3px)}50%{transform:translate(3px)}75%{transform:translate(-2px)}}@keyframes shake-big{15%{transform:translate(-10px,4px)rotate(-.6deg)}30%{transform:translate(9px,-5px)rotate(.5deg)}45%{transform:translate(-7px,3px)}60%{transform:translate(6px,-2px)}80%{transform:translate(-3px,1px)}}.fx-flash{z-index:955;pointer-events:none;animation:.45s ease-out forwards flash;position:fixed;inset:0}.fx-flash--accent{background:radial-gradient(circle, transparent 30%, color-mix(in oklab, var(--accent), transparent 55%))}.fx-flash--error{background:radial-gradient(circle, transparent 35%, color-mix(in oklab, var(--error), transparent 45%))}.fx-flash--ok{background:radial-gradient(circle, transparent 35%, color-mix(in oklab, var(--ok), transparent 55%))}@keyframes flash{to{opacity:0}}.fx-banner{z-index:970;text-align:center;pointer-events:none;animation:1.7s forwards banner-out;position:fixed;top:30%;left:50%;transform:translate(-50%,-50%)}.fx-banner-text{color:var(--accent);font:italic 900 clamp(40px, 8vw, 96px) / 1 var(--font-display);letter-spacing:-.02em;text-shadow:4px 4px 0 var(--ink);white-space:nowrap}.fx-banner--error .fx-banner-text{color:var(--error)}.fx-banner--ok .fx-banner-text{color:var(--ok)}.fx-banner-letter{animation:letter-drop .5s var(--ease-spring) both;animation-delay:calc(var(--i) * 35ms);display:inline-block}.fx-banner-sub{color:var(--ink);font:600 14px var(--font-mono);letter-spacing:.2em;text-transform:uppercase;margin-top:12px}@keyframes letter-drop{0%{opacity:0;transform:translateY(-60px)rotate(-20deg)scale(1.6)}}@keyframes banner-out{0%,75%{opacity:1}to{opacity:0;transform:translate(-50%,-65%)}}.combo{padding-bottom:4px;line-height:1;display:grid}.combo strong{color:var(--accent);font:italic 800 34px var(--font-display);font-variant-numeric:tabular-nums}.combo small{color:var(--soft);font:600 10px var(--font-ui);letter-spacing:.16em;text-transform:uppercase}.combo.is-milestone{animation:combo-pop .5s var(--ease-spring)}@keyframes combo-pop{40%{transform:scale(1.5)rotate(-6deg)}}.stage[data-fx=dechaine] .combo:not([data-heat="0"]) strong{background:linear-gradient(#fff59d,#ffb300 45%,#ff3d00) 0 0/100% 200%;color:#0000;filter:drop-shadow(0 0 6px #ff6d00);-webkit-background-clip:text;background-clip:text;animation:.5s ease-in-out infinite alternate flame}.stage[data-fx=dechaine] .combo[data-heat="3"],.stage[data-fx=dechaine] .combo[data-heat="4"],.stage[data-fx=dechaine] .combo[data-heat="5"]{animation:.12s linear infinite tremble}@keyframes flame{0%{background-position:0 0}to{background-position:0 100%}}@keyframes tremble{50%{transform:translate(1px,-1px)rotate(1deg)}}.race{gap:6px;margin-bottom:20px;display:grid}.race-lane{grid-template-columns:120px 1fr;align-items:center;gap:10px;font-size:12px;display:grid}.race-name{color:var(--soft);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.race-name small{font-family:var(--font-mono)}.race-track{border-bottom:1px dashed var(--line);height:24px;position:relative}.race-runner{bottom:2px;left:calc(var(--pos) * (100% - 40px));border:1px solid var(--line);background:var(--card);width:22px;height:22px;font:700 11px var(--font-mono);border-radius:50%;place-items:center;transition:left .2s linear;display:grid;position:absolute}.race-lane--you .race-name{color:var(--ink);font-weight:700}.race-lane--you .race-runner{border-color:var(--accent);background:var(--accent);color:var(--bg);box-shadow:0 0 0 4px color-mix(in oklab, var(--accent), transparent 80%)}.race-flag{color:var(--soft);position:absolute;bottom:2px;right:0}.words--memory:not(.is-preview) .l:not(.ok):not(.ko):not(.extra){color:#0000;-webkit-text-decoration:underline dotted var(--ghost) 2px;text-decoration:underline dotted var(--ghost) 2px;text-underline-offset:.3em}.words--memory.is-preview .words-track{animation:1s ease-in-out infinite alternate preview-breath}@keyframes preview-breath{to{opacity:.75}}.level{color:var(--ink);align-items:center;gap:9px;text-decoration:none;display:flex}.level-number{background:var(--ink);width:34px;height:34px;color:var(--bg);font:800 16px var(--font-display);box-shadow:2px 2px 0 var(--accent);border-radius:8px;place-items:center;display:grid;transform:rotate(-4deg)}.level-text{gap:4px;font-size:12px;font-weight:600;display:grid}.level-bar{background:var(--line);border-radius:2px;width:96px;height:4px;overflow:hidden}.level-fill{background:var(--accent);transform-origin:0;height:100%;transition:transform .8s var(--ease-out);display:block}.levelup{z-index:980;background:color-mix(in oklab, var(--bg), transparent 15%);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);place-items:center;animation:.3s fade-in;display:grid;position:fixed;inset:0;overflow:hidden}.levelup.is-leaving{animation:.35s forwards fade-out}.levelup-rays{background:repeating-conic-gradient(color-mix(in oklab, var(--accent), transparent 78%) 0deg 9deg, transparent 9deg 18deg);width:160vmax;height:160vmax;animation:24s linear infinite spin;position:absolute;-webkit-mask-image:radial-gradient(circle,#000,#0000 60%);mask-image:radial-gradient(circle,#000,#0000 60%)}.levelup-card{border:3px solid var(--ink);background:var(--card);box-shadow:10px 10px 0 var(--accent);animation:stamp .55s var(--ease-spring) both;border-radius:16px;justify-items:center;gap:6px;padding:36px 64px;display:grid;position:relative}.levelup-number{color:var(--accent);font:900 150px/1 var(--font-display)}.levelup-title{font:italic 600 28px var(--font-display)}@keyframes spin{to{transform:rotate(1turn)}}@keyframes fade-out{to{opacity:0}}.fiche-ribbons{flex-wrap:wrap;gap:8px;margin-top:-16px;display:flex}.fiche-ribbon{background:var(--ink);color:var(--bg);font:600 12px var(--font-mono);animation:ribbon-in .5s var(--ease-spring) both;animation-delay:calc(.5s + var(--i) * .12s);border-radius:999px;padding:4px 12px}.fiche-ribbon:first-child{background:var(--accent)}@keyframes ribbon-in{0%{opacity:0;transform:translateY(10px)scale(.8)}}.key-btn--accent{border-color:var(--accent);background:var(--accent);color:var(--bg)}.stamp--inline{width:fit-content;margin:4px 0;display:inline-block;position:static}html[data-arcade=on]{--font-display:"Press Start 2P", monospace;--font-ui:"Press Start 2P", monospace}html[data-arcade=on] body{font-size:10px}html[data-arcade=on] .app{filter:saturate(1.5)contrast(1.1)}html[data-arcade=on] body:after{content:"";z-index:990;pointer-events:none;background:radial-gradient(#0000 55%,#00000073),repeating-linear-gradient(0deg,#00000029 0 1px,#0000 1px 3px);animation:.12s steps(2,end) infinite crt-flicker;position:fixed;inset:0}@keyframes crt-flicker{50%{opacity:.92}}.egg-ivre .app{filter:blur(.6px);animation:3s ease-in-out infinite drunk}@keyframes drunk{25%{transform:rotate(1.5deg)skew(3deg)translate(10px)}50%{transform:rotate(-1deg)skewY(-2deg)}75%{transform:rotate(2deg)translateY(6px)scale(1.02)}}.egg-matrix{z-index:975;pointer-events:none;opacity:.92;position:fixed;inset:0}.egg-matrix.is-leaving{animation:.8s forwards fade-out}.egg-monkey{z-index:985;pointer-events:none;align-items:flex-end;gap:10px;animation:5.2s ease-in-out forwards monkey;display:flex;position:fixed;bottom:-130px;right:30px}.egg-monkey-face{font-size:90px;animation:.5s ease-in-out infinite alternate monkey-bob}.egg-bubble{border:2px solid var(--ink);background:var(--card);max-width:230px;font:italic 600 16px var(--font-display);box-shadow:4px 4px 0 var(--accent);border-radius:14px 14px 14px 2px;margin-bottom:80px;padding:12px 16px}@keyframes monkey{0%,to{transform:translateY(0)}12%,85%{transform:translateY(-150px)}}@keyframes monkey-bob{to{transform:rotate(8deg)translateY(-6px)}}.cabinets{grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:22px;display:grid}.arcade-card{border:1px solid var(--line);background:var(--card);color:var(--ink);text-align:left;cursor:pointer;box-shadow:0 5px 0 var(--line);transition:transform .25s var(--ease-spring), box-shadow .25s;animation:card-in .6s var(--ease-spring) both;animation-delay:calc(var(--i) * 70ms);border-radius:16px;align-content:start;gap:8px;padding:0 0 20px;display:grid;overflow:hidden}.arcade-card:hover{box-shadow:0 11px 0 var(--line);transform:translateY(-6px)rotate(-.6deg)}.arcade-card>span:not(.cabinet-art){padding:0 22px}@keyframes card-in{0%{opacity:0;transform:translateY(24px)rotate(1.5deg)}}.cabinet-art{background:var(--ink);height:170px;color:var(--bg);font:800 60px var(--font-display);justify-content:center;align-items:center;gap:14px;margin-bottom:10px;display:flex;position:relative;overflow:hidden}.cabinet-art>span{animation:3s ease-in-out infinite float;animation-delay:calc(var(--i) * -.4s)}@keyframes float{50%{transform:translateY(-12px)rotate(6deg)}}.art-crypt span:nth-child(odd){color:var(--accent)}.art-shooter{background:linear-gradient(var(--ink) 55%, color-mix(in oklab, var(--ink), var(--accent) 15%))}.art-shooter .art-sun{background:repeating-linear-gradient(180deg, var(--accent) 0 12px, transparent 12px 15px);border-radius:75px 75px 0 0;width:150px;height:75px;animation:none;position:absolute;top:28px;left:50%;transform:translate(-50%)}.art-shooter .art-grid{background:repeating-linear-gradient(90deg, var(--accent) 0 1px, transparent 1px 34px), repeating-linear-gradient(0deg, var(--accent) 0 1px, transparent 1px 18px);opacity:.6;transform-origin:bottom;height:45%;animation:.8s linear infinite grid-scroll;position:absolute;bottom:0;left:-40%;right:-40%;transform:perspective(160px)rotateX(55deg)}@keyframes grid-scroll{to{background-position:0 0,0 18px}}.equalizer{align-items:flex-end;gap:5px;height:110px;display:flex}.equalizer>span{background:var(--accent);width:10px;height:20%;animation:eq calc(.45s + var(--i) * 50ms) ease-in-out infinite alternate;animation-delay:calc(var(--i) * -.13s);border-radius:3px 3px 0 0}.cabinet-art.equalizer{height:170px;padding-bottom:20px}@keyframes eq{to{height:100%}}.art-daily{flex-direction:column;gap:0;font-size:96px;line-height:1}.art-daily small{color:var(--accent);font:600 14px var(--font-mono);letter-spacing:.3em;text-transform:uppercase}.art-race{font:700 18px var(--font-mono);flex-direction:column;align-items:stretch;gap:4px;padding:0 30px}.art-race>span{width:30px;animation:race-run calc(2s + var(--i) * .4s) linear infinite;border-bottom:1px dashed}.art-race>span:last-child{color:var(--accent)}@keyframes race-run{0%{transform:translate(0)}to{transform:translate(240px)}}.art-memory>span{animation:2.4s ease-in-out infinite fade-letter;animation-delay:calc(var(--i) * .25s)}@keyframes fade-letter{50%{color:#0000;-webkit-text-decoration:underline dotted var(--accent);text-decoration:underline dotted var(--accent)}}.cabinet-tag{color:var(--accent);font:600 11px var(--font-mono);letter-spacing:.14em;text-transform:uppercase}.cabinet-title{font:italic 700 26px/1.1 var(--font-display)}.cabinet-pitch{color:var(--soft);font-size:14px}.cabinet-best{color:var(--soft);font:500 12px var(--font-mono);justify-content:space-between;gap:10px;margin-top:6px;display:flex}.cabinet-play{color:var(--accent);white-space:nowrap;font-weight:700}.game{gap:18px}.game-back{width:fit-content;color:var(--soft);font-weight:600;text-decoration:none}.game-back:hover{color:var(--accent)}.game-stage{border:1px solid var(--line);background:var(--card);min-height:560px;box-shadow:0 6px 0 var(--line);border-radius:18px;position:relative;overflow:hidden}.game-title{font:300 clamp(44px, 7vw, 76px) / 1 var(--font-display);font-variation-settings:"opsz" 144}.game-title em{color:var(--accent);font-style:italic;font-weight:800}.game-lede{max-width:62ch;color:var(--soft);font:italic 18px/1.5 var(--font-display)}.game-rules{gap:6px;max-width:72ch;margin:0;padding-left:20px;display:grid}.command{align-items:center;gap:10px;font-size:17px;font-weight:500;display:flex}.command-word{border:2px dashed var(--accent);font:700 28px var(--font-mono);letter-spacing:.08em;border-radius:10px;padding:4px 12px;animation:1.4s ease-in-out infinite alternate command-glow;position:relative}.command-ghost{color:var(--ghost)}.command-typed{color:var(--accent);position:absolute;top:4px;left:12px}@keyframes command-glow{to{box-shadow:0 0 0 6px color-mix(in oklab, var(--accent), transparent 85%)}}.crypt-stage{padding:28px;display:grid}.crypt-screen,.crypt-intro,.crypt-over{align-content:start;gap:18px;display:grid;position:relative}.crypt-intro,.crypt-over{justify-items:start}.crypt-glyph-rain{opacity:.08;pointer-events:none;font:800 120px var(--font-display);position:absolute;inset:-28px;overflow:hidden}.crypt-glyph-rain span{left:calc(var(--i) * 12.5%);animation:9s linear infinite glyph-fall;animation-delay:calc(var(--i) * -1.3s);position:absolute}@keyframes glyph-fall{0%{transform:translateY(-160px)rotate(0)}to{transform:translateY(720px)rotate(180deg)}}.crypt-hud{flex-wrap:wrap;align-items:center;gap:22px;display:flex}.crypt-floor{font:italic 800 26px var(--font-display)}.hp{flex:1;align-items:center;gap:8px;min-width:200px;display:flex}.hp-label,.hp-text,.crypt-stat{color:var(--soft);font:600 13px var(--font-mono)}.hp-bar{border:1px solid var(--ink);background:var(--line);border-radius:7px;flex:1;height:14px;overflow:hidden}.hp-fill{background:var(--ok);transform-origin:0;height:100%;transition:transform .3s var(--ease-out);display:block}.hp-fill.is-low{background:var(--error);animation:.7s ease-in-out infinite alternate low-hp}@keyframes low-hp{to{opacity:.5}}.crypt-relics{flex-wrap:wrap;gap:6px;min-height:30px;display:flex}.artifact{background:var(--ink);width:30px;height:30px;color:var(--bg);cursor:help;animation:card-in .4s var(--ease-spring) both;border-radius:7px;place-items:center;font-size:16px;display:grid}.artifact--curse{background:var(--error)}.crypt-arena{flex-wrap:wrap;justify-content:center;align-items:center;gap:22px;min-height:300px;padding:16px 0;display:flex}.monster{border:2px solid var(--ink);background:var(--bg);width:190px;box-shadow:4px 4px 0 var(--ink);animation:monster-in .5s var(--ease-spring) both;border-radius:14px;justify-items:center;gap:8px;padding:18px 14px;transition:border-color .2s,box-shadow .2s,transform .2s;display:grid;position:relative}.monster.is-target{border-color:var(--accent);box-shadow:4px 4px 0 var(--accent);transform:translateY(-8px)}.monster.is-danger{animation:.25s ease-in-out infinite alternate danger}.monster.is-lunging{animation:.45s lunge}.monster.is-dead{animation:.5s forwards monster-die}@keyframes monster-in{0%{opacity:0;transform:translateY(-40px)scale(.7)}}@keyframes danger{to{box-shadow:4px 4px 0 var(--error), 0 0 22px color-mix(in oklab, var(--error), transparent 60%)}}@keyframes lunge{35%{transform:translateY(30px)scale(1.12)}}@keyframes monster-die{to{opacity:0;filter:blur(6px);transform:scale(1.4)rotate(12deg)}}.monster-glyph{font:800 78px/1 var(--font-display);animation:2.4s ease-in-out infinite bob;position:relative}.monster--geante,.monster--correcteur{width:250px}.monster--geante .monster-glyph,.monster--correcteur .monster-glyph{color:var(--accent);font-size:112px}.monster-eyes{background:radial-gradient(circle at 25% 50%, var(--accent) 3px, transparent 3.5px), radial-gradient(circle at 75% 50%, var(--accent) 3px, transparent 3.5px);width:26px;height:8px;animation:4s infinite blink;position:absolute;top:34%;left:50%;transform:translate(-50%)}.monster--geante .monster-eyes,.monster--correcteur .monster-eyes{background:radial-gradient(circle at 25% 50%, var(--ink) 3px, transparent 3.5px), radial-gradient(circle at 75% 50%, var(--ink) 3px, transparent 3.5px)}@keyframes bob{50%{transform:translateY(-8px)rotate(-4deg)}}@keyframes blink{0%,92%,to{transform:translate(-50%)scaleY(1)}95%{transform:translate(-50%)scaleY(.1)}}.monster-name{font:italic 600 16px var(--font-display)}.monster-hp{gap:4px;display:flex}.pip{border:1.5px solid var(--error);border-radius:50%;width:10px;height:10px}.pip.is-full{background:var(--error)}.monster-bar{background:var(--line);border-radius:3px;width:100%;height:6px;overflow:hidden}.monster-bar-fill{background:var(--soft);transform-origin:0;height:100%;display:block;transform:scaleX(0)}.is-danger .monster-bar-fill{background:var(--error)}.monster-word{background:var(--card);font:600 22px var(--font-type);white-space:nowrap;border-radius:8px;padding:4px 10px}.monster-typed{color:var(--accent)}.crypt-log{min-height:90px;font:italic 15px var(--font-display);gap:4px;display:grid}.crypt-log p{opacity:calc(1 - var(--age) * .25)}.offers{gap:18px;width:100%;display:grid}.offers-title{font:italic 700 28px var(--font-display);text-align:center}.offers-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;display:grid}.offer{border:2px solid var(--ink);background:var(--bg);box-shadow:4px 4px 0 var(--ink);animation:card-in .5s var(--ease-spring) both;border-radius:14px;align-content:start;gap:8px;padding:18px;transition:transform .2s,border-color .2s,box-shadow .2s;display:grid}.offer.is-typing{border-color:var(--accent);box-shadow:4px 4px 0 var(--accent);transform:translateY(-4px)}.offer--altar{border-style:dashed;border-color:var(--error)}.offer-glyph{font-size:38px}.offer-title{font:italic 700 20px var(--font-display)}.offer-desc{color:var(--soft);font-size:13px}.offer-word{color:var(--ghost);font:700 18px var(--font-mono);letter-spacing:.06em}.offer-typed{color:var(--accent)}.shooter-stage{padding:0}.shooter-canvas{width:100%;height:560px;display:block}.shooter-hud{color:var(--ink);font:700 22px var(--font-mono);pointer-events:none;align-items:center;gap:24px;display:flex;position:absolute;top:14px;left:18px;right:18px}.hud-item{line-height:1.1;display:grid}.hud-item small{color:var(--soft);font:600 10px var(--font-ui);letter-spacing:.14em;text-transform:uppercase}.hud-lives{gap:6px;margin-left:auto;display:flex}.life{border:2px solid var(--accent);border-radius:50%/40% 40% 60% 60%;width:14px;height:18px}.life.is-full{background:var(--accent)}.shooter-overlay{background:color-mix(in oklab, var(--bg), transparent 18%);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);place-items:center;display:grid;position:absolute;inset:0}.shooter-card{text-align:center;justify-items:center;gap:14px;max-width:580px;padding:30px;display:grid}.shooter-card .stat-grid,.crypt-over .stat-grid{width:100%}.tempo-stage{padding:28px}.tempo-screen,.tempo-intro,.tempo-over{align-content:start;gap:18px;display:grid}.tempo-intro,.tempo-over{justify-items:start}.tempo-hud{font:700 22px var(--font-mono);gap:28px;display:flex}.tempo-source{color:var(--soft);font:italic 16px var(--font-display)}.tempo-lane{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);background:repeating-linear-gradient(90deg, transparent 0 79px, var(--line) 79px 80px);height:160px;position:relative;overflow:hidden}.tempo-lane.is-stray{animation:.2s shake-small}.hit-line{background:var(--accent);width:4px;box-shadow:0 0 20px var(--accent);position:absolute;top:0;bottom:0;left:22%}.hit-line.is-pulsing{animation:.25s ease-out pulse-line}@keyframes pulse-line{0%{width:10px;box-shadow:0 0 40px var(--accent)}}.note{border:2px solid var(--ink);background:var(--card);width:44px;height:52px;font:700 26px var(--font-type);will-change:transform;border-radius:10px;place-items:center;margin-top:-26px;display:grid;position:absolute;top:50%;left:-22px}.note--space{color:var(--soft)}.note.is-parfait,.note.is-bien,.note.is-ok{animation:.3s ease-out forwards note-pop}.note.is-parfait{border-color:var(--accent);background:var(--accent);color:var(--bg)}.note.is-bien{border-color:var(--ok);background:var(--ok);color:var(--bg)}.note.is-miss{border-color:var(--error);color:var(--error);opacity:.4;text-decoration:line-through}@keyframes note-pop{to{opacity:0;scale:1.5}}.judgement{opacity:0;font:italic 900 26px var(--font-display);position:absolute;top:8px;left:22%;transform:translate(-50%)}.judgement.is-shown{animation:.55s ease-out judge-pop}.judgement--parfait{color:var(--accent)}.judgement--bien{color:var(--ok)}.judgement--ok{color:var(--soft)}.judgement--miss{color:var(--error)}@keyframes judge-pop{0%{opacity:1;scale:1.5}70%{opacity:1}to{opacity:0;translate:0 -12px}}.judgement-bars{gap:8px;width:min(520px,100%);display:grid}.judgement-row{grid-template-columns:80px 1fr 40px;align-items:center;gap:12px;font-size:13px;display:grid}.judgement-row--parfait .reading-fill{background:var(--accent)}.judgement-row--bien .reading-fill{background:var(--ok)}.judgement-row--miss .reading-fill{background:var(--error)}@media (width<=640px){.monster{width:150px}.monster-glyph{font-size:58px}.shooter-hud{gap:12px;font-size:16px}}
