:root{--bg:#f3f5f9;--bg-elevated:#fff;--ink:#0f172a;--muted:#64748b;--line:#e2e8f0;--line-strong:#cbd5e1;--card:#fff;--accent:#1d4ed8;--accent-hover:#2563eb;--accent-soft:#eef3fb;--accent-ink:#1e3a8a;--warn:#b45309;--warn-soft:#fff7ed;--danger:#b91c1c;--danger-soft:#fef2f2;--ok:#047857;--ok-soft:#ecfdf5;--info:#1d4ed8;--info-soft:#eff6ff;--sidebar:#fff;--sidebar-ink:#475569;--font-display:"Plus Jakarta Sans", "Segoe UI", sans-serif;--font-body:"Plus Jakarta Sans", "Segoe UI", sans-serif;--radius:8px;--radius-lg:14px;--shadow:0 1px 2px #0f172a0a, 0 10px 28px #0f172a0d;--shadow-sm:0 1px 2px #0f172a0d;--shadow-focus:0 0 0 3px #1d4ed82e;--ease:.16s cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body,#root{background:radial-gradient(900px 420px at 0% -5%, #1d4ed80f, transparent 55%), radial-gradient(700px 360px at 100% 0%, #0b1f3a0a, transparent 50%), var(--bg);min-height:100%;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:15px;line-height:1.5}::selection{color:var(--ink);background:#1d4ed829}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#cdd3dc padding-box padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#b0b8c4 padding-box padding-box}::-webkit-scrollbar-track{background:0 0}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.03em;color:var(--ink);margin:0 0 .35rem;font-weight:700}h1{font-size:1.7rem;line-height:1.2}h2{letter-spacing:-.02em;font-size:1.02rem}h3{font-size:.95rem}.shell{min-height:100vh;transition:grid-template-columns .2s var(--ease);grid-template-columns:252px minmax(0,1fr);display:grid}.shell.sidebar-collapsed{grid-template-columns:68px minmax(0,1fr)}.sidebar{background:var(--sidebar);border-right:1px solid var(--line);z-index:30;height:100vh;transition:padding var(--ease);flex-direction:column;gap:1.1rem;padding:1rem .7rem;display:flex;position:sticky;top:0;overflow:hidden auto}.shell.sidebar-collapsed .sidebar{align-items:stretch;gap:.65rem;padding:.85rem .5rem .75rem}.shell.sidebar-collapsed .brand{border-bottom:1px solid var(--line);justify-content:center;margin:0;padding:.15rem 0 .75rem}.shell.sidebar-collapsed .brand>div,.shell.sidebar-collapsed .nav-group-label,.shell.sidebar-collapsed .nav-link>span:not(.nav-ico){display:none}.shell.sidebar-collapsed .nav{gap:.25rem}.shell.sidebar-collapsed .nav-group{flex-direction:column;gap:.2rem;display:flex}.shell.sidebar-collapsed .nav-group+.nav-group{border-top:1px solid var(--line);margin-top:.35rem;padding-top:.35rem}.shell.sidebar-collapsed .nav-link{border-left-width:0;border-radius:10px;justify-content:center;align-items:center;width:100%;min-height:42px;margin:0;padding:.55rem .35rem;position:relative}.shell.sidebar-collapsed .nav-link.active{background:var(--accent-soft);color:var(--accent-ink);box-shadow:inset 3px 0 0 var(--accent);border-left-color:#0000}.shell.sidebar-collapsed .nav-ico{opacity:1;width:1.25rem;height:1.25rem}.shell.sidebar-collapsed .nav-ico svg{width:1.15rem;height:1.15rem}.sidebar-collapse-btn{appearance:none;border:1px solid var(--line);width:36px;height:36px;color:var(--muted);cursor:pointer;background:#fff;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;margin-top:auto;margin-left:.35rem;padding:0;display:inline-flex}.sidebar-collapse-btn:hover{color:var(--ink);border-color:var(--line-strong);background:#f8fafc}.shell.sidebar-collapsed .sidebar-collapse-btn{border-radius:10px;width:42px;height:42px;margin-left:auto;margin-right:auto}.collapse-chevron{border-bottom:2px solid;border-right:2px solid;flex-shrink:0;width:.55rem;height:.55rem;display:inline-block;transform:rotate(135deg)}.shell.sidebar-collapsed .collapse-chevron{transform:rotate(-45deg)}.brand{border-bottom:1px solid var(--line);align-items:center;gap:.7rem;margin:0 .2rem;padding:.4rem .55rem .9rem;display:flex}.brand-mark{color:#fff;letter-spacing:-.02em;background:linear-gradient(145deg,#14375f 0%,#0b1f3a 55%,#081628 100%);border-radius:10px;flex-shrink:0;place-items:center;width:36px;height:36px;font-size:.95rem;font-weight:700;display:grid;box-shadow:0 6px 14px #0b1f3a47}.brand strong{letter-spacing:-.025em;color:var(--ink);font-size:.98rem;display:block}.brand small{color:var(--muted);margin-top:.05rem;font-size:.7rem;font-weight:500;display:block}.nav{flex-direction:column;flex:1;gap:.95rem;display:flex}.nav-group-label{letter-spacing:.08em;text-transform:uppercase;color:#9ca3af;padding:0 .85rem .3rem;font-size:.66rem;font-weight:700}.nav-link{color:var(--sidebar-ink);transition:background var(--ease), color var(--ease), border-color var(--ease);border-left:3px solid #0000;border-radius:9px;align-items:center;gap:.7rem;margin:0 .15rem;padding:.52rem .8rem;font-size:.9rem;font-weight:500;text-decoration:none;display:flex}.nav-link:hover{color:var(--ink);background:#f3f4f6;text-decoration:none}.nav-link.active{background:var(--accent-soft);color:var(--accent-ink);border-left-color:var(--accent);font-weight:600}.nav-ico{opacity:.72;color:currentColor;flex-shrink:0;place-items:center;width:1.15rem;height:1.15rem;display:grid}.nav-ico svg{stroke:currentColor;fill:none;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:1.05rem;height:1.05rem}.nav-link.active .nav-ico{opacity:1}.sidebar-foot{border-top:1px solid var(--line);margin:0 .2rem;padding:.8rem .85rem .3rem}.sidebar-hint{color:var(--muted);font-size:.74rem;line-height:1.35}.workspace{flex-direction:column;min-width:0;min-height:100vh;display:flex}.topbar{-webkit-backdrop-filter:blur(12px)saturate(1.2);z-index:20;background:#ffffffe6;border-bottom:1px solid #e5e7ebe6;justify-content:space-between;align-items:center;gap:1rem;padding:.72rem 1.75rem;display:flex;position:sticky;top:0}.topbar-search{max-width:360px;transition:border-color var(--ease), background var(--ease), box-shadow var(--ease);background:#f3f4f6;border:1px solid #0000;border-radius:999px;flex:1;align-items:center;gap:.45rem;padding:.4rem .85rem;display:flex}.topbar-search:focus-within{box-shadow:var(--shadow-focus);background:#fff;border-color:#bfdbfe}.topbar-search svg{stroke:#9ca3af;fill:none;stroke-width:1.75px;stroke-linecap:round;flex-shrink:0;width:1rem;height:1rem}.topbar-search input{width:100%;font:inherit;color:var(--ink);background:0 0;border:0;outline:none;font-size:.88rem}.topbar-search input::placeholder{color:#9ca3af}.icon-btn{appearance:none;border:1px solid var(--line);cursor:pointer;width:36px;height:36px;color:var(--muted);font:inherit;background:#fff;border-radius:999px;place-items:center;padding:0;font-weight:700;line-height:1;display:grid}.icon-btn:hover{color:var(--ink);border-color:var(--line-strong);background:#f9fafb}.icon-btn svg{stroke:currentColor;fill:none;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:1.05rem;height:1.05rem}.notify-btn{position:relative}.notify-btn .notif-badge{box-sizing:border-box;color:#fff;pointer-events:none;background:#dc2626;border:2px solid #fff;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:.68rem;font-weight:700;line-height:1;display:inline-flex;position:absolute;top:-5px;right:-5px}.topbar-crumb{align-items:center;gap:.4rem;font-size:.88rem;display:flex}.crumb-sep{color:#c4c9d2}.topbar-actions{flex-shrink:0;align-items:center;gap:.65rem;display:flex;overflow:visible}.topbar-batch-name{text-overflow:ellipsis;white-space:nowrap;max-width:12rem;color:var(--accent-ink,#1d4ed8);font-size:.88rem;font-weight:600;overflow:hidden}.batch-switcher{align-items:center;gap:.4rem;min-width:0;display:flex}.batch-switcher-select{appearance:none;border:1px solid var(--line);font:inherit;color:var(--ink);cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right .55rem center no-repeat;border-radius:9px;min-width:9rem;max-width:14rem;padding:.38rem 1.75rem .38rem .7rem;font-size:.85rem;font-weight:600}.batch-switcher-select:hover:not(:disabled){border-color:var(--line-strong)}.batch-switcher-select:focus{box-shadow:var(--shadow-focus);border-color:#bfdbfe;outline:none}.batch-switcher-select:disabled{opacity:.6;cursor:not-allowed}.batch-context-banner{background:linear-gradient(135deg,#eff6ff 0%,#f8fafc 100%);border:1px solid #bfdbfe;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.75rem 1rem;display:flex}.batch-context-banner strong{font-size:.95rem;display:block}.batch-context-banner p{color:var(--muted);margin:.15rem 0 0;font-size:.85rem}tr.is-selected-batch td{background:#f8fbff}@media (width<=1100px){.batch-switcher-select{min-width:7.5rem;max-width:11rem}.topbar-batch-name{display:none}}@media (width<=720px){.batch-context-banner .row{flex-wrap:wrap;width:100%}}.env-pill{letter-spacing:.05em;text-transform:uppercase;color:var(--accent-ink);background:var(--accent-soft);border:1px solid #bfdbfe;border-radius:999px;padding:.22rem .6rem;font-size:.7rem;font-weight:700}.avatar{color:#fff;letter-spacing:.04em;width:34px;height:34px;box-shadow:var(--shadow-sm);background:linear-gradient(145deg,#1f2937,#111827);border-radius:999px;place-items:center;font-size:.7rem;font-weight:700;display:grid}.global-search{flex:220px;min-width:140px;max-width:420px;position:relative}.global-search-toggle{appearance:none;border:1px solid var(--line);width:40px;height:40px;color:var(--muted);cursor:pointer;background:#fff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:none}.global-search-toggle svg{stroke:currentColor;fill:none;stroke-width:1.8px;width:1.15rem;height:1.15rem}.global-search-toggle:hover{color:var(--ink);border-color:var(--line-strong)}.global-search-close{appearance:none;color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;flex-shrink:0;padding:0 .35rem;font-size:.82rem;font-weight:600}.global-search .topbar-search{width:100%;max-width:none}.global-search-spin{border:2px solid #cbd5e1;border-top-color:var(--accent);border-radius:999px;flex-shrink:0;width:.85rem;height:.85rem;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.global-search-panel{z-index:40;border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:12px;max-height:min(420px,70vh);padding:.4rem;position:absolute;top:calc(100% + .45rem);left:0;right:0;overflow:auto}.global-search-group+.global-search-group{border-top:1px solid var(--line);margin-top:.35rem;padding-top:.35rem}.global-search-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:.35rem .55rem .2rem;font-size:.68rem;font-weight:700}.global-search-hit{color:var(--ink);border-radius:8px;flex-direction:column;gap:.1rem;padding:.55rem .65rem;text-decoration:none;display:flex}.global-search-hit:hover,.global-search-hit.is-active{background:var(--accent-soft);color:var(--accent-ink);text-decoration:none}.global-search-hit strong{font-size:.88rem;font-weight:600;line-height:1.3}.global-search-hit span{color:var(--muted);font-size:.75rem}.global-search-empty{color:var(--muted);padding:.85rem .7rem;font-size:.88rem}.global-search-footer{appearance:none;border:0;border-top:1px solid var(--line);text-align:left;width:100%;font:inherit;color:var(--accent);cursor:pointer;background:0 0;margin-top:.25rem;padding:.7rem .65rem .45rem;font-size:.82rem;font-weight:600}.global-search-footer:hover{color:var(--accent-hover)}.profile-menu{position:relative}.profile-trigger{appearance:none;border:1px solid var(--line);cursor:pointer;font:inherit;color:var(--ink);background:#fff;border-radius:999px;align-items:center;gap:.55rem;max-width:220px;padding:.2rem .45rem .2rem .2rem;display:flex}.profile-trigger:hover,.profile-menu.is-open .profile-trigger{background:#f8fafc;border-color:#93c5fd}.profile-trigger .avatar{width:30px;height:30px;font-size:.65rem}.profile-trigger-meta{flex-direction:column;align-items:flex-start;min-width:0;line-height:1.15;display:flex}.profile-trigger-meta strong{white-space:nowrap;text-overflow:ellipsis;max-width:120px;font-size:.8rem;font-weight:650;overflow:hidden}.profile-trigger-meta small{color:var(--muted);font-size:.68rem}.profile-caret{color:var(--muted);margin-right:.2rem;font-size:.7rem}.profile-dropdown{border:1px solid var(--line);width:240px;box-shadow:var(--shadow);z-index:45;background:#fff;border-radius:12px;padding:.45rem;position:absolute;top:calc(100% + .45rem);right:0}.profile-dropdown-head{border-bottom:1px solid var(--line);align-items:center;gap:.65rem;margin-bottom:.25rem;padding:.55rem .5rem .7rem;display:flex}.profile-dropdown-head strong{font-size:.88rem;display:block}.profile-dropdown-head small{color:var(--muted);word-break:break-all;font-size:.75rem;display:block}.profile-dropdown-item{appearance:none;text-align:left;width:100%;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:.65rem .7rem;font-size:.88rem;font-weight:600}.profile-dropdown-item:hover{color:var(--danger);background:#fef2f2}@media (width<=720px){.profile-trigger-meta,.profile-caret{display:none}}.main{width:100%;min-width:0;max-width:1400px;padding:1.5rem 1.75rem 2.75rem;overflow-x:hidden}.page{animation:page-in .28s var(--ease) both;min-width:0;max-width:100%}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.35rem;padding-bottom:1rem;display:flex}.page-header-actions{position:relative}.action-menu{flex:none;position:relative}.action-menu>summary{cursor:pointer;list-style:none}.action-menu>summary::-webkit-details-marker{display:none}.action-menu>summary.icon-btn{display:grid}.action-menu-icon{flex:0 0 36px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.action-menu-icon>.icon-btn{width:36px;height:36px}.action-menu-panel{border:1px solid var(--line);min-width:10rem;box-shadow:var(--shadow);z-index:40;background:#fff;border-radius:10px;flex-direction:column;gap:.15rem;padding:.35rem;display:flex;position:absolute;top:calc(100% + .35rem);right:0}.action-menu-panel button,.action-menu-panel a{appearance:none;text-align:left;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:.5rem .65rem;font-size:.88rem;font-weight:600;text-decoration:none}.action-menu-panel button:hover,.action-menu-panel a:hover{background:#f3f4f6}.table-actions{white-space:nowrap;vertical-align:middle;width:1%;overflow:visible}.table-row-actions{grid-auto-columns:max-content;grid-auto-flow:column;justify-content:end;align-items:center;gap:.5rem;display:inline-grid}.table-row-actions .btn{padding:.42rem .75rem;font-size:.82rem}.page-header-actions .action-menu{flex:none}:is(tbody tr:has(.action-menu.is-open),tbody tr:has(.action-menu[open])){z-index:6;position:relative}.page-header p{color:var(--muted);max-width:42rem;margin:.25rem 0 0;font-size:.92rem;line-height:1.45}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--ease), border-color var(--ease);min-width:0;max-width:100%;padding:1.1rem 1.2rem}:is(.panel:has(>table),.panel:has(>.table-scroll)){padding-left:0;padding-right:0;overflow:hidden}.panel:has(>table)>:not(table){padding-left:1.2rem;padding-right:1.2rem}.panel:has(>.table-scroll)>:not(.table-scroll){padding-left:1.2rem;padding-right:1.2rem}.table-scroll{-webkit-overflow-scrolling:touch;width:100%;max-width:100%;overflow-x:auto}.panel>table,.table-scroll>table{margin:0}.panel>h2:first-child,.panel-head{border-bottom:1px solid var(--line);margin-bottom:.85rem;padding-bottom:.65rem}.panel-head{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.panel-head h2{border:none;margin:0;padding:0}.panel-head a{font-size:.82rem;font-weight:600}.grid{gap:1rem;display:grid}.grid.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.detail-tabs{border:1px solid var(--line);background:#f8fafc;border-radius:10px;flex-wrap:wrap;gap:.35rem;margin:0 0 1rem;padding:.35rem;display:flex}.detail-tab{appearance:none;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:.45rem .85rem;font-size:.88rem;font-weight:600}.detail-tab:hover{color:var(--ink);background:#fff}.detail-tab.active{color:var(--accent-ink);box-shadow:var(--shadow-sm);background:#fff;border-color:#bfdbfe}.overview-stack{flex-direction:column;gap:1rem;display:flex}.overview-hero{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1.25rem;display:flex}.overview-title{margin:0;font-size:1.35rem}.overview-hero-metrics{flex-wrap:wrap;gap:1.25rem;display:flex}.overview-hero-metrics .label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:700}.overview-hero-metrics .value{font-family:var(--font-display);color:var(--ink);font-size:1.45rem;font-weight:700}.progress-block{margin-top:.35rem}.progress-track{background:#e5e7eb;border-radius:999px;height:10px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent), var(--accent-hover));border-radius:999px;height:100%;transition:width .25s}.classroom-url{word-break:break-all;color:var(--accent-ink);font-size:.88rem;font-weight:600}.overview-question-list{margin-bottom:.75rem}.stat{border-radius:var(--radius-lg);background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-sm);transition:transform var(--ease), box-shadow var(--ease), border-color var(--ease);padding:1.05rem 1.15rem;position:relative;overflow:hidden}.stat:hover{box-shadow:var(--shadow);border-color:#d8dee6;transform:translateY(-1px)}.stat:before{content:"";background:linear-gradient(180deg, var(--accent-hover), var(--accent));width:3px;position:absolute;top:0;bottom:0;left:0}.stat .label{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.74rem;font-weight:700}.stat .value{font-family:var(--font-display);letter-spacing:-.035em;color:var(--ink);font-variant-numeric:tabular-nums;margin-top:.35rem;font-size:1.9rem;font-weight:700;line-height:1.1}.btn{appearance:none;background:var(--accent);color:#fff;font:inherit;cursor:pointer;transition:background var(--ease), border-color var(--ease), box-shadow var(--ease), transform var(--ease);white-space:nowrap;border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:.35rem;padding:.52rem .95rem;font-size:.88rem;font-weight:600;line-height:1.2;display:inline-flex}.btn:hover{background:var(--accent-hover)}.btn:active{transform:translateY(1px)}.btn:focus-visible{box-shadow:var(--shadow-focus);outline:none}.btn.secondary{background:var(--bg-elevated);color:var(--ink);border-color:var(--line-strong);box-shadow:var(--shadow-sm)}.btn.secondary:hover{background:#f9fafb;border-color:#9ca3af}.btn.danger{background:var(--danger)}.btn.danger:hover{filter:brightness(1.05)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}a.btn{color:#fff;text-decoration:none}a.btn.secondary{color:var(--ink)}a.btn:hover{text-decoration:none}.toolbar{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-wrap:wrap;align-items:center;gap:.55rem;margin-bottom:1rem;padding:.75rem .9rem;display:flex}.toolbar-spacer{flex:1;min-width:.5rem}input,select,textarea{font:inherit;border:1px solid var(--line-strong);color:var(--ink);transition:border-color var(--ease), box-shadow var(--ease);background:#fff;border-radius:9px;padding:.48rem .72rem}input:hover,select:hover,textarea:hover{border-color:#9ca3af}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:var(--shadow-focus);outline:none}textarea{resize:vertical;width:100%;min-height:88px}label{color:var(--muted);flex-direction:column;gap:.35rem;font-size:.8rem;font-weight:600;display:flex}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;display:grid}.form-grid .full{grid-column:1/-1}.field-label{margin-bottom:.35rem;display:block}.choice-row{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.choice-chip{border:1px solid var(--line);color:var(--ink,#0f172a);cursor:pointer;background:#fff;border-radius:999px;padding:.4rem .75rem;font-weight:600}.prefixed-field{border:1px solid var(--line-strong);background:#fff;border-radius:9px;align-items:center;gap:.45rem;min-height:2.35rem;padding:0 .55rem 0 .45rem;display:flex}.prefixed-field:focus-within{border-color:var(--accent);box-shadow:var(--shadow-focus)}.prefixed-field input,.prefixed-field select{box-shadow:none;background:0 0;border:0;flex:1;width:100%;min-width:0;padding-left:.15rem}.prefixed-field input:hover,.prefixed-field select:hover,.prefixed-field input:focus,.prefixed-field select:focus{box-shadow:none;border-color:#0000}.tech-mark{border-radius:6px;flex:none;justify-content:center;align-items:center;width:1.35rem;height:1.35rem;display:inline-flex}.tech-mark svg{width:.95rem;height:.95rem;display:block}.tech-mark.is-logo{background:0 0}.tech-mark.is-logo svg{width:1.35rem;height:1.35rem}.tech-mark-letter{font-size:.72rem;font-weight:700;line-height:1}.name-with-mark{align-items:center;gap:.45rem;display:inline-flex}h1.name-with-mark{gap:.55rem;display:flex}.choice-chip.active{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--accent)}.duration-custom{width:6.5rem}.paper-settings-bar{justify-content:space-between;align-items:center;gap:1rem;display:flex}.paper-presets{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;margin-bottom:1rem;display:grid}.paper-preset{text-align:left;border:1px solid var(--line);cursor:pointer;color:inherit;background:#fff;border-radius:10px;flex-direction:column;align-items:flex-start;gap:.25rem;padding:.75rem .85rem;font-weight:500;display:flex}.paper-preset strong{color:var(--ink,#0f172a)}.paper-preset span{color:var(--muted);font-size:.82rem;font-weight:500}.paper-preset.active{border-color:var(--accent);background:var(--accent-soft)}.topic-select-actions{align-items:center;gap:.35rem}.topic-select-actions .btn{padding:.25rem .55rem;font-size:.78rem}table{border-collapse:collapse;table-layout:auto;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:.78rem .7rem}th{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;background:#f8fafc;font-size:.72rem;font-weight:700}td{word-break:break-word;overflow-wrap:anywhere}td .btn{white-space:nowrap}.panel>table td:first-child,.table-scroll td:first-child{min-width:12rem;max-width:28rem}tbody tr{transition:background var(--ease)}tbody tr:hover td{background:#f8fafc}tbody tr:last-child td{border-bottom:none}td a{color:var(--ink);font-weight:600}td a:hover{color:var(--accent)}.badge{letter-spacing:.02em;text-transform:capitalize;background:var(--accent-soft);color:var(--accent-ink);border:1px solid #0000;border-radius:6px;align-items:center;padding:.18rem .55rem;font-size:.72rem;font-weight:700;display:inline-flex}.badge.draft{color:#4b5563;background:#f3f4f6}.badge.published,.badge.completed{background:var(--ok-soft);color:var(--ok)}.badge.pending{background:var(--warn-soft);color:var(--warn)}.badge.archived{background:var(--danger-soft);color:var(--danger)}.badge.in_progress{color:#4338ca;background:#eef2ff}.badge.grade-badge{background:var(--accent-soft);color:var(--accent-ink)}.badge.Easy,.badge.easy{background:var(--ok-soft);color:var(--ok)}.badge.Medium,.badge.medium{background:var(--warn-soft);color:var(--warn)}.badge.Advanced,.badge.advanced{color:#6d28d9;background:#f5f3ff}.error{background:var(--danger-soft);color:var(--danger);border-radius:var(--radius);border:1px solid #fecaca;margin-bottom:1rem;padding:.8rem 1rem;font-size:.92rem}.notice{color:#1e3a8a;border-radius:var(--radius-lg);background:linear-gradient(135deg,#eff6ff,#f0fdfa);border:1px solid #bfdbfe;align-items:flex-start;gap:.7rem;margin-bottom:1.1rem;padding:.9rem 1.05rem;font-size:.9rem;line-height:1.45;display:flex}.notice:before{content:"i";border:1.5px solid;border-radius:999px;flex-shrink:0;place-items:center;width:1.2rem;height:1.2rem;margin-top:.08rem;font-size:.7rem;font-style:italic;font-weight:700;display:grid}.muted{color:var(--muted)}.stack{flex-direction:column;gap:.75rem;display:flex}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.empty-state{text-align:center;color:var(--muted);border:1px dashed var(--line-strong);border-radius:var(--radius);background:#fafbfc;padding:2.75rem 1.5rem;font-size:.95rem}.empty-state strong{color:var(--ink);letter-spacing:-.02em;margin-bottom:.25rem;font-size:.98rem;display:block}.empty-state p{margin:.15rem 0 0;max-width:32rem;margin-inline:auto}.skeleton{gap:.75rem;display:grid}.skeleton-line{background:linear-gradient(90deg,#eef1f4 0%,#f7f8fa 45%,#eef1f4 90%) 0 0/200% 100%;border-radius:6px;height:.85rem;animation:1.2s ease-in-out infinite shimmer}.skeleton-line.lg{height:2.4rem}.skeleton-line.md{width:60%;height:1.2rem}.skeleton-line.sm{width:40%;height:.7rem}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.meter{align-items:center;gap:.75rem;min-width:10rem;display:flex}.meter-track{background:#e5e7eb;border-radius:999px;flex:1;height:7px;overflow:hidden}.meter-fill{border-radius:inherit;height:100%;transition:width .4s var(--ease);background:linear-gradient(90deg,#60a5fa,#1d4ed8)}.meter-fill.low{background:linear-gradient(90deg,#dc2626,#f59e0b)}.meter-fill.mid{background:linear-gradient(90deg,#60a5fa,#1d4ed8)}.meter-fill.high{background:linear-gradient(90deg,#3b82f6,#1d4ed8)}.meter-value{font-variant-numeric:tabular-nums;text-align:right;min-width:3.2rem;font-size:.88rem;font-weight:700}.eval-card{border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:#fff;padding:1rem 1.1rem}.eval-card.done{background:#f0fdf9;border-color:#bfdbfe}.field-error{color:#b91c1c;margin-top:.35rem;font-size:.82rem;font-weight:600;display:block}.eval-layout{grid-template-columns:minmax(240px,320px) 1fr;align-items:start;gap:1rem;display:grid}.eval-students,.eval-form-panel{flex-direction:column;min-height:480px;max-height:calc(100vh - 11rem);display:flex}.eval-stats{color:var(--muted);flex-wrap:wrap;gap:.65rem;margin-bottom:.65rem;font-size:.82rem;display:flex}.eval-filters{margin-bottom:.75rem}.btn.secondary.active-filter{border-color:var(--accent);color:var(--accent);background:#eef3fb}.eval-student-list{flex-direction:column;flex:1;gap:.35rem;display:flex;overflow:auto}.eval-student-row{text-align:left;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;width:100%;font:inherit;color:inherit;transition:border-color var(--ease), background var(--ease), box-shadow var(--ease);background:#fff;align-items:center;gap:.55rem;padding:.55rem .7rem;display:flex}.eval-student-row:hover{background:#f5f8ff;border-color:#93c5fd}.eval-student-row.active{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent);background:#eef3fb}.eval-student-mark{text-align:center;width:1.1rem;color:var(--accent);font-weight:700}.eval-student-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.eval-questions{flex:1;padding-right:.15rem;overflow:auto}.eval-totals{border:1px solid var(--line);border-radius:var(--radius);background:#f8fafc;flex-wrap:wrap;gap:1.25rem;margin:1rem 0 .75rem;padding:.85rem 1rem;font-size:.95rem;display:flex}.eval-actions{padding-top:.25rem;padding-bottom:.25rem}.detail-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem 1.25rem;margin:0;display:grid}.detail-grid dt{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:.25rem;font-size:.72rem;font-weight:700}.detail-grid dd{margin:0;font-size:.95rem;font-weight:600}.total-marks{font-family:var(--font-display);color:var(--accent);font-size:1.45rem;font-weight:700}.builder{grid-template-columns:minmax(280px,.95fr) minmax(340px,1.15fr);align-items:stretch;gap:1rem;display:grid}.builder.builder-with-summary{grid-template-columns:minmax(280px,.95fr) minmax(340px,1.15fr)}.builder-panel{flex-direction:column;min-width:0;min-height:480px;max-height:min(78vh,820px);display:flex}.builder-selected{min-height:520px}.builder-panel-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.65rem;padding-bottom:.55rem;display:flex}.builder-panel-head h2{margin:0;font-size:1.05rem}.builder-filters{grid-template-columns:1fr 1fr;gap:.45rem;display:grid}.builder-filters>input{grid-column:1/-1}.builder-list{flex-direction:column;flex:1;gap:.55rem;min-height:0;padding-right:.15rem;display:flex;overflow:auto}.builder-item{border:1px solid var(--line);transition:border-color var(--ease), box-shadow var(--ease);background:#fff;border-radius:10px;align-items:flex-start;gap:.65rem;min-width:0;padding:.75rem .85rem;display:flex}.builder-item:hover{box-shadow:var(--shadow-sm);border-color:#93c5fd}.builder-item.selected{background:#f8fbff;border-color:#93c5fd}.builder-item.dragging{opacity:.5}.builder-item-stack{flex-direction:column;gap:.55rem}.builder-item-top{align-items:flex-start;gap:.55rem;width:100%;min-width:0;display:flex}.builder-item-foot{border-top:1px solid #e8eef7;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.55rem;margin-left:1.35rem;padding-top:.45rem;display:flex}.builder-item-main{flex:1;min-width:0}.builder-item-text{overflow-wrap:anywhere;word-break:break-word;color:var(--ink);font-size:.92rem;line-height:1.45}.builder-qnum{color:var(--muted);margin-right:.25rem}.builder-item-meta{color:var(--muted);margin-top:.3rem;font-size:.78rem}.builder-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem;display:flex}.builder-add-btn{flex-shrink:0;place-items:center;width:34px;height:34px;padding:0;font-size:1.15rem;line-height:1;display:inline-grid}.btn.icon-action{place-items:center;width:34px;min-width:34px;height:34px;padding:0;font-size:1rem;line-height:1;display:inline-grid}.drag-handle{cursor:grab;color:#9ca3af;-webkit-user-select:none;user-select:none;letter-spacing:-.1em;flex-shrink:0;padding-top:.15rem}.marks-input{flex-direction:column;gap:.2rem;width:72px;font-size:.75rem;display:flex}.marks-input input{width:100%}.builder-fulfillment{padding:.9rem 1rem}.builder-fulfillment-grid{grid-template-columns:1.4fr 1fr 1fr;align-items:start;gap:1rem;display:grid}.builder-fulfillment .summary-block{margin-bottom:0}.fulfillment-inline{flex-direction:column;gap:.2rem;display:flex}.fulfillment-inline li{justify-content:space-between;gap:.75rem;font-size:.85rem;display:flex}.marks-summary{border:1px solid var(--line);background:#fafbfc;border-radius:9px;margin-top:.9rem;padding:.85rem .9rem}.marks-summary.compact{border:none;border-top:1px solid var(--line);background:0 0;border-radius:0;margin-top:1rem;padding:.5rem 0 0}.marks-summary h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:.5rem;font-size:.85rem;font-weight:700}.marks-summary dl{margin:0}.marks-row{justify-content:space-between;gap:1rem;padding:.25rem 0;font-size:.92rem;display:flex}.marks-row dt{color:var(--muted);margin:0;font-weight:500}.marks-row dd{font-variant-numeric:tabular-nums;margin:0;font-weight:600}.marks-row.total{border-top:1px solid var(--line);font-weight:700;font-family:var(--font-display);margin-top:.4rem;padding-top:.55rem;font-size:1.1rem}.marks-row.total dt{color:var(--ink);font-weight:700}.blueprint-panel h3{margin:0;font-size:.9rem}.blueprint-panel h4{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 .45rem;font-size:.78rem;font-weight:700}.blueprint-layout{grid-template-columns:minmax(260px,1.1fr) minmax(280px,.9fr);align-items:start;gap:1.25rem;display:grid}.blueprint-col-head{justify-content:space-between;align-items:baseline;margin-bottom:.55rem;display:flex}.blueprint-topics,.blueprint-quotas{min-width:0}.blueprint-quotas{border:1px solid var(--line);background:#fafbfc;border-radius:9px;flex-direction:column;gap:.85rem;padding:.9rem 1rem;display:flex}.check-grid{border:1px solid var(--line);background:#fff;border-radius:9px;flex-direction:column;align-items:stretch;gap:.1rem;max-height:320px;padding:.35rem .45rem;display:flex;overflow:auto}label.check-item,.check-item{cursor:pointer;color:var(--ink);text-align:left;flex-direction:row;justify-content:flex-start;align-items:center;gap:.55rem;width:100%;margin:0;padding:.28rem .2rem;font-size:.88rem;font-weight:500;display:flex}label.check-item span,.check-item span{line-height:1.3}label.check-item input[type=checkbox],.check-item input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--accent);flex:none;margin:0}.blueprint-opt{margin-top:.65rem!important;padding-left:.2rem!important}.dist-rows{flex-direction:column;gap:.4rem;display:flex}label.dist-row,.dist-row{color:var(--ink);flex-direction:row;justify-content:space-between;align-items:center;gap:.75rem;margin:0;font-size:.86rem;font-weight:600;display:flex}.dist-row span{flex:1;min-width:0}.dist-row input{text-align:right;flex:0 0 72px;width:72px}.dist-total{margin-top:.35rem;font-size:.8rem}.blueprint-total-field{color:var(--ink);flex-direction:row;justify-content:space-between;align-items:center;gap:.75rem;margin:0;font-size:.86rem;font-weight:600;display:flex}.blueprint-total-field input{text-align:right;flex:0 0 88px;width:88px}.quota-block{padding-top:.15rem}.dist-total.mismatch,.fulfillment-list li.mismatch,.summary-block.total-line.mismatch{color:#1d4ed8;font-weight:600}.topic-chips{flex-wrap:wrap;gap:.35rem;display:flex}.topic-chip{background:var(--accent-soft);color:var(--accent-ink);border-radius:6px;align-items:center;padding:.2rem .5rem;font-size:.75rem;font-weight:600;line-height:1.3;display:inline-flex}.builder-hint{margin:0 0 .65rem;font-size:.82rem}.blueprint-subpanel{border:1px solid var(--line);background:#fafbfc;border-radius:9px;margin:.75rem 0 1rem;padding:.85rem .9rem}.blueprint-list{flex-direction:column;gap:.45rem;display:flex}.blueprint-pick{text-align:left;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;display:flex}.shortage-panel{background:#f5f8ff;border:1px solid #fcd34d;border-radius:9px;margin-top:1rem;padding:.9rem 1rem}.shortage-panel h3{margin-top:0}.shortage-panel ul{margin:.5rem 0 .85rem;padding-left:1.1rem}.blueprint-summary{min-height:auto}@media (width<=1200px){.builder{grid-template-columns:1fr}.builder-panel{min-height:360px;max-height:none}.builder-fulfillment-grid{grid-template-columns:1fr 1fr}}@media (width<=720px){.builder-fulfillment-grid{grid-template-columns:1fr}}.summary-block{margin-bottom:.85rem}.summary-block h3{margin-bottom:.35rem}.summary-block p{margin:0;font-size:.88rem}.fulfillment-list{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.fulfillment-list li,.summary-block.total-line{justify-content:space-between;gap:.75rem;font-size:.86rem;display:flex}.summary-block.total-line{border-top:1px solid var(--line);padding-top:.55rem}.modal-backdrop{z-index:50;background:#0f172a73;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.replace-modal{width:min(720px,100%);max-height:80vh;margin:0;overflow:auto}.question-review{flex-direction:column;gap:.95rem;margin:0;padding-left:1.25rem;display:flex}.question-review li{padding-left:.25rem}.import-steps{flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;display:flex}.import-step{color:var(--muted);align-items:center;gap:.45rem;font-size:.88rem;font-weight:600;display:flex}.import-step-num{border:1px solid var(--line-strong);background:#fff;border-radius:999px;place-items:center;width:1.4rem;height:1.4rem;font-size:.75rem;display:grid}.import-step.active{color:var(--ink)}.import-step.active .import-step-num{background:var(--accent);border-color:var(--accent);color:#fff}.import-step.done{color:var(--accent-ink)}.import-step.done .import-step-num{background:var(--accent-soft);color:var(--accent-ink);border-color:#93c5fd}.page-tabs{border-bottom:1px solid var(--line);gap:.25rem;margin-bottom:1rem;display:flex}.page-tabs button,.page-tabs a{appearance:none;font:inherit;color:var(--muted);cursor:pointer;transition:color var(--ease), border-color var(--ease);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.65rem .85rem;font-weight:600;text-decoration:none}.page-tabs button:hover,.page-tabs a:hover{color:var(--ink)}.page-tabs button.active,.page-tabs a.active{color:var(--ink);border-bottom-color:var(--accent)}.topbar-left{align-items:center;gap:.65rem;min-width:0;display:flex}.nav-toggle{appearance:none;border:1px solid var(--line-strong);width:36px;height:36px;font:inherit;color:var(--ink);cursor:pointer;background:#fff;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:none}.nav-toggle:hover{background:#f8fafc}.nav-toggle-bars{background:linear-gradient(currentColor,currentColor) top/100% 2px no-repeat,linear-gradient(currentColor,currentColor) 50%/100% 2px no-repeat,linear-gradient(currentColor,currentColor) bottom/100% 2px no-repeat;width:14px;height:10px;display:inline-block}.nav-backdrop{display:none}.skip-link{z-index:100;background:var(--accent);color:#fff;border-radius:8px;padding:.5rem .85rem;font-weight:600;position:absolute;top:.75rem;left:-9999px}.skip-link:focus{left:.75rem}.toast-stack{z-index:80;pointer-events:none;flex-direction:column;gap:.5rem;max-width:min(360px,100vw - 2rem);display:flex;position:fixed;bottom:1rem;right:1rem}.toast{pointer-events:auto;color:#fff;box-shadow:var(--shadow);animation:page-in .22s var(--ease) both;background:#111827;border-radius:10px;align-items:flex-start;gap:.65rem;padding:.7rem .75rem .7rem .95rem;font-size:.88rem;font-weight:600;display:flex}.toast-message{flex:1;min-width:0}.toast-dismiss{appearance:none;color:inherit;opacity:.75;cursor:pointer;background:0 0;border:0;flex-shrink:0;padding:0 .15rem;font-size:1.15rem;line-height:1}.toast-dismiss:hover{opacity:1}.toast-success{background:#065f46}.toast-error{background:#991b1b}.toast-info{background:#1e3a8a}.notice-dismissible{justify-content:space-between;align-items:center}.notice-dismissible:before{display:none}.notice-dismiss{flex-shrink:0}@media (width<=960px){.shell,.shell.sidebar-collapsed{grid-template-columns:1fr}.nav-toggle{display:inline-flex}.sidebar-collapse-btn{display:none}.nav-backdrop{z-index:35;cursor:pointer;background:#0f172a66;border:0;display:block;position:fixed;inset:0}.sidebar,.shell.sidebar-collapsed .sidebar{z-index:40;width:min(280px,86vw);height:100vh;max-height:none;transition:transform var(--ease);box-shadow:var(--shadow);align-items:stretch;padding:1rem .7rem;position:fixed;top:0;bottom:0;left:0;transform:translate(-105%)}.shell.sidebar-collapsed .brand>div,.shell.sidebar-collapsed .nav-group-label,.shell.sidebar-collapsed .nav-link>span:not(.nav-ico){display:revert}.shell.sidebar-collapsed .brand{justify-content:flex-start;margin:0 .2rem;padding:.4rem .55rem .9rem}.shell.sidebar-collapsed .nav{gap:.95rem}.shell.sidebar-collapsed .nav-group{display:block}.shell.sidebar-collapsed .nav-group+.nav-group{border-top:0;margin-top:0;padding-top:0}.shell.sidebar-collapsed .nav-link{min-height:0;box-shadow:none;border-left-width:3px;justify-content:flex-start;padding:.52rem .8rem}.shell.sidebar-collapsed .nav-link.active{box-shadow:none}.shell.sidebar-collapsed .sidebar-collapse-btn{display:none}.shell.nav-open .sidebar{transform:none}.grid.stats{grid-template-columns:repeat(2,1fr)}.overview-hero{flex-direction:column}.form-grid{grid-template-columns:1fr}.main{padding:1rem}.topbar{padding:.65rem 1rem}.builder,.builder.builder-with-summary{grid-template-columns:1fr}.builder-panel{min-height:0;max-height:none}.builder-fulfillment-grid{grid-template-columns:1fr}.builder-item-foot{margin-left:0}.blueprint-layout,.paper-presets{grid-template-columns:1fr}.paper-settings-bar{flex-direction:column;align-items:flex-start}.eval-layout{grid-template-columns:1fr}.eval-students,.eval-form-panel{max-height:none}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.page{animation:none}}.login-page{background:#fff;grid-template-columns:minmax(280px,.95fr) minmax(320px,1.05fr);min-height:100dvh;display:grid}.login-brand-panel{color:#e8eef8;background:radial-gradient(900px 520px at 10% 0,#2563eb47,#0000 55%),radial-gradient(700px 420px at 90% 100%,#00000047,#0000 50%),linear-gradient(160deg,#081628 0%,#0b1f3a 48%,#14375f 100%);align-items:center;padding:3rem 3.25rem;display:flex;position:relative;overflow:hidden}.login-brand-glow{pointer-events:none;background:radial-gradient(circle,#60a5fa38,#0000 68%);border-radius:50%;width:420px;height:420px;position:absolute;inset:auto -20% -30% auto}.login-brand-inner{z-index:1;max-width:28rem;animation:page-in .36s var(--ease) both;position:relative}.login-brand-mark-row{align-items:center;gap:.85rem;margin-bottom:2.4rem;display:flex}.login-hero-mark{background:#ffffff24;border-radius:12px;width:44px;height:44px;font-size:1.05rem;box-shadow:inset 0 0 0 1px #ffffff2e}.login-brand-name{letter-spacing:-.03em;color:#fff;font-size:1.2rem;display:block}.login-brand-mark-row small{color:#e8eef8b8;margin-top:.1rem;font-size:.78rem;font-weight:500;display:block}.login-brand-headline{letter-spacing:-.035em;color:#fff;margin:0 0 .85rem;font-size:clamp(1.65rem,2.4vw,2.15rem);font-weight:700;line-height:1.18}.login-brand-copy{color:#e8eef8d1;max-width:26rem;margin:0 0 1.75rem;font-size:.98rem;line-height:1.55}.login-brand-points{flex-direction:column;gap:.7rem;margin:0;padding:0;list-style:none;display:flex}.login-brand-points li{color:#e8eef8e0;padding-left:1.15rem;font-size:.9rem;line-height:1.4;position:relative}.login-brand-points li:before{content:"";background:#60a5fa;border-radius:999px;width:.45rem;height:.45rem;position:absolute;top:.45rem;left:0;box-shadow:0 0 0 3px #60a5fa38}.login-form-panel{background:radial-gradient(700px 360px at 100% 0,#1d4ed80f,#0000 55%),#f3f5f9;justify-content:center;align-items:center;padding:2.5rem 1.5rem;display:flex}.login-form-wrap{width:min(400px,100%);animation:page-in .36s var(--ease) both}.login-form-mobile-brand{align-items:center;gap:.7rem;margin-bottom:1.75rem;display:none}.login-form-mobile-brand strong{letter-spacing:-.02em;font-size:1rem;display:block}.login-form-mobile-brand small{color:var(--muted);font-size:.72rem;font-weight:500;display:block}.login-form-head{margin-bottom:1.35rem}.login-form-head h2{letter-spacing:-.03em;margin:0 0 .35rem;font-size:1.7rem}.login-form-head p{color:var(--muted);margin:0;font-size:.92rem}.login-segment{background:#e8eef8;border:1px solid #e7e5e4;border-radius:12px;grid-template-columns:1fr 1fr;gap:.25rem;margin-bottom:1.25rem;padding:.25rem;display:grid}.login-segment button{appearance:none;color:var(--muted);font:inherit;cursor:pointer;transition:background var(--ease), color var(--ease), box-shadow var(--ease);background:0 0;border:0;border-radius:9px;padding:.62rem .75rem;font-size:.9rem;font-weight:600}.login-segment button:hover{color:var(--ink)}.login-segment button.is-active{color:var(--accent-ink);box-shadow:var(--shadow-sm);background:#fff}.login-form{flex-direction:column;gap:.95rem;display:flex}.login-form label{gap:.4rem}.login-form input{background:#fff;border-color:#d1d5db;padding:.7rem .85rem}.login-form input:focus{border-color:var(--accent)}.login-form input:-webkit-autofill{-webkit-text-fill-color:var(--ink);transition:background-color 9999s ease-out;box-shadow:inset 0 0 0 1000px #fff}.login-form input:-webkit-autofill:hover{-webkit-text-fill-color:var(--ink);transition:background-color 9999s ease-out;box-shadow:inset 0 0 0 1000px #fff}.login-form input:-webkit-autofill:focus{-webkit-text-fill-color:var(--ink);transition:background-color 9999s ease-out;box-shadow:inset 0 0 0 1000px #fff}.login-form .error{margin:0}.login-submit{justify-content:center;width:100%;margin-top:.35rem;padding:.78rem 1rem;font-size:.95rem}@media (width<=900px){.login-page{grid-template-columns:1fr}.login-brand-panel{display:none}.login-form-panel{align-items:flex-start;min-height:100dvh;padding:2rem 1.25rem 3rem}.login-form-mobile-brand{display:flex}.login-form-wrap{margin-top:1.5rem}}.student-assess-card{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.75rem;display:flex}.exam-shell{background:radial-gradient(900px 420px at 0% -5%, #1d4ed812, transparent 55%), var(--bg);flex-direction:column;min-height:100vh;display:flex}.exam-topbar{border-bottom:1px solid var(--line);z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1.25rem;display:flex;position:sticky;top:0}.exam-brand{align-items:center;gap:.7rem;min-width:0;display:flex}.exam-brand strong{letter-spacing:-.02em;font-size:1rem;display:block}.exam-brand small{color:var(--muted);margin-top:.1rem;font-size:.78rem;display:block}.exam-body{width:100%;max-width:1180px;margin:0 auto;padding:1rem 1.25rem 2rem}.exam-error{margin:.75rem 1.25rem 0}.exam-rules{color:var(--muted);margin:1rem 0 0;padding-left:1.2rem;font-size:.92rem;line-height:1.55}.take-layout{flex-direction:column;gap:1rem;display:flex}.take-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.take-timer{text-align:right;min-width:7rem}.take-timer strong{font-variant-numeric:tabular-nums;letter-spacing:.04em;font-size:1.6rem;display:block}.take-timer.warn strong{color:var(--warn)}.take-timer.danger strong{color:var(--danger)}.exam-mobile-status{background:var(--bg-elevated);border-bottom:1px solid var(--line);z-index:15;justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem 1rem;font-size:.85rem;font-weight:600;display:none;position:sticky;top:0}.danger-text{color:var(--danger)}.warn-text{color:var(--warn)}.ok-text{color:var(--ok)}.eval-sticky-student{background:var(--accent-soft);border:1px solid var(--line);border-radius:var(--radius);z-index:5;justify-content:space-between;align-items:center;gap:.75rem;margin:0 0 .85rem;padding:.65rem .75rem;display:flex;position:sticky;top:0}.eval-q-focus{flex-wrap:wrap;gap:.45rem;margin-bottom:.75rem}.eval-q-pos{align-self:center;font-size:.85rem}.password-field{align-items:center;gap:.35rem;display:flex}.password-field input{flex:1;min-width:0}.password-toggle{appearance:none;border:1px solid var(--line);font:inherit;color:var(--muted);cursor:pointer;background:#fff;border-radius:8px;flex-shrink:0;padding:.45rem .65rem;font-size:.78rem;font-weight:600}.password-toggle:hover{color:var(--ink);border-color:var(--line-strong)}.field-hint{margin-top:.3rem;font-size:.8rem;display:block}.take-body{grid-template-columns:minmax(0,1fr) 240px;align-items:start;gap:1rem;display:grid}.take-options{gap:.55rem}.take-option{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-elevated);color:var(--ink);cursor:pointer;flex-direction:row;align-items:flex-start;gap:.65rem;margin:0;padding:.65rem .75rem;font-weight:500;display:flex}.take-option:hover{background:#f5f8ff;border-color:#93c5fd}.take-option input{accent-color:var(--accent);flex-shrink:0;margin-top:.2rem}.take-actions{flex-wrap:wrap;margin-top:1rem}.take-prog-meta{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);margin:.75rem 0 1rem;padding:.75rem .9rem;font-size:.9rem}.take-prog-meta p{margin:.35rem 0}.take-sample-io{grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.5rem;display:grid}.take-sample-io pre,.take-run-io pre{white-space:pre-wrap;word-break:break-word;background:#0f172a0a;border-radius:6px;max-height:8rem;margin:.25rem 0 0;padding:.45rem .55rem;font-size:.8rem;overflow:auto}.take-run-panel{margin-top:.85rem}.take-run-actions{flex-wrap:wrap;align-items:center;gap:.65rem}.take-run-hint{font-size:.85rem}.take-run-results{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);margin-top:.75rem;padding:.75rem .85rem}.take-run-test-row{justify-content:space-between;gap:.75rem;width:100%;display:flex}.take-run-io{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;width:100%;margin-top:.45rem;display:grid}.take-run-note{margin:.65rem 0 0;font-size:.82rem}.take-run-results .result-test{flex-direction:column;align-items:stretch;gap:.35rem;display:flex}.take-nav-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;display:grid}.take-nav-btn{border:1px solid var(--line);background:var(--bg);border-radius:var(--radius);cursor:pointer;padding:.4rem .35rem;font-size:.85rem}.take-nav-btn:focus-visible{box-shadow:var(--shadow-focus);outline:none}.take-nav-btn.answered{background:var(--ok-soft);border-color:#bfdbfe}.take-nav-btn.current{border-color:var(--accent);background:var(--accent-soft);font-weight:600}.code-editor{border-radius:var(--radius);background:#0f172a;border:1px solid #1e293b;grid-template-columns:auto 1fr;min-height:280px;display:grid;overflow:hidden}.code-editor-gutter{color:#64748b;text-align:right;-webkit-user-select:none;user-select:none;background:#0b1220;border-right:1px solid #1e293b;flex-direction:column;padding:.75rem .45rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.82rem;line-height:1.45;display:flex}.code-editor-gutter span{padding:0 .35rem}.code-editor .code-area{color:#e2e8f0;resize:vertical;min-height:280px;box-shadow:none;background:0 0;border:0;border-radius:0;padding:.75rem}.code-editor .code-area:focus{box-shadow:none;border-color:#0000;outline:none}.code-editor .code-area::placeholder{color:#64748b}.code-area,.code-preview{white-space:pre-wrap;tab-size:4;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.9rem;line-height:1.45}.code-preview{color:#e2e8f0;border-radius:var(--radius);background:#0f172a;max-height:280px;margin:.4rem 0 .75rem;padding:.75rem;overflow:auto}.eval-submission{margin:.5rem 0 .75rem}.modal-card{width:min(420px,100%)}.replace-modal{width:min(720px,100%);max-height:80vh;overflow:auto}.result-hero .result-kicker{text-transform:uppercase;letter-spacing:.06em;margin:0 0 .35rem;font-size:.72rem;font-weight:700}.result-assessment-name{margin:.35rem 0;font-size:1.05rem;font-weight:600}.result-meta-grid{border:1px solid var(--line);border-radius:var(--radius);background:#f8fafc;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin:1rem 0;padding:.85rem 1rem;display:grid}.result-meta-grid .label,.result-scorecard .label{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:.2rem;font-size:.72rem;font-weight:700;display:block}.result-meta-grid strong{font-variant-numeric:tabular-nums;font-size:1.15rem}.result-scorecard{align-items:flex-start}.result-grade{color:var(--accent);font-size:1.35rem}.result-pending-msg{color:var(--muted);margin:.75rem 0 0}.result-questions-head{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.85rem;display:flex}.result-questions-head h2{margin:0}.result-q-list{flex-direction:column;gap:.85rem;display:flex}.result-q-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border-left:3px solid var(--line-strong);overflow:hidden}.result-q-card.tone-ok{border-left-color:var(--ok)}.result-q-card.tone-bad{border-left-color:var(--danger)}.result-q-card.tone-mid{border-left-color:var(--warn)}.result-q-top{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:.85rem 1rem;padding:1rem 1.1rem;display:grid}.result-q-index{background:var(--accent-soft);width:2rem;height:2rem;color:var(--accent-ink);border-radius:999px;flex-shrink:0;place-items:center;font-size:.85rem;font-weight:700;display:grid}.result-q-text{color:var(--ink);margin:0 0 .5rem;font-weight:600;line-height:1.45}.result-type-pill{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);background:#f1f5f9;border-radius:999px;padding:.18rem .55rem;font-size:.7rem;font-weight:700;display:inline-block}.result-q-score{text-align:right;min-width:4.5rem}.result-q-score .label{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:.15rem;font-size:.68rem;font-weight:700;display:block}.result-q-score strong{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:1.15rem}.result-q-score-max{color:var(--muted);font-size:.9rem;font-weight:600}.result-q-body{flex-direction:column;gap:.65rem;padding:0 1.1rem 1.05rem 3.85rem;display:flex}.result-outcome{margin:0;font-size:.92rem;font-weight:600}.result-outcome.tone-ok{color:var(--ok)}.result-outcome.tone-bad{color:var(--danger)}.result-outcome.tone-mid{color:var(--warn)}.result-prog-summary{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-bottom:.55rem;display:flex}.result-prog-status{text-transform:capitalize;font-size:.82rem}.result-chip{border:1px solid #0000;border-radius:999px;align-items:center;padding:.22rem .65rem;font-size:.75rem;font-weight:700;display:inline-flex}.result-chip.ok{background:var(--ok-soft);color:var(--ok);border-color:#a7f3d0}.result-chip.bad{background:var(--danger-soft);color:var(--danger);border-color:#fecaca}.result-test-list{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.result-test{border-radius:var(--radius);border:1px solid var(--line);background:#f8fafc;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.65rem;padding:.55rem .75rem;font-size:.86rem;display:grid}.result-test.ok{background:var(--ok-soft);border-color:#a7f3d0}.result-test.bad{background:var(--danger-soft);border-color:#fecaca}.result-test-label{color:var(--ink);min-width:0;font-weight:600}.result-test-status{text-transform:uppercase;letter-spacing:.03em;font-size:.78rem;font-weight:700}.result-test.ok .result-test-status{color:var(--ok)}.result-test.bad .result-test-status{color:var(--danger)}.result-test-marks{font-variant-numeric:tabular-nums;color:var(--muted);font-size:.8rem;font-weight:600}.student-result-list{flex-direction:column;gap:.65rem;display:flex}.student-result-row{border:1px solid var(--line);border-radius:var(--radius-lg);color:inherit;transition:border-color var(--ease), background var(--ease), box-shadow var(--ease);background:#f8fafc;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem 1.25rem;padding:.95rem 1.05rem;text-decoration:none;display:grid}.student-result-row:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm);color:inherit;background:#fff}.student-result-row h3{margin:0 0 .2rem;font-size:1rem}.student-result-meta{color:var(--muted);flex-wrap:wrap;gap:.35rem .85rem;font-size:.82rem;display:flex}.student-result-side{flex-shrink:0;align-items:center;gap:.75rem;display:flex}.student-result-pct{font-variant-numeric:tabular-nums;text-align:right;min-width:3.25rem;font-size:1.05rem;font-weight:700}.student-result-arrow{color:var(--muted);font-size:1.1rem;line-height:1}@media (width<=900px){.take-body,.take-sample-io,.take-run-io{grid-template-columns:1fr}.student-assess-card{flex-direction:column}.result-meta-grid{grid-template-columns:1fr}.exam-topbar{flex-wrap:wrap}.result-q-top{grid-template-columns:auto minmax(0,1fr)}.result-q-score{text-align:left;grid-column:2}.result-q-body{padding-left:1.1rem}.student-result-row{grid-template-columns:1fr}.student-result-side{justify-content:space-between}}.dash-welcome{border-bottom:none;margin-bottom:1.1rem;padding-bottom:.25rem}.stat-link{margin-top:.45rem;font-size:.78rem;font-weight:600;display:inline-block}.dash-subtle{font-size:.78rem}.dash-charts-row{grid-template-columns:1.2fr 1fr;gap:1rem}.dash-bar-chart{align-items:flex-end;gap:.65rem;height:180px;padding:.5rem .25rem 0;display:flex}.dash-bar-col{flex-direction:column;flex:1;align-items:center;gap:.4rem;height:100%;display:flex}.dash-bar-track{background:#f3f4f6;border-radius:8px 8px 4px 4px;flex:1;align-items:flex-end;width:100%;max-width:42px;display:flex;overflow:hidden}.dash-bar-fill{width:100%;min-height:4px;transition:height .32s var(--ease);background:linear-gradient(#60a5fa,#1d4ed8);border-radius:8px 8px 4px 4px}.dash-bar-label{color:var(--muted);font-size:.72rem;font-weight:600}.dash-donut-layout{flex-wrap:wrap;justify-content:center;align-items:center;gap:1.25rem;padding:.35rem 0 .5rem;display:flex}.dash-donut-wrap{width:160px;height:160px;position:relative}.dash-donut{width:100%;height:100%}.dash-donut-center{text-align:center;pointer-events:none;place-content:center;display:grid;position:absolute;inset:0}.dash-donut-center strong{letter-spacing:-.03em;font-size:1.45rem;line-height:1.1}.dash-donut-center span{color:var(--muted);font-size:.72rem;font-weight:600}.dash-legend{flex-direction:column;gap:.55rem;min-width:140px;margin:0;padding:0;list-style:none;display:flex}.dash-legend li{color:var(--muted);align-items:center;gap:.5rem;font-size:.86rem;display:flex}.dash-legend strong{color:var(--ink);margin-left:auto}.dash-legend .swatch{border-radius:999px;flex-shrink:0;width:10px;height:10px}.dash-table th{background:0 0}.dash-attention .attention-ico{background:var(--danger-soft);width:1.25rem;height:1.25rem;color:var(--danger);vertical-align:middle;border-radius:999px;place-items:center;margin-right:.4rem;font-size:.75rem;font-weight:800;display:inline-grid}.link-action{font-size:.88rem;color:var(--accent)!important;font-weight:700!important}.continue-card{background:linear-gradient(135deg, #1d4ed812, transparent 55%), var(--card);border-color:#c7d7f5}.continue-card-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.continue-eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:.25rem;font-size:.72rem;font-weight:700}.continue-timer{border:1px solid var(--line);text-align:right;background:#fff;border-radius:12px;min-width:96px;padding:.55rem .85rem}.continue-timer strong{font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--accent-ink);font-size:1.35rem;display:block}.continue-progress{margin:1rem 0 1.1rem}.continue-cta{justify-content:center;min-width:200px;display:inline-flex}.upcoming-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.upcoming-card h3{margin-bottom:.25rem}.upcoming-when{color:var(--ink);margin:.65rem 0 .9rem;font-size:.86rem;font-weight:600}.perf-layout{grid-template-columns:1.4fr auto;align-items:center;gap:1.25rem;display:grid}.dash-line-chart{width:100%;max-width:420px;height:auto}.perf-stats{flex-direction:column;gap:.75rem;min-width:160px;display:flex}.perf-stat{border:1px solid var(--line);background:#f9fafb;border-radius:12px;padding:.85rem 1rem}.perf-stat .label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:700}.perf-stat .value{letter-spacing:-.03em;margin-top:.15rem;font-size:1.35rem;font-weight:700}.perf-stat .value.up{color:var(--ok)}.perf-stat .value.down{color:var(--danger)}@media (width<=960px){.dash-charts-row,.upcoming-grid,.perf-layout{grid-template-columns:1fr}.global-search{flex:none;min-width:0;max-width:none}.global-search:not(.is-expanded) .topbar-search{display:none}.global-search-toggle{display:inline-flex}.global-search.is-expanded{z-index:60;background:var(--bg-elevated);border-bottom:1px solid var(--line);box-shadow:var(--shadow);max-width:none;padding:.65rem .75rem;position:fixed;inset:0 0 auto}.global-search.is-expanded .global-search-toggle{display:none}.global-search.is-expanded .topbar-search{display:flex}.global-search.is-expanded .global-search-panel{max-height:min(60vh,420px);left:.75rem;right:.75rem}.main{max-width:none}.exam-mobile-status{display:flex}}.brief{white-space:pre-wrap}.handin-shot{max-width:160px;max-height:100px;margin-top:.35rem;display:block}.notif-bell{flex-shrink:0;position:relative}.notif-panel{z-index:60;border:1px solid var(--line,#e5e7eb);border-radius:var(--radius-lg,12px);background:#fff;width:min(22rem,100vw - 1.5rem);min-width:min(18rem,100vw - 1.5rem);max-width:min(22rem,100vw - 1.5rem);max-height:min(26rem,100vh - 5rem);padding:0;position:absolute;top:calc(100% + .45rem);right:0;overflow:auto;box-shadow:0 12px 32px #0f172a29}.notif-panel-head{border-bottom:1px solid var(--line,#e5e7eb);z-index:1;background:#fff;justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 1rem;display:flex;position:sticky;top:0}.notif-panel-head strong{font-size:.95rem}.notif-panel-head .btn{white-space:nowrap;padding:.3rem .6rem;font-size:.78rem}.notif-empty{margin:0;padding:1.1rem 1rem}.notif-list{margin:0;padding:.35rem 0;list-style:none}.notif-list li{border-top:1px solid var(--line,#e5e7eb)}.notif-list li:first-child{border-top:0}.notif-list li.unread{background:#f8fafc}.notif-list li.unread .notif-item strong{font-weight:700}.notif-item{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;box-sizing:border-box;background:0 0;border:0;flex-direction:column;align-items:flex-start;gap:.25rem;padding:.75rem 1rem;text-decoration:none;display:flex}.notif-item:hover{background:#eef3fb}.notif-item strong{white-space:normal;overflow-wrap:anywhere;word-break:break-word;width:100%;font-size:.9rem;line-height:1.35;display:block}.notif-body{width:100%;color:var(--muted);white-space:normal;overflow-wrap:anywhere;word-break:break-word;font-size:.82rem;line-height:1.4;display:block}.notif-time{color:#94a3b8;margin-top:.1rem;font-size:.75rem;display:block}.toolbar .btn.is-active{outline:2px solid var(--accent,#2563eb)}.materials-workspace{min-width:0}.materials-tech{margin-bottom:1.25rem}.materials-tech-toggle{cursor:pointer;text-align:left;width:100%;color:inherit;font:inherit;background:0 0;border:0;align-items:center;gap:.55rem;margin:0 0 .65rem;padding:.2rem 0;display:flex}.materials-tech-toggle h2{margin:0;font-size:1.15rem}.materials-tech-empty{margin:0 0 .5rem 1.4rem}.materials-chevron{width:1rem;color:var(--muted);flex-shrink:0;transition:transform .15s;display:inline-flex}.materials-chevron.open{transform:rotate(90deg)}.materials-module{margin-bottom:.75rem}.materials-module-toggle{cursor:pointer;text-align:left;color:inherit;font:inherit;background:0 0;border:0;flex:1;align-items:flex-start;gap:.5rem;min-width:0;margin:0;padding:0;display:flex}.materials-module-toggle strong{display:block}.materials-module-meta{margin-top:.2rem;font-size:.9rem;display:block}.materials-module .panel-head{align-items:flex-start;gap:.75rem}.materials-module-actions{flex-shrink:0}.materials-module-body{border-top:1px solid var(--line,#e5e7eb);margin-top:.75rem;padding-top:.75rem}.materials-list{margin:0 0 1rem;padding:0;list-style:none}.materials-list li{border:1px solid var(--line,#e5e7eb);background:#fafbfc;border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem .75rem;margin-bottom:.45rem;padding:.55rem .65rem;display:flex}.materials-list li.is-active{border-color:var(--accent,#2563eb);background:var(--accent-soft,#eff6ff)}.materials-item-main{flex:1;min-width:0}.materials-item-actions{flex-shrink:0}.materials-rename-row{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.materials-rename-row input{flex:1;min-width:12rem}.materials-add{border:1px solid var(--line,#e5e7eb);background:#fff;border-radius:10px;padding:.85rem}.materials-mode-tabs{flex-wrap:wrap;gap:.35rem;margin-bottom:.85rem;display:flex}.materials-mode-tab{border:1px solid var(--line,#e5e7eb);color:var(--ink,#0f172a);font:inherit;cursor:pointer;background:#f8fafc;border-radius:999px;padding:.35rem .8rem;font-size:.85rem}.materials-mode-tab.active{border-color:var(--accent,#2563eb);background:var(--accent-soft,#eff6ff);color:var(--accent,#2563eb);font-weight:600}.materials-hint{margin:-.35rem 0 0;font-size:.85rem}.mat-preview-root{z-index:80;justify-content:flex-end;display:flex;position:fixed;inset:0}.mat-preview-backdrop{cursor:pointer;background:#0f172a6b;border:0;margin:0;padding:0;position:absolute;inset:0}.mat-preview-drawer{z-index:1;border-left:1px solid var(--line,#e5e7eb);width:min(56vw,760px);max-width:100%;height:100%;animation:mat-preview-in .18s var(--ease,ease) both;background:#fff;flex-direction:column;display:flex;position:relative;overflow:hidden;box-shadow:-12px 0 32px #0f172a29}.mat-preview-drawer .mat-inline-preview{height:100%;min-height:0}@keyframes mat-preview-in{0%{opacity:.85;transform:translate(18px)}to{opacity:1;transform:none}}.mat-preview-head{border-bottom:1px solid var(--line,#e5e7eb);background:#fff;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:.85rem;padding:1rem 1.1rem;display:flex}.mat-preview-titles{flex:1;min-width:0}.mat-preview-titles h2{word-break:break-word;margin:0;font-size:1.05rem;line-height:1.3}.mat-preview-titles .muted{margin:.25rem 0 0;font-size:.85rem}.mat-preview-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:.4rem;display:flex}.mat-preview-body{background:#f8fafc;flex-direction:column;flex:1;min-height:0;padding:.85rem 1.1rem 1.1rem;display:flex}.mat-preview-frame{border:1px solid var(--line,#e5e7eb);background:#fff;border-radius:8px;flex:auto;width:100%;height:100%;min-height:28rem;display:block}.mat-preview-note{white-space:pre-wrap;word-break:break-word;border:1px solid var(--line,#e5e7eb);font:inherit;background:#fff;border-radius:8px;flex:1;margin:0;padding:1rem;font-size:.95rem;line-height:1.55;overflow:auto}.mat-preview-status{border:1px dashed var(--line,#e5e7eb);background:#fff;border-radius:8px;flex-direction:column;flex:1;justify-content:center;align-items:flex-start;gap:.85rem;padding:1.25rem;display:flex}.mat-preview-image-wrap{border:1px solid var(--line,#e5e7eb);background:#fff;border-radius:8px;flex:1;justify-content:center;align-items:flex-start;min-height:0;padding:.75rem;display:flex;overflow:auto}.mat-preview-image{max-width:100%;height:auto;display:block}.assignment-resources{margin-top:1rem}.assignment-resources .materials-list{margin-bottom:.85rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.materials-reading-layout{grid-template-columns:minmax(320px,440px) minmax(0,1fr);align-items:stretch;gap:1rem;height:calc(100vh - 11rem);min-height:32rem;display:grid}.materials-outline,.materials-stage{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.materials-outline-head,.materials-stage-head{border-bottom:1px solid var(--line,#e5e7eb);justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.75rem;padding-bottom:.65rem;display:flex}.materials-outline-head h2,.materials-stage-head h2{margin:0;font-size:1.05rem}.materials-stage-head p{margin:.25rem 0 0}.materials-outline-filters{flex-wrap:wrap;gap:.35rem;margin-bottom:.65rem;display:flex}.materials-outline-filters .chip{appearance:none;border:1px solid var(--line,#e5e7eb);color:var(--ink);font:inherit;cursor:pointer;background:#f8fafc;border-radius:999px;padding:.28rem .7rem;font-size:.78rem}.materials-outline-filters .chip.active{border-color:var(--accent);color:var(--accent);background:#eef3fb;font-weight:600}.materials-outline-list{flex-direction:column;flex:1;gap:.35rem;min-height:0;display:flex;overflow:auto}.materials-skill-section{flex-direction:column;gap:.15rem;display:flex}.materials-skill-heading{letter-spacing:.01em;align-items:center;gap:.4rem;margin:.45rem 0 .15rem;font-size:.78rem;display:flex}.materials-outline-work{flex-direction:column;gap:.1rem;margin:0 0 .35rem 1.2rem;padding:0;list-style:none;display:flex}.materials-outline-work a{font-size:.82rem}.module-card{border:1px solid var(--line,#e5e7eb);background:#f8fafc;border-radius:12px;padding:.45rem .55rem .35rem}.module-card.is-active{box-shadow:inset 3px 0 0 var(--accent);background:#fff;border-color:#bfdbfe}.materials-tech-select{margin-bottom:.65rem}.module-card-head{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.35rem .5rem;display:grid}.module-card-tools{align-items:center;gap:.35rem;display:flex}.module-card-title{text-align:left;min-width:0;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;flex:1;padding:0}.module-card-add{color:var(--accent);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:.15rem .1rem;font-size:.78rem;font-weight:700}.module-card-rows{margin:.35rem 0 0;padding:0;list-style:none}.module-card-row{border-top:1px solid var(--line,#e5e7eb);align-items:center;gap:.25rem;padding:.28rem 0;display:flex}.module-card-row-name{text-align:left;min-width:0;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;align-items:flex-start;padding:0;text-decoration:none;display:flex}.module-card-row-name span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.84rem;font-weight:600;overflow:hidden}.module-card-row-name small{color:var(--muted);font-size:.72rem}.module-card-icon{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:.2rem .35rem;font-size:.72rem;font-weight:650}.module-card-icon:hover{color:var(--ink);background:#eef3fb}.module-card-icon.danger:hover{color:#b91c1c}.materials-outline-item{text-align:left;cursor:pointer;width:100%;min-width:0;font:inherit;color:inherit;background:0 0;border:1px solid #0000;border-radius:10px;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.55rem .65rem;display:flex}.materials-outline-item:hover{background:#f5f8ff}.materials-outline-item.active{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent);background:#eef3fb}.materials-outline-title{white-space:nowrap;text-overflow:ellipsis;width:100%;font-size:.92rem;font-weight:650;line-height:1.3;overflow:hidden}.materials-outline-meta,.materials-outline-filename{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;width:100%;font-size:.75rem;overflow:hidden}.materials-outline-note{color:var(--muted);margin:-.35rem 0 .65rem;font-size:.78rem}.materials-module-search{width:100%;margin-bottom:.65rem}.materials-stage-status,.materials-stage-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.materials-stage-status{margin:.45rem 0 0}.materials-section{margin-top:1.35rem}.materials-section-head{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.35rem;display:flex}.materials-section-head h3{margin:0;font-size:1rem}.menu-danger{color:#b91c1c!important}.materials-list-view{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.materials-section-scroll{flex:1;min-height:0;overflow:auto}.materials-file-list{margin:0;padding:0;list-style:none}.materials-file-list li{border-bottom:1px solid var(--line,#e5e7eb);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem 1rem;padding:.85rem 0;display:flex}.materials-file-list li:last-child{border-bottom:0}.materials-file-main{flex-direction:column;flex:1;gap:.2rem;min-width:0;display:flex}.materials-file-main strong{font-size:.95rem}.materials-file-actions{flex-shrink:0}.materials-stage.is-reading{padding:.85rem;overflow:hidden}.materials-reader{flex-direction:column;flex:auto;height:100%;min-height:0;display:flex}.materials-reader-bar{border-bottom:1px solid var(--line,#e5e7eb);flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:.65rem;margin-bottom:.75rem;padding-bottom:.75rem;display:flex}.materials-reader-titles{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.materials-reader-titles strong{word-break:break-word;font-size:1rem}.materials-reader-frame{border:1px solid var(--line,#e5e7eb);background:#e5e7eb;border-radius:10px;flex-direction:column;flex:auto;min-height:28rem;display:flex;position:relative;overflow:hidden}.materials-reader-frame .mat-inline-preview,.materials-reader-frame .mat-inline-preview.embedded,.materials-reader-frame .mat-inline-preview-body{flex-direction:column;flex:auto;height:100%;min-height:28rem;display:flex}.materials-reader-frame .mat-inline-preview-body{padding:0}.materials-reader-frame .mat-preview-frame,.materials-reader-frame .mat-preview-note,.materials-reader-frame .mat-preview-image-wrap,.materials-reader-frame .mat-preview-status{border:0;border-radius:0;flex:auto;width:100%;height:100%;min-height:28rem}.mat-inline-preview{flex-direction:column;flex:1;min-height:22rem;display:flex}.mat-inline-preview.embedded{min-height:28rem}.mat-inline-preview-head{border-bottom:1px solid var(--line,#e5e7eb);background:#fff;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.85rem 1rem;display:flex}.mat-inline-preview-body{flex-direction:column;flex:1;min-height:18rem;padding:.75rem;display:flex}.mat-inline-preview .mat-preview-frame,.mat-inline-preview .mat-preview-note,.mat-inline-preview .mat-preview-image-wrap,.mat-inline-preview .mat-preview-status{flex:1;min-height:16rem}.mat-inline-preview.compact{min-height:14rem}@media (width<=900px){.mat-preview-drawer{width:100%}.materials-reading-layout{grid-template-columns:1fr;height:auto;min-height:0}.materials-outline,.materials-stage{height:auto;overflow:visible}.materials-outline{max-height:16rem;overflow:auto}.materials-reader-frame,.materials-reader-frame .mat-preview-frame,.materials-reader-frame .mat-inline-preview,.materials-reader-frame .mat-inline-preview-body{min-height:70vh}}
