@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;500;600;700;800&display=swap');
:root{--ink:#20232a;--muted:#747886;--line:#e8e4df;--bg:#faf9f6;--panel:#fff;--violet:#6d28d9;--violet-2:#8b5cf6;--mint:#b9f3da;--yellow:#fde89b;--coral:#ffb1aa;--sky:#c9e8fb;--shadow:0 8px 24px rgba(41,31,18,.06);--radius:18px}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;color:var(--ink);background:var(--bg);font-family:'Be Vietnam Pro',system-ui,sans-serif;font-size:14px;line-height:1.55}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{border:0;background:none;color:inherit}.icon{width:18px;height:18px;display:inline-block;vertical-align:middle}.app-shell{display:flex;min-height:100vh}.sidebar{width:254px;background:#fff;border-right:1px solid var(--line);padding:28px 16px 20px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:5}.brand{display:flex;align-items:center;gap:10px;font-size:21px;font-weight:600;letter-spacing:-.06em;padding:0 13px;margin-bottom:44px}.brand b{font-weight:800}.brand-mark{width:31px;height:31px;background:var(--violet);color:#fff;border-radius:10px;display:grid;place-items:center;font-size:20px;transform:rotate(-5deg)}.sidebar-label{font-size:10px;font-weight:800;letter-spacing:.15em;color:#a4a3aa;padding:0 13px 11px}.sidebar-label.secondary{margin-top:28px}.nav-item{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:11px;color:#747680;font-weight:600;margin:3px 0;transition:.18s}.nav-item:hover{color:var(--violet);background:#f5f1ff}.nav-item.active{background:#f0eaff;color:var(--violet);font-weight:800}.nav-item .icon{width:17px}.nav-dot{width:6px;height:6px;background:var(--coral);border-radius:99px;margin-left:auto}.ai-pill{background:#f1eaff;color:var(--violet);font-size:10px;padding:2px 5px;border-radius:5px;font-weight:800}.new-badge{font-size:8px;background:#e8fff4;color:#25845b;border-radius:4px;padding:3px 5px;margin-left:auto;font-weight:800}.sidebar-bottom{margin-top:auto}.storage-card{margin:18px 5px;padding:14px;border:1px solid #e8defe;background:#fbf9ff;border-radius:14px;position:relative;display:flex;gap:8px;flex-wrap:wrap}.storage-card b,.storage-card small{display:block}.storage-card b{font-size:11px}.storage-card small{font-size:10px;color:var(--muted);margin-top:2px}.tiny-spark{color:var(--violet);font-size:18px}.storage-bar{width:100%;height:5px;background:#e9ddff;border-radius:9px;overflow:hidden}.storage-bar span{display:block;width:72%;height:100%;background:var(--violet);border-radius:9px}.profile-mini{display:flex;align-items:center;gap:9px;padding:12px 7px 0;border-top:1px solid var(--line)}.profile-mini b,.profile-mini small{display:block}.profile-mini b{font-size:12px}.profile-mini small{color:var(--muted);font-size:10px}.profile-mini form{margin-left:auto}.avatar{width:33px;height:33px;display:inline-grid;place-items:center;border-radius:11px;background:#e9ddff;color:var(--violet);font-weight:800;font-size:11px;flex:none}.avatar.green{background:#d9f9e8;color:#1d8957}.avatar.blue{background:#dff1ff;color:#237ab4}.avatar.yellow{background:#fff1c3;color:#9d7113}.avatar.coral{background:#ffe1dd;color:#b64644}.avatar.empty{background:#f2f1ee;color:#aaa;font-size:18px}.icon-button{color:#aaa;font-size:16px}.main{margin-left:254px;width:calc(100% - 254px);min-height:100vh}.topbar{height:77px;padding:0 42px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;background:rgba(250,249,246,.92);position:sticky;top:0;z-index:4}.crumb{display:flex;gap:10px;color:#a3a1a1;font-size:12px}.crumb i{font-style:normal;color:#d0cdca}.crumb b{color:var(--ink)}.top-actions{margin-left:auto;display:flex;align-items:center;gap:16px}.top-icon{color:#8c8b92;position:relative;padding:5px}.top-icon.notice span{position:absolute;top:3px;right:1px;width:6px;height:6px;background:var(--coral);border:2px solid var(--bg);border-radius:99px}.join-link{font-size:12px;font-weight:700;color:#6e687d}.mobile-brand{display:none}.content{padding:38px 42px 60px;max-width:1530px;margin:auto}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 17px;border-radius:10px;font-weight:800;font-size:12px;transition:.18s;cursor:pointer}.button:hover{transform:translateY(-1px);box-shadow:0 7px 14px rgba(40,30,16,.1)}.button.primary{background:var(--violet);color:#fff}.button.primary:hover{background:#5b21b6}.button.ghost{border:1px solid var(--line);background:#fff;color:#59545e}.button.outline{border:1px solid #d9d2c9;background:transparent;color:#59545e}.button.small{padding:10px 14px}.button.wide{width:100%}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.13em;color:#9b96a1}.welcome-row,.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:30px}.welcome-row h1,.page-head h1{margin:7px 0 4px;font-size:29px;letter-spacing:-.055em;line-height:1.2}.welcome-row p,.page-head p{margin:0;color:var(--muted)}.wave{display:inline-block;color:var(--violet);font-size:24px;transform:rotate(20deg);margin-left:3px}.welcome-actions{display:flex;gap:10px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:21px}.metric-card{background:var(--panel);border:1px solid var(--line);border-radius:15px;padding:18px 20px 16px;box-shadow:var(--shadow);position:relative;overflow:hidden}.metric-card:after{content:'';position:absolute;width:80px;height:80px;border-radius:50%;right:-25px;top:-27px;opacity:.22}.accent-violet:after{background:var(--violet-2)}.accent-mint:after{background:#54d695}.accent-yellow:after{background:#e7bb43}.accent-coral:after{background:#fa6d68}.metric-top{display:flex;justify-content:space-between;color:#85838b;font-size:11px;font-weight:600}.metric-icon{display:grid;place-items:center;width:27px;height:27px;background:#f2edff;color:var(--violet);border-radius:8px;font-weight:900;font-size:14px}.accent-mint .metric-icon{background:#e9fff4;color:#299261}.accent-yellow .metric-icon{background:#fff7d9;color:#b08310}.accent-coral .metric-icon{background:#fff0ed;color:#c75951}.metric-card>strong{display:block;font-size:28px;letter-spacing:-.06em;margin:12px 0 10px}.unit{font-size:17px;margin-left:2px}.metric-foot{display:flex;align-items:center;gap:7px}.metric-foot small{font-size:10px;color:#aaa}.trend{font-size:10px;font-weight:800}.trend.up{color:#289463}.trend.neutral{color:#8b8790}.dashboard-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:20px;margin-bottom:20px}.panel{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow)}.panel-heading{display:flex;justify-content:space-between;align-items:flex-start;padding:20px 22px 16px}.panel-heading h2{font-size:15px;margin:0 0 3px;letter-spacing:-.02em}.panel-heading p{font-size:11px;color:#a09da3;margin:0}.panel-heading>a{display:flex;gap:6px;align-items:center;color:var(--violet);font-size:11px;font-weight:800;margin-top:3px}.panel-heading>a .icon{width:14px}.activity-row{display:flex;align-items:center;gap:12px;padding:12px 22px;border-top:1px solid #f1efed;transition:.16s}.activity-row:hover{background:#fbfaff}.activity-thumb{width:37px;height:37px;border-radius:10px;display:grid;place-items:center;font-weight:800;font-size:18px;flex:none}.activity-thumb.violet{background:#efe9ff;color:var(--violet)}.activity-thumb.sky{background:#e9f7ff;color:#3997c4}.activity-thumb.amber{background:#fff6d7;color:#b18419}.activity-thumb.rose{background:#ffebeb;color:#c65e64}.activity-info{min-width:0;flex:1}.activity-info b,.activity-info small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-info b{font-size:12px}.activity-info small{font-size:10px;color:#9a979f;margin-top:2px}.activity-status{font-size:9px;font-weight:800;border-radius:5px;padding:4px 7px;white-space:nowrap}.activity-status.published{color:#248358;background:#e9fff3}.activity-status.draft{color:#8e6911;background:#fff6d7}.activity-time{font-size:10px;color:#aba8ac;width:80px}.row-arrow{color:#bbb;font-size:18px}.count-badge{background:#f0eaff;color:var(--violet);font-weight:800;font-size:11px;padding:4px 8px;border-radius:8px}.todo-list{padding:0 22px 12px}.todo-item{display:flex;align-items:center;gap:10px;border-top:1px solid #f1efed;padding:13px 0}.todo-icon{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;font-weight:900;font-size:12px;flex:none}.todo-icon.coral{background:#ffefec;color:#c4534c}.todo-icon.yellow{background:#fff7da;color:#a17712}.todo-icon.mint{background:#e6fff2;color:#26865a}.todo-item>div{flex:1}.todo-item b,.todo-item small{display:block}.todo-item b{font-size:11px}.todo-item small{font-size:10px;color:#aaa;margin-top:2px}.todo-item a{color:var(--violet);font-size:10px;font-weight:800}.bottom-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:20px}.chart-panel,.class-panel{min-height:255px}.chart-panel select{border:1px solid var(--line);border-radius:7px;padding:5px 8px;color:#777;font-size:10px;background:#fff}.chart{display:flex;padding:4px 20px 18px}.chart-y{display:flex;flex-direction:column;justify-content:space-between;height:160px;font-size:9px;color:#b5b0b5;padding-bottom:17px;width:35px}.chart-area{flex:1;position:relative;height:180px}.grid-lines{position:absolute;inset:0 0 18px;display:flex;flex-direction:column;justify-content:space-between}.grid-lines i{border-top:1px dashed #eee9e4}.chart-area svg{position:absolute;left:0;top:0;width:100%;height:160px;overflow:visible}.chart-x{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;color:#aaa;font-size:9px}.class-list{padding:0 22px 10px}.class-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid #f2efed}.class-row>div{flex:1}.class-row b,.class-row small{display:block}.class-row b{font-size:11px}.class-row small{font-size:10px;color:#aaa;margin-top:2px}.class-rate{font-size:11px;color:#2a9162;font-weight:800}.class-avatar{width:33px;height:33px;border-radius:10px;display:grid;place-items:center;font-weight:800;font-size:10px;background:#eee5ff;color:var(--violet)}.class-avatar.mint{background:#dcf8e8;color:#27885b}.class-avatar.yellow{background:#fff2c9;color:#9b751a}.class-panel>.button{margin:7px 22px 20px;width:calc(100% - 44px)}.page-head{align-items:center}.page-head h1{font-size:32px}.page-head .back-link{font-weight:700;color:#76717b;font-size:12px}.tabs{display:flex;gap:28px;border-bottom:1px solid var(--line);margin-bottom:22px}.tabs a{padding:0 0 13px;color:#999;font-weight:700;font-size:12px}.tabs a.active{color:var(--violet);border-bottom:2px solid var(--violet)}.tabs b{background:#f1ece8;color:#888;padding:2px 5px;border-radius:5px;font-size:9px;margin-left:4px}.library-toolbar{display:flex;gap:9px;margin-bottom:22px}.searchbox{display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:0 11px;flex:1;color:#aaa}.searchbox .icon{width:15px}.searchbox input{border:0;outline:0;padding:10px 0;background:transparent;min-width:0;width:100%;font-size:11px}.filter-button{background:#fff;border:1px solid var(--line);border-radius:9px;padding:0 12px;color:#777;font-size:11px}.filter-button span{margin-left:12px;color:#aaa}.library-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px}.library-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow);transition:.18s}.library-card:hover,.creation-card:hover{transform:translateY(-3px);box-shadow:0 12px 25px rgba(41,31,18,.1)}.card-cover{height:120px;padding:15px;position:relative;overflow:hidden}.card-cover:after{content:'✦';position:absolute;font-size:110px;right:-10px;bottom:-40px;opacity:.1}.card-cover span{font-size:9px;font-weight:800;letter-spacing:.1em}.card-cover strong{position:absolute;bottom:10px;left:16px;font-size:35px}.card-body{padding:14px 15px 13px}.card-meta{display:flex;justify-content:space-between;color:#9d99a1;font-size:10px}.more-button{color:#aaa;font-weight:800;letter-spacing:2px}.card-body h3{font-size:13px;margin:8px 0 4px;letter-spacing:-.02em}.card-body p{font-size:10px;color:#aaa;margin:0}.card-footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #f2efed;margin-top:14px;padding-top:11px}.card-footer small{font-size:9px;color:#aaa}.create-card{border:1px dashed #cfc5dd;border-radius:14px;min-height:246px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;color:#70667e;background:#fcfaff}.create-card>span{width:35px;height:35px;border-radius:12px;background:#f0eaff;color:var(--violet);display:grid;place-items:center;margin-bottom:11px}.create-card b{font-size:12px}.create-card small{color:#aaa;font-size:10px;margin-top:5px}.creation-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;max-width:920px}.creation-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:25px;position:relative;min-height:230px;box-shadow:var(--shadow);transition:.18s}.creation-card.selected{border-color:#c8b3f4}.creation-icon{width:43px;height:43px;border-radius:13px;display:grid;place-items:center;font-size:23px;font-weight:800}.creation-icon.violet{background:#efe8ff;color:var(--violet)}.creation-icon.sky{background:#e9f7ff;color:#3b95be}.creation-icon.amber{background:#fff4d0;color:#b18014}.creation-icon.rose{background:#ffebec;color:#c65d65}.creation-card .tag{position:absolute;right:22px;top:25px;font-size:9px;color:var(--violet);font-weight:800;background:#f0eaff;padding:5px 7px;border-radius:5px}.creation-card h2{font-size:18px;margin:20px 0 7px;letter-spacing:-.04em}.creation-card p{color:#85818a;max-width:320px;font-size:12px;margin:0 0 20px}.creation-link{display:flex;gap:6px;align-items:center;color:var(--violet);font-weight:800;font-size:11px}.creation-link .icon{width:14px}.builder-head{display:flex;align-items:center;gap:25px;margin-bottom:26px}.builder-title{display:flex;align-items:center;gap:10px;flex:1}.builder-title h1{margin:4px 0 0;font-size:20px}.builder-actions{display:flex;gap:8px}.builder-layout{display:grid;grid-template-columns:1fr 290px;gap:20px}.builder-main{min-width:0}.builder-card,.question-editor{background:#fff;border:1px solid var(--line);border-radius:15px;padding:22px;box-shadow:var(--shadow);margin-bottom:16px}.large-label{font-weight:800;font-size:12px}.large-label input{display:block;width:100%;margin-top:9px;border:0;border-bottom:1px solid var(--line);font-size:21px;padding:5px 0 12px;outline:none}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:20px}.two-col label{font-size:11px;color:#777;font-weight:700}.two-col select{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:8px;padding:9px;background:#fff;color:var(--ink);font-size:12px}.question-top{display:flex;align-items:center;gap:10px;margin-bottom:18px}.question-number{width:30px;height:30px;border-radius:9px;background:var(--violet);color:#fff;display:grid;place-items:center;font-weight:800;font-size:11px}.question-top div{flex:1}.question-top b,.question-top small{display:block}.question-top b{font-size:12px}.question-top small{font-size:10px;color:#aaa}.question-editor textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:12px;resize:vertical;outline:none;font-size:13px}.option-editor{margin-top:12px;display:grid;gap:8px}.option-editor label{display:flex;align-items:center;gap:8px}.option-editor label>span{display:grid;place-items:center;width:26px;height:26px;border-radius:7px;background:#f5f3f0;color:#908b90;font-weight:800;font-size:11px}.option-editor label.correct-option>span{background:#e4faed;color:#248657}.option-editor label input[type=text],.option-editor label input:not([type]){flex:1;border:1px solid var(--line);border-radius:7px;padding:8px;font-size:11px;outline:none}.option-editor input[type=radio]{accent-color:var(--violet)}.add-option,.add-question{color:var(--violet);font-weight:800;font-size:11px;padding-top:7px;text-align:left}.add-question{width:100%;text-align:center;border:1px dashed #cfc5dd;border-radius:10px;padding:13px;background:#fcfaff}.builder-side-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:19px;box-shadow:var(--shadow)}.builder-side-card h3{font-size:14px;margin:0 0 15px}.switch-row{display:flex;align-items:center;gap:10px;padding:13px 0;border-top:1px solid #f2efed}.switch-row>span{flex:1}.switch-row b,.switch-row small{display:block}.switch-row b{font-size:11px}.switch-row small{font-size:9px;color:#aaa;margin-top:3px}.switch-row input{display:none}.switch-row i{width:33px;height:19px;border-radius:20px;background:#dcd9d6;position:relative}.switch-row i:after{content:'';width:15px;height:15px;border-radius:50%;background:#fff;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #aaa;transition:.2s}.switch-row input:checked+i{background:var(--violet)}.switch-row input:checked+i:after{left:16px}.builder-tip{background:#f3edff;border:1px solid #dfd2ff;border-radius:15px;padding:15px;margin-top:15px;color:#5e4e7b}.builder-tip span{font-size:18px}.builder-tip b{font-size:11px;margin-left:6px}.builder-tip p{font-size:10px;margin:6px 0 0;color:#7b6e94}.session-choice{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;max-width:900px}.session-choice-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:26px;box-shadow:var(--shadow)}.session-choice-card.featured{border:2px solid #d4c5f8}.session-icon{width:47px;height:47px;display:grid;place-items:center;border-radius:14px;font-size:24px;font-weight:800}.session-icon.violet{color:var(--violet);background:#efe9ff}.session-icon.mint{color:#25875a;background:#e4fbef}.session-choice-card h2{font-size:19px;margin:18px 0 7px}.session-choice-card p{color:#85818a;font-size:12px}.session-choice-card ul{list-style:none;padding:0;margin:19px 0 25px;display:grid;gap:10px;color:#6f6a75;font-size:11px}.session-choice-card li:before{content:'✓';color:#2e9967;font-weight:800;margin-right:8px}.host-banner{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.host-banner h1{font-size:25px;margin:7px 0 3px}.host-banner p{margin:0;color:var(--muted)}.join-code-card{background:var(--violet);color:#fff;border-radius:17px;padding:24px;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:18px;margin-bottom:20px;position:relative;overflow:hidden}.join-code-card:after{content:'✦';position:absolute;right:160px;bottom:-45px;opacity:.12;font-size:150px}.join-code-card>span{font-size:10px;letter-spacing:.14em;font-weight:800;opacity:.7}.join-code-card strong{font-size:36px;letter-spacing:.08em}.join-code-card small{grid-column:1/-1;opacity:.7;font-size:10px}.join-code-card .button{background:#fff;color:var(--violet);z-index:1}.host-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:20px}.waiting-panel,.settings-panel{padding-bottom:20px}.live-pill{font-size:10px;color:#2d9365;background:#e8fff2;border-radius:9px;padding:5px 8px;font-weight:800}.live-pill i{display:inline-block;width:6px;height:6px;background:#34b978;border-radius:50%;margin-right:4px}.participant-list{padding:0 22px 15px}.participant{display:flex;align-items:center;gap:10px;padding:11px 0;border-top:1px solid #f2efed}.participant b{font-size:11px}.participant small{font-size:10px;color:#aaa;margin-left:auto}.participant .check{font-size:12px;color:#288d5c}.participant.ghost{color:#aaa;font-size:11px}.waiting-panel>.button{margin:0 22px;width:calc(100% - 44px)}.settings-panel{padding:0 22px 20px}.settings-panel h2{font-size:15px;padding:20px 0 4px;margin:0}.host-note{display:flex;gap:9px;background:#faf4dc;border-radius:10px;padding:11px;margin-top:15px;color:#856b22}.host-note span{color:#b68b18}.host-note p{font-size:10px;margin:0}.class-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:20px}.class-big{border-radius:15px;padding:18px;color:#342f3b;min-height:190px;box-shadow:var(--shadow);position:relative;overflow:hidden}.class-big:after{content:'✦';position:absolute;right:-14px;bottom:-35px;font-size:125px;opacity:.09}.class-big.violet{background:#e8dcff}.class-big.mint{background:#d7f8e8}.class-big.yellow{background:#fff0b8}.class-big-top{display:flex;justify-content:space-between}.class-avatar.large{width:42px;height:42px;border-radius:12px;background:rgba(255,255,255,.6);color:inherit}.class-big h2{font-size:18px;margin:22px 0 2px}.class-big p{margin:0;font-size:10px;opacity:.7}.class-big-foot{display:flex;justify-content:space-between;margin-top:22px;font-size:10px}.class-big-foot b{font-size:11px}.progress{height:5px;background:rgba(255,255,255,.65);border-radius:8px;margin-top:8px}.progress i{height:100%;display:block;background:#6d28d9;border-radius:8px}.mint .progress i{background:#2a9f69}.yellow .progress i{background:#c99116}.class-add{border:1px dashed #cfc5dd;border-radius:15px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;color:#796d89;min-height:190px}.class-add>span{width:37px;height:37px;border-radius:11px;background:#f0eaff;color:var(--violet);display:grid;place-items:center;margin-bottom:10px}.class-add b{font-size:12px}.class-add small{font-size:10px;color:#aaa;margin-top:4px}.class-table{overflow:hidden}.class-table table,.student-report table{width:100%;border-collapse:collapse;text-align:left;font-size:11px}.class-table th,.student-report th{font-size:10px;color:#999;font-weight:700;padding:12px 22px;background:#fbfaf8}.class-table td,.student-report td{padding:14px 22px;border-top:1px solid #f1efed;color:#6e6b71}.rate-good{color:#2d9664;font-weight:800}.rate-warning{color:#ba7b1e;font-weight:800}.status-live{font-size:9px;color:#2a8d5c;background:#e8fff1;padding:4px 7px;border-radius:5px;font-weight:800}.report-filters{display:flex;gap:8px;align-items:center;margin:-9px 0 22px}.report-updated{margin-left:auto;font-size:10px;color:#aaa}.report-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:20px}.report-metrics>div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 19px;box-shadow:var(--shadow)}.report-metrics span,.report-metrics strong,.report-metrics b{display:block}.report-metrics span{font-size:10px;color:#8b878e}.report-metrics strong{font-size:26px;letter-spacing:-.06em;margin:9px 0}.report-metrics strong span{display:inline;font-size:15px;color:#999}.report-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:20px;margin-bottom:20px}.report-chart{min-height:270px}.legend{display:flex;gap:10px;font-size:10px;color:#777}.legend i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px}.violet-dot{background:var(--violet)}.mint-dot{background:#39b377}.bar-chart{height:190px;padding:15px 24px 10px}.bars{height:100%;display:flex;align-items:flex-end;justify-content:space-around;border-bottom:1px solid #eee;gap:18px}.bars>div{height:100%;display:flex;gap:4px;align-items:flex-end;position:relative;flex:1}.bars i{width:50%;display:block;border-radius:5px 5px 0 0;background:#b99df5}.bars i:nth-child(2){background:#9ce5c1}.bars span{position:absolute;bottom:-22px;font-size:9px;color:#aaa;left:50%;transform:translateX(-50%)}.focus-panel{padding-bottom:18px}.focus-list{padding:0 22px 10px}.focus-list>div{display:flex;align-items:center;gap:9px;padding:10px 0;border-top:1px solid #f2efed}.focus-num{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;font-size:9px;font-weight:800}.focus-num.coral{background:#ffebe8;color:#c64f4a}.focus-num.yellow{background:#fff5d2;color:#a67a17}.focus-num.sky{background:#e7f6ff;color:#3d88ae}.focus-list>div>div{flex:1}.focus-list b,.focus-list small{display:block}.focus-list b{font-size:10px}.focus-list small{font-size:9px;color:#aaa}.focus-rate{font-size:10px;font-weight:800;color:#b76b58}.focus-panel>.button{margin:7px 22px 0;width:calc(100% - 44px)}.student-report{overflow:hidden}.searchbox.compact{flex:none;width:170px}.table-person{display:flex;align-items:center;gap:8px}.table-person .avatar{width:25px;height:25px;border-radius:8px;font-size:8px}.mini-progress{height:5px;width:90px;background:#eee;border-radius:9px}.mini-progress i{display:block;height:100%;background:#6d28d9;border-radius:9px}.mini-progress.warning i{background:#d5962b}.empty-state{text-align:center;background:#fff;border:1px dashed #d9d1e3;border-radius:18px;padding:90px 20px;max-width:700px;margin:45px auto}.empty-mark{font-size:42px;color:var(--violet);margin-bottom:15px}.empty-state h2{font-size:21px;margin:0 0 7px}.empty-state p{color:#8e8a91;font-size:12px;margin:0 auto 20px;max-width:430px}.toast{position:fixed;top:92px;right:32px;z-index:10;background:#25222b;color:#fff;padding:12px 16px;border-radius:10px;box-shadow:0 10px 25px #0002;font-size:11px;animation:slideIn .3s ease}.toast.error{background:#b84945}@keyframes slideIn{from{transform:translateY(-10px);opacity:0}to{transform:none;opacity:1}}.public-wrap{min-height:100vh;padding:32px 6vw}.public-brand{margin:0}.auth-card{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);width:460px;margin:70px calc(13vw + 120px) 0 13vw;padding:42px;position:relative;z-index:2}.auth-kicker{color:var(--violet);font-weight:800;font-size:10px;letter-spacing:.13em}.auth-card h1{font-size:30px;line-height:1.2;letter-spacing:-.06em;margin:12px 0 9px}.auth-card>p{color:#87838a;font-size:12px;margin:0 0 26px}.stack-form{display:grid;gap:14px}.stack-form label{font-size:11px;font-weight:800;color:#6c6770}.stack-form input{display:block;width:100%;margin-top:6px;border:1px solid #e3ded9;border-radius:8px;padding:12px;outline:0;font-size:12px}.stack-form input:focus{border-color:#aa90e7;box-shadow:0 0 0 3px #efe8ff}.demo-callout{background:#faf4dc;padding:11px 13px;border-radius:9px;margin-top:15px}.demo-callout b,.demo-callout span{display:block}.demo-callout b{font-size:10px;color:#8c691c}.demo-callout span{font-size:10px;color:#9b8b5e;margin-top:2px}.auth-switch{text-align:center;font-size:11px!important;margin:22px 0 0!important}.auth-switch a{color:var(--violet);font-weight:800}.auth-foot{text-align:center;color:#b0abb0;font-size:9px;margin-top:25px}.auth-aside{position:fixed;right:7vw;top:19vh;width:330px;height:440px;background:#e8dcff;border-radius:50% 50% 43% 57%;overflow:hidden}.aside-orbit{position:absolute;border:1px solid #fff8;width:410px;height:410px;left:-35px;top:45px;border-radius:50%;opacity:.65}.aside-copy{position:absolute;left:56px;bottom:70px;width:220px}.aside-copy .eyebrow{color:#8874b4}.aside-copy h2{font-size:25px;line-height:1.18;letter-spacing:-.06em;margin:10px 0}.aside-copy p{font-size:11px;color:#7d6b9d}.aside-note{position:absolute;background:#fff;border-radius:11px;box-shadow:0 8px 20px #563a941c;padding:10px 13px;display:flex;gap:8px;align-items:center}.aside-note span{width:24px;height:24px;border-radius:7px;background:#e9fff2;color:#268c5c;display:grid;place-items:center}.aside-note b,.aside-note small{display:block}.aside-note b{font-size:10px}.aside-note small{font-size:9px;color:#aaa}.note-one{top:80px;right:-10px}.note-two{top:170px;left:-19px}.note-two span{background:#fff4d1;color:#b17b12}.join-page{min-height:calc(100vh - 90px);display:flex;align-items:center;justify-content:center;gap:100px}.join-panel{width:390px}.join-panel h1{font-size:35px;letter-spacing:-.07em;margin:10px 0 5px}.join-panel>p{color:#8b878e;margin:0 0 25px}.join-form{display:grid;gap:10px}.join-form input{border:1px solid var(--line);border-radius:9px;padding:14px;outline:0}.code-input{font-size:24px;letter-spacing:.17em;font-weight:800;text-align:center}.name-input{font-size:12px}.join-tip{display:flex;gap:10px;margin-top:18px;padding:12px;background:#fff9df;border-radius:10px;color:#8a721e}.join-tip b,.join-tip span{display:block;font-size:10px}.join-tip b{font-weight:800}.join-visual{width:350px;height:320px;background:#d7f8e8;border-radius:48% 52% 45% 55%;position:relative;display:grid;place-items:center;overflow:hidden}.join-big{font-size:170px;color:#2ca16a;opacity:.7}.join-slogan{position:absolute;bottom:35px;left:45px;font-size:18px;line-height:1.2;letter-spacing:-.04em}.join-slogan b{color:#228d5c}.floating-card{position:absolute;top:35px;right:-20px;background:#fff;display:flex;gap:8px;align-items:center;padding:10px 13px;border-radius:10px;box-shadow:0 8px 20px #287d501a}.floating-card b,.floating-card small{display:block}.floating-card b{font-size:10px}.floating-card small{font-size:8px;color:#aaa}.check{color:#2a9862;font-weight:900}.play-page{max-width:960px;margin:auto;padding:24px}.play-top{display:flex;align-items:center;gap:18px;margin-bottom:30px}.back-link{font-size:11px;font-weight:800;color:#777}.play-code{margin:auto;font-size:10px;color:#999;letter-spacing:.1em}.play-code b{color:var(--violet);font-size:14px;margin-left:4px}.student-chip{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:700}.student-chip .avatar{width:26px;height:26px;font-size:8px}.quiz-wrap{max-width:750px;margin:auto}.quiz-progress{display:flex;align-items:center;gap:12px;font-size:11px;color:#888;margin-bottom:20px}.quiz-progress>div{height:7px;background:#ede9e6;border-radius:8px;flex:1}.quiz-progress i{display:block;height:100%;background:var(--violet);border-radius:8px}.quiz-progress b{color:var(--coral)}.quiz-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:38px;box-shadow:var(--shadow);text-align:center}.quiz-card h1{font-size:28px;letter-spacing:-.055em;line-height:1.25;max-width:570px;margin:13px auto 5px}.quiz-hint{font-size:11px;color:#aaa}.answer-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:28px}.answer-option{display:flex;align-items:center;gap:12px;text-align:left;border:1px solid var(--line);border-radius:11px;padding:15px;background:#fff;font-weight:700;font-size:12px;cursor:pointer;transition:.16s}.answer-option:hover{border-color:#ad95e8;background:#fbf9ff;transform:translateY(-2px)}.answer-option span{width:27px;height:27px;border-radius:8px;background:#f3f1ee;color:#8b8790;display:grid;place-items:center;font-weight:800}.quiz-footer{display:flex;justify-content:space-between;color:#aaa;font-size:10px;margin-top:15px}.quiz-footer b{color:var(--violet)}.result-card{max-width:570px;background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);text-align:center;padding:50px 40px;margin:50px auto}.result-confetti{font-size:45px;color:var(--violet)}.result-card h1{font-size:30px;letter-spacing:-.07em;margin:12px 0 4px}.result-card p{color:#89848d;font-size:12px}.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:28px 0}.result-grid div{background:#faf8f5;padding:14px;border-radius:10px}.result-grid strong,.result-grid span{display:block}.result-grid strong{font-size:22px;color:var(--violet)}.result-grid span{font-size:10px;color:#aaa;margin-top:2px}
@media(max-width:1100px){.sidebar{width:220px}.main{margin-left:220px;width:calc(100% - 220px)}.content{padding:30px 25px}.topbar{padding:0 25px}.library-grid{grid-template-columns:repeat(3,1fr)}.class-cards{grid-template-columns:repeat(2,1fr)}.auth-card{margin-left:8vw}.auth-aside{right:3vw;width:285px}.join-page{gap:45px}}
@media(max-width:760px){.sidebar{width:66px;padding:22px 9px}.brand{padding:0 9px;margin-bottom:35px}.brand>span:last-child,.sidebar-label,.nav-item span:not(.ai-pill):not(.new-badge),.storage-card,.profile-mini>div:not(.avatar),.profile-mini form{display:none}.nav-item{justify-content:center;padding:12px 8px}.nav-item .icon{width:20px;height:20px}.ai-pill{display:block!important}.new-badge{display:none}.profile-mini{justify-content:center;border:0;padding:10px 0}.main{margin-left:66px;width:calc(100% - 66px)}.topbar{height:65px;padding:0 15px}.crumb,.join-link{display:none}.mobile-brand{display:block;font-size:17px;letter-spacing:-.05em}.mobile-brand .brand-mark{display:inline-grid;width:25px;height:25px;font-size:16px;border-radius:8px;margin-right:4px}.top-actions{gap:5px}.top-icon{padding:4px}.top-actions .button.small{font-size:0;padding:10px}.top-actions .button.small .icon{width:17px}.content{padding:25px 15px 45px}.welcome-row,.page-head{align-items:flex-start;gap:18px;flex-direction:column}.welcome-row h1,.page-head h1{font-size:25px}.welcome-actions{width:100%}.welcome-actions .button{flex:1}.metric-grid{grid-template-columns:repeat(2,1fr);gap:10px}.metric-card{padding:14px}.metric-card>strong{font-size:25px}.dashboard-grid,.bottom-grid,.report-grid,.host-grid{grid-template-columns:1fr}.activity-time{display:none}.library-grid{grid-template-columns:repeat(2,1fr);gap:11px}.card-cover{height:95px}.card-body{padding:11px}.creation-grid,.session-choice,.builder-layout{grid-template-columns:1fr}.builder-side{order:-1}.builder-head{flex-wrap:wrap;gap:10px}.builder-title{order:3;flex-basis:100%}.builder-actions{margin-left:auto}.builder-actions .button{font-size:10px;padding:9px}.join-code-card{grid-template-columns:1fr 1fr}.join-code-card strong{font-size:27px}.join-code-card .button{grid-column:2;grid-row:1}.join-code-card small{grid-column:1/-1}.class-cards{grid-template-columns:1fr 1fr}.class-table{overflow:auto}.report-filters{flex-wrap:wrap}.report-updated{width:100%;margin:3px 0}.report-metrics{grid-template-columns:repeat(2,1fr);gap:10px}.report-metrics>div{padding:13px}.report-metrics strong{font-size:22px}.student-report{overflow:auto}.student-report table{min-width:650px}.auth-card{width:100%;max-width:450px;margin:45px auto 0;padding:28px}.auth-aside{display:none}.join-page{display:block;padding-top:55px}.join-panel{width:100%;max-width:400px;margin:auto}.join-visual{margin:45px auto 0;width:300px;height:250px}.floating-card{right:-32px}.play-page{padding:20px 10px}.play-top{gap:7px;margin-bottom:22px}.play-code{font-size:9px}.quiz-card{padding:25px 16px}.quiz-card h1{font-size:23px}.answer-grid{grid-template-columns:1fr}.quiz-footer{flex-direction:column;gap:5px}.result-card{padding:38px 20px;margin:35px auto}.page-head .button{width:100%}.searchbox{min-height:37px}.library-toolbar{flex-wrap:wrap}.library-toolbar .searchbox{flex-basis:100%}.filter-button{padding:9px 8px;flex:1;font-size:10px}.two-col{grid-template-columns:1fr}}

/* Dữ liệu thật từ MySQL */
.db-class-panel,.live-data-panel{margin:0 0 22px;border:1px solid rgba(109,40,217,.14);background:linear-gradient(135deg,#fff,#fbfaff)}
.db-class-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:0 22px 22px}.db-class-row{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid #ece8f5;border-radius:15px;background:#fff}.db-class-row small{display:block;color:#8b8498;margin-top:4px}.participant-strip{display:flex;flex-wrap:wrap;gap:10px;padding:0 22px 22px}.participant-mini{display:flex;align-items:center;gap:8px;border:1px solid #ece8f5;border-radius:999px;background:#fff;padding:7px 12px 7px 7px;color:#50485d}.participant-mini .avatar{width:28px;height:28px;font-size:10px}.participant-mini b{color:#6d28d9;font-size:12px;margin-left:3px}@media(max-width:800px){.db-class-list{grid-template-columns:1fr}.participant-strip{padding:0 14px 14px}.db-class-panel,.live-data-panel{margin-bottom:14px}}

.activity-detail-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,.8fr);gap:20px}.question-stack{padding:22px}.detail-question{padding:20px 0;border-top:1px solid #eeeaf4}.detail-question:first-of-type{border-top:0}.detail-question .question-top{display:flex;gap:14px;align-items:flex-start}.detail-question .question-top b{display:block;font-size:17px;color:#2c2536}.detail-question small{display:block;color:#91899d;margin-top:7px}.detail-options{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0 0 49px}.detail-option{padding:12px;border:1px solid #eae6f1;border-radius:12px;color:#5b5366;background:#fff}.detail-option b{display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center;border-radius:7px;background:#f1eef7;margin-right:8px;font-size:12px}.detail-option.correct{border-color:#a7e2cf;background:#f1fff9;color:#23765b}.detail-option.correct b{background:#48c69c;color:#fff}.activity-side{padding:22px;height:max-content;position:sticky;top:90px}.activity-side h2{margin-top:0}.side-stat{display:flex;justify-content:space-between;gap:12px;padding:15px 0;border-top:1px solid #eeeaf4;color:#81798d}.side-stat b{color:#332a3d;text-align:right}.side-stat .activity-status{padding:4px 8px}.activity-side .button{margin-top:12px}@media(max-width:800px){.activity-detail-grid{grid-template-columns:1fr}.activity-side{position:static}.detail-options{grid-template-columns:1fr;margin-left:0}}

.session-config{padding:20px;margin-bottom:20px}.session-config label{font-weight:700;color:#554c60}.session-config select{margin-top:8px}.due-field{display:block;margin:15px 0;color:#625a6e;font-size:13px;font-weight:700}.due-field input{margin-top:7px}.session-choice-card form{margin-top:14px}

.question-settings{display:grid;grid-template-columns:1.5fr .7fr .9fr;gap:10px;margin:14px 0}.question-settings label{font-size:12px;color:#6f667a;font-weight:700}.question-settings input,.question-settings select{margin-top:6px}.question-tools{margin-left:auto;display:flex;gap:4px}.question-tools button{border:0;background:#f3f0f7;color:#6c6277;border-radius:7px;width:26px;height:26px;cursor:pointer}.question-tools button:hover{background:#e7e0f4;color:#6d28d9}@media(max-width:680px){.question-settings{grid-template-columns:1fr}.question-tools{flex-wrap:wrap}}

.edit-activity-form{padding:22px;margin-top:20px}.edit-question{border-top:1px solid #eeeaf4;padding:18px 0}.edit-question textarea{margin-bottom:10px}.edit-question-grid{display:grid;grid-template-columns:1.4fr .7fr .8fr;gap:10px}.edit-question-grid label{font-size:12px;color:#6f667a;font-weight:700}.edit-options{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.edit-options label{display:flex;align-items:center;gap:6px}.edit-options input[type=text],.edit-options input:not([type]){margin:0}@media(max-width:680px){.edit-question-grid,.edit-options{grid-template-columns:1fr}}

.session-config select[multiple]{min-height:90px}.session-config label small{display:block;margin-top:6px;color:#90879d;font-weight:400}.session-list{padding:22px;overflow:auto}.session-list table{min-width:800px}.session-status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:700;background:#f2eff6;color:#6b6174}.session-status.running{background:#e8fff5;color:#217a5d}.session-status.ended{background:#fff0ef;color:#b04b48}.button.tiny{padding:7px 9px;font-size:11px}.empty-inline{text-align:center;padding:35px;color:#8c8496}

.report-filter-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.report-filter-form label{display:flex;flex-direction:column;gap:6px;color:#6f667a;font-size:12px;font-weight:700}.report-filter-form select,.report-filter-form input{min-width:150px}.table-scroll{overflow:auto}.question-report{min-width:0}

.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings-form{padding:22px;display:flex;flex-direction:column;gap:14px}.settings-form label{display:flex;flex-direction:column;gap:7px;color:#6f667a;font-size:12px;font-weight:700}.role-badge{padding:6px 10px;border-radius:999px;background:#f0e9ff;color:#6d28d9;font-size:11px;font-weight:800}.auth-simple{max-width:520px;margin:60px auto}.reset-preview{display:flex;flex-direction:column;gap:6px;margin-top:16px;padding:12px;border:1px dashed #b79be9;border-radius:12px;background:#faf7ff;font-size:12px}.reset-preview a{word-break:break-all;color:#6d28d9}.auth-switch{color:#6d28d9;font-weight:700;font-size:13px}@media(max-width:760px){.settings-grid{grid-template-columns:1fr}}

.host-live-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:15px 0}.host-live-stats>div,.rank-row{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}.host-live-stats span{display:block;color:#948c99;font-size:10px}.host-live-stats strong{display:block;color:var(--violet);font-size:24px;margin-top:5px}.rank-row{display:flex;align-items:center;gap:12px;border:0;border-bottom:1px solid #f1eeeb;border-radius:0;padding:12px 0}.rank-row b{width:24px;height:24px;display:grid;place-items:center;border-radius:7px;background:#f3edff;color:var(--violet)}.rank-row span{flex:1;font-size:12px;font-weight:700}.rank-row strong{font-size:12px;color:var(--violet)}@media(max-width:760px){.host-live-stats{grid-template-columns:1fr 1fr}.host-live-stats>div:last-child{grid-column:1/-1}}
.notification-list{max-width:860px}.notification-row{display:flex;gap:14px;align-items:flex-start;padding:17px 22px;border-top:1px solid #f1efed;color:inherit;text-decoration:none}.notification-row:hover{background:#fbf9ff}.notification-icon{width:32px;height:32px;border-radius:10px;background:#e9fff2;color:#248b5c;display:grid;place-items:center;font-weight:900}.notification-row b,.notification-row small,.notification-row em{display:block}.notification-row b{font-size:12px}.notification-row small{font-size:11px;color:#78717f;margin-top:4px}.notification-row em{font-size:10px;color:#aaa;margin-top:7px;font-style:normal}
.smtp-settings{grid-column:1/-1}.smtp-settings .panel-heading{margin-bottom:2px}.field-help{font-size:10px;color:#999;font-weight:400}.settings-actions{display:flex;gap:10px;align-items:center}.settings-actions form{margin:0}@media(max-width:760px){.smtp-settings{grid-column:auto}.settings-actions{flex-wrap:wrap}}
.invite-student-form{display:flex;gap:7px;align-items:center;margin-top:8px}.invite-student-form input{max-width:240px;padding:7px 9px;border:1px solid #e6e1ec;border-radius:7px;font-size:10px}.invite-student-form .button{white-space:nowrap}@media(max-width:760px){.invite-student-form{flex-wrap:wrap}.invite-student-form input{max-width:100%;width:100%}}

.preview-modal{position:fixed;inset:0;z-index:30;display:grid;place-items:center}.preview-backdrop{position:absolute;inset:0;background:#211b2dcc}.preview-dialog{position:relative;width:min(760px,calc(100% - 28px));max-height:88vh;overflow:auto;background:#faf9f7;border-radius:18px;box-shadow:0 25px 70px #0005;padding:22px}.preview-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.preview-head h2{margin:7px 0 0;font-size:22px}.preview-close{border:0;background:#eee8f3;border-radius:9px;width:32px;height:32px;font-size:22px;cursor:pointer}.preview-content .question-stack{box-shadow:none;border:0}.preview-content .panel-heading{display:none}.preview-content .detail-question{background:#fff;margin-bottom:10px;border-radius:12px;padding:16px}.preview-content .detail-option.correct{border-color:#a8e5c4;background:#effff5}

.member-manage-link{display:inline-block;margin-top:6px;color:var(--violet);font-size:10px;font-weight:800;text-decoration:none}.member-panel{max-width:900px}.member-list{padding:0 22px 10px}.member-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-top:1px solid #f1efed}.member-row>div{flex:1}.member-row b,.member-row small{display:block}.member-row b{font-size:12px}.member-row small{font-size:10px;color:#999;margin-top:4px}.member-row .avatar{width:32px;height:32px;font-size:9px}.member-row form{margin:0}@media(max-width:760px){.member-row{align-items:flex-start;flex-wrap:wrap}.member-row form{margin-left:44px}}

.student-class-tools{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 20px}.join-class-form{display:flex;align-items:center;gap:10px;padding:16px}.join-class-form>div{flex:1}.join-class-form h2{font-size:14px;margin:0 0 4px}.join-class-form p{font-size:10px;color:#999;margin:0}.join-class-form input{width:180px;padding:10px;border:1px solid var(--line);border-radius:8px;text-transform:uppercase}.joined-classes{padding:0 16px}.joined-class-list{display:flex;gap:9px;flex-wrap:wrap;padding:0 0 16px}.joined-class-list span{background:#f8f5ff;border-radius:9px;padding:9px 11px}.joined-class-list b,.joined-class-list small{display:block}.joined-class-list b{font-size:11px}.joined-class-list small{font-size:9px;color:#999;margin-top:3px}.class-row{text-decoration:none;color:inherit}@media(max-width:800px){.student-class-tools{grid-template-columns:1fr}.join-class-form{flex-wrap:wrap}.join-class-form input{width:100%}}

.calendar-toolbar{display:flex;align-items:center;justify-content:center;gap:18px;margin:0 0 18px}.calendar-toolbar strong{font-size:18px;min-width:90px;text-align:center}.calendar-panel{max-width:980px}.calendar-event-list{padding:0 22px 20px}.calendar-event{display:flex;gap:16px;padding:16px 0;border-top:1px solid #f0edeb}.calendar-event.overdue{border-left:4px solid var(--coral);padding-left:12px}.calendar-date{width:50px;height:54px;border-radius:12px;background:#f1eaff;color:var(--violet);display:grid;place-items:center;align-content:center}.calendar-date b{font-size:20px;line-height:20px}.calendar-date small{font-size:9px;text-transform:uppercase}.calendar-event-body{display:flex;justify-content:space-between;gap:16px;flex:1}.calendar-event-body h3{margin:5px 0;font-size:15px}.calendar-event-body p{font-size:10px;color:#999;margin:0}.calendar-event-actions{display:flex;align-items:center;gap:10px}.calendar-event-actions .session-status{white-space:nowrap}.calendar-event-actions a{text-decoration:none}@media(max-width:700px){.calendar-toolbar{gap:7px}.calendar-toolbar .button{font-size:9px;padding:8px}.calendar-event-body{display:block}.calendar-event-actions{margin-top:10px;justify-content:flex-start}}

.flashcard-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}.flashcard-summary .panel{padding:18px}.flashcard-summary span,.flashcard-summary small{display:block;color:#999;font-size:10px}.flashcard-summary strong{display:block;color:var(--violet);font-size:28px;margin:5px 0}.flashcard-library-panel{max-width:1050px}.flashcard-library-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:0 20px 24px}.flashcard-library-card{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}.flashcard-card-top{height:92px;padding:14px;display:flex;justify-content:space-between;align-items:flex-start;background:linear-gradient(135deg,#efe5ff,#d9f8e8)}.flashcard-cover{font-size:48px;color:var(--violet);line-height:1}.flashcard-card-body{padding:16px}.flashcard-card-body h2{font-size:17px;margin:6px 0}.flashcard-card-body p{font-size:10px;color:#999;margin:0 0 10px}.flashcard-card-body .progress{margin-bottom:15px}.flashcard-card-actions{display:flex;gap:7px;align-items:center}.flashcard-card-actions a{text-decoration:none;white-space:nowrap}.flashcard-card-actions .primary{font-size:10px;padding:9px 10px}.flashcard-card-actions .tiny{font-size:9px;padding:8px}@media(max-width:900px){.flashcard-library-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.flashcard-summary{grid-template-columns:1fr 1fr}.flashcard-summary .panel:last-child{grid-column:1/-1}.flashcard-library-grid{grid-template-columns:1fr}}

.lesson-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}.lesson-summary .panel{padding:18px}.lesson-summary span,.lesson-summary small{display:block;color:#999;font-size:10px}.lesson-summary strong{display:block;color:var(--violet);font-size:28px;margin:5px 0}.lesson-library-panel{max-width:1050px}.lesson-library-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:0 20px 24px}.lesson-library-card{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}.lesson-library-cover{height:105px;padding:15px;font-size:50px;color:#3d88ae;background:linear-gradient(135deg,#e7f6ff,#efe5ff);display:flex;justify-content:space-between;align-items:flex-start}.lesson-library-body{padding:16px}.lesson-library-body h2{font-size:17px;margin:6px 0}.lesson-library-body p{font-size:10px;color:#999;margin:0 0 10px}.lesson-library-body .progress{margin-bottom:15px}.lesson-library-actions{display:flex;gap:7px;align-items:center}.lesson-library-actions a{text-decoration:none;white-space:nowrap}.lesson-library-actions .primary{font-size:10px;padding:9px 10px}.lesson-library-actions .tiny{font-size:9px;padding:8px}@media(max-width:900px){.lesson-library-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.lesson-summary{grid-template-columns:1fr 1fr}.lesson-summary .panel:last-child{grid-column:1/-1}.lesson-library-grid{grid-template-columns:1fr}}

.video-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}.video-summary .panel{padding:18px}.video-summary span,.video-summary small{display:block;color:#999;font-size:10px}.video-summary strong{display:block;color:var(--violet);font-size:28px;margin:5px 0}.video-library-panel{max-width:1050px}.video-library-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:0 20px 24px}.video-library-card{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}.video-library-cover{height:105px;padding:15px;display:flex;justify-content:space-between;align-items:flex-start;background:linear-gradient(135deg,#ffe7e1,#efe5ff)}.video-library-cover>span:first-child{font-size:48px;color:#cb625a}.video-library-body{padding:16px}.video-library-body h2{font-size:17px;margin:6px 0}.video-library-body p{font-size:10px;color:#999;margin:0 0 15px}.video-library-actions{display:flex;gap:7px;align-items:center}.video-library-actions a{text-decoration:none;white-space:nowrap}.video-library-actions .primary{font-size:10px;padding:9px 10px}.video-library-actions .tiny{font-size:9px;padding:8px}@media(max-width:900px){.video-library-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.video-summary{grid-template-columns:1fr 1fr}.video-summary .panel:last-child{grid-column:1/-1}.video-library-grid{grid-template-columns:1fr}}

.import-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;max-width:900px}.import-form,.import-guide{padding:22px}.import-form{display:grid;gap:14px}.import-form input[type=file]{padding:12px;border:1px dashed #b8a5e8;border-radius:9px;background:#fbf9ff}.import-guide h2{margin-top:0}.import-guide p,.import-guide li{font-size:11px;color:#777;line-height:1.6}.import-guide code{display:block;background:#f5f1ff;padding:12px;border-radius:8px;font-size:9px;overflow:auto;white-space:nowrap;margin:12px 0}.import-guide a{text-decoration:none}@media(max-width:760px){.import-layout{grid-template-columns:1fr}}

/* Giai đoạn 28 — lịch sử học tập học sinh */
.history-panel{max-width:1100px;padding:22px;overflow:auto}.history-panel table{min-width:820px}.history-panel td:first-child b,.history-panel td:first-child small,.table-subtitle{display:block}.table-subtitle{color:#999;font-size:10px;margin-top:4px}.result-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px;max-width:900px}.result-summary-grid .panel{padding:18px}.result-summary-grid span,.result-summary-grid small{display:block;color:#999;font-size:10px}.result-summary-grid strong{display:block;color:var(--violet);font-size:26px;margin:6px 0}.answer-review-panel{max-width:1000px;padding:22px}.answer-review-row{padding:18px 0;border-top:1px solid #f0edeb}.answer-review-top{display:flex;align-items:flex-start;gap:13px}.answer-review-top>div{flex:1}.answer-review-top b,.answer-review-top small{display:block}.answer-review-top b{font-size:14px;color:#332a3d}.answer-review-top small{font-size:10px;color:#999;margin-top:5px}.review-mark{padding:5px 9px;border-radius:999px;font-size:10px;font-weight:800;white-space:nowrap}.review-mark.correct{background:#e8fff5;color:#217a5d}.review-mark.wrong{background:#fff0ef;color:#b04b48}.review-mark.pending{background:#f2eff6;color:#777}.review-answer{display:flex;align-items:center;gap:8px;margin:13px 0 0 47px;padding:11px 13px;background:#faf8fd;border-radius:10px;font-size:11px}.review-answer>span:first-child{color:#999}.review-correct{color:#b04b48;margin-left:auto;font-size:10px}@media(max-width:700px){.result-summary-grid{grid-template-columns:1fr 1fr}.result-summary-grid .panel:last-child{grid-column:1/-1}.answer-review-top{gap:8px}.answer-review-top .question-number{min-width:30px}.review-answer{margin-left:0;flex-wrap:wrap}.review-correct{margin-left:0;width:100%}}

/* Giai đoạn 29 — chi tiết phiên học */
.session-title-link{color:var(--ink);text-decoration:none}.session-title-link:hover{color:var(--violet)}.session-detail-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px;max-width:1100px}.session-detail-meta>div{background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px 18px;box-shadow:var(--shadow)}.session-detail-meta span,.session-detail-meta small{display:block;color:#999;font-size:10px}.session-detail-meta strong{display:block;color:var(--violet);font-size:26px;margin:6px 0}.session-detail-panel{max-width:1100px;padding:0 22px 22px;overflow:hidden}.session-detail-panel .panel-heading{padding-left:0;padding-right:0}.session-detail-panel table{width:100%;border-collapse:collapse;text-align:left;font-size:11px;min-width:780px}.session-detail-panel th{font-size:10px;color:#999;font-weight:700;padding:12px 10px;background:#fbfaf8}.session-detail-panel td{padding:14px 10px;border-top:1px solid #f1efed;color:#6e6b71}.session-detail-panel td:first-child,.session-detail-panel td:nth-child(2){color:#332a3d}.session-detail-panel td small{display:block;color:#999;font-size:10px;margin-top:4px}.rank-number{display:grid;place-items:center;width:25px;height:25px;border-radius:8px;background:#f0eaff;color:var(--violet);font-size:10px;font-weight:800}.session-progress{width:110px;height:6px;background:#eee9e5;border-radius:8px;overflow:hidden}.session-progress i{display:block;height:100%;background:var(--violet);border-radius:8px}.session-detail-panel .empty-state{margin:20px auto;padding:55px 20px;box-shadow:none}.session-detail-panel .session-status{margin-top:2px}@media(max-width:800px){.session-detail-meta{grid-template-columns:repeat(2,1fr);gap:10px}.session-detail-meta>div{padding:13px}.session-detail-meta strong{font-size:22px}.session-detail-panel{padding:0 14px 14px}.session-detail-panel .panel-heading{padding-top:16px}.page-head .welcome-actions{width:auto}}@media(max-width:600px){.session-detail-meta{grid-template-columns:1fr 1fr}.page-head .welcome-actions{width:100%}}

/* Module thông báo nâng cao */
.notification-row{display:flex;align-items:center;gap:12px;border-top:1px solid #f1efed}.notification-row.unread{background:#fbf9ff;border-left:3px solid var(--violet)}.notification-main{display:flex;align-items:flex-start;gap:14px;padding:17px 22px;flex:1;min-width:0}.notification-main:hover{background:#f8f5ff}.notification-read-form{margin:0 18px 0 0;flex:none}.notification-read-form .button{font-size:10px}.notification-row.unread .notification-icon{background:#e9ddff;color:var(--violet)}@media(max-width:600px){.notification-main{padding:14px 12px;gap:10px}.notification-read-form{margin-right:10px}.notification-read-form .button{padding:7px 8px;font-size:9px}.page-head .welcome-actions{align-items:stretch}.page-head .welcome-actions form{width:100%}.page-head .welcome-actions form .button{width:100%}}

/* Module ngân hàng câu hỏi */
.question-bank-filters{display:grid;grid-template-columns:minmax(240px,1fr) 180px 180px auto;gap:10px;align-items:center;margin:-8px 0 20px}.question-bank-filters .searchbox{width:100%;min-height:43px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:0 12px}.question-bank-filters select,.question-bank-create input{border:1px solid var(--line);border-radius:9px;background:#fff;padding:11px 12px;color:var(--ink);font-size:11px}.question-bank-panel{max-width:1100px;overflow:hidden}.question-bank-panel .panel-heading{align-items:center}.select-all-label{font-size:11px;color:#6f6876;font-weight:700;white-space:nowrap}.select-all-label input{accent-color:var(--violet);margin-right:6px}.question-bank-list{border-top:1px solid #f1efed}.question-bank-row{display:flex;align-items:center;gap:13px;padding:15px 22px;border-bottom:1px solid #f1efed;cursor:pointer;transition:.15s}.question-bank-row:hover{background:#fbf9ff}.question-bank-row>input{accent-color:var(--violet);width:16px;height:16px;flex:none}.question-bank-number{display:grid;place-items:center;width:29px;height:29px;border-radius:9px;background:#f0eaff;color:var(--violet);font-size:10px;font-weight:800;flex:none}.question-bank-copy{flex:1;min-width:0}.question-bank-copy b,.question-bank-copy small{display:block}.question-bank-copy b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#332a3d}.question-bank-copy small{font-size:10px;color:#999;margin-top:4px}.question-type-badge{font-size:9px;background:#f6f2ff;color:var(--violet);padding:5px 8px;border-radius:6px;white-space:nowrap}.question-bank-create{max-width:1100px;margin-top:18px;padding:22px;display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap}.question-bank-create>div:first-child{flex:1;min-width:220px}.question-bank-create h2{font-size:15px;margin:0 0 3px}.question-bank-create p{font-size:11px;color:#999;margin:0}.question-bank-create .two-col{flex:2;min-width:400px;margin-top:0}.question-bank-create .two-col label{font-size:11px;color:#777;font-weight:700}.question-bank-create .two-col input{display:block;width:100%;margin-top:6px}.question-bank-create>.button{flex:none}@media(max-width:850px){.question-bank-filters{grid-template-columns:1fr 1fr}.question-bank-filters .searchbox{grid-column:1/-1}.question-bank-create .two-col{min-width:100%;flex-basis:100%}}@media(max-width:600px){.question-bank-filters{grid-template-columns:1fr}.question-bank-filters .button{width:100%}.question-bank-row{padding:13px 12px;gap:8px}.question-bank-copy b{white-space:normal}.question-type-badge{display:none}.question-bank-create{display:block;padding:16px}.question-bank-create .two-col{display:grid;grid-template-columns:1fr;min-width:0;margin:16px 0}.question-bank-create>.button{width:100%}}

/* Module phân tích câu hỏi */
.analytics-filter{display:flex;align-items:flex-end;gap:10px;margin:-8px 0 20px}.analytics-filter label{display:flex;flex-direction:column;gap:6px;color:#6f667a;font-size:11px;font-weight:700}.analytics-filter select{min-width:280px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:11px 12px;color:var(--ink);font-size:11px}.analytics-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:20px;max-width:1100px}.analytics-metrics>div{background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px 19px;box-shadow:var(--shadow)}.analytics-metrics span,.analytics-metrics strong,.analytics-metrics small{display:block}.analytics-metrics span,.analytics-metrics small{font-size:10px;color:#999}.analytics-metrics strong{font-size:26px;color:var(--violet);margin:7px 0}.analytics-metrics strong.metric-warning{color:#c45b4f}.analytics-panel{max-width:1100px;overflow:hidden}.analytics-panel table{width:100%;border-collapse:collapse;text-align:left;font-size:11px;min-width:850px}.analytics-panel th{font-size:10px;color:#999;font-weight:700;padding:12px 10px;background:#fbfaf8}.analytics-panel td{padding:14px 10px;border-top:1px solid #f1efed;color:#6e6b71}.analytics-question{display:flex;align-items:flex-start;gap:9px;max-width:320px}.analytics-question b{font-size:11px;color:#332a3d;line-height:1.45}.analytics-question .question-number{width:24px;height:24px;font-size:9px;flex:none}.analytics-panel td small{display:block;color:#777}.analytics-rate{width:100px;height:6px;background:#eee9e5;border-radius:8px;overflow:hidden;display:inline-block;margin-right:7px;vertical-align:middle}.analytics-rate i{display:block;height:100%;background:#49b982;border-radius:8px}.analytics-rate i.weak{background:#e27b6d}.analytics-badge{display:inline-block;border-radius:6px;padding:5px 8px;font-size:9px;font-weight:800}.analytics-badge.good{background:#e8fff5;color:#217a5d}.analytics-badge.watch{background:#fff7d9;color:#a27416}.analytics-badge.weak{background:#fff0ef;color:#b04b48}.analytics-badge.empty{background:#f2eff6;color:#777}@media(max-width:800px){.analytics-metrics{grid-template-columns:repeat(2,1fr);gap:10px}.analytics-metrics>div{padding:13px}.analytics-metrics strong{font-size:22px}.analytics-filter{flex-wrap:wrap}.analytics-filter label{width:100%}.analytics-filter select{width:100%}}@media(max-width:600px){.analytics-metrics{grid-template-columns:1fr 1fr}.analytics-panel{padding:0 14px 14px}.analytics-panel .panel-heading{padding-left:0;padding-right:0}.analytics-filter .button{width:100%}}

/* Module hồ sơ tiến bộ học sinh */
.student-profile-link{color:var(--ink);text-decoration:none}.student-profile-link:hover{color:var(--violet)}.profile-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:20px;max-width:1100px}.profile-metrics>div{background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px 19px;box-shadow:var(--shadow)}.profile-metrics span,.profile-metrics strong,.profile-metrics small{display:block}.profile-metrics span,.profile-metrics small{font-size:10px;color:#999}.profile-metrics strong{font-size:26px;color:var(--violet);margin:7px 0}.profile-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:20px;max-width:1100px}.profile-subject-panel,.profile-weak-panel{min-height:250px}.profile-subject-list{padding:0 22px 14px}.profile-subject-row{padding:15px 0;border-top:1px solid #f1efed;position:relative}.profile-subject-row:first-child{border-top:0}.profile-subject-row>div:first-child{padding-right:50px}.profile-subject-row b,.profile-subject-row small{display:block}.profile-subject-row b{font-size:12px;color:#332a3d}.profile-subject-row small{font-size:10px;color:#999;margin-top:4px}.profile-subject-row>strong{position:absolute;right:0;top:16px;color:var(--violet);font-size:13px}.profile-subject-row .progress{height:7px;background:#eee9e5;border-radius:8px;overflow:hidden;margin-top:11px}.profile-subject-row .progress i{display:block;height:100%;background:var(--violet);border-radius:8px}.profile-weak-list{padding:0 22px 14px}.profile-weak-list>div{display:flex;align-items:flex-start;gap:10px;padding:13px 0;border-top:1px solid #f1efed}.profile-weak-list>div:first-child{border-top:0}.profile-weak-list>div>div{flex:1}.profile-weak-list b,.profile-weak-list small{display:block}.profile-weak-list b{font-size:11px;color:#332a3d;line-height:1.45}.profile-weak-list small{font-size:10px;color:#b04b48;margin-top:4px}@media(max-width:900px){.profile-metrics{grid-template-columns:repeat(2,1fr);gap:10px}.profile-grid{grid-template-columns:1fr}.profile-metrics>div{padding:13px}.profile-metrics strong{font-size:22px}}@media(max-width:600px){.profile-grid{gap:14px}.profile-subject-list,.profile-weak-list{padding-left:14px;padding-right:14px}}

/* Module thành tích & huy hiệu */
.achievement-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:20px;max-width:900px}.achievement-summary>div{background:#fff;border:1px solid var(--line);border-radius:15px;padding:18px;box-shadow:var(--shadow)}.achievement-summary span,.achievement-summary strong,.achievement-summary small{display:block}.achievement-summary span,.achievement-summary small{font-size:10px;color:#999}.achievement-summary strong{font-size:28px;color:var(--violet);margin:6px 0}.badge-panel{max-width:1100px}.badge-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:0 22px 22px}.badge-card{display:flex;align-items:center;gap:12px;position:relative;border:1px solid var(--line);border-radius:14px;padding:16px;background:#fff;min-height:94px}.badge-card.locked{background:#faf9f7;filter:grayscale(.6);opacity:.66}.badge-icon{width:45px;height:45px;border-radius:14px;display:grid;place-items:center;font-size:24px;font-weight:800;flex:none}.badge-icon.violet{background:#efe5ff;color:var(--violet)}.badge-icon.mint{background:#e2faed;color:#278c5e}.badge-icon.yellow{background:#fff4cc;color:#a87916}.badge-icon.sky{background:#e4f5ff;color:#3587af}.badge-icon.rose{background:#ffe8e5;color:#c45d57}.badge-card h3{font-size:12px;margin:0 0 4px;color:#332a3d}.badge-card p{font-size:10px;color:#999;margin:0;line-height:1.4}.badge-state{position:absolute;right:10px;top:10px;font-size:8px;padding:4px 6px;border-radius:5px;background:#f2eff6;color:#888}.badge-card.unlocked .badge-state{background:#e8fff5;color:#217a5d}@media(max-width:900px){.badge-grid{grid-template-columns:repeat(2,1fr)}.achievement-summary{grid-template-columns:repeat(3,1fr);gap:10px}.achievement-summary>div{padding:13px}.achievement-summary strong{font-size:23px}}@media(max-width:600px){.achievement-summary{grid-template-columns:1fr 1fr}.achievement-summary>div:last-child{grid-column:1/-1}.badge-grid{grid-template-columns:1fr;padding:0 14px 14px}}

/* Module bảng xếp hạng lớp */
.leaderboard-filter{display:flex;align-items:flex-end;gap:10px;margin:-8px 0 20px}.leaderboard-filter label{display:flex;flex-direction:column;gap:6px;color:#6f667a;font-size:11px;font-weight:700}.leaderboard-filter select{min-width:280px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:11px 12px;color:var(--ink);font-size:11px}.leaderboard-hero{max-width:900px;background:linear-gradient(120deg,#efe5ff,#e4faef);border-radius:17px;padding:25px 28px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center}.leaderboard-hero h2{font-size:25px;letter-spacing:-.05em;margin:8px 0 4px}.leaderboard-hero p{font-size:11px;color:#777;margin:0}.my-rank{text-align:center;background:#fff;border-radius:13px;padding:11px 18px;min-width:120px}.my-rank small,.my-rank strong,.my-rank span{display:block}.my-rank small,.my-rank span{font-size:9px;color:#999}.my-rank strong{font-size:31px;color:var(--violet);margin:3px 0}.leaderboard-panel{max-width:900px}.leaderboard-list{padding:0 22px 14px}.leaderboard-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-top:1px solid #f1efed}.leaderboard-row:first-child{border-top:0}.leaderboard-row.mine{background:#fbf9ff;margin:0 -22px;padding-left:22px;padding-right:22px;border-left:3px solid var(--violet)}.rank-number{width:27px;text-align:center;color:#999;font-size:12px;font-weight:800;flex:none}.rank-number.top{color:var(--violet);font-size:15px}.leader-avatar{width:31px;height:31px;border-radius:10px;background:#e9ddff;color:var(--violet);display:grid;place-items:center;font-size:11px;font-weight:800;flex:none}.leader-info{flex:1;min-width:0}.leader-info b,.leader-info small,.leader-score b,.leader-score small{display:block}.leader-info b{font-size:12px;color:#332a3d}.leader-info small,.leader-score small{font-size:10px;color:#999;margin-top:3px}.leader-score{text-align:right}.leader-score b{font-size:15px;color:var(--violet)}@media(max-width:600px){.leaderboard-filter{display:block}.leaderboard-filter label{margin-bottom:10px}.leaderboard-filter select{width:100%}.leaderboard-filter .button{width:100%}.leaderboard-hero{padding:20px 16px;gap:12px}.leaderboard-hero h2{font-size:20px}.my-rank{min-width:95px;padding:9px}.leaderboard-list{padding-left:14px;padding-right:14px}.leaderboard-row.mine{margin-left:-14px;margin-right:-14px;padding-left:14px;padding-right:14px}}

/* Module trung tâm hạn nộp */
.deadline-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;max-width:900px;margin-bottom:22px}.deadline-summary>div{background:#fff;border:1px solid var(--line);border-radius:15px;padding:17px 19px;box-shadow:var(--shadow)}.deadline-summary span,.deadline-summary strong,.deadline-summary small{display:block}.deadline-summary span,.deadline-summary small{font-size:10px;color:#999}.deadline-summary strong{font-size:27px;color:var(--violet);margin:6px 0}.deadline-summary strong.deadline-warning{color:#c45b4f}.deadline-sections{max-width:1100px}.deadline-sections>section{margin-bottom:25px}.section-kicker{display:flex;align-items:center;gap:10px;margin:0 0 12px}.section-kicker h2{font-size:16px;margin:0;letter-spacing:-.03em}.section-kicker span{font-size:10px;color:#999}.deadline-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.deadline-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:17px;box-shadow:var(--shadow);border-top:3px solid var(--violet)}.deadline-card.overdue{border-top-color:#dc7568;background:#fffaf9}.deadline-card.done{border-top-color:#4bb885;background:#fafffc}.deadline-card-top{display:flex;align-items:center;gap:8px}.deadline-icon{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;background:#efe5ff;color:var(--violet);font-weight:800}.deadline-card.overdue .deadline-icon{background:#ffe7e4;color:#be5b52}.deadline-card.done .deadline-icon{background:#e3faed;color:#278b5d}.deadline-label{font-size:9px;font-weight:800;color:#888;letter-spacing:.08em}.deadline-card h3{font-size:15px;line-height:1.3;margin:15px 0 5px;color:#332a3d}.deadline-card p{font-size:10px;color:#999;min-height:30px;margin:0 0 13px}.deadline-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:10px;color:#888;margin-bottom:13px}.deadline-meta b{color:var(--violet);text-align:right}.deadline-card.overdue .deadline-meta b{color:#b04b48}.deadline-card.done .deadline-meta b{color:#278b5d}.deadline-card form{margin:0}@media(max-width:850px){.deadline-grid{grid-template-columns:repeat(2,1fr)}.deadline-summary{gap:10px}.deadline-summary>div{padding:14px}}@media(max-width:600px){.deadline-summary{grid-template-columns:1fr 1fr}.deadline-summary>div:last-child{grid-column:1/-1}.deadline-grid{grid-template-columns:1fr}.deadline-card p{min-height:auto}}

/* Module nhận xét giáo viên */
.feedback-panel{max-width:1100px;margin-top:20px;display:grid;grid-template-columns:1fr 1.5fr;gap:24px;align-items:center;background:linear-gradient(120deg,#fbf9ff,#fff)}.feedback-panel h2{font-size:17px;margin:6px 0 4px}.feedback-panel p{font-size:11px;color:#999;margin:0}.feedback-panel form{display:grid;gap:9px}.feedback-panel textarea{width:100%;resize:vertical;border:1px solid var(--line);border-radius:9px;padding:12px;font:inherit;font-size:11px;outline:0}.feedback-panel textarea:focus{border-color:#aa90e7;box-shadow:0 0 0 3px #efe8ff}.feedback-footer{display:flex;justify-content:space-between;align-items:center}.feedback-footer small{font-size:9px;color:#aaa}@media(max-width:700px){.feedback-panel{display:block}.feedback-panel form{margin-top:17px}.feedback-footer{gap:10px}.feedback-footer .button{flex:1}}

.question-media{margin:16px 0 18px;border-radius:16px;overflow:hidden;background:#f6f7fb;border:1px solid #e7e9f2;max-width:720px}.question-media img{display:block;width:100%;max-height:460px;object-fit:contain;background:#fff}.detail-question .question-media{margin:12px 0}.quiz-card .question-media{margin:18px auto;max-width:640px}

.question-media-image{cursor:zoom-in}.media-lightbox{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:28px;background:rgba(27,22,38,.86);cursor:zoom-out}.media-lightbox img{max-width:min(1100px,94vw);max-height:90vh;object-fit:contain;border-radius:14px;box-shadow:0 22px 70px #0008;background:#fff}.media-lightbox-close{position:fixed;top:18px;right:22px;width:42px;height:42px;border:0;border-radius:50%;background:#fff;color:#332a3d;font-size:30px;line-height:1;cursor:pointer;box-shadow:0 6px 20px #0004}

.question-upload{display:block;margin:12px 0;padding:12px 14px;border:1px dashed #d9d1e6;border-radius:12px;background:#fcfaff;color:#645a70;font-size:11px;font-weight:800}.question-upload input{display:block;margin-top:8px;font-size:11px;font-weight:500}.question-upload small{display:block;margin-top:5px;color:#9b93a6;font-weight:500}

.question-upload-preview{margin-top:10px}.question-upload-preview:empty{display:none}.question-upload-preview img{display:block;max-width:180px;max-height:110px;border-radius:8px;object-fit:contain;background:#fff;border:1px solid #e5dfed}.question-remove{display:flex;align-items:center;gap:6px;margin-top:9px;color:#a44f65;font-size:10px;font-weight:700}.question-remove input{margin:0}

.media-edit-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.media-edit-item{cursor:grab;transition:transform .12s,box-shadow .12s;width:112px;padding:6px;border:1px solid #e6e0ee;border-radius:9px;background:#fff;font-size:9px;color:#9b536b}.media-edit-item img{display:block;width:100%;height:68px;object-fit:contain;border-radius:6px;background:#faf9fc}.media-edit-item span{display:flex;gap:4px;align-items:center;margin-top:5px}.media-edit-item input{margin:0}.question-upload-preview{display:flex;flex-wrap:wrap;gap:8px}.question-upload-preview img{width:112px;height:68px;object-fit:contain}

.media-edit-item.is-dragging{opacity:.55;transform:scale(.97);box-shadow:0 8px 18px #5b3c9328}.media-edit-item.is-over{outline:2px solid var(--violet);outline-offset:2px}

.media-caption-input{display:block;width:100%;box-sizing:border-box;margin-top:6px;padding:5px 6px;border:1px solid #e5dfed;border-radius:6px;font-size:9px;color:#4c4358;background:#fff}.question-media{margin:12px 0}.question-media figcaption{margin-top:6px;color:#81778e;font-size:10px;font-style:italic;text-align:center}

.quiz-import-preview{margin-top:10px;padding:11px 12px;border:1px solid #e8e1f1;border-radius:10px;background:#fcfbfe;font-size:10px}.import-file-meta{display:flex;justify-content:space-between;gap:8px}.import-file-meta span{color:#9a91a6}.import-ready{color:#26835f;margin:8px 0 0}.import-warning{color:#b54f55;margin:8px 0 0;font-weight:700}.import-preview-table{margin-top:9px;overflow:hidden;border:1px solid #ece7f2;border-radius:7px}.import-preview-row{display:grid;grid-template-columns:2fr repeat(4,1fr);border-top:1px solid #eeeaf3}.import-preview-row:first-child{border-top:0}.import-preview-row span{padding:5px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#6f667b}.import-preview-row span.header{font-weight:800;color:#3e354b;background:#f1ecf8}

.activity-history{margin-top:18px;padding-top:14px;border-top:1px solid #eeeaf4}.activity-history h3{font-size:12px;margin:0 0 8px;color:#332a3d}.history-item{display:flex;justify-content:space-between;gap:8px;padding:7px 0;border-top:1px solid #f2eef6;font-size:10px}.history-item small{color:#9a91a6}

.history-item>div:first-child{display:flex;flex-direction:column;gap:2px}.history-restore{border:0;border-radius:6px;padding:5px 7px;background:#efe8ff;color:var(--violet);font-size:9px;font-weight:800;cursor:pointer}.history-restore:hover{background:#ded0ff}

.shared-page{max-width:900px;margin:0 auto;padding:34px 22px}.shared-brand{font-size:18px;color:var(--violet);font-weight:800;margin-bottom:42px}.shared-head{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:var(--shadow);margin-bottom:18px}.shared-head h1{font-size:32px;margin:8px 0}.shared-head p{color:#888}.shared-list{display:grid;gap:12px}.shared-question{display:grid;grid-template-columns:44px 1fr;gap:14px;background:#fff;border:1px solid var(--line);border-radius:15px;padding:20px}.shared-question h2{font-size:17px;margin:0 0 13px}.shared-option{display:inline-flex;align-items:center;gap:7px;margin:4px 8px 4px 0;padding:8px 10px;border:1px solid #eae6f1;border-radius:9px;color:#5b5366}.shared-option b{display:grid;place-items:center;width:20px;height:20px;border-radius:6px;background:#f1eef7}.shared-empty{max-width:560px;margin:120px auto;text-align:center;background:#fff;border:1px solid var(--line);border-radius:18px;padding:45px 25px}.shared-empty p{color:#888}@media(max-width:600px){.shared-page{padding:22px 14px}.shared-head h1{font-size:25px}.shared-question{grid-template-columns:1fr}.shared-question .question-number{width:38px}}

.shared-media{margin:12px 0 16px;border:1px solid #ece8f3;border-radius:10px;overflow:hidden;background:#faf9fc}.shared-media img{display:block;width:100%;max-height:420px;object-fit:contain;background:#fff}.shared-media figcaption{padding:7px 9px;color:#81778e;font-size:10px;font-style:italic}.shared-card{display:grid;grid-template-columns:44px 1fr;gap:14px;background:#fff;border:1px solid var(--line);border-radius:15px;padding:20px}.shared-card h2{margin:0 0 8px;font-size:17px}.shared-card p{margin:0;color:#696070;line-height:1.65}.shared-card small{color:#9a91a6}

.shared-head-tools{display:flex;justify-content:flex-end;gap:8px;margin-bottom:10px}.shared-head-tools .button{font:inherit}.shared-head-tools .small{padding:8px 11px;font-size:11px}@media print{body{background:#fff}.shared-page{max-width:none;padding:0}.shared-brand,.shared-head-tools{display:none}.shared-head,.shared-question,.shared-card{box-shadow:none;border:1px solid #ddd;break-inside:avoid}.shared-head{margin-bottom:12px}.shared-media img{max-height:300px}}

.shared-result{background:#eefaf5;border:1px solid #bfe8d5;border-radius:15px;padding:20px 24px;margin-bottom:16px}.shared-result h2{margin:7px 0}.shared-result p{margin:0;color:#527565}.shared-name{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 15px;font-weight:700}.shared-name input{flex:1;border:1px solid #e4dfee;border-radius:8px;padding:9px}.shared-quiz-form .shared-option{cursor:pointer}.shared-quiz-form .shared-option input{accent-color:var(--violet)}.shared-submit{justify-self:start}

.public-stats{margin-top:18px;padding-top:14px;border-top:1px solid #eeeaf4}.public-stats h3{font-size:12px;margin:0 0 10px}.public-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.public-stat-grid span{background:#f7f4fb;border-radius:8px;padding:7px 4px;text-align:center}.public-stat-grid b{display:block;font-size:13px;color:var(--violet)}.public-stat-grid small{display:block;font-size:9px;color:#948b9f;margin-top:2px}.public-attempt-list{margin-top:9px}.public-attempt-list div{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid #f2eef6;font-size:10px}.public-attempt-list small{color:#93899f}

.public-stats-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.public-stats-head h3{margin:0}.public-stats-head .small{padding:5px 8px;font-size:9px}

.public-question-stats{margin-top:12px;padding-top:10px;border-top:1px solid #eeeaf4}.public-question-stats h4{font-size:11px;margin:0 0 8px}.public-question-stat{padding:6px 0;border-top:1px solid #f2eef6}.public-question-stat>div{display:flex;justify-content:space-between;font-size:10px}.public-question-stat span{font-weight:800;color:var(--violet)}.public-question-stat small{display:block;margin-top:3px;color:#92889e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.public-question-stat i{display:block;height:4px;background:#eeeaf5;border-radius:99px;margin-top:5px;overflow:hidden}.public-question-stat em{display:block;height:100%;background:#6d28d9;border-radius:99px}

.shared-feedback{display:grid;gap:10px;margin-bottom:18px}.shared-feedback>h2{font-size:18px;margin:4px 0}.feedback-item{background:#fff;border:1px solid var(--line);border-left:4px solid #d9d1e5;border-radius:12px;padding:13px 15px}.feedback-item.is-correct{border-left-color:#35a775}.feedback-item.is-wrong{border-left-color:#db6b7b}.feedback-item>div{display:flex;justify-content:space-between;font-size:11px}.feedback-item.is-correct>div span{color:#27845d}.feedback-item.is-wrong>div span{color:#bf4d61}.feedback-item p{margin:7px 0 5px;font-size:13px}.feedback-item small{color:#81778e}

.shared-result{position:relative}.shared-result.result-pass{background:#eefaf5;border-color:#bfe8d5}.shared-result.result-retry{background:#fff7ed;border-color:#f1d3a9}.shared-result>strong{display:inline-block;margin:3px 0 4px;color:#2c8863}.result-retry>strong{color:#b96a1b}.shared-result .small{display:inline-block;margin-top:8px}.feedback-explanation{margin-top:9px;padding:9px 10px;background:#f7f4fb;border-radius:8px;color:#62586f;font-size:11px;line-height:1.5}.feedback-explanation b{color:#493b5d}

.result-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}.result-actions .small{margin-top:0}
@media print{.result-actions,.shared-feedback h2{display:none}.shared-result{break-inside:avoid}}

.pass-threshold-field small{display:block;color:#8b8197;font-size:11px;margin-top:5px}.pass-threshold-field input{max-width:180px}

.shared-timer{position:sticky;top:10px;z-index:2;background:#f2edff;color:#53358a;border:1px solid #d9cafa;border-radius:10px;padding:9px 12px;text-align:center;font-size:12px}.shared-timer.is-urgent{background:#fff0f0;color:#b63e52;border-color:#f2b7c0}.shared-timer b{font-variant-numeric:tabular-nums}

.shared-quiz-meta{display:grid;gap:8px;position:sticky;top:10px;z-index:3}.shared-progress{background:#fff;border:1px solid #e5dff0;border-radius:10px;padding:8px 11px}.shared-progress>div{display:flex;justify-content:space-between;font-size:11px}.shared-progress span{color:#83798f}.shared-progress b{color:#53358a}.shared-progress i{display:block;height:4px;background:#eeeaf5;border-radius:99px;margin-top:6px;overflow:hidden}.shared-progress em{display:block;width:0;height:100%;background:#6d28d9;border-radius:99px;transition:width .2s ease}

.shared-incomplete{background:#fff7ed;border:1px solid #f1d3a9;color:#9c5b19;border-radius:9px;padding:9px 11px;font-size:11px}.shared-submit{justify-self:start}

.public-shuffle-field{margin-top:10px}.public-shuffle-field small{display:block;color:#8b8197;font-size:11px;margin-top:4px}

.result-expired{color:#a04f25;font-weight:600}

.shared-draft-note{font-size:11px;color:#83798f;margin-top:4px}

.shared-clear-draft{margin:8px 0 4px}

.public-stats-head .button{margin-left:4px}

.public-stats-head{flex-wrap:wrap;gap:4px}

.public-question-stats-toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}.public-question-stats-toolbar h4{margin-right:auto}.public-question-stats-toolbar select{font-size:11px;padding:6px 8px;border:1px solid #e4deef;border-radius:7px;background:#fff;color:#554b63}

.question-focus-summary{font-size:11px;color:#a35d2b;background:#fff4e8;border-radius:999px;padding:4px 8px}.public-question-stats-toolbar .tiny{padding:5px 8px}

.public-trend{margin-top:14px;padding-top:12px;border-top:1px solid #eee8f3}.public-trend-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.public-trend-head h4{margin:0}.public-trend-head small{color:#8b8195;margin-right:6px}.public-trend-head>div{display:flex;align-items:center;gap:4px}.public-trend-head select{font-size:11px;padding:5px 7px;border:1px solid #e4deef;border-radius:7px;background:#fff;color:#554b63}.public-trend-bars{display:flex;align-items:flex-end;gap:5px;height:100px}.public-trend-day{flex:1;min-width:12px;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px}.public-trend-day>span{font-size:10px;color:#766b80}.public-trend-day>i{height:68px;width:100%;display:flex;align-items:flex-end;background:#f6f1fa;border-radius:5px 5px 2px 2px;overflow:hidden}.public-trend-day>i em{display:block;width:100%;background:linear-gradient(180deg,#8f6ad9,#5f43a8);border-radius:5px 5px 0 0}.public-trend-day small{font-size:9px;color:#8b8195;white-space:nowrap}

.trend-comparison{font-size:11px;color:#8b8195;margin-left:auto}.trend-comparison.up{color:#2f8a61}.trend-comparison.down{color:#b45d5d}

.incomplete-report{margin-bottom:18px}.status-warning{font-size:12px;color:#a35d2b;background:#fff4e8;border-radius:999px;padding:6px 10px}

.class-comparison-report{margin-bottom:18px}.class-comparison-report table td,.class-comparison-report table th{white-space:nowrap}

.student-summary-report{margin-bottom:18px}.student-summary-report table td:first-child{color:#8b8195;width:34px}

.report-chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:18px 20px 20px;border-top:1px solid #eee8f3}.chart-title{font-size:12px;font-weight:700;color:#554b63;margin-bottom:10px}.chart-title-tools,.chart-title-spacer{display:flex;align-items:center;justify-content:space-between}.chart-title-tools>div{display:flex;align-items:center;gap:4px}.chart-title-tools select{font-size:11px;padding:4px 6px;border:1px solid #e4deef;border-radius:6px;background:#fff;color:#554b63}.report-bar-row{display:grid;grid-template-columns:minmax(76px,110px) 1fr 38px;align-items:center;gap:8px;margin:8px 0;font-size:11px}.report-bar-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-bar-row>i{height:8px;background:#f0ebf7;border-radius:99px;overflow:hidden}.report-bar-row>i em{display:block;height:100%;background:linear-gradient(90deg,#7454bd,#a98be8);border-radius:99px}.report-bar-row.completion>i em{background:linear-gradient(90deg,#3a9b73,#82caa6)}.report-bar-row>b{text-align:right;font-size:11px;color:#6a5d75}@media(max-width:720px){.report-chart-grid{grid-template-columns:1fr;gap:16px}}

.report-head-actions{display:flex;gap:8px;align-items:center}.report-head-actions .button{white-space:nowrap}.report-head-actions .button.ghost{border-color:#e5def0;color:#67577b}

.report-print-meta{font-size:10px;color:#9a91a6;margin-top:8px}.report-print-meta{display:none}
@media print{.report-print-meta{display:block!important;color:#71677d!important}}

.report-insights{margin-bottom:18px}.insight-badge{font-size:10px;color:#7356a8;background:#f1eaff;border-radius:99px;padding:6px 9px}.insight-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:0 20px 20px}.insight-card{border:1px solid #eee8f3;border-radius:12px;padding:13px;background:#fcfbfe;min-width:0}.insight-card span,.insight-card small{display:block;color:#8f8798;font-size:10px}.insight-card strong{display:block;font-size:15px;color:#3e354b;margin:7px 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.insight-card small{line-height:1.4}.insight-card.positive{border-top:3px solid #7a5bc7}.insight-card.attention{border-top:3px solid #e39b5c}.insight-card.student{border-top:3px solid #4b9e7a}.insight-card.neutral{border-top:3px solid #9d91aa}@media(max-width:900px){.insight-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.insight-grid{grid-template-columns:1fr}}

.insight-card span:first-child{display:flex;align-items:center;justify-content:space-between;gap:6px}.insight-status{font-size:9px;font-weight:700;border-radius:99px;padding:3px 6px;font-style:normal}.insight-status.good{color:#247653;background:#e8f7ee}.insight-status.warning{color:#a35d2b;background:#fff1e4}.insight-status.neutral{color:#70657d;background:#f0edf4}

.report-quick-range{display:flex;align-items:center;gap:7px;margin:0 0 10px;color:#8f8798;font-size:10px}.report-quick-range .button{font-size:10px;padding:7px 10px}.report-quick-range .button.active{background:#eee5ff;border-color:#bca7e9;color:#6545a3}@media(max-width:760px){.report-quick-range{flex-wrap:wrap}.report-quick-range>span{flex-basis:100%}}

.report-range-current{font-size:10px;color:#6d5a86;font-weight:700;margin-left:2px}.report-quick-range [data-report-custom]{margin-left:auto}@media(max-width:760px){.report-range-current{flex-basis:100%;order:3}.report-quick-range [data-report-custom]{margin-left:0}}

.report-date-error{grid-column:1/-1;color:#a34850;background:#fff0f1;border:1px solid #f0c9ce;border-radius:8px;padding:8px 10px;font-size:10px;font-weight:700}.report-date-error[hidden]{display:none}.report-date-error:not([hidden]){display:block}

.report-filter-status{font-size:10px;color:#6d5a86;align-self:center;min-height:14px}@media(max-width:760px){.report-filter-status{flex-basis:100%}}

.report-saved-select{max-width:150px;font-size:10px;padding:6px 8px;border:1px solid #ded5e8;border-radius:7px;background:#fff;color:#5f536b}@media(max-width:760px){.report-saved-select{max-width:none;flex-basis:100%}}

.report-saved-search,.report-saved-sort{max-width:140px;font-size:10px;padding:6px 8px;border:1px solid #ded5e8;border-radius:7px;background:#fff;color:#5f536b}.report-saved-search{width:120px}@media(max-width:760px){.report-saved-search,.report-saved-sort{max-width:none;flex:1}}

.report-filter-log{flex-basis:100%;font-size:10px;color:#6d5a86;margin-top:5px}.report-filter-log summary{cursor:pointer;font-weight:700}.report-filter-log ol{margin:6px 0 0 18px;padding:0}.report-filter-log li{padding:2px 0}.report-filter-log small{margin-left:8px;color:#9b91a7}
.report-log-actions{display:flex;gap:5px;margin:5px 0}.report-log-actions .button{font-size:10px}.log-filter-name{margin-left:6px;color:#4f3a72}.log-filter-name:before{content:'— ';color:#b1a5bd}.report-log-filters{display:flex;gap:5px;margin:5px 0}.report-log-filters input,.report-log-filters select{font-size:10px;padding:5px 7px;border:1px solid #ded5e8;border-radius:6px;min-width:130px}@media(max-width:760px){.report-log-filters{flex-wrap:wrap}.report-log-filters input,.report-log-filters select{flex:1;min-width:0}}.report-log-pagination{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:7px;font-size:10px;color:#6d5a86}.report-log-pagination button:disabled{opacity:.45;cursor:not-allowed}.report-log-page-size{display:inline-flex;align-items:center;gap:4px}.report-log-page-size select{font-size:10px;padding:3px 5px;border:1px solid #ded5e8;border-radius:5px;background:#fff}.report-log-sync-status{margin-left:4px;color:#9b91a7;font-size:9px}.report-log-auto{display:inline-flex;align-items:center;gap:4px;font-size:10px;color:#6d5a86}.report-log-auto select{font-size:10px;padding:3px 5px;border:1px solid #ded5e8;border-radius:5px;background:#fff}.report-log-auto-status{font-size:9px;color:#7c6994;font-style:italic}.report-log-actions .button:disabled{opacity:.45;cursor:not-allowed}.report-log-count{color:#9b91a7;font-size:9px;margin-left:4px}
/* CSV import guide */
.report-csv-help{margin:12px 0;padding:0 12px;border:1px solid #e6e9f0;border-radius:12px;background:#fbfcfe}.report-csv-help summary{cursor:pointer;padding:10px 0;font-weight:700;color:#39445a}.report-csv-help-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:0 0 8px}.report-csv-help-grid>div{padding:10px;border-radius:9px;background:#f2f5fa}.report-csv-help-grid b{font-size:12px}.report-csv-help p,.report-csv-help-example{margin:5px 0 0;color:#657089;font-size:12px;line-height:1.5}.report-csv-help code{font-family:ui-monospace,SFMono-Regular,monospace;color:#35415a}@media(max-width:700px){.report-csv-help-grid{grid-template-columns:1fr}}

/* CSV import preview */
.report-csv-preview{margin:10px 0;padding:12px;border:1px solid #cfe0f5;border-radius:12px;background:#f4f8fd;color:#43516a}.report-csv-preview>div:first-child{display:flex;justify-content:space-between;gap:8px;align-items:center}.report-csv-preview>div:first-child span{font-size:12px;color:#71809a}.report-csv-preview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}.report-csv-preview-grid span{padding:8px;border-radius:8px;background:#fff;text-align:center;font-size:12px}.report-csv-preview-grid b{display:block;color:#1f5d98;font-size:18px}.report-csv-preview p{margin:9px 0 0;font-size:12px;color:#68758b}@media(max-width:700px){.report-csv-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.report-csv-preview>div:first-child{align-items:flex-start;flex-direction:column}}

.report-csv-preview [data-csv-preview-download-errors]{margin-top:10px}.report-csv-preview [data-csv-preview-download-errors][hidden]{display:none}

.report-csv-preview [data-csv-preview-download-normalized]{margin-top:10px}.report-csv-preview [data-csv-preview-download-normalized][hidden]{display:none}

.report-csv-preview [data-csv-preview-download-clean]{margin-top:10px}.report-csv-preview [data-csv-preview-download-clean][hidden]{display:none}


.csv-preview-rows{margin:12px 0}.csv-preview-rows table{min-width:760px}.csv-preview-rows small{display:block;margin-top:6px;color:var(--muted,#64748b)}

.csv-preview-errors{margin:12px 0}.csv-preview-errors table{min-width:760px}.csv-preview-errors small{display:block;margin-top:6px;color:var(--muted,#64748b)}

.csv-preview-filter{margin:10px 0}.csv-preview-filter label{font-weight:600}.csv-preview-filter select{margin-left:6px}.csv-preview-duplicates{margin:12px 0}.csv-preview-duplicates table{min-width:760px}.csv-preview-duplicates small{display:block;margin-top:6px;color:var(--muted,#64748b)}

.csv-preview-filter{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.csv-preview-search-label input{min-width:260px;margin-left:6px}

.csv-preview-sort-label select{margin-left:6px}

.csv-preview-filter [data-csv-preview-reset]{white-space:nowrap}

.csv-preview-warning{margin:10px 0;padding:10px 12px;border:1px solid #f2c36b;border-radius:8px;background:#fff8e7;color:#7a4b00}.csv-preview-warning[hidden]{display:none}

.csv-preview-confirmation{margin:10px 0;padding:10px 12px;border:1px solid #94a3b8;border-radius:8px;background:#f8fafc;color:#334155}.csv-preview-confirmation[hidden]{display:none}

.csv-import-result{margin:10px 0;padding:10px 12px;border:1px solid #86efac;border-radius:8px;background:#f0fdf4;color:#166534}.csv-import-result[hidden]{display:none}

.csv-import-result{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}.csv-import-result [data-csv-import-clear]{margin-left:auto}

.csv-import-result-actions{display:inline-flex;gap:6px;flex-wrap:wrap}

.csv-import-history{margin:10px 0;padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;background:#f8fafc}.csv-import-history [data-csv-import-history-list]{white-space:pre-line;margin:8px 0;color:#475569}.csv-import-history[hidden]{display:none}

.csv-import-history-select-label{display:block;margin:8px 0}.csv-import-history-select-label select{margin-left:6px;max-width:100%}

.csv-import-history-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.csv-import-result-actions{display:inline-flex;gap:6px;flex-wrap:wrap}

/* Module 1 — live quiz state controls */
.host-control-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.host-control-grid form{min-width:0}
.live-wait-card{max-width:680px;margin:32px auto;text-align:center}
.live-wait-card .result-grid{margin:24px 0}
@media (max-width:640px){.host-control-grid{grid-template-columns:1fr}.live-wait-card{margin:20px 0}}

/* Module 2 — unified assignment player */
.assignment-player-shell{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:20px;max-width:980px}
.assignment-player-main{background:linear-gradient(135deg,#f5f1ff,#fff);border:1px solid #e7defd;border-radius:24px;padding:42px}
.assignment-player-icon{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:#6d28d9;color:#fff;font-size:28px;margin-bottom:22px}
.assignment-player-main h2{font-size:30px;margin:10px 0}.assignment-player-main p{color:#667085;max-width:620px}
.assignment-progress-label{display:flex;justify-content:space-between;margin-top:28px;font-size:14px;font-weight:700}.assignment-player-main .progress{margin-top:10px}
.assignment-player-actions{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap}.assignment-player-side{display:grid;gap:12px}.assignment-player-side>div{background:#fff;border:1px solid #e8eaf0;border-radius:18px;padding:22px}.assignment-player-side span,.assignment-player-side small{display:block;color:#667085;font-size:13px}.assignment-player-side strong{display:block;font-size:26px;margin:8px 0}.assignment-quick-link{font-size:12px;color:#6d28d9;text-decoration:none;font-weight:700}
@media (max-width:760px){.assignment-player-shell{grid-template-columns:1fr}.assignment-player-main{padding:26px}.assignment-player-main h2{font-size:25px}}

/* Module 3 — Question Bank & Content Studio 2.0 */
.studio-filters{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.studio-filters .searchbox{flex:1;min-width:240px}.studio-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.studio-question-card h3{margin:15px 0 8px;font-size:18px;line-height:1.4}.studio-question-top{display:flex;justify-content:space-between;gap:12px;align-items:center}.studio-question-top small,.studio-question-meta{color:#667085;font-size:13px}.studio-tags{display:flex;gap:6px;flex-wrap:wrap;min-height:26px}.studio-tags span{background:#eee7ff;color:#5b21b6;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700}.studio-tags em{color:#98a2b3;font-size:12px}.studio-tag-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-top:14px}.studio-tag-form label{flex:1;min-width:220px}.studio-preview{background:#f8fafc;border-radius:12px;padding:14px;margin-top:14px;font-size:13px}.studio-preview p{margin:8px 0}.studio-preview span{color:#667085}.button.small{padding:9px 13px;font-size:13px}
@media (max-width:760px){.studio-grid{grid-template-columns:1fr}.studio-question-top{align-items:flex-start;flex-direction:column}}

/* Module 5 — grading & feedback workspace */
.grading-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:20px 0}.grading-summary>div{background:#fff;border:1px solid #e8eaf0;border-radius:16px;padding:18px}.grading-summary span{display:block;color:#667085;font-size:13px}.grading-summary strong{display:block;font-size:25px;margin-top:8px}.grading-list{display:grid;gap:16px;max-width:980px}.grading-card-head{display:flex;justify-content:space-between;gap:20px}.grading-card-head h2{margin:8px 0;font-size:20px}.grading-card-head small{color:#667085}.review-status{border-radius:999px;padding:6px 10px;height:max-content;font-size:12px;font-weight:800;white-space:nowrap}.review-status.pending{background:#fff3cd;color:#946200}.review-status.returned{background:#dcfce7;color:#166534}.student-answer-box{margin:20px 0;background:#f8fafc;border-radius:14px;padding:16px}.student-answer-box span{font-size:12px;color:#667085;font-weight:700}.student-answer-box p{margin:8px 0}.grading-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.grading-form label{min-width:120px;font-weight:700}.grading-form .feedback-field{flex:1;min-width:280px}.grading-form textarea{width:100%;resize:vertical}.grading-form input,.grading-form textarea{margin-top:6px}
@media (max-width:680px){.grading-summary{grid-template-columns:1fr}.grading-card-head{flex-direction:column;gap:8px}}

/* Module 6 — Analytics Center */
.analytics-filters{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.analytics-filters select{min-width:150px}.analytics-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:18px 0}.analytics-metrics>div{background:#fff;border:1px solid #e8eaf0;border-radius:16px;padding:17px}.analytics-metrics span{display:block;color:#667085;font-size:12px}.analytics-metrics strong{display:block;font-size:24px;margin-top:8px}.analytics-drilldown{max-width:1100px}.metric-chip{display:inline-flex;padding:5px 9px;border-radius:999px;background:#ecfdf3;color:#166534;font-size:12px;font-weight:800}
@media (max-width:900px){.analytics-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:600px){.analytics-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.review-feedback{display:block;margin-top:8px;padding:9px 11px;background:#eef6ff;border-radius:9px;color:#155e75;font-size:13px}
.multi-answer-grid{display:grid;gap:10px}.multi-answer-option{display:flex!important;align-items:center;gap:10px;cursor:pointer}.multi-answer-option input{width:auto!important}.multi-submit{grid-column:1/-1;justify-self:start}
.class-ops-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.inline-create-group,.inline-group-assign{display:flex;gap:8px;align-items:center}.inline-create-group input,.inline-group-assign select{flex:1}.group-list{display:grid;gap:10px;margin-top:14px}.group-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px;border:1px solid var(--line);border-radius:12px}.group-row small{display:block;color:var(--muted)}.form-help{display:block;margin-top:10px;color:var(--muted)}
@media(max-width:800px){.class-ops-grid{grid-template-columns:1fr}.group-row{display:grid}.inline-group-assign{width:100%}}
#groupPicker{min-height:92px}.group_ids_holder{display:none}
.communication-tools{margin-bottom:18px}.notification-filters,.notification-preferences{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px}.broadcast-form{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.broadcast-form textarea{width:100%;margin:12px 0}.notification-preferences{padding-top:12px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}.notification-preferences label{display:inline-flex;gap:6px;align-items:center}

.ops-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:18px}.ops-card{display:grid;gap:6px}.ops-card span,.ops-card small{color:var(--muted)}.status-warning{color:#b45309}.audit-filters{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin-bottom:18px}.audit-filters label{display:grid;gap:5px}.migration-panel code,.audit-panel code{font-family:ui-monospace,monospace;font-size:12px}@media(max-width:700px){.ops-grid{grid-template-columns:1fr}.audit-filters label{width:100%}}

.workload-days{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.workload-day{display:grid;gap:6px;padding:12px;border:1px solid var(--border);border-radius:12px}.workload-day.peak{border-color:#f59e0b;background:#fffbeb}.workload-day span,.workload-day small{color:var(--muted);font-size:12px}.workload-day i{height:6px;background:#e5e7eb;border-radius:99px;overflow:hidden}.workload-day em{display:block;height:100%;background:#6d28d9;border-radius:99px}.planner-filters{margin-bottom:18px}

.guardian-child-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.guardian-child-card{display:grid;gap:8px}.guardian-child-card p{color:var(--muted);font-size:13px}.guardian-invite-panel{max-width:680px}

.guardian-trend{display:grid;gap:8px}.guardian-trend>div{display:flex;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border)}.guardian-trend span{color:var(--muted);font-size:13px}@media print{.site-nav,.welcome-actions,.report-filters,button{display:none!important}.panel{box-shadow:none;border-color:#ddd}}

.digest-preferences{margin-bottom:16px}.digest-preferences .notification-preferences{display:flex;gap:14px;align-items:end;flex-wrap:wrap}.digest-preferences label{display:grid;gap:6px}

.inline-form{display:flex;gap:6px;flex-wrap:wrap}.status-chip.warning{background:#fff3cd;color:#7a5200}

.rubric-criteria-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.rubric-criteria-grid label{display:grid;gap:6px}.rubric-criteria-grid textarea{min-height:70px}@media(max-width:800px){.rubric-criteria-grid{grid-template-columns:1fr}}

.path-timeline{display:grid;gap:14px}.path-node{display:flex;gap:14px;align-items:flex-start;padding:16px;border:1px solid var(--line,#e5e7eb);border-radius:14px}.path-node-index{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#eef2ff;color:#4338ca;font-weight:700}.check-row{display:block;margin:8px 0}.path-node h2{margin:0 0 4px}

.status-chip.ready{background:#dcfce7;color:#166534}.status-chip.warning{background:#fef3c7;color:#92400e}

.team-name-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.scoreboard-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.score-card{padding:18px;border-radius:16px;background:#f8fafc;border:1px solid var(--line,#e5e7eb)}.score-card strong{display:block;font-size:2rem;margin:8px 0}@media(max-width:800px){.team-name-grid,.scoreboard-grid{grid-template-columns:1fr}}

.community-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.community-card h2{margin:.4rem 0}.community-card p{min-height:48px}.community-rating{display:flex;gap:10px;align-items:center;margin:14px 0}.community-actions{display:flex;flex-wrap:wrap;gap:8px}@media(max-width:900px){.community-grid{grid-template-columns:1fr}}

.community-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.community-card h2{margin:.4rem 0}.community-card p{min-height:48px}.community-actions{display:flex;flex-wrap:wrap;gap:8px}@media(max-width:900px){.community-grid{grid-template-columns:1fr}}
