/* NOVA Classroom Visits — standalone design system (cv-*). Navy and gold, Tajawal, RTL first, light/dark. */
@font-face { font-family: Tajawal; font-weight: 400; font-display: swap; src: url(fonts/tajawal-arabic-400-normal.woff2) format("woff2"); unicode-range: U+0600-06FF, U+0750-077F, U+FB50-FDFF, U+FE70-FEFF; }
@font-face { font-family: Tajawal; font-weight: 500; font-display: swap; src: url(fonts/tajawal-arabic-500-normal.woff2) format("woff2"); unicode-range: U+0600-06FF, U+0750-077F, U+FB50-FDFF, U+FE70-FEFF; }
@font-face { font-family: Tajawal; font-weight: 700; font-display: swap; src: url(fonts/tajawal-arabic-700-normal.woff2) format("woff2"); unicode-range: U+0600-06FF, U+0750-077F, U+FB50-FDFF, U+FE70-FEFF; }
@font-face { font-family: Tajawal; font-weight: 800; font-display: swap; src: url(fonts/tajawal-arabic-800-normal.woff2) format("woff2"); unicode-range: U+0600-06FF, U+0750-077F, U+FB50-FDFF, U+FE70-FEFF; }
@font-face { font-family: Tajawal; font-weight: 400; font-display: swap; src: url(fonts/tajawal-latin-400-normal.woff2) format("woff2"); }
@font-face { font-family: Tajawal; font-weight: 500; font-display: swap; src: url(fonts/tajawal-latin-500-normal.woff2) format("woff2"); }
@font-face { font-family: Tajawal; font-weight: 700; font-display: swap; src: url(fonts/tajawal-latin-700-normal.woff2) format("woff2"); }
@font-face { font-family: Tajawal; font-weight: 800; font-display: swap; src: url(fonts/tajawal-latin-800-normal.woff2) format("woff2"); }

