:root{--navy:#101b32;--ink:#192641;--muted:#687180;--gold:#e9b65f;--paper:#f6f3ed;--line:#e3ded5}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:system-ui,-apple-system,"Noto Sans TC","Microsoft JhengHei",sans-serif}button,input{font:inherit}button,a,input{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #d08a31;outline-offset:4px}main{max-width:1160px;padding:0 28px;margin:auto}.mast{display:flex;align-items:center;justify-content:space-between;padding:28px 0}.brand{text-decoration:none;color:var(--navy);display:flex;align-items:center;gap:12px;font-size:24px;font-weight:900;letter-spacing:.03em}.brand small{display:block;font-size:10px;letter-spacing:.16em;font-weight:600;margin-top:3px}.brandball{font-size:34px}.pill{font-size:12px;border:1px solid #d8d1c5;border-radius:40px;padding:9px 16px;color:#6d685f}.arena{border-radius:22px;overflow:hidden;background:#fff;box-shadow:0 16px 55px #1a273515;border:1px solid #d8d9db;position:relative}.arena-head{background:var(--navy);color:#c8d2e4;padding:16px 26px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff13}.live{font-size:10px;letter-spacing:.2em;font-weight:700;display:flex;align-items:center;gap:9px}.live i{background:var(--gold);width:6px;height:6px;border-radius:50%;box-shadow:0 0 12px #e9b65f88}.small-btn{font-size:11px;color:#d8e0ea;border:1px solid #ffffff35;background:transparent;padding:6px 10px;border-radius:6px}.scoreboard{background:#14213a;color:white;display:flex;align-items:center;padding:22px 40px;gap:28px;position:relative;z-index:2}.scoreboard small{display:block;font-size:10px;letter-spacing:.12em;color:#b4bfd0}.scoreboard strong{font:700 58px/.95 ui-monospace,monospace;color:var(--gold);display:block;margin-top:12px;text-shadow:0 0 18px #e9b65f22}.score-middle{flex:1;border-left:1px solid #ffffff22;padding-left:27px}.score-middle>span{font-size:21px;font-weight:700}.score-middle small{margin-top:8px;letter-spacing:.02em;line-height:1.7}.outs>div{display:flex;gap:9px;margin-top:18px}.outs i{width:19px;height:19px;border-radius:50%;background:#334058;border:2px solid #536079}.outs i.on{background:#ec765f;border-color:#ffad90;box-shadow:0 0 14px #ec765f66}.stadium{height:210px;position:relative;overflow:hidden;background:linear-gradient(#182c4b,#35465c 58%,#294c51);isolation:isolate}.stadium svg{width:100%;height:100%;position:absolute;bottom:0;z-index:1}.crowd{position:absolute;inset:0 0 24%;opacity:.24;background:radial-gradient(circle,#c6cfce 1px,transparent 2px) 0 0/11px 9px;transform:perspective(300px) rotateX(-15deg)}.flood{position:absolute;top:16px;width:65px;height:18px;border-radius:6px;background:repeating-linear-gradient(90deg,#fff6dc 0 6px,#67717d 7px 10px);box-shadow:0 0 60px 22px #fff5cd44;z-index:1;transform:rotate(-9deg)}.flood:after{content:'';height:120px;width:4px;background:#8e9caa;position:absolute;left:50%;top:18px}.f1{left:10%}.f2{right:10%;transform:rotate(9deg)}.field-label{position:absolute;right:24px;bottom:15px;color:#d7ede27a;font-size:8px;letter-spacing:.2em;z-index:2}.flying-ball{position:absolute;left:50%;top:64%;font-size:10px;opacity:0;z-index:3}.stadium.swing .flying-ball{animation:ball .65s ease-in both}.stadium.hit .flying-ball{animation:hitball .8s ease-in-out both}.stadium.swing #batter,.stadium.hit #batter{transform-origin:420px 250px;animation:swing .45s ease-in-out}#callout{position:absolute;inset:0;display:grid;place-items:center;z-index:4;font-size:clamp(32px,5vw,55px);font-weight:950;font-style:italic;color:#ffe5b0;text-shadow:3px 4px #14213a,0 4px 20px #0007;pointer-events:none;letter-spacing:.05em}.welcome,.play,.end,.feedback{padding:34px 42px 38px}.eyebrow{font-size:10px;letter-spacing:.18em;font-weight:800;color:#9c743d}h1{font-size:clamp(24px,3.2vw,36px);letter-spacing:-.04em;margin:10px 0 12px}p{line-height:1.8}.welcome>p{color:var(--muted);font-size:14px;margin:0 0 28px}.setup-row{display:flex;gap:24px;align-items:end}label.nickname-label{font-size:12px;font-weight:700;flex:1;min-width:180px}input[type=text],input#nickname{width:100%;margin-top:10px;border:1px solid #d7dce2;border-radius:9px;padding:15px 16px;background:#fafafa;font-size:14px;color:var(--ink);height:56px}fieldset{border:0;padding:0;margin:0;display:flex;gap:10px;flex:1.4}legend{font-size:12px;font-weight:700;margin-bottom:10px}.source-card{display:flex;align-items:center;border:1px solid #d7dce2;border-radius:9px;padding:10px 12px;gap:8px;flex:1;cursor:pointer;font-size:13px;white-space:nowrap}.source-card:has(input:checked){border-color:#b3854e;background:#fbf6ec}.source-card input{accent-color:#a1743c}.source-card small{display:block;font-size:10px;color:var(--muted);margin-top:4px}.primary{background:var(--navy);border:0;border-radius:9px;color:#fff;padding:15px 24px;font-size:14px;font-weight:700;min-height:50px;transition:background .2s,transform .2s}.primary:hover{background:#2a405f;transform:translateY(-1px)}#start-btn{width:100%;margin-top:20px;display:flex;justify-content:center;gap:22px}#start-btn span{color:var(--gold)}.rules{display:flex;gap:24px;justify-content:center;margin-top:23px;color:#777d86;font-size:11px;flex-wrap:wrap}.rules b{color:#b58b55;font-size:10px;margin-right:5px}.verse-top{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted)}blockquote{margin:24px 0 28px;padding:6px 10px;text-align:center;font-family:"Noto Serif TC","PMingLiU",serif;font-size:clamp(21px,2.4vw,29px);line-height:1.9;font-weight:600;letter-spacing:.025em;max-height:350px;overflow:auto}.pitch-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:770px;margin:auto}.pitch-grid button{border:1px solid #dce0e4;border-radius:12px;background:#fafaf8;min-height:93px;color:var(--ink);padding:13px 12px;position:relative;transition:.18s}.pitch-grid button:hover{background:#fcf4e4;border-color:#b88c50;transform:translateY(-3px);box-shadow:0 5px 15px #a67c3015}.pitch-grid button:nth-child(1){grid-column:2}.pitch-grid button:nth-child(2){grid-column:1;grid-row:2}.pitch-grid button:nth-child(3){grid-column:2;grid-row:2}.pitch-grid button:nth-child(4){grid-column:3;grid-row:2}.pitch-grid button:nth-child(5){grid-column:2;grid-row:3}.pitch-grid .pitch{display:block;font-size:11px;color:#8a6c47;margin-bottom:6px}.pitch-grid strong{display:block;font-size:17px}.pitch-grid kbd{position:absolute;top:8px;left:9px;font:10px ui-monospace,monospace;color:#8c919b}.pitch-grid .ball-icon{font-size:15px;margin-right:5px}.keyboard{text-align:center;font-size:10px;color:#91959a;margin-bottom:0}.feedback{text-align:center;border-top:1px solid #eee6da;background:#fdfaf4}.feedback-title{font-size:28px;font-weight:900;color:#976a28}.feedback.miss .feedback-title{color:#b14c40}#answer-ref{font-weight:700;font-size:17px;margin:12px 0 6px}#answer-text{color:#626a74;font-family:"PMingLiU",serif;font-size:19px;max-width:720px;margin:8px auto 24px}#next{min-width:230px}.end{text-align:center}.end h2{font-size:28px;margin:10px}.final-number{font:800 96px/1.1 ui-monospace,monospace;color:#b27f36;margin-top:15px}#final-caption{font-size:14px;color:#7b7266;margin:4px}#end-message{font-size:14px;color:var(--muted)}.rank-link{display:block;font-size:12px;color:#947041;margin:18px auto 0}#error{margin:0;padding:15px 24px;color:#a1372f;background:#fff0ec;text-align:center;font-size:14px}.rankings{margin-top:54px;scroll-margin-top:20px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:12px;margin-bottom:23px}.section-heading h2{font-size:23px;margin:8px 0 0;letter-spacing:-.03em}.section-heading>span{font-size:10px;color:#85817a}.rank-columns{display:grid;grid-template-columns:1fr 1.2fr;gap:22px}.top-card,.recent-card{border:1px solid var(--line);border-radius:14px;background:#fff;overflow:hidden}.rank-columns h3{font-size:15px;padding:22px 24px;margin:0;border-bottom:1px solid #eee8df;display:flex;justify-content:space-between;align-items:center}.rank-columns h3 small{font-size:9px;letter-spacing:.13em;color:#958879}.top-card h3{background:#f4ece0}.records{padding:3px 22px}.records.recent{max-height:366px;overflow:auto;overscroll-behavior:contain}.record{display:flex;align-items:center;gap:13px;padding:16px 0;border-bottom:1px solid #f0ece5}.record:last-child{border:0}.position{font:600 17px ui-monospace,monospace;color:#a7a19a;width:23px}.top-card .record:first-child .position{color:#b78c43}.record .info{flex:1;min-width:0}.record .name{font-size:14px;font-weight:700;overflow-wrap:anywhere}.record .meta{font-size:10px;color:#96918b;margin-top:5px}.record .value{font:700 24px ui-monospace,monospace;color:#ab7c38}.record .value small{font:10px system-ui;color:#8c8880;margin-left:4px}.empty{text-align:center;padding:35px 12px;color:#8d887f;font-size:13px;line-height:1.9}.rank-note{font-size:10px;color:#969087;margin:14px 0}footer{padding:38px 0 30px;display:flex;align-items:center;gap:18px;font-size:11px;color:#969087}footer b{color:#676762}footer small{margin-left:auto;font-size:10px}[hidden]{display:none!important}@keyframes ball{0%{opacity:1;transform:translate(0,-10px) scale(.5)}100%{opacity:1;transform:translate(-40px,100px) scale(3)}}@keyframes hitball{0%{opacity:1;transform:translate(0,-10px) scale(.5)}40%{opacity:1;transform:translate(-40px,100px) scale(2)}100%{opacity:0;transform:translate(230px,-180px) scale(.4)}}@keyframes swing{50%{rotate:-12deg}100%{rotate:0deg}}@media(max-width:700px){main{padding:0 14px}.mast{padding:19px 2px}.brand{font-size:20px}.brand small{font-size:8px}.brandball{font-size:29px}.pill{display:none}.arena{border-radius:16px}.arena-head{padding:13px 17px}.live{font-size:8px}.scoreboard{padding:20px 19px;gap:16px}.scoreboard small{font-size:8px}.scoreboard strong{font-size:46px}.score-middle{padding-left:15px}.score-middle>span{font-size:16px}.score-middle small{font-size:9px;max-width:135px}.outs i{width:13px;height:13px}.outs>div{gap:6px}.outs{max-width:88px}.stadium{height:175px}.welcome,.play,.end,.feedback{padding:26px 20px}.welcome>p{font-size:12px}.setup-row{display:block}fieldset{margin-top:20px}.source-card{padding:12px;min-height:62px}.rules{gap:9px;font-size:9px;justify-content:space-between}.rules b{display:none}.verse-top{font-size:9px}blockquote{padding:0;font-size:22px;margin-top:21px}.pitch-grid{gap:7px}.pitch-grid button{padding:18px 3px 12px;min-height:90px}.pitch-grid strong{font-size:14px}.pitch-grid .pitch{font-size:10px}.pitch-grid .ball-icon{display:none}.keyboard{font-size:9px}.rankings{margin-top:36px}.section-heading{display:block}.section-heading h2{font-size:20px;margin-bottom:9px}.rank-columns{grid-template-columns:1fr;gap:18px}.records.recent{max-height:300px}footer{flex-wrap:wrap;gap:9px;padding:27px 2px}footer small{width:100%;margin:0}.field-label{font-size:7px}.rank-note{line-height:1.7}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition:none!important;scroll-behavior:auto!important}}
