/* Use device fonts so rendering never waits for an external font service. */
:root{--bg:#f4f6fb;--panel:#fff;--text:#1c2740;--muted:#7d879b;--line:#e8ecf3;--blue:#3568e8;--blue-dark:#2553ce;--blue-soft:#edf2ff;--green:#188663;--green-soft:#e9f7f1;--orange:#c98227;--orange-soft:#fff5e8;--purple:#8261cf;--purple-soft:#f3efff;--shadow:0 8px 30px rgba(27,45,85,.045);--radius:18px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:"DM Sans","Noto Sans SC",system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.55}button,input,textarea,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid rgba(53,104,232,.22);outline-offset:2px}.hidden{display:none!important}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:244px;background:#fff;border-right:1px solid var(--line);padding:28px 16px;display:flex;flex-direction:column;z-index:5}.brand{display:flex;align-items:center;gap:11px;padding:0 9px 32px}.brand-mark{width:42px;height:42px;border-radius:14px;background:linear-gradient(145deg,#4779f2,#2f56d9);display:grid;place-items:center;color:#fff;font-size:27px;font-weight:700;box-shadow:0 7px 15px #3568e82e}.brand strong{display:block;font-size:16px;letter-spacing:.2px}.brand span{display:block;color:var(--muted);font-size:11px;margin-top:1px}.side-label{padding:0 12px 9px;color:#a0a8b8;font-size:10px;letter-spacing:1.3px;font-weight:700}.nav-item{display:flex;align-items:center;gap:12px;padding:12px 13px;margin:3px 0;color:#69758d;text-decoration:none;border-radius:11px;font-weight:500;transition:.2s}.nav-item:hover{background:#f7f8fc;color:var(--text)}.nav-item.active{background:var(--blue-soft);color:var(--blue);font-weight:700}.nav-icon{font-size:19px;width:21px;text-align:center}.nav-count{margin-left:auto;background:#dce6ff;color:var(--blue);border-radius:20px;font-size:11px;padding:1px 8px}.sidebar-bottom{margin-top:auto;display:flex;gap:10px;align-items:center;background:#f7f8fc;padding:13px 11px;border-radius:13px}.side-help-icon{width:31px;height:31px;display:grid;place-items:center;border-radius:10px;background:#e8edf8;color:#677792;font-weight:700}.sidebar-bottom strong,.sidebar-bottom span{display:block}.sidebar-bottom strong{font-size:12px}.sidebar-bottom span{font-size:10px;color:var(--muted);margin-top:2px}.main-content{margin-left:244px;padding:31px clamp(22px,3.2vw,48px) 20px;max-width:1800px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:25px}.eyebrow{font-size:9px;letter-spacing:1.8px;font-weight:700;color:#8d98ae}.topbar h1{font-size:27px;line-height:1.25;margin:5px 0 6px;letter-spacing:-.7px}.top-subtitle,.section-heading p,.panel-heading p{color:var(--muted);margin:0;font-size:12px}.top-actions{display:flex;align-items:center;gap:13px}.connection-pill{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:30px;padding:8px 11px;color:#78849a;font-size:11px;white-space:nowrap}.connection-pill i,.live-label i,.stage-live i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#22b884;box-shadow:0 0 0 3px #e4f8ef}.btn{border:1px solid transparent;border-radius:10px;padding:10px 15px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:transform .15s,background .15s,border .15s;white-space:nowrap}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--blue);color:#fff;box-shadow:0 5px 12px #3568e826}.btn-primary:hover{background:var(--blue-dark)}.btn-outline{border-color:#dce2ed;background:#fff;color:#46536c}.btn-outline:hover{border-color:#aebce0;background:#f9faff}.btn-glass{border-color:#ffffff75;background:#ffffff24;color:#fff;font-size:11px;padding:8px 11px}.btn-glass:hover{background:#ffffff3d}.btn-small{padding:8px 11px;font-size:11px}.class-banner{background:linear-gradient(112deg,#2d57d9 0%,#477cf2 64%,#6494ff 100%);border-radius:var(--radius);padding:23px 25px;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:18px;box-shadow:0 12px 25px #3568e81f;position:relative;overflow:hidden}.class-banner:after{content:"";position:absolute;width:280px;height:280px;border:1px solid #ffffff22;border-radius:50%;right:15%;top:-190px;box-shadow:0 0 0 30px #ffffff0a,0 0 0 65px #ffffff07;pointer-events:none}.class-banner-main{display:flex;align-items:center;gap:15px;position:relative;z-index:1}.class-avatar{width:51px;height:51px;border-radius:16px;background:#ffffff25;border:1px solid #ffffff35;display:grid;place-items:center;font-size:21px;font-weight:700}.banner-kicker{font-size:10px;color:#d8e4ff}.class-banner h2{font-size:20px;margin:3px 0 6px}.banner-meta{display:flex;align-items:center;gap:9px;font-size:11px;color:#e2eaff}.banner-meta b{color:#fff;letter-spacing:.7px}.meta-dot{opacity:.65}.banner-actions{display:flex;gap:8px;position:relative;z-index:1}.stage-section{margin:27px 0 20px}.section-heading,.panel-heading,.student-section-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}.section-heading h2,.panel-heading h2,.student-section-heading h2{font-size:16px;margin:0 0 4px;letter-spacing:-.2px}.stage-control{display:flex;align-items:center;gap:11px;color:var(--muted);font-size:11px}.stage-track{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin-top:15px}.stage-step{min-width:0;text-align:left;background:#fff;border:1px solid var(--line);border-radius:13px;padding:13px 13px 12px;display:flex;flex-direction:column;gap:5px;transition:.2s;position:relative}.stage-step:hover{border-color:#b8c9f8;transform:translateY(-1px)}.stage-step.active{background:#f0f4ff;border-color:#a9befb;box-shadow:inset 0 0 0 1px #dce6ff}.stage-num{font-size:10px;color:#a1aabc;font-weight:700;letter-spacing:1px}.stage-name{font-weight:700;font-size:12px;color:#34415b}.stage-step.active .stage-num,.stage-step.active .stage-name{color:var(--blue)}.stage-desc{font-size:10px;color:#939db0}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin:19px 0}.stat-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px 17px;box-shadow:var(--shadow)}.stat-top{display:flex;justify-content:space-between;align-items:center;color:#79849a;font-size:11px}.stat-icon{width:31px;height:31px;border-radius:10px;display:grid;place-items:center;font-size:16px;font-weight:700}.stat-icon.blue{background:#edf2ff;color:#4672e4}.stat-icon.purple{background:var(--purple-soft);color:var(--purple)}.stat-icon.green{background:var(--green-soft);color:var(--green)}.stat-icon.orange{background:var(--orange-soft);color:var(--orange)}.stat-value{font-size:28px;font-weight:700;letter-spacing:-1px;margin:7px 0 1px}.stat-unit{font-size:12px;font-weight:500;color:#8c96a8;margin-left:4px}.stat-foot{font-size:10px;color:#a0a8b7}.content-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);gap:17px;align-items:start}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;min-width:0}.panel-heading{margin-bottom:16px}.panel-heading h2{font-size:15px}.text-button{border:0;background:none;color:var(--blue);font-weight:700;font-size:11px;padding:6px 0}.text-button:hover{color:var(--blue-dark)}.filter-row{padding-bottom:12px;border-bottom:1px solid #f0f2f7}.filter-pills{display:flex;gap:5px;flex-wrap:wrap}.filter-pill{border:0;background:transparent;color:#929bad;border-radius:8px;padding:6px 10px;font-size:10px;font-weight:600}.filter-pill.selected{background:#edf2ff;color:var(--blue)}.task-list{display:flex;flex-direction:column}.task-card{padding:15px 0;border-bottom:1px solid #f0f2f7}.task-card:last-child{border-bottom:0;padding-bottom:0}.task-card-top{display:flex;align-items:flex-start;gap:10px}.task-type-icon{flex:0 0 35px;width:35px;height:35px;display:grid;place-items:center;border-radius:11px;background:#edf2ff;color:#4774df;font-size:17px;font-weight:700}.task-card:nth-child(3n+2) .task-type-icon{background:#f3efff;color:#8261cf}.task-card:nth-child(3n) .task-type-icon{background:#e9f7f1;color:#188663}.task-main{flex:1;min-width:0}.task-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.task-title-line strong{font-size:12px}.task-stage{font-size:10px;color:#8a95a9;background:#f4f6fa;border-radius:5px;padding:2px 6px}.task-prompt{font-size:11px;color:#7c879b;margin:6px 0 9px;overflow-wrap:anywhere}.task-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:10px;color:#9aa3b3}.status-pill{display:inline-flex;align-items:center;gap:5px;border-radius:20px;padding:4px 8px;font-size:10px;font-weight:700;white-space:nowrap}.status-pill.active{background:#e9f7f1;color:#16815e}.status-pill.queued{background:#fff4e4;color:#b87922}.status-pill.closed{background:#f0f2f6;color:#818a9a}.status-pill i{width:5px;height:5px;border-radius:50%;background:currentColor}.task-actions{display:flex;gap:6px;margin:11px 0 0 45px;flex-wrap:wrap}.mini-action{border:1px solid #e4e8f0;background:#fff;color:#66738b;border-radius:7px;padding:5px 8px;font-size:10px}.mini-action:hover{border-color:#aebef1;color:var(--blue)}.mini-action.danger:hover{border-color:#f2b8b8;color:#c94e4e}.empty-state{text-align:center;padding:28px 12px;color:#96a0b1;font-size:11px}.empty-state .empty-symbol{font-size:25px;margin-bottom:7px;color:#b4bfce}.live-label{font-size:10px;color:#168663;white-space:nowrap}.monitor-summary{display:grid;grid-template-columns:1fr 1.5fr auto;padding:0 0 9px;border-bottom:1px solid #edf0f5;font-size:10px;color:#a0a8b8}.student-list{display:flex;flex-direction:column}.monitor-student{display:grid;grid-template-columns:1fr 1.5fr auto;gap:8px;align-items:center;padding:12px 0;border-bottom:1px solid #f1f3f7}.monitor-student:last-child{border-bottom:0}.student-name-cell{display:flex;align-items:center;gap:8px;min-width:0}.student-mini-avatar{width:30px;height:30px;flex:0 0 30px;display:grid;place-items:center;border-radius:10px;background:#edf2ff;color:#4a70d2;font-size:11px;font-weight:700}.student-name-cell strong{display:block;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-name-cell small{display:block;color:#9aa3b2;font-size:9px;margin-top:2px}.student-dynamic{font-size:10px;color:#7d879b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-state{font-size:9px;font-weight:700;border-radius:6px;padding:4px 6px;white-space:nowrap}.student-state.online{background:#e9f7f1;color:#188663}.student-state.help{background:#fff1e4;color:#bc7925}.student-state.offline{background:#f0f2f6;color:#8a94a5}.student-state.done{background:#edf2ff;color:#4269d2}.activity-panel{margin-top:17px}.activity-count{font-size:10px;color:#9aa3b3}.activity-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.activity-item{display:flex;align-items:flex-start;gap:9px;background:#fafbfe;border:1px solid #f0f2f7;border-radius:11px;padding:12px}.activity-symbol{width:28px;height:28px;flex:0 0 28px;display:grid;place-items:center;border-radius:9px;background:#edf2ff;color:#4d74d6;font-weight:700}.activity-item strong{font-size:10px;display:block;margin:1px 0 3px}.activity-item p{font-size:10px;color:#7d879a;margin:0;overflow-wrap:anywhere}.activity-item time{font-size:9px;color:#a6aebc;display:block;margin-top:5px}.page-footer{display:flex;justify-content:space-between;gap:15px;color:#a0a8b6;font-size:10px;padding:19px 2px 4px}.modal-backdrop{position:fixed;inset:0;background:rgba(22,32,56,.42);backdrop-filter:blur(4px);display:grid;place-items:center;padding:18px;z-index:20}.modal-card{width:min(660px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:20px;padding:25px;box-shadow:0 25px 80px #14213c35}.modal-header{display:flex;justify-content:space-between;gap:15px;margin-bottom:21px}.modal-header h2{font-size:22px;margin:5px 0}.modal-header p{font-size:11px;color:var(--muted);margin:0}.icon-button{border:0;background:#f3f5f9;color:#6e7b92;border-radius:10px;width:34px;height:34px;font-size:23px;line-height:1}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field.full{grid-column:1/-1}.field>span{font-size:11px;font-weight:700;color:#4b5871}.field input,.field textarea,.field select{width:100%;border:1px solid #dfe4ee;background:#fff;border-radius:9px;padding:10px 11px;color:var(--text);outline:none;min-width:0}.field input:focus,.field textarea:focus,.field select:focus{border-color:#8eabf8;box-shadow:0 0 0 3px #edf2ff}.field textarea{resize:vertical}.field input::placeholder,.field textarea::placeholder{color:#b1b8c5}.modal-note{display:flex;gap:8px;margin:17px 0;padding:11px 12px;background:#f6f8fc;border-radius:9px;color:#8a95a8;font-size:10px}.modal-note span:first-child{color:var(--blue);font-weight:700}.modal-actions{display:flex;justify-content:flex-end;gap:9px;padding-top:14px;border-top:1px solid #edf0f5}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#1e2a43;color:#fff;padding:11px 16px;border-radius:10px;box-shadow:0 8px 24px #14213c2b;font-size:12px;z-index:40;transition:.25s;max-width:90vw}.toast.show{opacity:1;transform:translate(-50%,0)}
/* Student page */
.student-app{min-height:100vh;background:radial-gradient(ellipse at 82% 0%,#e8eeff 0%,transparent 32%),var(--bg)}.student-topbar{height:76px;background:#ffffffd9;backdrop-filter:blur(10px);border-bottom:1px solid #e8ecf4;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,6vw,100px)}.student-topbar .brand{padding:0}.student-top-right{display:flex;align-items:center;gap:13px}.student-avatar{width:36px;height:36px;border-radius:12px;background:#e9efff;color:#3568e8;display:grid;place-items:center;font-weight:700}.student-main{max-width:1150px;margin:0 auto;padding:35px 28px 22px}.student-welcome{display:flex;align-items:center;justify-content:space-between;min-height:150px;margin-bottom:22px;overflow:hidden}.student-welcome h1{font-size:31px;letter-spacing:-1px;margin:7px 0}.student-welcome p{font-size:13px;color:#818ba0;margin:0}.welcome-art{width:190px;height:145px;position:relative;flex:0 0 190px}.art-orbit{position:absolute;border:1px solid #cbd8ff;border-radius:50%;transform:rotate(-25deg)}.orbit-a{width:170px;height:80px;top:28px;left:0}.orbit-b{width:140px;height:110px;top:15px;left:17px;transform:rotate(45deg)}.art-card{position:absolute;top:36px;left:65px;width:62px;height:62px;border-radius:19px;background:linear-gradient(145deg,#5482f5,#315ddd);box-shadow:0 12px 25px #3568e839;display:grid;place-items:center;color:#fff;font-size:26px;font-weight:700;transform:rotate(-8deg)}.art-dot{position:absolute;width:11px;height:11px;border-radius:50%;background:#e9ad56}.dot-a{top:20px;right:25px}.dot-b{bottom:16px;left:35px;width:7px;height:7px;background:#7e69d7}.join-card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:21px;display:grid;grid-template-columns:auto 1fr;gap:10px 13px;align-items:start;box-shadow:var(--shadow);margin-bottom:22px}.join-icon{width:42px;height:42px;border-radius:13px;background:#edf2ff;color:var(--blue);display:grid;place-items:center;font-size:22px}.join-copy h2{font-size:16px;margin:1px 0 3px}.join-copy p{font-size:11px;color:var(--muted);margin:0}.join-form{grid-column:1/-1;display:grid;grid-template-columns:1fr 1.2fr .8fr auto;gap:11px;align-items:end;margin-top:7px}.join-form .field input,.join-form .field select{padding:10px}.student-class-strip{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 18px;background:#fff;border:1px solid var(--line);border-radius:14px;margin-bottom:17px}.student-class-strip>div:first-child{display:flex;align-items:center;gap:11px;flex-wrap:wrap}.strip-label{font-size:10px;color:#9ba4b3}.student-class-strip strong{font-size:12px}.class-code-mini{font-size:9px;background:#f1f4fb;border-radius:6px;padding:4px 7px;color:#7b879d;letter-spacing:.5px}.student-identity{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:600}.group-chip{background:#edf2ff;color:#426ad4;border-radius:6px;padding:3px 7px;font-size:10px}.student-stage-card{background:linear-gradient(110deg,#2f59db,#4d7ef0);color:#fff;border-radius:17px;padding:21px 23px;position:relative;overflow:hidden;box-shadow:0 10px 25px #3568e81b}.student-stage-card:after{content:"";position:absolute;width:230px;height:230px;border:1px solid #ffffff20;border-radius:50%;right:2%;top:-160px;box-shadow:0 0 0 28px #ffffff08,0 0 0 58px #ffffff05}.stage-card-top{display:flex;justify-content:space-between;align-items:center;color:#dfe8ff;font-size:10px;position:relative;z-index:1}.stage-live{display:flex;align-items:center;gap:7px}.stage-live i{background:#b6f4d9;box-shadow:0 0 0 3px #ffffff18}.student-stage-card h2{font-size:23px;margin:9px 0 3px;position:relative;z-index:1}.student-stage-card p{font-size:11px;color:#e3eaff;margin:0;position:relative;z-index:1}.mini-stage-track{display:flex;gap:5px;margin-top:18px;position:relative;z-index:1}.mini-stage{height:4px;flex:1;background:#ffffff40;border-radius:10px}.mini-stage.active{background:#fff}.student-task-section{margin-top:27px}.student-section-heading{margin-bottom:14px}.student-section-heading p{font-size:11px;color:var(--muted);margin:0}.soft-count{font-size:10px;background:#fff;border:1px solid var(--line);padding:6px 9px;border-radius:8px;color:#8c97aa;white-space:nowrap}.student-task-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.student-task-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:18px;box-shadow:var(--shadow);min-width:0}.student-task-card.submitted{border-color:#ccebdd}.student-task-card-top{display:flex;align-items:flex-start;gap:10px}.student-task-icon{width:36px;height:36px;flex:0 0 36px;border-radius:11px;background:#edf2ff;color:#426fe0;display:grid;place-items:center;font-size:17px;font-weight:700}.student-task-card h3{font-size:13px;margin:1px 0 4px}.student-task-sub{font-size:10px;color:#9aa3b2}.student-task-prompt{font-size:12px;color:#68758d;margin:14px 0;white-space:pre-wrap;overflow-wrap:anywhere}.answer-options{display:flex;flex-direction:column;gap:8px;margin:12px 0}.answer-option{display:flex;align-items:flex-start;gap:9px;border:1px solid #e8ecf3;border-radius:9px;padding:10px;font-size:11px;color:#56637b;cursor:pointer;transition:.15s}.answer-option:hover{border-color:#b5c6f8;background:#f9faff}.answer-option input{accent-color:var(--blue);margin-top:2px}.student-answer-input{width:100%;border:1px solid #dfe4ee;border-radius:9px;padding:10px 11px;resize:vertical;min-height:40px;color:var(--text);outline:none}.student-answer-input:focus{border-color:#8eabf8;box-shadow:0 0 0 3px #edf2ff}.student-task-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:13px;padding-top:12px;border-top:1px solid #f0f2f7}.submitted-note{display:flex;align-items:center;gap:5px;color:#168663;font-size:10px;font-weight:700}.student-task-footer .btn{padding:8px 12px;font-size:11px}.student-bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:18px}.student-tip-card,.student-help-card{display:flex;align-items:flex-start;gap:11px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px}.tip-icon{width:31px;height:31px;flex:0 0 31px;border-radius:10px;background:#fff5e6;color:#c9892d;display:grid;place-items:center;font-size:16px}.student-tip-card h3,.student-help-card h3{font-size:12px;margin:1px 0 4px}.student-tip-card p,.student-help-card p{font-size:10px;color:#8791a3;margin:0;line-height:1.7}.student-help-card{align-items:center;justify-content:space-between}.student-help-card .btn{font-size:10px;padding:8px 10px}.student-footer{margin-top:15px}.student-empty{grid-column:1/-1;background:#fff;border:1px dashed #dce2ed;border-radius:15px;padding:36px 18px;text-align:center;color:#929daf;font-size:12px}.student-empty strong{display:block;color:#526078;font-size:13px;margin:6px 0}.resource-preview{background:#f6f8fc;border-radius:10px;padding:12px;color:#7d879b;font-size:11px}.help-requested{background:#fff1e4!important;border-color:#f1d3ad!important;color:#b87922!important}
@media(max-width:1180px){.sidebar{width:215px}.main-content{margin-left:215px;padding-left:24px;padding-right:24px}.content-grid{grid-template-columns:1fr}.monitor-panel{min-height:0}.student-list{display:grid;grid-template-columns:1fr 1fr;column-gap:18px}.monitor-summary{grid-template-columns:1fr 1.5fr auto}.activity-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.sidebar{position:static;width:auto;height:auto;padding:13px 16px;display:block;border-right:0;border-bottom:1px solid var(--line)}.sidebar .brand{padding:0}.side-label,.sidebar-bottom,.nav-item{display:none}.main-content{margin:0;padding:22px 16px}.topbar{align-items:flex-start}.topbar h1{font-size:23px}.top-actions{flex-direction:column;align-items:flex-end;gap:7px}.connection-pill{font-size:9px;padding:6px 8px}.class-banner{padding:18px;align-items:flex-start;flex-direction:column}.banner-actions{align-self:flex-end}.stage-track{grid-template-columns:repeat(5,minmax(92px,1fr));overflow-x:auto;padding-bottom:5px}.stage-step{padding:10px}.stage-desc{display:none}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content-grid{grid-template-columns:1fr}.activity-list{grid-template-columns:1fr}.student-list{grid-template-columns:1fr}.page-footer{flex-direction:column;gap:5px}.modal-card{padding:19px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.student-topbar{padding:0 17px;height:67px}.student-main{padding:25px 16px}.student-welcome h1{font-size:25px}.welcome-art{transform:scale(.78);transform-origin:right center;margin-left:-30px}.join-form{grid-template-columns:1fr 1fr}.join-form .btn{grid-column:1/-1}.student-task-list{grid-template-columns:1fr}.student-bottom-grid{grid-template-columns:1fr}.student-class-strip{align-items:flex-start;flex-direction:column}.student-identity{align-self:flex-end}.student-stage-card{padding:18px}.student-stage-card h2{font-size:21px}}
@media(max-width:430px){.topbar{flex-direction:column}.top-actions{flex-direction:row;align-items:center;width:100%;justify-content:space-between}.stage-control{flex-direction:column;align-items:flex-end;gap:5px}.stats-grid{gap:9px}.stat-card{padding:12px}.stat-value{font-size:24px}.join-form{grid-template-columns:1fr}.join-form .btn{grid-column:auto}.welcome-art{display:none}.student-welcome{min-height:auto}.student-help-card{align-items:flex-start;flex-direction:column}.student-top-right .connection-pill{display:none}}


/* === Version 2: configurable flow, task type boards and photo submissions === */
.stage-control{flex-wrap:wrap;justify-content:flex-end}.stage-control .btn:disabled{opacity:.4;cursor:not-allowed}.stage-track{align-items:stretch}.stage-step{cursor:default;min-height:116px}.stage-step.done{background:#f4faf7;border-color:#d7eee3}.stage-step.done .stage-num,.stage-step.done .stage-name{color:#168663}.stage-step.upcoming{background:#fafbfe}.stage-current-label,.stage-done-label{display:inline-flex;align-self:flex-start;margin-top:3px;padding:2px 7px;border-radius:6px;font-size:9px;font-weight:700;background:#dfe8ff;color:#3568e8}.stage-done-label{background:#e5f5ed;color:#168663}.type-board-panel{margin-bottom:17px}.type-board-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:24px}.type-board-card{display:flex;align-items:center;gap:10px;padding:13px;border:1px solid #e9edf4;border-radius:12px;background:#fcfdff;min-width:0}.type-board-card:hover{border-color:#c8d5f7;background:#fff}.type-board-icon{width:37px;height:37px;flex:0 0 37px;display:grid;place-items:center;border-radius:11px;font-size:18px;font-weight:700}.type-board-icon.blue{background:#edf2ff;color:#4774df}.type-board-icon.purple{background:#f3efff;color:#8261cf}.type-board-icon.green{background:#e9f7f1;color:#188663}.type-board-icon.orange{background:#fff5e8;color:#c98227}.type-board-icon.pink{background:#fff0f4;color:#c65579}.type-board-icon.teal{background:#e8f8f7;color:#198b87}.type-board-icon.gray{background:#f0f2f6;color:#7f899a}.type-board-copy{flex:1;min-width:0}.type-board-copy strong{display:block;font-size:11px;margin-bottom:3px}.type-board-copy span{display:block;color:#8994a7;font-size:10px;line-height:1.5}.type-board-card .btn{font-size:10px;padding:7px 9px}.task-list-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #edf0f5;padding-top:18px;margin-bottom:10px}.task-list-heading h3{font-size:13px;margin:0 0 3px}.task-list-heading p{font-size:10px;color:#929bad;margin:0}.modal-wide{width:min(800px,100%)}.batch-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:20px 0 12px}.batch-heading h3{font-size:14px;margin:0 0 3px}.batch-heading p{font-size:10px;color:#8d97a9;margin:0}.question-batch-list{display:flex;flex-direction:column;gap:12px;max-height:42vh;overflow:auto;padding:2px 3px 5px}.question-batch-row{border:1px solid #e5eaf3;background:#fbfcff;border-radius:13px;padding:13px}.batch-row-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}.batch-row-number{font-size:11px;color:#4772db}.question-batch-row .form-grid{gap:11px}.question-batch-row .field>span{font-size:10px}.question-batch-row .field input,.question-batch-row .field textarea{padding:9px 10px;font-size:12px}.submissions-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-height:60vh;overflow:auto;padding:2px}.submission-card{border:1px solid #e8edf4;border-radius:12px;padding:13px;min-width:0}.submission-person{display:flex;align-items:center;gap:9px;margin-bottom:11px}.submission-person>div:nth-child(2){flex:1;min-width:0}.submission-person strong{display:block;font-size:11px}.submission-person small{display:block;font-size:9px;color:#939daf;margin-top:2px}.submission-person .status-pill{margin-left:auto}.submission-answer-text{font-size:12px;color:#526079;white-space:pre-wrap;overflow-wrap:anywhere;background:#f7f9fc;border-radius:9px;padding:11px}.submission-photo-wrap{background:#f7f9fc;border-radius:10px;padding:8px}.submission-photo{display:block;width:100%;max-height:300px;object-fit:contain;border-radius:7px;background:#fff}.photo-file-name{font-size:9px;color:#8c96a8;padding:7px 2px 1px;overflow-wrap:anywhere}.compact-stats{margin-top:16px}.student-task-card .photo-upload-box{display:flex;flex-direction:column;align-items:center;gap:5px;border:1px dashed #bdccef;background:#f8faff;border-radius:12px;padding:16px 12px;text-align:center;cursor:pointer;position:relative;overflow:hidden}.photo-upload-box:hover{border-color:#6f92ed;background:#f2f6ff}.photo-upload-box input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.photo-upload-icon{width:33px;height:33px;border-radius:10px;background:#e6edff;color:#3568e8;display:grid;place-items:center;font-size:22px}.photo-upload-title{font-size:11px;font-weight:700;color:#405271}.photo-upload-hint{font-size:9px;color:#929caf;line-height:1.5}.photo-file-label{font-size:10px;color:#3568e8;max-width:100%;overflow-wrap:anywhere}.photo-preview-wrap{margin-top:9px;border:1px solid #e7ebf2;border-radius:10px;padding:7px;background:#f8f9fc}.photo-preview{display:block;max-width:100%;max-height:260px;object-fit:contain;margin:auto;border-radius:7px}.experiment-workbench{margin-top:19px;border:1px solid #dce5fb;border-radius:17px;background:#fff;overflow:hidden;box-shadow:var(--shadow)}.workbench-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;background:linear-gradient(110deg,#f0f4ff,#f8faff);border-bottom:1px solid #e7edfb}.workbench-header h2{font-size:17px;margin:4px 0}.workbench-header p{font-size:11px;color:#7f8ba2;margin:0}.workbench-tag{font-size:9px;background:#e5ebfb;color:#5372bb;border-radius:20px;padding:6px 9px;white-space:nowrap}.workbench-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px}.packaging-placeholder,.checklist-upload-panel{border:1px solid #e9edf5;border-radius:13px;padding:17px;min-width:0}.packaging-placeholder{display:flex;align-items:center;gap:17px;background:#fbfcff}.packaging-placeholder h3,.checklist-title h3{font-size:13px;margin:0 0 5px}.packaging-placeholder p{font-size:10px;line-height:1.7;color:#8792a6;margin:0 0 8px}.placeholder-note{font-size:9px;color:#8a98b5}.packaging-illustration{position:relative;width:95px;height:100px;flex:0 0 95px}.package-face{position:absolute;background:#e5edff;border:1.5px solid #7c9be9}.package-face.front{width:48px;height:52px;left:13px;top:32px;transform:skewY(0deg);border-radius:2px 2px 4px 4px}.package-face.side{width:24px;height:52px;left:61px;top:25px;transform:skewY(-29deg);background:#c9d9ff}.package-face.top{width:48px;height:25px;left:25px;top:12px;transform:skewX(-58deg);background:#f2f5ff}.checklist-upload-panel{background:#fff}.checklist-title{display:flex;align-items:center;gap:10px;margin-bottom:12px}.checklist-title p{font-size:10px;color:#8994a7;margin:0}.task-type-icon.pink{background:#fff0f4;color:#c65579}.checklist-hint{font-size:9px;color:#9aa4b5;line-height:1.6;margin-top:10px}.workbench-no-task{font-size:10px;color:#909bad;background:#f7f9fc;border-radius:9px;padding:12px;line-height:1.6}.student-task-card .photo-upload-box{margin-top:8px}.student-task-card.submitted .photo-upload-box{background:#f6fbf8;border-color:#b9e2cf}.student-task-card.submitted .photo-upload-icon{background:#e1f5ea;color:#188663}
@media(max-width:1000px){.type-board-grid{grid-template-columns:1fr 1fr}.workbench-grid{grid-template-columns:1fr}.packaging-placeholder{min-height:145px}.stage-control{gap:6px}.stage-control .btn{padding:7px 9px}.stage-step{min-height:108px}}
@media(max-width:800px){.stage-control{width:100%;justify-content:flex-start;margin-top:10px}.section-heading{align-items:flex-start;flex-direction:column}.type-board-grid{grid-template-columns:1fr}.type-board-card{padding:11px}.submissions-content{grid-template-columns:1fr}.workbench-header{align-items:flex-start;flex-direction:column}.workbench-grid{padding:11px}.packaging-placeholder{align-items:flex-start;flex-direction:column}.packaging-illustration{margin:auto}.batch-heading{align-items:flex-start;flex-direction:column}.question-batch-list{max-height:none}.task-list-heading{align-items:flex-start;flex-direction:column}}



/* Version 4: flow control, task overview, analytics, textbook and teacher-managed photo viewer */
.stage-step{cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.stage-step:hover{transform:translateY(-2px);border-color:#91aef0;box-shadow:0 8px 20px rgba(48,85,160,.08)}.stage-step:focus-visible{outline:3px solid #8ca9ff;outline-offset:2px}
.all-task-overview-panel{margin:18px 0}.all-task-filterbar{display:grid;grid-template-columns:minmax(180px,1.6fr) repeat(3,minmax(125px,1fr));gap:10px;margin:14px 0 16px}.all-task-search,.all-task-filter{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1px solid #e3e9f2;border-radius:9px;background:#fff;min-width:0}.all-task-search>span{font-size:17px;color:#8c9ab0}.all-task-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:#34445d;font-size:11px}.all-task-filter{flex-direction:column;align-items:stretch;gap:5px}.all-task-filter span{font-size:9px;color:#8e9aab}.all-task-filter select{width:100%;border:0;outline:0;background:transparent;color:#40516c;font-size:11px}
.task-actions .edit-action{background:#edf3ff;color:#4267c5;border-color:#d9e4ff}.task-actions .edit-action:hover{background:#e2ebff}
.analytics-dashboard{position:relative;overflow:hidden;margin:18px 0 22px;padding:22px;border-radius:20px;color:#e9f2ff;background:radial-gradient(circle at 90% 5%,rgba(36,118,255,.24),transparent 32%),radial-gradient(circle at 5% 100%,rgba(0,212,190,.12),transparent 35%),linear-gradient(135deg,#08172e,#10284a 58%,#0b1d37);border:1px solid rgba(91,145,224,.32);box-shadow:0 16px 38px rgba(11,32,66,.16)}
.analytics-dashboard:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.12;background-image:linear-gradient(rgba(129,176,255,.2) 1px,transparent 1px),linear-gradient(90deg,rgba(129,176,255,.2) 1px,transparent 1px);background-size:28px 28px;mask-image:linear-gradient(to bottom,black,transparent)}
.analytics-head,.analytics-controls,.analytics-content{position:relative;z-index:1}.analytics-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.analytics-head h2{font-size:20px;letter-spacing:.3px;margin:5px 0 7px;color:#f4f8ff}.analytics-head p{font-size:11px;line-height:1.6;color:#9db2d1;margin:0}.analytics-head .eyebrow{color:#64dcd2;letter-spacing:1.5px}.analytics-live,.chart-live-tag{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border-radius:20px;background:rgba(19,209,166,.1);border:1px solid rgba(53,229,191,.28);color:#6ee8ca;font-size:10px;white-space:nowrap}.analytics-live i,.chart-live-tag i{width:6px;height:6px;border-radius:50%;background:#4de5b4;box-shadow:0 0 0 4px rgba(77,229,180,.12)}.analytics-controls{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;margin:22px 0 16px;padding-bottom:15px;border-bottom:1px solid rgba(157,190,235,.17)}.analytics-tabs{display:flex;gap:5px;padding:4px;border-radius:11px;background:rgba(255,255,255,.06)}.analytics-tab{border:0;border-radius:8px;padding:9px 14px;background:transparent;color:#9db1d1;font-size:11px;font-weight:700;cursor:pointer}.analytics-tab.active{background:#3b77f5;color:white;box-shadow:0 4px 15px rgba(43,112,255,.25)}.analytics-task-select{display:flex;align-items:center;gap:10px;color:#9db1d1;font-size:10px}.analytics-task-select select{min-width:230px;max-width:390px;border:1px solid rgba(139,173,224,.3);border-radius:9px;padding:10px 12px;background:#142d50;color:#eaf2ff;font-size:11px;outline:none}.analytics-empty{padding:30px 12px;text-align:center;border:1px dashed rgba(130,173,233,.28);border-radius:14px;background:rgba(255,255,255,.025)}.analytics-empty-mark{font-size:38px;color:#69b9ff}.analytics-empty h3{font-size:14px;color:#dceaff;margin:9px 0 5px}.analytics-empty p{font-size:11px;color:#8ea6c8;margin:0;line-height:1.7}.analytics-question-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:14px 16px;border-radius:12px;background:rgba(255,255,255,.055);border:1px solid rgba(151,185,236,.13)}.question-label{font-size:9px;letter-spacing:1.4px;color:#68dace;font-weight:800}.analytics-question-banner h3{font-size:14px;color:#f2f7ff;margin:6px 0 5px}.analytics-question-banner p{font-size:10px;line-height:1.6;color:#9bb1d0;margin:0;max-width:700px}.question-stage-tag{border-radius:7px;padding:6px 9px;font-size:9px;color:#9ac0ff;background:rgba(65,124,236,.15);white-space:nowrap}.analytics-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:13px 0 22px}.analytics-kpi{padding:14px 15px;border-radius:12px;border:1px solid rgba(145,180,231,.17);background:linear-gradient(145deg,rgba(255,255,255,.07),rgba(255,255,255,.025));min-width:0}.analytics-kpi>span{display:block;font-size:10px;color:#a5bad7}.analytics-kpi>strong{display:block;font-size:27px;line-height:1.2;color:#f3f8ff;margin:7px 0 6px;font-weight:750;font-variant-numeric:tabular-nums}.analytics-kpi>strong small{font-size:11px;color:#9eb4d3;margin-left:4px}.kpi-foot{font-size:9px;color:#6f8db5;line-height:1.5}.analytics-visual-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:13px}.analytics-visual-head h3{font-size:13px;color:#eaf3ff;margin:0 0 5px}.analytics-visual-head p{font-size:10px;color:#8fa7c8;margin:0;line-height:1.6}.option-distribution-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.option-stat-card{position:relative;overflow:hidden;padding:14px 13px 12px;border:1px solid rgba(145,180,231,.18);border-radius:12px;background:rgba(255,255,255,.045);min-width:0}.option-stat-card.correct{border-color:rgba(50,225,170,.5);background:linear-gradient(150deg,rgba(25,185,136,.13),rgba(255,255,255,.025))}.option-card-top{display:flex;align-items:center;justify-content:space-between;gap:4px}.option-letter{display:grid;place-items:center;width:29px;height:29px;border-radius:9px;background:rgba(76,134,250,.17);color:#8cb4ff;font-size:13px;font-weight:800}.option-stat-card.correct .option-letter{background:rgba(31,209,153,.16);color:#61e7bd}.correct-answer-chip{font-size:8px;color:#65e3ba;background:rgba(39,207,153,.12);border:1px solid rgba(67,220,174,.2);padding:4px 6px;border-radius:6px;white-space:nowrap}.option-answer-text{height:33px;overflow:hidden;margin-top:11px;font-size:11px;color:#d2e0f5;line-height:1.5;overflow-wrap:anywhere}.option-count-line{display:flex;align-items:baseline;justify-content:space-between;gap:5px;margin:8px 0}.option-count-line strong{font-size:26px;color:#fff;font-variant-numeric:tabular-nums}.option-count-line span{font-size:10px;color:#9ab2d3}.option-bar-track{height:7px;border-radius:10px;background:rgba(153,183,226,.13);overflow:hidden}.option-bar-fill{height:100%;border-radius:10px;transition:width .35s ease}.fill-0{background:linear-gradient(90deg,#3f7dff,#6daaff)}.fill-1{background:linear-gradient(90deg,#7b6bff,#b29aff)}.fill-2{background:linear-gradient(90deg,#10c7b1,#66ead1)}.fill-3{background:linear-gradient(90deg,#f2a94a,#ffd07b)}.option-stat-card.correct .option-bar-fill{background:linear-gradient(90deg,#18c993,#71f0c6)}.option-small-note{font-size:9px;color:#7f9bc0;margin-top:8px}.distribution-footer{display:flex;flex-wrap:wrap;gap:15px;margin-top:13px;color:#8fa8ca;font-size:9px}.distribution-footer>span{display:inline-flex;align-items:center;gap:6px}.legend-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.selected-dot{background:#6398ff}.unanswered-dot{background:#61718c}.correct-dot{background:#39d6a3}.fill-answer-list{display:flex;flex-direction:column;gap:8px}.fill-answer-row{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid rgba(145,180,231,.15);border-radius:10px;background:rgba(255,255,255,.035)}.fill-answer-rank{font-size:10px;color:#6e8bb5;font-weight:800;width:22px}.fill-answer-main{flex:1;min-width:0}.fill-answer-text{font-size:11px;color:#e3edfc;overflow-wrap:anywhere;margin-bottom:7px}.fill-answer-bar{height:5px;border-radius:8px;background:rgba(145,180,231,.12);overflow:hidden}.fill-answer-bar span{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#38a3ff,#6fdbd1)}.fill-answer-count{display:flex;align-items:baseline;gap:5px;white-space:nowrap}.fill-answer-count strong{font-size:16px;color:#fff}.fill-answer-count span{font-size:9px;color:#8ca5c9}.fill-reference-answer{display:flex;justify-content:space-between;gap:12px;margin-top:12px;padding:11px 13px;border-radius:9px;background:rgba(54,212,166,.08);border:1px solid rgba(54,212,166,.16);font-size:10px;color:#91b3ca}.fill-reference-answer strong{color:#63e4bc}.analytics-no-answers{padding:20px;text-align:center;color:#8ca5c9;font-size:11px;border:1px dashed rgba(145,180,231,.2);border-radius:10px}
.media-management-panel{margin-bottom:18px}.media-security-note{font-size:9px;color:#5475b8;background:#edf3ff;border-radius:8px;padding:7px 9px;white-space:nowrap}.media-management-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.media-manager-card{padding:16px;border:1px solid #e7ecf4;border-radius:14px;background:linear-gradient(160deg,#fff,#fbfcff);min-width:0}.media-manager-head{display:flex;align-items:center;gap:11px;margin-bottom:14px}.media-manager-icon{display:grid;place-items:center;width:39px;height:39px;border-radius:12px;font-size:18px}.textbook-icon{background:#eaf0ff;color:#4e74d8}.collected-icon{background:#fff0f4;color:#c45d7a}.media-manager-head h3{font-size:12px;margin:0 0 4px}.media-manager-head p{font-size:10px;color:#8d98aa;margin:0;line-height:1.5}.media-upload-form{display:flex;flex-direction:column;gap:10px}.media-upload-form .field{display:flex;flex-direction:column;gap:6px}.media-upload-form .field>span{font-size:10px;color:#6f7c91;font-weight:650}.media-upload-form .field input,.media-upload-form .field select{width:100%;padding:9px 10px;border:1px solid #e1e7f0;border-radius:8px;background:#fff;color:#263651;font-size:11px;outline:none}.media-form-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}.media-file-drop{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;padding:14px 10px;border:1px dashed #c8d5ee;border-radius:10px;background:#f7f9ff;cursor:pointer;text-align:center}.media-file-drop input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.media-file-plus{display:grid;place-items:center;width:27px;height:27px;border-radius:8px;background:#e4ebff;color:#426bd0;font-size:19px}.media-file-drop strong{font-size:10px;color:#415677}.media-file-drop small{font-size:9px;color:#9aa4b6}.media-upload-form>.btn{align-self:flex-start;font-size:10px;padding:9px 12px}.media-gallery-heading{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:18px 0 9px;padding-top:12px;border-top:1px solid #edf0f5}.media-gallery-heading strong{font-size:10px}.media-gallery-heading span{font-size:9px;color:#9aa4b6}.media-thumb-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.media-thumb-card{min-width:0;border:1px solid #e7ecf4;border-radius:9px;overflow:hidden;background:#fff}.media-thumb-open{position:relative;display:block;width:100%;height:90px;padding:0;border:0;background:#f1f4f9;cursor:zoom-in;overflow:hidden}.media-thumb-open img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s}.media-thumb-open:hover img{transform:scale(1.04)}.thumb-page-number,.thumb-photo-badge{position:absolute;left:6px;top:6px;padding:3px 5px;border-radius:5px;background:rgba(12,28,54,.72);color:#fff;font-size:8px}.media-thumb-meta{display:flex;align-items:center;justify-content:space-between;gap:5px;padding:7px}.media-thumb-meta>div{min-width:0}.media-thumb-meta strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:9px;color:#4d5d76}.media-thumb-meta small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:8px;color:#98a2b3;margin-top:3px}.media-delete-btn{flex:0 0 22px;width:22px;height:22px;border:0;border-radius:6px;background:#fff0f0;color:#c65e65;font-size:15px;cursor:pointer}.media-empty{grid-column:1/-1;padding:15px;border-radius:9px;background:#f7f9fc;color:#9aa4b5;font-size:10px;line-height:1.6;text-align:center}
.image-viewer-backdrop{z-index:1000;padding:16px}.image-viewer-card{width:min(1200px,100%);height:min(92vh,900px);display:flex;flex-direction:column;background:#0a1220;border:1px solid rgba(160,185,225,.2);border-radius:16px;overflow:hidden;box-shadow:0 30px 90px rgba(0,0,0,.45)}.image-viewer-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 15px;background:#111e32;color:#eaf2ff;border-bottom:1px solid rgba(160,185,225,.14)}.image-viewer-title{display:flex;flex-direction:column;gap:3px;min-width:0}.image-viewer-title strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.image-viewer-title span{font-size:9px;color:#8da5c8}.image-viewer-actions{display:flex;align-items:center;gap:7px}.image-viewer-actions .icon-button{border-color:rgba(160,185,225,.24);background:#1c2c45;color:#e5efff;min-width:31px;height:31px}.image-viewer-actions>span{font-size:10px;color:#b8c8df;min-width:35px;text-align:center}.image-viewer-actions .viewer-close{font-size:20px;background:#382431;color:#ffbdca}.image-viewer-stage{position:relative;flex:1;min-height:0;display:flex;align-items:stretch;justify-content:center;background:radial-gradient(circle at center,#1b2b43,#0a1220 72%)}.image-viewer-scroll{flex:1;min-width:0;overflow:auto;display:flex;align-items:flex-start;justify-content:center;padding:20px}.image-viewer-scroll img{display:block;height:auto;object-fit:contain;flex:0 0 auto;align-self:flex-start;max-width:none;max-height:none;transition:width .15s}.viewer-nav{align-self:center;flex:0 0 34px;width:34px;height:45px;margin:0 5px;border:1px solid rgba(175,199,237,.22);border-radius:9px;background:rgba(35,54,81,.8);color:#eaf2ff;font-size:26px;cursor:pointer;z-index:2}.viewer-nav:disabled{opacity:.2;cursor:not-allowed}.image-viewer-footer{display:flex;justify-content:space-between;gap:12px;padding:10px 15px;background:#111e32;color:#8299bb;font-size:9px;border-top:1px solid rgba(160,185,225,.14)}
.btn-textbook{background:#edf3ff!important;color:#4169ce!important;border-color:#dce6ff!important;font-weight:700}.student-textbook-modal-card{max-height:85vh}.student-textbook-list{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow:auto}.student-book-card{display:flex;align-items:center;gap:12px;width:100%;padding:9px;border:1px solid #e7ecf4;border-radius:11px;background:#fff;text-align:left;cursor:pointer}.student-book-card:hover{background:#f7f9ff;border-color:#c8d6f7}.student-book-thumb{position:relative;display:block;flex:0 0 68px;width:68px;height:78px;background:#eef2f8;border-radius:6px;overflow:hidden}.student-book-thumb img{width:100%;height:100%;object-fit:cover}.student-book-thumb>span{position:absolute;left:4px;top:4px;padding:2px 5px;border-radius:4px;background:rgba(14,29,54,.7);color:#fff;font-size:8px}.student-book-info{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}.student-book-info strong{font-size:11px;color:#344561}.student-book-info small{font-size:9px;color:#9aa4b5}.student-book-open{font-size:18px;color:#6384d8}.student-book-empty{padding:35px 15px;text-align:center;background:#f8faff;border:1px dashed #d9e2f4;border-radius:12px}.student-book-empty>div{font-size:35px;color:#7190de}.student-book-empty h3{font-size:13px;color:#4e5f7d;margin:9px 0 5px}.student-book-empty p{font-size:10px;color:#939daf;line-height:1.7;margin:0 auto;max-width:350px}.teacher-collect-note{display:flex;gap:10px;align-items:flex-start;padding:11px;border:1px solid #e8edf7;border-radius:10px;background:#f7f9fd;margin-top:7px}.teacher-collect-icon{display:grid;place-items:center;flex:0 0 29px;width:29px;height:29px;border-radius:8px;background:#fff0f4;color:#c45d7a}.teacher-collect-note strong{display:block;font-size:10px;color:#455775;margin-bottom:4px}.teacher-collect-note p{font-size:9px;line-height:1.6;color:#8995a8;margin:0}
.student-task-card.task-current-step{border-color:#8fa9ef;box-shadow:0 0 0 2px rgba(83,119,226,.07)}.student-task-card.task-locked{opacity:.62;position:relative;overflow:hidden}.task-lock-banner{padding:10px 12px;background:#f0f3fa;color:#77849a;font-size:10px;border-top:1px solid #e3e8f1}.student-task-card.task-readonly{border-color:#d5e9df}.student-task-card.task-readonly .student-task-footer{opacity:.8}
@media(max-width:900px){.analytics-dashboard{padding:16px}.analytics-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.option-distribution-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.media-management-grid{grid-template-columns:1fr}.analytics-controls{align-items:flex-start;flex-direction:column}.analytics-task-select{width:100%;align-items:flex-start;flex-direction:column}.analytics-task-select select{width:100%;max-width:none}.image-viewer-card{height:94vh}.image-viewer-footer{flex-direction:column;gap:5px}.all-task-filterbar{grid-template-columns:repeat(2,minmax(0,1fr))}.all-task-search{grid-column:1/-1}}
@media(max-width:560px){.analytics-head{flex-direction:column}.analytics-kpi>strong{font-size:23px}.option-stat-card{padding:11px}.option-answer-text{height:auto;min-height:30px}.option-count-line strong{font-size:23px}.analytics-question-banner{flex-direction:column}.media-form-row{grid-template-columns:1fr}.media-thumb-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.image-viewer-toolbar{align-items:flex-start;flex-direction:column}.image-viewer-actions{width:100%;justify-content:flex-end}.image-viewer-scroll{padding:10px}.viewer-nav{flex-basis:25px;width:25px;margin:0 2px}.student-identity{flex-wrap:wrap}.btn-textbook{order:-1}.all-task-filterbar{grid-template-columns:1fr}.all-task-search{grid-column:auto}}



/* Version 5: full-spectrum classroom analytics with clickable drill-down */
.analytics-tabs-wide{flex-wrap:wrap;max-width:100%;row-gap:5px}
.analytics-tabs-wide .analytics-tab{padding:8px 10px;font-size:10px}
.analytics-task-badges{display:flex;flex-direction:column;align-items:flex-end;gap:7px;flex-shrink:0}
.analytics-kpi-grid-five{grid-template-columns:repeat(5,minmax(0,1fr))}
.analytics-kpi-button{width:100%;text-align:left;color:inherit;font:inherit;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease}
.analytics-kpi-button:hover{transform:translateY(-2px);border-color:rgba(111,163,255,.65);background:linear-gradient(145deg,rgba(71,130,245,.16),rgba(255,255,255,.04))}
.analytics-kpi-button:focus-visible,.analytics-drill-card:focus-visible,.analytics-answer-group:focus-visible,.analytics-group-card:focus-visible,.analytics-student-link:focus-visible,.analytics-view-detail:focus-visible{outline:2px solid #79b8ff;outline-offset:2px}
.analytics-correctness-strip{display:flex;flex-wrap:wrap;gap:8px 18px;margin:-7px 0 22px;padding:11px 14px;border:1px solid rgba(64,219,169,.23);border-radius:10px;background:rgba(34,202,151,.07);color:#a9c5d9;font-size:10px}
.analytics-correctness-strip strong{color:#65e6bf}
.analytics-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:18px 0 13px}
.analytics-section-head h3,.analytics-roster-head h3{font-size:13px;color:#eaf3ff;margin:0 0 5px}
.analytics-section-head p,.analytics-roster-head p{font-size:10px;line-height:1.6;color:#8fa7c8;margin:0}
.analytics-section-head-spaced{margin-top:25px}
.analytics-option-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.analytics-drill-card{width:100%;text-align:left;color:inherit;font:inherit;cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.analytics-drill-card:hover,.analytics-answer-group:hover,.analytics-group-card:hover{transform:translateY(-2px);border-color:rgba(104,164,255,.68);box-shadow:0 8px 20px rgba(0,0,0,.12)}
.analytics-drill-card .option-small-note{color:#8bb9ff}
.drill-selected{outline:2px solid rgba(89,161,255,.86)!important;outline-offset:1px!important;border-color:rgba(89,161,255,.8)!important;background-color:rgba(56,119,233,.11)!important}
.analytics-answer-groups{display:flex;flex-direction:column;gap:8px}
.analytics-answer-group{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border:1px solid rgba(145,180,231,.16);border-radius:11px;background:rgba(255,255,255,.04);color:#e5efff;text-align:left;cursor:pointer;transition:transform .15s ease,border-color .15s ease}
.answer-group-rank{flex:0 0 28px;width:28px;height:28px;display:grid;place-items:center;border-radius:8px;background:rgba(75,127,239,.15);color:#8db5ff;font-size:10px;font-weight:800}
.answer-group-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}
.answer-group-main>strong{font-size:11px;font-weight:650;line-height:1.6;overflow-wrap:anywhere}
.answer-group-main>small{font-size:9px;color:#8ca7c8}
.answer-group-bar{height:5px;display:block;border-radius:8px;background:rgba(145,180,231,.12);overflow:hidden}
.answer-group-bar i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#4289ff,#45d9ca)}
.answer-group-count{display:flex;flex-direction:column;align-items:flex-end;gap:3px;white-space:nowrap}
.answer-group-count strong{font-size:19px;color:#fff}
.answer-group-count small{font-size:9px;color:#90a8c9}
.answer-group-count em{font-size:8px;font-style:normal;color:#83b3ff;margin-top:2px}
.analytics-group-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.analytics-group-card{display:flex;flex-direction:column;align-items:stretch;gap:8px;min-width:0;padding:13px;border:1px solid rgba(145,180,231,.16);border-radius:11px;background:rgba(255,255,255,.04);color:#eaf3ff;text-align:left;cursor:pointer;transition:transform .15s ease,border-color .15s ease}
.analytics-group-name{font-size:10px;color:#9db6d6}
.analytics-group-card>strong{font-size:22px;color:#f4f8ff}
.analytics-group-card>strong small{font-size:10px;color:#8fa8ca;font-weight:500}
.analytics-group-track{height:6px;border-radius:8px;background:rgba(145,180,231,.13);overflow:hidden}
.analytics-group-track i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#4a87ff,#39d6be)}
.analytics-group-card>small{font-size:9px;color:#8fa8ca;line-height:1.5}
.analytics-roster-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:27px 0 12px}
.analytics-roster-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.analytics-inline-clear{border:1px solid rgba(134,170,226,.26);border-radius:7px;padding:7px 9px;background:rgba(255,255,255,.045);color:#9ec0f2;font-size:9px;cursor:pointer;white-space:nowrap}
.analytics-inline-clear:hover{background:rgba(75,130,239,.15);border-color:rgba(134,170,226,.5)}
.analytics-roster-table-wrap{width:100%;overflow:auto;border:1px solid rgba(145,180,231,.17);border-radius:12px;background:rgba(255,255,255,.025)}
.analytics-roster-table{width:100%;border-collapse:collapse;min-width:760px;font-size:10px;color:#c7d8ee}
.analytics-roster-table th{padding:11px 10px;text-align:left;background:rgba(126,164,221,.09);color:#91abce;font-size:9px;font-weight:700;white-space:nowrap;border-bottom:1px solid rgba(145,180,231,.15)}
.analytics-roster-table td{padding:10px;border-bottom:1px solid rgba(145,180,231,.09);vertical-align:middle;max-width:240px}
.analytics-roster-table tbody tr:last-child td{border-bottom:0}
.analytics-roster-table tbody tr:hover{background:rgba(93,143,227,.06)}
.analytics-student-link{display:inline-flex;align-items:center;gap:7px;padding:0;border:0;background:transparent;color:#e1edff;font-size:10px;text-align:left;cursor:pointer;white-space:nowrap}
.analytics-avatar{display:grid;place-items:center;width:25px;height:25px;flex:0 0 25px;border-radius:8px;background:rgba(81,132,239,.19);color:#a9c8ff;font-size:10px;font-weight:750}
.student-detail-arrow{color:#76aaff;font-size:10px;opacity:.65}
.analytics-answer-cell{max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#b4c7e0}
.analytics-status{display:inline-flex;align-items:center;gap:4px;padding:4px 6px;border:1px solid transparent;border-radius:6px;font-size:8px;white-space:nowrap}
.analytics-status.done{background:rgba(38,204,149,.1);border-color:rgba(38,204,149,.17);color:#6ce2bd}
.analytics-status.pending{background:rgba(245,177,78,.09);border-color:rgba(245,177,78,.16);color:#f1c57d}
.analytics-status.wrong{background:rgba(255,115,125,.1);border-color:rgba(255,115,125,.18);color:#ff9ba3}
.analytics-status.neutral{background:rgba(143,167,203,.08);border-color:rgba(143,167,203,.14);color:#93a9c8}
.analytics-view-detail{padding:5px 7px;border:1px solid rgba(134,170,226,.22);border-radius:6px;background:rgba(255,255,255,.04);color:#a6c7ff;font-size:9px;cursor:pointer}
.analytics-view-detail:hover{background:rgba(75,130,239,.15)}
.analytics-student-detail{margin:0 0 14px;padding:15px;border:1px solid rgba(101,160,246,.28);border-radius:13px;background:linear-gradient(145deg,rgba(46,95,177,.15),rgba(255,255,255,.025))}
.analytics-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.analytics-detail-person{display:flex;align-items:center;gap:11px;min-width:0}
.analytics-detail-avatar{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,#3b79f2,#31bfae);color:white;font-size:17px;font-weight:800}
.analytics-detail-person h3{font-size:15px;color:#f2f7ff;margin:4px 0}
.analytics-detail-person p{font-size:10px;color:#9ab2d3;margin:0;line-height:1.5}
.analytics-student-current{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:15px 0}
.analytics-student-current>div{display:flex;flex-direction:column;gap:7px;min-width:0;padding:10px;border:1px solid rgba(145,180,231,.13);border-radius:9px;background:rgba(255,255,255,.035)}
.analytics-student-current span{font-size:9px;color:#8fa8ca}
.analytics-student-current strong{font-size:10px;line-height:1.6;color:#e5efff;overflow-wrap:anywhere}
.analytics-history-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:17px 0 9px}
.analytics-history-head h4{font-size:11px;color:#d9e7fb;margin:0}
.analytics-history-head>span{font-size:9px;color:#829fc5}
.analytics-student-history{display:flex;flex-direction:column;gap:6px}
.analytics-student-history-row{display:grid;grid-template-columns:100px minmax(130px,1fr) minmax(120px,1fr) 115px;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;background:rgba(255,255,255,.035);border:1px solid rgba(145,180,231,.09)}
.history-stage{font-size:9px;color:#8eb6ff}
.history-task{display:flex;flex-direction:column;gap:4px;min-width:0}
.history-task strong{font-size:10px;color:#dce9fc;overflow-wrap:anywhere}
.history-task small{font-size:8px;color:#829fc5}
.history-answer{font-size:9px;line-height:1.5;color:#b5c9e3;overflow-wrap:anywhere}
.history-result{font-size:9px;color:#9bb8d9}
.analytics-no-answers{line-height:1.7}
@media(max-width:1050px){.analytics-kpi-grid-five{grid-template-columns:repeat(3,minmax(0,1fr))}.analytics-group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-option-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.analytics-kpi-grid-five{grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-student-current{grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-roster-head{align-items:flex-start;flex-direction:column}.analytics-roster-actions{justify-content:flex-start}.analytics-student-history-row{grid-template-columns:1fr;gap:5px}.analytics-detail-head{align-items:flex-start;flex-direction:column}.analytics-tabs-wide .analytics-tab{flex:1 0 auto}.analytics-task-badges{align-items:flex-start;flex-direction:row;flex-wrap:wrap}}
@media(max-width:480px){.analytics-kpi-grid-five{grid-template-columns:1fr 1fr}.analytics-group-grid{grid-template-columns:1fr 1fr}.analytics-option-grid{grid-template-columns:1fr 1fr}.analytics-answer-group{gap:7px;padding:9px}.answer-group-rank{flex-basis:24px;width:24px;height:24px}.answer-group-count strong{font-size:16px}.analytics-roster-actions{width:100%}.analytics-inline-clear{white-space:normal}}



.student-task-photo-card{margin-top:14px;background:linear-gradient(145deg,#fff,#f8faff)}
.student-task-photo-icon{background:#e9f7f4;color:#268f81}
.student-task-photo-count{margin-left:auto;white-space:nowrap;padding:6px 9px;border-radius:8px;background:#edf3ff;color:#426ac1;font-size:10px;font-weight:700}
.student-task-photo-gallery{grid-template-columns:repeat(5,minmax(0,1fr))}
.student-task-photo-thumb .media-thumb-open{aspect-ratio:4/3}
.student-task-photo-thumb .media-thumb-open img{object-fit:cover}
.student-photo-detail-link{border:0;background:transparent;color:#4d73c8;font-size:10px;cursor:pointer;white-space:nowrap}
.student-photo-detail-link:hover{text-decoration:underline}
@media(max-width:1050px){.student-task-photo-gallery{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:720px){.student-task-photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.student-task-photo-card{padding:12px}.student-task-photo-card .media-manager-head{align-items:flex-start}}


/* Student photo upload: calm, premium, tablet-friendly */
.student-photo-upload-block{margin:13px 0 3px;padding:14px;border:1px solid #e4eaf4;border-radius:14px;background:linear-gradient(180deg,#fbfcff,#f7f9fd)}
.student-photo-upload-head{display:flex;align-items:center;gap:10px;margin-bottom:13px}
.student-photo-upload-icon{display:grid;place-items:center;flex:0 0 35px;width:35px;height:35px;border-radius:11px;background:#eaf0ff;color:#3c67c3;font-size:20px;font-weight:700}
.student-photo-upload-head strong{display:block;font-size:12px;color:#233653}
.student-photo-upload-head p{font-size:10px;line-height:1.7;color:#8190a6;margin:4px 0 0}
.student-photo-dropzone{position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px;min-height:126px;padding:18px;border:1px dashed #a9bce4;border-radius:12px;background:rgba(255,255,255,.82);text-align:center;cursor:pointer;transition:background .18s,border-color .18s}
.student-photo-dropzone:hover{border-color:#6486d3;background:#f3f7ff}
.student-photo-input{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important}
.photo-drop-icon{display:grid;place-items:center;width:31px;height:31px;border-radius:10px;background:#eaf0ff;color:#426ac1;font-size:23px;line-height:1}
.student-photo-dropzone>strong{font-size:11px;color:#355aab}
.student-photo-dropzone>small{font-size:9px;color:#8b98ad}
.student-photo-preview{margin-top:10px;display:flex;align-items:center;gap:10px;min-height:56px;padding:8px;border-radius:10px;background:#eef2f8;border:1px solid transparent}
.student-photo-preview:not(.has-photo){justify-content:center}
.student-photo-empty{display:flex;align-items:center;gap:8px;color:#99a5b7}
.student-photo-empty>span{font-size:17px}
.student-photo-empty p{margin:0;font-size:10px}
.student-photo-preview.has-photo{background:#fff;border-color:#e1e8f2}
.student-photo-preview img{width:58px;height:58px;flex:0 0 58px;object-fit:cover;border-radius:8px;background:#eef2f8}
.student-photo-preview-label{font-size:10px;line-height:1.6;color:#62738f;overflow-wrap:anywhere}
.student-photo-privacy{font-size:9px;line-height:1.7;color:#96a1b2;margin:9px 1px 0}
.analytics-photo-link{display:inline-flex;align-items:center;gap:5px;padding:6px 8px;border:1px solid rgba(91,151,245,.25);border-radius:7px;background:rgba(74,135,255,.09);color:#8bbaff;font-size:9px;cursor:pointer;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.analytics-photo-link:hover{background:rgba(74,135,255,.17);border-color:rgba(91,151,245,.5)}
@media(max-width:720px){.student-photo-upload-block{padding:11px}.student-photo-dropzone{min-height:112px}}
