:root{font-family:'Arial','Hiragino Kaku Gothic ProN','Noto Sans JP',sans-serif;color:#173f36;background:#f1f0e8;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #e86c3c;outline-offset:4px}header{height:96px;max-width:1420px;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #173f3624;padding:0 36px}.brand{display:flex;gap:11px;align-items:center;color:inherit;text-decoration:none;font-size:10px;letter-spacing:1.4px;line-height:1.6}.brand b{font-size:13px;letter-spacing:.6px}.brand-icon{font-size:30px;background:#173f36;color:#f4f1df;width:43px;height:43px;display:grid;place-items:center;border-radius:50%}.header-right{display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:1.3px}.header-right button{margin-left:14px;background:transparent;border:1px solid #173f3633;border-radius:22px;padding:9px 14px;font-size:11px;letter-spacing:0}.live-dot{width:6px;height:6px;border-radius:50%;background:#e7794a}.layout{max-width:1420px;margin:38px auto 28px;display:grid;grid-template-columns:1fr minmax(360px,480px) .74fr;gap:48px;padding:0 36px;align-items:center}.eyebrow{font-size:11px;letter-spacing:3px;margin-bottom:20px}h1{font-size:clamp(32px,3.6vw,50px);line-height:1.4;letter-spacing:-2px;font-weight:900;margin:0}h1 em{color:#df6236;font-style:normal}.lead{font-size:18px;font-weight:700;margin:22px 0 14px}.description{font-size:12px;line-height:2;color:#6a766c}.rule-card{display:flex;gap:13px;align-items:start;margin-top:24px}.number{font-family:monospace;color:#dd663b;font-size:12px;border-top:1px solid #dd663b;padding-top:4px}.rule-card b{font-size:13px}.rule-card p{font-size:10px;color:#738074;margin:7px 0}.perfect-note{display:flex;gap:15px;align-items:center;margin-top:27px;padding:17px 0;border-top:1px solid #173f3620;border-bottom:1px solid #173f3620;font-size:12px;font-weight:bold}.perfect-note>span{font-size:32px;color:#df6236}.mult{font-size:22px;margin-left:8px;color:#df6236}.perfect-note small{display:block;color:#778073;font-size:9px;margin-top:5px;font-weight:normal}.best-label{margin-top:25px;font-size:9px;letter-spacing:1px}.best-label b{font-size:23px;margin-left:16px;letter-spacing:0}.best-label>span{margin-left:5px;font-size:8px}.game-shell{height:min(760px,calc(100svh - 160px));min-height:580px;position:relative;overflow:hidden;border-radius:20px;background:#c0d8c2;box-shadow:0 22px 50px #15392e23;border:5px solid #fff}#stage{position:absolute;inset:0}canvas{display:block;width:100%;height:100%}.hud{position:absolute;top:22px;left:23px;right:23px;pointer-events:none}.score-box small{display:block;font-size:9px;letter-spacing:2px}.score-box strong{font-family:monospace;font-size:37px;letter-spacing:-1px;color:#153d32}#pause{position:absolute;right:0;top:0;border:1px solid #163e3733;background:#f9f6e7aa;border-radius:50%;height:33px;width:33px;pointer-events:auto}.metrics{display:flex;justify-content:space-between;margin-top:12px;border-top:1px solid #173f3630;padding-top:12px}.metrics span{display:block;font-size:8px;letter-spacing:1px}.metrics b{display:block;font-size:19px;margin-top:5px}.metrics i{font-style:normal}.metrics small{font-size:10px}#misses{color:#df6236;letter-spacing:3px;font-size:17px}#level{position:absolute;top:155px;left:0;right:0;text-align:center;font-size:8px;letter-spacing:3px;color:#34594b}.controls{position:absolute;bottom:18px;left:15px;right:15px;display:flex;gap:10px}.shoulder{position:relative;flex:1;height:79px;border-radius:12px;border:1px solid #fbfaf050;box-shadow:0 4px 0 #102f27;background:#1a493e;color:#fff4d6;display:flex;align-items:center;justify-content:center;gap:13px;touch-action:none;user-select:none}.shoulder.right{background:#e57546;box-shadow:0 4px 0 #a5472e}.shoulder b{font-size:24px;letter-spacing:3px}.shoulder small{display:block;font-size:7px;letter-spacing:1px;margin-top:4px}.shoulder .arrow{font-size:30px;font-weight:300}.shoulder kbd{position:absolute;top:5px;right:7px;font-size:8px;opacity:.6}.shoulder:active,.shoulder.pressed{transform:translateY(3px);box-shadow:none;filter:brightness(1.2)}.under-game{display:flex;justify-content:space-between;padding:14px 6px;font-size:8px;letter-spacing:1px;color:#758075}.under-game span:first-child{color:#274c3d}.session-label{font-size:9px;letter-spacing:1px;display:flex;justify-content:space-between}.session-label span{font-size:23px}h2{font-size:36px;line-height:1.5;margin:20px 0 29px}.legend{display:flex;gap:10px;margin:22px 0}.legend-icon{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:24px}.orange{background:#ec75442a;color:#d36b39}.green{background:#1b523c15}.legend b{font-size:12px}.legend p{font-size:10px;line-height:1.8;color:#7a8377;margin:5px 0}.timing-card{margin-top:32px;border-top:1px solid #173f3624;padding-top:23px}.timing-card>span{font-size:9px;letter-spacing:1px}.timing-bar{height:7px;background:#c4cbbc;margin:19px 0 8px;border-radius:10px;text-align:center}.timing-bar i{display:block;width:36%;height:100%;background:#df7345;margin:auto}.timing-labels{display:flex;justify-content:space-between;font-family:monospace;font-size:9px}.timing-labels b{color:#d8693d}.timing-card p{font-size:11px;line-height:1.9;color:#7a8377;margin-top:19px}.stamp{position:relative;transform:rotate(-8deg);border:2px solid #6f7c6266;padding:12px 16px;font-size:15px;font-weight:900;line-height:1.5;color:#849075;display:inline-block;margin:42px 0 0 10px}.stamp span{position:absolute;right:-13px;bottom:-15px;font-size:34px;background:#f1f0e8}footer{max-width:1348px;margin:0 auto;padding:24px 0;border-top:1px solid #173f3620;display:flex;justify-content:space-between;font-size:8px;letter-spacing:1px;color:#899080}.overlay{position:absolute;inset:180px 12px 110px;display:flex;align-items:center;justify-content:center;z-index:5;pointer-events:none}#panel{width:100%;max-width:350px;text-align:center;pointer-events:auto;padding:26px 22px;background:#faf7eaf2;box-shadow:0 8px 25px #15392e14;border:1px solid #fff;border-radius:15px;backdrop-filter:blur(7px)}#panel .tag{font-size:8px;letter-spacing:3px;color:#df693c}#panel h2{font-size:27px;line-height:1.5;margin:13px 0 9px}#panel p{font-size:11px;line-height:1.9;color:#647160}#panel .start{width:100%;border:0;border-radius:7px;background:#e87544;color:white;padding:15px;font-weight:bold;font-size:14px;letter-spacing:2px;box-shadow:0 3px 0 #b34d29;margin-top:13px}#panel .secondary{background:none;border:0;color:#53634f;padding:13px;font-size:11px;text-decoration:underline;text-underline-offset:4px}#panel .big-score{font: bold 39px monospace;color:#e36b3a;margin:14px 0}#panel .result-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:10px;text-align:left;background:#e9ecdf;padding:15px;border-radius:8px}#panel .result-grid b{float:right}#feedback{position:absolute;top:42%;left:0;right:0;text-align:center;color:#f9f5da;font-size:38px;font-style:italic;font-weight:900;text-shadow:0 3px #224232,2px 0 #224232,-2px 0 #224232;pointer-events:none;opacity:0}#feedback.show{animation:pop .8s ease-out}#speech{position:absolute;left:17%;top:44%;border-radius:12px;background:#fff8df;padding:10px 16px;font-weight:bold;display:none;font-size:17px}#flash{position:absolute;inset:0;background:#fff7db;opacity:0;pointer-events:none}.target-line{position:absolute;top:68%;left:14%;right:14%;border-bottom:1px dashed #fff8df88;transform:rotate(-1deg);pointer-events:none}.target-line span{font-size:6px;color:#fff8dfaa;letter-spacing:2px}.grain{position:absolute;inset:0;box-shadow:inset 0 0 80px #26473414;pointer-events:none}@keyframes pop{0%{opacity:0;transform:scale(.4) rotate(-8deg)}15%,65%{opacity:1;transform:scale(1) rotate(-6deg)}100%{opacity:0;transform:translateY(-30px) scale(1.05) rotate(-6deg)}}
@media(min-width:1500px){.layout{gap:65px}}@media(max-width:1100px){.layout{grid-template-columns:1fr minmax(350px,460px);gap:35px;max-width:930px}.side{display:none}header{max-width:930px}footer{margin:0 36px}.game-shell{height:720px}}@media(max-width:700px){body{background:#c6dac7;overscroll-behavior:none;touch-action:manipulation}header,.intro,.side,footer,.under-game{display:none}.layout{display:block;margin:0;padding:0}.game-shell{height:100svh;min-height:450px;border:0;border-radius:0;box-shadow:none}.game-column{width:100%;max-width:520px;margin:auto}.hud{top:max(18px,env(safe-area-inset-top));left:22px;right:22px}.controls{bottom:max(20px,env(safe-area-inset-bottom));left:16px;right:16px}.shoulder{height:85px}.overlay{inset:170px 16px 120px}.target-line{top:68%}}@media(prefers-reduced-motion:reduce){#feedback.show{animation-duration:.4s}}

#gameSound{position:absolute;right:42px;top:4px;pointer-events:auto;background:#f9f6e7bb;border:1px solid #163e3733;border-radius:16px;padding:6px 9px;font-size:9px}

#feedback .detail{display:block;margin-top:8px;font-size:18px;font-style:normal;letter-spacing:2px;line-height:1.4}

#panel.tutorial-panel{padding:18px 12px;max-height:100%;overflow:auto;touch-action:pan-y}
#panel.tutorial-panel h2{font-size:18px;line-height:1.55;margin:10px 0 13px}
.tutorial-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.tutorial-cards>div{border-radius:8px;background:#eeeede;padding:5px 3px}
.tutorial-cards img{width:100%;height:auto;aspect-ratio:1.5;object-fit:contain;display:block;border-radius:5px}
.tutorial-cards b{font-size:10px;display:block;margin-top:6px;white-space:nowrap}
#panel .tutorial-cards p{font-size:10px;line-height:1.5;margin:5px 0}
#panel .tutorial-rule{font-size:10px;line-height:1.8;margin:12px 0 3px}
#panel.tutorial-panel .start{padding:12px;margin-top:8px}
#panel.tutorial-panel .secondary{padding:10px}

.tutorial-cards b{white-space:normal;line-height:1.5;padding:0 1px 4px}

#panel{max-height:100%;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
#panel .credits{margin:8px 0 0;font-size:10px;color:#778073}
#panel .credits summary{cursor:pointer}
#panel .credits p{margin:7px 0 0;font-size:10px}
#panel .credits a{color:#53634f;text-underline-offset:2px}
#headerRanking{background:transparent;border:1px solid #173f3633;border-radius:22px;padding:9px 13px;font-size:11px}
#headerRanking:disabled{opacity:.45;cursor:default}
#panel .rank-form{margin:13px 0 8px;padding:12px;text-align:left;background:#e9ecdf;border-radius:10px}
#panel .rank-form>label{display:block;font-size:11px;font-weight:800;margin-bottom:7px}
#panel .rank-form>div{display:flex;align-items:stretch;gap:6px}
#panel .rank-form input{min-width:0;flex:1 1 auto;padding:10px 9px;border:1px solid #aeb8a9;border-radius:7px;background:#fffefa;font:inherit;font-size:12px}
#panel .rank-form button{flex:0 0 118px;padding:8px 7px;border:0;border-radius:7px;background:#1a493e;color:white;font-size:10px;font-weight:800}
#panel .rank-form button:disabled{opacity:.6}
#panel .rank-form p{min-height:1.4em;margin:7px 0 0;font-size:9px;line-height:1.5}
#panel .share-button{width:100%;margin-top:8px;border:0;border-radius:7px;background:#142c27;color:#fff;padding:12px;font-size:12px;font-weight:800}
#panel .secondary{width:100%}
.ranking-modal{position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;padding:14px;background:#102720b8;backdrop-filter:blur(4px)}
.ranking-modal.hidden{display:none}
.ranking-panel{width:min(100%,370px);max-height:90%;overflow:auto;padding:18px;background:#faf7eaf5;border:1px solid #fff;border-radius:15px;box-shadow:0 8px 25px #15392e35}
.ranking-panel header{height:auto;max-width:none;margin:0 0 8px;padding:0;border:0;gap:8px}
.ranking-panel h2{margin:0;font-size:18px;line-height:1.3}
.ranking-panel header button{flex:0 0 auto;border:1px solid #173f3633;background:transparent;border-radius:18px;padding:7px 10px;color:#173f36;font-size:10px}
.ranking-note,.ranking-status{font-size:10px!important;line-height:1.6;color:#6a766c}
.ranking-panel ol{margin:10px 0;padding:0;list-style:none;max-height:55vh;overflow:auto}
.ranking-panel li{padding:9px 3px;border-bottom:1px solid #173f3620;font-size:12px}
.ranking-row{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px}
.rank-place{color:#df693c;font-weight:900}.rank-player{overflow-wrap:anywhere}.rank-points{font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:700px){.header-right{gap:8px}.ranking-modal{padding:18px}.ranking-panel{max-height:86%}#panel .rank-form button{flex-basis:112px}}
