@font-face{font-family:SoranBrush;src:url('./yuji-boku-countdown.ttf') format('truetype');font-weight:400;font-display:swap}
*{box-sizing:border-box}:root{font-family:Arial,'Noto Sans JP',sans-serif;color:#fff9ed;background:#19283c;font-synthesis:none}body{margin:0}button,input{font:inherit}button{cursor:pointer;touch-action:manipulation}button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid #fff1a0;outline-offset:4px}[hidden]{display:none!important}button:disabled{opacity:.48;cursor:wait}
#game{--member:#ff58b5;height:100svh;min-height:360px;position:relative;overflow:hidden;background:#a4b8bc}#world{position:absolute;inset:0;width:100%;height:100%;touch-action:none}
header{position:absolute;top:max(16px,env(safe-area-inset-top));left:24px;right:24px;z-index:6;display:flex;align-items:center;gap:8px;pointer-events:none}.brand{font-size:27px;letter-spacing:-1px;font-weight:950;margin-right:auto;text-shadow:0 2px 4px #1236}.brand span{display:none}header button{pointer-events:auto;min-height:40px;border:0;border-radius:20px;background:#21364de8;color:#fff9ed;padding:9px 14px;font-size:12px;font-weight:800}#pause{font-size:18px;width:42px}
.panel{position:absolute;z-index:5;background:#20344bf5;color:#fff9ed;border:2px solid #fff8eb36;border-radius:28px;box-shadow:0 8px 0 #15253c45,0 20px 50px #12213c35;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#72889b transparent}#intro{left:6%;top:50%;transform:translateY(-44%);width:min(400px,44vw);padding:26px;max-height:calc(100svh - 110px)}.tag{color:#b2e0d4;font-size:13px;font-weight:800;margin-bottom:12px}h1{font-size:44px;line-height:1.1;letter-spacing:-1.5px;margin:0;font-weight:950}h1 em{color:#ff88c3;font-style:normal}.artist{font-size:12px;letter-spacing:.9px;color:#c3d1d9;margin:14px 0}.instructions{font-size:17px;font-weight:800;margin:20px 0;line-height:1.5}
.member-pick,.model-pick{display:flex;gap:7px;border:0;padding:0;margin:0 0 20px}legend{font-size:14px;font-weight:700;margin-bottom:10px}.member-pick button{flex:1;min-width:0;padding:12px 2px;border:2px solid transparent;border-radius:15px;background:#30485e;color:var(--swatch);font-size:14px;font-weight:900;transition:transform .12s}.member-pick small{display:none}.member-pick button[aria-pressed=true]{background:var(--swatch);color:#17253a;box-shadow:0 4px 0 #0a192660;transform:translateY(-3px)}.model-pick{margin-top:15px}.model-pick button{flex:1;border:1px solid #8098aa;border-radius:12px;background:#30485e;color:#fff9ed;min-height:42px;font-size:14px}.model-pick button[aria-pressed=true]{background:#b2e0d4;border-color:#b2e0d4;color:#17253a}
.guide{display:flex;gap:18px;font-size:13px;margin:8px 0 18px;color:#cfdae0}.guide span{display:flex;gap:6px;align-items:center}.guide b{font-weight:500}kbd{font-family:inherit;font-size:12px;border:1px solid #9aafbc;border-radius:5px;padding:3px 5px}.record-strip{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#bed3db;margin:0 0 14px}.record-strip strong{font-size:20px;color:#effb72;font-variant-numeric:tabular-nums}.primary{display:block;width:100%;min-height:54px;padding:13px 18px;border:0;border-radius:18px;background:#effb72;color:#1c2b3f;font-size:19px;font-weight:900;box-shadow:0 5px 0 #8c9e49;transition:transform .12s}.primary:hover{background:#f6ff9b}.primary:active{transform:translateY(3px);box-shadow:0 2px 0 #8c9e49}.secondary{width:100%;min-height:42px;border:0;border-radius:15px;background:#30485e;color:#e2ecee;padding:11px;font-size:14px;margin-top:13px}#loading{font-size:12px;color:#b7cbd3;line-height:1.6;margin:14px 0 0}#loading:empty{display:none}details{margin-top:18px;font-size:14px;color:#c9d8df}summary{cursor:pointer;padding:8px 0;text-align:center}.reduce{display:flex;align-items:center;gap:8px;margin:16px 0;font-size:14px}.reduce input{accent-color:#b2e0d4;width:17px;height:17px}.speed-control{display:flex;align-items:center;gap:8px;font-size:13px;margin:18px 0}.speed-control input{flex:1;min-width:0;accent-color:#ff88c3}.speed-control output{font-size:12px;color:#effb72}#modeHelp{font-size:12px}#modeHelp:empty{display:none}
#memberBadge{position:absolute;right:12%;bottom:13%;text-align:center;pointer-events:none;text-shadow:0 2px 7px #14213d}#memberBadge>span{display:block;font-size:13px;letter-spacing:1px}#memberName{display:block;font-size:40px;font-weight:950;color:var(--member);margin:5px 0}#memberRole{font-size:14px}#modelStyleName{margin-bottom:8px}#game:not([data-state=intro]) #memberBadge{display:none}
#hud{position:absolute;z-index:3;top:76px;left:24px;right:24px;display:grid;grid-template-columns:minmax(170px,240px) 94px;justify-content:space-between;gap:8px;pointer-events:none}.mission,.clock{border:2px solid #fff8eb3b;background:#20344bec;border-radius:22px;padding:12px 16px;box-shadow:0 4px 0 #12253a28}.growth-label{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.growth-label strong{font-size:20px;color:#effb72;font-weight:950;transform-origin:left center}#growthSize{font-size:24px;font-weight:900;font-variant-numeric:tabular-nums}#growthProgress{appearance:none;border:0;display:block;width:100%;height:8px;border-radius:8px;overflow:hidden;margin:10px 0 0;background:#5b7286}#growthProgress::-webkit-progress-bar{background:#5b7286}#growthProgress::-webkit-progress-value{background:#b2e0d4;transition:width .15s}#growthProgress::-moz-progress-bar{background:#b2e0d4}.clock{text-align:center;padding:9px 8px}.clock span{font-size:12px;color:#c6d8df}.clock strong{display:block;font-size:32px;line-height:1.2;font-variant-numeric:tabular-nums;color:#fff8cf}.clock strong.urgent{color:#ff9a83}.score-block{grid-column:1/-1;display:flex;align-items:baseline;gap:8px;margin-left:10px;color:#fff8eb;text-shadow:0 2px 5px #17263c;font-size:12px}.score-block strong{font-size:20px;font-variant-numeric:tabular-nums}#gain{color:#effb72;font-size:15px;font-weight:800;opacity:0;transition:opacity .1s}#gain.visible{opacity:1}
#target{position:absolute;z-index:3;left:50%;top:190px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;background:#20344be8;border-radius:20px;padding:8px 14px;font-size:13px;pointer-events:none}#target b{color:#ffce8b}#callout{position:absolute;top:32%;left:0;width:100%;z-index:4;text-align:center;color:#fff8c8;font-size:clamp(30px,5vw,60px);font-weight:950;text-shadow:0 4px 0 #213650,0 0 12px #1a294980;pointer-events:none}#callout.brush-countdown{font-family:SoranBrush,'Yu Mincho',serif;font-weight:400;font-size:clamp(62px,13vw,165px);line-height:1.2;top:34%;transform:rotate(-4deg);color:#fff3d5;text-shadow:5px 7px 0 #19283d,0 0 25px #0007}#countdownShield{position:absolute;inset:0;z-index:30;touch-action:none;user-select:none}#impactFlash{position:absolute;inset:0;z-index:2;opacity:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 40%,#ffdf8860 90%)}
#controls{position:absolute;z-index:4;left:26px;right:26px;bottom:max(28px,env(safe-area-inset-bottom));display:flex;align-items:flex-end;justify-content:space-between;pointer-events:none}.move-control,.action-control{pointer-events:auto;display:flex;flex-direction:column;align-items:center;gap:8px;user-select:none}.move-control>span{font-size:13px;text-shadow:0 1px 4px #19263f}#joystick{width:112px;height:112px;display:flex;align-items:center;justify-content:center;border:2px solid #d0e5e9a0;border-radius:50%;background:#263c5588;touch-action:none}#knob{width:46px;height:46px;border-radius:50%;background:#b3ddd6;border:2px solid #e2f3e6;box-shadow:0 4px 0 #33576655;pointer-events:none}#smash{width:122px;height:122px;background:var(--member);border:0;border-bottom:6px solid #1d274455;border-radius:50%;font-size:25px;font-weight:950;color:#16253b;box-shadow:0 5px 20px #152a4438;touch-action:none;user-select:none;transition:transform .08s}#smash small{display:block;font-size:13px;margin-top:6px}#smash.held,#smash:active{transform:scale(.95);border-bottom-width:2px}
#result,#paused{left:50%;top:50%;transform:translate(-50%,-45%);width:min(400px,calc(100% - 32px));max-height:calc(100svh - 100px);padding:25px;text-align:center}#result h2{font-size:21px;margin:8px 0;color:#b2e0d4}.result-growth{font-size:57px;line-height:1.1;font-weight:950;letter-spacing:-2px;color:#effb72;margin:10px 0 17px}.result-score{font-size:16px}.result-score strong{font-size:30px;margin-right:5px;font-variant-numeric:tabular-nums}.score-label{font-size:14px;font-weight:800;color:#fff8cf;margin:7px 0}#recordDelta{font-size:12px;color:#bacdd5;line-height:1.6;margin:6px 0 16px}.stats{display:flex;justify-content:center;gap:40px;border-top:1px solid #afc8d233;padding-top:14px;margin:12px 0 20px}.stats b,.stats span{display:block}.stats b{font-size:23px}.stats span{font-size:12px;color:#bfd4dc;margin-top:4px}#paused h2{font-size:27px}#pauseMode{font-size:13px;color:#bfd4dc}
@media(max-width:700px){header{left:16px;right:16px;top:max(12px,env(safe-area-inset-top))}#intro{left:16px;width:calc(100% - 32px);padding:23px;max-height:calc(100svh - 108px)}h1{font-size:39px}.instructions{margin:15px 0}.member-pick{margin-bottom:16px}.guide{display:none}#memberBadge{display:none}#hud{top:68px;left:16px;right:16px;grid-template-columns:minmax(150px,210px) 80px;gap:7px}.mission{padding:10px 13px;border-radius:19px}.growth-label strong{font-size:18px}#growthSize{font-size:21px}.clock{border-radius:19px}.clock strong{font-size:28px}.score-block strong{font-size:18px}#target{top:175px}#controls{left:20px;right:20px;bottom:max(27px,env(safe-area-inset-bottom))}#joystick{width:96px;height:96px}#knob{width:40px;height:40px}#smash{width:108px;height:108px;font-size:23px}.move-control>span{display:none}#callout{top:33%;font-size:38px}#callout.brush-countdown{font-size:clamp(47px,13vw,85px);top:37%}}
@media(max-height:620px){#intro{padding:18px 22px;max-height:calc(100svh - 90px)}h1{font-size:31px}.artist{margin:9px 0}.tag{font-size:12px;margin-bottom:8px}.instructions{font-size:15px;margin:12px 0}.member-pick{margin-bottom:12px}.member-pick button{padding:9px 2px}legend{margin-bottom:7px}.primary{min-height:46px;padding:10px;font-size:17px}.record-strip{margin-bottom:10px}details{margin-top:12px}#hud{top:64px}.mission,.clock{padding-top:7px;padding-bottom:7px}#target{top:158px}#controls{bottom:20px}#joystick{width:82px;height:82px}#smash{width:94px;height:94px}#result,#paused{padding:18px 22px;max-height:calc(100svh - 85px)}.result-growth{font-size:43px;margin:5px 0 10px}.stats{margin:8px 0 13px;padding-top:9px}#recordDelta{margin-bottom:10px}.guide{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}}
/* Boot overlay also exists before the module graph and 3D models have loaded. */
#loadingScreen{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:max(20px,env(safe-area-inset-top)) 20px max(20px,env(safe-area-inset-bottom));background:radial-gradient(ellipse at 50% 35%,#2c4258 0%,#142338 72%);color:#fff8eb;overflow:auto;outline:none}.load-card{width:min(390px,100%);text-align:center;padding:28px 20px}.load-brand{font-size:31px;font-weight:950;letter-spacing:-1px}.load-brand span{display:block;font-size:8px;letter-spacing:2.3px;font-weight:600;margin-top:5px;color:#adbecb}.load-members{display:flex;justify-content:center;gap:13px;height:72px;align-items:center;margin:20px 0 10px}.load-members i{display:block;width:19px;height:28px;border-radius:9px 9px 7px 7px;background:#e6ff28;box-shadow:0 6px 0 #0002;animation:mosh-loading 1.1s ease-in-out infinite}.load-members i:nth-child(2){background:#ff5966;animation-delay:.13s}.load-members i:nth-child(3){background:#438fff;animation-delay:.26s}.load-members i:nth-child(4){background:#ff58b5;animation-delay:.39s}.load-eyebrow{font-size:11px;color:#abd8cf;letter-spacing:2px;margin:0 0 12px}#loadTitle{font-size:25px;margin:0 0 20px;line-height:1.45}#loadStatus{font-size:13px;color:#d6e3e9;margin:0 0 7px;line-height:1.7}#loadCount{display:block;font-size:12px;font-variant-numeric:tabular-nums;color:#effb72;min-height:18px}#loadProgress{appearance:none;display:block;border:0;border-radius:8px;overflow:hidden;width:100%;height:7px;margin:19px 0;background:#53677b}#loadProgress::-webkit-progress-bar{background:#53677b;border-radius:8px}#loadProgress::-webkit-progress-value{background:#effb72;border-radius:8px;transition:width .2s}#loadProgress::-moz-progress-bar{background:#effb72;border-radius:8px}#loadProgress:indeterminate{background:linear-gradient(90deg,#53677b 20%,#b2e0d4 50%,#53677b 80%);background-size:200% 100%;animation:loading-sweep 1.5s linear infinite}#loadProgress:indeterminate::-webkit-progress-bar{background:transparent}#loadNote{font-size:11px;line-height:1.8;color:#acbdcb;margin:15px 0 0}#loadActions{margin-top:24px}#loadingScreen[data-state=error] .load-members i{animation:none;opacity:.5}#loadingScreen[data-state=error] #loadTitle{font-size:21px;color:#ffd4c5}@keyframes mosh-loading{0%,70%,100%{transform:translateY(0) rotate(0)}35%{transform:translateY(-11px) rotate(-9deg)}}@keyframes loading-sweep{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.load-members i,#loadProgress:indeterminate{animation:none!important}#loadProgress::-webkit-progress-value{transition:none}}@media(max-height:500px){.load-card{padding:10px 20px}.load-members{height:38px;margin:12px 0}.load-brand{font-size:24px}#loadTitle{font-size:21px;margin-bottom:12px}}

/* Edition identity stays on the title screen; play remains uncluttered. */
.edition-badge{display:inline-block;padding:5px 11px;border-radius:20px;background:#b2e0d4;color:#20344b;font-size:13px;letter-spacing:.04em}#intro h1{font-size:clamp(32px,3.8vw,44px);line-height:1.05}.edition-link{display:block;margin-top:16px;text-align:center;font-size:13px;color:#b2e0d4;text-underline-offset:4px}.edition-link:focus-visible{outline:3px solid #fff1a0;outline-offset:4px}.load-eyebrow span{display:inline-block;margin-top:8px;font-size:12px;letter-spacing:1px;color:#effb72}@media(max-width:700px){#intro h1{font-size:36px}}@media(max-height:620px){#intro h1{font-size:29px}#intro .artist{margin:8px 0}#intro .instructions{margin:10px 0}.edition-link{margin-top:10px}}

/* Ranking stays off the playfield and never blocks another attempt. */
#rankingDialog{width:min(460px,calc(100% - 24px));max-height:calc(100svh - 32px);padding:22px;border:2px solid #8baba8;border-radius:26px;background:#20344b;color:#fff9ed;box-shadow:0 16px 80px #0008;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
#rankingDialog::backdrop{background:#102036c9;backdrop-filter:blur(5px)}
.ranking-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.ranking-head h2{font-size:24px;line-height:1.4;margin:5px 0 18px}.ranking-head .tag{font-size:12px}
#rankingClose{align-self:flex-start;flex:0 0 44px;width:44px;height:44px;border:0;border-radius:50%;font-size:27px;background:#3a5168;color:#fff}
.ranking-switch{display:flex;gap:6px;padding:5px;border-radius:18px;background:#15273c}.ranking-switch button{flex:1;min-height:42px;border:0;border-radius:13px;background:transparent;color:#c8dade;font-weight:800}.ranking-switch button[aria-pressed=true]{background:#b2e0d4;color:#172b3e}
.ranking-caption{font-size:11px;line-height:1.65;color:#b9cdd4;margin:12px 0}
#rankingForm{padding:15px;border-radius:18px;border:1px solid #effb724c;background:#2c4155;margin:17px 0}#rankingForm>p:first-child{margin:0 0 12px;font-size:14px}#rankingSubmitScore{color:#effb72;font-size:20px;white-space:nowrap}#rankingForm label{display:block;font-size:13px}#rankingForm label small{display:inline-block;font-size:10px;color:#ccdade;margin-left:4px}
.ranking-entry{display:flex;gap:8px;margin:8px 0}.ranking-entry input{min-width:0;flex:1;border:1px solid #99b8c2;border-radius:12px;background:#152b41;color:#fff;padding:12px;font-size:16px}.ranking-entry button{min-width:64px;border:0;border-radius:12px;background:#effb72;color:#172b3e;font-weight:900}
#rankingPrivacy{display:block;color:#c6d7dc;font-size:10px;line-height:1.6}#rankingFormStatus,#rankingStatus{font-size:13px;line-height:1.7;color:#f9db9f}#rankingFormStatus:empty,#rankingStatus:empty{display:none}#rankingMine{padding:12px;border-radius:12px;background:#b2e0d4;color:#173045;font-size:14px;font-weight:800;text-align:center}
.ranking-list-head{display:flex;align-items:center;justify-content:space-between;color:#b9cdd4;font-size:12px}.ranking-list-head button{min-height:40px;border:0;background:transparent;color:#b2e0d4;padding:8px;font-size:13px}
#rankingRows{list-style:none;padding:0;margin:5px 0}.ranking-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:8px;border-bottom:1px solid #b4cfd126;padding:13px 8px}.ranking-row.mine{background:#effb7212;border-radius:12px}.ranking-position{font-size:21px;color:#b2e0d4}.ranking-row:first-child .ranking-position{color:#effb72}.ranking-identity strong{display:block;font-size:14px;overflow-wrap:anywhere}.ranking-identity small{display:block;font-size:10px;color:#b9cdd4;margin-top:5px}.ranking-score{font-size:17px;font-variant-numeric:tabular-nums;color:#fff5bd}
@media(max-width:360px){#rankingDialog{padding:16px}.ranking-head h2{font-size:21px}.ranking-score{font-size:15px}.ranking-row{gap:6px;padding:12px 2px}.ranking-identity strong{font-size:12px}}

.ranking-switch + .ranking-switch{margin-top:8px}

/* Release label stays within menus, away from gameplay controls. */
.panel .game-version{margin:12px 0 0;color:#cbd5e1;font:500 12px/1.5 system-ui,sans-serif;letter-spacing:.03em;text-align:center;overflow-wrap:anywhere;}

/* Optional member benefit, secondary to play/retry. */
.club-promo{margin-top:18px;padding:14px 15px;border:1px solid #ff88c359;border-radius:16px;background:linear-gradient(120deg,#ff88c30f,#b2e0d409);text-align:left;}
.club-promo-tag{display:block;color:#ffb4d8;font-size:10px;font-weight:800;letter-spacing:.08em;}
.club-promo-title{margin:6px 0 4px;font-size:15px;font-weight:800;line-height:1.5;color:#fff9ed;overflow-wrap:anywhere;}
.club-promo-copy{margin:0;color:#cbd5e1;font-size:12px;line-height:1.6;}
.club-promo-link{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;margin-top:7px;color:#b2e0d4;font-size:12px;font-weight:800;text-decoration:underline;text-underline-offset:4px;}
.club-promo-link:focus-visible{outline:3px solid #fff1a0;outline-offset:3px;border-radius:4px;}
@media(max-height:620px){.club-promo{margin-top:12px;padding:11px 13px;}}
