:root{--bg:#f1f4f8;--ink:#182638;--muted:#738198;--line:#e0e7ef;--blue:#325de7;--nav:#132337;--mint:#28a993;--card:#fff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.65 'Microsoft YaHei',system-ui,sans-serif}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);padding:9px 15px;border-radius:9px;color:var(--ink);background:#fff;transition:.18s}button:hover:not(:disabled){border-color:var(--blue);color:var(--blue);transform:translateY(-1px)}button:disabled{opacity:.5;cursor:not-allowed}.primary{background:var(--blue);border-color:var(--blue);color:#fff}.primary:hover:not(:disabled){background:#244bc9;color:#fff}.danger{color:#bd4155}.small{padding:5px 10px;font-size:13px}.ghost{background:transparent;color:inherit;border-color:#ffffff30}input,select,textarea{padding:10px 12px;border:1px solid #d6deea;border-radius:8px;background:#fff;max-width:100%;min-width:0;color:var(--ink)}input[type=checkbox]{accent-color:var(--blue);width:17px;height:17px}input:focus,select:focus,textarea:focus{outline:2px solid #325de733;border-color:var(--blue)}label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600}textarea{min-height:110px;resize:vertical;width:100%;font-weight:400}h1,h2,h3,p{margin-top:0}h1{font-size:28px;letter-spacing:-.6px;margin-bottom:6px}h2{font-size:19px}h3{font-size:16px}a{color:var(--blue);text-decoration:none}.muted{color:var(--muted)}.tiny{font-size:12px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.stack{display:grid;gap:18px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:23px;box-shadow:0 4px 16px #142f5c03}.card h2{margin-bottom:17px}.badge{display:inline-flex;align-items:center;background:#edf1fe;color:var(--blue);border-radius:6px;padding:3px 8px;font-size:12px}.badge.green{background:#e8f6f2;color:#278f7d}.badge.orange{background:#fff4df;color:#9f6c16}.empty{padding:40px 20px;text-align:center;color:var(--muted);border:1px dashed #cfd9e6;border-radius:12px}.hint{padding:12px 15px;border-left:3px solid #6d87e8;background:#eff3fe;font-size:13px;color:#516584;border-radius:4px;margin:14px 0}.warn{background:#fff4df;border-color:#d9a748;color:#926d22}.sidebar{position:fixed;inset:0 auto 0 0;width:218px;background:var(--nav);color:#c7d4e4;padding:30px 18px;display:flex;flex-direction:column;z-index:3}.brand{color:white;font-size:26px;letter-spacing:4px;font-weight:700;padding:0 15px}.brand small{display:block;font-size:10px;letter-spacing:2.5px;color:#95acc4;margin-top:3px;font-weight:400}.nav{margin-top:38px;display:grid;gap:8px}.nav button{text-align:left;background:transparent;border:0;color:#abbed3;padding:13px 16px}.nav button.active,.nav button:hover{background:#2b4160;color:#fff;transform:none}.nav button span{margin-right:13px;font-size:11px;opacity:.65}.sidefoot{margin-top:auto;padding:18px 12px 0;font-size:12px;color:#8ea4bd}.main{margin-left:218px;padding:0 36px 40px;max-width:1800px}.topbar{height:82px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);margin-bottom:28px;gap:15px}.topbar .status{font-size:12px;color:#278f7d}.pagehead{margin-bottom:24px}.eyebrow{color:var(--blue);font-size:11px;letter-spacing:2px;font-weight:700;margin-bottom:8px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:22px}.stat{border-radius:14px;background:white;border:1px solid var(--line);padding:20px 24px}.stat strong{display:block;font-size:32px;letter-spacing:-1px;margin-top:5px}.stat span{color:var(--muted);font-size:12px}.hero{background:linear-gradient(120deg,#192e4b,#254575);color:white;border:0;position:relative;overflow:hidden;padding:30px}.hero:after{content:'';width:240px;height:240px;border:1px solid #ffffff20;border-radius:50%;position:absolute;right:-60px;top:-90px;box-shadow:0 0 0 40px #ffffff05,0 0 0 80px #ffffff03;pointer-events:none}.hero .muted{color:#b4c9e0}.lessonitem{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:17px 0;border-bottom:1px solid var(--line)}.lessonitem:last-child{border:0}.lessonitem b{font-size:15px}.toolbar{background:white;border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:18px;display:flex;gap:12px;flex-wrap:wrap;align-items:end}.toolbar label{flex:1;min-width:120px}.tabs{display:flex;gap:7px;overflow:auto;margin:20px 0}.tabs button{white-space:nowrap;background:transparent;border:0;border-bottom:3px solid transparent;border-radius:0;color:var(--muted)}.tabs button.active{color:var(--blue);border-color:var(--blue);font-weight:700}.tablewrap{overflow:auto;max-width:100%}table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:13px}th{text-align:left;color:var(--muted);font-weight:500;background:#f6f8fb}td,th{padding:12px 13px;border-bottom:1px solid var(--line)}td input{width:90px;padding:6px}td select{max-width:160px;padding:6px}tr:hover td{background:#fafbff}.seatwrap{overflow:auto;padding:5px 0}.seats{display:grid;gap:8px;min-width:620px}.seat{min-height:66px;padding:7px;background:#f6f8fc;font-size:13px;position:relative;border-radius:9px}.seat small{display:block;color:#98a5b6;font-size:10px}.seat.occupied{background:#eaf0ff;border-color:#bbcafa;color:#3158bc;font-weight:600}.seat.blocked{opacity:.4;background:repeating-linear-gradient(45deg,#e4e9ef,#e4e9ef 4px,#fff 4px,#fff 8px)}.podium{width:180px;text-align:center;background:#e9eef5;color:#728298;font-size:12px;letter-spacing:10px;padding:8px;margin:8px auto 24px;border-radius:6px}.studentlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:8px;max-height:330px;overflow:auto;margin:15px 0}.studentlist button{text-align:left}.studentlist label{flex-direction:row;align-items:center;border:1px solid var(--line);padding:10px;border-radius:8px;font-weight:400}.studentlist small{display:block;font-size:10px;color:var(--muted)}.groupcard{border-top:3px solid #7d95e8}.grouphead{display:flex;justify-content:space-between}.members{font-size:13px;color:var(--muted);margin-bottom:15px;min-height:42px}.checkline{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:11px 0;gap:8px;font-size:13px}.checkline:last-child{padding-bottom:0}.gradebuttons{display:flex;gap:5px}.gradebuttons button{padding:6px 10px}.record{display:flex;justify-content:space-between;gap:10px;padding:13px 0;border-bottom:1px solid var(--line);font-size:13px}.score{font-weight:700;color:var(--blue)}dialog{border:0;border-radius:18px;padding:26px;max-width:760px;width:calc(100% - 32px);max-height:90vh;box-shadow:0 30px 90px #09192b50;color:var(--ink)}dialog::backdrop{background:#0c1a2c88;backdrop-filter:blur(4px)}dialog h2{padding-right:40px}.close{position:absolute;right:18px;top:17px}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.formgrid .full{grid-column:1/-1}.actions{margin-top:22px;display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#142a44;color:white;border-radius:10px;padding:13px 24px;max-width:90vw;z-index:20;box-shadow:0 10px 30px #12233a30}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.loginhero{background:radial-gradient(ellipse at 20% 30%,#294778,transparent 60%),#132337;color:#fff;padding:10vw 6vw;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}.loginhero h1{font-size:44px;line-height:1.45;margin:28px 0}.loginhero p{color:#a9bed8;max-width:430px}.loginhero .lineart{width:280px;height:280px;border:1px solid #85a1d950;border-radius:50%;position:absolute;right:-80px;bottom:0;box-shadow:0 0 0 50px #7795c810,0 0 0 100px #7795c808}.loginform{display:flex;align-items:center;justify-content:center;padding:35px}.loginform form{width:360px;max-width:100%}.loginform label{margin-top:20px}.loginform button{width:100%;margin-top:28px;padding:13px}.loginform h2{font-size:26px;margin-bottom:6px}.loginerror{color:#b03950;min-height:25px;margin-top:12px;font-size:13px}.drawstage{background:radial-gradient(ellipse at 50% 40%,#273164,#0e1729 70%);border-radius:18px;min-height:390px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:white;position:relative;overflow:hidden}.drawstage .orbit{position:absolute;width:290px;height:290px;border:1px solid #79d4eb30;border-radius:50%;transform:rotateX(25deg);box-shadow:0 0 0 28px #76b2ff05,0 0 0 65px #87b3ef04}.drawstage .orbit:after{content:'';width:7px;height:7px;border-radius:50%;background:#7ce7e2;position:absolute;top:35px;left:45px;box-shadow:0 0 20px #7ce7e2}.drawstage.rolling .orbit{animation:orbit 2s linear infinite}.drawname{font-size:52px;letter-spacing:4px;font-weight:700;z-index:1;max-width:95%;text-align:center;overflow-wrap:anywhere}.drawsub{color:#97aecb;z-index:1;font-size:12px;letter-spacing:2px;margin-top:12px}.drawprogress{position:absolute;bottom:0;left:0;height:4px;background:#75e5d9;width:0;transition:width .15s}.drawstage.reveal .drawname{animation:reveal .6s}.spark{position:absolute;top:-10px;width:7px;height:13px;background:#70e4d3;animation:fall 1.8s ease-in forwards;pointer-events:none}.projecting .sidebar,.projecting .topbar,.projecting .pagehead,.projecting .toolbar,.projecting .tabs,.projecting .privacyhide{display:none!important}.projecting .main{margin:0;padding:20px}.projecting .drawstage{min-height:70vh}.projecting .drawname{font-size:90px}@keyframes orbit{to{transform:rotate(360deg)}}@keyframes reveal{0%{transform:scale(.75);opacity:.4}70%{transform:scale(1.12)}100%{transform:scale(1)}}@keyframes fall{to{transform:translateY(420px) rotate(600deg);opacity:0}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition:none!important}}@media(min-width:1500px){.grid3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:1100px){.grid3{grid-template-columns:repeat(2,minmax(0,1fr))}.main{padding:0 22px 30px}.sidebar{width:185px}.main{margin-left:185px}.stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.sidebar{position:relative;width:auto;padding:15px 18px}.brand{font-size:21px;padding:0}.brand small{display:none}.nav{margin-top:13px;display:flex;overflow:auto;gap:6px}.nav button{white-space:nowrap;padding:8px 11px;font-size:13px}.nav button span{display:none}.sidefoot{display:none}.main{margin:0;padding:0 14px 25px}.topbar{height:63px;margin-bottom:20px;font-size:12px}.topbar .tiny{display:none}h1{font-size:24px}.card{padding:17px}.grid,.grid3{grid-template-columns:1fr}.stats{gap:10px}.stat{padding:15px}.stat strong{font-size:27px}.toolbar{padding:13px}.toolbar label{min-width:110px}.formgrid{grid-template-columns:1fr}.login{grid-template-columns:1fr}.loginhero{padding:34px 28px}.loginhero h1{font-size:28px;margin:20px 0 10px}.loginhero p{font-size:13px}.loginform{padding:30px 25px}.loginform h2{font-size:22px}.drawname{font-size:40px}.projecting .drawname{font-size:60px}.row input{max-width:100%}dialog{padding:21px}.gradebuttons{flex-wrap:wrap}.seats{min-width:590px}.checkline{flex-wrap:wrap}}

.grouphead{align-items:flex-start}.grouphead .badge{flex-shrink:0}.projecting #panel>.grid{grid-template-columns:1fr}
