:root{color:#19233a;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5edd9;font-family:Microsoft JhengHei,Noto Sans TC,Segoe UI,sans-serif}html,body,#root{min-width:320px;min-height:100%;margin:0}body{overscroll-behavior:none;min-height:100svh}:root{--blue:#1677ff;--blue-dark:#06489f;--blue-soft:#eaf4ff;--red:#ef3f46;--red-dark:#a61925;--red-soft:#fff0ef;--orange:#f46a0a;--orange-dark:#bc3c00;--yellow:#ffd452;--ink:#19233a;--muted:#6c7488;--cream:#fff8e7;--paper:#fffef9;--shadow:0 14px 35px #35271124}*{box-sizing:border-box}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible,input:focus-visible{outline-offset:2px;outline:4px solid #ffb000}.setup-screen{min-height:100svh;color:var(--ink);background:radial-gradient(circle at 8% 18%,#1677ff1a,#0000 22%),radial-gradient(circle at 92% 18%,#ef3f461a,#0000 22%),linear-gradient(#fffdf5 0%,#f6edd9 100%);padding:0 0 56px}.setup-hero{color:#fff;background:linear-gradient(105deg, var(--orange-dark), var(--orange) 52%, #d84a00);text-align:center;justify-content:center;align-items:center;gap:22px;min-height:166px;padding:24px;display:flex;box-shadow:0 7px #7e320026}.setup-logo{aspect-ratio:1;border:6px solid #ffffffd9;border-radius:22px;flex:none;place-items:center;width:80px;font-size:4rem;font-weight:900;line-height:1;display:grid;transform:rotate(-5deg)}.setup-hero span{letter-spacing:.22em;margin-bottom:4px;font-size:.86rem;font-weight:900;display:block}.setup-hero h1{text-shadow:0 4px #69200047;margin:0;font-family:Arial Rounded MT Bold,Microsoft JhengHei,sans-serif;font-size:clamp(2.5rem,4vw,4.6rem);line-height:1}.setup-hero p{letter-spacing:.1em;margin:5px 0 0;font-size:clamp(1rem,1.4vw,1.35rem);font-weight:800}.setup-grid{grid-template-columns:1fr 1fr;gap:20px;width:min(1260px,100% - 36px);margin:34px auto 26px;display:grid}.setup-card{box-shadow:var(--shadow);background:#ffffffeb;border:2px solid #ecd6ad;border-radius:24px;padding:22px}.setup-card--wide{grid-column:1/-1}.setup-title{align-items:center;gap:12px;margin-bottom:18px;display:flex}.setup-title>span{color:#fff;background:var(--orange);border-radius:14px;flex:none;place-items:center;width:46px;height:46px;font-weight:900;display:grid;box-shadow:0 4px #b63d00}.setup-title h2{margin:0;font-size:1.35rem;line-height:1.05}.setup-title p{color:var(--muted);letter-spacing:.08em;margin:3px 0 0;font-size:.78rem;font-weight:800}.choice-row{grid-template-columns:repeat(5,1fr);gap:10px;display:grid}.choice-row--six{grid-template-columns:repeat(6,1fr)}.choice-row button,.operation-grid button{min-height:64px;color:var(--ink);cursor:pointer;background:#fff;border:2px solid #ded9ce;border-radius:15px;font-weight:900;transition:transform .12s,border-color .12s,background .12s;box-shadow:0 4px #19233a1f}.choice-row button:hover,.operation-grid button:hover{border-color:#f2a05d;transform:translateY(-2px)}.choice-row button.selected,.operation-grid button.selected{border-color:var(--orange);color:#8a2e00;background:#fff0df;box-shadow:0 4px #e46009,inset 0 0 0 2px #fff}.choice-row--six button{min-height:76px;font-size:1.5rem}.compact-choices{grid-template-columns:repeat(3,1fr)}.operation-grid{grid-template-columns:repeat(5,1fr);gap:10px;display:grid}.operation-grid button{flex-direction:column;justify-content:center;align-items:center;min-height:86px;display:flex}.operation-grid strong{font-size:1.15rem}.operation-grid span{color:var(--muted);margin-top:2px;font-size:.72rem}.operation-grid small{color:var(--red-dark);margin-top:4px;font-size:.65rem}.operation-grid button:disabled{cursor:not-allowed;opacity:.43;box-shadow:none;background:#eee}.team-name-editor{grid-template-columns:1fr auto 1fr;align-items:end;gap:16px;display:grid}.name-field{flex-direction:column;gap:7px;font-weight:900;display:flex}.name-field span{padding-left:4px}.name-field input{width:100%;min-height:66px;color:var(--ink);background:#fff;border:3px solid;border-radius:16px;padding:10px 18px;font-size:1.35rem;font-weight:900}.name-field--blue{color:var(--blue-dark)}.name-field--blue input{border-color:var(--blue)}.name-field--red{color:var(--red-dark)}.name-field--red input{border-color:var(--red)}.swap-setup{color:#60400e;background:var(--yellow);cursor:pointer;border:0;border-radius:16px;justify-content:center;align-items:center;gap:6px;min-width:110px;min-height:66px;font-size:1.8rem;font-weight:900;display:flex;box-shadow:0 5px #b67800}.swap-setup span{font-size:.85rem}.start-game-button{color:#fff;cursor:pointer;background:linear-gradient(100deg,#158246,#21b965);border:5px solid #fff;border-radius:26px;flex-direction:column;justify-content:center;align-items:center;width:min(560px,100% - 36px);min-height:96px;margin:0 auto;display:flex;box-shadow:0 8px #0b6835,0 14px 28px #13703940}.start-game-button span{font-size:2rem;font-weight:900}.start-game-button small{letter-spacing:.16em;opacity:.8;margin-top:2px;font-weight:900}.start-game-button:active{transform:translateY(5px);box-shadow:0 3px #0b6835}.game-shell{min-height:100svh;color:var(--ink);background:radial-gradient(circle at 50% 8%,#ffd4764d,#0000 23%),linear-gradient(#fffdf4 0%,#f5edd9 100%);overflow:hidden}.scoreboard{z-index:30;color:#fff;background:#202c43;grid-template-columns:minmax(310px,1fr) minmax(260px,.75fr) minmax(310px,1fr);align-items:stretch;min-height:112px;display:grid;position:relative;box-shadow:0 6px #19233a29}.score-team{align-items:center;gap:18px;min-width:0;padding:13px clamp(18px,3vw,56px);display:flex}.score-team--blue{background:linear-gradient(100deg,var(--blue-dark),var(--blue));justify-content:flex-end}.score-team--red{background:linear-gradient(260deg,var(--red-dark),var(--red));justify-content:flex-start}.score-team>div{min-width:0}.score-team--blue>div{text-align:right}.score-team span{letter-spacing:.16em;opacity:.75;font-size:.68rem;font-weight:900;display:block}.score-team strong{text-overflow:ellipsis;white-space:nowrap;max-width:230px;font-size:clamp(1.2rem,1.8vw,2rem);line-height:1.2;display:block;overflow:hidden}.score-team b{min-width:74px;color:var(--ink);text-align:center;background:#fff;border-radius:15px;padding:5px 13px;font-size:clamp(2.4rem,3.7vw,4.2rem);line-height:1.12;box-shadow:0 5px #00000026}.score-time{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:8px 12px;display:flex}.score-time>span{color:#ffd452;letter-spacing:.14em;font-size:.72rem;font-weight:900}.score-time>strong{letter-spacing:.04em;font-family:Arial Rounded MT Bold,Segoe UI,sans-serif;font-size:clamp(2.1rem,3.5vw,4rem);line-height:1}.score-time small{opacity:.75;margin-top:5px;font-size:.68rem;font-weight:800}.score-time--urgent>strong{color:#ffd452;animation:.8s ease-in-out infinite alternate timer-pulse}.teacher-trigger{color:#fff;cursor:pointer;background:#4c111266;border:2px solid #ffffff8c;border-radius:10px;align-items:center;gap:5px;min-height:36px;padding:5px 9px;font-size:.74rem;font-weight:900;display:flex;position:absolute;top:10px;right:12px}.teacher-trigger i{font-size:.55rem;font-style:normal}.fullscreen-indicator{opacity:.7;font-size:.62rem;font-weight:800;position:absolute;bottom:5px;right:15px}.teacher-panel{z-index:50;opacity:0;pointer-events:none;transform-origin:100% 0;background:#fffef9fa;border:3px solid #d9c08f;border-radius:20px;width:min(330px,100vw - 24px);padding:20px;transition:opacity .16s,transform .16s;position:fixed;top:105px;right:12px;transform:translateY(-12px)scale(.97);box-shadow:0 22px 60px #1219284d}.teacher-panel--open{opacity:1;pointer-events:auto;transform:none}.teacher-panel h2{margin:0;font-size:1.35rem}.teacher-panel>p{color:var(--muted);margin:2px 0 14px;font-size:.75rem;font-weight:800}.teacher-actions{grid-template-columns:1fr 1fr;gap:9px;display:grid}.teacher-actions button{min-height:66px;color:var(--ink);cursor:pointer;background:#fff;border:2px solid #e2d6bd;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:1.5rem;font-weight:900;display:flex;box-shadow:0 3px #19233a1f}.teacher-actions button span{font-size:.82rem}.teacher-actions .back-settings{color:#fff;background:var(--orange);border-color:var(--orange-dark);grid-column:1/-1}.game-board{grid-template-columns:minmax(330px,1fr) minmax(390px,1.15fr) minmax(330px,1fr);gap:clamp(10px,1.1vw,22px);width:min(1920px,100%);height:calc(100svh - 112px);min-height:620px;margin:0 auto;padding:clamp(12px,1.3vw,24px);display:grid}.team-panel{min-width:0;box-shadow:var(--shadow);border:4px solid;border-radius:26px;grid-template-rows:auto minmax(165px,.9fr) minmax(320px,1.7fr);gap:clamp(9px,1vh,15px);padding:clamp(11px,1.1vw,20px);display:grid}.team-panel--blue{border-color:var(--blue);background:linear-gradient(160deg,white 0%,var(--blue-soft) 100%)}.team-panel--red{border-color:var(--red);background:linear-gradient(200deg,white 0%,var(--red-soft) 100%)}.team-heading{color:#fff;border-radius:16px;justify-content:space-between;align-items:center;min-height:64px;padding:9px 12px 9px 18px;display:flex}.team-panel--blue .team-heading{background:linear-gradient(105deg,var(--blue-dark),var(--blue))}.team-panel--red .team-heading{background:linear-gradient(255deg,var(--red-dark),var(--red))}.team-heading>div:first-child{min-width:0}.team-heading h2{text-overflow:ellipsis;white-space:nowrap;max-width:220px;margin:-3px 0 0;font-size:clamp(1.3rem,1.8vw,2.25rem);line-height:1.1;overflow:hidden}.team-kicker{letter-spacing:.17em;opacity:.78;font-size:.58rem;font-weight:900}.score-pill{background:#fff3;border-radius:12px;align-items:center;gap:8px;min-width:86px;padding:5px 7px 5px 11px;font-weight:800;display:flex}.score-pill strong{min-width:44px;color:var(--ink);text-align:center;background:#fff;border-radius:9px;padding:2px 7px;font-size:clamp(1.6rem,2.2vw,2.35rem);line-height:1.15}.question-card{background:#ffffffe0;border:2px solid #19233a1a;border-radius:19px;flex-direction:column;justify-content:center;align-items:center;min-height:0;padding:8px;display:flex}.question-label{color:#69728a;letter-spacing:.06em;font-size:clamp(.7rem,.85vw,.9rem);font-weight:800}.question{white-space:nowrap;justify-content:center;align-items:center;gap:clamp(4px,.55vw,10px);max-width:100%;margin:4px 0;font-family:Arial Rounded MT Bold,Segoe UI,sans-serif;font-size:clamp(1.55rem,2.45vw,3.15rem);font-weight:900;line-height:1.18;display:flex}.question strong{font-size:.9em}.answer-box{text-align:center;text-overflow:ellipsis;border:3px dashed;border-radius:13px;min-width:1.6em;max-width:4em;padding:1px 7px;font-size:.86em;overflow:hidden}.team-panel--blue .answer-box{color:var(--blue-dark)}.team-panel--red .answer-box{color:var(--red-dark)}.feedback{min-height:1.35em;font-size:clamp(.78rem,.92vw,1rem);font-weight:900}.feedback--idle{color:#7b8293}.feedback--correct{color:#138347;animation:.3s ease-out pop}.feedback--wrong{color:#c62936;animation:.31s ease-out shake}.keypad{grid-template-rows:repeat(4,minmax(54px,1fr));grid-template-columns:repeat(3,1fr);gap:clamp(7px,.65vw,11px);min-height:0;display:grid}.key{cursor:pointer;border:0;border-radius:14px;min-width:0;min-height:54px;font-family:inherit;font-size:clamp(1.25rem,1.75vw,2rem);font-weight:900;transition:transform 90ms,box-shadow 90ms,filter .12s;box-shadow:0 5px #19233a2b}.key:hover{filter:brightness(1.04)}.key:active{transform:translateY(4px);box-shadow:0 1px #19233a2b}.key:disabled{cursor:default;filter:grayscale(.35);opacity:.4}.key--number{color:var(--ink);background:#fff;border:2px solid #19233a1f}.team-panel--blue .key--number{color:var(--blue-dark)}.team-panel--red .key--number{color:var(--red-dark)}.key--clear{color:#4a3a24;background:#ffdd83;font-size:clamp(.95rem,1.2vw,1.35rem)}.key--submit{color:#fff;font-size:clamp(.95rem,1.2vw,1.35rem)}.team-panel--blue .key--submit{background:var(--blue)}.team-panel--red .key--submit{background:var(--red)}.rope-arena{background:linear-gradient(#ffffffad,#ffffffad),repeating-linear-gradient(0deg,#edd69e 0 2px,transparent 2px 32px),var(--cream);min-width:0;box-shadow:inset 0 0 0 6px #ffffffa6,var(--shadow);border:3px solid #e5bb69;border-radius:26px;flex-direction:column;justify-content:center;padding:18px clamp(9px,1vw,18px);display:flex;position:relative;overflow:hidden}.arena-title{text-align:center}.arena-title span{color:#806641;font-size:clamp(.7rem,.82vw,.86rem);font-weight:800;display:block}.arena-title strong{margin-top:4px;font-size:clamp(1.45rem,2.15vw,2.6rem);line-height:1;display:block}.tug-visual{width:100%;margin:clamp(20px,4vh,45px) auto 4px}.tug-visual svg{width:100%;height:auto;display:block;overflow:visible}.moving-rope,.students-shift{transition:transform .5s cubic-bezier(.2,1.05,.35,1)}.student-pose{transform-box:fill-box;transform-origin:50% 72%}.pull-blue .blue-students .student-pose{animation:.56s ease-out pull-blue-own}.pull-blue .red-students .student-pose{animation:.56s ease-out pulled-left}.pull-red .red-students .student-pose{animation:.56s ease-out pull-red-own}.pull-red .blue-students .student-pose{animation:.56s ease-out pulled-right}.blue-students>g:nth-child(2) .student-pose,.red-students>g:nth-child(2) .student-pose{animation-delay:25ms}.blue-students>g:nth-child(3) .student-pose,.red-students>g:nth-child(3) .student-pose{animation-delay:45ms}.rope-caption{color:#75613f;justify-content:space-between;align-items:center;gap:6px;font-size:clamp(.62rem,.78vw,.82rem);font-weight:900;display:flex}.rope-caption span:first-child{color:var(--blue-dark)}.rope-caption span:last-child{color:var(--red-dark)}.rope-caption strong{color:#fff;background:var(--orange);text-align:center;border-radius:10px;min-width:68px;padding:6px 9px;font-size:clamp(.85rem,1.1vw,1.15rem)}.sudden-death-banner{color:#fff;text-align:center;background:linear-gradient(100deg,#9b1730,#ef3f46);border:3px solid #f43f46;border-radius:14px;margin-top:12px;padding:11px;font-size:clamp(1rem,1.35vw,1.4rem);font-weight:900;animation:.9s ease-in-out infinite alternate sudden-pulse}.sudden-death-banner small{margin-top:2px;font-size:.65em;display:block}.pause-overlay{z-index:25;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#182235ad;place-items:center;padding:20px;display:grid;position:fixed;inset:112px 0 0}.pause-overlay>div{color:#fff;background:#202c43;border:6px solid #fff;border-radius:28px;flex-direction:column;align-items:center;min-width:min(470px,92vw);padding:32px;font-size:4rem;display:flex;box-shadow:0 22px 65px #00000052}.pause-overlay strong{margin-top:8px;font-size:clamp(2.2rem,4vw,4rem)}.pause-overlay span{opacity:.78;margin-top:4px;font-size:1rem}.pause-overlay button{color:#14552f;background:var(--yellow);cursor:pointer;border:0;border-radius:16px;min-width:220px;min-height:62px;margin-top:22px;font-size:1.35rem;font-weight:900;box-shadow:0 5px #a76a00}.modal-backdrop{z-index:80;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0e1422b8;place-items:center;padding:22px;display:grid;position:fixed;inset:0}.confirm-dialog{background:var(--paper);text-align:center;border:5px solid #fff;border-radius:27px;width:min(520px,94vw);padding:30px;box-shadow:0 24px 80px #00000059}.confirm-icon{color:#fff;background:var(--orange);border-radius:50%;place-items:center;width:70px;height:70px;margin:0 auto 13px;font-size:2.6rem;font-weight:900;display:grid}.confirm-dialog h2{margin:0;font-size:1.8rem}.confirm-dialog p{color:var(--muted);margin:10px auto 24px;line-height:1.55}.confirm-dialog>div:last-child{grid-template-columns:1fr 1fr;gap:12px;display:grid}.confirm-dialog button{cursor:pointer;border:0;border-radius:15px;min-height:62px;font-weight:900}.modal-cancel{color:var(--ink);background:#e9e7e2}.modal-confirm{color:#fff;background:var(--red);box-shadow:0 4px 0 var(--red-dark)}.victory-overlay{z-index:70;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#0e1422c2;place-items:center;padding:22px;animation:.26s ease-out fade-in;display:grid;position:fixed;inset:0}.victory-card{z-index:2;color:#fff;text-align:center;border:7px solid #fff;border-radius:34px;width:min(720px,95vw);padding:30px;animation:.5s cubic-bezier(.2,1.35,.4,1) victory-in;position:relative;box-shadow:0 24px 80px #0006}.victory-overlay--blue .victory-card{background:linear-gradient(145deg,var(--blue-dark),var(--blue))}.victory-overlay--red .victory-card{background:linear-gradient(145deg,var(--red-dark),var(--red))}.trophy{font-size:4.6rem;line-height:1;animation:.9s ease-in-out infinite alternate trophy-bounce}.victory-card>p{opacity:.82;margin:8px 0 0;font-size:1rem;font-weight:900}.victory-card h2{margin:2px 0 14px;font-size:clamp(2.2rem,4.5vw,4.7rem);line-height:1.18}.final-score{background:#0000002b;border-radius:15px;justify-content:center;align-items:center;gap:18px;margin:0 auto;padding:12px 16px;font-size:1.15rem;font-weight:900;display:flex}.final-score strong{white-space:nowrap;font-size:1.8rem}.game-time{margin:13px 0 22px;font-weight:800}.victory-actions{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.victory-actions button{color:#754300;background:var(--yellow);cursor:pointer;border:0;border-radius:16px;min-height:66px;font-weight:900;box-shadow:0 5px #a66a00}.victory-actions .victory-secondary{color:#fff;background:#00000038;box-shadow:0 5px #00000040}.confetti{position:absolute;inset:0;overflow:hidden}.confetti i{top:-10%;left:calc(var(--i,1) * 4%);width:12px;height:24px;animation:2.4s linear infinite confetti-fall;animation-delay:calc(var(--i,1) * -.11s);background:#ffd452;border-radius:3px;position:absolute}.confetti i:nth-child(3n){background:#4ed6ff}.confetti i:nth-child(3n+1){background:#ff6171}@keyframes pop{0%{transform:scale(.8)}70%{transform:scale(1.16)}to{transform:scale(1)}}@keyframes shake{25%{transform:translate(-7px)}50%{transform:translate(7px)}75%{transform:translate(-4px)}}@keyframes pull-blue-own{35%{transform:translate(-12px)rotate(-5deg)}70%{transform:translate(-4px)rotate(-2deg)}}@keyframes pulled-left{35%{transform:translate(-7px)rotate(-2deg)}70%{transform:translate(-2px)}}@keyframes pull-red-own{35%{transform:translate(12px)rotate(5deg)}70%{transform:translate(4px)rotate(2deg)}}@keyframes pulled-right{35%{transform:translate(7px)rotate(2deg)}70%{transform:translate(2px)}}@keyframes timer-pulse{to{text-shadow:0 0 16px #ffd452b3;transform:scale(1.08)}}@keyframes sudden-pulse{to{transform:scale(1.025);box-shadow:0 0 20px #ef3f4673}}@keyframes fade-in{0%{opacity:0}}@keyframes victory-in{0%{opacity:0;transform:scale(.66)rotate(-4deg)}}@keyframes trophy-bounce{to{transform:translateY(-7px)rotate(5deg)}}@keyframes confetti-fall{to{top:110%;transform:rotate(600deg)}}@media (width<=1260px){.scoreboard{grid-template-columns:minmax(250px,1fr) minmax(220px,.72fr) minmax(250px,1fr)}.score-team{padding-left:18px;padding-right:18px}.teacher-trigger span{display:none}.game-board{grid-template-columns:minmax(285px,1fr) minmax(330px,1.05fr) minmax(285px,1fr)}.score-pill span{display:none}.score-pill{min-width:auto}.team-panel{padding:10px}}@media (height<=820px) and (width>=950px){.scoreboard{min-height:88px}.score-team b{min-width:60px;font-size:2.6rem}.score-time>strong{font-size:2.5rem}.teacher-panel{top:84px}.game-board{height:calc(100svh - 88px);min-height:540px;padding-top:9px;padding-bottom:9px}.team-panel{grid-template-rows:auto minmax(126px,.72fr) minmax(280px,1.7fr)}.team-heading{min-height:52px}.tug-visual{margin-top:10px}.pause-overlay{inset:88px 0 0}}@media (width<=949px){.setup-grid{grid-template-columns:1fr}.setup-card--wide{grid-column:auto}.choice-row--six,.operation-grid{grid-template-columns:repeat(3,1fr)}.team-name-editor{grid-template-columns:1fr}.swap-setup{width:100%}.scoreboard{grid-template-columns:1fr .78fr 1fr;min-height:92px;position:sticky;top:0}.score-team{gap:6px;padding:9px}.score-team b{min-width:48px;padding:4px 7px;font-size:2.1rem}.score-team strong{font-size:1rem}.score-team span,.score-time small{display:none}.game-shell{overflow:auto}.game-board{grid-template-columns:1fr 1fr;height:auto}.rope-arena{grid-area:1/1/auto/-1;min-height:470px}.team-panel{min-height:680px}.pause-overlay{inset:92px 0 0}.teacher-panel{top:86px}}@media (width<=620px){.setup-hero{gap:12px;min-height:142px}.setup-logo{border-width:4px;border-radius:16px;width:58px;font-size:3rem}.setup-hero h1{font-size:2rem}.setup-hero span{font-size:.65rem}.choice-row,.compact-choices{grid-template-columns:repeat(2,1fr)}.choice-row--six{grid-template-columns:repeat(3,1fr)}.operation-grid{grid-template-columns:repeat(2,1fr)}.game-board{grid-template-columns:1fr}.rope-arena,.team-panel{grid-column:auto}.rope-arena{min-height:380px}.team-panel{min-height:650px}.victory-actions{grid-template-columns:1fr}.final-score{gap:7px;font-size:.82rem}.final-score strong{font-size:1.25rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