:root {
  --cv-navy: #0d2f56; --cv-navy-2: #16406f; --cv-gold: #c79b4b; --cv-gold-soft: #f4ead6;
  --cv-bg: #f4f6f9; --cv-surface: #ffffff; --cv-surface-2: #f8f9fb; --cv-line: #e1e6ee; --cv-line-2: #cfd7e3;
  --cv-ink: #14223a; --cv-ink-2: #46546b; --cv-muted: #6a778c; --cv-focus: #2b6fd6;
  --cv-ok: #1f7a4d; --cv-ok-bg: #e5f4ec; --cv-warn: #9a6200; --cv-warn-bg: #fdf1dc; --cv-bad: #b3261e; --cv-bad-bg: #fbe7e5;
  --cv-l4: #0d2f56; --cv-l3: #3f6ea8; --cv-l2: #a8bfdc; --cv-l1: #c79b4b;
  --cv-radius: 14px; --cv-radius-s: 9px; --cv-shadow: 0 1px 2px rgba(13,47,86,.06), 0 8px 24px rgba(13,47,86,.06);
  --cv-ease: cubic-bezier(.2,.7,.2,1);
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --cv-bg: #0b1422; --cv-surface: #111d30; --cv-surface-2: #0e1829; --cv-line: #22324c; --cv-line-2: #2e4262;
    --cv-ink: #e8eef8; --cv-ink-2: #b9c6da; --cv-muted: #8d9cb4; --cv-navy: #8fb3e6; --cv-navy-2: #a9c5ee;
    --cv-gold-soft: #2b2416; --cv-ok-bg: #12291f; --cv-warn-bg: #2a2111; --cv-bad-bg: #2d1515; --cv-ok: #5fcf96; --cv-warn: #e6b55c; --cv-bad: #f08a80;
    --cv-l4: #9cc0f0; --cv-l3: #5f8fd0; --cv-l2: #33507a; --cv-l1: #c79b4b; --cv-shadow: 0 1px 2px rgba(0,0,0,.4); color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --cv-bg: #0b1422; --cv-surface: #111d30; --cv-surface-2: #0e1829; --cv-line: #22324c; --cv-line-2: #2e4262;
  --cv-ink: #e8eef8; --cv-ink-2: #b9c6da; --cv-muted: #8d9cb4; --cv-navy: #8fb3e6; --cv-navy-2: #a9c5ee;
  --cv-gold-soft: #2b2416; --cv-ok-bg: #12291f; --cv-warn-bg: #2a2111; --cv-bad-bg: #2d1515; --cv-ok: #5fcf96; --cv-warn: #e6b55c; --cv-bad: #f08a80;
  --cv-l4: #9cc0f0; --cv-l3: #5f8fd0; --cv-l2: #33507a; --cv-l1: #c79b4b; --cv-shadow: 0 1px 2px rgba(0,0,0,.4); color-scheme: dark;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--cv-bg); color: var(--cv-ink); font: 400 15px/1.65 Tajawal, "Segoe UI", system-ui, sans-serif; }
a { color: var(--cv-navy); text-decoration-thickness: 1px; text-underline-offset: 3px; }
:focus-visible { outline: 3px solid var(--cv-focus); outline-offset: 2px; border-radius: 6px; }
h1, h2, h3 { line-height: 1.3; margin: 0; color: var(--cv-ink); }
h1 { font-size: 1.55rem; font-weight: 800; } h2 { font-size: 1.15rem; font-weight: 800; } h3 { font-size: 1rem; font-weight: 700; }
.cv-muted { color: var(--cv-muted); } .cv-small { font-size: .86rem; }
.cv-num { font-variant-numeric: tabular-nums; }
bdi, .cv-code { unicode-bidi: isolate; }
.cv-code { font-family: Consolas, "SFMono-Regular", monospace; font-size: .9em; direction: ltr; display: inline-block; }
.cv-skip { position: absolute; inset-inline-start: -999px; } .cv-skip:focus { inset-inline-start: 12px; top: 12px; z-index: 100; background: var(--cv-surface); padding: 8px 12px; }

/* shell */
.cv-shell { display: grid; grid-template-columns: 260px 1fr; min-height: 100vh; }
.cv-side { background: var(--cv-navy); color: #fff; padding: 22px 16px; position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; gap: 18px; }
:root[data-theme="dark"] .cv-side { background: #0a1220; border-inline-end: 1px solid var(--cv-line); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .cv-side { background: #0a1220; border-inline-end: 1px solid var(--cv-line); } }
.cv-brand { display: flex; gap: 12px; align-items: center; }
.cv-mark { width: 42px; height: 42px; border-radius: 12px; background: linear-gradient(145deg, var(--cv-gold), #e5c788); color: #0d2f56; display: grid; place-items: center; font-weight: 800; font-size: 1.15rem; flex: none; }
.cv-brand b { display: block; font-size: 1rem; } .cv-brand span { font-size: .78rem; opacity: .75; }
.cv-nav { display: flex; flex-direction: column; gap: 2px; }
.cv-nav a { color: #dfe8f5; text-decoration: none; padding: 10px 12px; border-radius: 10px; display: flex; gap: 10px; align-items: center; font-weight: 500; transition: background .2s var(--cv-ease); }
.cv-nav a:hover { background: rgba(255,255,255,.08); }
.cv-nav a[aria-current="page"] { background: rgba(199,155,75,.18); color: #fff; box-shadow: inset 3px 0 0 var(--cv-gold); }
[dir="rtl"] .cv-nav a[aria-current="page"] { box-shadow: inset -3px 0 0 var(--cv-gold); }
.cv-nav small { margin-inline-start: auto; background: var(--cv-gold); color: #0d2f56; border-radius: 99px; padding: 0 8px; font-weight: 800; font-size: .75rem; }
.cv-nav-group { font-size: .72rem; letter-spacing: .04em; color: #9fb2cd; margin: 12px 12px 4px; }
.cv-side-foot { margin-top: auto; font-size: .82rem; color: #c3d0e3; display: grid; gap: 8px; }
.cv-side-foot form { display: inline; }
.cv-linkbtn { background: none; border: 0; color: inherit; font: inherit; text-decoration: underline; cursor: pointer; padding: 0; }
.cv-main { min-width: 0; padding: 22px clamp(14px, 3vw, 36px) 90px; }
.cv-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; flex-wrap: wrap; }
.cv-top-actions { display: flex; gap: 8px; align-items: center; }
.cv-iconbtn { width: 38px; height: 38px; border-radius: 10px; border: 1px solid var(--cv-line); background: var(--cv-surface); color: var(--cv-ink); display: grid; place-items: center; cursor: pointer; text-decoration: none; font-weight: 700; }
.cv-experimental { background: var(--cv-gold-soft); color: #7a5615; border: 1px solid #e7cf9f; padding: 4px 10px; border-radius: 99px; font-size: .8rem; font-weight: 700; }
:root[data-theme="dark"] .cv-experimental { color: #e8c98c; border-color: #4a3b1d; }
.cv-bottomnav { display: none; }

/* surfaces */
.cv-card { background: var(--cv-surface); border: 1px solid var(--cv-line); border-radius: var(--cv-radius); box-shadow: var(--cv-shadow); padding: 18px; }
.cv-card + .cv-card { margin-top: 16px; }
.cv-card-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.cv-grid { display: grid; gap: 16px; }
.cv-grid-2 { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }
.cv-grid-3 { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.cv-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin-bottom: 16px; }
.cv-kpi { background: var(--cv-surface); border: 1px solid var(--cv-line); border-radius: var(--cv-radius); padding: 14px 16px; }
.cv-kpi span { color: var(--cv-muted); font-size: .84rem; display: block; }
.cv-kpi b { font-size: 1.7rem; font-weight: 800; display: block; line-height: 1.2; font-variant-numeric: tabular-nums; }
.cv-kpi em { font-style: normal; font-size: .8rem; color: var(--cv-ink-2); }
.cv-empty { text-align: center; padding: 26px 10px; color: var(--cv-muted); }
.cv-empty b { display: block; color: var(--cv-ink-2); margin-bottom: 4px; }

/* buttons and forms */
.cv-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 42px; padding: 0 16px; border-radius: 11px; border: 1px solid var(--cv-line-2); background: var(--cv-surface); color: var(--cv-ink); font: 700 .95rem Tajawal, sans-serif; cursor: pointer; text-decoration: none; transition: transform .15s var(--cv-ease), background .2s; }
.cv-btn:hover { background: var(--cv-surface-2); } .cv-btn:active { transform: translateY(1px); }
.cv-btn-primary { background: var(--cv-navy); border-color: var(--cv-navy); color: #fff; }
:root[data-theme="dark"] .cv-btn-primary { color: #0b1422; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .cv-btn-primary { color: #0b1422; } }
.cv-btn-primary:hover { background: var(--cv-navy-2); }
.cv-btn-gold { background: var(--cv-gold); border-color: var(--cv-gold); color: #1b1404; }
.cv-btn-danger { color: var(--cv-bad); border-color: color-mix(in srgb, var(--cv-bad) 40%, transparent); }
.cv-btn-sm { min-height: 34px; padding: 0 12px; font-size: .86rem; border-radius: 9px; }
.cv-btn[disabled] { opacity: .55; cursor: not-allowed; }
.cv-field { display: grid; gap: 6px; margin-bottom: 14px; }
.cv-field > span, .cv-label { font-weight: 700; font-size: .9rem; color: var(--cv-ink-2); }
.cv-req::after { content: " *"; color: var(--cv-bad); }
.cv-input, select.cv-input, textarea.cv-input { width: 100%; min-height: 44px; border: 1px solid var(--cv-line-2); border-radius: 10px; background: var(--cv-surface); color: var(--cv-ink); padding: 9px 12px; font: 500 .96rem Tajawal, sans-serif; }
textarea.cv-input { min-height: 88px; resize: vertical; line-height: 1.7; }
.cv-input:focus { border-color: var(--cv-focus); outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--cv-focus) 25%, transparent); }
.cv-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: end; }
.cv-row > .cv-field { flex: 1 1 180px; }
.cv-check { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--cv-line); border-radius: 10px; cursor: pointer; background: var(--cv-surface); transition: border-color .2s, background .2s; }
.cv-check input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--cv-navy); flex: none; }
.cv-check:has(input:checked) { border-color: var(--cv-navy); background: color-mix(in srgb, var(--cv-navy) 7%, var(--cv-surface)); }
.cv-checks { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; }
.cv-flash { padding: 10px 14px; border-radius: 10px; margin-bottom: 10px; font-weight: 500; }
.cv-flash-ok { background: var(--cv-ok-bg); color: var(--cv-ok); } .cv-flash-error { background: var(--cv-bad-bg); color: var(--cv-bad); }
.cv-flash-problem { background: var(--cv-warn-bg); color: var(--cv-warn); font-size: .9rem; }
.cv-note { background: var(--cv-surface-2); border: 1px dashed var(--cv-line-2); border-radius: 10px; padding: 10px 12px; font-size: .88rem; color: var(--cv-ink-2); }
.cv-alert { border-radius: 12px; padding: 12px 14px; border: 1px solid; }
.cv-alert-warn { background: var(--cv-warn-bg); border-color: color-mix(in srgb, var(--cv-warn) 35%, transparent); color: var(--cv-ink); }
.cv-alert-bad { background: var(--cv-bad-bg); border-color: color-mix(in srgb, var(--cv-bad) 35%, transparent); }

/* tables (cards on phones) */
.cv-table-wrap { overflow-x: auto; }
.cv-table { width: 100%; border-collapse: collapse; font-size: .92rem; }
.cv-table th { text-align: start; font-size: .8rem; color: var(--cv-muted); font-weight: 700; padding: 8px 10px; border-bottom: 1px solid var(--cv-line-2); white-space: nowrap; }
.cv-table td { padding: 10px; border-bottom: 1px solid var(--cv-line); vertical-align: top; }
.cv-table tr:hover td { background: var(--cv-surface-2); }
.cv-table .num { text-align: center; font-variant-numeric: tabular-nums; }
.cv-pill { display: inline-flex; align-items: center; gap: 6px; padding: 2px 10px; border-radius: 99px; font-size: .8rem; font-weight: 700; background: var(--cv-surface-2); border: 1px solid var(--cv-line); white-space: nowrap; }
.cv-pill::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.cv-st-planned { color: #6a5acd; } .cv-st-draft { color: var(--cv-muted); } .cv-st-submitted { color: var(--cv-warn); }
.cv-st-returned { color: var(--cv-bad); } .cv-st-approved { color: var(--cv-ok); } .cv-st-cancelled { color: #8b8b8b; } .cv-st-archived { color: #5c6b80; }
.cv-lv { display: inline-block; padding: 1px 9px; border-radius: 7px; font-weight: 700; font-size: .82rem; }
.cv-lv-exceeds_greatly { background: var(--cv-l4); color: #fff; } .cv-lv-exceeds { background: var(--cv-l3); color: #fff; }
.cv-lv-meets_fully { background: var(--cv-l2); color: #0d2f56; } .cv-lv-meets_partially { background: var(--cv-l1); color: #1b1404; }

/* charts */
.cv-stack { display: flex; height: 26px; border-radius: 7px; overflow: hidden; background: var(--cv-surface-2); border: 1px solid var(--cv-line); }
.cv-stack i { display: block; height: 100%; transition: flex-basis .5s var(--cv-ease); }
.cv-stack i.l4 { background: var(--cv-l4); } .cv-stack i.l3 { background: var(--cv-l3); } .cv-stack i.l2 { background: var(--cv-l2); } .cv-stack i.l1 { background: var(--cv-l1); }
.cv-stack-row { display: grid; grid-template-columns: minmax(130px, 220px) 1fr 70px; gap: 12px; align-items: center; padding: 6px 0; }
.cv-stack-row .lbl { font-weight: 600; font-size: .9rem; }
.cv-stack-row .n { font-size: .8rem; color: var(--cv-muted); text-align: end; font-variant-numeric: tabular-nums; }
.cv-legend { display: flex; flex-wrap: wrap; gap: 14px; font-size: .82rem; color: var(--cv-ink-2); margin: 6px 0 10px; }
.cv-legend span { display: inline-flex; gap: 6px; align-items: center; }
.cv-legend i { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.cv-bar { display: grid; grid-template-columns: minmax(150px, 280px) 1fr 110px; gap: 12px; align-items: center; padding: 5px 0; }
.cv-bar .track { height: 14px; background: var(--cv-surface-2); border-radius: 99px; border: 1px solid var(--cv-line); overflow: hidden; }
.cv-bar .fill { height: 100%; background: linear-gradient(90deg, var(--cv-navy), var(--cv-navy-2)); border-radius: 99px; }
.cv-bar .val { font-variant-numeric: tabular-nums; font-size: .86rem; text-align: end; }
.cv-heat td.h { text-align: center; font-weight: 700; font-size: .84rem; min-width: 64px; }
.cv-heat td.h a { color: inherit; text-decoration: none; display: block; }
.cv-na { color: var(--cv-muted); font-weight: 500; font-size: .8rem; }

/* filters */
.cv-filters { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; align-items: end; }
.cv-applied { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 0; }
.cv-applied span { background: var(--cv-surface-2); border: 1px solid var(--cv-line); border-radius: 99px; padding: 2px 10px; font-size: .8rem; }
.cv-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 14px; }
.cv-tabs a { padding: 7px 13px; border-radius: 99px; border: 1px solid var(--cv-line); text-decoration: none; color: var(--cv-ink-2); font-weight: 600; font-size: .88rem; background: var(--cv-surface); }
.cv-tabs a[aria-current="page"] { background: var(--cv-navy); color: #fff; border-color: var(--cv-navy); }
:root[data-theme="dark"] .cv-tabs a[aria-current="page"] { color: #0b1422; }

/* wizard */
.cv-wizard { display: grid; grid-template-columns: 240px 1fr; gap: 18px; align-items: start; }
.cv-steps { position: sticky; top: 16px; display: grid; gap: 4px; }
.cv-steps button { text-align: start; border: 1px solid transparent; background: none; padding: 10px 12px; border-radius: 10px; font: 600 .92rem Tajawal, sans-serif; color: var(--cv-ink-2); cursor: pointer; display: flex; gap: 10px; align-items: center; }
.cv-steps button b { width: 26px; height: 26px; border-radius: 50%; background: var(--cv-surface-2); border: 1px solid var(--cv-line-2); display: grid; place-items: center; font-size: .8rem; flex: none; }
.cv-steps button[aria-current="step"] { background: var(--cv-surface); border-color: var(--cv-line); color: var(--cv-ink); box-shadow: var(--cv-shadow); }
.cv-steps button[aria-current="step"] b { background: var(--cv-navy); color: #fff; border-color: var(--cv-navy); }
.cv-steps button.done b { background: var(--cv-ok-bg); color: var(--cv-ok); border-color: transparent; }
.cv-step { display: none; animation: cv-in .35s var(--cv-ease); } .cv-step.on { display: block; }
@keyframes cv-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.cv-progress { height: 6px; background: var(--cv-surface-2); border-radius: 99px; overflow: hidden; margin: 6px 0 16px; border: 1px solid var(--cv-line); }
.cv-progress i { display: block; height: 100%; background: var(--cv-gold); width: 0; transition: width .4s var(--cv-ease); }
.cv-domain { margin-top: 18px; } .cv-domain > h3 { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; }
.cv-domain > h3 small { font-weight: 500; color: var(--cv-muted); }
.cv-indicator { border: 1px solid var(--cv-line); border-radius: 12px; padding: 12px; margin-bottom: 10px; background: var(--cv-surface); }
.cv-indicator.rated { border-color: color-mix(in srgb, var(--cv-navy) 40%, var(--cv-line)); }
.cv-indicator p { margin: 0 0 10px; font-weight: 600; }
.cv-indicator p b { color: var(--cv-gold); margin-inline-end: 6px; }
.cv-scale { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.cv-scale label { position: relative; }
.cv-scale input { position: absolute; opacity: 0; inset: 0; }
.cv-scale span { display: grid; place-items: center; text-align: center; min-height: 52px; padding: 6px; border-radius: 10px; border: 1px solid var(--cv-line-2); font-size: .84rem; font-weight: 700; cursor: pointer; line-height: 1.3; background: var(--cv-surface); transition: all .15s var(--cv-ease); }
.cv-scale span small { display: block; font-weight: 500; color: var(--cv-muted); font-size: .74rem; }
.cv-scale input:focus-visible + span { outline: 3px solid var(--cv-focus); outline-offset: 2px; }
.cv-scale input:checked + span.l4 { background: var(--cv-l4); color: #fff; border-color: var(--cv-l4); }
.cv-scale input:checked + span.l3 { background: var(--cv-l3); color: #fff; border-color: var(--cv-l3); }
.cv-scale input:checked + span.l2 { background: var(--cv-l2); color: #0d2f56; border-color: var(--cv-l2); }
.cv-scale input:checked + span.l1 { background: var(--cv-l1); color: #1b1404; border-color: var(--cv-l1); }
.cv-scale input:checked + span small { color: inherit; opacity: .8; }
.cv-evidence summary { cursor: pointer; font-size: .84rem; color: var(--cv-navy); margin-top: 8px; }
.cv-savebar { position: sticky; bottom: 0; z-index: 20; margin-top: 18px; background: color-mix(in srgb, var(--cv-surface) 92%, transparent); backdrop-filter: blur(8px); border: 1px solid var(--cv-line); border-radius: 14px; padding: 10px 12px; display: flex; gap: 10px; align-items: center; justify-content: space-between; box-shadow: var(--cv-shadow); }
.cv-savestate { font-size: .86rem; font-weight: 700; display: flex; align-items: center; gap: 8px; }
.cv-savestate::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: var(--cv-muted); }
.cv-savestate[data-state="saved"] { color: var(--cv-ok); } .cv-savestate[data-state="saved"]::before { background: var(--cv-ok); }
.cv-savestate[data-state="saving"]::before { background: var(--cv-warn); animation: cv-pulse 1s infinite; }
.cv-savestate[data-state="error"] { color: var(--cv-bad); } .cv-savestate[data-state="error"]::before { background: var(--cv-bad); }
@keyframes cv-pulse { 50% { opacity: .3; } }
.cv-judgment { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; }
.cv-judgment label { position: relative; }
.cv-judgment input { position: absolute; opacity: 0; }
.cv-judgment span { display: block; border: 2px solid var(--cv-line-2); border-radius: 14px; padding: 16px; cursor: pointer; text-align: center; font-weight: 800; background: var(--cv-surface); }
.cv-judgment span small { display: block; font-weight: 500; color: var(--cv-muted); margin-top: 4px; }
.cv-judgment input:checked + span { border-color: var(--cv-navy); background: color-mix(in srgb, var(--cv-navy) 9%, var(--cv-surface)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--cv-navy) 15%, transparent); }
.cv-judgment input:focus-visible + span { outline: 3px solid var(--cv-focus); outline-offset: 2px; }
.cv-slot { display: grid; grid-template-columns: 34px 1fr; gap: 10px; align-items: start; margin-bottom: 10px; }
.cv-slot > b { width: 30px; height: 30px; border-radius: 9px; background: var(--cv-surface-2); border: 1px solid var(--cv-line-2); display: grid; place-items: center; margin-top: 7px; }
.cv-missing li { margin-bottom: 3px; }

/* detail */
.cv-meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px 18px; }
.cv-meta div span { display: block; font-size: .78rem; color: var(--cv-muted); }
.cv-meta div b { font-weight: 700; }
.cv-timeline { list-style: none; padding: 0; margin: 0; border-inline-start: 2px solid var(--cv-line); }
.cv-timeline li { position: relative; padding: 0 16px 12px; font-size: .9rem; }
.cv-timeline li::before { content: ""; position: absolute; inset-inline-start: -6px; top: 7px; width: 10px; height: 10px; border-radius: 50%; background: var(--cv-gold); }
.cv-sig { border: 1px dashed var(--cv-line-2); border-radius: 12px; height: 160px; background: var(--cv-surface-2); touch-action: none; width: 100%; display: block; }
dialog.cv-sheet { border: 0; border-radius: 18px; padding: 0; max-width: 560px; width: calc(100% - 24px); background: var(--cv-surface); color: var(--cv-ink); box-shadow: 0 30px 80px rgba(0,0,0,.3); }
dialog.cv-sheet::backdrop { background: rgba(6,16,30,.5); backdrop-filter: blur(2px); }
.cv-sheet-body { padding: 20px; }

/* login */
.cv-auth { min-height: 100vh; display: grid; grid-template-columns: 1.1fr 1fr; }
.cv-auth-art { background: radial-gradient(1200px 500px at 80% -10%, #1d4f86 0, transparent 60%), var(--cv-navy); color: #fff; padding: 48px; display: flex; flex-direction: column; justify-content: space-between; }
:root[data-theme="dark"] .cv-auth-art { background: #0a1220; }
.cv-auth-art h1 { color: #fff; font-size: 2rem; max-width: 18ch; }
.cv-auth-art p { color: #c9d6e8; max-width: 46ch; }
.cv-auth-art ul { padding: 0; list-style: none; display: grid; gap: 10px; color: #dfe8f5; }
.cv-auth-art li::before { content: "◆"; color: var(--cv-gold); margin-inline-end: 10px; font-size: .7rem; }
.cv-auth-form { display: grid; place-items: center; padding: 28px 18px; }
.cv-auth-form .cv-card { width: min(420px, 100%); padding: 26px; }

@media (max-width: 980px) {
  .cv-shell { grid-template-columns: 1fr; }
  .cv-side { display: none; }
  .cv-bottomnav { display: grid; grid-template-columns: repeat(5, 1fr); position: fixed; bottom: 0; inset-inline: 0; z-index: 30; background: var(--cv-surface); border-top: 1px solid var(--cv-line); padding: 6px 4px calc(6px + env(safe-area-inset-bottom)); }
  .cv-bottomnav a { text-align: center; text-decoration: none; color: var(--cv-ink-2); font-size: .72rem; font-weight: 700; padding: 6px 2px; border-radius: 10px; display: grid; gap: 2px; justify-items: center; }
  .cv-bottomnav a span { font-size: 1.15rem; line-height: 1; }
  .cv-bottomnav a[aria-current="page"] { color: var(--cv-navy); background: color-mix(in srgb, var(--cv-navy) 8%, transparent); }
  .cv-wizard { grid-template-columns: 1fr; }
  .cv-steps { position: static; display: flex; overflow-x: auto; gap: 6px; padding-bottom: 4px; scrollbar-width: none; }
  .cv-steps button { flex: none; padding: 8px 10px; font-size: .84rem; }
  .cv-savebar { bottom: calc(64px + env(safe-area-inset-bottom)); }
  .cv-auth { grid-template-columns: 1fr; } .cv-auth-art { display: none; }
  .cv-stack-row, .cv-bar { grid-template-columns: 1fr 64px; } .cv-stack-row .lbl, .cv-bar .lbl { grid-column: 1 / -1; }
  /* wide tables become cards */
  .cv-table.cv-cards thead { display: none; }
  .cv-table.cv-cards tr { display: block; border: 1px solid var(--cv-line); border-radius: 12px; margin-bottom: 10px; padding: 8px 10px; background: var(--cv-surface); }
  .cv-table.cv-cards td { display: flex; justify-content: space-between; gap: 12px; border: 0; padding: 5px 0; }
  .cv-table.cv-cards td::before { content: attr(data-h); color: var(--cv-muted); font-size: .8rem; font-weight: 700; }
  .cv-table.cv-cards td.num { text-align: end; }
}
@media (max-width: 560px) {
  .cv-scale { grid-template-columns: 1fr 1fr; }
  .cv-scale span { min-height: 56px; font-size: .9rem; }
  h1 { font-size: 1.3rem; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }

/* evidence-linked findings */
.cv-insights { margin-bottom: 16px; }
.cv-insight { padding: 10px 12px; border-radius: 10px; border: 1px solid var(--cv-line); background: var(--cv-surface-2); margin-top: 8px; font-size: .92rem; line-height: 1.8; }
.cv-insight small { display: block; color: var(--cv-muted); font-size: .78rem; }
.cv-insight-indicator_support, .cv-insight-overdue_support { border-inline-start: 3px solid var(--cv-gold); }
.cv-insight-judgment_change { border-inline-start: 3px solid var(--cv-l3); }
.cv-insight-coverage_gap { border-inline-start: 3px solid var(--cv-bad); }
.cv-heat th { white-space: normal; min-width: 72px; line-height: 1.35; }
