:root{--blue:#2563eb;--blue-dark:#1d4ed8;--navy:#0f172a;--slate:#475569;--muted:#64748b;--line:#e2e8f0;--surface:#fff;--background:#f5f7fb;--shadow:0 18px 45px rgba(15,23,42,.08)}
*{box-sizing:border-box}html{height:100%;background:var(--background)}body{margin:0;min-height:100%;font-family:"Outfit",system-ui,sans-serif;color:var(--navy);background:var(--background);-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.hidden{display:none!important}.muted{color:var(--muted)}.nowrap{white-space:nowrap}
.login-shell{min-height:100dvh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 15% 15%,#dbeafe 0,transparent 31%),radial-gradient(circle at 85% 85%,#e0e7ff 0,transparent 30%),#f8fafc}.login-card{width:min(100%,450px);background:#fff;border:1px solid rgba(226,232,240,.85);border-radius:32px;padding:40px;box-shadow:0 25px 70px rgba(30,64,175,.13);text-align:center}.brand-mark{width:72px;height:72px;margin:0 auto 20px;border-radius:24px;display:grid;place-items:center;background:linear-gradient(145deg,#60a5fa,#2563eb);color:#fff;box-shadow:0 13px 30px rgba(37,99,235,.3)}.brand-mark svg{width:34px;height:34px}.brand-mark.small{width:44px;height:44px;margin:0;border-radius:14px}.brand-mark.small svg{width:22px}.eyebrow{margin:0 0 7px;color:var(--blue);font-size:.73rem;font-weight:700;letter-spacing:.14em}.eyebrow.light{color:#bfdbfe}.login-card h1{font-size:clamp(1.9rem,6vw,2.5rem);line-height:1.05;margin:0 0 14px}.login-card>p.muted{margin:0 auto 28px;max-width:340px;line-height:1.55}.form-stack{display:grid;gap:16px;text-align:left}.form-stack label{display:grid;gap:7px;font-weight:600;color:#334155}.form-stack input,.inline-form input{width:100%;border:1px solid var(--line);background:#f8fafc;border-radius:14px;padding:13px 15px;outline:none;transition:.2s}.form-stack input:focus,.inline-form input:focus,.ai-composer:focus-within{border-color:#60a5fa;box-shadow:0 0 0 4px #dbeafe}.primary-button,.dark-button,.send-button{border:0;cursor:pointer;font-weight:700}.primary-button{min-height:50px;border-radius:15px;background:var(--blue);color:#fff;display:flex;gap:10px;align-items:center;justify-content:center;box-shadow:0 10px 22px rgba(37,99,235,.22);transition:.2s}.primary-button:hover{background:var(--blue-dark);transform:translateY(-1px)}.primary-button:disabled{opacity:.65;cursor:wait}.primary-button svg{width:20px}.form-error{color:#dc2626;background:#fef2f2;padding:10px 12px;border-radius:10px;font-size:.9rem;text-align:center;margin:0}
.app-shell{min-height:100dvh}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;padding:24px 18px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:30}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:0 7px 30px}.sidebar-brand strong,.sidebar-brand span,.mini-profile strong,.mini-profile span{display:block}.sidebar-brand strong{font-size:1.18rem}.sidebar-brand span{font-size:.75rem;color:var(--muted)}.sidebar-close,.sidebar-toggle,.sidebar-backdrop{border:0;cursor:pointer}.sidebar-close{display:none;margin-left:auto;width:44px;height:44px;border-radius:13px;background:#f1f5f9;color:#475569}.sidebar-close svg,.sidebar-toggle svg{width:22px;height:22px}.sidebar-toggle{display:none;width:46px;height:46px;flex:0 0 46px;place-items:center;border-radius:14px;background:#eff6ff;color:#1d4ed8}.sidebar-backdrop{display:none;position:fixed;inset:0;z-index:25;background:rgba(15,23,42,.52);backdrop-filter:blur(2px)}.sidebar nav{display:grid;gap:7px}.nav-button,.logout-button{border:0;background:transparent;color:#64748b;border-radius:13px;padding:12px 13px;display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer;font-weight:600}.nav-button svg,.logout-button svg{width:20px}.nav-button:hover{background:#f8fafc;color:var(--blue)}.nav-button.active{background:#eff6ff;color:var(--blue)}.sidebar-footer{margin-top:auto;border-top:1px solid var(--line);padding-top:17px}.mini-profile{display:flex;align-items:center;gap:10px;padding:4px 8px 13px}.mini-profile strong{font-size:.9rem}.mini-profile span{font-size:.7rem;color:var(--muted)}.profile-dot{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:#fff;background:linear-gradient(145deg,#818cf8,#2563eb);font-weight:700}.logout-button{width:100%}.logout-button:hover{background:#fef2f2;color:#dc2626}.main-area{min-height:100dvh;margin-left:250px}.topbar{height:94px;padding:19px clamp(20px,4vw,48px);display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.91);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.topbar-title{display:flex;align-items:center;gap:13px;min-width:0}.topbar h1{margin:0;font-size:1.65rem}.coin-pill{display:flex;align-items:center;gap:7px;padding:10px 14px;border-radius:999px;color:#92400e;background:#fef3c7;border:1px solid #fde68a}.coin-pill svg{width:19px;color:#d97706}.coin-pill span{font-size:.78rem}.page-content{padding:32px clamp(20px,4vw,48px) 60px;max-width:1400px;margin:auto}.view{animation:fade-in .25s ease}@keyframes fade-in{from{opacity:0;transform:translateY(5px)}}
.welcome-card{border-radius:28px;padding:clamp(25px,4vw,42px);color:#fff;background:linear-gradient(120deg,#2563eb,#4f46e5 75%,#6366f1);box-shadow:0 20px 50px rgba(37,99,235,.22);display:flex;align-items:center;justify-content:space-between;overflow:hidden;position:relative}.welcome-card:after{content:"";position:absolute;width:320px;height:320px;border:60px solid rgba(255,255,255,.06);border-radius:50%;right:-115px;top:-140px}.welcome-card>div,.welcome-card svg{position:relative;z-index:1}.welcome-card h2{font-size:clamp(1.8rem,4vw,3rem);margin:0 0 8px}.welcome-card>div>p:not(.eyebrow){margin:0;color:#dbeafe}.welcome-stats{display:flex;gap:10px;flex-wrap:wrap;margin-top:23px}.welcome-stats span{display:flex;align-items:center;gap:7px;padding:8px 12px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(255,255,255,.12);font-size:.9rem}.welcome-stats svg{width:18px}.avatar{width:112px;height:112px;padding:8px;border-radius:28px;background:#eff6ff;border:1px solid #dbeafe;filter:drop-shadow(0 10px 15px rgba(15,23,42,.09))}.avatar.large{width:150px;height:150px;padding:10px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25)}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:22px}.panel{border:1px solid var(--line);background:#fff;border-radius:22px;padding:23px;box-shadow:0 10px 35px rgba(15,23,42,.045)}.panel-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.panel-heading h2{margin:0;font-size:1.3rem}.panel-heading>svg{color:var(--blue);background:#eff6ff;width:39px;height:39px;padding:9px;border-radius:11px}.course-list{display:grid;gap:11px}.course-list a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:13px;padding:13px;border:1px solid var(--line);border-radius:16px;color:inherit;text-decoration:none;transition:.2s}.course-list a:hover{border-color:#bfdbfe;background:#f8fbff;transform:translateY(-1px)}.course-list a>svg{width:18px;color:#94a3b8}.course-list strong,.course-list small{display:block}.course-list small{color:var(--muted);margin-top:2px}.course-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center}.course-icon svg{width:21px}.course-icon.blue{background:#dbeafe;color:#2563eb}.course-icon.violet{background:#ede9fe;color:#7c3aed}.announcement-list{display:grid;gap:14px}.announcement{border-left:3px solid #facc15;padding:1px 0 1px 14px}.announcement time{font-size:.72rem;color:#94a3b8;font-weight:600}.announcement h3{font-size:1rem;margin:3px 0}.announcement p{font-size:.88rem;color:var(--muted);margin:0;line-height:1.5}.skeleton{height:70px;border-radius:10px;background:linear-gradient(90deg,#f1f5f9,#e2e8f0,#f1f5f9);background-size:200%;animation:shimmer 1.3s infinite}.skeleton.short{width:78%}@keyframes shimmer{to{background-position:-200%}}
.lock-card{max-width:560px;margin:9vh auto;text-align:center;padding:42px;background:#fff;border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow)}.lock-icon{width:70px;height:70px;margin:0 auto 18px;border-radius:23px;display:grid;place-items:center;background:#dbeafe;color:#2563eb}.lock-icon svg{width:34px;height:34px}.lock-card h2{font-size:2rem;margin:0 0 9px}.inline-form{display:flex;gap:10px;margin-top:24px}.dark-button{padding:0 22px;border-radius:13px;background:#0f172a;color:#fff}.ai-workspace{height:calc(100dvh - 190px);min-height:540px;background:#fff;border:1px solid var(--line);border-radius:23px;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow)}.ai-tabs{display:flex;gap:8px;padding:10px;background:#f8fafc;border-bottom:1px solid var(--line)}.ai-tab{flex:1;min-height:46px;border:1px solid transparent;border-radius:13px;color:#64748b;background:transparent;cursor:pointer;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px}.ai-tab svg{width:19px}.ai-tab.active{background:#fff;border-color:#dbeafe;color:#2563eb;box-shadow:0 4px 12px rgba(15,23,42,.06)}.ai-messages{flex:1;overflow:auto;padding:24px;display:flex;flex-direction:column;gap:17px;background:#f8fafc}.message{max-width:min(78%,720px);border-radius:18px;padding:13px 15px;line-height:1.5;white-space:pre-wrap}.message.user{align-self:flex-end;background:#2563eb;color:#fff;border-bottom-right-radius:5px}.message.bot{align-self:flex-start;background:#fff;border:1px solid var(--line);border-bottom-left-radius:5px}.message img{display:block;max-width:100%;max-height:440px;border-radius:13px}.image-download{margin-top:10px;border:0;border-radius:10px;padding:8px 11px;cursor:pointer;background:#eff6ff;color:#1d4ed8;font-weight:600}.typing{padding:8px 24px;color:#64748b;font-size:.86rem}.typing span{display:inline-block;width:6px;height:6px;margin-right:3px;background:#94a3b8;border-radius:50%;animation:bounce 1.1s infinite}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}@keyframes bounce{50%{transform:translateY(-4px)}}.ocr-preview{display:flex;align-items:center;gap:9px;margin:0 15px 8px;padding:8px 10px;border-radius:12px;background:#f1f5f9;width:max-content;max-width:calc(100% - 30px)}.ocr-preview img{width:42px;height:42px;object-fit:cover;border-radius:8px}.ocr-preview span{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ocr-preview button{border:0;background:transparent;color:#dc2626;cursor:pointer}.ocr-preview svg{width:17px}.ai-composer{margin:0 15px 15px;padding:7px;display:flex;align-items:flex-end;gap:7px;border:1px solid var(--line);border-radius:17px;background:#fff}.ai-composer textarea{min-height:43px;max-height:140px;resize:none;flex:1;border:0;outline:0;padding:10px;background:transparent}.attach-button,.send-button{width:43px;height:43px;flex:0 0 43px;display:grid;place-items:center;border-radius:12px;cursor:pointer}.attach-button{background:#f1f5f9;color:#475569}.send-button{background:#2563eb;color:#fff}.send-button:disabled{opacity:.5}.attach-button svg,.send-button svg{width:19px}
.section-intro{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:26px 30px;background:#fff;border:1px solid var(--line);border-radius:23px;margin-bottom:20px}.section-intro h2{font-size:2rem;margin:0 0 5px}.section-intro p:not(.eyebrow){margin:0;color:var(--muted)}.trophy-art{width:90px;height:90px;border-radius:25px;background:#fef3c7;color:#d97706;display:grid;place-items:center}.trophy-art svg{width:43px;height:43px}.shop-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.shop-item{background:#fff;border:2px solid transparent;border-radius:20px;padding:18px;box-shadow:0 8px 28px rgba(15,23,42,.05)}.shop-item.equipped{border-color:#60a5fa;background:#f8fbff}.item-swatch{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;color:rgba(255,255,255,.8);margin-bottom:15px}.item-swatch svg{width:25px}.shop-item h3{margin:0}.shop-item .item-type{color:var(--muted);font-size:.78rem;text-transform:capitalize}.item-price{display:flex;align-items:center;gap:5px;margin:12px 0}.item-price svg{width:17px;color:#d97706}.shop-action{width:100%;min-height:42px;border:0;border-radius:12px;background:#0f172a;color:#fff;font-weight:700;cursor:pointer}.shop-action.buy{background:#dcfce7;color:#15803d}.shop-action:disabled{background:#f1f5f9;color:#94a3b8;cursor:default}.shop-action.equipped{background:#2563eb;color:#fff}.leaderboard{display:grid;gap:10px}.leader-row{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:12px;padding:15px 19px;border:1px solid var(--line);border-radius:17px;background:#fff}.leader-row.you{border-color:#93c5fd;background:#eff6ff}.rank{width:39px;height:39px;border-radius:12px;display:grid;place-items:center;background:#f1f5f9;font-weight:700}.leader-row:nth-child(1) .rank{background:#fef3c7;color:#92400e}.leader-row:nth-child(2) .rank{background:#e2e8f0}.leader-row:nth-child(3) .rank{background:#ffedd5;color:#9a3412}.leader-name strong,.leader-name span{display:block}.leader-name span{font-size:.76rem;color:var(--muted)}.leader-points{display:flex;align-items:center;gap:6px;font-weight:700}.leader-points svg{width:18px;color:#d97706}
.admin-hero{display:flex;align-items:center;gap:20px;padding:28px 31px;border-radius:24px;color:#fff;background:linear-gradient(125deg,#0f172a,#1e3a8a);box-shadow:0 18px 45px rgba(15,23,42,.16)}.admin-hero-icon{width:68px;height:68px;flex:0 0 68px;border-radius:20px;display:grid;place-items:center;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.14)}.admin-hero-icon svg{width:34px;height:34px}.admin-hero h2{font-size:2rem;margin:0 0 4px}.admin-hero p:not(.eyebrow){margin:0;color:#cbd5e1}.admin-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0}.admin-stats article{display:flex;align-items:center;gap:13px;padding:18px;background:#fff;border:1px solid var(--line);border-radius:18px}.admin-stats svg{width:39px;height:39px;padding:9px;border-radius:12px;color:#2563eb;background:#eff6ff}.admin-stats strong,.admin-stats span{display:block}.admin-stats strong{font-size:1.45rem}.admin-stats span{font-size:.76rem;color:var(--muted)}.admin-tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.admin-tool-card>p{margin:-5px 0 17px;line-height:1.5}.admin-primary{width:100%;min-height:47px;border:0;border-radius:13px;background:#2563eb;color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}.admin-primary:hover{background:#1d4ed8}.admin-primary:disabled{opacity:.55;cursor:wait}.admin-primary svg{width:19px}.csv-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.csv-buttons button,.icon-text-button{border:1px solid var(--line);border-radius:11px;background:#f8fafc;color:#334155;font-weight:600;cursor:pointer}.csv-buttons button{min-height:40px}.csv-buttons button:hover,.icon-text-button:hover{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.template-link{min-height:42px;margin-bottom:10px;border:1px solid #bfdbfe;border-radius:12px;background:#eff6ff;color:#1d4ed8;text-decoration:none;font-weight:600;display:flex;align-items:center;justify-content:center;gap:7px}.template-link svg{width:18px}.file-drop{min-height:142px;border:2px dashed #cbd5e1;border-radius:16px;background:#f8fafc;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-align:center;cursor:pointer;padding:20px}.file-drop:hover{border-color:#60a5fa;background:#eff6ff}.file-drop>svg{width:32px;height:32px;color:#2563eb}.file-drop span{font-size:.77rem;color:var(--muted)}.import-preview{margin-top:11px;padding:13px;border:1px solid #bbf7d0;border-radius:13px;background:#f0fdf4}.import-preview>strong{display:block;margin-bottom:6px}.import-preview #import-counts{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:10px}.import-preview #import-counts span{padding:4px 8px;border-radius:999px;background:#dcfce7;color:#166534;font-size:.75rem;font-weight:600}.import-preview .form-error{white-space:pre-line;margin:8px 0}.admin-table-panel{margin-top:18px}.icon-text-button{padding:9px 12px;display:flex;align-items:center;gap:6px}.icon-text-button svg{width:17px}.table-scroll{overflow:auto;border:1px solid var(--line);border-radius:14px}.admin-table{width:100%;min-width:850px;border-collapse:collapse;font-size:.86rem}.admin-table th{padding:11px 12px;text-align:left;background:#f1f5f9;color:#475569;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;position:sticky;top:0}.admin-table td{padding:12px;border-top:1px solid var(--line);vertical-align:middle}.admin-table tbody tr:hover{background:#f8fafc}.admin-table td.number{text-align:right;font-variant-numeric:tabular-nums}.admin-table .student-name strong,.admin-table .student-name span{display:block}.admin-table .student-name span{font-size:.72rem;color:var(--muted)}.item-id-pill{display:inline-block;padding:3px 7px;border-radius:7px;background:#f1f5f9;color:#475569;font-size:.72rem}.recent-imports{display:grid;gap:8px}.recent-import{display:grid;grid-template-columns:1fr auto;gap:10px;padding:11px 13px;border-radius:12px;background:#f8fafc}.recent-import strong,.recent-import span{display:block}.recent-import span{font-size:.75rem;color:var(--muted)}.recent-import time{font-size:.75rem;color:#64748b;white-space:nowrap}
.feature-help{margin:-7px 0 20px;line-height:1.55}.permission-browser{display:grid;grid-template-columns:190px minmax(0,1fr);gap:18px;min-width:0}.class-picker{min-width:0;padding:14px;border-radius:16px;background:#f1f5f9}.class-picker h3,.permission-workspace h3{margin:0 0 10px;font-size:1rem}.class-list{display:grid;gap:7px;max-width:100%}.class-select-button{width:100%;padding:11px 12px;border:1px solid transparent;border-radius:11px;background:#fff;color:#334155;text-align:left;cursor:pointer}.class-select-button strong,.class-select-button span{display:block}.class-select-button span{margin-top:2px;color:var(--muted);font-size:.7rem}.class-select-button.active{border-color:#93c5fd;background:#eff6ff;color:#1d4ed8}.permission-workspace,.permission-workspace>section{display:grid;gap:22px;min-width:0}.permission-list{display:grid;gap:9px;overflow-x:auto}.permission-row{display:grid;grid-template-columns:minmax(160px,1fr) repeat(5,minmax(72px,auto));align-items:center;gap:9px;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:#f8fafc;min-width:585px}.permission-person strong,.permission-person span{display:block}.permission-person span{margin-top:2px;color:var(--muted);font-size:.74rem}.inherit-button{margin-top:7px;padding:4px 7px;border:1px solid #bfdbfe;border-radius:7px;background:#eff6ff;color:#1d4ed8;font-size:.66rem;font-weight:700;cursor:pointer}.inherit-button:disabled{opacity:.5}.feature-switch{display:grid;justify-items:center;gap:5px;color:#64748b;font-size:.68rem;font-weight:700}.feature-switch input{appearance:none;width:42px;height:24px;margin:0;border-radius:999px;background:#cbd5e1;box-shadow:inset 0 0 0 1px rgba(15,23,42,.08);cursor:pointer;position:relative;transition:.18s}.feature-switch input:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(15,23,42,.2);transition:.18s}.feature-switch input:checked{background:#22c55e}.feature-switch input:checked:before{transform:translateX(18px)}.feature-switch input:disabled{opacity:.45;cursor:wait}.feature-switch.overridden:after{content:"Individual";color:#2563eb;font-size:.58rem}.permission-subheading{display:flex;align-items:center;justify-content:space-between;gap:12px}.permission-subheading span{color:var(--muted);font-size:.75rem}.student-browser{display:grid;grid-template-columns:minmax(190px,260px) minmax(0,1fr);gap:12px;min-width:0;min-height:170px}.student-list{display:grid;gap:6px;align-content:start;max-width:100%;max-height:360px;overflow:auto;padding-right:3px}.student-select-button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 11px;border:1px solid var(--line);border-radius:11px;background:#fff;color:#334155;text-align:left;cursor:pointer}.student-select-button strong,.student-select-button small{display:block}.student-select-button small{margin-top:2px;color:var(--muted)}.student-select-button.active{border-color:#93c5fd;background:#eff6ff}.student-open-label{color:#2563eb;font-size:.7rem;font-weight:700}.student-permission-detail{width:100%;min-width:0;max-width:100%;padding:13px;border:1px solid var(--line);border-radius:14px;background:#fff;overflow-x:auto}.student-permission-detail>.muted{margin:45px auto;text-align:center}.student-permission-detail .permission-row{grid-template-columns:1fr repeat(5,minmax(62px,auto));min-width:540px;border:0;padding:4px;background:#fff}
.student-password-reset{margin-top:14px;padding:16px;border-top:1px solid var(--line);background:#f8fafc;border-radius:12px}.student-password-reset-heading h4{margin:0 0 4px}.student-password-reset-heading p{margin:0;line-height:1.45;font-size:.82rem}.student-password-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:9px;margin-top:13px}.student-password-form label{display:grid;gap:5px;color:#334155;font-size:.78rem;font-weight:700}.student-password-form input{width:100%;min-width:0;border:1px solid var(--line);border-radius:10px;background:#fff;padding:10px 11px;outline:none}.student-password-form input:focus{border-color:#60a5fa;box-shadow:0 0 0 3px #dbeafe}.student-password-form .admin-primary{width:auto;min-width:145px;min-height:41px;padding:0 13px}.student-password-status{grid-column:1/-1;margin:3px 0 0;padding:9px 11px;border-radius:9px;background:#f0fdf4;color:#166534;font-size:.8rem}.student-password-status.error{background:#fef2f2;color:#b91c1c}
.permission-workspace>section{display:block;min-width:0}
.admin-stats{grid-template-columns:repeat(5,minmax(0,1fr))}.teacher-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:28px 31px;border-radius:24px;color:#fff;background:linear-gradient(125deg,#0f766e,#2563eb);box-shadow:0 18px 45px rgba(15,118,110,.16)}.teacher-hero h2{margin:0 0 5px;font-size:2rem}.teacher-hero p:not(.eyebrow){margin:0;color:#dbeafe}.teacher-hero>svg{width:70px;height:70px;padding:16px;border-radius:20px;background:rgba(255,255,255,.13)}.teacher-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:18px 0}.teacher-summary article{padding:20px;border:1px solid var(--line);border-radius:18px;background:#fff}.teacher-summary strong,.teacher-summary span{display:block}.teacher-summary strong{font-size:1.55rem}.teacher-summary span{margin-top:3px;color:var(--muted);font-size:.76rem}.teacher-class-filter{display:flex;gap:7px;overflow-x:auto;margin:-4px 0 15px}.teacher-class-filter button{padding:7px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;color:#475569;white-space:nowrap;cursor:pointer}.teacher-class-filter button.active{border-color:#93c5fd;background:#eff6ff;color:#1d4ed8;font-weight:700}.teacher-access-browser{display:grid;grid-template-columns:minmax(210px,285px) minmax(0,1fr);gap:14px}.teacher-access-detail{min-height:230px;padding:18px;border:1px solid var(--line);border-radius:14px;background:#f8fafc}.teacher-access-detail>.muted{text-align:center;margin-top:80px}.teacher-access-heading h3{margin:0}.teacher-access-heading span{color:var(--muted);font-size:.78rem}.teacher-access-detail h4{margin:19px 0 9px}.teacher-feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.teacher-feature-option,.teacher-class-option{display:flex;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer}.teacher-feature-option input,.teacher-class-option input{width:18px;height:18px;accent-color:#2563eb}.teacher-class-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.teacher-class-option{justify-content:center;font-weight:700}
.announcement-manager{margin:18px 0}.announcement-form{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(260px,1.3fr);gap:14px;padding:18px;border:1px solid #bfdbfe;border-radius:18px;background:#f8fbff}.announcement-form>label{display:grid;align-content:start;gap:7px;color:#334155;font-weight:700}.announcement-form input,.announcement-form textarea{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px 13px;outline:none}.announcement-form textarea{min-height:106px;resize:vertical}.announcement-form input:focus,.announcement-form textarea:focus{border-color:#60a5fa;box-shadow:0 0 0 4px #dbeafe}.announcement-form fieldset{grid-column:1/-1;margin:0;padding:13px;border:1px solid var(--line);border-radius:13px;background:#fff}.announcement-form legend{padding:0 6px;color:#334155;font-size:.86rem;font-weight:700}.announcement-class-toolbar{display:flex;gap:7px;margin-bottom:10px}.announcement-class-toolbar button{min-height:36px;padding:7px 11px;border:1px solid #bfdbfe;border-radius:9px;background:#eff6ff;color:#1d4ed8;font-weight:700;cursor:pointer}.announcement-class-options{display:flex;gap:7px;flex-wrap:wrap}.announcement-class-option{display:flex;align-items:center;gap:6px;padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;font-weight:700;cursor:pointer}.announcement-class-option:has(input:checked){border-color:#60a5fa;background:#eff6ff;color:#1d4ed8}.announcement-class-option input{width:18px;height:18px;margin:0;accent-color:#2563eb}.announcement-form-actions{grid-column:1/-1;display:flex;gap:9px}.announcement-form-actions .admin-primary{width:auto;padding:0 18px}.managed-announcements{display:grid;gap:10px;margin-top:16px}.managed-announcement{padding:16px;border:1px solid var(--line);border-radius:15px;background:#fff}.managed-announcement-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.managed-announcement h3{margin:0 0 5px}.managed-announcement-meta{color:var(--muted);font-size:.76rem}.announcement-badges{display:flex;gap:5px;flex-wrap:wrap;margin:9px 0}.announcement-badge{padding:4px 8px;border-radius:999px;background:#e0e7ff;color:#3730a3;font-size:.7rem;font-weight:700}.managed-announcement>p{margin:8px 0 0;line-height:1.5;white-space:pre-wrap}.announcement-actions{display:flex;gap:7px;flex:0 0 auto}.announcement-actions button{min-height:38px;padding:7px 10px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;color:#334155;font-weight:700;cursor:pointer}.announcement-actions button.delete{color:#b91c1c;background:#fff7f7}.record-class-filter{margin:0 0 13px}.record-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px;color:var(--muted);font-size:.84rem}.record-pagination>div{display:flex;gap:7px}.record-pagination button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:980px){.admin-stats{grid-template-columns:repeat(3,1fr)}.teacher-mode .sidebar nav{grid-template-columns:repeat(2,1fr)}.teacher-access-browser{grid-template-columns:1fr}.teacher-manager .student-list{display:grid;grid-template-columns:repeat(2,1fr);max-height:260px}.teacher-class-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.permission-browser{grid-template-columns:1fr}.class-list{display:flex;overflow-x:auto}.class-select-button{min-width:120px}.student-browser{grid-template-columns:1fr}.student-list{max-height:240px}.student-permission-detail .permission-row{min-width:540px}.student-password-form{grid-template-columns:1fr}.student-password-form .admin-primary{width:100%}.teacher-summary{grid-template-columns:1fr}.teacher-feature-grid{grid-template-columns:1fr}.teacher-manager .student-list{grid-template-columns:1fr}.teacher-class-grid{grid-template-columns:repeat(2,1fr)}.announcement-form{grid-template-columns:1fr}.managed-announcement-header{display:grid}.announcement-actions{justify-content:flex-start}}
.toast-region{position:fixed;top:18px;right:18px;z-index:100;display:grid;gap:9px}.toast{max-width:340px;padding:12px 15px;border-radius:13px;background:#166534;color:#fff;box-shadow:0 15px 35px rgba(15,23,42,.2);animation:toast-in .25s ease}.toast.error{background:#b91c1c}@keyframes toast-in{from{opacity:0;transform:translateX(15px)}}
@media(max-width:980px){.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1fr}.admin-stats{grid-template-columns:repeat(2,1fr)}.admin-tools-grid{grid-template-columns:1fr}.sidebar{width:min(86vw,300px);padding:20px 18px calc(20px + env(safe-area-inset-bottom));transform:translateX(-105%);transition:transform .22s ease;box-shadow:16px 0 45px rgba(15,23,42,.2)}.sidebar-brand{padding-bottom:24px}.sidebar-close{display:grid;place-items:center}.sidebar-toggle{display:grid}.sidebar nav{grid-template-columns:1fr}.nav-button{min-height:48px;padding:12px 13px;justify-content:flex-start;flex-direction:row;gap:12px;font-size:.95rem}.nav-button svg{width:21px}.sidebar-footer{display:block}.sidebar-backdrop{display:block;visibility:hidden;opacity:0;transition:opacity .22s ease,visibility .22s ease}.sidebar-open{overflow:hidden}.sidebar-open .sidebar{transform:translateX(0)}.sidebar-open .sidebar-backdrop{visibility:visible;opacity:1}.main-area{margin-left:0}.topbar{height:82px}.page-content{padding-top:22px}}
@media(max-width:620px){.login-card{padding:30px 22px;border-radius:26px}.topbar{padding:15px 17px}.topbar .eyebrow{display:none}.topbar h1{font-size:1.35rem}.coin-pill span{display:none}.page-content{padding-left:13px;padding-right:13px}.welcome-card{padding:25px 21px}.avatar.large{display:none}.welcome-card h2{font-size:1.85rem}.panel{padding:18px}.section-intro{padding:20px}.section-intro>.avatar,.trophy-art{display:none}.shop-grid{grid-template-columns:1fr}.inline-form{display:grid}.dark-button{min-height:46px}.ai-workspace{height:calc(100dvh - 175px);min-height:480px}.ai-tab{font-size:.77rem;gap:4px}.message{max-width:90%}.leader-row{grid-template-columns:43px 1fr auto;padding:13px}.leader-points{font-size:.86rem}.admin-hero{padding:22px 19px}.admin-hero-icon{display:none}.admin-hero h2{font-size:1.65rem}.admin-stats{grid-template-columns:1fr 1fr;gap:8px}.admin-stats article{padding:13px 10px}.admin-stats svg{display:none}.admin-stats strong{font-size:1.15rem}.csv-buttons{grid-template-columns:1fr}.recent-import{grid-template-columns:1fr}.recent-import time{white-space:normal}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
.permission-row{grid-template-columns:minmax(160px,1fr) repeat(6,minmax(72px,auto));min-width:680px}.student-permission-detail .permission-row{grid-template-columns:1fr repeat(6,minmax(62px,auto));min-width:630px}
.announcement-search-toolbar{display:grid;grid-template-columns:minmax(220px,2fr) minmax(130px,1fr) minmax(180px,1.4fr) auto;align-items:end;gap:10px;margin:18px 0 0;padding:14px;border:1px solid var(--line);border-radius:15px;background:#f8fafc}.announcement-search-toolbar label{display:grid;gap:6px;color:#475569;font-size:.74rem;font-weight:700}.announcement-search-toolbar input,.announcement-search-toolbar select{width:100%;min-height:42px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:9px 11px;color:#1e293b;outline:none}.announcement-search-toolbar input:focus,.announcement-search-toolbar select:focus{border-color:#60a5fa;box-shadow:0 0 0 3px #dbeafe}.announcement-result-count{margin:0 0 11px;color:var(--muted);font-size:.78rem;white-space:nowrap}#admin-announcement-list{max-height:560px;overflow-y:auto;overscroll-behavior:contain;padding:2px 7px 2px 2px;scrollbar-gutter:stable}.announcement-empty{margin:5px 0;padding:30px 18px;border:1px dashed #cbd5e1;border-radius:13px;color:var(--muted);text-align:center;background:#f8fafc}
@media(max-width:760px){.announcement-search-toolbar{grid-template-columns:1fr}.announcement-result-count{margin:2px 0 0;white-space:normal}#admin-announcement-list{max-height:500px}.managed-announcement-meta{line-height:1.5}}
.permission-row{grid-template-columns:minmax(180px,1fr) repeat(8,minmax(72px,auto));min-width:920px}.student-permission-detail .permission-row{grid-template-columns:minmax(180px,1fr) repeat(8,minmax(62px,auto));min-width:850px}.bulk-permission-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.bulk-permission-actions .inherit-button{margin-top:0}.announcement-search-toolbar{grid-template-columns:minmax(220px,2fr) minmax(130px,1fr) minmax(180px,1.4fr) auto auto}.coin-manager{margin:18px 0}.coin-form{display:grid;grid-template-columns:minmax(130px,.75fr) minmax(220px,1.5fr) minmax(180px,1fr) minmax(200px,1.2fr);gap:12px;align-items:end}.coin-form label,.leaderboard-edit-form>label:first-child{display:grid;gap:6px;color:#334155;font-size:.78rem;font-weight:700}.coin-form select,.coin-form input,.leaderboard-edit-form input[type="number"]{width:100%;min-height:43px;border:1px solid var(--line);border-radius:11px;background:#fff;padding:10px 11px;outline:none}.coin-form select:focus,.coin-form input:focus,.leaderboard-edit-form input:focus{border-color:#60a5fa;box-shadow:0 0 0 3px #dbeafe}.coin-current{grid-column:1/-2;min-height:45px;display:flex;align-items:center;padding:10px 12px;border-radius:11px;background:#eff6ff;color:#1d4ed8;font-weight:600}.coin-form .admin-primary{grid-column:-2/-1}.leaderboard-edit-form{display:grid;grid-template-columns:minmax(200px,1fr) minmax(280px,1.4fr) auto;gap:12px;align-items:end;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.leaderboard-privacy{min-height:43px;display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#f8fafc;color:#334155;font-weight:600}.leaderboard-privacy input{width:18px;height:18px;accent-color:#2563eb}.leaderboard-edit-form .icon-text-button{min-height:43px;justify-content:center}
@media(max-width:980px){.coin-form{grid-template-columns:1fr 1fr}.coin-current,.coin-form .admin-primary{grid-column:auto}.leaderboard-edit-form{grid-template-columns:1fr 1fr}.leaderboard-edit-form .icon-text-button{grid-column:1/-1}.announcement-search-toolbar{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.coin-form,.leaderboard-edit-form,.announcement-search-toolbar{grid-template-columns:1fr}.leaderboard-edit-form .icon-text-button{grid-column:auto}.announcement-result-count{white-space:normal}}
.permission-list,.student-permission-detail{overflow-x:visible}.permission-row{grid-template-columns:repeat(4,minmax(74px,1fr));min-width:0}.permission-row .permission-person{grid-column:1/-1}.student-permission-detail .permission-row{grid-template-columns:repeat(2,minmax(88px,1fr));min-width:0}.feature-switch{min-width:0;text-align:center}.feature-switch span{overflow-wrap:anywhere}
@media(max-width:620px){.permission-row,.student-permission-detail .permission-row{grid-template-columns:repeat(2,minmax(82px,1fr))}}
.material-manager{margin:18px 0}.material-form{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px;border:1px solid #c7d2fe;border-radius:18px;background:#fafaff}.material-form>label{display:grid;align-content:start;gap:7px;color:#334155;font-weight:700}.material-form input,.material-form textarea{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px 13px;outline:none}.material-form textarea{min-height:90px;resize:vertical}.material-form input:focus,.material-form textarea:focus{border-color:#818cf8;box-shadow:0 0 0 4px #e0e7ff}.material-form .material-description,.material-form fieldset{grid-column:1/-1}.material-form fieldset{margin:0;padding:13px;border:1px solid var(--line);border-radius:13px;background:#fff}.material-form legend{padding:0 6px;color:#334155;font-size:.86rem;font-weight:700}.managed-materials{display:grid;gap:10px;max-height:540px;overflow-y:auto;overscroll-behavior:contain;margin-top:16px;padding:2px 7px 2px 2px;scrollbar-gutter:stable}.managed-material{padding:16px;border:1px solid var(--line);border-radius:15px;background:#fff}.managed-material h3{margin:0 0 5px}.managed-material>p{margin:8px 0;line-height:1.5;white-space:pre-wrap}.material-url{display:block;max-width:100%;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.announcement-actions .material-open{display:flex;align-items:center;min-height:38px;padding:7px 10px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;color:#1d4ed8;font-size:.8rem;font-weight:700;text-decoration:none}.course-material-empty{padding:18px;border:1px dashed #cbd5e1;border-radius:13px;text-align:center;background:#f8fafc}.course-material-link small{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}
@media(max-width:760px){.material-form{grid-template-columns:1fr}.material-form .material-description,.material-form fieldset{grid-column:auto}.managed-material .managed-announcement-header{display:grid}.managed-material .announcement-actions{flex-wrap:wrap}}
