/* Kyoto Bounce: warm Japanese cabinet art over the realistically lit station. */
:root{--ink:#121b32;--paper:#f8eed6;--gold:#ffd260;--cyan:#39d9ed;--red:#ff655d;--accent:var(--gold);font-family:ui-monospace,'SFMono-Regular',Menlo,monospace;color:var(--paper)}
header{z-index:4;padding:22px 28px;background:linear-gradient(#111a31eb,#111a3180,transparent)}
.identity{gap:14px}.seal{background:var(--red);color:var(--ink);padding:7px 10px;text-align:center;font:700 11px/1.25 sans-serif;border-radius:0;box-shadow:3px 3px 0 var(--gold)}.seal b{font:900 28px/1 sans-serif}h1{font:900 24px/.95 Impact,'Arial Narrow',sans-serif;letter-spacing:1.2px;transform:skew(-6deg)}h1 strong{color:var(--gold)}header p{font-size:8px;letter-spacing:1.6px;margin-top:10px;opacity:.95}.session{font-size:9px;gap:8px}.session input{background:#111a31df;border-radius:0;width:110px;font:inherit}.audio-controls{display:flex;gap:6px;margin-right:14px}.audio-controls button{font-size:8px;padding:8px;border-color:#f8eed63a}.audio-controls button[aria-pressed=true]{color:var(--gold)}
button{font-family:inherit;border-radius:0;border:1px solid #e0e7ee35;background:#ffffff08;letter-spacing:.1px;transition:background .12s,color .12s,transform .12s;line-height:1.4}button:hover:not(:disabled){background:var(--gold);color:var(--ink);border-color:var(--gold)}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}button:disabled{cursor:not-allowed}.eyebrow{color:var(--gold);font-size:9px;letter-spacing:1.5px}kbd{opacity:.8;color:var(--gold)}
#competition,#throw-panel,#flight-panel,#shot-details{background:linear-gradient(125deg,#18243bf5,#10192bf2);border:1px solid #edf1ea42;border-radius:0;box-shadow:4px 4px 0 #0b1229aa;backdrop-filter:blur(12px)}
#competition{top:115px;padding:20px;width:304px;max-height:calc(100vh - 205px);border-top:3px solid var(--red);scrollbar-color:#ffd26077 #10192b}#competition h2{font:900 25px/1.06 Impact,'Arial Narrow',sans-serif;letter-spacing:.5px;margin:16px 0}#competition p{font-size:10px;color:#c6ced9;line-height:1.65}#competition .panel-top button{color:var(--cyan)}#turn-status{font-size:9px;color:var(--cyan);line-height:1.6;border-bottom:1px dashed #ffffff2b}#course-list{gap:8px;counter-reset:course}.course{display:flex;align-items:center;gap:12px;padding:13px 10px;font-size:12px;border-color:#e9edf422}.course::before{counter-increment:course;content:counter(course,decimal-leading-zero);color:#a1abc2;font-size:9px}.course.selected{background:var(--gold);border-color:var(--gold);color:var(--ink);box-shadow:3px 3px 0 #a1733266}.course.selected::before{color:#5b4527}.course.selected::after{content:'◀';font-size:9px;margin-left:auto}.board-title{margin-top:22px;border-bottom:1px solid #ffffff20;padding-bottom:8px}.score-row{border:0;border-bottom:1px dashed #ffffff1e;padding:10px 2px;font-size:11px}.score-row b{color:var(--gold);font-variant-numeric:tabular-nums}.score-row:hover b{color:var(--ink)}#show-overview{width:100%;border-color:#39d9ed80;color:var(--cyan);margin:5px 0 10px;text-align:left;padding:11px}#show-overview:hover{color:var(--ink)}#use-hint{color:var(--paper)}#hint-note:empty{display:none}#save-challenge{background:var(--gold);color:var(--ink)}.field input,#replay-speed{border-radius:0}.circle-control>button{color:var(--cyan)}.circle-control:nth-of-type(3)>button{color:var(--gold)}
#throw-panel,#flight-panel{border-top:3px solid var(--cyan);width:282px}#throw-panel h2{font:900 26px/1 Impact,'Arial Narrow',sans-serif;letter-spacing:.6px;margin-bottom:22px;color:var(--paper)}.power-track{border-radius:0;height:12px;border:1px solid #f8eed622;margin-bottom:19px;background:repeating-linear-gradient(90deg,#fff1 0 8px,#fff0 8px 10px)}.power-track i{background:repeating-linear-gradient(90deg,transparent 0 8px,#142034 8px 10px),linear-gradient(90deg,var(--cyan),var(--gold) 65%,var(--red));border-radius:0}.power-label{font-size:9px;letter-spacing:.1px}.power-caption{font-size:8px}.spin-row span{font-size:9px;color:#bfc9d8}.stat b{font:900 52px/1 Impact,'Arial Narrow',sans-serif;color:var(--gold)}.stat span{font-size:9px}.style-reminder{color:var(--gold);font-size:9px;line-height:1.6}.is-playing #throw-panel{background:#111c32e0;border-top:2px solid var(--cyan)}
#arcade-hud{position:absolute;top:116px;left:28px;min-width:238px;max-width:282px;padding:13px 15px;border-left:3px solid var(--gold);background:#111a31db;pointer-events:none}#hud-course{display:block;font:900 17px/1.2 Impact,'Arial Narrow',sans-serif;letter-spacing:.5px;text-transform:uppercase;color:var(--paper)}#arcade-hud>div{display:flex;flex-direction:column;gap:8px;margin-top:12px;font-size:9px}#hud-best{font-size:14px;letter-spacing:2px;color:var(--gold);margin-left:8px}#hud-target{color:var(--cyan);font-size:9px}
#notice{z-index:5;border-radius:0;background:#111b32ed;top:110px;font-size:10px;border-bottom:2px solid var(--gold);line-height:1.6;max-width:min(450px,70vw);pointer-events:none}#reticle{width:20px;height:20px;border-radius:0;clip-path:polygon(0 0,35% 0,35% 10%,65% 10%,65% 0,100% 0,100% 35%,90% 35%,90% 65%,100% 65%,100% 100%,65% 100%,65% 90%,35% 90%,35% 100%,0 100%,0 65%,10% 65%,10% 35%,0 35%);border:2px solid #fffdf0;box-shadow:0 0 2px #000}#reticle i{left:7px;top:7px;background:var(--gold)}footer{font-size:9px;background:linear-gradient(transparent,#111a31ef);padding:20px 28px 16px}footer kbd{font-size:9px}.is-playing header{opacity:.93}#shot-details{font-size:10px}
#loading{background:radial-gradient(ellipse at 50% 80%,#263759,#111a31 70%);color:var(--paper)}#loading::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(transparent 0 3px,#0002 3px 4px);pointer-events:none}#loading .eyebrow{position:relative;font-size:10px;letter-spacing:5px}#loading h2{position:relative;text-align:left;font:900 clamp(70px,10vw,144px)/.82 Impact,'Arial Narrow',sans-serif;letter-spacing:-2px;transform:skew(-7deg);text-shadow:6px 6px 0 #070d20;margin:32px 0}#loading h2 strong{color:var(--gold)}#loading p{font-size:10px;letter-spacing:1px}.load-track{height:8px;border:1px solid #ffd26055;background:transparent}.load-track i{background:var(--gold)}
#result-card{position:absolute;z-index:6;left:50%;bottom:90px;transform:translateX(-50%);width:min(412px,calc(100vw - 30px));margin:0;padding:24px;background:linear-gradient(130deg,#1f3048fa,#101a2cfa);border:1px solid #ffeab975;border-top:5px solid var(--gold);box-shadow:7px 7px 0 #091126a8;color:var(--paper)}#result-card .eyebrow{font-size:8px}.result-rank{font:900 29px/1 Impact,'Arial Narrow',sans-serif;letter-spacing:1px;color:var(--gold);margin:14px 0 6px}#result-card h2{font:900 60px/1 Impact,'Arial Narrow',sans-serif;margin:6px 0 13px;color:var(--paper);letter-spacing:-.5px;font-variant-numeric:tabular-nums}#result-breakdown{font-size:10px;line-height:1.6;color:#cbd5e0;min-height:32px;margin:0 0 15px}#result-math{border-top:1px dashed #f8eed639;border-bottom:1px dashed #f8eed639;padding:9px 0;margin-bottom:12px}#result-math>div{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:9px;gap:16px}#result-math b{color:var(--gold);font-size:14px}#result-tip{font-size:9px;line-height:1.5;color:var(--cyan);margin-bottom:16px}#result-card .actions{flex-wrap:wrap}#result-card .actions button{flex:1;min-width:90px;font-size:9px}#try-result{background:var(--gold);color:var(--ink)}#result-card[data-rank=perfect]::after{content:'★';position:absolute;right:24px;top:17px;font-size:30px;color:var(--gold)}#result-card[data-rank=miss],#result-card[data-rank=forfeit],#result-card[data-rank=route-missed]{border-top-color:var(--cyan)}#result-card[data-rank=miss] .result-rank,#result-card[data-rank=forfeit] .result-rank{color:var(--cyan)}
#briefing{position:absolute;inset:0;z-index:8;pointer-events:none;background:linear-gradient(#111a31d9,transparent 33%,transparent 68%,#111a31dd)}.is-briefing #competition,.is-briefing #throw-panel,.is-briefing #flight-panel,.is-briefing #shot-details,.is-briefing #arcade-hud,.is-briefing #reticle,.is-briefing #notice,.is-briefing footer,.is-briefing header,.is-briefing #result-card{visibility:hidden}.briefing-heading{position:absolute;top:36px;left:38px;right:30px}.briefing-heading h2{font:900 clamp(28px,4vw,52px)/1 Impact,'Arial Narrow',sans-serif;text-transform:uppercase;letter-spacing:1px;color:var(--paper);margin:12px 0}.briefing-heading p{font-size:11px;color:#ecf1ec}.cutaway-note{position:absolute;right:36px;top:40px;font-size:8px;letter-spacing:1px;color:#cad6e7;writing-mode:vertical-rl}.map-label{position:absolute;display:flex;align-items:center;gap:10px;transform:translate(-50%,-100%);background:var(--ink);border:1px solid currentColor;padding:10px 13px;white-space:nowrap;box-shadow:3px 3px 0 #0a142788;margin-top:-22px}.map-label::after{content:'';height:24px;width:1px;background:currentColor;position:absolute;top:100%;left:50%}.map-label>b{font:900 24px/1 Impact,'Arial Narrow',sans-serif}.map-label>span{font-size:10px;letter-spacing:.8px}.map-label small{display:block;font-size:8px;margin-top:5px;letter-spacing:0;color:#fff2d9}.start-label{color:var(--cyan)}.goal-label{color:var(--gold)}.briefing-bottom{position:absolute;bottom:28px;left:36px;right:36px;display:flex;align-items:center;gap:36px;background:#111b31f0;padding:24px 28px;border-top:3px solid var(--gold);border-bottom:1px solid #ffefb445}.briefing-facts{flex:1;max-width:390px}.briefing-facts>span{font-size:12px;color:var(--gold);font-weight:700}.briefing-facts p{font-size:9px;line-height:1.7;letter-spacing:.2px}.briefing-facts>p:first-of-type{color:#cad3e2}.map-key{line-height:2!important;color:var(--paper);margin-bottom:0}.map-key i{display:inline-block;width:7px;height:7px;border:1px solid var(--cyan);margin-right:8px}.map-key i:nth-of-type(2){border-color:var(--gold)}.briefing-points{display:flex;flex-direction:column;gap:10px;min-width:240px;margin-left:auto;font-size:9px}.briefing-points>span{display:flex;gap:22px;justify-content:space-between}.briefing-points b{color:var(--gold)}.briefing-points small{font-size:8px;color:#afc1d4;margin-top:3px}.primary{pointer-events:auto;background:var(--gold);color:var(--ink);padding:20px 25px;font:900 22px/1 Impact,'Arial Narrow',sans-serif;letter-spacing:.6px;text-align:left;box-shadow:4px 4px 0 #896541;min-width:213px;border:0}.primary span{margin-left:18px;font-size:14px}.primary small{display:block;font:9px/1.4 ui-monospace,Menlo,monospace;margin-top:12px;letter-spacing:1px}.primary:hover:not(:disabled){background:var(--paper)}
@media(max-width:1100px){.session>span:not(.dot){display:none}.audio-controls{margin-right:0}.briefing-bottom{gap:22px;padding:20px;left:22px;right:22px}.briefing-points{min-width:200px}.briefing-points small{max-width:210px;line-height:1.5}.primary{font-size:19px;min-width:184px;padding:18px}.briefing-facts>span{font-size:10px}#result-card{width:350px}#competition{right:18px;width:268px;padding:16px}}
@media(max-width:800px){header{padding:16px}.session input,.session .dot{display:none}.audio-controls{flex-direction:column;gap:4px}.audio-controls button{padding:5px;font-size:7px}h1{font-size:20px}#competition{right:14px;top:103px;width:245px;max-height:calc(100vh - 173px)}#throw-panel,#flight-panel{width:220px;left:14px;padding:14px}#arcade-hud{left:14px;top:104px;min-width:170px;max-width:210px}.briefing-bottom{flex-wrap:wrap;gap:16px;padding:16px;bottom:18px;left:18px;right:18px}.briefing-points{display:none}.briefing-heading{top:24px;left:24px}.briefing-heading p{font-size:9px}.briefing-facts{min-width:170px}.primary{min-width:175px}.map-label{padding:8px;gap:7px}.map-label>span{font-size:8px}.map-label small{font-size:7px}.map-label>b{font-size:18px}#result-card{bottom:100px;width:340px}#result-card h2{font-size:48px}footer{font-size:8px;padding:12px 14px;gap:9px}footer span:last-of-type{display:none}}
@media(max-height:740px){#competition{max-height:calc(100vh - 160px)}#shot-details{bottom:54px}#throw-panel,#flight-panel{bottom:54px;padding:14px 17px}#throw-panel h2{font-size:23px;margin-bottom:16px}.spin-row{margin:10px 0}#result-card{bottom:66px;padding:18px;width:360px}#result-card h2{font-size:44px}.result-rank{font-size:25px}.briefing-bottom{bottom:18px;padding:16px 24px}.briefing-heading{top:26px}.briefing-facts p{margin:5px 0}#arcade-hud{padding:9px 12px}#arcade-hud>div{gap:6px;margin-top:8px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
#briefing-back{pointer-events:auto;margin-top:8px;font-size:9px;border-color:#fff5;background:#111b31d9;padding:8px 12px}

#course-list{max-height:min(300px,32vh);overflow:auto;padding-right:4px;scrollbar-width:thin}#course-title{text-transform:uppercase}#score-guide{margin-top:16px;font-size:9px;color:var(--cyan)}#score-guide summary{cursor:pointer;padding:8px 0}#score-guide p{font-size:10px;line-height:1.7}#score-guide strong{color:var(--gold)}
.legacy-points{display:none;color:var(--paper);font-size:11px;line-height:1.8}.legacy-points b{color:var(--gold)}.legacy-scoring .legacy-points{display:block}.legacy-scoring .briefing-points{display:none}
.map-label{transform:translateY(-100%)}.map-label::after{left:var(--anchor-x,50%)}

/* A broad, deliberate gauge stays in peripheral vision while aiming. */
#power-control{position:absolute;bottom:82px;left:50%;transform:translateX(-50%);width:min(590px,calc(100vw - 40px));padding:16px 22px 15px;background:linear-gradient(120deg,#111a30f2,#1b2949eb);border:1px solid #b8ccdf55;border-top:3px solid var(--gold);box-shadow:5px 5px 0 #10172ab0;pointer-events:none}
#power-control .power-label{font-size:11px;letter-spacing:1.3px;margin:0 0 10px;align-items:center}
#power-number{font:900 32px/1 Impact,'Arial Narrow',sans-serif;font-variant-numeric:tabular-nums}
#power-control .power-track{height:36px;border:1px solid #c5d5e155;border-radius:0;margin:0;background:repeating-linear-gradient(90deg,#ffffff05 0,#ffffff05 calc(10% - 1px),#ffffff2b calc(10% - 1px),#ffffff2b 10%);overflow:visible}
#power-control .power-track i{background:linear-gradient(90deg,#61dbcb 0%,#f4d166 45%,#f48c64 80%,#ff625c);box-shadow:0 0 20px #f4ca6525;transition:none;max-width:100%}
#power-control .power-track::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(5% - 1px),#11192e88 calc(5% - 1px),#11192e88 5%)}
#power-control #hint-power-marker{width:3px;top:-6px;bottom:-6px;z-index:1;background:#fff;box-shadow:0 0 6px #fff9}
.power-ticks{display:flex;justify-content:space-between;margin-top:7px;font-size:9px;color:#b0bfd1}
#power-control .power-caption{margin:10px 0 0;font-size:9px;color:#b0c5d5}
#power-control.charging{border-color:var(--gold);box-shadow:0 0 30px #f3cc6315,5px 5px 0 #10172ab0}
#combo-hud{position:absolute;left:50%;top:130px;transform:translateX(-50%);width:min(500px,calc(100vw - 32px));padding:15px 22px 12px;pointer-events:none;color:var(--paper);background:linear-gradient(120deg,#131d36f2,#172744d9);border-left:4px solid var(--gold);box-shadow:5px 5px 0 #0b102875;text-align:center;transition:background .2s,border-color .2s}
.combo-heading{display:flex;justify-content:space-between;gap:10px;font:8px/1.5 ui-monospace,Menlo,monospace;letter-spacing:1px;color:#b5c4d8}.combo-heading b{color:var(--gold)}
#combo-total{font:900 clamp(36px,4.7vw,72px)/1.05 Impact,'Arial Narrow',sans-serif;letter-spacing:-1px;font-variant-numeric:tabular-nums;color:var(--gold);text-shadow:3px 4px 0 #121829;transform:rotate(-2deg);margin:9px 0 12px;overflow-wrap:anywhere}
#combo-factors{display:flex;justify-content:center;gap:14px;align-items:center;font-size:10px;color:#b4c5d6}#combo-factors b{color:#eef7e5}#combo-factors span{font-size:8px}
.combo-landing{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #cedee326;margin-top:12px;padding-top:10px;font-size:9px;color:#91dcd6}.combo-landing strong{color:var(--paper)}
#combo-trick{height:18px;line-height:18px;font-size:10px;font-weight:bold;color:var(--gold);letter-spacing:1px;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#combo-hud[data-cue=bank]{border-color:#eafffe;background:#253553f5}
#combo-hud[data-cue=goal],#combo-hud.on-target{background:#123b30ef;border-color:#66ffa1}#combo-hud[data-cue=goal] #combo-total,#combo-hud[data-cue=goal] #combo-trick,#combo-hud.on-target .combo-heading b{color:#75ffac}
.is-briefing #power-control,.is-briefing #combo-hud{display:none}
#result-card[data-rank=perfect]{border-color:#79ffad;background:linear-gradient(140deg,#113c30f5,#142a2df5)}#result-card[data-rank=perfect] h2,#result-card[data-rank=perfect] .result-rank{color:#88ffb5}
#result-card h2{font-size:clamp(30px,3.8vw,54px);overflow-wrap:anywhere}
@media(max-width:1100px){#combo-hud{top:185px;width:min(430px,calc(100vw - 40px))}#power-control{bottom:64px;width:450px;max-width:calc(100vw - 40px)}body:not(.is-playing) #power-control{bottom:54px;left:14px;transform:none;width:calc(100vw - 28px)}body:not(.is-playing) #throw-panel{bottom:218px}body:not(.is-playing) #competition{max-height:calc(100vh - 300px)}}
@media(max-width:800px){#combo-hud{top:186px;padding:12px 14px;width:330px;max-width:calc(100vw - 28px)}#combo-total{font-size:44px}#combo-factors{gap:10px;font-size:9px}.combo-heading{font-size:7px}#power-control{padding:12px 14px}#power-control .power-track{height:30px}.power-caption span{max-width:180px}#power-number{font-size:27px}}
@media(max-height:680px){#combo-hud{top:106px;padding:9px 14px}#combo-total{font-size:42px;margin:7px 0}#combo-trick{margin-top:4px}.combo-landing{margin-top:7px;padding-top:7px}#power-control{bottom:53px;padding:10px 15px}#power-control .power-track{height:28px}#power-control .power-caption{margin-top:6px}.is-playing #throw-panel{bottom:210px}}
