:root {
  --bg:#f3f6fc; --surface:#ffffff; --surface-2:#f8fafc; --surface-3:#eff3f8;
  --ink:#0f172a; --muted:#64748b; --line:#e2e8f0; --line-strong:#cbd5e1;
  --nav:#0f172a; --nav-2:#1e293b; --primary:#4f46e5; --primary-2:#4338ca;
  --accent:#0ea5e9; --accent-soft:#e0f2fe; --blue:#3b82f6; --blue-soft:#eff6ff;
  --purple:#8b5cf6; --purple-soft:#f3e8ff; --amber:#f59e0b; --amber-soft:#fef3c7;
  --red:#ef4444; --red-soft:#fee2e2; --green:#10b981; --green-soft:#d1fae5;
  --cyan:#06b6d4; --shadow:0 12px 35px -8px rgba(15,23,42,0.06), 0 4px 10px -4px rgba(15,23,42,0.04); --radius:18px;
}
[data-theme="dark"] {
  --bg:#0b1120; --surface:#1e293b; --surface-2:#0f172a; --surface-3:#334155;
  --ink:#f1f5f9; --muted:#94a3b8; --line:#334155; --line-strong:#475569;
  --nav:#020617; --nav-2:#0f172a; --primary:#6366f1; --primary-2:#4f46e5;
  --accent-soft:#082f49; --blue-soft:#1e3a8a; --purple-soft:#4c1d95;
  --amber-soft:#451a03; --red-soft:#450a0a; --green-soft:#064e3b;
  --shadow:0 14px 40px rgba(0,0,0,0.3);
}
* { box-sizing:border-box; }
html { min-height:100%; background:var(--bg); }
body { min-height:100vh; margin:0; color:var(--ink); background:radial-gradient(circle at 92% 3%,rgba(14,165,233,.12),transparent 35rem),var(--bg); font-family:"Plus Jakarta Sans",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif; font-size:14px; transition: background 0.3s ease, color 0.3s ease; }
a { color:inherit; text-decoration:none; }
button,input,select,textarea { font:inherit; }
button { cursor:pointer; }
.skip-link { position:fixed; top:10px; left:10px; z-index:100; padding:10px 13px; border-radius:10px; color:#fff; background:var(--primary); font-size:10px; font-weight:900; transform:translateY(-160%); transition:transform .16s ease; }
.skip-link:focus { transform:translateY(0); }
:focus-visible { outline:3px solid color-mix(in srgb,var(--accent) 60%,#fff); outline-offset:2px; }
.shell { min-height:100vh; display:grid; grid-template-columns:258px minmax(0,1fr); }
.sidebar { position:sticky; top:0; z-index:20; height:100vh; padding:22px 18px; display:flex; flex-direction:column; color:#fff; background:linear-gradient(175deg, color-mix(in srgb, var(--nav) 95%, transparent), color-mix(in srgb, var(--nav-2) 95%, transparent)); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); box-shadow:8px 0 30px rgba(0,0,0,0.12); }
.sidebar-overlay { display:none; }
.brand,.login-brand-light { display:flex; align-items:center; gap:12px; }
.brand { padding:2px 8px 22px; border-bottom:1px solid rgba(255,255,255,.12); }
.brand-mark { width:44px; height:44px; display:grid; place-items:center; flex:0 0 auto; border-radius:14px; color:#fff; background:linear-gradient(135deg,var(--accent),#1aa0bf); box-shadow:0 8px 22px rgba(20,184,166,.28); font-size:12px; font-weight:900; letter-spacing:-.05em; }
.brand strong,.brand small,.login-brand-light strong,.login-brand-light small { display:block; }
.brand strong,.login-brand-light strong { font-size:15px; letter-spacing:-.02em; }
.brand small,.login-brand-light small { margin-top:3px; color:#bcd0df; font-size:9px; font-weight:700; letter-spacing:.13em; text-transform:uppercase; }
.nav { margin-top:22px; min-height:0; padding-right:4px; display:grid; align-content:start; flex:1; gap:5px; overflow-y:auto; scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.28) transparent; }
.nav-label { padding:0 11px 7px; color:#7392aa; font-size:8px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.nav-label-space { margin-top:15px; }
.nav a { min-height:42px; padding:9px 11px; display:flex; align-items:center; gap:11px; border:1px solid transparent; border-radius:11px; color:#c8d7e3; font-size:12px; font-weight:700; transition:.18s ease; }
.nav a:hover { color:#fff; background:rgba(255,255,255,.08); transform:translateX(2px); }
.nav a.active { color:#fff; border-color:rgba(255,255,255,.09); background:rgba(255,255,255,.12); box-shadow:inset 3px 0 var(--accent); }
.nav-icon { width:24px; height:24px; display:grid; place-items:center; border-radius:7px; color:#d9e9f3; background:rgba(255,255,255,.08); font-size:13px; }
.nav a.active .nav-icon { color:#062b32; background:var(--accent); }
.osusume-link b { margin-left:auto; padding:3px 5px; border-radius:5px; color:#052d36; background:var(--accent); font-size:7px; letter-spacing:.06em; }
.engine-card { margin-top:auto; padding:15px; border:1px solid rgba(255,255,255,.12); border-radius:14px; background:rgba(255,255,255,.06); }
.engine-card strong,.engine-card>span { display:block; }
.engine-card strong { margin-top:9px; font-size:11px; }
.engine-card>span:last-child { margin-top:5px; color:#b8cedd; font-size:9px; line-height:1.5; }
.engine-status { color:#a9e9db!important; font-size:9px!important; font-weight:800; text-transform:uppercase; letter-spacing:.07em; }
.engine-status i,.offline-badge i { width:7px; height:7px; display:inline-block; margin-right:6px; border-radius:50%; background:#41d6b7; box-shadow:0 0 0 4px rgba(65,214,183,.12); }
.main { min-width:0; }
.topbar { position:sticky; top:0; z-index:15; min-height:76px; padding:13px 30px; display:flex; align-items:center; gap:18px; border-bottom:1px solid color-mix(in srgb, var(--line) 50%, transparent); background:color-mix(in srgb,var(--surface) 80%,transparent); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px); }
.page-context h1 { margin:0; font-size:20px; letter-spacing:-.035em; }
.page-context p { margin:4px 0 0; color:var(--muted); font-size:10px; }
.topbar-actions { margin-left:auto; display:flex; align-items:center; gap:10px; }
.icon-button { width:37px; height:37px; display:grid; place-items:center; border:1px solid var(--line); border-radius:11px; color:var(--ink); background:var(--surface); font-weight:800; }
.icon-button:hover { border-color:var(--line-strong); background:var(--surface-2); }
.menu-button { display:none; }
.account-chip { display:flex; align-items:center; gap:9px; padding:4px 9px 4px 4px; border:1px solid var(--line); border-radius:13px; background:var(--surface); }
.avatar,.student-avatar { display:grid; place-items:center; flex:0 0 auto; border-radius:10px; color:#07645b; background:var(--accent-soft); font-weight:900; }
.avatar { width:32px; height:32px; font-size:11px; }
.account-chip strong,.account-chip small { display:block; }
.account-chip strong { max-width:135px; overflow:hidden; text-overflow:ellipsis; font-size:10px; }
.account-chip small { margin-top:2px; color:var(--muted); font-size:8px; }
.link-button { border:0; padding:7px; color:var(--muted); background:transparent; font-size:9px; font-weight:800; }
.content { max-width:1600px; margin:auto; padding:28px 30px 45px; }
.footer { padding:32px 0 2px; color:var(--muted); text-align:center; font-size:8px; }
.eyebrow { display:block; color:var(--muted); font-size:8px; font-weight:900; letter-spacing:.13em; text-transform:uppercase; }
.eyebrow.accent { color:var(--accent); }
.hero-row,.page-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:20px; }
.hero-row { padding:4px 0 3px; align-items:center; }
.hero-row h2,.page-heading h2 { margin:5px 0 0; font-size:25px; letter-spacing:-.04em; }
.hero-row p,.page-heading p { margin:6px 0 0; color:var(--muted); font-size:11px; line-height:1.55; }
.actions,.row-actions,.exam-card-actions,.user-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.button,.small-button { display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--line); border-radius:12px; color:var(--ink); background:var(--surface); font-weight:800; transition:all .25s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 2px 5px rgba(0,0,0,0.02); }
.button { min-height:40px; padding:9px 18px; font-size:11px; }
.small-button { min-height:32px; padding:6px 12px; font-size:9px; }
.button:hover,.small-button:hover { border-color:var(--line-strong); background:var(--surface-2); transform:translateY(-2px); box-shadow: 0 6px 15px rgba(0,0,0,0.05); }
.button.primary,.small-button.primary { border-color:transparent; color:#fff; background:linear-gradient(135deg,var(--primary),var(--primary-2)); box-shadow:0 8px 20px color-mix(in srgb, var(--primary) 35%, transparent); }
.button.primary:hover,.small-button.primary:hover { box-shadow:0 12px 25px color-mix(in srgb, var(--primary) 45%, transparent); transform:translateY(-2px) scale(1.02); }
.button.soft { border-color:transparent; color:var(--primary); background:color-mix(in srgb,var(--blue-soft) 70%,var(--surface)); }
.button.danger,.small-button.danger { color:var(--red); }
.button.wide { width:100%; }
.text-link,.back-link { color:var(--primary); font-size:9px; font-weight:900; }
.icon-link { width:28px; height:28px; display:grid; place-items:center; border-radius:8px; color:var(--primary); background:var(--surface-3); font-weight:900; }
.alert { margin-bottom:15px; padding:12px 14px; display:flex; align-items:flex-start; gap:10px; border:1px solid transparent; border-radius:12px; font-size:10px; }
.alert>span { width:20px; height:20px; display:grid; place-items:center; flex:0 0 auto; border-radius:50%; font-weight:900; }
.alert p { margin:2px 0 0; line-height:1.5; }
.alert.fade { opacity:.45; transition:opacity .35s ease; }
button:disabled { cursor:wait; opacity:.7; }
.alert.success { color:var(--green); border-color:color-mix(in srgb,var(--green) 20%,transparent); background:var(--green-soft); }
.alert.warning { color:color-mix(in srgb,var(--amber) 72%,var(--ink)); border-color:color-mix(in srgb,var(--amber) 28%,transparent); background:var(--amber-soft); }
.alert.error { color:var(--red); border-color:color-mix(in srgb,var(--red) 20%,transparent); background:var(--red-soft); }
.stats { display:grid; gap:13px; margin-bottom:18px; }
.stats-five { grid-template-columns:repeat(5,minmax(0,1fr)); }
.stats-six { grid-template-columns:repeat(6,minmax(0,1fr)); }
.stat-card,.stats-six article { padding:16px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); }
.stat-card { display:flex; align-items:center; gap:12px; }
.stat-card small,.stat-card strong,.stat-card p,.stats-six small,.stats-six strong,.stats-six p { display:block; }
.stat-card small,.stats-six small { color:var(--muted); font-size:8px; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }
.stat-card strong,.stats-six strong { margin-top:5px; font-size:22px; letter-spacing:-.04em; }
.stat-card p,.stats-six p { margin:4px 0 0; color:var(--muted); font-size:8px; }
.stat-icon { width:38px; height:38px; display:grid; place-items:center; flex:0 0 auto; border-radius:12px; font-size:13px; font-weight:900; }
.stat-icon.blue { color:var(--blue); background:var(--blue-soft); }.stat-icon.purple{color:var(--purple);background:var(--purple-soft)}.stat-icon.green{color:var(--green);background:var(--green-soft)}.stat-icon.cyan{color:var(--cyan);background:color-mix(in srgb,var(--blue-soft) 65%,var(--accent-soft))}.stat-icon.amber{color:var(--amber);background:var(--amber-soft)}
.panel { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); overflow:hidden; }
.panel-space { margin-top:18px; }
.panel-head { min-height:66px; padding:15px 18px; display:flex; align-items:center; justify-content:space-between; gap:12px; border-bottom:1px solid var(--line); }
.panel-head h3 { margin:4px 0 0; font-size:13px; letter-spacing:-.015em; }
.panel-head>small { color:var(--muted); font-size:8px; }
.panel-head p { margin:5px 0 0; color:var(--muted); font-size:9px; line-height:1.55; }
.metric-grid { margin-bottom:18px; display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; }
.metric-card { min-width:0; padding:16px; border:1px solid var(--line); border-radius:15px; background:var(--surface); box-shadow:var(--shadow); }
.metric-card span,.metric-card strong,.metric-card small { display:block; overflow-wrap:anywhere; }
.metric-card span { color:var(--muted); font-size:8px; font-weight:900; letter-spacing:.07em; text-transform:uppercase; }
.metric-card strong { margin-top:6px; font-size:18px; letter-spacing:-.035em; }
.metric-card small { margin-top:4px; color:var(--muted); font-size:8px; line-height:1.45; }
.queue-status-panel { margin-top:18px; }
.queue-status-panel table { min-width:980px; }
.dashboard-grid { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(340px,.7fr); gap:18px; }
.two-column { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(310px,.75fr); gap:18px; }
.distribution-chart { padding:18px; display:grid; gap:15px; }
.dist-row { display:grid; grid-template-columns:100px minmax(100px,1fr) 35px; align-items:center; gap:13px; }
.dist-row strong,.dist-row small { display:block; }.dist-row strong{font-size:10px}.dist-row small{margin-top:3px;color:var(--muted);font-size:8px}.dist-row>b{text-align:right;font-size:11px}
.bar-track { height:7px; overflow:hidden; border-radius:999px; background:var(--surface-3); }
.bar-track i { height:100%; display:block; min-width:0; border-radius:inherit; }.bar-track i.red{background:var(--red)}.bar-track i.amber{background:var(--amber)}.bar-track i.blue{background:var(--blue)}.bar-track i.green{background:var(--green)}
.health-score { width:44px; height:44px; display:grid; place-items:center; border-radius:50%; color:var(--green); background:var(--green-soft); font-size:11px; font-weight:900; }
.osusume-preview { display:flex; flex-direction:column; }
.osusume-preview>.recommendation-card { margin:16px 16px 10px; }
.recommendation-card { padding:14px; display:flex; align-items:flex-start; gap:11px; border:1px solid var(--line); border-radius:13px; background:var(--surface-2); }
.rec-dot { width:9px; height:9px; margin-top:3px; flex:0 0 auto; border-radius:50%; background:var(--blue); box-shadow:0 0 0 5px color-mix(in srgb,var(--blue) 12%,transparent); }
.recommendation-card.urgent .rec-dot{background:var(--red);box-shadow:0 0 0 5px color-mix(in srgb,var(--red) 12%,transparent)}.recommendation-card.warning .rec-dot{background:var(--amber);box-shadow:0 0 0 5px color-mix(in srgb,var(--amber) 12%,transparent)}.recommendation-card.success .rec-dot{background:var(--green);box-shadow:0 0 0 5px color-mix(in srgb,var(--green) 12%,transparent)}.recommendation-card.focus .rec-dot{background:var(--purple);box-shadow:0 0 0 5px color-mix(in srgb,var(--purple) 12%,transparent)}
.recommendation-card strong { font-size:11px; }.recommendation-card p{margin:5px 0;color:var(--muted);font-size:9px;line-height:1.5}.recommendation-card small{font-size:8px;line-height:1.5}.recommendation-card small b{color:var(--ink)}
.mini-metrics { margin:0 16px 13px; display:grid; grid-template-columns:repeat(3,1fr); border:1px solid var(--line); border-radius:11px; overflow:hidden; }
.mini-metrics div { padding:10px; text-align:center; }.mini-metrics div+div{border-left:1px solid var(--line)}.mini-metrics span,.mini-metrics b{display:block}.mini-metrics span{color:var(--muted);font-size:7px;text-transform:uppercase}.mini-metrics b{margin-top:4px;font-size:11px}.osusume-preview>.button{margin:auto 16px 16px}
.table-wrap { width:100%; overflow:auto; }
table { width:100%; border-collapse:collapse; font-size:10px; }
th { padding:11px 13px; color:var(--muted); background:var(--surface-2); text-align:left; text-transform:uppercase; letter-spacing:.06em; font-size:7px; white-space:nowrap; }
td { padding:12px 13px; border-top:1px solid var(--line); vertical-align:middle; }
tbody tr:hover td { background:color-mix(in srgb,var(--surface-2) 70%,transparent); }
td strong,td small { display:block; }td small{margin-top:3px;color:var(--muted);font-size:8px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.badge,.status,.offline-badge,.count-badge { display:inline-flex; align-items:center; width:max-content; border-radius:999px; font-weight:900; white-space:nowrap; }
.badge,.status { padding:5px 8px; font-size:7px; letter-spacing:.05em; text-transform:uppercase; }
.badge.pg { color:var(--blue); background:var(--blue-soft); }.status.ok{color:var(--green);background:var(--green-soft)}.status.review{color:var(--amber);background:var(--amber-soft)}.status.large{padding:8px 12px;font-size:8px}
.offline-badge { padding:8px 12px; color:var(--green); border:1px solid color-mix(in srgb,var(--green) 20%,transparent); background:var(--green-soft); font-size:8px; text-transform:uppercase; }
.count-badge { min-width:28px; height:28px; justify-content:center; color:var(--primary); background:var(--blue-soft); font-size:9px; }
.score-pill { min-width:49px; padding:6px 8px; display:inline-flex; justify-content:center; border-radius:9px; font-size:10px; font-weight:900; }.score-pill.high{color:var(--green);background:var(--green-soft)}.score-pill.low{color:var(--red);background:var(--red-soft)}
.exam-list { padding:6px 0; }.exam-list>div{padding:10px 16px;display:flex;align-items:center;gap:10px}.exam-list>div+div{border-top:1px solid var(--line)}.exam-list>div>span:nth-child(2){min-width:0;flex:1}.exam-list strong,.exam-list small{display:block}.exam-list strong{font-size:10px}.exam-list small{margin-top:3px;color:var(--muted);font-size:8px}
.exam-symbol { width:31px; height:31px; display:grid; place-items:center; flex:0 0 auto; border-radius:10px; color:var(--primary); background:var(--blue-soft); font-size:10px; font-weight:900; }.exam-symbol.large{width:42px;height:42px;font-size:14px}
.empty { min-height:255px; padding:38px 20px; display:flex; flex-direction:column; align-items:center; justify-content:center; color:var(--muted); text-align:center; font-size:10px; }.empty.compact{min-height:175px}.empty-icon{width:44px;height:44px;margin-bottom:11px;display:grid;place-items:center;border-radius:14px;color:var(--primary);background:var(--blue-soft);font-size:18px}.empty strong{color:var(--ink);font-size:13px}.empty>span:not(.empty-icon){margin:6px 0 14px}
.result-summary { margin-bottom:13px; display:grid; grid-template-columns:repeat(5,1fr); border:1px solid var(--line); border-radius:14px; background:var(--surface); box-shadow:var(--shadow); overflow:hidden; }.result-summary div{padding:13px 16px}.result-summary div+div{border-left:1px solid var(--line)}.result-summary span,.result-summary strong{display:block}.result-summary span{color:var(--muted);font-size:8px;text-transform:uppercase;font-weight:800}.result-summary strong{margin-top:5px;font-size:16px}
.filter-card { margin-bottom:14px; padding:13px; display:flex; align-items:end; gap:9px; border:1px solid var(--line); border-radius:14px; background:var(--surface); box-shadow:var(--shadow); }.filter-card label{min-width:145px;display:grid;gap:5px}.filter-card label>span{color:var(--muted);font-size:8px;font-weight:800}.filter-card .search-field{min-width:220px;flex:1}.score-filter>div{display:flex;align-items:center;gap:5px}.score-filter input{width:72px}.score-filter i{color:var(--muted);font-style:normal}
input,select,textarea { width:100%; border:1px solid var(--line-strong); border-radius:10px; padding:10px 11px; color:var(--ink); background:var(--surface); outline:none; font-size:10px; transition:.15s ease; }
textarea { min-height:95px; resize:vertical; line-height:1.5; }
input:focus,select:focus,textarea:focus { border-color:var(--accent); box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 15%,transparent); }
input::placeholder,textarea::placeholder{color:color-mix(in srgb,var(--muted) 70%,transparent)}
.form-layout { display:grid; grid-template-columns:minmax(0,1fr) 310px; gap:18px; align-items:start; }.form-panel{padding:20px;overflow:visible}.section-title{padding-bottom:15px;display:flex;align-items:center;gap:11px;border-bottom:1px solid var(--line)}.section-title>span{width:31px;height:31px;display:grid;place-items:center;flex:0 0 auto;border-radius:10px;color:#fff;background:var(--primary);font-size:10px;font-weight:900}.section-title h2{margin:0;font-size:13px}.section-title p{margin:3px 0 0;color:var(--muted);font-size:9px}.section-space{margin-top:23px}.form-grid{margin-top:15px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid label,.stack-form label{display:grid;gap:6px;font-size:9px;font-weight:800}.form-grid label.full{grid-column:1/-1}label small{color:var(--muted);font-size:8px;font-weight:400;line-height:1.45}.form-actions{margin-top:18px;padding-top:16px;display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line)}.stack-form{display:grid;gap:12px}.form-space{margin-top:17px}.download-strip{padding:10px 12px;display:flex;align-items:center;gap:10px;border-radius:10px;color:var(--muted);background:var(--surface-2);font-size:8px}.download-strip a{color:var(--primary);font-weight:900}.key-preview{display:flex;flex-wrap:wrap;gap:5px}.key-preview span{min-width:33px;padding:5px;border-radius:7px;color:var(--primary);background:var(--blue-soft);text-align:center;font-size:8px;font-weight:900}
.form-grid>.full { grid-column:1/-1; }
.exam-builder-layout { grid-template-columns:minmax(0,1fr) 295px; }
.score-help { padding:12px 14px; display:flex; align-items:center; justify-content:space-between; gap:12px; border:1px solid var(--line); border-radius:11px; color:var(--muted); background:var(--surface-2); font-size:9px; line-height:1.5; }
.score-help strong { color:var(--ink); }
.scoring-summary { margin-top:17px; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border:1px solid var(--line); border-radius:13px; overflow:hidden; background:var(--surface-2); }
.scoring-summary article { min-width:0; padding:12px 13px; }
.scoring-summary article+article { border-left:1px solid var(--line); }
.scoring-summary span,.scoring-summary strong { display:block; }
.scoring-summary span { color:var(--muted); font-size:7px; font-weight:800; text-transform:uppercase; }
.scoring-summary strong { margin-top:5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11px; }
.summary-ok { color:var(--green); }
.summary-warning { color:var(--amber); }
.question-table-wrap { max-height:525px; margin-top:17px; overflow:auto; border:1px solid var(--line); border-radius:13px; }
.question-editor-table { min-width:540px; }
.question-editor-table thead { position:sticky; top:0; z-index:2; }
.question-editor-table td { padding:8px 10px; }
.question-editor-table td:first-child { width:70px; }
.question-editor-table td:nth-child(2) { min-width:170px; }
.question-editor-table td:nth-child(3),.question-editor-table td:nth-child(4) { width:135px; }
.question-editor-table input,.question-editor-table select { min-height:35px; padding:8px 9px; }
.question-editor-table input[readonly] { color:var(--muted); background:var(--surface-2); }
.percent-input { position:relative; }
.percent-input input { padding-right:26px; }
.percent-input>span { position:absolute; top:50%; right:10px; color:var(--muted); font-size:9px; transform:translateY(-50%); }
.guide-card,.security-card { padding:20px; }.guide-card h3,.security-card h3{margin:6px 0 0;font-size:17px}.guide-list{margin-top:19px;display:grid;gap:15px}.guide-list>div{display:flex;gap:10px}.guide-list b{width:28px;height:28px;display:grid;place-items:center;flex:0 0 auto;border-radius:9px;color:var(--primary);background:var(--blue-soft);font-size:8px}.guide-list strong,.guide-list small{display:block}.guide-list strong{font-size:10px}.guide-list small{margin-top:3px;color:var(--muted);font-size:8px;line-height:1.45}
.grade-layout { display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:18px; align-items:start; }.upload-box{margin-top:15px;padding:30px 18px;display:block;border:1.5px dashed var(--line-strong);border-radius:14px;background:var(--surface-2);text-align:center;transition:.15s ease}.upload-box.dragover{border-color:var(--accent);background:var(--accent-soft)}.upload-box input{display:none}.upload-icon{width:48px;height:48px;margin:0 auto 12px;display:grid;place-items:center;border-radius:15px;color:var(--primary);background:var(--blue-soft);font-size:19px;font-weight:900}.upload-box strong{display:block;font-size:13px}.upload-box p{margin:6px 0 14px;color:var(--muted);font-size:9px}.file-name{display:block;margin-top:10px;color:var(--muted);font-size:8px}.process-steps{display:grid;gap:10px}.process-steps article{padding:15px;display:flex;gap:11px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.process-steps article.active{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));box-shadow:var(--shadow)}.process-steps b{width:31px;height:31px;display:grid;place-items:center;flex:0 0 auto;border-radius:10px;color:var(--primary);background:var(--blue-soft);font-size:8px}.process-steps strong{font-size:10px}.process-steps p{margin:4px 0 0;color:var(--muted);font-size:8px;line-height:1.45}.processing-note{margin-top:13px;padding:12px;display:flex;align-items:center;gap:10px;border-radius:11px;color:var(--green);background:var(--green-soft)}.processing-note>span{width:19px;height:19px;flex:0 0 auto;border:2px solid color-mix(in srgb,var(--green) 25%,transparent);border-top-color:var(--green);border-radius:50%;animation:spin .75s linear infinite}.processing-note strong,.processing-note small{display:block}.processing-note strong{font-size:9px}.processing-note small{margin-top:3px;font-size:8px}.hidden{display:none!important}@keyframes spin{to{transform:rotate(360deg)}}
.panel-form{padding:18px}.panel-form>.form-grid:first-child{margin-top:0}.portal-batch-table{min-width:1050px}.portal-policy-form{min-width:285px;display:grid;grid-template-columns:minmax(170px,1fr) auto;align-items:end;gap:8px}.portal-policy-form>label:first-of-type{grid-column:1/-1;display:grid;gap:5px}.portal-policy-form label>span{color:var(--muted);font-size:8px;font-weight:800}.portal-policy-form input[type=datetime-local]{min-height:36px;padding:7px 9px}.portal-open-check{min-height:32px;display:flex!important;align-items:center;gap:7px}.portal-open-check input{width:16px;min-height:16px;margin:0}.portal-open-check span{color:var(--ink)!important}.official-grade-panel .table-wrap{border-top:1px solid var(--line)}
.exam-card-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }.exam-card{padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.exam-card-top{display:flex;align-items:center;justify-content:space-between}.exam-card h3{margin:16px 0 0;font-size:14px}.exam-card>p{margin:5px 0 0;color:var(--muted);font-size:8px}.key-sample{min-height:64px;margin:15px 0;padding:10px;display:flex;flex-wrap:wrap;gap:5px;align-content:flex-start;border-radius:10px;background:var(--surface-2)}.key-sample span{min-width:29px;padding:4px;display:flex;align-items:center;justify-content:space-between;gap:4px;border-radius:6px;color:var(--muted);background:var(--surface);font-size:7px}.key-sample b{color:var(--primary);font-size:8px}.key-sample .more{justify-content:center;color:var(--primary);font-weight:900}.exam-card-actions{padding-top:13px;border-top:1px solid var(--line)}
.exam-card-metrics { margin-top:14px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.exam-card-metrics>span { padding:9px 10px; border:1px solid var(--line); border-radius:9px; background:var(--surface-2); }
.exam-card-metrics small,.exam-card-metrics strong { display:block; }
.exam-card-metrics small { color:var(--muted); font-size:7px; }
.exam-card-metrics strong { margin-top:4px; color:var(--primary); font-size:10px; }
.osusume-hero { margin-bottom:14px; padding:20px 22px; display:flex; align-items:center; justify-content:space-between; gap:20px; overflow:hidden; border-radius:19px; color:#fff; background:linear-gradient(135deg,#0d3852,#145f70 62%,#148b82); box-shadow:0 16px 40px rgba(13,56,82,.18); }.osusume-hero>div:first-child{display:flex;align-items:center;gap:15px}.sparkle{width:48px;height:48px;display:grid;place-items:center;flex:0 0 auto;border:1px solid rgba(255,255,255,.15);border-radius:15px;background:rgba(255,255,255,.1);font-size:19px}.osusume-hero h2{margin:5px 0 0;font-size:21px;letter-spacing:-.035em}.osusume-hero p{max-width:700px;margin:6px 0 0;color:#cde4e8;font-size:9px;line-height:1.55}.health-ring,.score-circle{position:relative;display:grid;place-items:center;align-content:center;flex:0 0 auto;border-radius:50%;background:conic-gradient(var(--accent) var(--score),rgba(255,255,255,.16) 0)}.health-ring{width:92px;height:92px}.health-ring:before,.score-circle:before{content:"";position:absolute;border-radius:50%;background:var(--surface)}.health-ring:before{inset:7px;background:#165260}.health-ring strong,.health-ring span,.score-circle strong,.score-circle span{position:relative;z-index:1;display:block;text-align:center}.health-ring strong{font-size:20px}.health-ring span{margin-top:2px;color:#cde4e8;font-size:7px;text-transform:uppercase}.compact-filter{justify-content:flex-end}.compact-filter label{min-width:190px}.osusume-stats article{text-align:left}.recommendations{margin-top:18px}.section-heading{margin-bottom:11px;display:flex;align-items:end;justify-content:space-between}.section-heading h3{margin:4px 0 0;font-size:15px}.section-heading>small{color:var(--muted);font-size:8px}.recommendation-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}.question-analysis{padding:8px 0}.question-analysis>div{padding:10px 16px;display:grid;grid-template-columns:32px 1fr;gap:10px;align-items:center}.question-analysis>div+div{border-top:1px solid var(--line)}.question-number{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;color:var(--primary);background:var(--blue-soft);font-size:9px;font-weight:900}.question-analysis strong,.question-analysis small{display:block}.question-analysis strong{font-size:9px}.question-analysis small{margin:3px 0 7px;color:var(--muted);font-size:8px}.attention-list{padding:7px 0}.attention-list a{padding:9px 16px;display:flex;align-items:center;gap:9px}.attention-list a+a{border-top:1px solid var(--line)}.attention-list a:hover{background:var(--surface-2)}.student-avatar{width:31px;height:31px;font-size:9px}.attention-list a>span:nth-child(2){min-width:0;flex:1}.attention-list strong,.attention-list small{display:block}.attention-list strong{font-size:9px}.attention-list small{margin-top:3px;color:var(--muted);font-size:8px}.attention-list b{color:var(--red);font-size:10px}
.detail-hero { padding:20px; display:grid; grid-template-columns:145px 1fr; gap:22px; align-items:center; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); }.score-circle{width:120px;height:120px;color:var(--ink);background:conic-gradient(var(--primary) var(--score),var(--surface-3) 0)}.score-circle:before{inset:9px}.score-circle strong{font-size:25px}.score-circle span{margin-top:2px;color:var(--muted);font-size:8px;text-transform:uppercase}.detail-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.detail-meta div{padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--surface-2)}.detail-meta span,.detail-meta strong{display:block}.detail-meta span{color:var(--muted);font-size:7px;text-transform:uppercase}.detail-meta strong{margin-top:5px;overflow:hidden;text-overflow:ellipsis;font-size:9px;white-space:nowrap}.answer-legend{display:flex;gap:7px}.answer-legend span{padding:4px 6px;border-radius:6px;font-size:7px}.answer-legend .correct{color:var(--green);background:var(--green-soft)}.answer-legend .wrong{color:var(--red);background:var(--red-soft)}.answer-legend .blank{color:var(--amber);background:var(--amber-soft)}.answer-grid{padding:16px;display:grid;grid-template-columns:repeat(10,minmax(75px,1fr));gap:8px}.answer-grid article{padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);text-align:center}.answer-grid article.correct{border-color:color-mix(in srgb,var(--green) 30%,var(--line));background:var(--green-soft)}.answer-grid article.wrong{border-color:color-mix(in srgb,var(--red) 30%,var(--line));background:var(--red-soft)}.answer-grid article.blank{border-color:color-mix(in srgb,var(--amber) 30%,var(--line));background:var(--amber-soft)}.answer-grid span,.answer-grid strong,.answer-grid small,.answer-grid b{display:block}.answer-grid span{color:var(--muted);font-size:7px}.answer-grid strong{margin:5px 0;font-size:16px}.answer-grid small{font-size:7px}.answer-grid b{margin-top:5px;font-size:7px;text-transform:uppercase}
.user-layout { display:grid; grid-template-columns:320px minmax(0,1fr); gap:18px; align-items:start; }.user-list{padding:4px 0}.user-list article{padding:12px 16px;display:flex;align-items:center;gap:11px}.user-list article+article{border-top:1px solid var(--line)}.user-list article.disabled{opacity:.62}.user-info{min-width:170px;flex:1}.user-info strong,.user-info span,.user-info small{display:block}.user-info strong{font-size:10px}.user-info span{margin-top:3px;color:var(--muted);font-size:8px}.user-info span i{width:6px;height:6px;margin-right:5px;display:inline-block;border-radius:50%}.user-info span i.on{background:var(--green)}.user-info span i.off{background:var(--red)}.user-info small{margin-top:3px;color:var(--muted);font-size:7px}.user-actions{justify-content:flex-end}.user-actions details{position:relative}.user-actions summary{list-style:none;cursor:pointer}.user-actions details form{position:absolute;right:0;top:37px;z-index:5;width:220px;padding:10px;display:flex;gap:6px;border:1px solid var(--line);border-radius:11px;background:var(--surface);box-shadow:var(--shadow)}.protected-label{padding:5px;color:var(--muted);font-size:7px}.profile-head{padding-bottom:18px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line)}.profile-avatar{width:58px;height:58px;display:grid;place-items:center;border-radius:17px;color:var(--primary);background:var(--blue-soft);font-size:20px;font-weight:900}.profile-head h2{margin:4px 0 0;font-size:18px}.profile-head p{margin:4px 0 0;color:var(--muted);font-size:9px}.security-card{text-align:center}.security-icon{width:50px;height:50px;margin:0 auto 14px;display:grid;place-items:center;border-radius:50%;color:var(--green);background:var(--green-soft);font-size:17px;font-weight:900}.security-card p{color:var(--muted);font-size:9px;line-height:1.6}
.user-summary { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.user-summary span { padding:8px 11px; border:1px solid var(--line); border-radius:999px; color:var(--primary); background:var(--surface); font-size:8px; font-weight:800; }
.role-switch { display:flex; align-items:center; gap:6px; }
.role-switch select { width:auto; min-height:31px; padding:6px 8px; font-size:8px; }
.login-page { min-height:100vh; display:grid; grid-template-columns:minmax(380px,1.1fr) minmax(420px,.9fr); background:linear-gradient(145deg,#071928,#0e3d57); }.login-showcase{padding:55px clamp(35px,7vw,100px);display:flex;flex-direction:column;color:#fff}.login-message{margin:auto 0}.login-message h1{max-width:650px;margin:9px 0 0;font-size:clamp(34px,4.4vw,63px);line-height:1.04;letter-spacing:-.055em}.login-message p{max-width:580px;margin:18px 0 0;color:#bdd4df;font-size:12px;line-height:1.7}.login-features{display:flex;flex-wrap:wrap;gap:10px 20px;color:#bfe5dd;font-size:9px}.login-panel{padding:30px;display:grid;place-items:center;background:var(--bg)}.login-card{width:min(430px,100%);padding:30px;border:1px solid var(--line);border-radius:20px;background:var(--surface);box-shadow:0 25px 80px rgba(0,0,0,.18)}.login-card h2{margin:5px 0 0;font-size:23px;letter-spacing:-.04em}.login-card>div>p{margin:7px 0 20px;color:var(--muted);font-size:10px}.login-note{margin:15px 0 0;padding:10px;border-radius:9px;color:var(--amber);background:var(--amber-soft);font-size:8px;line-height:1.5;text-align:center}
.error-panel { min-height:360px; padding:35px; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; }.error-code{font-size:60px;font-weight:900;letter-spacing:-.06em;color:var(--primary)}.error-panel h2{max-width:620px;margin:9px 0 0;font-size:17px}.error-panel p{margin:8px 0 18px;color:var(--muted);font-size:9px}
.public-error { min-height:100vh; padding:24px; display:grid; place-items:center; }.public-error .panel{width:min(680px,100%)}
.nav { min-height:0; overflow-y:auto; scrollbar-width:thin; }
.engine-card { flex-shrink:0; }
.expanded-filter { flex-wrap:wrap; }
.expanded-filter label { min-width:140px; flex:1 1 140px; }
.expanded-filter .search-field { min-width:210px; flex:1.5 1 210px; }
.expanded-filter .button { align-self:flex-end; }
.class-chips { margin-bottom:18px; display:flex; flex-wrap:wrap; gap:8px; }
.class-chips a,.class-badge { padding:7px 11px; border:1px solid var(--line); border-radius:999px; background:var(--surface); font-size:9px; font-weight:800; }
.class-chips a.active,.class-badge { color:var(--primary); border-color:color-mix(in srgb,var(--primary) 24%,var(--line)); background:var(--blue-soft); }
.student-layout { display:grid; grid-template-columns:320px minmax(0,1fr); gap:18px; align-items:start; }
.student-layout.view-only { grid-template-columns:1fr; }
.student-tools { display:grid; gap:15px; }
.field-note { color:var(--muted); font-size:8px; line-height:1.5; }
.inline-search { display:flex; gap:7px; align-items:center; }
.inline-search input { min-width:175px; min-height:34px; }
.student-actions { display:flex; align-items:center; flex-wrap:wrap; gap:6px; }
.student-actions details { position:relative; }
.student-actions summary { list-style:none; }
.student-edit-form { position:absolute; top:37px; right:0; z-index:6; width:245px; padding:12px; display:grid; gap:8px; border:1px solid var(--line); border-radius:12px; background:var(--surface); box-shadow:var(--shadow); }
.student-edit-form label { display:grid; gap:5px; font-size:8px; font-weight:800; }
.review-panel .panel-head p { margin:5px 0 0; color:var(--muted); font-size:9px; }
.review-form { padding:18px; display:grid; justify-items:start; gap:17px; }
.review-student-id,.review-answer { display:grid; gap:6px; color:var(--muted); font-size:8px; font-weight:800; }
.review-student-id { width:min(310px,100%); }
.review-grid { width:100%; display:grid; grid-template-columns:repeat(auto-fill,minmax(145px,1fr)); gap:10px; }
.review-answer { padding:10px; border:1px solid var(--line); border-radius:10px; background:var(--surface-2); }
.review-answer.needs-review { border-color:color-mix(in srgb,var(--amber) 55%,var(--line)); background:var(--amber-soft); }
.review-answer select { min-height:36px; }
.review-history article { padding:13px 17px; }
.review-history article+article { border-top:1px solid var(--line); }
.review-history strong { font-size:10px; }
.review-history small { margin-left:9px; color:var(--muted); font-size:8px; }
.review-history p { margin:6px 0 0; color:var(--muted); font-size:9px; line-height:1.6; }
.analysis-table { min-width:900px; }
.analysis-rate { min-width:150px; }
.analysis-rate strong,.analysis-rate small { display:block; }
.analysis-rate small { margin:3px 0 7px; color:var(--muted); font-size:8px; }
.difficulty-badge { padding:5px 8px; border-radius:7px; font-size:8px; font-weight:800; }
.difficulty-badge.sulit { color:var(--red); background:var(--red-soft); }
.difficulty-badge.sedang { color:var(--amber); background:var(--amber-soft); }
.difficulty-badge.mudah { color:var(--green); background:var(--green-soft); }
.choice-distribution { display:flex; flex-wrap:wrap; gap:5px; }
.choice-distribution span { min-width:34px; padding:5px; display:flex; justify-content:space-between; gap:4px; border:1px solid var(--line); border-radius:6px; color:var(--muted); font-size:8px; }
.choice-distribution span.is-key { border-color:color-mix(in srgb,var(--green) 35%,var(--line)); color:var(--green); background:var(--green-soft); }
.text-positive { color:var(--green); }.text-negative { color:var(--red); }
.analysis-note { margin-top:15px; padding:13px 15px; border:1px solid var(--line); border-radius:12px; color:var(--muted); background:var(--surface); font-size:9px; line-height:1.7; }
.analysis-note strong { color:var(--ink); }
.backup-layout { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; align-items:start; }
.backup-instructions { padding-top:15px; }
.backup-instructions p { color:var(--muted); font-size:10px; line-height:1.6; }
.restore-panel { border-color:color-mix(in srgb,var(--amber) 28%,var(--line)); }
.confirm-checkbox { display:flex!important; align-items:flex-start; gap:9px; color:var(--muted); font-size:9px!important; line-height:1.55; }
.confirm-checkbox input { width:16px; min-height:16px; margin-top:1px; }
@media (max-width:1250px){.metric-grid{grid-template-columns:repeat(3,1fr)}.stats-five{grid-template-columns:repeat(3,1fr)}.stats-six{grid-template-columns:repeat(3,1fr)}.exam-card-grid{grid-template-columns:repeat(2,1fr)}.answer-grid{grid-template-columns:repeat(5,1fr)}}
@media (max-width:1050px){.dashboard-grid,.two-column,.form-layout,.grade-layout,.user-layout{grid-template-columns:1fr}.stats-five{grid-template-columns:repeat(2,1fr)}.filter-card{flex-wrap:wrap}.filter-card label,.filter-card .search-field{min-width:calc(33% - 8px);flex:1}.guide-card,.security-card{display:none}.process-steps{grid-template-columns:repeat(4,1fr)}.process-steps article{display:block}.process-steps article b{margin-bottom:9px}.login-page{grid-template-columns:1fr}.login-showcase{min-height:360px}.login-message{margin:55px 0}.detail-meta{grid-template-columns:repeat(2,1fr)}}
@media (max-width:780px){body.sidebar-open{overflow:hidden}.shell{display:block}.sidebar{position:fixed;left:-275px;width:258px;transition:left .2s ease}.sidebar.open{left:0}.sidebar-overlay{position:fixed;inset:0;z-index:19;border:0;background:rgba(3,13,22,.55);backdrop-filter:blur(2px)}.sidebar-overlay.open{display:block}.topbar{padding:12px 14px}.menu-button{display:grid}.page-context p{display:none}.account-chip>span:nth-child(2),.link-button{display:none}.content{padding:20px 14px 35px}.hero-row,.page-heading{align-items:stretch;flex-direction:column}.actions{width:100%}.metric-grid,.stats-five,.stats-six{grid-template-columns:repeat(2,1fr)}.result-summary{grid-template-columns:repeat(2,1fr)}.result-summary div+div{border-left:0}.result-summary div:nth-child(even){border-left:1px solid var(--line)}.result-summary div:nth-child(n+3){border-top:1px solid var(--line)}.filter-card{align-items:stretch;flex-direction:column}.filter-card label,.filter-card .search-field{min-width:0}.filter-card .button{width:100%}.exam-card-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-grid label.full{grid-column:auto}.process-steps{grid-template-columns:1fr}.process-steps article{display:flex}.recommendation-grid{grid-template-columns:1fr}.osusume-hero{align-items:flex-start}.osusume-hero>div:first-child{align-items:flex-start}.health-ring{width:75px;height:75px}.detail-hero{grid-template-columns:1fr}.score-circle{margin:auto}.answer-grid{grid-template-columns:repeat(3,1fr)}.user-list article{align-items:flex-start;flex-wrap:wrap}.user-actions{width:100%;justify-content:flex-start}.login-showcase{display:none}.login-panel{min-height:100vh;padding:18px}.login-card{padding:24px}}
@media (max-width:480px){.metric-grid,.stats-five,.stats-six{grid-template-columns:1fr}.stat-card{padding:14px}.dashboard-grid{grid-template-columns:1fr}.dist-row{grid-template-columns:84px 1fr 24px}.mini-metrics{grid-template-columns:1fr}.mini-metrics div+div{border-top:1px solid var(--line);border-left:0}.osusume-hero{padding:17px}.sparkle{display:none}.health-ring{display:none}.detail-meta{grid-template-columns:1fr}.answer-grid{grid-template-columns:repeat(2,1fr)}.topbar-actions{gap:5px}.theme-button{display:none}}
@media (max-width:780px){.scoring-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.scoring-summary article:nth-child(3){border-left:0}.scoring-summary article:nth-child(n+3){border-top:1px solid var(--line)}.score-help{align-items:flex-start;flex-direction:column}.download-strip{align-items:flex-start;flex-direction:column}.user-summary{width:100%}}
@media (max-width:1050px){.student-layout,.backup-layout{grid-template-columns:1fr}.student-tools{grid-template-columns:repeat(2,minmax(0,1fr))}.nav{overflow-y:auto}}
@media (max-width:780px){.student-tools{grid-template-columns:1fr}.inline-search{width:100%}.inline-search input{min-width:0}.review-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.student-edit-form{right:auto;left:0}.expanded-filter label,.expanded-filter .search-field{min-width:0}.class-chips a{font-size:8px}}

.id-hint { display:block; margin-top:5px; color:var(--muted); font-size:8px; font-weight:700; text-align:right; }
.id-hint.valid { color:var(--green); }
.student-name-link { display:inline-grid; gap:3px; font-weight:800; }
.student-name-link small { color:var(--primary); font-size:7px; font-weight:800; }
.duplicate-option { margin-top:13px; padding:12px 13px; display:flex!important; align-items:flex-start; gap:10px; border:1px solid var(--line); border-radius:11px; background:var(--surface-2); cursor:pointer; }
.duplicate-option input { width:16px; min-height:16px; margin-top:1px; }
.duplicate-option span,.duplicate-option strong,.duplicate-option small { display:block; }
.duplicate-option strong { color:var(--ink); font-size:9px; }
.duplicate-option small { margin-top:4px; color:var(--muted); font-size:8px; line-height:1.45; }
.student-profile-hero { margin-bottom:18px; padding:20px 22px; display:flex; align-items:center; justify-content:space-between; gap:20px; border:1px solid var(--line); border-radius:19px; background:linear-gradient(135deg,var(--surface),color-mix(in srgb,var(--accent-soft) 60%,var(--surface))); box-shadow:var(--shadow); }
.profile-identity { display:flex; align-items:center; gap:15px; }
.profile-monogram { width:62px; height:62px; display:grid; place-items:center; flex:0 0 auto; border-radius:19px; color:#07645b; background:var(--accent-soft); font-size:23px; font-weight:900; }
.profile-identity h2 { margin:5px 0 0; font-size:24px; letter-spacing:-.04em; }
.profile-identity p { margin:5px 0 0; color:var(--muted); font-size:9px; }
.profile-stats { margin-bottom:18px; display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; }
.profile-stats article { padding:15px; border:1px solid var(--line); border-radius:14px; background:var(--surface); box-shadow:var(--shadow); }
.profile-stats small,.profile-stats strong { display:block; }
.profile-stats small { color:var(--muted); font-size:7px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.profile-stats strong { margin-top:6px; font-size:21px; letter-spacing:-.04em; }
.profile-stats p { margin:4px 0 0; color:var(--muted); font-size:7px; line-height:1.4; }
.profile-grid { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(330px,.7fr); gap:18px; }
.trend-panel { min-width:0; }
.score-trend { min-height:235px; padding:20px 18px 8px; display:grid; grid-auto-flow:column; grid-auto-columns:minmax(45px,1fr); align-items:end; gap:9px; overflow-x:auto; }
.score-trend article { min-width:45px; text-align:center; }
.trend-track { position:relative; height:185px; overflow:hidden; border-radius:9px 9px 5px 5px; background:linear-gradient(to top,var(--surface-3),transparent); }
.trend-track:before,.trend-track:after { content:""; position:absolute; left:0; right:0; border-top:1px dashed var(--line); }
.trend-track:before { top:25%; }.trend-track:after { top:50%; }
.trend-track i { position:absolute; left:50%; bottom:0; width:min(28px,70%); height:max(3px,var(--value)); transform:translateX(-50%); border-radius:8px 8px 3px 3px; background:linear-gradient(180deg,var(--accent),var(--primary)); box-shadow:0 8px 18px rgba(20,184,166,.22); }
.trend-track b { position:relative; z-index:2; display:inline-block; margin-top:6px; padding:3px 5px; border-radius:6px; color:var(--ink); background:color-mix(in srgb,var(--surface) 84%,transparent); font-size:7px; }
.score-trend article>small { display:block; margin-top:7px; color:var(--muted); font-size:7px; }
.trend-caption { padding:0 18px 14px; display:flex; justify-content:space-between; color:var(--muted); font-size:7px; }
.exam-progress-list { padding:4px 0; }
.exam-progress-list article { padding:13px 16px; display:flex; align-items:center; justify-content:space-between; gap:13px; }
.exam-progress-list article+article { border-top:1px solid var(--line); }
.exam-progress-list strong,.exam-progress-list small,.exam-progress-score b,.exam-progress-score span { display:block; }
.exam-progress-list strong { font-size:9px; }.exam-progress-list small { margin-top:4px; color:var(--muted); font-size:7px; }
.exam-progress-score { flex:0 0 auto; text-align:right; }.exam-progress-score b { color:var(--primary); font-size:13px; }.exam-progress-score span { margin-top:3px; color:var(--muted); font-size:7px; }
@media (max-width:1250px){.profile-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:1050px){.profile-grid{grid-template-columns:1fr}}
@media (max-width:780px){.student-profile-hero{align-items:stretch;flex-direction:column}.profile-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-monogram{width:52px;height:52px}.profile-identity h2{font-size:20px}}
@media (max-width:480px){.profile-stats{grid-template-columns:1fr}.profile-identity{align-items:flex-start}.score-trend{grid-auto-columns:52px}.student-profile-hero .button{width:100%}}

/* v1.8.0 - Batch PG + Essay */
.essay-panel .panel-head p{margin:5px 0 0;color:var(--muted);font-size:9px}.essay-import-form{padding:18px}.weight-preview{margin-top:16px;padding:14px;display:grid;grid-template-columns:1fr auto 1fr auto 1.15fr;gap:10px;align-items:center;border:1px solid var(--line);border-radius:13px;background:var(--surface-2)}.weight-preview>div{padding:12px;border-radius:10px;background:var(--surface);text-align:center}.weight-preview>div.final{border:1px solid color-mix(in srgb,var(--green) 30%,var(--line));background:var(--green-soft)}.weight-preview span,.weight-preview strong,.weight-preview small{display:block}.weight-preview span{color:var(--muted);font-size:8px;font-weight:800;text-transform:uppercase}.weight-preview strong{margin:4px 0;font-size:18px}.weight-preview small{color:var(--muted);font-size:8px}.weight-preview>b{color:var(--muted);font-size:18px}.status.muted{color:var(--muted);background:var(--surface-2)}.combined-result-table td:nth-child(4) strong,.combined-result-table td:nth-child(5) strong{display:block;font-size:11px}.combined-result-table td:nth-child(4) small,.combined-result-table td:nth-child(5) small{display:block;margin-top:3px;color:var(--muted);font-size:8px}
@media (max-width:780px){.weight-preview{grid-template-columns:1fr}.weight-preview>b{text-align:center}.essay-panel .panel-head{align-items:flex-start;flex-direction:column}.essay-panel .panel-head .button{width:100%}}


/* v1.9.0 - Foto ke PDF */
.photo-pdf-panel{width:100%;max-width:none}.photo-pdf-panel>form{padding:20px}.photo-pdf-panel .form-grid{margin-top:0}.photo-upload-box{margin-top:20px}.photo-file-list{margin-top:16px;border:1px solid var(--line);border-radius:14px;overflow:hidden;max-height:360px;overflow-y:auto}.photo-file-list>div{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line)}.photo-file-list>div:last-child{border-bottom:0}.photo-file-list b{font-variant-numeric:tabular-nums}.photo-file-list span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-file-list small{white-space:nowrap;opacity:.72}.tips-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0}.tips-grid>div{min-width:0;padding:20px 22px}.tips-grid>div+div{border-left:1px solid var(--line)}.tips-grid h3{margin:6px 0}.tips-grid p{margin:0;color:var(--muted);line-height:1.65;overflow-wrap:anywhere}@media(max-width:720px){.photo-pdf-panel>form{padding:16px}.tips-grid{grid-template-columns:1fr}.tips-grid>div+div{border-top:1px solid var(--line);border-left:0}.photo-file-list>div{grid-template-columns:36px minmax(0,1fr)}.photo-file-list small{grid-column:2}}


/* v2.0.0 - Batch PG + Essay + Kehadiran */
.attendance-summary{grid-template-columns:repeat(9,minmax(0,1fr))}.attendance-inline{min-width:118px}.attendance-inline select{padding:7px 28px 7px 9px;font-size:8px}.attendance-detail-panel{padding-bottom:18px}.attendance-detail-form{padding:0 18px;display:flex;align-items:end;gap:10px}.attendance-detail-form label{min-width:230px;display:grid;gap:6px}.attendance-detail-form label>span{color:var(--muted);font-size:8px;font-weight:800}.status.absent{color:var(--red);background:var(--red-soft)}@media(max-width:1180px){.attendance-summary{grid-template-columns:repeat(5,minmax(0,1fr))}.attendance-summary div:nth-child(6){border-left:0;border-top:1px solid var(--line)}.attendance-summary div:nth-child(n+6){border-top:1px solid var(--line)}}@media(max-width:780px){.attendance-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-summary div{border-top:1px solid var(--line)!important}.attendance-summary div:nth-child(odd){border-left:0!important}.attendance-detail-form{align-items:stretch;flex-direction:column}.attendance-detail-form label{min-width:0}.attendance-detail-form .button{width:100%}}


/* v2.1.0 - Auto Grade / Predikat + KKM per batch */
.grade-config-grid .grade-preview{padding:11px 12px;border:1px dashed var(--line);border-radius:10px;background:var(--surface-2)}.grade-config-grid .grade-preview strong,.grade-config-grid .grade-preview small{display:block}.grade-config-grid .grade-preview small{margin-top:4px;color:var(--muted)}.grade-scheme-line{display:block;margin:-3px 0 12px;color:var(--primary);font-weight:800}.grade-badge{min-width:34px;height:30px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;font-size:11px;font-weight:950;background:var(--surface-2);color:var(--text)}.grade-a{background:var(--green-soft);color:var(--green)}.grade-b{background:var(--blue-soft);color:var(--primary)}.grade-c{background:var(--amber-soft);color:var(--amber)}.grade-d{background:var(--red-soft);color:var(--red)}.batch-grading-panel{margin-bottom:16px}.batch-grading-panel .panel-head p{margin:4px 0 0;color:var(--muted);font-size:9px}.batch-grading-form{display:grid;grid-template-columns:repeat(4,minmax(100px,1fr)) auto;gap:10px;align-items:end}.batch-grading-form label{display:grid;gap:6px;font-size:9px;font-weight:800}.batch-grading-form .button{height:38px}.muted-copy{margin:0;color:var(--muted);font-size:9px}@media(max-width:900px){.batch-grading-form{grid-template-columns:repeat(2,minmax(0,1fr))}.batch-grading-form .button{grid-column:1/-1}}@media(max-width:520px){.batch-grading-form{grid-template-columns:1fr}}


/* v2.2.0 - Ranking otomatis + statistik batch */
.ranking-summary{grid-template-columns:repeat(9,minmax(0,1fr))}.batch-ranking-panel{margin-bottom:16px}.batch-ranking-panel .panel-head p{margin:4px 0 0;color:var(--muted);font-size:9px}.batch-stat-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));border-top:1px solid var(--line)}.batch-stat-grid>div{padding:14px 12px;border-left:1px solid var(--line)}.batch-stat-grid>div:first-child{border-left:0}.batch-stat-grid span,.rank-cell small{display:block;color:var(--muted);font-size:8px;font-weight:800}.batch-stat-grid strong{display:block;margin-top:5px;font-size:17px}.rank-cell{text-align:center;min-width:64px}.rank-badge{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:32px;padding:0 9px;border-radius:10px;background:var(--blue-soft);color:var(--primary);font-weight:950}.rank-cell small{margin-top:4px}@media(max-width:1180px){.batch-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.batch-stat-grid>div:nth-child(5){border-left:0;border-top:1px solid var(--line)}.batch-stat-grid>div:nth-child(n+5){border-top:1px solid var(--line)}}@media(max-width:700px){.batch-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.batch-stat-grid>div:nth-child(odd){border-left:0}.batch-stat-grid>div:nth-child(n+3){border-top:1px solid var(--line)}}

/* v2.3.0 Dashboard Statistik Ujian */
.dashboard-analytics { margin-bottom:18px; }
.dashboard-analytics .analytics-summary,.dashboard-analytics .analytics-grid { transition:opacity .16s ease,filter .16s ease; }
.dashboard-analytics.is-refreshing .analytics-summary,.dashboard-analytics.is-refreshing .analytics-grid { opacity:.55; filter:saturate(.7); }
.analytics-head { align-items:flex-end; }
.analytics-head>div>small { display:block; margin-top:5px; color:var(--muted); font-size:8px; }
.dashboard-batch-filter { display:flex; align-items:end; gap:8px; min-width:min(430px,48vw); }
.dashboard-batch-filter label { min-width:0; flex:1; display:grid; gap:5px; }
.dashboard-batch-filter label>span { color:var(--muted); font-size:8px; font-weight:800; }
.live-status { align-self:center; min-width:92px; color:var(--muted); font-size:7px; font-weight:800; line-height:1.35; text-align:right; }
.analytics-summary { display:grid; grid-template-columns:repeat(5,1fr); border-bottom:1px solid var(--line); }
.analytics-summary article { padding:15px 18px; }
.analytics-summary article+article { border-left:1px solid var(--line); }
.analytics-summary span,.analytics-summary strong,.analytics-summary small { display:block; }
.analytics-summary span { color:var(--muted); font-size:7px; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }
.analytics-summary strong { margin-top:5px; font-size:19px; letter-spacing:-.04em; }
.analytics-summary small { margin-top:3px; color:var(--muted); font-size:7px; }
.analytics-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(290px,.65fr); gap:0; }
.analytics-card { min-width:0; padding:18px; }
.analytics-card+.analytics-card { border-left:1px solid var(--line); }
.chart-title { margin-bottom:15px; display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.chart-title strong,.chart-title small { display:block; }
.chart-title strong { font-size:11px; }
.chart-title small { margin-top:3px; color:var(--muted); font-size:8px; }
.chart-title>span { padding:5px 8px; border-radius:999px; color:var(--primary); background:var(--blue-soft); font-size:7px; font-weight:900; }
.histogram-chart { height:175px; display:grid; grid-template-columns:repeat(5,1fr); align-items:end; gap:10px; }
.hist-column { height:100%; display:grid; grid-template-rows:20px minmax(80px,1fr) 20px; align-items:end; text-align:center; }
.hist-value { color:var(--ink); font-size:9px; font-weight:900; }
.hist-track { height:100%; min-height:90px; display:flex; align-items:flex-end; justify-content:center; border-bottom:1px solid var(--line-strong); }
.hist-track i { width:min(40px,64%); min-height:2px; display:block; border-radius:6px 6px 2px 2px; background:linear-gradient(180deg,var(--accent),var(--primary)); }
.hist-column small { align-self:end; color:var(--muted); font-size:7px; font-weight:800; }
.pass-card { display:flex; flex-direction:column; }
.pass-visual { flex:1; display:flex; align-items:center; justify-content:center; gap:24px; padding:6px 0 10px; }
.pass-ring { --pass-angle:0deg; width:128px; height:128px; display:grid; place-items:center; flex:0 0 auto; border-radius:50%; background:conic-gradient(var(--green) var(--pass-angle), var(--surface-3) 0); position:relative; }
.pass-ring:after { content:""; position:absolute; inset:13px; border-radius:50%; background:var(--surface); box-shadow:inset 0 0 0 1px var(--line); }
.pass-ring>div { z-index:1; text-align:center; }
.pass-ring strong,.pass-ring small { display:block; }
.pass-ring strong { font-size:18px; }
.pass-ring small { margin-top:3px; color:var(--muted); font-size:7px; text-transform:uppercase; }
.pass-legend { min-width:125px; display:grid; gap:11px; }
.pass-legend>div { display:grid; grid-template-columns:10px 1fr auto; align-items:center; gap:7px; }
.pass-legend i { width:8px; height:8px; border-radius:50%; }
.pass-legend .ok-dot { background:var(--green); }
.pass-legend .bad-dot { background:var(--red); }
.pass-legend span { color:var(--muted); font-size:8px; }
.pass-legend b { font-size:10px; }
.batch-trend-chart { padding:7px 0; }
.trend-row { padding:9px 16px; display:grid; grid-template-columns:minmax(100px,.9fr) minmax(130px,1.1fr); align-items:center; gap:13px; color:inherit; }
.trend-row+.trend-row { border-top:1px solid var(--line); }
.trend-row:hover { background:var(--surface-2); }
.trend-label,.trend-bars { min-width:0; }
.trend-label strong,.trend-label small,.trend-bars small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.trend-label strong { font-size:9px; }
.trend-label small,.trend-bars small { margin-top:3px; color:var(--muted); font-size:7px; }
.trend-bar { height:7px; overflow:hidden; border-radius:999px; background:var(--surface-3); }
.trend-bar i { height:100%; display:block; border-radius:inherit; background:var(--blue); }
@media (max-width:1050px){.analytics-head{align-items:stretch;flex-direction:column}.dashboard-batch-filter{width:100%;min-width:0}.analytics-summary{grid-template-columns:repeat(3,1fr)}.analytics-summary article:nth-child(4){border-left:0;border-top:1px solid var(--line)}.analytics-summary article:nth-child(5){border-top:1px solid var(--line)}.analytics-grid{grid-template-columns:1fr}.analytics-card+.analytics-card{border-left:0;border-top:1px solid var(--line)}}
@media (max-width:620px){.analytics-summary{grid-template-columns:repeat(2,1fr)}.analytics-summary article:nth-child(3),.analytics-summary article:nth-child(5){border-left:0}.analytics-summary article:nth-child(n+3){border-top:1px solid var(--line)}.pass-visual{align-items:center;flex-direction:column}.trend-row{grid-template-columns:1fr}.histogram-chart{gap:5px}.dashboard-batch-filter{align-items:stretch;flex-direction:column}}
@media (max-width:620px){.live-status{min-width:0;text-align:left}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}


/* v2.4.0 Analisis Butir Soal */
.analysis-summary{grid-template-columns:repeat(6,minmax(0,1fr))}.analysis-priority-panel{margin-bottom:16px}.problem-question-grid{padding:14px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.problem-question-card{padding:13px;border:1px solid var(--line);border-radius:13px;background:var(--surface-2)}.problem-question-card.warning{border-color:#f1d19a;background:#fffaf0}.problem-question-card.critical{border-color:#efb5b5;background:#fff5f5}.problem-question-top{display:flex;align-items:center;justify-content:space-between;gap:7px}.problem-question-card>strong{display:block;margin-top:10px;font-size:18px}.problem-question-card>small{display:block;margin:4px 0 8px;color:var(--muted);font-size:8px}.problem-question-card p{margin:8px 0 0;color:var(--muted);font-size:8px;line-height:1.5}.review-badge{display:inline-flex;align-items:center;padding:4px 7px;border-radius:999px;background:#eaf6ef;color:#21764b;font-size:7px;font-weight:900;white-space:nowrap}.review-badge.waspada{background:#fff3d8;color:#946100}.review-badge.periksa{background:#ffe6d2;color:#9a4c00}.review-badge.periksa-kunci{background:#ffe0e0;color:#a32828}.enhanced-analysis-table{min-width:1320px}.enhanced-analysis-table .analysis-rate{min-width:110px}.choice-distribution.detailed span{position:relative;min-width:48px;padding:6px 5px}.choice-distribution.detailed small{display:block;margin-top:2px;font-size:7px;opacity:.7}.choice-distribution .is-dominant{box-shadow:inset 0 0 0 2px rgba(21,92,115,.18)}.choice-distribution .is-key.is-dominant{box-shadow:inset 0 0 0 2px rgba(31,126,81,.35)}.review-cell{min-width:220px}.review-cell small{display:block;margin-top:6px;color:var(--muted);font-size:8px;line-height:1.45}.analysis-row-critical td{background:rgba(190,45,45,.025)}
@media(max-width:1100px){.analysis-summary{grid-template-columns:repeat(3,1fr)}.problem-question-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.analysis-summary{grid-template-columns:repeat(2,1fr)}.problem-question-grid{grid-template-columns:1fr}}


/* v2.5.0 Review & Koreksi Kunci */
.key-review-panel{margin-top:18px}.key-suspect-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px}.key-suspect-card{border:1px solid var(--line,#dce5ef);border-radius:16px;padding:16px;background:#fff}.key-suspect-card>div:first-child{display:flex;align-items:center;gap:10px}.key-suspect-card p{min-height:42px}.inline-key-form,.table-key-form{display:flex;align-items:end;gap:8px;flex-wrap:wrap}.inline-key-form label{min-width:110px}.table-key-form select{min-width:70px}.button.small{padding:7px 10px;font-size:12px}.info-strip{padding:13px 15px;border-radius:12px;background:#eef8f3;border:1px solid #cfe9dc}.key-impact-summary{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}.key-confirm-panel{border:1px solid #f0c7bb}.key-scope-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:12px 0 18px}.key-scope-grid>div{padding:13px;border-radius:12px;background:#f7f9fc;display:flex;flex-direction:column;gap:5px}.key-scope-grid span{font-size:12px;color:var(--muted,#627083)}.key-confirm-form{display:flex;flex-direction:column;gap:14px}.check-row{display:flex!important;align-items:flex-start!important;gap:10px!important;padding:13px;border:1px solid #dce5ef;border-radius:12px}.check-row input{margin-top:4px}.check-row span{display:flex;flex-direction:column;gap:3px}.button.danger{background:#a63d2d;color:#fff;border-color:#a63d2d}.impact-table td:first-child{min-width:210px}.impact-table td:first-child small{display:block;margin-top:3px}.text-positive{color:#147a53}.text-negative{color:#b54632}@media(max-width:760px){.enhanced-analysis-table{min-width:1280px}.impact-table{min-width:900px}.key-scope-grid{grid-template-columns:1fr}.inline-key-form{align-items:stretch}.inline-key-form label,.inline-key-form button{width:100%}}
.package-downloads {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin: .8rem 0;
}
.package-downloads a,
.package-download-strip a {
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: .45rem .75rem;
  color: var(--primary);
  font-size: .82rem;
  font-weight: 800;
  text-decoration: none;
}
.package-downloads a:hover,
.package-download-strip a:hover { background: var(--surface-2); }
.package-downloads .all-packages { background: var(--primary); color: #fff; border-color: var(--primary); }
.package-field { border-left: 3px solid var(--primary); padding-left: 1rem; }
.package-column { min-width: 92px; }

/* v2.8.0 - Scan Review: original LJK + machine detection overlay */
.scan-review-panel{overflow:visible}.scan-review-head{align-items:flex-start}.scan-review-head p{margin:4px 0 0;color:var(--muted);font-size:9px;line-height:1.5}.scan-review-statuses{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap}.scan-review-layout{padding:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;background:var(--surface-2)}.scan-preview-card{min-width:0;border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden;box-shadow:0 8px 24px rgba(15,38,55,.05)}.scan-preview-card.detection-card{border-color:color-mix(in srgb,var(--primary) 26%,var(--line))}.scan-preview-card-head{min-height:58px;padding:11px 13px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line)}.scan-preview-card-head>div{min-width:0;display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:center}.scan-preview-card-head>div>span{grid-row:1/3;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--surface-2);color:var(--primary);font-size:8px;font-weight:950}.scan-preview-card-head strong{font-size:10px}.scan-preview-card-head small{margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:7px}.scan-image-link{display:block;padding:12px;background:linear-gradient(180deg,var(--surface-2),var(--surface))}.scan-image-link img{display:block;width:100%;height:auto;max-height:760px;object-fit:contain;object-position:top center;border:1px solid var(--line);border-radius:9px;background:#fff;box-shadow:0 8px 22px rgba(14,32,48,.06);cursor:zoom-in}.scan-review-footer{padding:0 16px 16px}.scan-quality-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface)}.scan-quality-grid>div{padding:10px 11px;border-left:1px solid var(--line)}.scan-quality-grid>div:first-child{border-left:0}.scan-quality-grid span,.scan-quality-grid strong{display:block}.scan-quality-grid span{color:var(--muted);font-size:7px;font-weight:800;text-transform:uppercase}.scan-quality-grid strong{margin-top:4px;overflow:hidden;text-overflow:ellipsis;font-size:10px;white-space:nowrap}.scan-warning-list{margin-top:10px;padding:11px 12px;display:grid;gap:5px;border:1px solid color-mix(in srgb,var(--amber) 35%,var(--line));border-radius:11px;background:var(--amber-soft);color:var(--amber)}.scan-warning-list strong{font-size:8px;text-transform:uppercase}.scan-warning-list span{font-size:8px;line-height:1.45}.scan-review-note{margin:10px 2px 0;color:var(--muted);font-size:8px;line-height:1.55}.scan-empty{margin:16px}.scan-empty>span:last-child{max-width:520px;text-align:center}
@media(max-width:1050px){.scan-quality-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.scan-quality-grid>div:nth-child(4){border-left:0}.scan-quality-grid>div:nth-child(n+4){border-top:1px solid var(--line)}}
@media(max-width:780px){.scan-review-head{flex-direction:column}.scan-review-statuses{justify-content:flex-start}.scan-review-layout{grid-template-columns:1fr}.scan-image-link img{max-height:none}.scan-preview-card-head{align-items:flex-start}.scan-quality-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.scan-quality-grid>div{border-top:1px solid var(--line)}.scan-quality-grid>div:nth-child(odd){border-left:0}.scan-quality-grid>div:nth-child(-n+2){border-top:0}}
@media(max-width:480px){.scan-preview-card-head{flex-direction:column;align-items:stretch}.scan-preview-card-head .small-button{width:100%;text-align:center}.scan-quality-grid{grid-template-columns:1fr}.scan-quality-grid>div{border-left:0!important;border-top:1px solid var(--line)!important}.scan-quality-grid>div:first-child{border-top:0!important}}

/* Maintenance Lab - isolated benchmark and feature verification */
.maintenance-ribbon{position:fixed;z-index:1200;top:0;left:0;right:0;min-height:34px;padding:7px 18px;display:flex;align-items:center;justify-content:center;gap:12px;background:linear-gradient(90deg,#8f2d0b,#d26016);color:#fff;box-shadow:0 3px 14px rgba(83,31,8,.25);font-size:9px;letter-spacing:.02em}.maintenance-ribbon strong{font-size:10px;letter-spacing:.12em}.maintenance-environment{padding-top:34px}.maintenance-environment .shell{min-height:calc(100vh - 34px)}.maintenance-environment .sidebar{top:34px;height:calc(100vh - 34px)}.maintenance-environment .topbar{top:34px}.maintenance-environment .brand-mark{background:linear-gradient(145deg,#d26016,#8f2d0b)}.maintenance-nav{border:1px solid color-mix(in srgb,#d26016 28%,var(--line));background:color-mix(in srgb,#d26016 8%,var(--surface))!important}.maintenance-nav b{margin-left:auto;padding:3px 6px;border-radius:999px;background:#d26016;color:#fff;font-size:6px;letter-spacing:.06em}.maintenance-hero{margin-bottom:18px;padding:22px;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:20px;border:1px solid #edc49f;border-radius:18px;background:linear-gradient(135deg,#fff8f0,#fff);box-shadow:var(--shadow)}[data-theme=dark] .maintenance-hero{background:linear-gradient(135deg,#33231b,var(--surface));border-color:#66452e}.maintenance-hero h2{margin:5px 0 8px;font-size:24px;letter-spacing:-.04em}.maintenance-hero p{max-width:720px;margin:0;color:var(--muted);line-height:1.65}.maintenance-seal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.maintenance-seal>div{min-width:0;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.maintenance-seal span,.maintenance-seal strong{display:block}.maintenance-seal span{color:var(--muted);font-size:7px;font-weight:850;text-transform:uppercase}.maintenance-seal strong{margin-top:5px;overflow:hidden;text-overflow:ellipsis;font-size:9px;white-space:nowrap}.maintenance-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:18px;align-items:start}.maintenance-form{padding:20px}.maintenance-section+.maintenance-section{margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}.maintenance-section-head{margin-bottom:12px}.maintenance-section-head strong,.maintenance-section-head small{display:block}.maintenance-section-head strong{font-size:12px}.maintenance-section-head small{margin-top:4px;color:var(--muted);font-size:8px;line-height:1.5}.maintenance-check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.maintenance-check{position:relative;padding:13px 13px 13px 42px;display:block;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);cursor:pointer;transition:.15s ease}.maintenance-check:hover{border-color:#d26016;transform:translateY(-1px)}.maintenance-check input{position:absolute;left:14px;top:16px;width:16px;height:16px;accent-color:#c45210}.maintenance-check strong,.maintenance-check small{display:block}.maintenance-check strong{font-size:9px}.maintenance-check small{margin-top:4px;color:var(--muted);font-size:7px;line-height:1.45}.maintenance-check:has(input:checked){border-color:#dd9458;background:color-mix(in srgb,#f07b20 8%,var(--surface))}.maintenance-profile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.maintenance-profile{padding:14px;display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);cursor:pointer}.maintenance-profile input{accent-color:#c45210}.maintenance-profile strong,.maintenance-profile small{display:block}.maintenance-profile strong{font-size:15px}.maintenance-profile small{margin-top:2px;color:var(--muted);font-size:7px}.maintenance-options{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(150px,.5fr);gap:12px}.maintenance-mode-list{display:grid;gap:8px}.maintenance-mode-list label{padding:11px;display:grid;grid-template-columns:auto 1fr;column-gap:9px;border:1px solid var(--line);border-radius:11px;background:var(--surface-2);cursor:pointer}.maintenance-mode-list input{grid-row:1/3;margin-top:3px;accent-color:#c45210}.maintenance-mode-list strong{font-size:9px}.maintenance-mode-list small{margin-top:3px;color:var(--muted);font-size:7px;line-height:1.4}.maintenance-worker-select{display:grid;align-content:start;gap:6px}.maintenance-worker-select span{font-size:8px;font-weight:850}.maintenance-submit{margin-top:20px;padding:14px 17px;display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid #efc49e;border-radius:13px;background:#fff8f0}.maintenance-submit p{margin:0;color:#8f4a16;font-size:8px;line-height:1.5}.maintenance-submit .button{white-space:nowrap;background:#b9470a}.maintenance-history{overflow:hidden}.maintenance-history-list{display:grid}.maintenance-run-row{padding:13px 15px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;border-top:1px solid var(--line);color:inherit;text-decoration:none}.maintenance-run-row:first-child{border-top:0}.maintenance-run-row:hover{background:var(--surface-2)}.maintenance-run-row strong,.maintenance-run-row small{display:block}.maintenance-run-row strong{font-size:9px}.maintenance-run-row small{margin-top:4px;color:var(--muted);font-size:7px}.maintenance-status{height:max-content;padding:5px 8px;border-radius:999px;background:var(--surface-3);font-size:7px;font-weight:900}.maintenance-status.PASSED{color:var(--green);background:var(--green-soft)}.maintenance-status.WARNING,.maintenance-status.RUNNING,.maintenance-status.QUEUED,.maintenance-status.CANCEL_REQUESTED{color:var(--amber);background:var(--amber-soft)}.maintenance-status.FAILED,.maintenance-status.CANCELLED{color:var(--red);background:var(--red-soft)}.maintenance-progress-card{margin-bottom:18px;padding:17px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}.maintenance-progress-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.maintenance-progress-head strong,.maintenance-progress-head small{display:block}.maintenance-progress-head strong{font-size:12px}.maintenance-progress-head small{margin-top:4px;color:var(--muted);font-size:8px}.maintenance-progress-track{height:10px;margin-top:13px;overflow:hidden;border-radius:999px;background:var(--surface-3)}.maintenance-progress-track i{display:block;height:100%;width:var(--progress);border-radius:inherit;background:linear-gradient(90deg,#d26016,#f2a34a);transition:width .3s ease}.maintenance-progress-meta{margin-top:7px;display:flex;justify-content:space-between;color:var(--muted);font-size:7px}.maintenance-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.maintenance-report-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:18px}.maintenance-report-stat{padding:15px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.maintenance-report-stat span,.maintenance-report-stat strong,.maintenance-report-stat small{display:block}.maintenance-report-stat span{color:var(--muted);font-size:7px;font-weight:850;text-transform:uppercase}.maintenance-report-stat strong{margin-top:5px;font-size:19px}.maintenance-report-stat small{margin-top:4px;color:var(--muted);font-size:7px}.maintenance-feature-list{display:grid}.maintenance-feature-result{padding:14px 16px;display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:12px;align-items:start;border-top:1px solid var(--line)}.maintenance-feature-result:first-child{border-top:0}.maintenance-feature-result p{margin:3px 0 0;color:var(--muted);font-size:8px;line-height:1.55}.maintenance-feature-result details{font-size:8px}.maintenance-feature-result pre{max-width:100%;max-height:280px;overflow:auto;padding:10px;border-radius:9px;background:var(--surface-2);font-size:7px;white-space:pre-wrap}.maintenance-benchmark-table{min-width:1180px}.maintenance-recommendations{padding:16px 18px}.maintenance-recommendations li{margin:6px 0;color:var(--muted);font-size:9px;line-height:1.55}.maintenance-run-id{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.maintenance-empty{padding:22px;text-align:center;color:var(--muted);font-size:9px}
@media(max-width:1080px){.maintenance-hero,.maintenance-layout{grid-template-columns:1fr}.maintenance-report-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.maintenance-ribbon{justify-content:flex-start;overflow:hidden}.maintenance-ribbon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.maintenance-check-grid,.maintenance-options{grid-template-columns:1fr}.maintenance-profile-grid{grid-template-columns:1fr}.maintenance-submit{align-items:stretch;flex-direction:column}.maintenance-submit .button{width:100%}.maintenance-report-grid{grid-template-columns:1fr 1fr}.maintenance-feature-result{grid-template-columns:1fr}.maintenance-hero{padding:16px}.maintenance-seal{grid-template-columns:1fr}.maintenance-actions>*{flex:1;text-align:center}}

/* v2.9.0 · duplicate ID + quality check + single-page rescan */
.scan-quality-badge{display:inline-flex;align-items:center;width:max-content;max-width:100%;padding:5px 8px;border-radius:999px;font-size:7px;font-weight:950;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.scan-quality-badge.quality-bagus,.quality-good .scan-quality-badge{color:var(--green);background:var(--green-soft)}
.scan-quality-badge.quality-cukup{color:var(--amber);background:var(--amber-soft)}
.scan-quality-badge.quality-scan_ulang{color:var(--red);background:var(--red-soft)}
.duplicate-alert{margin:0 0 16px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid color-mix(in srgb,var(--red) 38%,var(--line));border-radius:14px;background:var(--red-soft)}
.duplicate-alert>div{display:flex;align-items:flex-start;gap:12px}.duplicate-alert-icon{display:grid;place-items:center;flex:0 0 32px;width:32px;height:32px;border-radius:9px;background:var(--red);color:white;font-size:16px;font-weight:950}.duplicate-alert strong{display:block;color:var(--red);font-size:10px}.duplicate-alert p{margin:4px 0 0;color:var(--ink);font-size:8px;line-height:1.5}
.rescan-box{margin-top:12px;padding:14px;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(290px,.75fr);gap:16px;align-items:end;border:1px solid color-mix(in srgb,var(--primary) 26%,var(--line));border-radius:12px;background:var(--surface-2)}
.rescan-box>div>strong{display:block;margin-top:4px;font-size:11px}.rescan-box>div>p{margin:5px 0 0;color:var(--muted);font-size:8px;line-height:1.5}.rescan-box form{display:grid;grid-template-columns:1fr auto;gap:9px;align-items:end}.rescan-box label{display:grid;gap:5px}.rescan-box label>span{color:var(--muted);font-size:7px;font-weight:850;text-transform:uppercase}.rescan-box input[type=file]{min-width:0;padding:8px;border:1px solid var(--line);border-radius:9px;background:var(--surface);font-size:8px}
.scan-review-center{margin-bottom:16px}.review-center-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-top:1px solid var(--line)}.review-center-grid>a{padding:14px 16px;display:block;border-left:1px solid var(--line);text-decoration:none;background:var(--surface);transition:.15s ease}.review-center-grid>a:first-child{border-left:0}.review-center-grid>a:hover{background:var(--surface-2)}.review-center-grid span,.review-center-grid strong{display:block}.review-center-grid span{color:var(--muted);font-size:7px;font-weight:850;text-transform:uppercase}.review-center-grid strong{margin-top:5px;font-size:20px}.review-center-grid a.quality-good strong{color:var(--green)}.review-center-grid a.quality-fair strong{color:var(--amber)}.review-center-grid a.quality-rescan strong,.review-center-grid a.duplicate strong{color:var(--red)}
.combined-result-table td .scan-quality-badge+small{display:block;max-width:150px;margin-top:4px;color:var(--muted);font-size:7px;white-space:normal;line-height:1.35}
@media(max-width:980px){.review-center-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.review-center-grid>a{border-top:1px solid var(--line)}.review-center-grid>a:nth-child(odd){border-left:0}.rescan-box{grid-template-columns:1fr}.rescan-box form{grid-template-columns:1fr auto}}
@media(max-width:680px){.duplicate-alert{align-items:stretch;flex-direction:column}.duplicate-alert .button{width:100%;text-align:center}.review-center-grid{grid-template-columns:1fr}.review-center-grid>a{border-left:0!important}.rescan-box form{grid-template-columns:1fr}.rescan-box form .button{width:100%}}

/* ── FITUR 5: Command Palette ─────────────────────────────────────────── */
.cmd-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:start center;padding-top:15vh;background:rgba(15,23,42,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:fadeIn .14s ease}
.cmd-overlay[hidden]{display:none}
.cmd-panel{width:min(600px,92vw);border:1px solid var(--line-strong);border-radius:18px;background:var(--surface);box-shadow:0 28px 60px rgba(0,0,0,.2);overflow:hidden;animation:slideDown .18s ease}
.cmd-search-row{display:flex;align-items:center;gap:12px;padding:18px 20px;border-bottom:1px solid var(--line)}
.cmd-icon{font-size:16px;opacity:.6}
.cmd-input{flex:1;border:none;background:transparent;outline:none;font-size:15px;font-weight:500;color:var(--ink)}
.cmd-results{max-height:360px;overflow-y:auto}
.cmd-results a{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid var(--line);text-decoration:none;transition:.13s ease}
.cmd-results a:last-child{border-bottom:none}
.cmd-results a:hover,.cmd-results a.active{background:var(--surface-2)}
.cmd-type{min-width:48px;padding:3px 7px;border-radius:6px;background:var(--primary);color:#fff;font-size:7px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;text-align:center}
.cmd-type.siswa{background:var(--accent)}.cmd-type.ujian{background:var(--purple)}.cmd-type.hasil{background:var(--green)}
.cmd-results-text strong{display:block;font-size:13px}.cmd-results-text small{color:var(--muted);font-size:10px}
.cmd-hint{padding:22px;text-align:center;color:var(--muted);font-size:12px}
.cmd-results .cmd-empty{padding:22px;text-align:center;color:var(--muted);font-size:12px}
kbd{padding:4px 7px;border:1px solid var(--line-strong);border-radius:6px;color:var(--muted);background:var(--surface-2);font-size:9px;font-family:inherit}
@keyframes slideDown{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* ── Portal Siswa ─────────────────────────────────────────────────────── */
.portal-shell{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}
.portal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 24px;border-bottom:1px solid var(--line);background:var(--surface);position:sticky;top:0;z-index:20}
.portal-brand{display:flex;align-items:center;gap:10px}.portal-brand strong{display:block;font-size:13px;font-weight:800}.portal-brand small{display:block;font-size:9px;color:var(--muted)}
.portal-user{display:flex;align-items:center;gap:10px}
.portal-main{flex:1;padding:28px 20px}

.portal-login-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}
@media(max-width:760px){.portal-login-page{grid-template-columns:1fr}.login-showcase{display:none}}

/* ── Score Pills ──────────────────────────────────────────────────────── */
.score-pill{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:800}
.score-pill.high{background:var(--green-soft);color:var(--green)}.score-pill.low{background:var(--red-soft);color:var(--red)}

/* ── Stat Cards (5 per row) ───────────────────────────────────────────── */
.stats.stats-five{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.stat-card{padding:18px;border:1px solid var(--line);border-radius:16px;background:var(--surface);display:flex;align-items:flex-start;gap:14px}
.stat-icon{flex:0 0 36px;width:36px;height:36px;display:grid;place-items:center;border-radius:10px;font-size:16px;font-weight:900}
.stat-icon.green{background:var(--green-soft);color:var(--green)}.stat-icon.red{background:var(--red-soft);color:var(--red)}.stat-icon.blue{background:var(--blue-soft);color:var(--blue)}.stat-icon.purple{background:var(--purple-soft);color:var(--purple)}.stat-icon.amber{background:var(--amber-soft);color:var(--amber)}
.stat-card small{display:block;color:var(--muted);font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.stat-card strong{display:block;margin-top:4px;font-size:24px;font-weight:900;line-height:1}.stat-card p{margin:4px 0 0;color:var(--muted);font-size:9px}
@media(max-width:960px){.stats.stats-five{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.stats.stats-five{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ── Notes / Catatan Guru ─────────────────────────────────────────────── */
.notes-list{display:grid;gap:10px;margin-bottom:16px}
.note-card{padding:14px 16px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}
.note-card p{margin:0 0 5px;font-size:12px;line-height:1.5}.note-card small{color:var(--muted);font-size:9px}
.note-form{display:grid;gap:10px}.note-form textarea{padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);resize:vertical}

/* ── Filter Card Wide ─────────────────────────────────────────────────── */
.filter-card.expanded-filter{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:12px;align-items:end;padding:20px;border:1px solid var(--line);border-radius:16px;background:var(--surface);margin-bottom:24px}
@media(max-width:840px){.filter-card.expanded-filter{grid-template-columns:1fr 1fr;}.filter-card.expanded-filter button{grid-column:1/-1}}
@media(max-width:540px){.filter-card.expanded-filter{grid-template-columns:1fr}}

/* ── Grade Distribution Row ───────────────────────────────────────────── */
.grade-dist-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.class-comparison-summary{margin-bottom:24px}

/* ── Icon Link & text-link ────────────────────────────────────────────── */
.icon-link{display:inline-block;padding:5px 10px;border-radius:8px;color:var(--primary);font-weight:700;font-size:12px;transition:.15s ease}
.icon-link:hover{background:var(--blue-soft)}
.text-link{color:var(--primary);font-size:11px;font-weight:600;text-decoration:underline}
.link-button.danger{color:var(--red)!important}

/* ── Exam list in portal ──────────────────────────────────────────────── */
.exam-list{display:grid;gap:10px}.exam-list>div{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}.exam-symbol{flex:0 0 36px;width:36px;height:36px;display:grid;place-items:center;border-radius:9px;background:var(--primary);color:#fff;font-weight:900}.exam-list strong,.exam-list small{display:block}.exam-list small{color:var(--muted);font-size:9px;margin-top:3px}.exam-list a{margin-left:auto}

/* ── Dashboard widgets & class comparison ─────────────────────────────── */
.widget-settings{position:relative;width:max-content;margin:0 0 16px auto}.widget-settings>summary{cursor:pointer;list-style:none;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--muted);font-size:10px;font-weight:700}.widget-settings>summary::-webkit-details-marker{display:none}.widget-settings[open]>summary{color:var(--primary);border-color:var(--primary)}
.widget-settings-menu{position:absolute;right:0;z-index:35;width:260px;margin-top:7px;padding:14px;display:grid;gap:10px;border:1px solid var(--line-strong);border-radius:14px;background:var(--surface);box-shadow:0 16px 38px rgba(15,23,42,.16)}.widget-settings-menu label{display:flex;align-items:center;gap:9px;font-size:10px;font-weight:650}.widget-settings-menu input{accent-color:var(--primary)}.widget-hidden{display:none!important}
.class-comparison-widget{transition:opacity .18s ease}.class-comparison-widget.is-refreshing{opacity:.62}.class-comparison-filter{display:flex;align-items:end;gap:8px}.class-comparison-filter label{min-width:150px}.class-comparison-filter label span{display:block;margin-bottom:4px;color:var(--muted);font-size:8px;font-weight:750;text-transform:uppercase}.class-comparison-filter select{min-width:150px;padding:7px 28px 7px 9px;font-size:9px}
.class-comparison-highlight{margin:2px 0 12px;padding:10px 13px;border-radius:10px;background:var(--blue-soft);color:var(--primary);font-size:10px;font-weight:750}.class-comparison-chart{display:grid;gap:8px}.class-comparison-row{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(260px,1.7fr) 90px;align-items:center;gap:16px;padding:13px 14px;border:1px solid var(--line);border-radius:12px;color:var(--ink);text-decoration:none;background:var(--surface-2);transition:.15s ease}.class-comparison-row:hover{border-color:var(--primary);transform:translateY(-1px);box-shadow:var(--shadow)}.class-comparison-name strong,.class-comparison-name small{display:block}.class-comparison-name strong{font-size:12px}.class-comparison-name small{margin-top:3px;color:var(--muted);font-size:8px}.class-comparison-metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px}.comparison-metric span{display:block;margin-bottom:5px;color:var(--muted);font-size:8px}.comparison-metric i{position:relative;display:block;height:7px;overflow:hidden;border-radius:999px;background:var(--line)}.comparison-metric i::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--metric);border-radius:inherit;background:linear-gradient(90deg,var(--primary),var(--accent))}.comparison-metric.pass i::after{background:linear-gradient(90deg,var(--green),#34d399)}.class-comparison-range{text-align:right;color:var(--muted);font-size:10px;font-weight:750}

/* ── Negative trend alerts ────────────────────────────────────────────── */
.trend-alert{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid rgba(217,119,6,.35);border-radius:14px;background:var(--amber-soft);color:var(--ink)}.trend-alert-icon{flex:0 0 38px;width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:var(--amber);color:#fff;font-size:20px;font-weight:900}.trend-alert div{flex:1}.trend-alert strong{font-size:12px}.trend-alert p{margin:3px 0 0;color:var(--muted);font-size:9px;line-height:1.5}.eyebrow.danger{color:var(--red)}.panel-intro{margin:-3px 0 14px;color:var(--muted);font-size:9px}.negative-trend-list{display:grid;gap:8px}.negative-trend-list>a{display:grid;grid-template-columns:34px minmax(150px,1fr) minmax(150px,.8fr) 52px;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:var(--surface-2);color:var(--ink);text-decoration:none}.negative-trend-list>a:hover{border-color:var(--amber)}.negative-trend-list strong,.negative-trend-list small{display:block}.negative-trend-list small{margin-top:2px;color:var(--muted);font-size:8px}.negative-trend-list .trend-sequence{text-align:right;color:var(--muted);font-size:10px}.negative-trend-list b{color:var(--red);text-align:right;font-size:12px}

/* ── Portal controls & upload administration ──────────────────────────── */
.portal-control{min-width:112px;display:grid;justify-items:start;gap:5px}.portal-control>small{color:var(--muted);font-size:8px}.portal-control details{position:relative}.portal-pin-form{position:absolute;z-index:25;top:calc(100% + 5px);left:0;width:190px;padding:12px;display:grid;gap:8px;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface);box-shadow:0 14px 30px rgba(15,23,42,.16)}.portal-pin-form label{font-size:9px}.portal-pin-form input{margin-top:4px}.upload-filter{margin-bottom:16px}.upload-actions{min-width:135px;display:flex;align-items:flex-start;flex-wrap:wrap;gap:6px}.upload-actions details{position:relative}.upload-status-form{position:absolute;right:0;z-index:25;width:240px;padding:12px;display:grid;gap:8px;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface);box-shadow:0 14px 30px rgba(15,23,42,.16)}.upload-status-form label{font-size:9px}.upload-status-form select,.upload-status-form textarea{margin-top:4px}.file-name.invalid{color:var(--red)}

@media(max-width:900px){.class-comparison-widget .panel-head{align-items:stretch;flex-direction:column}.class-comparison-filter{flex-wrap:wrap}.class-comparison-row{grid-template-columns:minmax(120px,.7fr) minmax(220px,1.5fr) 72px}}
@media(max-width:650px){.widget-settings{width:100%;margin-left:0}.widget-settings>summary{width:100%;text-align:center}.widget-settings-menu{position:relative;width:100%}.class-comparison-filter{display:grid;grid-template-columns:1fr 1fr}.class-comparison-filter label,.class-comparison-filter select{min-width:0;width:100%}.class-comparison-filter button{grid-column:1/-1}.class-comparison-row{grid-template-columns:1fr;gap:9px}.class-comparison-metrics{grid-template-columns:1fr}.class-comparison-range{text-align:left}.trend-alert{align-items:flex-start;flex-wrap:wrap}.trend-alert .small-button{margin-left:52px}.negative-trend-list>a{grid-template-columns:34px 1fr 50px}.negative-trend-list .trend-sequence{grid-column:2/-1;text-align:left}.portal-header{align-items:flex-start;padding:12px}.portal-user{flex-wrap:wrap;justify-content:flex-end}.portal-main{padding:18px 10px}}

/* v3.3 Patch 09 — server-side pagination controls */
.pagination-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 4px 2px;color:var(--muted,#64748b);font-size:.9rem}.pagination-bar>div{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:720px){.pagination-bar{align-items:flex-start;flex-direction:column}}
