@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;600;700;800;900&display=swap');
:root{font-family:'Noto Sans JP',sans-serif;color:#123e4c;background:#eef5f3;font-synthesis:none;--navy:#093e50;--yellow:#ffe077;--teal:#178c93}*{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 #f48c49;outline-offset:4px}button:disabled{cursor:default}button[hidden],[hidden]{display:none!important}.arcade{width:min(1180px,calc(100% - 64px));margin:auto}.masthead{height:92px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--navy);font-size:15px;font-weight:900;letter-spacing:1.8px;line-height:1.6}.brand-mark{font-size:34px}.brand-small{display:block;font-size:10px;letter-spacing:2px;font-weight:600}.header-actions{display:flex;gap:10px}.icon-button{border:1px solid #c6d8d7;background:transparent;border-radius:50px;padding:9px 16px;color:var(--navy);font-size:16px}.icon-button span{font-size:12px;font-weight:700;margin-left:5px}.game-shell{border:1px solid #bfd4d2;border-radius:18px;overflow:hidden;box-shadow:0 14px 42px #123e4c09;background:white}.game-heading{padding:24px 30px 22px;display:flex;align-items:center;justify-content:space-between}.eyebrow{font-size:12px;font-weight:700;letter-spacing:2px;color:#4e7c83}h1{font-size:30px;letter-spacing:1px;margin:4px 0 0;font-weight:900}h1 span{color:#16888c}.edition{font-size:11px;line-height:1.4;letter-spacing:1.7px;font-weight:800;border-left:2px solid #f0c44f;padding-left:15px}.scoreboard{height:88px;background:var(--navy);color:#fff;display:grid;grid-template-columns:1.3fr 1fr 1.6fr 1fr;align-items:center;padding:0 32px;gap:24px}.scoreboard>div{display:flex;align-items:baseline;gap:12px}.scoreboard>div+div{border-left:1px solid #ffffff26;padding-left:28px}.scoreboard span{font-size:10px;letter-spacing:1.7px;color:#a2cbcf;font-weight:700}.scoreboard strong{font-family:ui-monospace,Consolas,monospace;font-size:31px;letter-spacing:1px;font-weight:700}.scoreboard small{font-family:inherit;font-size:14px;font-weight:400;color:#a2cbcf}.score-main strong{color:var(--yellow)}.ball-status{position:relative;flex-wrap:wrap;gap:5px 10px!important}#ball-dots{width:100%;display:flex;gap:5px;margin-top:0}.dot{width:9px;height:9px;border:1px solid #77a0aa;border-radius:50%;background:transparent}.dot.played{background:#6e9ba5;border-color:#6e9ba5}.dot.hit{background:var(--yellow);border-color:var(--yellow)}.dot.current{border:2px solid #fff}.stage{position:relative;aspect-ratio:1200/650;overflow:hidden;background:#92d7e7;touch-action:manipulation}canvas{width:100%;height:100%;display:block;object-fit:cover}.location-tag{position:absolute;top:21px;left:26px;background:#fffdf1dc;padding:8px 12px;font-size:10px;font-weight:800;letter-spacing:1.4px;border-radius:4px}.location-tag span{padding-right:5px}.pause-button{position:absolute;right:20px;top:17px;border:1px solid #ffffff9c;border-radius:50%;width:38px;height:38px;background:#ffffffe6;color:var(--navy);font-weight:900}.overlay{position:absolute;inset:0;display:flex;justify-content:flex-end;align-items:center;padding:25px 6%;background:linear-gradient(90deg,transparent 30%,#0c56641a)}.panel{background:#fffef2f2;border:1px solid #fff;border-radius:12px;width:360px;padding:28px;box-shadow:0 12px 30px #143f4615}.panel-kicker{font-size:12px;letter-spacing:1px;font-weight:700;color:#348184}.panel h2{font-size:30px;line-height:1.6;font-weight:900;margin:12px 0;letter-spacing:-1px}.panel h2 em{font-style:normal;color:#128b8d}.panel p{font-size:13px;line-height:1.9;color:#547079;margin:12px 0 20px}.difficulty{display:flex;gap:5px;border:1px solid #bdd1cb;background:#e7efeb;padding:4px;border-radius:6px;margin:17px 0 12px}.difficulty button{flex:1;border:0;background:transparent;font-size:12px;font-weight:700;padding:8px;color:#547079;border-radius:4px}.difficulty button.selected{background:white;color:var(--navy);box-shadow:0 1px 5px #123e4c12}.primary{width:100%;background:var(--yellow);border:1px solid #e6ba47;color:var(--navy);border-radius:6px;font-size:17px;font-weight:900;padding:15px 18px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 3px 0 #d9ae43;transition:transform .15s}.primary:hover{background:#ffe999;transform:translateY(-2px)}.primary:active{transform:translateY(2px);box-shadow:none}.start-note{display:block;text-align:center;font-size:10px;color:#6b8386;margin-top:16px}.control-deck{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 28px}.timing-guide{display:flex;gap:14px;align-items:center}.guide-number{font-family:monospace;font-size:24px;color:#188e93;background:#eaf5f1;border-radius:50%;padding:9px}.timing-guide strong{font-size:14px}.timing-guide p{font-size:12px;color:#789093;margin:5px 0 0}.swing-button{background:var(--navy);color:#fff;border:0;border-bottom:4px solid #022938;border-radius:7px;padding:16px 30px;font-weight:800;font-size:18px;min-width:250px;touch-action:manipulation}.swing-button:not(:disabled):hover{background:#126376}.swing-button:disabled{opacity:.42}.swing-button:active{transform:translateY(2px)}kbd{font-family:inherit;font-size:10px;margin-left:22px;border:1px solid #ffffff55;border-radius:3px;padding:4px 7px;font-weight:500;letter-spacing:1px}footer{display:flex;justify-content:space-between;padding:22px 2px 28px;font-size:11px;color:#729092}footer>span+span{font-size:9px;letter-spacing:1.5px}footer b{padding:0 8px}.callout{position:absolute;top:19%;left:50%;transform:translateX(-50%) rotate(-3deg);color:white;font-weight:900;font-size:45px;text-shadow:3px 3px 0 #093e50,-2px -2px 0 #093e50,2px -2px 0 #093e50,-2px 2px 0 #093e50;text-align:center;white-space:nowrap;pointer-events:none}.callout small{display:block;font-size:17px;letter-spacing:2px;margin-top:5px}.result-score{font-family:monospace;color:#11878b;display:flex;gap:10px;align-items:baseline}.result-score strong{font-size:58px}.result-score span{font-size:20px}.result h2{font-size:25px}.text-button{background:none;border:0;display:block;margin:18px auto 0;color:#547079;text-decoration:underline;font-size:12px}#new-best{color:#bf6a23;font-weight:800}dialog{color:var(--navy);border:0;border-radius:15px;padding:36px;width:min(450px,calc(100% - 32px));box-shadow:0 20px 100px #00263655}dialog::backdrop{background:#052b42a6}dialog h2{font-size:25px;line-height:1.6}dialog li,dialog p{font-size:14px;line-height:1.9}dialog ol{padding-left:22px}dialog li{padding-left:5px;margin-bottom:12px}.close-help{position:absolute;right:17px;top:10px;border:0;background:none;color:var(--navy);font-size:28px}.help-note{color:#63868c;font-size:12px}
@media(min-width:1600px){.arcade{width:min(1320px,calc(100% - 100px))}.masthead{height:110px}}
@media(max-width:850px){.arcade{width:calc(100% - 32px)}.masthead{height:72px}.scoreboard{padding:0 20px;gap:12px}.scoreboard>div{gap:7px;flex-wrap:wrap}.scoreboard>div+div{padding-left:15px}.scoreboard strong{font-size:27px}.scoreboard span{font-size:9px}.scoreboard .score-main small{display:none}.stage{aspect-ratio:1.5}.panel{width:310px;padding:22px}.panel h2{font-size:26px}.control-deck{padding:17px}.swing-button{min-width:200px;padding:15px}.timing-guide strong{font-size:12px}.guide-number{display:none}kbd{margin-left:12px}.overlay{padding:20px 4%}.location-tag{left:18px;top:16px;font-size:9px}}
@media(max-width:580px){.arcade{width:100%;padding:0 10px}.masthead{height:66px;padding:0 6px}.brand{font-size:11px;gap:7px;letter-spacing:1px}.brand-mark{font-size:27px}.brand-small{font-size:8px;letter-spacing:1px}.icon-button{padding:7px 10px}.icon-button span{font-size:10px;margin-left:3px}.header-actions{gap:5px}.game-shell{border-radius:12px}.game-heading{padding:18px 17px}.eyebrow{font-size:10px;letter-spacing:1px}h1{font-size:23px;letter-spacing:0}.edition{font-size:8px;padding-left:10px}.scoreboard{height:78px;grid-template-columns:1.1fr .85fr 1.2fr;gap:10px;padding:0 16px}.scoreboard>div{gap:4px 8px}.scoreboard>div+div{padding-left:12px}.scoreboard strong{font-size:24px}.scoreboard span{font-size:8px}.scoreboard .best-score{display:none}.scoreboard small{font-size:12px}.dot{width:6px;height:6px}#ball-dots{gap:3px}.stage{aspect-ratio:auto;height:420px}canvas{object-fit:cover}.overlay{align-items:center;justify-content:center;padding:30px 22px;background:#07526922}.panel{width:280px;padding:20px}.panel-kicker{font-size:11px}.panel h2{font-size:25px;line-height:1.4;margin:10px 0}.panel p{font-size:12px;margin:10px 0 14px}.difficulty{margin:12px 0}.primary{font-size:15px;padding:12px 16px}.start-note{font-size:9px;margin-top:13px}.location-tag{font-size:8px;padding:6px 8px;left:12px;top:12px}.control-deck{display:block;padding:15px}.timing-guide{justify-content:center;margin-bottom:13px;text-align:center}.timing-guide strong{font-size:12px}.timing-guide p{font-size:10px;margin-top:3px}.swing-button{width:100%;font-size:17px;padding:13px}.callout{font-size:32px;top:23%}.callout small{font-size:13px}footer{font-size:9px;padding:17px 6px}footer>span+span{font-size:7px;letter-spacing:.7px}.pause-button{right:12px;top:10px;width:30px;height:30px}.result h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.embedded .arcade{width:100%;padding:0}.embedded .masthead{height:52px;padding:0 18px}.embedded footer{display:none}.embedded .game-shell{border-radius:0}.embedded .game-heading{padding-top:16px;padding-bottom:16px}.embedded .stage{max-height:490px}@media(max-width:580px){.embedded .stage{height:420px}.embedded .masthead{padding:0 12px}}
.stage{max-height:520px}
.power-panel{position:absolute;right:22px;top:25%;display:flex;align-items:center;flex-direction:column;gap:8px;padding:13px 12px;border:1px solid #ffffff8c;border-radius:10px;background:#083447db;color:white;pointer-events:none;box-shadow:0 4px 20px #093e5030}.power-panel>span{font-size:11px;letter-spacing:2px;font-weight:800}.power-panel>strong{font:700 20px monospace;color:#ffe077}.power-panel small{text-align:center;font-size:11px;line-height:1.5}#power-meter{height:170px;width:27px;position:relative;overflow:hidden;background:#092431;border-radius:4px;border:1px solid #80a5a9}#power-fill{position:absolute;bottom:0;width:100%;height:0;background:linear-gradient(0deg,#3fc0bc,#f9db59 80%,#ff9754)}.power-sweet{position:absolute;top:0;left:0;right:0;height:15%;background:#ffe87766}#power-meter i{position:absolute;left:0;right:0;bottom:25%;height:1px;background:#ffffff70}#power-meter i:nth-last-child(2){bottom:50%}#power-meter i:last-child{bottom:75%}#power-meter.charged{box-shadow:0 0 14px #ffda61}.swing-button.charging{background:#dca83e;color:#123e4c;border-color:#b58024}.swing-button{font-size:16px;user-select:none;-webkit-user-select:none}.overlay{padding-right:12%}.stage canvas{touch-action:none}.embedded .game-heading{padding:10px 16px}.embedded .game-heading h1{font-size:24px}.embedded .control-deck{padding:12px 16px}.embedded .stage{max-height:490px}@media(max-width:580px){.power-panel{right:10px;top:19%;padding:10px 7px;gap:6px}.power-panel>span{font-size:9px;letter-spacing:1px}.power-panel>strong{font-size:15px}#power-meter{height:140px;width:20px}.power-panel small{font-size:9px}.overlay{padding:25px 20px}.power-panel{z-index:1}.overlay{z-index:2}.callout{z-index:1;left:48%;font-size:27px}.stage,.embedded .stage{height:410px}.embedded .masthead{height:44px}.embedded .game-heading h1{font-size:20px}.embedded .scoreboard{height:68px}}
.stage{width:100%;aspect-ratio:auto;height:520px}@media(max-width:580px){.stage{height:410px}}
.bonus-callout{color:#ffe270!important;font-size:35px!important;top:15%!important}.bonus-callout small{font-size:18px;white-space:normal;min-width:280px;max-width:90vw}.callout{z-index:3}.power-panel{top:25%}@media(max-width:580px){.bonus-callout{font-size:25px!important}.bonus-callout small{font-size:13px}.power-panel{top:20%}}

.batter-stats{position:absolute;right:18px;bottom:14px;padding:8px 13px;background:#07384bdd;border:1px solid #ffffffc9;border-left:3px solid #ffe077;color:#fff;pointer-events:none;line-height:1.5;text-shadow:0 1px 1px #062a38;white-space:nowrap;font-weight:700;box-shadow:0 2px 6px #123e4c22}.batter-stats>strong{display:block;font-size:17px;letter-spacing:.08em}.batter-stats>div{font-size:13px;font-variant-numeric:tabular-nums}.batter-stats span{font-family:ui-monospace,Consolas,monospace}@media(max-width:640px){.batter-stats{right:9px;bottom:9px;padding:5px 9px}.batter-stats>strong{font-size:14px}.batter-stats>div{font-size:11px}}

.distance-board{background:#093e50;color:#fff;padding:10px 24px 13px}.distance-heading{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.1em;color:#b2d2d6;margin-bottom:7px}.distance-heading small{font-size:10px;margin-left:5px}.distance-heading b{color:white}#distance-results{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:5px;list-style:none;margin:0;padding:0}#distance-results li{position:relative;text-align:center;border:1px solid #ffffff25;background:#062f3e;border-radius:3px;padding:4px 1px 5px;min-width:0}#distance-results .shot-number{display:block;font-size:9px;color:#97bec6;line-height:1.3}#distance-results strong{display:block;font:700 20px/1.4 ui-monospace,Consolas,monospace;color:#fff}#distance-results .current{border-color:#73dce0}#distance-results .in-flight strong{color:#8eeaf0}#distance-results .longest strong{color:#ffe077}#distance-results .shot-crown{position:absolute;right:3px;top:1px;font-size:12px}@media(max-width:580px){.distance-board{padding:8px 10px 10px}#distance-results{gap:3px}#distance-results strong{font-size:13px}#distance-results .shot-crown{font-size:10px;right:0;top:0}#distance-results .shot-number{font-size:8px}.distance-heading{font-size:10px;margin-bottom:5px}}

/* Background-only title scene; play HUD appears after starting. */
.title-screen .masthead,.title-screen .game-heading,.title-screen .distance-board,.title-screen .control-deck,.title-screen footer,.title-screen .location-tag,.title-screen .power-panel,.title-screen .batter-stats,.title-screen .callout{display:none}

.title-screen .stage{height:min(680px,85vh);min-height:510px;max-height:none}
.title-screen .overlay{justify-content:center;align-items:flex-start;padding:28px 20px;background:linear-gradient(180deg,#073e5010,transparent 65%)}
.title-screen #intro{width:100%;height:100%;padding:0;display:flex;align-items:center;flex-direction:column;background:none;border:0;box-shadow:none;text-align:center}
.title-screen .title-logo{margin:0;line-height:1.08;letter-spacing:.03em;filter:drop-shadow(0 5px 0 #073a51);transform:rotate(-3deg)}
.title-screen .title-logo>span{display:block;font-size:clamp(20px,3vw,33px);color:white;letter-spacing:.2em;margin-bottom:12px;-webkit-text-stroke:1px #10435b;paint-order:stroke fill}
.title-screen .title-logo>strong{display:block;font-size:clamp(40px,6.5vw,78px);font-weight:900;color:#fff19a;-webkit-text-stroke:7px #fff;paint-order:stroke fill;text-shadow:3px 3px 0 #0c7586}
.title-screen .title-copyright{color:#fff;font-size:13px;font-weight:700;letter-spacing:.08em;margin:14px 0 0;text-shadow:0 1px 4px #07374f}
.title-screen .difficulty{margin:auto 0 10px;width:270px;background:#ffffffd9}
.title-screen #start{width:270px;justify-content:center;gap:20px}
@media(max-width:580px){.title-screen .stage{height:620px;min-height:510px;max-height:90vh}.title-screen .title-logo>strong{font-size:43px;-webkit-text-stroke:5px #fff}.title-screen .overlay{padding:36px 14px 24px}}

/* Portrait stage: the same 3:4 composition at every viewport and in embeds. */
.arcade,.embedded .arcade{width:min(100%,540px);padding:0 8px;margin:0 auto}
.stage,.embedded .stage,.title-screen .stage{width:100%;height:auto;min-height:0;max-height:none;aspect-ratio:3 / 4;container-type:inline-size}
.stage canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.masthead{height:58px;padding:0 4px}.brand{font-size:11px;letter-spacing:1px;gap:7px}.brand-mark{font-size:26px}.brand-small{font-size:8px;letter-spacing:1px}.icon-button{padding:7px 10px}.icon-button span{font-size:10px}
.game-heading,.embedded .game-heading{display:none}
.control-deck,.embedded .control-deck{display:block;padding:12px}.timing-guide{justify-content:center;text-align:center;margin-bottom:9px}.guide-number{display:none}.timing-guide strong{font-size:12px}.timing-guide p{font-size:10px;margin:3px 0}.swing-button{width:100%;min-width:0;padding:12px;font-size:15px}
.distance-board{padding:8px 10px 10px}#distance-results{gap:3px}#distance-results strong{font-size:clamp(10px,3cqw,16px)}#distance-results .shot-crown{font-size:10px;right:0}
.overlay{padding:18px;justify-content:center}.panel{width:min(100%,310px);padding:20px}
.power-panel{right:10px;top:22%;padding:9px 7px;gap:5px}.power-panel>span{font-size:9px;letter-spacing:1px}.power-panel>strong{font-size:15px}#power-meter{height:clamp(90px,30cqw,160px);width:20px}
.location-tag{left:10px;top:12px;font-size:8px;padding:6px 8px}.pause-button{right:10px;top:10px;width:32px;height:32px}
.batter-stats{right:8px;bottom:8px;padding:5px 8px}.batter-stats>strong{font-size:13px}.batter-stats>div{font-size:10px}
.callout{font-size:clamp(22px,6cqw,32px);max-width:95%;white-space:normal}.callout small{font-size:12px}.bonus-callout{font-size:clamp(20px,5.5cqw,30px)!important}.bonus-callout small{font-size:12px;min-width:0}
.title-screen .overlay{padding:28px 16px 22px}.title-screen .title-logo>span{font-size:clamp(20px,6cqw,31px)}.title-screen .title-logo>strong{font-size:clamp(35px,10.5cqw,57px);-webkit-text-stroke:5px #fff}.title-screen .title-copyright{font-size:11px}.title-screen .difficulty,.title-screen #start{width:min(100%,270px)}
.title-screen.embedded .control-deck{display:none}

/* Ten-shot HUD floats over the sky inside the portrait stage. */
.stage .distance-board{position:absolute;top:10px;left:10px;right:10px;z-index:1;padding:8px;border:1px solid #ffffff65;border-radius:9px;background:#073e5070;box-shadow:0 3px 14px #073e5017;pointer-events:none}
.stage .distance-heading{color:#eefaff;font-size:10px;margin-bottom:5px;text-shadow:0 1px 2px #073e50}
.stage #distance-results li{background:#08364945;border-color:#ffffff40}
.stage #distance-results .shot-number{color:#e0f3f7}.stage #distance-results strong{text-shadow:0 1px 2px #073e50}
.stage .location-tag{top:92px;background:#fffdf1b3}.stage .pause-button{top:90px}
.stage .pause-button{left:154px;right:auto}

.stage .distance-board .header-actions{position:absolute;right:0;top:calc(100% + 8px);display:flex;align-items:center;gap:6px;pointer-events:auto}
.stage .header-actions .icon-button{background:#f5fcf4c9;border-color:#ffffffa6;color:#093e50;padding:7px 10px}
.stage .header-actions .pause-button{position:static;flex:none;background:#f5fcf4c9}
.stage .power-panel{top:max(25%,132px)}
.stage .callout{top:max(32%,140px);left:43%;max-width:76%}.stage .bonus-callout{top:max(32%,140px)!important}

/* Compact, translucent batting card. */
.stage .batter-stats{right:clamp(14px,4cqw,20px);bottom:clamp(14px,4cqw,20px);width:30%;min-width:126px;padding:6px 9px;background:linear-gradient(140deg,#174d60d9,#082f43d6);color:#fff;border:1px solid #ffffff65;border-left:3px solid #81d8da;border-radius:5px;box-shadow:0 3px 9px #07304426;text-shadow:none;line-height:1.4}
.stage .batter-stats>strong{font-size:clamp(15px,4cqw,20px);letter-spacing:.015em;margin-bottom:1px;display:block;line-height:1.15}
.stage .batter-record{display:grid;grid-template-columns:1.2fr 1fr;gap:8px;padding:1px 0;background:none;border-radius:0;text-align:left}
.stage .batter-record>div{display:flex;align-items:baseline;justify-content:space-between;gap:0}.stage .batter-record>div+div{border-left:0}
.stage .batter-stats small{display:block;font:500 clamp(8px,2.1cqw,10px)/1.2 'Noto Sans JP',sans-serif;color:#ffffffe0;letter-spacing:.04em}
.stage .batter-record span{display:block;font-size:clamp(12px,3cqw,16px);font-weight:700;line-height:1.2;color:#fff}
.stage .batter-points{display:flex;align-items:baseline;justify-content:space-between;gap:3px;margin-top:1px;padding-top:2px;border-top:1px solid #ffffff30;color:#fff}
.stage .batter-points span{font-size:clamp(16px,4cqw,21px);font-weight:800;color:#fff;line-height:1.2}
#power-fill{background:#54c6bd}#power-meter.charged{box-shadow:none}
.stage #power-meter{height:clamp(65px,20cqw,110px)}
.contact-cutin{position:absolute;z-index:4;left:3%;right:3%;top:18%;aspect-ratio:4/1;overflow:hidden;pointer-events:none;background:linear-gradient(115deg,#103d59,#163c66 50%,#11192e);border-block:2px solid #a5eeee;box-shadow:0 4px 14px #08273c45;clip-path:polygon(3% 0,100% 0,97% 100%,0 100%);animation:cutin-sweep var(--cutin-duration,.5s) linear both paused;animation-delay:var(--cutin-age,0s)}
.contact-cutin[hidden],.title-screen .contact-cutin{display:none}
.cutin-portrait{position:absolute;left:0;top:0;width:65%;height:100%;overflow:hidden;mask-image:linear-gradient(90deg,#000 75%,transparent)}
.cutin-portrait img{position:absolute;width:150%;height:auto;max-width:none;top:-146%;left:-30%;animation:cutin-face-pan var(--cutin-duration,.5s) ease-out both paused;animation-delay:var(--cutin-age,0s)}
@keyframes cutin-sweep{0%{opacity:0;transform:translateX(-8%)}24%{opacity:1;transform:translateX(0)}76%{opacity:1;transform:translateX(1%)}100%{opacity:0;transform:translateX(7%)}}
@keyframes cutin-face-pan{from{transform:translateX(-4%)}to{transform:translateX(3%)}}
@media(prefers-reduced-motion:reduce){.contact-cutin,.cutin-portrait img{animation:none}}
.stage #distance-results .shot-unit{display:block;font:500 clamp(8px,2cqw,10px)/1.1 system-ui,sans-serif;color:#d5e7ed;margin-top:1px}
.stage #distance-results li.completed{background:#062838b8;border-color:#ffffff24}
.stage #distance-results li.current{background:#c1f4eced;border-color:#edfffc;box-shadow:0 0 8px #8ce9df55}
.stage #distance-results .current strong,.stage #distance-results .current .shot-number,.stage #distance-results .current .shot-unit{color:#124657;text-shadow:none}
.result-screen .power-panel,.result-screen .batter-stats,.result-screen .stage .distance-board .header-actions{display:none}
.result-screen .overlay{align-items:flex-start;justify-content:center;padding:22% 5% 0;background:transparent;backdrop-filter:none}
.result-screen #result{width:100%;max-height:44%;overflow:auto;padding:12px 16px;border-radius:14px;background:#f4fffaed;box-shadow:0 5px 20px #0c354d35}
.result-screen #result .panel-kicker{font-size:clamp(9px,2.5cqw,13px)}
.result-screen #result h2{font-size:clamp(16px,4.5cqw,24px);line-height:1.25;margin:4px 0}
.result-screen #result .result-score{margin:3px 0;line-height:1}
.result-screen #result .result-score strong{font-size:clamp(28px,8cqw,44px);line-height:1}
.result-screen #result p{font-size:clamp(10px,2.6cqw,13px);line-height:1.4;margin:5px 0}
.result-screen #result .primary{font-size:clamp(12px,3cqw,16px);padding:9px 14px;margin-top:5px}
.result-screen #result .text-button{font-size:clamp(10px,2.6cqw,13px);margin-top:4px;padding:4px}
.stage .callout{left:50%;transform:translateX(-50%);font-family:'Noto Sans JP','Yu Gothic',sans-serif;font-style:normal;font-weight:900;font-size:clamp(22px,6.4cqw,35px);letter-spacing:.025em;line-height:1.3;text-shadow:0 4px 0 #093e50,2px 0 0 #093e50,-2px 0 0 #093e50,0 -2px 0 #093e50}
.callout-title{display:block;font-weight:900;font-style:normal;-webkit-text-stroke:.6px currentColor;transform-origin:50% 65%}
.stage .callout small{font-size:clamp(15px,4cqw,22px);font-weight:800;letter-spacing:.04em;line-height:1.45;margin-top:10px;color:#fff;text-shadow:1px 1px 0 #093e50,-1px -1px 0 #093e50,1px -1px 0 #093e50,-1px 1px 0 #093e50,0 2px 4px #093e50}
.stage .callout{font-size:clamp(28px,8cqw,44px);width:94%;max-width:94%}
.stage .bonus-callout{font-size:clamp(26px,7.5cqw,41px)!important}
.stage .homerun-callout{isolation:isolate}
.homerun-callout .callout-title{position:relative;color:#ffef72;font-size:clamp(36px,12.8cqw,70px);white-space:nowrap;letter-spacing:-.045em;paint-order:stroke fill;-webkit-text-stroke:3px #aa2438;text-shadow:0 5px 0 #d44536,0 8px 0 #7d203b,3px 0 0 #fff6c1,-3px 0 0 #fff6c1,0 -3px 0 #fff6c1,0 0 20px #ffce49;animation:homerun-bounce 650ms both}
.homerun-callout::before{content:'';position:absolute;z-index:-1;pointer-events:none;inset:-42% -2%;background:repeating-conic-gradient(from 8deg,#ffe775aa 0deg 7deg,transparent 7deg 23deg);mask-image:radial-gradient(ellipse,#000 5%,transparent 68%);animation:homerun-burst 850ms ease-out both}
@keyframes homerun-burst{from{opacity:0;transform:scale(.3) rotate(-12deg)}35%{opacity:1}to{opacity:.65;transform:scale(1.1) rotate(6deg)}}
@keyframes homerun-bounce{0%{opacity:0;transform:scale(.45)}34%{opacity:1;transform:scale(1.24)}58%{transform:scale(.93)}78%{transform:scale(1.055)}100%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.homerun-callout .callout-title,.homerun-callout::before{animation:none}}
/* Another local game, shown only beside the batter on the result screen. */
.result-promo{display:none}
.result-screen .result-promo{display:flex;flex-direction:column;gap:5px;position:absolute;z-index:3;right:4%;bottom:5%;width:43%;padding:clamp(10px,3cqw,16px);border:1px solid #fff2c6;border-radius:12px;background:linear-gradient(145deg,#fff8e9f5,#ffe5b8f2);color:#703e29;box-shadow:0 4px 14px #57312130;text-decoration:none;line-height:1.35}
.result-promo small{font-size:clamp(10px,2.5cqw,13px);font-weight:700;color:#9c613a}
.result-promo strong{font-size:clamp(17px,4.6cqw,25px);font-weight:900;letter-spacing:.02em}
.result-promo>span{font-size:clamp(9px,2.4cqw,13px)}
.result-promo b{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-top:3px;padding:8px 10px;border-radius:7px;background:#864b34;color:#fff8e9;font-size:clamp(11px,2.8cqw,15px)}
.result-promo:hover b{background:#a35734}
.result-promo:focus-visible{outline:3px solid #ed923c;outline-offset:4px}
.stage .power-panel{top:auto;right:clamp(14px,4cqw,20px);bottom:calc(clamp(14px,4cqw,20px) + clamp(78px,19cqw,102px))}
.result-screen .result-promo{box-shadow:0 12px 20px #44261940,0 3px 6px #44261925;animation:promo-float 3.8s ease-in-out infinite}
.result-promo .promo-flyer{display:block;width:100%;height:auto;max-height:32cqw;object-fit:contain}
@keyframes promo-float{0%,100%{transform:translateY(0);box-shadow:0 9px 15px #44261945,0 3px 6px #44261925}50%{transform:translateY(-6px);box-shadow:0 16px 23px #44261930,0 5px 8px #44261920}}
@media(prefers-reduced-motion:reduce){.result-screen .result-promo{animation:none}}
.stage .batter-stats>strong{display:flex;align-items:center;gap:4px}
.batter-mood{display:block;width:clamp(18px,4.6cqw,24px);height:clamp(18px,4.6cqw,24px);flex:none}
.result-screen #result h2{text-align:center}
.result-screen #result .result-score{justify-content:center}
.result-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.result-screen #result .result-actions .primary{justify-content:center;text-align:center;padding:10px 4px;margin:0;min-width:0;font-size:clamp(11px,2.8cqw,15px)}
.title-screen .overlay{padding:0}
.title-screen #intro{position:relative}
.title-screen .title-logo{position:absolute;top:13%;left:0;width:100%}
.title-controls{position:absolute;top:74%;left:50%;transform:translateX(-50%);width:min(72%,270px)}
.title-screen .title-controls .difficulty{width:100%;margin:0 0 8px;padding:3px}
.title-screen .title-controls .difficulty button{padding:6px}
.title-screen .title-controls #start{width:100%;padding:10px 12px;font-size:clamp(15px,4cqw,18px);line-height:1.2}
.title-screen #intro>.title-copyright{position:absolute;bottom:3%;left:0;width:100%;margin:0;font-size:clamp(12px,3.2cqw,16px);line-height:1.3}
.result-screen #result-detail{text-align:center}
.result-promo>small{text-align:center;line-height:1.5}
#paused h2{text-align:center;font-size:clamp(20px,5cqw,28px);margin:4px 0 20px}.pause-actions{display:flex;flex-direction:column;gap:12px}.pause-actions .primary{justify-content:center;text-align:center}
.pause-screen .stage .overlay{z-index:10}.pause-screen #paused{background:#fffef2}
.result-screen #result{max-height:48%;padding:12px 14px}
.result-summary{display:flex;justify-content:center;align-items:center;gap:12px;margin:6px 0}
.result-screen #result .result-score{gap:5px;white-space:nowrap}
.result-screen #result-detail{text-align:center;white-space:pre-line;font-size:clamp(9px,2.5cqw,13px);line-height:1.5}
.result-share{border-top:1px solid #bed9d8;padding-top:7px;margin-top:6px}
.result-share h3{font-size:clamp(12px,3cqw,16px);text-align:center;margin:0 0 7px}
.social-buttons{display:grid;grid-template-columns:minmax(0,.65fr) minmax(0,1fr) minmax(0,.8fr) max-content;gap:6px;align-items:stretch}
.social-buttons button,.social-buttons .save-result{border:0;border-radius:6px;padding:8px 4px;color:#fff;background:#183746;font-weight:800;font-size:clamp(12px,3cqw,16px)}
.social-buttons [data-share="X"]{background:#171c22}.social-buttons [data-share="LINE"]{background:#078846}
#share-status{font-size:11px}
#share-dialog{max-height:90dvh;overflow:auto;width:min(550px,calc(100% - 24px));padding:24px}
#share-dialog h2{font-size:20px;margin:0 20px 12px 0}
#share-image{display:block;width:100%;height:auto;border-radius:8px}
#share-dialog p{font-size:12px;line-height:1.5;margin:10px 0}
#share-text{box-sizing:border-box;width:100%;padding:8px;border:1px solid #a9c9c9;border-radius:6px;font:12px/1.5 system-ui;resize:vertical}
#share-dialog .primary{font-size:13px;padding:10px;justify-content:center;text-decoration:none;margin-top:10px}
.share-tools{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.result-screen .overlay{padding-top:18%}
.result-screen #result{max-height:58%}
.result-screen .result-promo .promo-flyer{max-height:24cqw}
.social-buttons .save-result{display:flex;align-items:center;justify-content:center;margin:0;padding-inline:8px;text-decoration:none;white-space:nowrap;background:#376673;line-height:normal}.social-buttons .save-result[hidden]{display:none}
#help-dialog{position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);margin:0;padding:0;width:min(430px,calc(100% - 28px));max-height:calc(100dvh - 32px);overflow:auto;background:#fffbed;border:2px solid #fff;border-radius:22px;box-shadow:0 16px 60px #032c4b66}
#help-dialog .help-header{position:relative;display:flex;align-items:center;justify-content:center;gap:11px;padding:18px 48px;background:#174e63;color:#fff;border-bottom:4px solid #f4ce67}
#help-dialog h2{font-family:inherit;font-size:23px;font-weight:800;line-height:1.6;margin:0}
#help-dialog .close-help{top:10px;right:7px;width:44px;height:44px;padding:0;color:white;font-size:29px;line-height:1;border-radius:50%;background:#ffffff12}
#help-dialog .close-help:hover{background:#ffffff29}
#help-dialog .help-content{padding:20px 20px 22px}
#help-dialog .help-cheer{position:relative;margin:0;padding:12px 7px;text-align:center;color:#286473;font-size:clamp(10px,2.8vw,13px);font-weight:800;background:#e4f2eb;border-radius:12px;flex:1}
#help-dialog .help-cheer::after{content:'';position:absolute;left:-7px;top:calc(50% - 7px);border-right:8px solid #e4f2eb;border-block:7px solid transparent}
#help-dialog .help-steps{display:grid;gap:12px;list-style:none;padding:0;margin:0}
#help-dialog .help-steps li{display:grid;grid-template-columns:32px 1fr;gap:12px;align-items:start;margin:0;padding:15px 13px;background:#fff;border:1px solid #d3e5e2;border-radius:14px;box-shadow:0 3px 0 #dce9e2}
#help-dialog .help-number{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#168c92;color:#fff;font-size:20px;font-weight:900;line-height:1}
#help-dialog .help-steps li+li .help-number{background:#d5802a}
#help-dialog .help-steps p{font-size:clamp(12px,3.4vw,14px);line-height:1.8;margin:0;font-weight:600}
#help-dialog .help-hold{display:inline-block}
#help-dialog .help-steps strong{display:block;font-size:clamp(15px,4vw,18px);font-weight:900;color:#116f79;line-height:1.7}
#help-dialog .help-steps li+li strong{color:#ac5a18;font-size:24px;line-height:1.5}
#help-dialog .help-hit{display:inline-block;color:#ecc04c;font-size:29px;margin-left:14px;vertical-align:middle}
#help-dialog .help-finale{margin:18px 0 0;text-align:center;font-size:clamp(9px,2.7vw,12px);line-height:1.9;font-weight:800;color:#174e63;white-space:nowrap}
#help-dialog .help-finale strong{color:#174e63;font-weight:900;text-decoration:underline;text-decoration-color:#f0ce70;text-decoration-thickness:4px;text-underline-offset:5px}
#help-dialog .help-baseball{position:relative;width:25px;height:25px;flex:none;border-radius:50%;background:#fffaf0;overflow:hidden;transform:rotate(-20deg)}
#help-dialog .help-baseball::before,#help-dialog .help-baseball::after{content:'';position:absolute;top:-3px;width:16px;height:30px;border:2px dashed #d87b6c;border-radius:50%}
#help-dialog .help-baseball::before{left:-10px}#help-dialog .help-baseball::after{right:-10px}
@media(max-width:360px){#help-dialog .help-content{padding:16px 12px 18px}#help-dialog .help-steps li{padding:12px 10px;gap:9px}}
.contact-flash{position:absolute;inset:0;z-index:3;pointer-events:none;background:#fff9df}
.bonus-callout .callout-title{font-size:150%;white-space:pre-line;line-height:1.08;letter-spacing:.025em}
.title-screen .title-logo{top:8%;left:3%;width:94%;transform:none;filter:drop-shadow(0 3px 2px #133b5840);line-height:0}
.title-screen .title-logo canvas{position:relative;inset:auto;display:block;width:100%;height:auto;opacity:0;pointer-events:none}
.title-screen .title-logo canvas.loaded{opacity:1}
.title-screen .title-logo>img{position:relative;display:block;width:100%;height:auto;pointer-events:none}

/* Master portrait is a dedicated landscape close-up. */
.cutin-portrait img{width:130%;top:-65%;left:-9%}

/* Keep the glint behind the portrait, independent of DOM order. */
.cutin-portrait{z-index:2}
.cutin-glint{z-index:1}
/* Eye glint uses the same paused impact clock as the portrait. */
.cutin-glint{position:absolute;left:27%;right:4%;top:62%;height:2px;pointer-events:none;background:linear-gradient(90deg,transparent,#c0faff 9%,#fff 20%,#b2f7ff 48%,transparent);box-shadow:0 0 7px #a4faff;transform-origin:10% 50%;animation:eye-glint var(--cutin-duration,.5s) linear both paused;animation-delay:var(--cutin-age,0s)}
.cutin-glint::before{content:'';position:absolute;left:10%;top:-13px;width:4px;height:28px;background:linear-gradient(transparent,#fff,transparent);box-shadow:0 0 10px #c7ffff;transform:rotate(12deg)}
@keyframes eye-glint{0%,16%{opacity:0;transform:scaleX(.1)}30%{opacity:1;transform:scaleX(1)}48%{opacity:.9;transform:scaleX(1.05)}72%,100%{opacity:0;transform:scaleX(1.12)}}
@media(prefers-reduced-motion:reduce){.cutin-glint{display:none}}

/* A filled choice and border distinguish the selected time of day. */
.title-screen .title-controls .difficulty{gap:6px;padding:5px;border:1px solid #ffffffb3;border-radius:13px;background:#143848d9;box-shadow:0 3px 9px #102e4933}
.title-screen .title-controls .difficulty button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:7px 10px;border:2px solid transparent;border-radius:9px;background:transparent;color:#e3edf3;font-size:17px;font-weight:900;line-height:1.2;box-shadow:none}
.title-screen .title-controls .difficulty button.selected{border-color:#fff;background:#ffe082;color:#493910;box-shadow:0 2px 5px #031c3b55}
.title-screen .title-controls .difficulty button[data-level="normal"].selected{background:#626ab8;color:#fff}
.title-screen .title-controls .difficulty button:focus-visible{outline:3px solid #fff;outline-offset:2px}
.title-screen .title-controls .difficulty .time-icon{font-family:Arial,sans-serif;font-size:25px;line-height:1;font-weight:400}

/* Long presses are gameplay input, not text/image selection on iOS Safari. */
.stage,.stage *{
  -webkit-user-select:none;
  user-select:none;
  -webkit-touch-callout:none;
}
.stage img,.stage canvas{-webkit-user-drag:none}
/* Keep native link actions available for the explicit result download. */
.stage #save-result{-webkit-touch-callout:default}

/* Programmatic modal focus should not show a ring after a tap/click. */
body:not(.keyboard-navigation) button:focus-visible,body:not(.keyboard-navigation) a:focus-visible{outline:none}

.distance-board #help span{font-size:14px}
.pause-screen .header-actions{visibility:hidden;pointer-events:none}

.stage .distance-board .header-actions{left:0;right:0;justify-content:space-between;pointer-events:none}
.stage .distance-board .header-actions button{pointer-events:auto}
.stage .header-actions .pause-button{width:auto;height:auto;min-height:32px;border-radius:50px;padding:7px 10px;font-size:14px}
.stage .header-actions .pause-button span{margin-left:5px;font-size:14px}
.pause-screen .stage .distance-board .header-actions button{pointer-events:none}

.title-screen #intro>.sehira-title-logo{position:absolute;top:3%;left:4%;width:25%;height:auto;object-fit:contain;z-index:2}
.title-screen #intro>.sehira-title-logo{filter:none;opacity:.9}
.title-screen #intro>.production-title-logo{position:absolute;top:1.5%;right:2%;width:16%;height:auto;object-fit:contain;z-index:2;opacity:.9;pointer-events:none}

/* Mirrored help/pause controls share one typographic and spacing rule. */
.stage .distance-board .header-actions button{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:inherit;font-size:14px;font-weight:800;line-height:1.4;letter-spacing:0;min-height:36px;padding:7px 10px}
.stage .distance-board .header-actions button span{font:inherit;letter-spacing:inherit;margin:0}
.stage .distance-board .header-actions button .action-icon{display:inline-flex;align-items:center;justify-content:center;width:14px;flex:none}
#startup-splash{position:absolute;inset:0;z-index:100;background:#fff;opacity:1;transition:opacity .25s ease-out;overflow:hidden}
#startup-splash>img{display:block;width:100%;height:100%;object-fit:contain}
#startup-splash.leaving{opacity:0;pointer-events:none}
#startup-error{position:absolute;bottom:3%;left:4%;right:4%;text-align:center;background:#fff;font-size:13px;color:#123e4c}
@media(prefers-reduced-motion:reduce){#startup-splash{transition:none}}
/* Five compact baseballs sit in the original splash artwork's logo gap. */
#startup-progress{position:absolute;top:77%;left:50%;transform:translate(-50%,-50%);display:flex;gap:clamp(9px,2.6vw,16px);height:22px;align-items:center}
.loading-baseball{position:relative;display:block;flex:none;width:19px;height:19px;border-radius:50%;background:radial-gradient(circle at 33% 25%,#fff 25%,#f2f4f4 68%,#d9e0e4);border:1px solid #b2c0cb;box-shadow:0 2px 3px #27445a18;overflow:hidden;opacity:0;transform:translateY(3px) scale(.8);transition:opacity .16s ease-out,transform .16s ease-out}
.loading-baseball.visible{opacity:1;transform:none}
.loading-baseball::before,.loading-baseball::after{content:"";position:absolute;top:-3px;width:12px;height:23px;border:1.5px dashed #c46766;border-radius:50%}
.loading-baseball::before{left:-9px}.loading-baseball::after{right:-9px}
@media(prefers-reduced-motion:reduce){.loading-baseball{transition:none}}

/* Optical centering: compensate the full-width exclamation mark’s trailing space.
   Position separately so the home-run scale animation remains intact. */
.callout-title.end-exclamation{position:relative;left:.20em}

@font-face{font-family:'Sanbashi Pop';src:url('./assets/fonts/mochiy-pop-result.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
.stage .callout,.stage .callout-title,.stage .callout small{font-family:'Sanbashi Pop','Hiragino Maru Gothic ProN','Yu Gothic',sans-serif;font-weight:400}
.stage .callout small{font-size:clamp(21px,5.6cqw,31px);line-height:1.5;letter-spacing:.015em;margin-top:12px}
/* Result score: sun/moon badge matching the shared result card. */
.result-summary{display:grid;grid-template-columns:max-content max-content;justify-content:center;align-items:center;gap:6px 16px}
.result-screen #result-detail{grid-column:1/-1;margin:0;line-height:1.5}
.result-mode{display:flex;align-items:center;justify-content:center;gap:6px;padding:5px 10px;border:2px solid #efa132;background:linear-gradient(135deg,#fffbea,#ffe49a);color:#9a4c13;font-size:clamp(17px,4.6cqw,25px);font-weight:900;line-height:1.2;white-space:nowrap}
.result-mode.night{background:#193d55;color:#ffe397;border-color:#ffe397}
.result-mode-icon{font-family:Arial,sans-serif;font-size:1.3em;line-height:1}
.social-buttons{grid-template-columns:repeat(4,minmax(0,1fr))}
.social-buttons button,.social-buttons .save-result{min-width:0;width:100%;padding-inline:2px;font-size:clamp(10px,2.7cqw,15px);text-align:center}
#retry-result-image{grid-column:1/-1}
.result-screen #result #new-best{text-align:center;margin:3px 0;font-size:clamp(10px,2.5cqw,12px);line-height:1.3}

#help-dialog::backdrop{background:transparent}
.help-open .stage .overlay{visibility:hidden}
#help-dialog .help-coach{display:flex;flex-direction:row-reverse;align-items:center;gap:9px;margin:0 0 16px}
#help-dialog #help-armeria{width:52px;height:56px;flex:none;object-fit:contain}
#help-dialog .help-cheer::after{left:auto;right:-7px;border-right:0;border-left:8px solid #e4f2eb}
#help-dialog .help-reply{display:flex;align-items:center;gap:8px;margin-top:18px}
#help-dialog .help-minako{position:relative;display:block;flex:none;width:48px;height:56px;overflow:hidden;border-radius:14px;background:#d9f0f3}
#help-dialog .help-minako img{position:absolute;max-width:none;width:112px;height:auto;left:-29px;top:-7px}
#help-dialog .help-finale{position:relative;flex:1;min-width:0;margin:0;padding:12px 4px;background:#fff0cb;border-radius:12px;font-size:clamp(8px,2.2vw,11px);line-height:1.9}
#help-dialog .help-finale::before{content:'';position:absolute;left:-7px;top:calc(50% - 7px);border-right:8px solid #fff0cb;border-block:7px solid transparent}
#help-dialog .help-finale strong{text-decoration:none}
/* Embedded canvas fills the 3:4 iframe without the standalone page surround. */
html.embed-page,html.embed-page body{margin:0;padding:0;background:transparent;overflow:hidden}
html.embed-page .arcade,html.embed-page .embedded .arcade{width:100%;max-width:540px;padding:0;margin:0 auto}
html.embed-page .game-shell{border:0;border-radius:0;box-shadow:none}
