:root{--bg:#f0f4f8;--surface:#fff;--surface-subtle:#f7f9fc;--surface-inset:#eef2f7;--border-subtle:#e8edf4;--border:#d6dde8;--border-strong:#b8c5d6;--text:#0f1c2e;--text-secondary:#3d5166;--text-muted:#6b7d8f;--text-faint:#96a8b8;--blue:#2563eb;--blue-hover:#1d4ed8;--blue-50:#eff6ff;--blue-100:#dbeafe;--blue-200:#bfdbfe;--blue-700:#1d4ed8;--blue-800:#1e3a8a;--blue-900:#172554;--green-bg:#f0fdf4;--green-border:#16a34a2e;--green-text:#14532d;--amber-bg:#fffbeb;--amber-border:#d977062e;--amber-text:#78350f;--amber-500:#f59e0b;--amber-300:#fcd34d;--red-bg:#fef2f2;--red-border:#ef444426;--red-text:#991b1b;--cyan-bg:#ecfeff;--cyan-border:#0891b22e;--cyan-text:#164e63;--r-sm:6px;--r:10px;--r-lg:14px;--r-xl:18px;--shadow-xs:0 1px 2px #0f172a0d;--shadow-sm:0 1px 4px #0f172a0f, 0 1px 2px #0f172a0a;--shadow:0 2px 10px #0f172a14, 0 1px 3px #0f172a0a;--shadow-md:0 4px 20px #0f172a1a, 0 2px 6px #0f172a0d;--dur:.15s;--ease:cubic-bezier(.16, 1, .3, 1);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}*,:before,:after{box-sizing:border-box}body{background:var(--bg);min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;transition:background var(--dur) var(--ease), color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease), opacity var(--dur) var(--ease);border:0}button:active:not(:disabled){transform:translateY(.5px)}a{color:inherit}.app-shell{width:min(1180px,100% - 32px);min-height:100vh;margin:0 auto;padding:20px 0 52px}.loading{min-height:100vh;color:var(--text-muted);place-items:center;font-size:.9rem;display:grid}.topbar{border-radius:var(--r-xl);box-shadow:var(--shadow-md);background:linear-gradient(135deg,#0f1f3d 0%,#162d52 100%);border:1px solid #ffffff0f;justify-content:space-between;align-items:center;gap:20px;padding:16px 22px;display:flex}.topbar .eyebrow{color:#60a5fa;letter-spacing:.1em}.topbar h1{color:#e2edffb8;max-width:640px;margin:4px 0 0;font-size:.9rem;font-weight:400;line-height:1.45}.status-stack{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:7px;display:flex}.status{border-radius:var(--r);letter-spacing:.01em;border:1px solid #0000;padding:6px 11px;font-size:.74rem;font-weight:700}.status.good{color:#4ade80;background:#4ade801f;border-color:#4ade8033}.status.warn{color:#fbbf24;background:#fbbf241f;border-color:#fbbf2433}.status.muted{color:#ffffff61;background:#ffffff12;border-color:#ffffff1a}.app-header{justify-content:space-between;align-items:center;gap:16px;padding:14px 0 4px;display:flex}.app-header>div:first-child{gap:3px;min-width:0;display:grid}.brand-wordmark{color:var(--text);letter-spacing:0;font-size:1.2rem;font-weight:800}.app-header>div:first-child small{color:var(--text-muted);font-size:.82rem;font-weight:700}.user-strip{border-radius:var(--r);background:var(--surface);border:1px solid var(--border-subtle);box-shadow:var(--shadow-xs);justify-content:space-between;align-items:center;gap:16px;margin-top:10px;padding:11px 18px;display:flex}.app-header .user-strip{justify-content:flex-end;width:auto;min-width:min(100%,360px);margin-top:0}.user-strip div{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.user-strip svg{width:18px;height:18px;color:var(--blue-700);stroke-width:2.2px;flex:none}.user-strip span{color:var(--text-muted);font-size:.83rem}.user-strip strong{color:var(--text);font-size:.9rem;font-weight:700}.user-strip small{border-radius:var(--r-sm);color:var(--blue-800);background:var(--blue-100);border:1px solid var(--blue-200);letter-spacing:.01em;padding:3px 8px;font-size:.72rem;font-weight:700}.user-strip button{border-radius:var(--r-sm);color:var(--text-secondary);background:var(--surface-inset);border:1px solid var(--border);align-items:center;gap:8px;padding:7px 14px;font-size:.82rem;font-weight:650;display:inline-flex}.user-strip button:hover{background:var(--border-subtle);border-color:var(--border-strong)}.user-strip button svg{color:currentColor;width:16px;height:16px}.panel,.login-panel,.setup-panel,.module-tile{border:1px solid var(--border-subtle);background:var(--surface);box-shadow:var(--shadow);border-radius:var(--r-lg)}.panel-heading{margin-bottom:2px}.panel-heading h2{letter-spacing:-.01em;color:var(--text);margin:5px 0 0;font-size:1.15rem;font-weight:750;line-height:1.3}.eyebrow{color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.68rem;font-weight:800}.login-layout{grid-template-columns:minmax(0,1fr) minmax(300px,.9fr);gap:14px;margin-top:14px;display:grid}.production-login,.password-gate{grid-template-columns:minmax(300px,430px);place-content:center;min-height:calc(100vh - 104px);margin-top:0;display:grid}.login-panel{gap:16px;padding:28px;display:grid}.brand-mark{width:52px;height:52px;color:var(--blue-800);background:var(--blue-50);border:1px solid var(--blue-200);box-shadow:var(--shadow-xs);border-radius:16px;justify-self:center;place-items:center;display:grid}.brand-mark svg{stroke-width:2.2px;width:24px;height:24px}.panel-heading.centered{text-align:center;justify-items:center;gap:6px;display:grid}.panel-heading.centered p:not(.eyebrow){max-width:360px;color:var(--text-secondary);margin:0;font-size:.92rem;line-height:1.55}.login-panel label{color:var(--text-secondary);gap:6px;font-size:.86rem;font-weight:650;display:grid}.login-panel input{border:1.5px solid var(--border);border-radius:var(--r);width:100%;color:var(--text);background:var(--surface-subtle);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);padding:11px 13px}.login-panel input:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #2563eb21}.login-panel button{border-radius:var(--r);color:#fff;background:var(--blue);padding:13px 16px;font-size:.93rem;font-weight:700;box-shadow:0 1px 4px #2563eb47,0 0 0 1px #2563eb26}.login-panel button:hover:not(:disabled){background:var(--blue-hover);box-shadow:0 3px 12px #2563eb59}.login-panel button:disabled{cursor:not-allowed;opacity:.5}.password-panel{align-self:center}.password-panel .quiet-button{color:var(--text-secondary);background:var(--surface-inset);border:1px solid var(--border);box-shadow:none}.password-panel .quiet-button:hover{color:var(--text);background:var(--border-subtle)}.full-width{width:100%}.setup-panel{padding:24px}.setup-panel p{color:var(--text-muted);margin:8px 0 0;font-size:.88rem;line-height:1.6}.notice,.error{border-radius:var(--r);border:1px solid #0000;padding:12px 14px;font-size:.875rem;line-height:1.5}.notice{color:var(--amber-text);background:var(--amber-bg);border-color:var(--amber-border)}.error{color:var(--red-text);background:var(--red-bg);border-color:var(--red-border)}.page-notice{margin-top:12px}.workspace{grid-template-columns:minmax(0,1fr) minmax(300px,.95fr);gap:14px;margin-top:14px;display:grid}.panel{padding:22px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px;display:grid}.stat{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface-subtle);gap:4px;padding:14px;display:grid}.stat span{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;font-weight:800}.stat strong{letter-spacing:-.025em;color:var(--text);font-size:1.85rem;font-weight:750;line-height:1.1}.module-grid{gap:10px;display:grid}.module-tile{justify-content:space-between;align-items:flex-start;gap:14px;padding:16px 18px;display:flex}.module-tile h3{color:var(--text);margin:0;font-size:.93rem;font-weight:700}.module-tile p{color:var(--text-muted);margin:5px 0 0;font-size:.85rem;line-height:1.5}.module-tile>span{border-radius:var(--r-sm);color:var(--cyan-text);background:var(--cyan-bg);border:1px solid var(--cyan-border);letter-spacing:.03em;white-space:nowrap;flex:none;padding:5px 9px;font-size:.7rem;font-weight:800}.manager-workspace{gap:14px;margin-top:14px;display:grid}.manager-summary{box-shadow:var(--shadow-xs)}.manager-dashboard{gap:14px;display:grid}.technician-workspace{gap:14px;margin-top:14px;display:grid}.technician-summary p{color:var(--text-secondary);margin:0;line-height:1.5}.technician-grid{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:14px;display:grid}.tech-panel{align-content:start;gap:14px;min-width:0;display:grid;overflow:hidden}.system-health-panel,.model-settings-panel,.reference-sources-panel{grid-column:1/-1}.grading-jobs-panel,.job-costs-panel{grid-column:span 7}.cost-snapshot-panel,.errors-panel{grid-column:span 5}.tech-stats-grid{grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:8px;display:grid}.tech-stat{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface-subtle);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);gap:4px;padding:12px;display:grid}.tech-stat:hover{border-color:var(--border);box-shadow:var(--shadow-xs)}.tech-stat.warn{color:var(--amber-text);background:var(--amber-bg);border-color:var(--amber-border)}.tech-stat.good{color:var(--green-text);background:var(--green-bg);border-color:var(--green-border)}.tech-stat span,.integration-list span,.model-setting-row>div>span,.model-cost-pill span{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;font-weight:800}.tech-stat strong{color:inherit;font-size:1.08rem}.tech-muted{color:var(--text-secondary);margin:0;font-size:.88rem;line-height:1.5}.tech-action-button{justify-self:start}.integration-list,.model-settings-list,.tech-list{gap:8px;display:grid}.integration-list>div,.model-setting-row,.tech-row{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);gap:10px;padding:12px;display:grid}.integration-list>div{grid-template-columns:1fr auto;align-items:center;min-width:0}.integration-list>div>*{min-width:0}.integration-list strong{text-align:right;overflow-wrap:anywhere}.model-settings-panel .model-settings-list{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));align-items:stretch}.integration-list>div:hover,.model-setting-row:hover,.tech-row:hover{border-color:var(--border);box-shadow:var(--shadow-xs)}.model-setting-row{grid-template-columns:minmax(0,1fr);align-items:stretch;min-width:0;overflow:hidden}.model-setting-row>div,.tech-row-main{gap:4px;min-width:0;display:grid}.model-setting-row .field{min-width:0}.model-setting-row select{min-width:0;max-width:100%}.model-setting-row strong,.tech-row strong,.integration-list strong{color:var(--text);overflow-wrap:anywhere;display:block}.model-setting-row p,.tech-row p,.tech-row span{color:var(--text-secondary);margin:0;font-size:.84rem;line-height:1.45}.model-cost-pill{border-radius:var(--r);color:var(--cyan-text);background:var(--cyan-bg);border:1px solid var(--cyan-border);white-space:normal;gap:4px;min-width:0;padding:10px;display:grid}.model-cost-pill strong{color:var(--cyan-text);overflow-wrap:anywhere;font-size:.84rem}.cost-panel-heading{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;display:grid}.cost-window-filter{grid-template-columns:repeat(2,minmax(72px,auto));justify-content:end;gap:6px;display:grid}.cost-window-button{border:1px solid var(--border);border-radius:var(--r-sm);min-height:34px;color:var(--text-secondary);background:var(--surface);white-space:nowrap;cursor:pointer;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), color var(--dur) var(--ease);padding:6px 10px;font-size:.74rem;font-weight:800;line-height:1}.cost-window-button:hover:not(:disabled):not(.active){color:var(--text);background:var(--surface-subtle);border-color:var(--border-strong)}.cost-window-button.active{color:var(--cyan-text);background:var(--cyan-bg);border-color:var(--cyan-border);box-shadow:var(--shadow-xs)}.cost-window-button:disabled{opacity:.72;cursor:progress}.tech-dropdown{gap:10px;min-width:0;display:grid}.tech-dropdown summary{border:1px solid var(--border);border-radius:var(--r);min-height:44px;color:var(--text-secondary);background:var(--surface-subtle);cursor:pointer;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:10px 12px;font-size:.875rem;font-weight:750;list-style:none;display:grid}.tech-dropdown summary::-webkit-details-marker{display:none}.tech-dropdown summary:hover{border-color:var(--border-strong);background:var(--surface);box-shadow:var(--shadow-xs)}.tech-dropdown summary:after{content:"v";color:var(--text-muted);transition:transform var(--dur) var(--ease);font-size:.72rem;font-weight:800}.tech-dropdown[open]>summary:after{transform:rotate(180deg)}.tech-dropdown summary span{min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tech-dropdown summary strong{border-radius:var(--r-sm);color:var(--cyan-text);background:var(--cyan-bg);border:1px solid var(--cyan-border);padding:3px 8px;font-size:.72rem;font-weight:800}.scroll-list{max-height:420px;padding-right:4px;overflow-y:auto}.scroll-list::-webkit-scrollbar{width:8px}.scroll-list::-webkit-scrollbar-thumb{border-radius:var(--r-sm);background:var(--border-strong)}.tech-row{grid-template-columns:minmax(0,1fr) auto;align-items:start;min-width:0}.job-cost-row{grid-template-columns:minmax(260px,1fr) minmax(78px,auto)}.job-cost-row .row-status{text-align:right;white-space:nowrap;justify-self:end;min-width:78px}.tech-row>*{min-width:0}.manager-shell-tabs{grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;display:grid}.manager-overview{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;display:grid}.manager-overview.compact{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))}.manager-tab{border:1.5px solid var(--border);border-radius:var(--r);min-height:72px;color:var(--text-secondary);background:var(--surface);text-align:left;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);gap:5px;padding:12px 14px;display:grid}.manager-tab:hover:not(.active){background:var(--surface-subtle);border-color:var(--border-strong);box-shadow:var(--shadow-xs)}.manager-tab span{letter-spacing:.01em;color:var(--text-muted);font-size:.76rem;font-weight:700}.manager-tab strong{letter-spacing:-.02em;color:var(--text);font-size:1.55rem;font-weight:750}.manager-shell-tabs .manager-tab{min-height:66px}.manager-shell-tabs .manager-tab strong{letter-spacing:0;font-size:.92rem;line-height:1.2}.manager-tab.active{border-color:var(--blue);background:var(--blue);box-shadow:0 2px 10px #2563eb47}.manager-tab.active span{color:#ffffffb3}.manager-tab.active strong{color:#fff}.roster-grid{grid-template-columns:minmax(220px,.7fr) minmax(0,1.3fr)}.roster-teacher-list,.roster-assignment-card{align-content:start}.roster-teacher-list{gap:8px;display:grid}.roster-teacher-list h3,.roster-assignment-card h3{margin:0 0 6px}.roster-teacher{border:1px solid var(--border);border-radius:var(--r-sm);min-height:44px;color:var(--text-secondary);background:var(--surface);text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:9px 11px;display:flex}.roster-teacher:hover,.roster-teacher.active{border-color:var(--blue);background:var(--blue-50);color:var(--blue-800)}.roster-teacher strong{min-width:28px;color:var(--cyan-text);background:var(--cyan-bg);border:1px solid var(--cyan-border);text-align:center;border-radius:99px;padding:2px 8px;font-size:.76rem}.manager-analytics-panel,.manager-data-management{gap:18px;display:grid}.manager-analytics-panel{border:1px solid var(--border-subtle);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow);padding:24px}.manager-metric-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.manager-mini-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.manager-metric{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface-subtle);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);gap:5px;padding:13px 14px;display:grid}.manager-metric span,.manager-metric small{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;font-weight:800}.manager-metric small{color:var(--text-faint)}.manager-metric strong{color:var(--text);font-size:1.55rem;font-weight:750;line-height:1.05}.manager-metric.warning{border-color:var(--amber-border);background:var(--amber-bg)}.manager-metric.warning strong{color:var(--amber-text)}.manager-metric.danger{border-color:var(--red-border);background:var(--red-bg)}.manager-metric.danger strong{color:var(--red-text)}.manager-metric.good{border-color:var(--green-border);background:var(--green-bg)}.manager-metric.good strong{color:var(--green-text)}.manager-analytics-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.manager-analytics-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.manager-analytics-card{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface-subtle);gap:12px;padding:16px;display:grid}.manager-analytics-card h3{color:var(--text);margin:0;font-size:.95rem;font-weight:750}.manager-row-list{gap:7px;display:grid}.manager-row-line{border:1px solid var(--border-subtle);border-radius:var(--r-sm);background:var(--surface);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 12px;padding:9px 10px;display:grid}.manager-row-line span{overflow-wrap:anywhere;min-width:0;color:var(--text-secondary);font-size:.84rem;font-weight:650}.manager-row-line strong{color:var(--text);text-align:right;font-size:.84rem;font-weight:800}.manager-row-line small{color:var(--text-muted);overflow-wrap:anywhere;grid-column:1/-1;font-size:.78rem;line-height:1.4}.roster-history-students{grid-column:1/-1;gap:5px;display:grid}.roster-history-students b{color:var(--text-secondary);font-size:.78rem}.roster-history-students span{flex-wrap:wrap;gap:5px;display:flex}.roster-history-students em{border:1px solid var(--cyan-border);background:var(--cyan-bg);color:var(--cyan-text);border-radius:999px;padding:3px 8px;font-size:.74rem;font-style:normal;font-weight:750;display:inline-flex}.manager-table-wrap{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface);width:100%;overflow-x:auto}.manager-table{border-collapse:collapse;width:100%;min-width:680px}.manager-table th,.manager-table td{border-bottom:1px solid var(--border-subtle);text-align:left;vertical-align:top;padding:11px 12px;font-size:.84rem}.manager-table th{color:var(--text-muted);background:var(--surface-subtle);text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;font-weight:800}.manager-table td{color:var(--text-secondary)}.manager-table tr:last-child td{border-bottom:0}.manager-table-history{border-top:1px solid var(--border-subtle);background:var(--surface)}.manager-table-history summary{min-height:44px;color:var(--text-secondary);background:var(--surface-subtle);cursor:pointer;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);justify-content:space-between;align-items:center;gap:10px;padding:11px 12px;font-size:.84rem;font-weight:750;display:flex}.manager-table-history summary:hover{color:var(--text);background:var(--surface-inset)}.manager-table-history summary strong{min-width:28px;color:var(--cyan-text);background:var(--cyan-bg);border:1px solid var(--cyan-border);text-align:center;border-radius:99px;padding:3px 8px;font-size:.74rem}.manager-table-history .manager-table{border-top:1px solid var(--border-subtle)}.manager-crud{border:1px solid var(--border-subtle);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow);gap:18px;padding:24px;display:grid}.manager-crud .panel-heading p:not(.eyebrow){max-width:720px;color:var(--text-muted);margin:8px 0 0;font-size:.88rem;line-height:1.55}.credential-notice{border:1px solid var(--amber-border);border-radius:var(--r);color:var(--amber-text);background:var(--amber-bg);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 14px;padding:13px 14px;display:grid}.credential-notice span,.credential-notice small{min-width:0;display:block}.credential-notice span{text-transform:uppercase;letter-spacing:.08em;font-size:.8rem;font-weight:800}.credential-notice strong{border-radius:var(--r-sm);color:var(--text);background:var(--surface);border:1px solid var(--amber-border);overflow-wrap:anywhere;padding:8px 10px;font-size:.92rem;display:block}.credential-notice small{color:var(--text-secondary);font-size:.84rem;line-height:1.45}.credential-notice button{justify-self:end}.manager-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding-top:4px;display:grid}.wide-form{grid-template-columns:repeat(3,minmax(0,1fr))}.field{gap:6px;font-size:.875rem;display:grid}.field>span{color:var(--text-secondary);font-size:.82rem;font-weight:650}.field input,.field select,.field textarea{border:1.5px solid var(--border);border-radius:var(--r);width:100%;color:var(--text);background:var(--surface-subtle);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);appearance:auto;padding:10px 12px}.field textarea{resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #2563eb1f}.check-list{border:1.5px solid var(--border);border-radius:var(--r);background:var(--surface-subtle);gap:6px;max-height:220px;padding:8px;display:grid;overflow:auto}.check-row{border-radius:var(--r-sm);background:var(--surface);transition:border-color var(--dur) var(--ease);cursor:pointer;border:1px solid #0000;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;padding:8px 10px;display:grid}.check-row:hover{border-color:var(--border)}.check-row input{width:auto;accent-color:var(--blue);margin-top:2px}.check-row span{gap:2px;display:grid}.check-row small,.empty-copy{color:var(--text-faint);font-size:.8rem}.empty-copy{color:var(--text-muted);margin:0;padding:6px 0;font-size:.875rem}.save-bar{border-top:1px solid var(--border-subtle);grid-column:1/-1;align-items:center;gap:10px;margin-top:4px;padding-top:4px;display:flex}.save-bar button{border-radius:var(--r);color:#fff;background:var(--blue);padding:10px 18px;font-size:.875rem;font-weight:700;box-shadow:0 1px 3px #2563eb3d}.save-bar button:hover:not(:disabled){background:var(--blue-hover);box-shadow:0 3px 10px #2563eb4d}.save-bar button:disabled{cursor:not-allowed;opacity:.5}.secondary-button{border-radius:var(--r);color:var(--blue-800);background:var(--blue-100);border:1px solid var(--blue-200);padding:10px 14px;font-size:.875rem;font-weight:700}.secondary-button:hover{background:var(--blue-200)}.quiet-button{border-radius:var(--r);color:var(--red-text);background:var(--red-bg);border:1px solid var(--red-border);padding:10px 14px;font-size:.875rem;font-weight:700}.quiet-button:hover{background:#fecaca}.entity-list{gap:8px;display:grid}.entity-row{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface-subtle);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);justify-content:space-between;align-items:center;gap:14px;padding:13px 15px;display:flex}.entity-row:hover{border-color:var(--border-strong);box-shadow:var(--shadow-xs)}.entity-row h3{color:var(--text);margin:0;font-size:.93rem;font-weight:700}.entity-row p{color:var(--text-muted);margin:4px 0 0;font-size:.82rem;line-height:1.4}.row-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:7px;display:flex}.row-status{border-radius:var(--r-sm);color:#0891b2;background:var(--cyan-bg);border:1px solid var(--cyan-border);letter-spacing:.03em;align-self:center;padding:4px 9px;font-size:.7rem;font-weight:800}.upload-block{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm);grid-column:1/-1;gap:0;display:grid;overflow:hidden}.upload-toggle-header{background:var(--surface);cursor:pointer;text-align:left;width:100%;transition:background var(--dur) var(--ease);border:none;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.upload-toggle-header:hover{background:var(--surface-subtle)}.upload-toggle-label{color:var(--text);margin-top:3px;font-size:1rem;font-weight:750;display:block}.upload-toggle-chevron{color:var(--text-muted);flex-shrink:0;font-size:.72rem}.upload-toggle-success{background:var(--green-bg);border-top:1px solid var(--green-border);color:var(--green-text);justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;font-size:.875rem;font-weight:600;display:flex}.upload-form{border-top:1px solid var(--border-subtle);gap:14px;padding:18px 20px 20px;display:grid}.upload-form label.field span{color:var(--text-secondary);font-size:.82rem;font-weight:650}.upload-form select,.upload-form input:not([type=file]):not([type=checkbox]),.upload-form textarea{border:1.5px solid var(--border);border-radius:var(--r);width:100%;color:var(--text);background:var(--surface-subtle);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);padding:10px 12px}.upload-form select:focus,.upload-form input:focus,.upload-form textarea:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #2563eb1f}.upload-form textarea{resize:vertical}.upload-form button[type=submit]{border-radius:var(--r);color:#fff;background:var(--blue);transition:background var(--dur) var(--ease), box-shadow var(--dur) var(--ease);justify-self:start;padding:11px 22px;font-size:.9rem;font-weight:700;box-shadow:0 1px 4px #2563eb3d}.upload-form button[type=submit]:hover:not(:disabled){background:var(--blue-hover);box-shadow:0 3px 12px #2563eb4d}.upload-form button[type=submit]:disabled{cursor:not-allowed;opacity:.5}.student-submissions{border-top:1px solid var(--border-subtle);background:var(--surface-subtle);padding:16px 20px 18px}.student-submissions-heading{margin:0 0 8px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.upload-primary-fields{align-items:end}.upload-advanced{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface-subtle);overflow:hidden}.upload-advanced summary{min-height:44px;color:var(--text-secondary);cursor:pointer;transition:background var(--dur) var(--ease);justify-content:space-between;align-items:center;padding:10px 13px;font-size:.86rem;font-weight:750;display:flex}.upload-advanced summary:hover{background:var(--surface-inset)}.upload-advanced-body{border-top:1px solid var(--border-subtle);background:var(--surface);gap:12px;padding:13px;display:grid}.drop-zone{border:2px dashed var(--border);background:var(--surface-subtle);border-radius:var(--r-lg);text-align:center;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);gap:10px;padding:22px 20px;display:grid}.drop-zone:hover{border-color:var(--blue);background:var(--blue-50)}.drop-zone strong{color:var(--text);font-size:.93rem;font-weight:700}.drop-zone p{color:var(--text-muted);margin:0;font-size:.83rem;line-height:1.5}.upload-actions{flex-wrap:wrap;justify-content:center;gap:9px;display:flex}.button-like{border-radius:var(--r);background:var(--text);color:#fff;cursor:pointer;min-height:40px;transition:background var(--dur) var(--ease);justify-content:center;align-items:center;padding:0 16px;font-size:.86rem;font-weight:700;display:inline-flex}.button-like:hover{background:var(--text-secondary)}.button-like.secondary{color:var(--text);background:var(--surface-inset);border:1.5px solid var(--border)}.button-like.secondary:hover{background:var(--border-subtle)}.button-like input{display:none}.camera-capture-modal{z-index:1100;color:#fff;background:#07111f;grid-template-rows:1fr auto auto;display:grid;position:fixed;inset:0}.camera-capture-stage{background:radial-gradient(circle at 50% 46%,#2563eb1f,#0000 34%),#07111f;place-items:center;min-height:0;display:grid;position:relative;overflow:hidden}.camera-capture-stage video{object-fit:cover;background:#050b13;width:100%;height:100%}.camera-loading{border-radius:var(--r);color:#ffffffdb;text-align:center;background:#07111fc2;border:1px solid #ffffff2e;place-items:center;min-height:64px;padding:14px;font-size:.9rem;font-weight:700;display:grid;position:absolute;inset:auto 24px 96px}.camera-frame-guide{pointer-events:none;border:2px solid #ffffffd6;border-radius:22px;position:absolute;inset:8%;box-shadow:0 0 0 999px #07111f57,inset 0 0 0 1px #ffffff29}.camera-frame-guide:before,.camera-frame-guide:after{content:"";border:2px solid #ffffffb3;border-color:#ffffffb3 #0000;border-radius:16px;position:absolute;inset:18px}.camera-frame-guide:after{border-top-color:#0000;border-bottom-color:#0000;inset:34px}.camera-capture-bar{background:#07111ff5;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px;padding:18px 24px 14px;display:grid}.camera-text-button{border-radius:var(--r);color:#fff;background:#ffffff1a;min-height:44px;padding:0 14px;font-size:.86rem;font-weight:800}.camera-text-button:first-child{justify-self:start}.camera-text-button:last-child{justify-self:end}.camera-text-button:hover{background:#ffffff29}.camera-shutter{background:0 0;border:4px solid #ffffffd1;border-radius:999px;place-items:center;width:76px;height:76px;padding:0;display:grid;box-shadow:0 8px 28px #00000059}.camera-shutter span{width:54px;height:54px;transition:transform var(--dur) var(--ease), opacity var(--dur) var(--ease);background:#fff;border-radius:999px}.camera-shutter:hover span{transform:scale(.92)}.camera-shutter:disabled{opacity:.55;cursor:not-allowed}.camera-caption{color:#ffffffc7;text-align:center;background:#07111ff5;min-height:36px;padding:0 24px 16px;font-size:.82rem;font-weight:700}.camera-error{color:#fecaca}.file-chip-list{flex-wrap:wrap;gap:7px;display:flex}.file-chip{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);max-width:100%;color:var(--text-secondary);align-items:center;gap:8px;padding:5px 8px 5px 11px;font-size:.82rem;display:inline-flex}.file-chip button{min-height:24px;color:var(--red-text);background:var(--red-bg);border-radius:4px;padding:0 8px;font-size:.73rem}.file-chip button:hover{background:#fecaca}.submission-list{gap:14px;display:grid}.submission-stack{gap:9px;display:grid}.submission-row{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface);transition:border-color var(--dur) var(--ease);gap:10px;min-width:0;padding:13px;display:grid;overflow:hidden}.submission-row:hover{border-color:var(--border)}.submission-row strong,.submission-row span{display:block}.submission-row strong{color:var(--text);font-size:.9rem;font-weight:700}.submission-row span{color:var(--text-muted);margin-top:3px;font-size:.81rem}.submission-links{flex-wrap:wrap;gap:7px;min-width:0;display:flex;overflow:hidden}.submission-footer{justify-content:space-between;align-items:flex-start;gap:10px;min-width:0;display:flex}.submission-footer>.submission-links{flex:1;min-width:0}.submission-links a,.submission-links button{border-radius:var(--r-sm);background:var(--blue-50);border:1px solid var(--blue-200);color:var(--blue-800);transition:background var(--dur) var(--ease);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;max-width:100%;padding:6px 10px;font-size:.78rem;font-weight:700;text-decoration:none;display:block;overflow:hidden}.submission-links a:hover,.submission-links button:hover,.submission-links button.active{background:var(--blue-100)}.submission-links button.active{border-color:var(--blue)}.submission-links span{border-radius:var(--r-sm);background:var(--surface-inset);border:1px solid var(--border-subtle);color:var(--text-muted);padding:6px 10px;font-size:.78rem;margin-top:0!important;display:inline-block!important}.remove-submission-button{min-height:32px;color:var(--red-text);background:var(--red-bg);border:1px solid var(--red-border);border-radius:var(--r-sm);flex:none;padding:0 10px;font-size:.78rem;font-weight:650}.remove-submission-button:hover{background:#fecaca}.student-file-preview{margin-top:2px}.teacher-review{grid-column:1/-1;gap:16px;display:grid}.student-review-list{gap:10px;display:grid}.student-review-group{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden}.student-review-group>summary{cursor:pointer;background:var(--surface);min-height:58px;transition:background var(--dur) var(--ease);justify-content:space-between;align-items:center;gap:14px;padding:13px 16px;display:flex}.student-review-group>summary:hover{background:var(--surface-subtle)}.student-review-summary-main{gap:3px;min-width:0;display:grid}.student-review-summary-main strong{color:var(--text);font-size:.98rem;font-weight:800}.student-review-summary-main span{color:var(--text-muted);font-size:.8rem}.student-review-counts{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:7px;display:flex}.student-review-counts span{border:1px solid var(--border);color:var(--text-secondary);background:var(--surface-subtle);border-radius:99px;align-items:center;gap:5px;padding:4px 9px;font-size:.76rem;font-weight:750;display:inline-flex}.student-review-counts strong{color:var(--blue-800)}.student-review-body{border-top:1px solid var(--border-subtle);background:var(--surface-subtle);gap:12px;padding:14px;display:grid}.btn-ghost-sm{border-radius:var(--r-sm);border:1px solid var(--border);min-height:28px;color:var(--text-secondary);cursor:pointer;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease);white-space:nowrap;background:0 0;padding:4px 10px;font-size:.78rem;font-weight:650}.btn-ghost-sm:hover{background:var(--surface-subtle);border-color:var(--border-strong)}.btn-ghost-sm.danger{color:var(--red-text);border-color:var(--red-border)}.btn-ghost-sm.danger:hover{background:var(--red-bg)}.btn-ghost-sm:disabled{opacity:.5;cursor:not-allowed}.sub-feed{gap:12px;display:grid}.sub-card{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm);gap:0;display:grid;overflow:hidden}.sub-card-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.sub-card-meta{gap:3px;min-width:0;display:grid}.sub-card-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:750;overflow:hidden}.sub-card-detail{color:var(--text-muted);font-size:.81rem}.sub-card-controls{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;display:flex}.status-badge{white-space:nowrap;border:1px solid #0000;border-radius:99px;align-items:center;padding:3px 9px;font-size:.72rem;font-weight:750;display:inline-flex}.status-neutral{background:var(--surface-inset);border-color:var(--border);color:var(--text-muted)}.status-info{background:var(--cyan-bg);border-color:var(--cyan-border);color:var(--cyan-text)}.status-amber{background:var(--amber-bg);border-color:var(--amber-border);color:var(--amber-text)}.status-green{background:var(--green-bg);border-color:var(--green-border);color:var(--green-text)}.status-red{background:var(--red-bg);border-color:var(--red-border);color:var(--red-text)}.sub-card-state{color:var(--text-secondary);border-bottom:1px solid var(--border-subtle);padding:13px 16px;font-size:.875rem;line-height:1.5}.sub-card-state.progress{color:var(--cyan-text);background:var(--cyan-bg);border-color:var(--cyan-border);align-items:center;gap:10px;display:flex}.sub-card-state.failed{color:var(--red-text);background:var(--red-bg);border-color:var(--red-border)}.sub-card-state-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.progress-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:9px;height:9px;animation:1.6s ease-in-out infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}.ai-summary{border-bottom:1px solid var(--border-subtle);border-left:3px solid var(--amber-border);background:#fefdf9;gap:12px;padding:16px;display:grid}.ai-score-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.ai-score-block{align-items:baseline;gap:6px;display:flex}.ai-score-label{text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);font-size:.72rem;font-weight:800}.ai-score-value{color:var(--text);font-size:1.2rem;font-weight:800}.ai-mastery-chip{background:var(--amber-bg);border:1px solid var(--amber-border);color:var(--amber-text);border-radius:99px;padding:3px 10px;font-size:.78rem;font-weight:700}.ai-teacher-summary{color:var(--text-secondary);margin:0;font-size:.875rem;line-height:1.6}.ai-insight{gap:5px;display:grid}.ai-insight-label{text-transform:uppercase;letter-spacing:.09em;font-size:.68rem;font-weight:800}.ai-insight.strengths .ai-insight-label{color:var(--green-text)}.ai-insight.weaknesses .ai-insight-label{color:var(--red-text)}.ai-insight.next-steps .ai-insight-label{color:var(--blue)}.ai-insight ul{color:var(--text-secondary);gap:3px;margin:0;padding-left:17px;font-size:.86rem;line-height:1.5;display:grid}.file-link-row{flex-wrap:wrap;gap:7px;display:flex}.file-link{border-radius:var(--r-sm);background:var(--blue-50);border:1px solid var(--blue-200);color:var(--blue-800);transition:background var(--dur) var(--ease);white-space:nowrap;align-items:center;padding:5px 11px;font-size:.79rem;font-weight:700;text-decoration:none;display:inline-flex}.file-link:hover{background:var(--blue-100)}.file-link.generated{background:var(--amber-bg);border-color:var(--amber-border);color:var(--amber-text)}.file-link.generated:hover{filter:brightness(.95)}.file-preview-grid{gap:12px;display:grid}.file-preview-panel{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface);overflow:hidden}.file-preview-panel.generated{border-color:var(--amber-border)}.file-preview-heading{border-bottom:1px solid var(--border-subtle);background:var(--surface-subtle);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.file-preview-heading div{gap:2px;min-width:0;display:grid}.file-preview-heading span{color:var(--text);font-size:.86rem;font-weight:800}.file-preview-heading small{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.74rem;overflow:hidden}.file-preview-heading button{color:var(--blue-700);cursor:pointer;background:0 0;border:0;flex-shrink:0;font-size:.76rem;font-weight:750}.file-preview-heading button:hover{color:var(--blue-800);text-decoration:underline}.file-preview-heading button:disabled{color:var(--text-muted);cursor:not-allowed;text-decoration:none}.file-preview-frame{background:var(--surface-inset);border:0;place-items:center;width:100%;min-height:240px;padding:0;display:grid}.file-preview-frame.clickable{cursor:zoom-in}.file-preview-frame img{object-fit:contain;background:var(--surface-inset);width:100%;max-height:680px;display:block}.file-preview-frame iframe{background:#fff;border:0;width:100%;height:min(72vh,760px);min-height:460px;display:block}.file-preview-frame.document{place-items:stretch stretch}.file-preview-frame p{color:var(--text-secondary);text-align:center;margin:0;padding:18px;font-size:.86rem;line-height:1.5}.file-preview-frame.clickable:disabled{cursor:default}.file-preview-fallback{border-top:1px solid var(--border-subtle);background:var(--surface);justify-content:flex-end;padding:8px 12px;display:flex}.file-preview-fallback a{color:var(--text-muted);font-size:.74rem;font-weight:700;text-decoration:none}.file-preview-fallback a:hover{color:var(--blue-800);text-decoration:underline}.file-preview-modal{z-index:1000;background:#0f172aeb;grid-template-rows:auto 1fr;display:grid;position:fixed;inset:0}.file-preview-modal-bar{color:#fff;background:#0f172af5;justify-content:space-between;align-items:center;gap:14px;padding:12px 18px;display:flex}.file-preview-modal-title{gap:2px;min-width:0;display:grid}.file-preview-modal-title span{font-size:.92rem;font-weight:800}.file-preview-modal-title small{color:#ffffffb8;text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;overflow:hidden}.file-preview-modal-bar button{border-radius:var(--r-sm);color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #ffffff3d;min-height:34px;padding:6px 12px;font-size:.8rem;font-weight:800}.file-preview-modal-bar button:hover{background:#ffffff2e}.file-preview-modal-bar button:disabled{opacity:.45;cursor:not-allowed}.file-preview-modal-actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.file-preview-zoom-controls{border-radius:var(--r-sm);background:#ffffff14;border:1px solid #ffffff3d;align-items:center;display:inline-flex;overflow:hidden}.file-preview-zoom-controls button{background:0 0;border:0;border-radius:0;min-width:38px;min-height:34px}.file-preview-zoom-controls button+button{border-left:1px solid #ffffff2e}.file-preview-modal-body{--preview-zoom:1;place-items:center;min-height:0;padding:18px;display:grid;overflow:auto}.file-preview-modal-body.zoomed{place-items:start center}.preview-zoom-50{--preview-zoom:.5}.preview-zoom-75{--preview-zoom:.75}.preview-zoom-100{--preview-zoom:1}.preview-zoom-125{--preview-zoom:1.25}.preview-zoom-150{--preview-zoom:1.5}.preview-zoom-175{--preview-zoom:1.75}.preview-zoom-200{--preview-zoom:2}.preview-zoom-225{--preview-zoom:2.25}.preview-zoom-250{--preview-zoom:2.5}.preview-zoom-275{--preview-zoom:2.75}.preview-zoom-300{--preview-zoom:3}.file-preview-modal-body img{object-fit:contain;zoom:var(--preview-zoom);max-width:min(100%,1400px);max-height:100%;display:block;box-shadow:0 20px 70px #00000059}.file-preview-modal-body iframe{border-radius:var(--r-sm);zoom:var(--preview-zoom);background:#fff;border:0;width:min(100%,1200px);height:100%;min-height:0;box-shadow:0 20px 70px #00000059}@supports not (zoom:2){.file-preview-modal-body img,.file-preview-modal-body iframe{transform:scale(var(--preview-zoom));transform-origin:top}}.sub-card-details{border-bottom:1px solid var(--border-subtle);background:var(--surface)}.sub-card-details summary,.review-history summary,.sent-feedback-history summary{min-height:44px;color:var(--text-secondary);background:var(--surface-subtle);cursor:pointer;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);justify-content:space-between;align-items:center;gap:10px;padding:11px 16px;font-size:.84rem;font-weight:750;display:flex}.sub-card-details summary:hover,.review-history summary:hover,.sent-feedback-history summary:hover{color:var(--text);background:var(--surface-inset)}.review-history summary,.sent-feedback-history summary{border:1px solid var(--border-subtle);border-radius:var(--r)}.sub-card-details-body{border-top:1px solid var(--border-subtle);gap:12px;padding:14px 16px;display:grid}.sub-card-detail-actions{flex-wrap:wrap;gap:8px;display:flex}.review-history,.sent-feedback-history{gap:12px;display:grid}.review-history>.sub-feed,.sent-feedback-history>.sub-feed{margin-top:12px}.review-history summary strong,.sent-feedback-history summary strong{min-width:28px;color:var(--cyan-text);background:var(--cyan-bg);border:1px solid var(--cyan-border);text-align:center;border-radius:99px;padding:3px 8px;font-size:.74rem}.question-accordion{border:1px solid var(--border-subtle);border-radius:var(--r);overflow:hidden}.question-accordion-toggle{background:var(--surface-subtle);cursor:pointer;text-align:left;width:100%;color:var(--text-secondary);transition:background var(--dur) var(--ease);border:none;align-items:center;gap:8px;padding:10px 13px;font-size:.84rem;font-weight:700;display:flex}.question-accordion-toggle:hover{background:var(--surface-inset)}.question-accordion-toggle span:first-child{flex:1}.qa-count{background:var(--surface-inset);border:1px solid var(--border);color:var(--text-muted);border-radius:99px;padding:2px 7px;font-size:.72rem;font-weight:750}.qa-chevron{color:var(--text-muted);font-size:.65rem}.question-list{border-top:1px solid var(--border-subtle);gap:0;display:grid}.question-item{border-bottom:1px solid var(--border-subtle);gap:5px;padding:11px 13px;font-size:.86rem;display:grid}.question-item:last-child{border-bottom:none}.question-item p{color:var(--text-secondary);margin:0;line-height:1.45}.question-item small{color:var(--text-muted);font-size:.79rem}.question-item-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.question-item-row strong{color:var(--text);font-size:.88rem}.q-badge{text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;border:1px solid #0000;border-radius:99px;padding:2px 8px;font-size:.68rem;font-weight:800}.q-badge.correct,.q-correct .q-badge{background:var(--green-bg);border-color:var(--green-border);color:var(--green-text)}.q-badge.incorrect,.q-incorrect .q-badge{background:var(--red-bg);border-color:var(--red-border);color:var(--red-text)}.q-badge.partial,.q-partial .q-badge{background:var(--amber-bg);border-color:var(--amber-border);color:var(--amber-text)}.q-badge.unclear,.q-unclear .q-badge,.q-badge.review,.q-review .q-badge{background:var(--surface-inset);border-color:var(--border);color:var(--text-muted)}.feedback-step{border-top:1px solid var(--border-subtle);padding:14px 16px}.feedback-step-cta{border-radius:var(--r);border:1.5px dashed var(--blue);background:var(--blue-50);width:100%;color:var(--blue);cursor:pointer;transition:background var(--dur) var(--ease);padding:12px 16px;font-size:.9rem;font-weight:750}.feedback-step-cta:hover{background:var(--blue-100)}.feedback-step-cta.secondary{background:var(--surface);border-style:solid}.review-action-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:center;gap:10px;display:grid}.blue-sheet-unavailable{color:var(--text-muted);font-size:.84rem}.feedback-step-locked{border-top:1px solid var(--border-subtle);color:var(--text-muted);padding:11px 16px;font-size:.84rem}.feedback-form{gap:13px;display:grid}.feedback-form-header{border-bottom:1px solid var(--border-subtle);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);justify-content:space-between;align-items:center;gap:10px;padding-bottom:10px;font-size:.78rem;font-weight:800;display:flex}.feedback-checks{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.feedback-checks label{border:1px solid var(--border-subtle);border-radius:var(--r);color:var(--text-secondary);background:var(--surface-subtle);cursor:pointer;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;padding:10px 12px;font-size:.84rem;font-weight:600;display:grid}.feedback-checks label:hover{background:var(--blue-50);border-color:var(--blue-200)}.feedback-checks input[type=checkbox]{accent-color:var(--blue);width:auto;margin-top:2px}.feedback-form .field{gap:5px;display:grid}.feedback-form .field span{color:var(--text-secondary);font-size:.82rem;font-weight:650}.feedback-form .field em{color:var(--text-muted);font-style:normal;font-weight:500}.feedback-form .field input,.feedback-form .field textarea{border:1.5px solid var(--border);border-radius:var(--r);background:var(--surface-subtle);width:100%;color:var(--text);resize:vertical;transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);padding:10px 12px}.feedback-form .field input:focus,.feedback-form .field textarea:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #2563eb1f}.feedback-form button[type=submit]{border-radius:var(--r);color:#fff;background:var(--blue);transition:background var(--dur) var(--ease), box-shadow var(--dur) var(--ease);justify-self:start;padding:10px 20px;font-size:.88rem;font-weight:700;box-shadow:0 1px 4px #2563eb3d}.feedback-form button[type=submit]:hover:not(:disabled){background:var(--blue-hover);box-shadow:0 3px 12px #2563eb47}.feedback-form button[type=submit]:disabled{opacity:.5;cursor:not-allowed}.blue-sheet-form{border-top:1px solid var(--border-subtle);margin-top:14px;padding-top:14px}.blue-sheet-meta{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface-subtle);grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;padding:10px;display:grid}.blue-sheet-section{gap:10px;display:grid}.blue-sheet-section h4,.blue-sheet-preview h4{color:var(--text);margin:0;font-size:.95rem}.blue-row-list{gap:8px;display:grid}.blue-row{border:1px solid var(--border-subtle);border-radius:var(--r);background:var(--surface);grid-template-columns:minmax(140px,1fr) minmax(190px,.8fr) minmax(160px,1fr) auto;align-items:end;gap:8px;padding:10px;display:grid}.blue-row.focus{grid-template-columns:minmax(150px,1fr) minmax(190px,.8fr) minmax(130px,.7fr) minmax(160px,1fr) auto}.feedback-form .field.compact{gap:4px}.feedback-form .field select{border:1.5px solid var(--border);border-radius:var(--r);background:var(--surface-subtle);width:100%;min-width:0;color:var(--text);font:inherit;padding:9px 10px}.feedback-form .field select:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #2563eb1f}.star-rating-field{min-width:0}.star-rating-control{border:1.5px solid var(--border);border-radius:var(--r);background:var(--surface-subtle);align-items:center;gap:3px;min-height:41px;padding:5px 8px;display:flex}.star-rating-button{width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:999px;flex:0 0 28px;justify-content:center;align-items:center;transition:background .12s,color .12s,transform .12s;display:inline-flex}.star-rating-button svg{fill:#0000;stroke-width:2.2px;width:20px;height:20px}.star-rating-button.selected{color:#f59e0b}.star-rating-button.selected svg{fill:currentColor}.star-rating-button:hover,.star-rating-button:focus-visible{color:#d97706;background:#f59e0b21;outline:none}.star-rating-button:active{transform:scale(.94)}.star-rating-value{color:var(--text-secondary);white-space:nowrap;margin-left:auto;font-size:.78rem;font-weight:800}.next-step-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;display:grid}.next-step-grid label{border:1px solid var(--border-subtle);border-radius:var(--r-sm);background:var(--surface);color:var(--text-secondary);align-items:flex-start;gap:8px;padding:9px;font-size:.84rem;font-weight:650;display:flex}.next-step-grid input{width:auto;accent-color:var(--blue);margin-top:2px}.blue-sheet-preview{border:1px solid var(--cyan-border);border-radius:var(--r);background:var(--cyan-bg);gap:7px;padding:12px;display:grid}.blue-sheet-preview p{color:var(--text-secondary);margin:0}.blue-pill{border:1px solid var(--cyan-border);background:var(--surface);color:var(--cyan-text);border-radius:999px;margin:3px 4px 0 0;padding:3px 8px;font-size:.75rem;font-weight:750;display:inline-flex}.published-feedback-block{background:var(--green-bg);border-top:1px solid var(--green-border);gap:8px;padding:14px 16px;display:grid}.published-feedback-header{text-transform:uppercase;letter-spacing:.09em;color:var(--green-text);justify-content:space-between;align-items:center;gap:10px;font-size:.72rem;font-weight:800;display:flex}.published-summary{color:var(--text-secondary);margin:0;font-size:.875rem;line-height:1.55}.published-practice{color:var(--text-secondary);margin:0;font-size:.84rem}.published-blue-sheet{gap:7px;display:grid}.published-blue-sheet p{color:var(--text-secondary);margin:0;line-height:1.5}.student-feedback{grid-column:1/-1;gap:14px;margin-top:16px;display:grid}.feedback-stack{gap:10px;display:grid}.feedback-history{border-top:1px solid var(--border-subtle);padding-top:12px}.feedback-history summary{border:1px solid var(--border);border-radius:var(--r);min-height:42px;color:var(--text-secondary);background:var(--surface);cursor:pointer;transition:background var(--dur) var(--ease);justify-content:space-between;align-items:center;padding:10px 14px;font-size:.875rem;font-weight:700;list-style:none;display:flex}.feedback-history summary::-webkit-details-marker{display:none}.feedback-history summary:after{content:"v";color:var(--text-muted);transition:transform var(--dur) var(--ease);font-size:.72rem}details[open]>summary:after{content:"^"}.feedback-history summary:hover{background:var(--surface-subtle)}.feedback-history .feedback-stack{margin-top:10px}.student-feedback-card{border:1px solid var(--border-subtle);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-xs);gap:10px;padding:16px;display:grid}.student-feedback-card strong,.student-feedback-card span,.student-feedback-card small{display:block}.student-feedback-card>div>span{color:var(--text-muted);text-transform:uppercase;letter-spacing:.09em;margin-top:0;font-size:.68rem;font-weight:800}.student-feedback-card>div>strong{color:var(--text);margin-top:4px;font-size:.97rem;font-weight:750}.student-feedback-card>div>small{color:var(--text-muted);margin-top:3px;font-size:.79rem}.student-feedback-card>p{color:var(--text-secondary);margin:0;font-size:.9rem;line-height:1.55}.student-feedback-card dl{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;display:grid}.student-feedback-card dl div{border-radius:var(--r-sm);background:var(--surface-subtle);border:1px solid var(--border-subtle);padding:9px}.student-feedback-card dt{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:.68rem;font-weight:800}.student-feedback-card dd{color:var(--text);margin:4px 0 0;font-size:.88rem;font-weight:750}.blue-sheet-student-sections{gap:8px;display:grid}.blue-sheet-student-sections>div{border:1px solid var(--border-subtle);border-radius:var(--r-sm);background:var(--surface-subtle);gap:3px;padding:9px;display:grid}.blue-sheet-student-sections strong{color:var(--text);font-size:.9rem}.blue-sheet-student-sections span{color:var(--text-secondary);font-size:.82rem}@media (width<=860px){.review-columns{grid-template-columns:1fr}.technician-grid,.model-settings-panel .model-settings-list,.model-setting-row,.tech-row{grid-template-columns:1fr;align-items:stretch}.system-health-panel,.model-settings-panel,.reference-sources-panel,.grading-jobs-panel,.job-costs-panel,.cost-snapshot-panel,.errors-panel{grid-column:1}.model-cost-pill{white-space:normal}.cost-panel-heading{grid-template-columns:1fr}.cost-window-filter{grid-template-columns:repeat(2,minmax(0,1fr));justify-content:stretch}.blue-row,.blue-row.focus,.review-action-grid{grid-template-columns:1fr}.row-status{justify-self:start}}@media (width<=720px){.app-shell{width:min(100% - 24px,1180px);padding-top:14px;padding-bottom:40px}.app-header{flex-direction:column;align-items:stretch}.app-header .user-strip{justify-content:space-between;width:100%;min-width:0}.production-login,.password-gate{grid-template-columns:minmax(0,430px);min-height:calc(100vh - 80px)}.topbar{border-radius:var(--r-lg);flex-direction:column;align-items:flex-start;gap:14px;padding:16px 18px}.status-stack{width:100%}.status{text-align:center;flex:1}.user-strip{flex-wrap:wrap;gap:10px;padding:10px 14px}.user-strip div{flex:1}.login-layout,.workspace,.upload-workspace,.feedback-checks,.student-feedback-card dl,.upload-workspace{grid-template-columns:1fr}.manager-overview{grid-template-columns:repeat(3,minmax(0,1fr))}.manager-analytics-grid,.manager-analytics-grid.three{grid-template-columns:1fr}.manager-form,.wide-form,.stats-grid{grid-template-columns:1fr 1fr}.panel,.login-panel{padding:18px}.credential-notice{grid-template-columns:1fr}.credential-notice button{justify-self:start}.manager-crud,.manager-analytics-panel{padding:18px}.review-card-header{flex-wrap:wrap;gap:8px}.file-preview-frame iframe{height:56vh;min-height:340px}.file-preview-modal-bar{flex-wrap:wrap}.file-preview-modal-actions{justify-content:space-between;width:100%}.file-preview-zoom-controls,.file-preview-zoom-controls button{flex:1}.save-bar{flex-wrap:wrap}}@media (width<=480px){.app-shell{width:min(100% - 16px,1180px);padding-top:12px}.topbar{border-radius:var(--r);padding:14px 16px}.topbar h1{font-size:.84rem}.stats-grid,.manager-overview,.manager-shell-tabs,.manager-metric-grid,.manager-mini-grid{grid-template-columns:1fr 1fr}.manager-form,.wide-form,.form-grid.two,.technician-grid{grid-template-columns:1fr}.save-bar{flex-direction:column;align-items:stretch}.save-bar button,.secondary-button,.quiet-button{text-align:center;justify-content:center;width:100%}.entity-row{flex-direction:column;align-items:stretch;gap:10px}.row-actions{justify-content:flex-start}.submission-footer{flex-direction:column;gap:8px}.remove-submission-button{width:100%}.review-card{padding:14px}.review-card-header{flex-direction:column;align-items:flex-start}.review-pane-heading,.score-line{flex-wrap:wrap}.upload-panel{gap:12px}input,select,textarea{font-size:16px!important}button,.button-like,select{min-height:44px}.login-panel button,.upload-panel button[type=submit],.teacher-feedback-form button[type=submit],.save-bar button{min-height:48px;padding-top:13px;padding-bottom:13px}.feedback-checks,.student-feedback-card dl{grid-template-columns:1fr}.panel,.login-panel,.setup-panel,.manager-crud,.manager-analytics-panel,.tech-panel,.technician-summary{padding:16px}.review-card,.teacher-feedback-form{padding:14px}}
