:root{--frame:#4fd6ff;--stage-a:#ff9ad3;--stage-b:#c9a9ff;--stage-c:#8fcbff;--navy:#1d2c6b;--navy-soft:#5a6399;--white:#fff;--mist:#f1f2fb;--mist-2:#e2e5f5;--pink:#ff4fa8;--blue:#3fa9ff;--red:#ec2348;--red-deep:#a8122f;--green:#22c27a;--yellow:#ffcf2e;--coral:#ff5b6e;--screen:#1b1b2f;--drop:#48309633;--bg:var(--frame);--bg-2:var(--mist);--card:var(--white);--card-2:var(--mist-2);--line:var(--mist-2);--text:var(--navy);--muted:var(--navy-soft);--yellow-cell:var(--yellow);--ink:var(--navy);--font:"M PLUS 1p", "Hiragino Sans", "Yu Gothic", system-ui, sans-serif;--r-sm:10px;--r-md:16px;--r-lg:28px;--radius:var(--r-md);--fast:.12s;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#ff4fa8b3 transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ff4fa899;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--pink)}::-webkit-scrollbar-corner{background:0 0}html{scrollbar-width:none}html::-webkit-scrollbar{display:none}html,body{color:var(--navy);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-weight:500}body{background:linear-gradient(#fff3 1px, transparent 1px) 0 0 / 46px 46px, linear-gradient(90deg, #fff3 1px, transparent 1px) 0 0 / 46px 46px, linear-gradient(165deg, var(--stage-a) 0%, var(--stage-b) 52%, var(--stage-c) 100%);background-attachment:fixed;min-height:100vh}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.app{isolation:isolate;max-width:1280px;margin:0 auto;padding:16px 16px 48px;position:relative}.app:before{background:#ff4fa88c;top:46%;left:34px;box-shadow:26px 0 #ff4fa866,0 26px #ff4fa859,52px 26px #ff4fa84d,26px 52px #ff4fa840,78px 52px #ff4fa82e}.app:after{background:#b0ff7899;bottom:60px;right:110px;box-shadow:-26px 0 #b0ff7873,0 -26px #b0ff7866,-52px -26px #b0ff784d,-26px -52px #b0ff7838}.top{background:var(--white);box-shadow:8px 9px 0 var(--drop);border-radius:999px;align-items:center;gap:12px;margin-bottom:26px;padding:10px 12px 10px 22px;display:flex}.brand{align-items:center;gap:12px;min-width:0;display:flex}.logo{letter-spacing:-.02em;color:var(--navy);margin:0;font-size:1.9rem;font-weight:900;line-height:1}.logo span{color:var(--pink)}.puzzle-no{color:var(--white);background:linear-gradient(90deg, var(--pink), #ff7fc3);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;padding:4px 12px 5px;font-size:.85rem;font-weight:900}.top-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.nav-btn{color:var(--navy);white-space:nowrap;background:0 0;border:0;padding:8px 12px;font-size:1rem;font-weight:900;position:relative}.nav-btn:after{content:"";background:var(--pink);height:4px;transition:transform var(--fast) ease;border-radius:4px 4px 0 0;position:absolute;bottom:0;left:12px;right:12px;transform:scaleX(0)}.nav-btn:hover:after{transform:scaleX(1)}.btn{color:var(--navy);background:var(--white);box-shadow:inset 0 0 0 2.5px var(--mist-2), 0 5px 0 var(--mist-2);transition:transform var(--fast) ease, box-shadow var(--fast) ease, background var(--fast) ease;border:0;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:12px 22px;font-size:1rem;font-weight:900;text-decoration:none;display:inline-flex}.btn:active:not(:disabled){box-shadow:inset 0 0 0 2.5px var(--mist-2), 0 1px 0 var(--mist-2);transform:translateY(4px)}.btn.primary{background:var(--red);color:var(--white);letter-spacing:.02em;box-shadow:0 5px 0 var(--red-deep)}.btn.primary:after{content:"";border-top:6px solid #0000;border-bottom:6px solid #0000;border-left:9px solid;width:0;height:0}.btn.primary:disabled:after{display:none}.btn.primary:hover:not(:disabled){background:#f53a5c}.btn.primary:active:not(:disabled){box-shadow:0 1px 0 var(--red-deep)}.btn.ghost:hover:not(:disabled){background:var(--mist)}.btn:disabled{background:var(--mist-2);color:var(--navy-soft);box-shadow:0 5px #cfd3ea}.icon-btn{width:40px;height:40px;color:var(--navy);transition:background var(--fast) ease, transform var(--fast) ease;background:0 0;border:0;border-radius:50%;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--mist-2)}.icon-btn:active{transform:scale(.92)}.icon-btn.muted{color:var(--navy-soft);opacity:.6}.icon-btn.on{background:var(--navy);color:var(--white)}.board{gap:30px;display:grid}.stage-card,.play-col,.message,.modal{background:var(--white);border-radius:var(--r-lg);box-shadow:10px 12px 0 var(--drop);position:relative}.stage-card:before,.play-col:before,.message:before,.stage-card:after,.play-col:after,.message:after{content:"";border-radius:99px;height:8px;position:absolute;left:28%;right:28%}.stage-card:before,.play-col:before,.message:before{background:var(--pink);top:-4px}.stage-card:after,.play-col:after,.message:after{background:var(--blue);bottom:-4px}.card-title{color:var(--navy);text-align:center;justify-content:center;align-items:center;gap:10px;margin:0;font-size:1.5rem;font-weight:900;line-height:1.2;display:flex}.card-title .arcs{flex:none;width:17px;height:30px;overflow:visible}.card-title .arcs:last-child{transform:scaleX(-1)}.arcs path{fill:none;stroke-width:3.2px;stroke-linecap:round}.arc-outer{stroke:var(--blue)}.arc-inner{stroke:var(--pink)}.arc-dot-outer{fill:var(--blue)}.arc-dot-inner{fill:var(--pink)}.stage-card{justify-items:center;gap:16px;min-width:0;padding:24px 18px 22px;display:grid}.stage-card>*,.player>*{min-width:0}.viewer-head{justify-content:center;max-width:100%;display:flex}.diff-tabs{flex-wrap:wrap;justify-content:center;gap:8px 6px;max-width:100%;padding:2px 2px 6px;display:flex}.diff-tabs button{background:var(--white);color:var(--navy);box-shadow:inset 0 0 0 2.5px var(--diff);transition:transform var(--fast) ease;border:0;border-radius:999px;flex:none;padding:6px 14px;font-size:.85rem;font-weight:900}.diff-tabs button:hover{transform:translateY(-1px)}.diff-tabs button.active{background:var(--diff);color:var(--navy);box-shadow:0 4px 0 color-mix(in srgb, var(--diff) 60%, var(--navy))}.player{justify-items:center;gap:18px;width:100%;display:grid}.player-canvas{aspect-ratio:1;background:var(--screen);width:calc(100% - 28px);max-width:480px;box-shadow:0 0 0 9px var(--mist), 0 0 0 12px var(--mist-2);border-radius:50%;margin-top:4px}.player-canvas canvas{cursor:pointer;border-radius:50%;width:100%;height:100%;display:block}.player-controls{background:var(--mist);border-radius:999px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 12px;max-width:100%;margin-top:6px;padding:6px 12px 6px 6px;display:flex}.tb-group{gap:2px;display:flex}.icon-btn.play-btn{background:var(--red);color:var(--white);box-shadow:0 3px 0 var(--red-deep)}.icon-btn.play-btn:hover{background:#f53a5c}.icon-btn.play-btn:active{box-shadow:0 1px 0 var(--red-deep);transform:translateY(2px)}.speed,.seg{background:var(--white);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.speed button,.seg button{color:var(--navy-soft);font-variant-numeric:tabular-nums;background:0 0;border:0;border-radius:999px;padding:4px 10px;font-size:.85rem;font-weight:700}.speed button:hover,.seg button:hover{color:var(--navy)}.speed button.active,.seg button.active{background:var(--blue);color:var(--white)}.note-speed{color:var(--navy);grid-template-columns:auto 96px 3.2ch;align-items:center;gap:8px;font-size:.85rem;font-weight:900;display:inline-grid}.note-speed span{white-space:nowrap}.note-speed input,.setting-row input[type=range]{width:100%;accent-color:var(--pink);cursor:pointer}.note-speed output{font-variant-numeric:tabular-nums;text-align:right}.viewer-settings{background:var(--mist);border-radius:var(--r-md);width:min(100%,380px);padding:6px 16px;animation:.16s both open;display:grid}.setting-row{grid-template-columns:1fr auto;align-items:center;gap:12px;min-height:40px;font-size:.9rem;font-weight:700;display:grid}.setting-row+.setting-row{border-top:2px dotted var(--mist-2)}.setting-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--pink);cursor:pointer}.setting-row input[type=range]{width:150px}.setting-row input:disabled{opacity:.4}.play-col{flex-direction:column;gap:16px;min-width:0;padding:24px 20px;display:flex}.status{gap:10px;display:grid}.status-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.status-big{font-variant-numeric:tabular-nums;font-size:1.2rem;font-weight:900}.status-clip{color:var(--white);background:var(--blue);white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:999px;padding:3px 12px 4px;font-size:.88rem;font-weight:900}.stages{grid-template-columns:repeat(7,1fr);gap:5px;margin:0;padding:0;list-style:none;display:grid}.stages li{text-align:center;background:var(--mist);color:#b4b9d6;font-variant-numeric:tabular-nums;border-radius:999px;padding:5px 0;font-size:.78rem;font-weight:900;transition:background .25s,color .25s}.stages li.open{background:var(--mist-2);color:var(--navy)}.stages li.current{background:var(--pink);color:var(--white);box-shadow:0 3px #c22a7c}.guess{gap:12px;display:grid}.guess-field{position:relative}.guess-icon{color:var(--navy-soft);pointer-events:none;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.guess-field:focus-within .guess-icon{color:var(--pink)}.guess-field input{width:100%;font:inherit;color:var(--navy);background:var(--mist);border:2.5px solid var(--mist-2);transition:border-color var(--fast) ease, box-shadow var(--fast) ease, background var(--fast) ease;border-radius:999px;padding:13px 18px 13px 46px;font-size:1.05rem;font-weight:700}.guess-field input::placeholder{color:var(--navy-soft);font-weight:500}.guess-field input:focus{background:var(--white);border-color:var(--pink);outline:none;box-shadow:0 0 0 4px #ff4fa833}.suggestions{z-index:10;background:var(--white);max-height:min(320px,50vh);box-shadow:0 0 0 2.5px var(--mist-2), 8px 10px 0 var(--drop);border-radius:20px;margin:0;padding:6px;list-style:none;animation:.14s both open;position:absolute;bottom:calc(100% + 8px);left:0;right:0;overflow-y:auto}.suggestions li{cursor:pointer;border-radius:14px;gap:1px;padding:8px 12px;display:grid}.suggestions li.active{background:#ffe3f1}.sug-title{font-weight:900}.sug-romaji,.result-romaji{color:#c2257a;font-size:.8rem;font-style:italic}.sug-artist{color:var(--navy-soft);white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.guess-actions{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:10px;display:grid}.guess-actions .btn{white-space:nowrap}.type-badge{vertical-align:.15em;white-space:nowrap;border-radius:6px;padding:1px 6px;font-size:.66rem;font-weight:900;display:inline-block}.type-badge.dx{color:#4a2400;background:linear-gradient(90deg,#ff9f1c,#ffcf2e)}.type-badge.std{background:var(--blue);color:var(--white)}.cell .type-badge{overflow-wrap:normal}.grid{gap:8px;display:grid}.grid-row{grid-template-columns:minmax(0,2.2fr) minmax(0,1.4fr) minmax(0,1.4fr) minmax(0,.9fr) minmax(0,.8fr);gap:5px;display:grid}.grid-head span{color:var(--navy-soft);text-align:center;font-size:.85rem;font-weight:900}.grid-head span:first-child{text-align:left;padding-left:12px}.grid-row .name{background:var(--mist);border-radius:var(--r-sm);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:8px;min-height:56px;padding:10px 14px;font-size:1rem;font-weight:900;display:flex;overflow:hidden}.grid-row .name small{color:var(--navy-soft);font-variant-numeric:tabular-nums;flex:none;min-width:2.4ch;font-size:.82rem}.grid-row.correct .name{background:var(--green);color:var(--white)}.grid-row.correct .name small{color:#ffffffd9}.grid-row.correct{animation:.5s hit}.grid-row.skipped .name,.grid-row.empty .name{border:2.5px dashed var(--mist-2);color:var(--navy-soft);background:0 0;grid-column:1/-1;font-weight:700}.grid-row.empty .name{color:#b4b9d6}.grid-row.empty.next .name{color:var(--navy);border-color:#ff4fa88c}.cell{border-radius:var(--r-sm);text-align:center;overflow-wrap:anywhere;min-height:56px;color:var(--white);text-shadow:0 1px 1px #1d2c6b59;justify-content:center;align-items:center;gap:2px;padding:8px 6px;font-size:.95rem;font-weight:900;line-height:1.15;animation:.35s both flip;display:flex}.grid-row .cell:nth-child(3){animation-delay:60ms}.grid-row .cell:nth-child(4){animation-delay:.12s}.grid-row .cell:nth-child(5){animation-delay:.18s}.cell.green{background:var(--green)}.cell.yellow{background:var(--yellow);color:var(--navy);text-shadow:none}.cell.red{background:var(--coral)}.cell .arrow{font-size:1.2rem}.cell .type-badge{padding:2px 8px;font-size:.78rem}.grid-left{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.result{text-align:center;box-shadow:inset 0 0 0 2.5px var(--green);background:linear-gradient(160deg,#d8fbe9,#e9f4ff);border-radius:22px;padding:18px 16px;animation:.3s both open}.result.lost{box-shadow:inset 0 0 0 2.5px var(--coral);background:linear-gradient(160deg,#ffe4ea,#f1ecff)}.result-kicker{color:#128a55;margin:0;font-weight:900}.result.lost .result-kicker{color:#c4223a}.result-title{margin:6px 0 2px;font-size:1.55rem;font-weight:900;line-height:1.25}.result-romaji{margin:0 0 2px}.result-artist{color:var(--navy-soft);margin:0;font-weight:700}.result-meta{flex-wrap:wrap;justify-content:center;gap:8px 22px;margin:12px 0 4px;display:flex}.result-meta div{display:grid}.result-meta dt{color:var(--navy-soft);font-size:.76rem;font-weight:700}.result-meta dd{margin:0;font-weight:900}.countdown{margin:10px 0 0;font-size:.92rem;font-weight:700}.countdown strong{color:var(--red);font-variant-numeric:tabular-nums;font-weight:900}.debug{position:relative}.debug summary{cursor:pointer;color:var(--navy);background:var(--yellow);border-radius:999px;padding:6px 12px;font-size:.76rem;font-weight:900;list-style:none}.debug summary::-webkit-details-marker{display:none}.debug-panel{z-index:20;background:var(--white);width:min(280px,100vw - 32px);box-shadow:0 0 0 2.5px var(--mist-2), 8px 10px 0 var(--drop);border-radius:20px;gap:10px;padding:14px;display:grid;position:absolute;top:calc(100% + 12px);right:0}.debug-date{margin:0;font-size:.9rem}.debug-row{grid-template-columns:1fr auto;gap:8px;display:grid}.debug-row input{font:inherit;color:var(--navy);background:var(--mist);border:2px solid var(--mist-2);border-radius:12px;min-width:0;padding:8px}.message{text-align:center;padding:56px 20px}.message h2{margin:0 0 8px;font-weight:900}.message p{color:var(--navy-soft);margin:0}.error{color:#c4223a;text-align:center;margin:0;font-size:.92rem;font-weight:700}.modal{color:var(--navy);border:0;width:min(520px,100vw - 32px);max-height:calc(100vh - 48px);padding:0}.modal[open]{animation:.2s both open}.modal::backdrop{background:#1d2c6b73}.modal-body{border-top:8px solid var(--pink);padding:26px 24px 24px}.modal h2{margin:0 0 10px;font-size:1.6rem;font-weight:900}.modal h3{margin:20px 0 8px;font-size:1.05rem;font-weight:900}.modal ul{padding-left:18px;line-height:1.6}.modal .legend{gap:10px;padding:0;list-style:none;display:grid}.modal .legend li{grid-template-columns:82px 1fr;align-items:center;gap:10px;font-size:.92rem;display:grid}.modal .legend .cell{min-height:30px;animation:none}.modal .btn{width:100%;margin-top:10px}.muted{color:var(--navy-soft)}.small{font-size:.8rem}@keyframes flip{0%{opacity:0;transform:rotateX(90deg)}}@keyframes open{0%{opacity:0;transform:translateY(4px)scale(.98)}}@keyframes hit{0%{transform:scale(.97)}50%{transform:scale(1.025)}to{transform:scale(1)}}@media (width<=560px){.app{padding:10px 10px 32px}.top{margin-bottom:20px;padding:8px 8px 8px 16px}.logo{font-size:1.55rem}.nav-btn{padding:8px;font-size:.9rem}.stage-card{padding:22px 12px 18px}.play-col{padding:22px 14px 20px}.card-title{font-size:1.3rem}.player-controls{border-radius:24px;gap:6px;padding:6px 10px 6px 6px}.player-controls .icon-btn{width:34px;height:34px}.speed button{padding:4px 8px}.note-speed{order:5;grid-template-columns:auto 1fr 3.2ch;width:100%;padding:0 6px 4px}.grid-row{grid-template-columns:minmax(0,1.8fr) minmax(0,1.3fr) minmax(0,1.3fr) minmax(0,.85fr) minmax(0,.75fr);gap:4px}.cell{min-height:50px;padding:6px 3px;font-size:.74rem}.cell .type-badge{padding:1px 4px;font-size:.64rem}.grid-row .name{min-height:50px;padding:8px 9px;font-size:.84rem}}@media (width>=960px){.app{padding:18px 36px 64px}.logo{font-size:2.1rem}.board{grid-template-columns:minmax(360px,.78fr) minmax(0,1.22fr);align-items:start;gap:32px}.stage-card{padding:26px}.board .player-canvas{max-width:min(500px,100vh - 330px)}.board .player-controls{border-radius:24px;padding:6px 12px 6px 6px}.board .note-speed{order:5;grid-template-columns:auto 1fr 3.2ch;width:100%;padding:0 6px 4px}.play-col{padding:26px 28px 28px}.board .guess{grid-template-columns:minmax(0,1fr) auto}.board .guess-actions{display:contents}.board .guess-actions>:last-child{grid-area:1/2;padding-left:28px;padding-right:26px}.board .guess-actions>:first-child{grid-column:1/-1;justify-self:start;padding:8px 16px;font-size:.9rem}.board .suggestions{top:calc(100% + 8px);bottom:auto}.message{max-width:600px;margin:0 auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.player-canvas{position:relative}.tap-to-play{color:var(--white);background:var(--red);box-shadow:0 5px 0 var(--red-deep);border:0;border-radius:999px;align-items:center;gap:8px;padding:14px 28px 14px 22px;font-size:1.15rem;font-weight:900;animation:.2s both open;display:inline-flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.tap-to-play:hover{background:#f53a5c}.tap-to-play:active{box-shadow:0 1px 0 var(--red-deep);transform:translate(-50%,calc(4px - 50%))}
