:root{color-scheme:dark;--ink:#101216;--panel:#16191e;--line:#2b2e33;--cream:#f4f1e9;--muted:#858a8e;--lime:#d6fa70;--serif:Georgia,'Times New Roman',serif;font-family:Arial,Helvetica,sans-serif;background:var(--ink);color:var(--cream);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:radial-gradient(ellipse at 51% 42%,#17202040,transparent 55%),var(--ink)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline:2px solid var(--lime);outline-offset:5px}a{color:inherit;text-decoration:none}.skip{position:fixed;left:20px;top:-60px;padding:12px;background:var(--lime);color:var(--ink);z-index:100}.skip:focus{top:10px}.topbar{height:84px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 4.4vw}.brand{display:flex;gap:10px;align-items:center;font-size:20px;letter-spacing:-.8px;font-weight:600}.brand-mark{font-size:35px;line-height:1;color:var(--lime);font-weight:400}.slash{margin:0 13px;color:#42464b;font-weight:400}.brand-app{color:#a4a8a9;font-size:13px;font-weight:400;letter-spacing:.1px}.header-actions{display:flex;gap:10px}.icon-button{width:37px;height:37px;display:grid;place-items:center;border:1px solid #363a3d;border-radius:50%;background:transparent;color:#c8cbc6;transition:.18s}.icon-button:hover{background:#272d27;border-color:#7a855d}.icon-button svg{width:18px;height:18px}.icon-button span{font:19px var(--serif)}.app{width:min(1430px,100%);margin:auto;padding:46px 4.4vw 24px;display:grid;grid-template-columns:minmax(170px,1fr) minmax(370px,610px) minmax(165px,.85fr);column-gap:50px;align-items:center}.intro{align-self:start;padding-top:52px}.eyebrow{font-size:9px;letter-spacing:2px;color:#a6ac9e;display:flex;gap:8px;align-items:center;line-height:1.8;max-width:190px}.live-dot{width:5px;height:5px;border-radius:50%;background:var(--lime);flex:none}.intro h1{font:clamp(45px,5.4vw,77px)/.99 var(--serif);font-weight:400;letter-spacing:-4px;margin:28px 0 19px}.intro h1 em{display:block;color:var(--lime);font-weight:400}.intro>p{font:14px/1.7 Arial,sans-serif;color:#989c9c;max-width:170px;margin:0}.mode-switch{display:flex;flex-direction:column;gap:4px;margin:42px 0 15px;max-width:176px}.mode-switch button{text-align:left;background:transparent;color:#858b8f;border:1px solid transparent;border-radius:8px;padding:12px 15px;font-size:12px;display:flex;align-items:center;justify-content:space-between;transition:.2s}.mode-switch button:hover{color:var(--cream);background:#20241f}.mode-switch button[aria-pressed=true]{color:var(--lime);border-color:#3a4430;background:#20271c}.mode-switch button[aria-pressed=true]:after{content:'↗';font-size:16px;line-height:12px}.new-dot{width:4px;height:4px;background:#a99bd1;border-radius:50%;margin-left:auto;margin-right:5px}.intro .mode-description{font:10px/1.7 Arial,sans-serif;max-width:155px;min-height:38px;padding-left:15px;color:#717876}.game-column{width:100%;min-width:0}.scorebar{display:flex;align-items:center;justify-content:space-between;padding:0 6px 22px}.stat-label,.season-stat>span{font-size:8px;letter-spacing:1.7px;display:block;color:#858b88}.score-stat strong{display:block;font-size:31px;letter-spacing:-1.1px;font-weight:400;font-variant-numeric:tabular-nums;margin-top:7px}.best-stat{text-align:right}.best-stat strong{color:#8d948c}.season-stat{text-align:center;align-self:center}.season-stat>strong{display:block;font:italic 16px var(--serif);margin-top:9px;color:#c4cbba}.canvas-shell{position:relative;aspect-ratio:1;width:100%;border:1px solid #333a31;border-radius:20px;overflow:hidden;background:#121717;box-shadow:0 22px 70px #0002;isolation:isolate}canvas{display:block;touch-action:manipulation;width:100%;height:100%;cursor:crosshair}.game-topline{position:absolute;top:23px;left:24px;right:24px;display:flex;justify-content:space-between;pointer-events:none;font-size:9px;letter-spacing:.5px;color:#788578}#lives{letter-spacing:5px;color:var(--lime);font-size:9px}.feedback{position:absolute;left:0;right:0;top:53%;text-align:center;pointer-events:none;opacity:0;color:var(--lime);font-size:14px;letter-spacing:3px;transform:translateY(0);transition:opacity .16s}.feedback.show{opacity:1;animation:float-up 1s ease-out forwards}.feedback.missed{color:#ef9d8d}.feedback .feedback-small{display:block;font-size:8px;letter-spacing:1.8px;margin-top:8px;color:#a8b09f}.combo{position:absolute;bottom:23px;left:0;right:0;display:flex;justify-content:center;align-items:center;gap:7px;pointer-events:none;font-size:8px;letter-spacing:2px;color:#6a7969}.combo.active{color:var(--lime)}.combo-dot{width:4px;height:4px;background:currentColor;border-radius:50%}.overlay{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;background:#0e1414b5;backdrop-filter:blur(6px);padding:20px}.overlay[hidden]{display:none}.overlay-card{text-align:center;width:310px;max-width:100%;padding:20px 8px}.overlay-kicker{font-size:8px;letter-spacing:2px;color:#bdcb9d;display:block}.overlay-card h2,dialog h2{font:400 clamp(34px,4.2vw,49px)/1.05 var(--serif);letter-spacing:-1.7px;margin:20px 0 15px}.overlay-card p{color:#9da89d;font-size:11px;line-height:1.9;margin:0 auto 25px;max-width:256px}.overlay-card p strong{color:#d7dfcd;font-weight:400}.primary-button{display:flex;justify-content:space-between;align-items:center;gap:20px;background:var(--lime);color:#212a15;border:1px solid var(--lime);border-radius:8px;padding:15px 20px;font-size:12px;font-weight:600;min-width:210px;margin:0 auto;transition:background .2s,transform .2s}.primary-button:hover{background:#e5ff9c;transform:translateY(-1px)}.primary-button>span{font-size:20px;font-weight:400;line-height:14px}.key-hint{display:block;font-size:7px;letter-spacing:1.5px;color:#6f7f68;margin-top:19px}.key-hint b{font-weight:400;margin:0 8px}.mini-orbit{width:48px;height:48px;border:1px solid #70864c;border-radius:50%;display:block;margin:0 auto 25px;position:relative}.mini-orbit:before,.mini-orbit:after{content:'';position:absolute;border:1px solid #6e854b;border-radius:50%;inset:7px;transform:rotate(45deg) scaleX(.45)}.mini-orbit:after{transform:rotate(-45deg) scaleX(.45)}.mini-orbit i{width:6px;height:6px;border-radius:50%;background:var(--lime);position:absolute;top:20px;left:20px;box-shadow:0 0 15px #d6fa7066}.welcome .overlay-kicker{font-size:7px;letter-spacing:1.6px}.welcome-card h2{margin:18px 0}.result-score{font-size:57px;font-variant-numeric:tabular-nums;font-weight:400;letter-spacing:-3px;color:var(--lime);margin:15px 0 7px}.final-stats{color:#8e9e86;font-size:10px;margin-bottom:26px}.text-button{display:block;margin:18px auto 0;padding:3px;border:0;background:transparent;color:#a7b59a;font-size:10px}.text-button:hover{color:var(--lime)}.play-controls{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:24px 2px 18px}.control-note{display:flex;gap:11px;align-items:center;color:#7b827d;font-size:10px;line-height:1.6}.control-note strong{font-weight:400;color:#bac1b5}.target-icon{font:33px var(--serif);color:#738655}.cast-button{display:flex;gap:21px;align-items:center;padding:16px 19px;border-radius:10px;background:var(--lime);color:#252e19;border:0;font-size:12px;font-weight:600;box-shadow:0 4px 0 #7e963f;min-width:196px;transition:transform .12s,box-shadow .12s,filter .12s;user-select:none;touch-action:manipulation}.cast-button:not(:disabled):active{transform:translateY(3px);box-shadow:0 1px 0 #7e963f}.cast-button:disabled{filter:saturate(.2);opacity:.3}.cast-button kbd{font:7px Arial,sans-serif;letter-spacing:1px;border:1px solid #849746;padding:4px 5px;border-radius:3px}.cast-button svg{width:17px;height:17px}.bottomline{display:flex;justify-content:space-between;border-top:1px solid #292f29;padding-top:15px;color:#555f57;font-size:7px;letter-spacing:1.4px;gap:10px;align-items:center}.small-link{background:none;border:0;color:#949f8b;font-size:9px;padding:0;white-space:nowrap}.small-link:hover{color:var(--lime)}.field-notes{align-self:center;padding-left:8px;margin-top:53px;max-width:240px}.notes-label{font-size:7px;letter-spacing:2px;color:#697166}.field-notes h2{font:26px/1.2 var(--serif);font-weight:400;letter-spacing:-.6px;margin:21px 0 32px;color:#c4c9bb}.field-notes h2 em{font-weight:400;color:#798a65}.note-item{display:flex;gap:14px;align-items:flex-start;margin:0 0 24px}.note-item>span{font-size:8px;color:#617343;margin-top:3px}.note-item p{font-size:10px;line-height:1.8;color:#727a73;margin:0;max-width:150px}.note-item strong{display:block;font-weight:400;color:#b7bfad;margin-bottom:5px;font-size:11px}.notes-footer{border-top:1px solid #2b3029;padding-top:18px;font-size:6px;letter-spacing:1.2px;color:#55604f;display:flex;align-items:center;gap:9px;white-space:nowrap}.notes-footer>span{font-size:21px;color:#91a568}dialog{max-width:470px;width:calc(100% - 40px);background:#191f1b;color:var(--cream);border:1px solid #424d35;border-radius:18px;padding:35px;box-shadow:0 30px 130px #000a}dialog::backdrop{background:#050807c9;backdrop-filter:blur(8px)}.dialog-close{position:absolute;top:15px;right:18px;background:none;border:0;font-size:25px;color:#949f8b;line-height:20px}dialog h2{font-size:40px;margin-top:20px}dialog p{font-size:11px;line-height:1.9;color:#99a692}dialog p strong{font-weight:400;color:#d1ddc4}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:23px 0;padding:21px 0;border-block:1px solid #30392b}.help-grid strong{display:block;font-size:13px;font-weight:400;color:var(--lime)}.help-grid span{font-size:9px;display:block;color:#89967e;margin-top:5px}.keyboard-guide{font-size:8px!important;margin:20px 0!important;display:flex;align-items:center;gap:6px}.keyboard-guide span{margin:0 3px}.keyboard-guide kbd{border:1px solid #536046;border-radius:3px;padding:2px 4px;font:7px Arial,sans-serif}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,10px);background:#d6fa70;color:#17210e;padding:13px 22px;border-radius:8px;font-size:11px;z-index:30;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:calc(100% - 32px);text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}@keyframes float-up{0%{transform:translateY(8px);opacity:0}15%,65%{opacity:1}100%{transform:translateY(-20px);opacity:0}}
@media(min-width:1450px){.app{padding-top:55px;column-gap:70px}.canvas-shell{max-height:610px}}
@media(max-width:1150px){.app{grid-template-columns:180px minmax(350px,580px);max-width:970px;column-gap:32px}.field-notes{display:none}.intro h1{font-size:62px}.intro{padding-top:55px}.canvas-shell{border-radius:17px}}
@media(max-width:720px){.topbar{height:65px;padding:0 21px}.brand{font-size:18px;gap:7px}.brand-mark{font-size:28px}.slash{margin:0 4px}.brand-app{font-size:11px}.header-actions{gap:7px}.icon-button{width:31px;height:31px}.icon-button svg{width:15px;height:15px}.app{display:block;padding:24px 20px;max-width:560px}.intro{padding:0}.eyebrow{font-size:7px;letter-spacing:1.7px;max-width:none}.intro h1{font-size:43px;letter-spacing:-2px;margin:12px 0 9px}.intro h1 em{display:inline}.intro>p{font-size:11px;max-width:none}.mode-switch{flex-direction:row;max-width:none;margin:23px 0 0;gap:5px}.mode-switch button{font-size:10px;justify-content:center;padding:10px 12px;flex:1;white-space:nowrap;border:1px solid #2a3029}.mode-switch button[aria-pressed=true]:after{display:none}.new-dot{display:none}.intro .mode-description{max-width:none;min-height:0;font-size:9px;padding:0;margin:10px 0 24px;text-align:center}.scorebar{padding:0 3px 16px}.stat-label,.season-stat>span{font-size:6px;letter-spacing:1.3px}.score-stat strong{font-size:25px;margin-top:5px}.season-stat>strong{font-size:14px;margin-top:7px}.canvas-shell{border-radius:14px}.game-topline{top:17px;left:18px;right:15px;font-size:8px}.combo{bottom:18px;font-size:7px}.overlay-card{padding:10px 5px;width:285px}.mini-orbit{width:39px;height:39px;margin-bottom:17px}.mini-orbit i{left:16px;top:16px;width:5px;height:5px}.overlay-card h2{font-size:35px;margin:16px 0 13px}.overlay-card p{font-size:10px;line-height:1.8;margin-bottom:18px;max-width:245px}.overlay-kicker{font-size:7px}.welcome .overlay-kicker{font-size:6px}.primary-button{padding:13px 17px;min-width:192px;font-size:11px}.key-hint{font-size:6px;margin-top:14px}.play-controls{padding:20px 2px 17px;gap:12px}.control-note{font-size:9px;gap:9px}.target-icon{font-size:28px}.cast-button{min-width:176px;padding:17px 16px;gap:16px;font-size:11px}.cast-button kbd{display:none}.cast-button svg{margin-left:auto}.bottomline{font-size:6px;letter-spacing:1px;padding-top:14px}.small-link{font-size:8px}.result-score{font-size:46px;margin:12px 0 5px}.final-stats{font-size:9px;margin-bottom:20px}.text-button{font-size:9px;margin-top:14px}.over-card h2{font-size:32px}.feedback{font-size:12px;letter-spacing:2px}.feedback .feedback-small{font-size:7px}}
@media(max-width:370px){.topbar{padding:0 14px}.brand-app,.slash{display:none}.app{padding:20px 13px}.intro h1{font-size:39px}.cast-button{min-width:155px}.overlay-card h2{font-size:30px}.mini-orbit{display:none}.welcome-card p{font-size:9px}.key-hint{display:none}.control-note{font-size:8px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
@media(min-width:721px) and (max-height:900px){.topbar{height:64px}.app{padding-top:19px;padding-bottom:12px;grid-template-columns:minmax(170px,1fr) minmax(350px,min(610px,calc(100dvh - 335px))) minmax(165px,.85fr);column-gap:40px}.intro{padding-top:35px}.intro h1{font-size:64px}.game-column{max-width:min(610px,calc(100dvh - 335px));min-width:350px;justify-self:center}.scorebar{padding-bottom:14px}.score-stat strong{font-size:26px;margin-top:5px}.stat-label,.season-stat>span{font-size:7px}.play-controls{padding-top:16px;padding-bottom:14px}.cast-button{padding:14px 17px}.field-notes{margin-top:30px}.welcome .mini-orbit{display:none}.welcome-card{padding:12px 5px;width:290px}.welcome-card h2{font-size:35px;letter-spacing:-1.4px;margin:16px 0 12px}.welcome-card p{font-size:10px;line-height:1.8;margin-bottom:18px}.welcome .primary-button{padding:13px 17px}.welcome .key-hint{margin-top:14px;font-size:6px}.overlay-card h2{font-size:35px}.result-score{font-size:46px;margin:12px 0 5px}.final-stats{font-size:9px;margin-bottom:18px}.over-card{padding:10px}.over-card .text-button{margin-top:12px}}
@media(min-width:721px) and (max-width:1150px) and (max-height:900px){.app{grid-template-columns:180px minmax(350px,min(580px,calc(100dvh - 335px)));max-width:850px;column-gap:32px}}
@media(max-width:720px){.welcome .mini-orbit{display:none}.welcome-card h2{font-size:31px;letter-spacing:-1.3px}.welcome-card p{max-width:237px}}
