@charset "UTF-8";
.field .stadium{object-fit:fill}
.hint-switch input{z-index:1;cursor:pointer}
:root{--ink:#193a38;--muted:#79827a;--paper:#f7f6ef;--line:#dfE3d9;--green:#1e574b;--gold:#e9c16b;--navy:#102b2c;--white:#fffef9;font-family:"PingFang TC","Noto Sans TC","Microsoft JhengHei",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,select,input{font:inherit}button,select{cursor:pointer}button{touch-action:manipulation}button:disabled,select:disabled{cursor:default}button{color:inherit}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #c69335;outline-offset:4px}[hidden]{display:none!important}
.masthead{height:87px;max-width:1600px;padding:0 5%;margin:auto;display:flex;align-items:center;gap:30px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;color:var(--ink);font-size:22px;font-weight:850;letter-spacing:2px}.brand small{display:block;font-size:8px;letter-spacing:2px;margin-top:3px;font-weight:650}.header-note{font-size:12px;color:#69796e;margin-left:auto;display:flex;gap:8px;align-items:center}.live-dot{display:inline-block;background:#c5b974;width:6px;height:6px;border-radius:50%;box-shadow:0 0 0 3px #c5b97415}.header-note .live-dot{background:#45826a;box-shadow:0 0 0 3px #45826a15}.icon-button{border:1px solid #d5dcd1;border-radius:6px;background:transparent;padding:9px 12px;font-size:11px}.icon-button:hover{background:#eaece2}
main{max-width:1370px;margin:auto;padding:32px 44px 0}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px;gap:20px}.eyebrow{font-size:9px;letter-spacing:1.9px;font-weight:750;color:#738679;margin:0 0 8px}h1{font-size:clamp(22px,2.25vw,32px);letter-spacing:1.1px;margin:0;font-weight:850}.intro-copy{font-size:12px;color:#7b847a;margin:9px 0 0}.level-picker{font-size:11px;color:#748073;display:flex;flex-direction:column;gap:8px;min-width:230px}.level-picker select{color:#29483e;padding:10px 34px 10px 12px;background:var(--white);border:1px solid #d7dfd2;border-radius:5px;font-size:12px}.level-picker select:disabled{opacity:.6}
.broadcast{border-radius:10px;overflow:hidden;box-shadow:0 12px 35px #163c2a0c;border:1px solid #dbe0d4}.scoreboard{height:85px;background:var(--navy);color:#f8f5df;display:flex;align-items:center;justify-content:space-between;padding:0 26px;gap:24px}.score-team{display:flex;align-items:center;gap:13px;flex-shrink:0}.team-badge{border:1px solid #f3d78877;border-radius:50%;width:35px;height:35px;display:grid;place-items:center;font-family:Georgia,serif;font-weight:700;font-style:italic;color:#f3d788;font-size:23px}.score-team small{display:block;font-size:9px;color:#9dafa6;margin-bottom:5px;letter-spacing:1px}.score-team strong{font-size:15px;letter-spacing:1px}.score-number{font-size:40px;color:var(--gold);font-family:ui-monospace,monospace;margin-left:23px;line-height:1}.score-team .score-unit{align-self:flex-end;margin-bottom:3px;font-size:9px;letter-spacing:0}.pitch-score{display:flex;flex-direction:column;gap:9px}.pitch-score>span{font-size:8px;color:#97ada1;letter-spacing:1.2px}.pitch-score ol{display:flex;padding:0;margin:0;list-style:none;gap:7px}.pitch-score li{width:23px;height:23px;border:1px solid #ffffff20;display:grid;place-items:center;font-family:ui-monospace,monospace;font-size:11px;border-radius:3px;color:#7e9990}.pitch-score li.completed{color:var(--gold);background:#e9c16b12;border-color:#e9c16b45}.pitch-score li.current{border-color:var(--gold);color:var(--gold)}.score-stats{display:flex;border-left:1px solid #ffffff1f;gap:25px;padding-left:25px}.score-stats>div{text-align:center;min-width:36px}.score-stats small{display:block;color:#9dafa6;font-size:9px;margin-bottom:6px}.score-stats strong{font-family:ui-monospace,monospace;font-size:23px;font-weight:500}
.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;min-height:442px}.field{position:relative;background:#486a58;overflow:hidden;min-height:442px}.stadium{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center}.field-bug{position:absolute;left:21px;top:20px;z-index:2;background:#102c2b9e;border:1px solid #ffffff17;backdrop-filter:blur(6px);border-radius:4px;font-size:10px;letter-spacing:1px;color:#f1efe1;padding:9px 11px;display:flex;align-items:center;gap:8px}.field-bug .live-dot{background:#ebbf6b}.bug-divider{opacity:.3;margin:0 3px}.field-weather{position:absolute;right:22px;top:29px;color:#ebeee0;z-index:2;font-size:9px;letter-spacing:1px}.field-weather span{margin-left:10px;opacity:.6}.field-caption{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#0c272ac4);min-height:65px;padding:30px 21px 16px;display:flex;align-items:center;gap:12px;color:#f6f3e5;font-size:11px;z-index:3}.caption-tag{background:var(--gold);color:#17372e;padding:5px 8px;font-size:9px;letter-spacing:1px;font-weight:700;white-space:nowrap}.base-panel{position:absolute;right:20px;bottom:67px;width:102px;background:#0c292bc4;backdrop-filter:blur(5px);padding:10px 10px 9px;border:1px solid #ffffff18;border-radius:6px;color:#d9dfcb;text-align:center;z-index:2}.base-panel small{font-size:8px;letter-spacing:2px}.base-panel svg{display:block;width:65px;margin:8px auto 5px}.base-panel path[id]{fill:#ffffff30;stroke:#ffffff66;stroke-width:1}.base-panel path.occupied{fill:#edc06a;stroke:#f5d89a;filter:drop-shadow(0 0 4px #edc06a99)}.base-panel>span{font-size:7px}.action-layer{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.flying-ball{opacity:0}.bat{transform-origin:412px 478px}.hit-flash{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;z-index:3;opacity:0;color:#fff8d5;text-shadow:0 3px 25px #122c2c80;transform:rotate(-7deg)}.hit-flash small{font-size:15px;letter-spacing:3px}.hit-flash strong{font-size:83px;font-style:italic;font-weight:950;line-height:1.35}.hit-flash>span{font-size:21px;font-weight:800;letter-spacing:8px}.hit-animation .hit-flash{animation:hit-message 1.1s both}.hit-animation .bat{animation:swing .65s ease-out both}.hit-animation .flying-ball{animation:fly-ball .8s ease-out both}
.dugout{background:#fffef9;padding:24px 25px 17px;display:flex;flex-direction:column}.at-bat{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.at-bat .eyebrow{font-size:9px;letter-spacing:1px;margin:0}.at-bat>span:last-child{font-size:9px;color:#83917e}.prompt-label{text-align:center;font-size:11px;color:#7c8876;margin:10px 0 0}.target{text-align:center;font-family:"Bopomofo TC","PingFang TC","Microsoft JhengHei",sans-serif;font-size:111px;font-weight:600;line-height:1.35;color:#245d4f;height:151px;display:grid;place-items:center}.key-clue{text-align:center;font-size:11px;color:#6a7b6b;margin:0 0 15px;min-height:27px;line-height:27px}kbd{display:inline-block;border:1px solid #d0d8c9;border-bottom:3px solid #d0d8c9;border-radius:4px;min-width:27px;height:27px;margin-left:4px;text-align:center;line-height:23px;color:#295545;background:#f4f5ed;font-size:13px}.feedback{color:#818975;font-size:10px;text-align:center;line-height:1.7;min-height:34px;margin:0 0 10px}.feedback.success{color:#286951;font-weight:600}.feedback.try-again{color:#9c732c}.primary-button{width:100%;border:none;background:#245746;color:#fffaf0;display:flex;align-items:center;justify-content:space-between;padding:13px 17px;border-radius:5px;font-size:13px;letter-spacing:1px;transition:background .2s,transform .2s}.primary-button:hover{background:#123f32;transform:translateY(-1px)}.primary-button>span{font-size:20px;line-height:1}.hint-button{border:1px solid #dfe3d5;border-radius:5px;width:100%;background:#f9f9f2;padding:12px 8px;font-size:10px;color:#6a7f65}.hint-button:hover{background:#eff2e6}.hint-button span{margin-left:13px}.progress-line{height:3px;border-radius:5px;background:#e9ecdf;margin:20px 0 10px;overflow:hidden}.progress-line span{display:block;width:0;height:100%;background:#c5a259;transition:width .4s}.round-note{text-align:center;font-size:8px;color:#9aa08f;letter-spacing:.4px;margin:0}.coach-note{display:flex;gap:8px;margin-top:auto;padding-top:17px;align-items:flex-start}.coach-icon{color:#b29552;font-size:18px}.coach-note p{font-size:9px;color:#8a917d;line-height:1.8;margin:0}.coach-note strong{color:#5d7156;font-weight:650}.result-kicker{font-size:10px;letter-spacing:3px;color:#b18e45;margin-top:21px}.dugout h2{font-size:30px;margin:7px 0 10px}.result-stats{display:flex;gap:28px;margin:18px 0}.result-stats strong{font-family:ui-monospace,monospace;font-size:30px;color:#245746}.result-stats span{display:block;font-size:9px;color:#7b8873;margin-top:3px}#result-message{font-size:11px;line-height:1.8;color:#7a8772}.review-title{font-size:10px;color:#7e8c73;margin:12px 0 8px}.review-symbols{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:18px}.review-symbols span{border:1px solid #e1e4d5;background:#f4f5eb;padding:4px 7px;border-radius:4px;font-size:11px}
.keyboard-section{margin-top:27px;border:1px solid var(--line);border-radius:9px;padding:20px 25px 13px;background:#f1f2e9}.keyboard-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:19px}.keyboard-heading>div{display:flex;align-items:center;gap:13px}.keyboard-heading h2{font-size:13px;margin:0;font-weight:750}.keyboard-heading>div>span{font-size:9px;color:#8a9180}.hint-switch{display:flex;align-items:center;gap:8px;font-size:10px;color:#60745d;cursor:pointer;position:relative}.hint-switch input{position:absolute;opacity:0;width:29px;height:18px;left:0;margin:0}.switch-track{width:29px;height:17px;border-radius:20px;background:#b4bdab;padding:3px;transition:background .2s}.switch-track:before{content:"";display:block;width:11px;height:11px;border-radius:50%;background:#fffef6;transition:transform .2s}.hint-switch input:checked+.switch-track{background:#397057}.hint-switch input:checked+.switch-track:before{transform:translateX(12px)}.hint-switch input:focus-visible+.switch-track{outline:3px solid #c69335;outline-offset:4px}.keyboard{max-width:850px;margin:0 auto}.keyboard-row{display:flex;gap:7px;margin-bottom:7px}.keyboard-row.row-1{margin-left:22px;margin-right:44px}.keyboard-row.row-2{margin-left:35px;margin-right:31px}.keyboard-row.row-3{margin-left:58px;margin-right:8px}.key{flex:1;min-width:0;height:48px;border:1px solid #d5dccc;border-bottom:3px solid #c9d2c2;border-radius:5px;background:#fffef7;position:relative;transition:background .15s,box-shadow .15s,transform .15s;display:flex;align-items:center;justify-content:center;gap:12px;padding:0 7px}.key .latin-key{font-size:10px;color:#95a08c;position:absolute;top:7px;left:8px;font-family:ui-monospace,monospace}.key .zhuyin-key{font-size:20px;color:#536c50;margin-left:14px}.key.outside-pool{background:#ecefe3;border-color:#dce1d3;border-bottom-color:#d7dece}.key.outside-pool .zhuyin-key{color:#aab49f}.key:disabled{opacity:1}.key:not(:disabled):hover{background:#e4ebd8;transform:translateY(-1px)}.key.answer-key{background:#f2d890;border-color:#d9b455;border-bottom-color:#c29a3e;box-shadow:0 0 0 3px #eacb791f}.key.answer-key .latin-key,.key.answer-key .zhuyin-key{color:#5c4e25}.key.wrong-key{background:#f4d9c4;border-color:#d5a585;animation:shake .3s}.keyboard-footer{display:flex;justify-content:space-between;max-width:850px;margin:12px auto 0;font-size:8px;color:#8d9781;gap:12px}.legend-dot{display:inline-block;width:6px;height:6px;border-radius:2px;background:#dfbd65;margin-right:6px}.page-footer{display:flex;align-items:center;justify-content:space-between;padding:20px 0 25px;color:#99a08e;font-size:9px}.page-footer>span:last-child{font-size:7px;letter-spacing:1.5px}.footer-ball{font-size:13px;margin-left:7px;filter:grayscale(1);opacity:.6}
@keyframes hit-message{0%,15%{opacity:0;transform:scale(.8) rotate(-7deg)}30%,75%{opacity:1;transform:scale(1) rotate(-7deg)}100%{opacity:0;transform:scale(1.08) rotate(-7deg)}}@keyframes swing{0%{transform:rotate(0)}40%,100%{transform:rotate(-110deg)}}@keyframes fly-ball{0%{opacity:1;transform:translate(0,0) scale(.5)}30%{opacity:1;transform:translate(-80px,135px) scale(1.8)}100%{opacity:0;transform:translate(150px,-200px) scale(.3)}}@keyframes shake{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
@media(min-width:1500px){main{padding-top:40px}.game-layout,.field{min-height:490px}.dugout{padding-top:30px}.target{height:175px;font-size:128px}.keyboard-section{margin-top:30px}}
@media(max-width:1100px){main{padding:26px 25px 0}.scoreboard{gap:16px;padding:0 20px}.pitch-score ol{gap:4px}.pitch-score li{width:20px;height:22px}.score-stats{gap:15px;padding-left:15px}.score-number{margin-left:8px}.game-layout{grid-template-columns:minmax(0,1fr) 280px}.dugout{padding-left:20px;padding-right:20px}.field-weather{display:none}.keyboard-heading>div{align-items:flex-start;flex-direction:column;gap:5px}}
@media(max-width:780px){.masthead{height:72px;padding:0 22px}.brand{font-size:19px;gap:10px}.brand img{width:32px}.brand small{font-size:6px}.header-note{display:none}.icon-button{margin-left:auto}.intro{align-items:flex-start}.level-picker{min-width:185px;font-size:10px}.level-picker select{font-size:10px}h1{font-size:23px;line-height:1.5}.eyebrow{font-size:7px}.intro-copy{font-size:10px}.scoreboard{height:auto;padding:17px;flex-wrap:wrap;gap:16px}.score-team{flex:1}.score-team strong{font-size:13px}.score-number{margin-left:auto;font-size:33px}.pitch-score{order:3;flex-direction:row;align-items:center;justify-content:space-between;width:100%}.pitch-score li{width:27px}.score-stats{gap:18px}.score-stats strong{font-size:20px}.score-stats small{font-size:8px}.game-layout{grid-template-columns:minmax(0,1fr) 240px}.field{min-height:425px}.dugout{padding:20px 16px 15px}.at-bat{gap:5px}.at-bat .eyebrow{font-size:8px}.at-bat>span:last-child{font-size:8px}.field-caption{align-items:flex-start;gap:8px;flex-direction:column;padding-left:15px;font-size:9px}.base-panel{right:14px;bottom:91px;width:82px}.field-bug{font-size:8px;left:14px;top:15px;padding:8px}.key{height:45px}.keyboard-row{gap:4px;margin-bottom:5px}.key .latin-key{left:5px;font-size:8px}.key .zhuyin-key{font-size:17px;margin-left:9px}.keyboard-section{padding:17px 17px 12px}.keyboard-footer{font-size:7px}.keyboard-heading{margin-bottom:16px}.hint-switch{font-size:9px}.page-footer{font-size:8px}}
@media(max-width:580px){main{padding:23px 14px 0}.intro{flex-direction:column;gap:18px;margin-bottom:20px}.level-picker{width:100%;flex-direction:row;align-items:center;justify-content:space-between}.level-picker select{min-width:220px;font-size:11px}.game-layout{grid-template-columns:1fr}.field{min-height:290px;aspect-ratio:1.55}.dugout{padding:20px 22px}.at-bat{margin-bottom:5px}.target{height:118px;font-size:90px}.prompt-label{margin-top:5px}.feedback{min-height:20px}.coach-note{padding-top:16px}.coach-note p{font-size:10px}.primary-button{padding:14px 17px}.base-panel{bottom:67px}.field-caption{flex-direction:row;align-items:center;font-size:8px;gap:7px}.field-weather{display:block;top:23px;font-size:8px;right:14px}.pitch-score>span{font-size:8px}.pitch-score li{width:22px;height:22px;font-size:9px}.pitch-score ol{gap:4px}.score-stats{gap:14px}.score-team{gap:9px}.team-badge{width:29px;height:29px;font-size:20px}.score-number{font-size:30px}.score-stats strong{font-size:18px}.keyboard-section{padding:17px 8px 12px;margin-top:20px}.keyboard-heading{padding:0 5px;gap:10px}.keyboard-heading h2{font-size:11px}.keyboard-heading>div>span{font-size:7px}.hint-switch{font-size:8px;gap:5px;white-space:nowrap}.key{padding:0;height:43px;border-radius:4px}.key .latin-key{font-size:7px;left:4px;top:4px}.key .zhuyin-key{font-size:16px;margin:9px 0 0 2px}.keyboard-row{gap:3px}.keyboard-row.row-1{margin-left:9px;margin-right:20px}.keyboard-row.row-2{margin-left:15px;margin-right:14px}.keyboard-row.row-3{margin-left:25px;margin-right:4px}.keyboard-footer{padding:0 5px;font-size:7px;line-height:1.6}.keyboard-footer>span:last-child{max-width:110px;text-align:right}.page-footer>span:last-child{font-size:6px;letter-spacing:.5px}.hit-flash strong{font-size:60px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.hit-animation .hit-flash{opacity:1}}
