:root{
  --bg:#f4f6f8;--panel:#ffffff;--ink:#16181d;--muted:#6b7280;--line:#e5e7eb;
  --red:#b91c1c;--red2:#991b1b;--yellow:#f2b705;--yellow-ink:#6b4f00;--green:#15803d;--orange:#ea580c;
  --nav:#111827;--nav2:#1f2937;--blue:#1d4ed8;--shadow:0 6px 22px rgba(17,24,39,.07)
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--ink);line-height:1.45}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}.top{background:linear-gradient(90deg,#0b0f16,var(--nav2));color:#fff;min-height:62px;padding:0 24px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 10px rgba(0,0,0,.18);position:sticky;top:0;z-index:30}.brand{font-weight:850;letter-spacing:.1px;display:flex;align-items:center;gap:10px}.brand-mark{width:34px;height:34px;border:2px solid #fff;border-radius:9px;display:grid;place-items:center;font-weight:900;background:var(--red)}.brand-sub{font-size:12px;color:#d1d5db;font-weight:500}.top-actions{display:flex;gap:12px;align-items:center}.shell{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:calc(100vh - 62px)}nav{background:#fff;border-right:1px solid var(--line);padding:20px 14px;position:sticky;top:62px;height:calc(100vh - 62px);overflow:auto}nav .nav-label{font-size:11px;color:#9ca3af;font-weight:800;text-transform:uppercase;letter-spacing:.08em;margin:18px 10px 6px}nav a{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:9px;margin:3px 0;color:#374151;font-weight:650;font-size:14px}nav a:hover{background:#f3f4f6;color:#111827}nav a.primary-nav{background:#fff1f2;color:#991b1b}main{padding:26px 30px 54px;max-width:1500px;width:100%;margin:0 auto}h1{font-size:30px;line-height:1.2;margin:4px 0 6px}h2{font-size:20px;margin:0}h3{font-size:16px}.muted{color:var(--muted)}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:#9ca3af}.section-title{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:28px 0 12px}.section-title:first-child{margin-top:0}.actions{display:flex;gap:9px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:#111827;color:#fff;border:0;border-radius:9px;padding:9px 13px;cursor:pointer;font-weight:750;font-size:13px}.btn:hover{filter:brightness(.96)}.btn.red{background:var(--red)}.btn.green{background:var(--green)}.btn.orange{background:var(--orange)}.btn.light{background:#fff;color:#111827;border:1px solid var(--line)}.btn.danger{background:#fff;color:#991b1b;border:1px solid #fecaca}.btn.mini{padding:6px 9px;font-size:12px;border-radius:7px}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.metric-card{border-radius:14px;padding:18px 19px;box-shadow:var(--shadow);border:1px solid transparent;min-height:118px}.metric-card .metric-label{font-size:12px;text-transform:uppercase;letter-spacing:.06em;font-weight:850}.metric-card .metric{font-size:30px;font-weight:900;margin-top:8px;line-height:1}.metric-card .metric-note{font-size:12px;margin-top:8px;opacity:.78}.metric-yellow{background:#fff7d6;border-color:#f8df72;color:var(--yellow-ink)}.metric-red{background:#fff0f0;border-color:#fecaca;color:#8b1d1d}.metric-green{background:#edf9f0;border-color:#bbf7d0;color:#166534}.metric-orange{background:#fff3e9;border-color:#fed7aa;color:#9a3412}.metric-dark{background:#111827;color:#fff}.metric-white{background:#fff;border-color:var(--line)}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 2px 12px rgba(17,24,39,.035)}.card.tight{padding:13px}.card-header{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.profile-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:var(--shadow)}.profile-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800}.badge:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.issued_completed,.completed,.paid,.active-badge{background:#dcfce7;color:#166534}.in_process,.scheduled,.partial{background:#fef3c7;color:#92400e}.needs_attention,.failed,.expired{background:#fee2e2;color:#991b1b}.on_hold,.waiting{background:#ffedd5;color:#9a3412}.neutral{background:#f3f4f6;color:#4b5563}.status-strip{display:grid;grid-template-columns:repeat(4,1fr);height:7px;border-radius:99px;overflow:hidden;margin-top:12px}.status-strip span:nth-child(1){background:var(--green)}.status-strip span:nth-child(2){background:var(--yellow)}.status-strip span:nth-child(3){background:var(--red)}.status-strip span:nth-child(4){background:var(--orange)}table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top}tr:last-child td{border-bottom:0}th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;background:#f9fafb;font-weight:850}.click-row:hover td{background:#fbfbfc}.money{text-align:right;font-variant-numeric:tabular-nums;font-weight:750}.form{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;max-width:1000px;box-shadow:0 2px 12px rgba(17,24,39,.035)}.form.wide{max-width:none}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 16px}.fields.three{grid-template-columns:repeat(3,minmax(0,1fr))}.field-full{grid-column:1/-1}label{font-size:12px;font-weight:800;display:block;margin-bottom:5px;color:#374151}input,select,textarea{width:100%;padding:10px 11px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#111827}input:focus,select:focus,textarea:focus{outline:2px solid rgba(185,28,28,.14);border-color:#b91c1c}textarea{min-height:100px;resize:vertical}.tabs-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}details{border-top:1px solid var(--line);padding:10px 0}details:first-of-type{border-top:0}summary{font-weight:800;cursor:pointer;color:#374151}details form{padding:12px 0 4px}.inline{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.inline input,.inline select{width:auto;min-width:110px}.secure-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid var(--line);padding:9px 0}.secret-value{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:20px;background:#111827;color:white;padding:15px;border-radius:8px;word-break:break-all}.restricted{border-left:4px solid #ef4444}.error{background:#fee2e2;color:#991b1b;padding:10px 12px;border-radius:8px;margin-bottom:12px;border:1px solid #fecaca}.success{background:#ecfdf5;color:#166534;padding:10px 12px;border-radius:8px;border:1px solid #bbf7d0}.kpi-line{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.kpi-line strong{font-size:20px}.case-workflow{display:flex;gap:4px;flex-wrap:wrap}.case-step{padding:7px 10px;background:#f3f4f6;border-radius:7px;font-size:12px;font-weight:700}.case-step.current{background:#fef3c7;color:#92400e}.case-step.done{background:#dcfce7;color:#166534}.list-clean{list-style:none;margin:0;padding:0}.list-clean li{padding:10px 0;border-bottom:1px solid var(--line)}.list-clean li:last-child{border-bottom:0}.two-col{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:16px}.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.notice{padding:12px 14px;border-radius:9px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;font-size:13px}.auth-page{min-height:calc(100vh - 62px);display:grid;place-items:center;padding:30px}.auth-card{width:min(440px,100%);background:#fff;border-radius:18px;box-shadow:0 20px 60px rgba(17,24,39,.14);border:1px solid #e5e7eb;overflow:hidden}.auth-accent{height:8px;background:linear-gradient(90deg,var(--green) 0 25%,var(--yellow) 25% 50%,var(--red) 50% 75%,var(--orange) 75% 100%)}.auth-inner{padding:30px}.auth-logo{width:54px;height:54px;background:var(--red);color:#fff;border-radius:13px;display:grid;place-items:center;font-size:23px;font-weight:900;margin:0 auto 14px}.auth-card h1{text-align:center}.auth-card .muted{text-align:center}.auth-card .btn{width:100%;margin-top:8px;padding:11px}.recovery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0 22px}.recovery-grid code{padding:12px;background:#f5f5f5;border:1px solid #ddd;border-radius:8px;text-align:center;font-size:16px}.empty{padding:24px;text-align:center;color:#9ca3af}.phase{font-size:11px;margin:22px 10px 0;color:#9ca3af}.anchor-nav{display:flex;gap:7px;flex-wrap:wrap;margin:14px 0}.anchor-nav a{background:#fff;border:1px solid var(--line);padding:6px 9px;border-radius:8px;font-size:12px;font-weight:700}.check{width:auto;margin-right:6px}.small{font-size:12px}.nowrap{white-space:nowrap}
@media(max-width:1050px){.grid{grid-template-columns:1fr 1fr}.two-col{grid-template-columns:1fr}.fields.three{grid-template-columns:1fr 1fr}}
@media(max-width:820px){.shell{grid-template-columns:1fr}nav{display:none}main{padding:18px}.tabs-grid,.three-col{grid-template-columns:1fr}.profile-head{display:block}.profile-head .actions{margin-top:14px}.fields,.fields.three{grid-template-columns:1fr}.top{padding:0 14px}.brand-sub{display:none}}
@media(max-width:560px){.grid{grid-template-columns:1fr}.recovery-grid{grid-template-columns:1fr}h1{font-size:25px}.metric-card{min-height:auto}.top-actions span{display:none}}

/* V4 login layout refinement */
.shell.guest-shell{display:block;min-height:calc(100vh - 62px)}
.shell.guest-shell main{max-width:none;width:100%;margin:0;padding:0;min-height:calc(100vh - 62px)}
.shell.guest-shell .auth-page{min-height:calc(100vh - 62px);display:flex;align-items:center;justify-content:center;padding:48px 24px}
.shell.guest-shell .auth-card{width:min(460px,100%);margin:0 auto;background:#fff;border-radius:20px;box-shadow:0 24px 70px rgba(17,24,39,.16);border:1px solid #e5e7eb;overflow:hidden}
.shell.guest-shell .auth-inner{padding:36px 38px 30px}
.shell.guest-shell .auth-logo{width:58px;height:58px;border-radius:15px;margin:0 auto 16px;font-size:25px;box-shadow:0 8px 20px rgba(185,28,28,.18)}
.auth-heading{text-align:center;margin-bottom:24px}
.auth-heading h1{margin:0 0 7px;font-size:32px;letter-spacing:-.02em}
.auth-heading p{margin:0;font-size:14px}
.auth-form{display:grid;gap:16px}
.auth-field label{font-size:13px;margin-bottom:7px}
.auth-field input{min-height:48px;padding:12px 14px;border-radius:10px;font-size:16px;background:#fff}
.auth-submit{width:100%;min-height:48px;margin-top:2px;font-size:15px;border-radius:10px}
.auth-security-note{display:flex;justify-content:center;align-items:flex-start;gap:8px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line);text-align:left;color:var(--muted);font-size:12px;line-height:1.45}
.auth-security-note strong{color:#4b5563}
@media(max-width:560px){
  .shell.guest-shell .auth-page{padding:24px 16px;align-items:flex-start}
  .shell.guest-shell .auth-card{width:100%;border-radius:16px;margin-top:18px}
  .shell.guest-shell .auth-inner{padding:28px 22px 24px}
  .auth-heading h1{font-size:28px}
  .auth-field input,.auth-submit{min-height:50px}
  .top{min-height:58px}
  .brand{font-size:14px}
  .brand-mark{width:32px;height:32px}
  .shell.guest-shell,.shell.guest-shell main{min-height:calc(100vh - 58px)}
}
@media(max-width:380px){
  .shell.guest-shell .auth-page{padding:18px 12px}
  .shell.guest-shell .auth-inner{padding:24px 18px 22px}
  .auth-heading h1{font-size:26px}
}

/* Legacy Excel migration administration */
.page-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px}
.alert{padding:12px 14px;border-radius:10px;border:1px solid var(--line);margin:12px 0;font-size:13px}.alert.danger{background:#fee2e2;border-color:#fecaca;color:#991b1b}.alert.warning{background:#fff7ed;border-color:#fed7aa;color:#9a3412}.alert.info{background:#eff6ff;border-color:#bfdbfe;color:#1e40af}.alert.success{background:#ecfdf5;border-color:#bbf7d0;color:#166534}
.grid.two{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:16px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0}.metric-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.metric{background:#f9fafb;border:1px solid var(--line);border-radius:10px;padding:13px}.metric span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:800}.metric strong{display:block;font-size:23px;margin-top:4px}.status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0 18px}.status-card{border-radius:11px;padding:14px;border:1px solid var(--line)}.status-card strong{display:block;font-size:24px}.status-card span{font-size:12px;font-weight:750}.status-card.green{background:#edf9f0;border-color:#bbf7d0;color:#166534}.status-card.yellow{background:#fff7d6;border-color:#f8df72;color:#6b4f00}.status-card.red{background:#fff0f0;border-color:#fecaca;color:#8b1d1d}.status-card.orange{background:#fff3e9;border-color:#fed7aa;color:#9a3412}.checkline{display:flex;gap:8px;align-items:flex-start;margin:14px 0}.checkline input{width:auto;margin-top:3px}.button-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.table-wrap{overflow-x:auto}.clean-list{margin:8px 0 16px;padding-left:20px}.clean-list li{margin:6px 0}
@media(max-width:900px){.grid.two,.metric-grid,.metric-grid.compact,.status-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.grid.two,.metric-grid,.metric-grid.compact,.status-grid{grid-template-columns:1fr}.page-head{display:block}}

/* V4 dashboard metric display fix — keep dashboard KPI values native to their cards. */
.metric-card .metric {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  color: inherit;
  box-shadow: none;
}
.metric-card.metric-dark .metric {
  color: #fff;
}

/* V4 workflow navigation + dashboard filtering */
.metric-link{display:block;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease;cursor:pointer}
.metric-link:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(17,24,39,.12)}
.metric-link:focus-visible{outline:3px solid rgba(29,78,216,.22);outline-offset:3px}
.breadcrumb-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 14px;font-size:13px;font-weight:750;color:#4b5563}
.breadcrumb-bar a{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--line);border-radius:9px;padding:7px 10px;box-shadow:0 1px 4px rgba(17,24,39,.03)}
.breadcrumb-bar a:hover{background:#f9fafb;color:#111827}
.breadcrumb-bar .back-link{color:#991b1b;border-color:#fecaca;background:#fff7f7}
.filter-chips{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.filter-chip{display:inline-flex;align-items:center;border:1px solid var(--line);background:#fff;padding:8px 11px;border-radius:999px;font-size:12px;font-weight:800;color:#4b5563}
.filter-chip:hover,.filter-chip.active{box-shadow:0 2px 8px rgba(17,24,39,.08);border-color:#9ca3af}
.filter-chip.yellow{background:#fffaf0;color:#7c5b00}.filter-chip.yellow.active{background:#fff1b8;border-color:#f2b705}
.filter-chip.red{background:#fff7f7;color:#991b1b}.filter-chip.red.active{background:#fee2e2;border-color:#ef4444}
.filter-chip.orange{background:#fff8f2;color:#9a3412}.filter-chip.orange.active{background:#ffedd5;border-color:#fb923c}
.filter-chip.green{background:#f3fbf5;color:#166534}.filter-chip.green.active{background:#dcfce7;border-color:#22c55e}
.active-filter-note{margin:10px 0 12px;padding:10px 12px;background:#fff;border:1px solid var(--line);border-radius:9px;color:#4b5563;font-size:13px}
.active-filter-note a{color:#991b1b;font-weight:800}
@media(max-width:560px){.breadcrumb-bar{gap:6px}.breadcrumb-bar a{padding:7px 9px}.filter-chips{gap:6px}.filter-chip{padding:7px 9px}.form.compact .inline input[name="q"]{min-width:100%!important;width:100%}}

/* 2026-08-24 exam workflow batch */
.exam-history-item{border-bottom:1px solid #e5e7eb;padding:12px 0}.exam-history-item:last-of-type{border-bottom:0}.exam-history-item details{margin:8px 0 0}.exam-roster-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 10px}.check-col{width:58px}.exam-today{background:#fff7ed}.exam-today td:first-child{border-left:4px solid #dc2626}@media(max-width:760px){.exam-roster-actions{align-items:stretch}.exam-roster-actions .btn{width:100%}}

.closed,.no_action{background:#f3f4f6;color:#4b5563}
