:root{--ink:#14213d;--muted:#6c7485;--line:#dde3ec;--paper:#f5f7fb;--white:#fff;--navy:#0b1834;--blue:#1967d2;--cyan:#00a9c7;--green:#168b63;--red:#d7473f;--amber:#e59b24}*{box-sizing:border-box}html{background:var(--paper)}body{color:var(--ink);background:var(--paper);margin:0;font-family:PingFang SC,Microsoft YaHei,Inter,system-ui,sans-serif}button,input,select{font:inherit}button,select{cursor:pointer}a{color:inherit;text-decoration:none}.topbar{border-bottom:1px solid var(--line);z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff5;justify-content:space-between;align-items:center;height:68px;padding:0 max(28px,50vw - 610px);display:flex;position:sticky;top:0}.brand{align-items:center;gap:11px;display:flex}.brand-mark{background:var(--navy);color:#fff;letter-spacing:.08em;border-radius:9px;place-items:center;width:36px;height:36px;font-size:13px;font-weight:800;display:grid}.brand strong,.brand small{display:block}.brand strong{font-size:15px}.brand small{color:var(--muted);letter-spacing:.07em;text-transform:uppercase;margin-top:2px;font-size:10px}.topbar nav{align-items:center;gap:6px;display:flex}.topbar nav a{color:#485165;border-radius:8px;padding:9px 13px;font-size:14px}.topbar nav a:hover{color:var(--ink);background:#edf2fa}.hero{background:var(--navy);color:#fff;justify-content:space-between;align-items:center;min-height:244px;padding:48px max(28px,50vw - 610px);display:flex;position:relative;overflow:hidden}.hero:after{content:"";border:1px solid #41c3e040;border-radius:50%;width:520px;height:520px;position:absolute;top:-250px;right:-110px;box-shadow:0 0 0 80px #41c3e00a,0 0 0 160px #41c3e008}.hero-copy{z-index:1;max-width:720px;position:relative}.eyebrow,.card-kicker{color:#1ba2bd;letter-spacing:.14em;text-transform:uppercase;margin:0 0 10px;font-size:12px;font-weight:800}.hero h1,.teacher-hero h1{letter-spacing:-.03em;margin:0;font-size:clamp(34px,5vw,54px);line-height:1.1}.hero-copy>p:last-child{color:#bac7df;margin:18px 0 0;font-size:16px;line-height:1.8}.hero-metric{z-index:1;text-align:center;border-left:1px solid #384662;padding:12px 42px;position:relative}.hero-metric span,.hero-metric small{color:#91a1be;display:block}.hero-metric strong{color:#4cd1e5;margin:5px 0 8px;font:800 68px/1 Georgia,serif;display:block}.page-shell{max-width:1220px;margin:0 auto;padding:34px 28px 72px}.student-layout{grid-template-columns:320px minmax(0,1fr);align-items:start;gap:28px;display:grid}.identity-panel{border:1px solid var(--line);background:#fff;border-radius:16px;padding:24px;position:sticky;top:100px;box-shadow:0 12px 35px #14213d0f}.student-identity-head{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding-bottom:20px;display:flex}.student-avatar{color:#fff;background:linear-gradient(145deg, var(--blue), var(--cyan));border-radius:12px;flex:none;place-items:center;width:48px;height:48px;font-weight:800;display:grid}.student-identity-head span:not(.student-avatar),.student-identity-head small{color:var(--muted);font-size:11px;display:block}.student-identity-head h2{margin:3px 0;font-size:20px}.identity-details{grid-template-columns:1fr 1fr;gap:10px;margin-top:18px;display:grid}.identity-details>div{background:#f5f8fc;border-radius:10px;padding:12px}.identity-details span,.identity-details strong{display:block}.identity-details span{color:var(--muted);font-size:10px}.identity-details strong{margin-top:5px;font-size:13px}.member-list{border:1px solid var(--line);border-radius:10px;overflow:hidden}.member-list>div{border-bottom:1px solid #edf0f5;justify-content:space-between;gap:12px;padding:9px 11px;font-size:12px;display:flex}.member-list>div:last-child{border-bottom:0}.member-list small{color:var(--muted);font-family:ui-monospace,monospace}.student-logout{border:1px solid var(--line);width:100%;color:var(--muted);background:#fff;border-radius:9px;margin-top:18px;padding:9px}.student-logout:hover{color:var(--red);border-color:#efbbb8}.section-heading{align-items:flex-start;gap:14px;margin-bottom:24px;display:flex}.section-heading h2{margin:0;font-size:20px}.section-heading p{color:var(--muted);margin:4px 0 0;font-size:13px}.step-number{color:var(--cyan);padding-top:2px;font:800 13px/1.5 ui-monospace,monospace}.field-label{color:#4a5365;margin:18px 0 8px;font-size:12px;font-weight:700;display:block}select,input{color:var(--ink);background:#fff;border:1px solid #ccd4e1;border-radius:9px;outline:none;transition:all .18s}select{width:100%;padding:11px 36px 11px 12px}input{padding:10px 12px}select:focus,input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #1967d21f}.group-grid{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.group-button{color:var(--ink);text-align:left;background:#f7f9fc;border:1px solid #dce2eb;border-radius:10px;padding:11px 10px}.group-button strong,.group-button span{display:block}.group-button strong{font-size:13px}.group-button span{color:var(--muted);margin-top:3px;font-size:11px}.group-button.active{border-color:var(--blue);box-shadow:inset 3px 0 var(--blue);background:#eaf4ff}.progress-card{border-top:1px solid var(--line);margin-top:22px;padding-top:20px}.progress-card>div:first-child{justify-content:space-between;align-items:baseline;display:flex}.progress-card span{color:var(--muted);font-size:12px}.progress-card strong{font-size:18px}.progress-track{background:#e9edf4;border-radius:10px;height:7px;margin-top:12px;overflow:hidden}.progress-track i,.screen-bar i{background:linear-gradient(90deg, var(--blue), var(--cyan));border-radius:inherit;height:100%;display:block}.progress-card p{color:var(--muted);margin:8px 0 0;font-size:12px}.empty-state{text-align:center;background:#fafbfd;border:1px dashed #cbd4e2;border-radius:12px;padding:28px 20px}.empty-state strong,.empty-state span{display:block}.empty-state span{color:var(--muted);margin-top:7px;font-size:12px}.empty-state.wide{margin:24px}.muted{color:var(--muted)}.challenge-area{min-width:0}.level-card{border:1px solid var(--line);background:#fff;border-radius:14px;margin-bottom:14px;overflow:hidden;box-shadow:0 8px 24px #14213d0a}.level-card summary{cursor:pointer;grid-template-columns:52px 1fr auto;align-items:center;gap:16px;padding:18px 20px;list-style:none;display:grid}.level-card summary::-webkit-details-marker{display:none}.level-index{background:var(--navy);color:#66daea;border-radius:9px;place-items:center;width:42px;height:42px;font:800 14px ui-monospace,monospace;display:grid}.level-card summary strong,.level-card summary small{display:block}.level-card summary strong{font-size:15px}.level-card summary small{color:var(--muted);margin-top:4px;font-size:11px}.level-progress{color:var(--blue);font:700 13px ui-monospace,monospace}.challenge-list{border-top:1px solid var(--line)}.challenge-row{border-bottom:1px solid #edf0f5;grid-template-columns:66px minmax(200px,1fr) minmax(270px,.9fr);align-items:center;gap:14px;padding:16px 20px;display:grid}.challenge-row:last-child{border-bottom:0}.challenge-row.solved{background:#f2fbf7}.flag-id{color:var(--blue);font:800 12px ui-monospace,monospace}.challenge-copy h3{margin:0;font-size:13px;line-height:1.45}.challenge-copy span{color:var(--muted);margin-top:5px;font-size:11px;display:block}.flag-form{grid-template-columns:1fr auto;gap:7px;padding-bottom:20px;display:grid;position:relative}.flag-form input{width:100%;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.flag-form button,.primary-button,.upload-button{background:var(--blue);color:#fff;border:0;border-radius:9px;padding:10px 14px;font-weight:700}.flag-form button:disabled,.primary-button:disabled{opacity:.55;cursor:not-allowed}.feedback{margin:0;font-size:11px}.flag-form .feedback{position:absolute;bottom:1px;left:1px}.feedback.success{color:var(--green)}.feedback.error{color:var(--red)}.solved-badge{color:var(--green);background:#fff;border:1px solid #a7dfca;border-radius:30px;justify-self:end;padding:8px 12px;font-size:12px;font-weight:800}.locked-stage{text-align:center;min-height:340px;color:var(--muted);background:#fff;border:1px dashed #c9d1de;border-radius:16px;place-content:center;display:grid}.locked-stage>span{color:#c4ccda;font-size:58px}.locked-stage strong{color:var(--ink);margin-top:12px;font-size:18px}.locked-stage p{font-size:13px}.login-page{background:radial-gradient(circle at 70% 20%, #17336b 0, transparent 32%), var(--navy);place-items:center;min-height:calc(100vh - 68px);padding:30px;display:grid}.student-login-page{background:radial-gradient(circle at 25% 25%, #145a77 0, transparent 34%), var(--navy)}.loading-page{background:var(--paper);place-items:center;min-height:calc(100vh - 68px);display:grid}.loading-page>div{color:var(--muted);flex-direction:column;align-items:center;display:flex}.loading-page .login-icon{margin-bottom:18px}.login-card{background:#fff;border-radius:20px;width:min(430px,100%);padding:40px;box-shadow:0 25px 80px #00000059}.login-icon{color:#fff;background:var(--navy);border-radius:12px;place-items:center;width:48px;height:48px;margin-bottom:28px;font-weight:900;display:grid}.login-card h1{margin:0;font-size:30px}.login-card>p:not(.eyebrow):not(.feedback){color:var(--muted);line-height:1.6}.login-card input{width:100%}.login-card .primary-button{width:100%;margin-top:18px;padding:12px}.teacher-main{min-height:calc(100vh - 68px)}.teacher-hero{background:var(--navy);color:#fff;justify-content:space-between;align-items:center;padding:38px max(28px,50vw - 610px);display:flex}.teacher-hero h1{font-size:36px}.teacher-hero>div>p:last-child{color:#a9b7d0;margin-bottom:0}.teacher-actions{gap:10px;display:flex}.ghost-button{color:#fff;background:0 0;border:1px solid #53617a;border-radius:9px;padding:10px 14px}.teacher-shell{padding-top:28px}.metric-grid{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.metric-grid article{border:1px solid var(--line);background:#fff;border-radius:13px;padding:20px}.metric-grid span,.metric-grid small,.metric-grid strong{display:block}.metric-grid span{color:var(--muted);font-size:12px}.metric-grid strong{margin:10px 0 4px;font:800 30px/1.2 Georgia,serif}.metric-grid small{color:#8b93a3}.admin-grid{grid-template-columns:1fr 1fr;gap:14px;margin:14px 0;display:grid}.admin-card,.overview-card{border:1px solid var(--line);background:#fff;border-radius:14px;padding:24px}.admin-card h2,.overview-card h2{margin:0;font-size:20px}.admin-card>p{color:var(--muted);min-height:44px;font-size:13px;line-height:1.65}.text-link{color:var(--blue);margin-right:15px;font-size:12px;font-weight:700}.upload-button{cursor:pointer;font-size:12px;display:inline-block}.upload-button input{display:none}.upload-button.disabled{opacity:.5;cursor:wait}.toast{color:#075944;background:#e8f8f2;border:1px solid #bfe8da;border-radius:10px;margin:14px 0;padding:12px 16px;font-size:13px}.overview-card{padding:0;overflow:hidden}.overview-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:22px 24px;display:flex}.overview-header select{width:auto;min-width:200px}.table-wrap{overflow-x:auto}.progress-table{border-collapse:collapse;width:100%;font-size:13px}.progress-table th{color:#697286;text-align:left;white-space:nowrap;background:#f5f7fa;padding:12px 14px;font-size:11px}.progress-table td{border-top:1px solid #edf0f4;padding:14px}.member-cell{min-width:180px;max-width:300px}.time-cell{white-space:nowrap;min-width:150px}.level-cell{color:#687286;min-width:34px;font:700 11px ui-monospace,monospace;display:inline-block}.level-cell.complete{color:var(--green)}.rank{background:#edf1f6;border-radius:50%;place-items:center;width:28px;height:28px;font-weight:800;display:grid}.rank-1{color:#805b00;background:#fff0b5}.rank-2{color:#4a5568;background:#e7edf5}.rank-3{color:#884b26;background:#f6dfd0}.screen-page{color:#eaf2ff;background:#071228;min-height:calc(100vh - 68px);padding:32px 4vw 22px;position:relative;overflow:hidden}.screen-page:before{content:"";background-image:linear-gradient(#4366a114 1px,#0000 1px),linear-gradient(90deg,#4366a114 1px,#0000 1px);background-size:38px 38px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000);mask-image:linear-gradient(#000,#0000)}.screen-glow{filter:blur(80px);opacity:.18;border-radius:50%;position:absolute}.glow-one{background:#00d4ff;width:420px;height:420px;top:-100px;right:-80px}.glow-two{background:#265eff;width:360px;height:360px;bottom:-140px;left:-120px}.screen-header,.screen-summary,.leaderboard,.screen-footer{z-index:1;position:relative}.screen-header{border-bottom:1px solid #263552;justify-content:space-between;align-items:flex-end;padding-bottom:22px;display:flex}.screen-header p{color:#4fcfe7;letter-spacing:.16em;margin:0 0 8px;font:700 11px ui-monospace,monospace}.screen-header h1{letter-spacing:.04em;margin:0;font-size:clamp(28px,4vw,48px)}.screen-controls{align-items:center;gap:14px;display:flex}.screen-controls select{color:#fff;background:#0f1d38;border-color:#31415f;width:auto;min-width:210px}.live-dot{color:#45e2b7;letter-spacing:.1em;font:800 11px ui-monospace,monospace}.live-dot:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px;margin-right:7px;display:inline-block;box-shadow:0 0 12px}.live-dot.pulse:before{transform:scale(1.6)}.screen-summary{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0b1934bf;border:1px solid #263654;grid-template-columns:2fr repeat(3,1fr);margin:22px 0;display:grid}.screen-summary>div{border-right:1px solid #263654;padding:17px 22px}.screen-summary>div:last-child{border-right:0}.screen-summary span,.screen-summary strong{display:block}.screen-summary span{color:#7386a7;letter-spacing:.12em;font-size:10px}.screen-summary strong{margin-top:8px;font-size:22px}.leaderboard{background:#08152dd1;border:1px solid #263654}.leaderboard-head,.leaderboard-row{grid-template-columns:80px 1.1fr 2fr 100px 1.3fr 110px;align-items:center;gap:18px;display:grid}.leaderboard-head{color:#687c9e;text-transform:uppercase;letter-spacing:.12em;border-bottom:1px solid #263654;min-height:42px;padding:0 20px;font-size:10px}.leaderboard-row{border-bottom:1px solid #1d2e4c;min-height:76px;padding:10px 20px;transition:all .25s}.leaderboard-row:last-child{border-bottom:0}.leaderboard-row.place-1{background:linear-gradient(90deg,#12588147,#0000)}.screen-rank{color:#7689a8;font:800 22px Georgia,serif}.place-1 .screen-rank{color:#55dbef}.place-2 .screen-rank{color:#c1cee5}.place-3 .screen-rank{color:#d9a776}.screen-team strong,.screen-team small{display:block}.screen-team strong{font-size:18px}.screen-team small{color:#6f82a3;margin-top:5px;font-size:10px}.screen-members{color:#a8b7d0;white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.screen-solved strong{font-size:20px}.screen-solved span{color:#6f82a3;margin-left:4px;font-size:11px}.screen-bar{background:#1d2b46;border-radius:10px;height:6px;overflow:hidden}.screen-score{color:#5cdbed;text-align:right;font:800 26px ui-monospace,monospace}.screen-score small{color:#58708f;margin-left:5px;font-size:8px}.screen-empty{text-align:center;padding:90px 30px}.screen-empty strong,.screen-empty span{display:block}.screen-empty strong{font-size:26px}.screen-empty span{color:#7386a7;margin-top:10px}.screen-footer{color:#536886;justify-content:space-between;padding-top:14px;font:10px ui-monospace,monospace;display:flex}@media (max-width:900px){.topbar{padding:0 18px}.topbar nav a{padding:8px;font-size:12px}.hero{padding:38px 22px}.hero-metric{display:none}.student-layout{grid-template-columns:1fr}.identity-panel{position:static}.metric-grid{grid-template-columns:repeat(2,1fr)}.admin-grid{grid-template-columns:1fr}.challenge-row{grid-template-columns:54px 1fr}.flag-form,.solved-badge{grid-column:2;justify-self:stretch}.screen-summary{grid-template-columns:repeat(2,1fr)}.leaderboard-head,.leaderboard-row{grid-template-columns:54px 1fr 90px 100px}.leaderboard-head span:nth-child(3),.leaderboard-head span:nth-child(5),.screen-members,.screen-bar{display:none}}@media (max-width:560px){.brand small,.topbar nav a:nth-child(2){display:none}.page-shell{padding-inline:14px}.hero h1{font-size:32px}.metric-grid{grid-template-columns:1fr 1fr}.teacher-hero{align-items:flex-start;gap:20px}.teacher-actions{flex-direction:column}.overview-header{flex-direction:column;align-items:flex-start;gap:15px}.overview-header select{width:100%}.screen-page{padding-inline:14px}.screen-header{flex-direction:column;align-items:flex-start;gap:18px}.screen-controls,.screen-controls select{width:100%}.leaderboard-head,.leaderboard-row{grid-template-columns:40px 1fr 65px 72px;gap:8px;padding-inline:10px}}
