.login-page[data-v-9f40ad43]{height:100%;display:flex;align-items:center;justify-content:center;background:#2c3e50}.login-card[data-v-9f40ad43]{width:min(420px,88vw);padding:40px 36px;border-radius:18px;background:#fff;box-shadow:0 16px 48px #00000059;display:flex;flex-direction:column;gap:16px}h1[data-v-9f40ad43]{font-size:30px;text-align:center}.subtitle[data-v-9f40ad43]{margin-top:-8px;text-align:center;font-size:17px;color:#888}.field[data-v-9f40ad43]{height:56px;padding:0 16px;border:2px solid #cfd6dd;border-radius:10px;font-size:20px}.field[data-v-9f40ad43]:focus{outline:none;border-color:#1abc9c}.error[data-v-9f40ad43]{font-size:16px;color:#e74c3c;text-align:center}.login-btn[data-v-9f40ad43]{height:58px;border-radius:12px;font-size:24px;font-weight:700;background:#1abc9c;color:#fff}.login-btn[data-v-9f40ad43]:disabled{opacity:.6}.topbar[data-v-39674095]{flex:0 0 auto;display:flex;align-items:center;gap:16px;padding:10px 16px;background:#2c3e50;color:#fff}.class-switch[data-v-39674095]{display:flex;align-items:baseline;gap:14px;padding:6px 22px;border-radius:14px;background:#1abc9c;color:#fff}.class-switch[data-v-39674095]:active{filter:brightness(1.15)}.class-name[data-v-39674095]{font-size:40px;font-weight:800;letter-spacing:1px;white-space:nowrap}.switch-hint[data-v-39674095]{font-size:18px;opacity:.85}.meta[data-v-39674095]{flex:1;display:flex;justify-content:center;gap:24px;font-size:22px;opacity:.9}.lesson-state[data-v-39674095]{color:#bdc3c7;font-weight:600}.lesson-state.active[data-v-39674095]{color:#2ecc71}.admin-btn[data-v-39674095]{padding:14px 26px;border-radius:12px;font-size:22px;background:#ffffff29;color:#fff}.logout-btn[data-v-39674095]{padding:14px 20px;border-radius:12px;font-size:20px;background:#e74c3cd9;color:#fff}.seat-area[data-v-e293ed10]{--name-size: clamp(16px, min(2vw, 4.2vh), 30px);--badge-size: clamp(11px, min(1.15vw, 2.2vh), 16px);--badge-pad-x: clamp(8px, min(.9vw, 1.4vh), 14px);--card-gap: clamp(2px, min(.35vw, .8vh), 8px);--grid-gap: clamp(6px, min(.8vw, 1.1vh), 12px);--area-pad-y: clamp(8px, min(.9vw, 1.4vh), 14px);--area-pad-x: clamp(10px, min(1.1vw, 1.6vh), 18px);--card-radius: clamp(8px, min(.8vw, 1.2vh), 14px);--group-bar: clamp(5px, min(.55vw, 1vh), 8px);flex:1 1 auto;min-height:0;padding:var(--area-pad-y) var(--area-pad-x)}.seat-area[data-density=compact][data-v-e293ed10]{--name-size: clamp(14px, min(1.7vw, 3.4vh), 24px);--badge-size: clamp(10px, min(1vw, 1.9vh), 14px);--card-gap: clamp(2px, min(.3vw, .6vh), 6px);--grid-gap: clamp(5px, min(.7vw, .9vh), 10px)}.seat-area[data-density=large][data-v-e293ed10]{--name-size: clamp(19px, min(2.4vw, 5vh), 36px);--badge-size: clamp(12px, min(1.35vw, 2.6vh), 19px);--card-gap: clamp(3px, min(.45vw, 1vh), 10px);--grid-gap: clamp(7px, min(.9vw, 1.3vh), 14px)}.seat-grid[data-v-e293ed10]{height:100%;display:grid;grid-auto-rows:1fr;gap:var(--grid-gap)}.seat-card[data-v-e293ed10]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--card-gap);min-height:0;min-width:0;padding:2px 6px;border-radius:var(--card-radius);border-top:var(--group-bar) solid transparent;background:#fff;box-shadow:0 1px 4px #0000001f;color:#1f2329;transition:transform .12s,box-shadow .12s,background .3s}.seat-card[data-v-e293ed10]:active{transform:scale(.96)}.seat-card.empty[data-v-e293ed10]{background:#e8eaee;box-shadow:none}.name[data-v-e293ed10]{max-width:100%;font-size:var(--name-size);font-weight:700;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.name.len4[data-v-e293ed10]{font-size:calc(var(--name-size) * .86)}.name.len5[data-v-e293ed10]{font-size:calc(var(--name-size) * .74)}.group-badge[data-v-e293ed10]{max-width:100%;padding:1px var(--badge-pad-x);border-radius:999px;font-size:var(--badge-size);line-height:1.3;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.empty-mark[data-v-e293ed10]{color:#aab;font-size:var(--badge-size)}@keyframes card-flash-e293ed10{0%{background:#fff8d6;box-shadow:0 0 0 6px #f1c40f8c}to{background:#fff;box-shadow:0 1px 4px #0000001f}}.seat-card.flash[data-v-e293ed10]{animation:card-flash-e293ed10 1.2s ease-out}.seat-card.scan-lit[data-v-e293ed10]{position:relative;z-index:2;background:#8e44ad;transform:scale(1.05);box-shadow:0 0 0 5px #8e44ad,0 0 24px #8e44ada6;transition:none}.seat-card.scan-lit .name[data-v-e293ed10]{color:#fff}.seat-card.scan-lit .group-badge[data-v-e293ed10]{box-shadow:0 0 0 2px #ffffffe6}@keyframes picked-pulse-e293ed10{0%,to{box-shadow:0 0 0 6px #8e44ad,0 0 30px #8e44adcc}50%{box-shadow:0 0 0 10px #8e44ad73,0 0 44px #8e44ad73}}.seat-card.picked[data-v-e293ed10]{position:relative;z-index:2;background:#f4ecf7;transform:scale(1.08);animation:picked-pulse-e293ed10 .9s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.seat-card.scan-lit[data-v-e293ed10]{transform:none}.seat-card.picked[data-v-e293ed10]{animation:none;transform:none;box-shadow:0 0 0 6px #8e44ad}.seat-card.flash[data-v-e293ed10]{animation:none;background:#fff8d6}.seat-card.group-flash[data-v-e293ed10]{animation:none;background:#fff3bf}}@keyframes group-flash-anim-e293ed10{0%,to{background:#fff}50%{background:#fff3bf}}.seat-card.group-flash[data-v-e293ed10]{animation:group-flash-anim-e293ed10 .9s ease-in-out 3}.bottombar[data-v-9337cae8]{--bar-btn-h: clamp(48px, 7.5vh, 64px);--bar-font: clamp(17px, min(1.5vw, 2.6vh), 24px);--chip-font: clamp(14px, min(1.3vw, 2.2vh), 20px);flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:8px 16px;background:#fff;border-top:1px solid #dfe3e8}.bottombar[data-density=compact][data-v-9337cae8]{--bar-btn-h: clamp(42px, 6.5vh, 56px)}.bottombar[data-density=large][data-v-9337cae8]{--bar-btn-h: clamp(54px, 8.5vh, 72px)}.btn-cluster[data-v-9337cae8]{display:flex;gap:10px;flex:0 0 auto}.random-btn[data-v-9337cae8]{min-width:clamp(120px,12vw,170px);height:var(--bar-btn-h);border-radius:14px;font-size:var(--bar-font);font-weight:800;background:#8e44ad;color:#fff}.random-btn[data-v-9337cae8]:active{filter:brightness(1.15)}.undo-btn[data-v-9337cae8]{min-width:clamp(100px,9vw,150px);height:var(--bar-btn-h);border-radius:14px;font-size:var(--bar-font);font-weight:700;background:#e74c3c;color:#fff}.undo-btn[data-v-9337cae8]:active:not(:disabled){filter:brightness(1.15)}.tool-btn[data-v-9337cae8]{min-width:clamp(76px,7vw,110px);height:var(--bar-btn-h);border-radius:14px;font-size:var(--bar-font);font-weight:600;background:#ecf0f1;color:#2c3e50}.tool-btn.on[data-v-9337cae8]{background:#3498db;color:#fff}.group-scores[data-v-9337cae8]{flex:1;min-width:0;display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.group-chip[data-v-9337cae8]{padding:6px 14px;border:2px solid;border-radius:999px;font-size:var(--chip-font);font-weight:600;background:#fff;white-space:nowrap;transition:background .3s,transform .3s}.group-chip .dot[data-v-9337cae8]{display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:50%}.group-chip.flash[data-v-9337cae8]{background:#fff3bf;transform:scale(1.1)}.lesson-btn[data-v-9337cae8]{min-width:clamp(90px,8vw,130px);height:var(--bar-btn-h);border-radius:14px;font-size:var(--bar-font);background:#ecf0f1;color:#555;flex:0 0 auto;display:flex;align-items:center;justify-content:center}.lesson-btn.end[data-v-9337cae8]{background:#e74c3c;color:#fff;font-weight:700}.lesson-btn.locked[data-v-9337cae8]{background:transparent;color:#999}.overlay[data-v-a77124c0]{--p-title: clamp(24px, min(2.6vw, 5vh), 38px);--p-btn-h: clamp(88px, 15vh, 120px);--p-label: clamp(22px, min(2.4vw, 4.4vh), 34px);--p-delta: clamp(17px, min(1.8vw, 3.4vh), 26px);--p-tab-h: clamp(44px, 6.5vh, 56px);--p-cancel-h: clamp(44px, 7vh, 60px);position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;background:#00000073}.overlay[data-density=compact][data-v-a77124c0]{--p-title: clamp(20px, min(2.2vw, 4.2vh), 32px);--p-btn-h: clamp(76px, 13vh, 104px)}.overlay[data-density=large][data-v-a77124c0]{--p-title: clamp(28px, min(3vw, 5.8vh), 44px);--p-btn-h: clamp(100px, 17vh, 136px)}.panel[data-v-a77124c0]{width:min(860px,86vw);padding:clamp(16px,3vh,28px);border-radius:20px;background:#fff;box-shadow:0 12px 40px #00000059}.panel-title[data-v-a77124c0]{margin-bottom:14px;font-size:var(--p-title);font-weight:800;text-align:center}.tabs[data-v-a77124c0]{display:flex;gap:10px;margin-bottom:16px}.tab[data-v-a77124c0]{flex:1;height:var(--p-tab-h);border-radius:12px;font-size:clamp(17px,min(1.6vw,3vh),24px);font-weight:700;background:#ecf0f1;color:#555}.tab.on[data-v-a77124c0]{background:#27ae60;color:#fff}.tab.discipline.on[data-v-a77124c0]{background:#486581;color:#fff}.panel-buttons[data-v-a77124c0]{display:flex;gap:16px}.score-btn[data-v-a77124c0]{flex:1;height:var(--p-btn-h);border-radius:16px;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.score-btn[data-v-a77124c0]:active{filter:brightness(1.2);transform:scale(.97)}.score-label[data-v-a77124c0]{font-size:var(--p-label);font-weight:800}.score-delta[data-v-a77124c0]{font-size:var(--p-delta);opacity:.92}.cancel-btn[data-v-a77124c0]{margin-top:14px;width:100%;height:var(--p-cancel-h);border-radius:12px;font-size:clamp(16px,min(1.6vw,3vh),24px);background:#ecf0f1;color:#555}.overlay[data-v-1b25b06c]{--p-title: clamp(26px, min(3vw, 5.6vh), 44px);--p-btn-h: clamp(84px, 14vh, 116px);--p-label: clamp(22px, min(2.4vw, 4.4vh), 34px);--p-delta: clamp(15px, min(1.6vw, 3vh), 24px);position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;background:#00000073}.overlay[data-density=compact][data-v-1b25b06c]{--p-btn-h: clamp(72px, 12vh, 100px)}.overlay[data-density=large][data-v-1b25b06c]{--p-btn-h: clamp(96px, 16vh, 130px)}.panel[data-v-1b25b06c]{width:min(860px,86vw);padding:clamp(18px,3.2vh,30px);border-radius:20px;background:#fff;box-shadow:0 12px 40px #00000059;text-align:center}.badge[data-v-1b25b06c]{display:inline-block;margin-bottom:8px;padding:4px 18px;border-radius:999px;font-size:clamp(15px,min(1.4vw,2.6vh),20px);font-weight:700;background:#8e44ad;color:#fff}.panel-title[data-v-1b25b06c]{font-size:var(--p-title);font-weight:800}.hint[data-v-1b25b06c]{margin:8px 0 18px;font-size:clamp(14px,min(1.3vw,2.4vh),19px);color:#888}.panel-buttons[data-v-1b25b06c]{display:flex;gap:16px}.result-btn[data-v-1b25b06c]{flex:1;height:var(--p-btn-h);border-radius:16px;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.result-btn[data-v-1b25b06c]:active{filter:brightness(1.2);transform:scale(.97)}.result-btn.correct[data-v-1b25b06c]{background:#27ae60}.result-btn.wrong[data-v-1b25b06c]{background:#5d6d7e}.result-btn.skip[data-v-1b25b06c]{background:#95a5a6}.result-label[data-v-1b25b06c]{font-size:var(--p-label);font-weight:800}.result-delta[data-v-1b25b06c]{font-size:var(--p-delta);opacity:.92}.overlay[data-v-1efa70b6]{--w-title: clamp(22px, min(2.4vw, 4.6vh), 34px);--w-row-font: clamp(16px, min(1.7vw, 3.2vh), 26px);--w-sub-font: clamp(13px, min(1.2vw, 2.2vh), 18px);--w-bar-h: clamp(10px, 1.8vh, 16px);position:fixed;inset:0;z-index:38;display:flex;align-items:center;justify-content:center;background:#00000073}.overlay[data-density=large][data-v-1efa70b6]{--w-row-font: clamp(19px, min(1.9vw, 3.6vh), 30px)}.panel[data-v-1efa70b6]{width:min(980px,90vw);max-height:86vh;overflow:auto;padding:clamp(16px,3vh,28px);border-radius:20px;background:#fff;box-shadow:0 12px 40px #00000059}.panel-head[data-v-1efa70b6]{display:flex;align-items:center;justify-content:space-between}.panel-title[data-v-1efa70b6]{font-size:var(--w-title);font-weight:800}.close-btn[data-v-1efa70b6]{padding:10px 26px;border-radius:10px;font-size:clamp(15px,min(1.4vw,2.6vh),22px);background:#ecf0f1;color:#555}.sub[data-v-1efa70b6]{margin:6px 0 14px;font-size:var(--w-sub-font);color:#888}.rows[data-v-1efa70b6]{display:flex;flex-direction:column;gap:10px}.row[data-v-1efa70b6]{display:grid;grid-template-columns:130px 70px 1fr 220px 230px;align-items:center;gap:12px;padding:8px 12px;border-radius:12px;background:#f7f9fa;font-size:var(--w-row-font)}.gname[data-v-1efa70b6]{font-weight:700;white-space:nowrap}.dot[data-v-1efa70b6]{display:inline-block;width:12px;height:12px;margin-right:8px;border-radius:50%}.cover[data-v-1efa70b6]{font-weight:800;text-align:center}.bar[data-v-1efa70b6]{height:var(--w-bar-h);border-radius:999px;background:#e4e8ec;overflow:hidden}.bar-fill[data-v-1efa70b6]{height:100%;border-radius:999px;transition:width .4s}.next[data-v-1efa70b6]{color:#b9770e;font-weight:600;white-space:nowrap}.next.done[data-v-1efa70b6]{color:#27ae60}.stages[data-v-1efa70b6]{font-size:var(--w-sub-font);color:#999;white-space:nowrap}.overlay[data-v-def2fec6]{--r-title: clamp(22px, min(2.4vw, 4.6vh), 34px);--r-row-font: clamp(18px, min(1.9vw, 3.6vh), 30px);position:fixed;inset:0;z-index:38;display:flex;align-items:center;justify-content:center;background:#00000073}.overlay[data-density=compact][data-v-def2fec6]{--r-row-font: clamp(16px, min(1.6vw, 3vh), 25px)}.overlay[data-density=large][data-v-def2fec6]{--r-row-font: clamp(21px, min(2.2vw, 4.2vh), 34px)}.panel[data-v-def2fec6]{width:min(720px,86vw);max-height:86vh;overflow:auto;padding:clamp(16px,3vh,28px);border-radius:20px;background:#fff;box-shadow:0 12px 40px #00000059}.panel-head[data-v-def2fec6]{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.panel-title[data-v-def2fec6]{font-size:var(--r-title);font-weight:800}.close-btn[data-v-def2fec6]{padding:10px 26px;border-radius:10px;font-size:clamp(15px,min(1.4vw,2.6vh),22px);background:#ecf0f1;color:#555}.rows[data-v-def2fec6]{display:flex;flex-direction:column;gap:8px}.row[data-v-def2fec6]{display:grid;grid-template-columns:60px 1fr 140px 130px;align-items:center;gap:10px;padding:10px 14px;border-radius:12px;background:#f7f9fa;font-size:var(--r-row-font)}.row.top[data-v-def2fec6]{background:#fff8d6}.rank[data-v-def2fec6]{font-weight:800;text-align:center;color:#7f8c8d}.row.top .rank[data-v-def2fec6]{color:#b9770e}.gname[data-v-def2fec6]{font-weight:700;white-space:nowrap}.dot[data-v-def2fec6]{display:inline-block;width:12px;height:12px;margin-right:8px;border-radius:50%}.score[data-v-def2fec6]{font-weight:800;text-align:right}.cover[data-v-def2fec6]{color:#7f8c8d;text-align:right;white-space:nowrap}.toast[data-v-31203391]{position:fixed;left:50%;top:18%;transform:translate(-50%);z-index:50;min-width:360px;max-width:80vw;padding:22px 44px;border-radius:18px;background:#27ae60f2;color:#fff;text-align:center;box-shadow:0 10px 30px #0000004d;pointer-events:none}.toast.stage[data-v-31203391]{background:#b9770ef5;box-shadow:0 0 0 6px #f1c40f59,0 10px 30px #0000004d}.toast.cool[data-v-31203391]{background:#486581f2}.toast.info[data-v-31203391]{background:#2c3e50eb}.toast-line[data-v-31203391]{font-size:clamp(18px,min(2vw,3.6vh),28px);line-height:1.5}.toast-line.main[data-v-31203391]{font-size:clamp(26px,min(3vw,5.6vh),42px);font-weight:800}.pop-enter-active[data-v-31203391]{transition:all .18s ease-out}.pop-leave-active[data-v-31203391]{transition:all .25s ease-in}.pop-enter-from[data-v-31203391]{opacity:0;transform:translate(-50%) scale(.85)}.pop-leave-to[data-v-31203391]{opacity:0;transform:translate(-50%) translateY(-14px)}.admin[data-v-bb2cfb4a]{height:100%;overflow:auto;padding:24px 32px;background:#f2f4f8}.admin-head[data-v-bb2cfb4a]{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.admin-head h1[data-v-bb2cfb4a]{font-size:34px}.back-btn[data-v-bb2cfb4a]{padding:14px 30px;border-radius:12px;font-size:24px;background:#2c3e50;color:#fff}.card[data-v-bb2cfb4a]{margin-bottom:20px;padding:24px;border-radius:16px;background:#fff;box-shadow:0 1px 4px #0000001a}.card h2[data-v-bb2cfb4a]{font-size:26px;margin-bottom:10px}.hint[data-v-bb2cfb4a]{font-size:18px;color:#777;margin-bottom:16px}.row[data-v-bb2cfb4a]{display:flex;gap:12px;margin-bottom:12px}.name-input[data-v-bb2cfb4a]{flex:0 0 320px;height:56px;padding:0 16px;border:2px solid #cfd6dd;border-radius:10px;font-size:24px}.name-input[data-v-bb2cfb4a]:focus{outline:none;border-color:#1abc9c}.save-btn[data-v-bb2cfb4a]{padding:0 28px;border-radius:10px;font-size:22px;background:#1abc9c;color:#fff}.tip[data-v-bb2cfb4a]{font-size:18px;color:#27ae60}.density-row[data-v-bb2cfb4a]{display:flex;gap:14px}.density-btn[data-v-bb2cfb4a]{flex:0 0 200px;padding:16px 18px;border:2px solid #cfd6dd;border-radius:12px;background:#fff;display:flex;flex-direction:column;align-items:flex-start;gap:4px}.density-btn.active[data-v-bb2cfb4a]{border-color:#1abc9c;background:#eafaf6}.density-label[data-v-bb2cfb4a]{font-size:24px;font-weight:700}.density-desc[data-v-bb2cfb4a]{font-size:15px;color:#777}.bonus-row[data-v-bb2cfb4a]{align-items:center;flex-wrap:wrap}.bonus-class[data-v-bb2cfb4a]{font-size:22px;font-weight:700;min-width:110px}.bonus-row label[data-v-bb2cfb4a]{font-size:18px;color:#555;display:flex;align-items:center;gap:4px}.num-input[data-v-bb2cfb4a]{width:80px;height:44px;padding:0 10px;border:2px solid #cfd6dd;border-radius:8px;font-size:20px}.num-input[data-v-bb2cfb4a]:focus{outline:none;border-color:#1abc9c}.rebuild-btn[data-v-bb2cfb4a]{padding:14px 28px;font-size:20px;background:#486581}.boot[data-v-43c0e7c9]{height:100%;display:flex;align-items:center;justify-content:center;font-size:32px;color:#666}.board-layout[data-v-43c0e7c9]{height:100%;display:flex;flex-direction:column}.lock-banner[data-v-43c0e7c9]{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:28px;padding:12px 16px;background:#fdf6e3;border-bottom:2px solid #f1c40f}.lock-text[data-v-43c0e7c9]{font-size:26px;font-weight:700;color:#8a6d1a}.start-btn[data-v-43c0e7c9]{padding:12px 36px;border-radius:14px;font-size:26px;font-weight:800;background:#27ae60;color:#fff}.start-btn[data-v-43c0e7c9]:active:not(:disabled){filter:brightness(1.15)}.start-btn[data-v-43c0e7c9]:disabled{opacity:.6}.switch-flash[data-v-43c0e7c9]{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;font-size:64px;font-weight:700;color:#fff;background:#34495eeb;pointer-events:none}.notice[data-v-43c0e7c9]{position:fixed;left:50%;bottom:120px;transform:translate(-50%);z-index:55;padding:16px 32px;border-radius:12px;font-size:26px;color:#fff;background:#1f2329e0;pointer-events:none}.fade-enter-active[data-v-43c0e7c9],.fade-leave-active[data-v-43c0e7c9]{transition:opacity .2s}.fade-enter-from[data-v-43c0e7c9],.fade-leave-to[data-v-43c0e7c9]{opacity:0}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%}body{font-family:Microsoft YaHei,PingFang SC,system-ui,sans-serif;background:#f2f4f8;color:#1f2329;user-select:none;-webkit-user-select:none;touch-action:manipulation;overflow:hidden}button{font-family:inherit;border:none;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.35;cursor:default}
