*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#f3f1eb;--surface:#ffffff;--surface-hover:#faf9f5;--border:#e4e0d8;--border-light:#efecea;
  --text:#1c1917;--muted:#6b6660;--hint:#8a857e;
  --info-bg:#f5e6e9;--info:#6e1f2c;--info-dark:#4a1019;--info-light:#8a3040;--info-border:#d8b0b8;
  --gold:#c9a227;--gold-dark:#9c7d1c;--gold-bg:#faf3df;--gold-border:#e8d9a8;
  --success-bg:#e8e8f0;--success:#191970;
  --warn-bg:#fef8e4;--warn:#7a5d04;
  --danger-bg:#fdecea;--danger:#c62828;
  --edit-bg:#fffbf0;--edit-border:#edc040;
  --r-sm:10px;--r-md:14px;--r-lg:20px;--r-pill:999px;
  --shadow-card:0 1px 3px rgba(28,25,23,.04),0 4px 14px rgba(28,25,23,.06);
  --shadow-card-hover:0 2px 6px rgba(28,25,23,.06),0 8px 24px rgba(28,25,23,.09);
  --shadow-lg:0 8px 32px rgba(28,25,23,.12);
  --transition-fast:.12s ease;
  --transition-med:.2s ease;
}
[data-theme="dark"]{
  --bg:#1a1a1a;--surface:#242424;--surface-hover:#2e2e2e;--border:#3a3a3a;--border-light:#333;
  --text:#e4e0d8;--muted:#a09a93;--hint:#8f8a83;
  --info-bg:#3a2028;--info:#e07070;--info-dark:#c05050;--info-light:#d06060;--info-border:#6a3a44;
  --gold:#dbb840;--gold-dark:#f0d060;--gold-bg:#2a2618;--gold-border:#5a4a28;
  --success-bg:#1a1a38;--success:#b0b0f0;
  --warn-bg:#2e2818;--warn:#f0d050;
  --danger-bg:#3a2020;--danger:#ff7070;
  --edit-bg:#2a2618;--edit-border:#a08830;
  --shadow-card:0 1px 3px rgba(0,0,0,.2),0 4px 14px rgba(0,0,0,.3);
  --shadow-card-hover:0 2px 6px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.4);
  --shadow-lg:0 8px 32px rgba(0,0,0,.4);
}
[data-theme="dark"] img{filter:brightness(.9) contrast(1.05)}
[data-theme="dark"] .sb{background:#1e1e1e;border-color:#333}
[data-theme="dark"] .content-col{background:#1a1a1a}
[data-theme="dark"] table thead th{background:#2a2a2a;color:#d8d4cc}
[data-theme="dark"] .global-topbar{background:#242424;border-color:#333}
[data-theme="dark"] .card{background:#242424;border-color:#333}
[data-theme="dark"] input,[data-theme="dark"] select,[data-theme="dark"] textarea,
[data-theme="dark"] .form-group input,[data-theme="dark"] .form-group select,[data-theme="dark"] .form-group textarea{background:#2a2a2a;color:#e4e0d8;border-color:#444}
[data-theme="dark"] .badge,[data-theme="dark"] .rank-chip,[data-theme="dark"] .sn-chip{border-color:#444}
[data-theme="dark"] .tbl-footer{background:#242424;border-color:#333}
[data-theme="dark"] .co-banner{filter:brightness(.9)}
[data-theme="dark"] .notice.warn{border-color:#5a4a20}
[data-theme="dark"] .sec-lbl{color:#d8d4cc}
[data-theme="dark"] .profile-row-val{color:#e4e0d8}
[data-theme="dark"] .sb-item:hover{background:#2a2a2a}
[data-theme="dark"] .sb-item.active{background:#2e2028;color:#e07070}
[data-theme="dark"] .mc{background:#2a2a2a;border-color:#3a3a3a}
[data-theme="dark"] .mc-val{color:var(--text) !important}
[data-theme="dark"] .mc-hero{background:linear-gradient(145deg,#8a2030,#5a1520);box-shadow:0 4px 16px rgba(0,0,0,.3)}
[data-theme="dark"] .mc-proficient{background:linear-gradient(145deg,#2a2a6a,#1a1a50);color:#e0d080;box-shadow:0 4px 16px rgba(0,0,0,.3)}
[data-theme="dark"] .mc-monitoring{background:linear-gradient(145deg,#6a5a10,#8a7420);box-shadow:0 4px 16px rgba(0,0,0,.3)}
[data-theme="dark"] .bar-fill{filter:brightness(1.6) saturate(.7)}
[data-theme="dark"] .badge{color:#e4e0d8}
[data-theme="dark"] .b-2027{background:#1a3a1e;color:#80d888}
[data-theme="dark"] .b-2028{background:#1a2a40;color:#70b0e8}
[data-theme="dark"] .b-2029{background:#3a1a20;color:#e88090}
[data-theme="dark"] .b-2030{background:#3a2a18;color:#e8a050}
[data-theme="dark"] .b-m{background:#1a2a40;color:#70b0e8}
[data-theme="dark"] .b-f{background:#3a1a28;color:#e870a0}
[data-theme="dark"] .b-gray{background:#333;color:#a09a93}
[data-theme="dark"] .b-ok{background:#1a3a1e;color:#80d888}
[data-theme="dark"] .b-tb{background:#3a2a18;color:#e8a050}
[data-theme="dark"] .b-amb{background:#3a2a18;color:#e8a050}
[data-theme="dark"] .b-edit{background:#2a2618;color:#d4b340}
[data-theme="dark"] .rank-chip{background:#2a2a2a;color:#d8d4cc;border-color:#444}
[data-theme="dark"] .sn-chip{background:#2a2a2a;color:#d8d4cc;border-color:#444}
[data-theme="dark"] .hist-dot{filter:brightness(1.8)}
[data-theme="dark"] [style*="color:#191970"]{color:#a0a0f0 !important}
[data-theme="dark"] [style*="color: #191970"]{color:#a0a0f0 !important}
[data-theme="dark"] [style*="background:#191970"]{background:#3a3a80 !important}
[data-theme="dark"] [style*="background:#1919701f"]{background:#3a3a8033 !important}
[data-theme="dark"] [style*="border:1px solid #19197055"]{border-color:#6060b0 !important}
[data-theme="dark"] [style*="color:#c62828"]{color:#ff7070 !important}
[data-theme="dark"] [style*="color: #c62828"]{color:#ff7070 !important}
[data-theme="dark"] [style*="background:#c62828"]{background:#802020 !important}
[data-theme="dark"] [style*="color:#b8860b"]{color:#e0c050 !important}
[data-theme="dark"] [style*="color: #b8860b"]{color:#e0c050 !important}
[data-theme="dark"] [style*="color:#856404"]{color:#d4b340 !important}
.dark-mode-toggle{background:none;border:1px solid var(--border);color:var(--muted);cursor:pointer;padding:6px 10px;border-radius:var(--r-pill);font-size:16px;transition:all var(--transition-fast);display:flex;align-items:center}
.dark-mode-toggle:hover{color:var(--text);border-color:var(--text)}

/* ===== Custom scrollbar ===== */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#d5d0c8;border-radius:99px}
::-webkit-scrollbar-thumb:hover{background:#b8b3ab}

/* ===== Base layout ===== */
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.55;height:100vh;overflow:hidden}
.shell{display:flex;height:100vh;padding:12px;gap:12px}

/* ===== Cadet self-service mode: no sidebar, a banner on top, full-screen profile ===== */
body.cadet-mode .sb{display:none!important}
body.cadet-mode .main{max-width:none;margin:0;padding:0 6px 10px}
body.cadet-mode .prof-back{display:none}

/* PFT record-holder & dietary badges — legible in light AND dark mode. */
.trophy-badge{background:#c9a2271f;color:#8a6d13;border:1px solid #c9a22766;font-weight:600}
[data-theme="dark"] .trophy-badge{background:rgba(201,162,39,.22);color:#eccb55;border-color:rgba(201,162,39,.55)}
.diet-badge{background:#8564041a;color:#856404;border:1px solid #85640455;font-weight:600}
[data-theme="dark"] .diet-badge{background:rgba(240,180,41,.18);color:#f0c454;border-color:rgba(240,180,41,.45)}
/* Turn the top bar into a branded banner: hide search / AI / alerts / burger. */
body.cadet-mode .global-search,
body.cadet-mode .ai-search,
body.cadet-mode #notif-bell,
body.cadet-mode .sb-burger{display:none!important}
body.cadet-mode .global-topbar{background:linear-gradient(90deg,#6e1f2c,#8a2a39);border-radius:12px;padding:10px 16px;gap:12px;box-shadow:0 2px 10px rgba(110,31,44,.18)}
body.cadet-mode .global-topbar .dark-mode-toggle{color:#fff}
body.cadet-mode #cadet-banner{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
#cadet-banner{display:none}
#cadet-banner .cb-seal{width:38px;height:auto;flex-shrink:0;filter:drop-shadow(0 1px 3px rgba(0,0,0,.25))}
#cadet-banner .cb-title{font-weight:700;font-size:14px;line-height:1.25;color:#fff}
#cadet-banner .cb-sub{font-size:11px;color:rgba(255,255,255,.82)}
/* Cadet name + photo chip on the banner (white text on maroon). */
body.cadet-mode .global-profile-name{color:#fff}
body.cadet-mode .global-profile-role{color:rgba(255,255,255,.8)}
body.cadet-mode .global-profile .ti-chevron-down{color:rgba(255,255,255,.75)!important}
body.cadet-mode #topbar-avatar{background:rgba(255,255,255,.16);color:#fff;overflow:hidden}
@media(max-width:640px){ body.cadet-mode #cadet-banner .cb-sub{display:none} body.cadet-mode #cadet-banner .cb-title{font-size:12px} }

/* ===== Sidebar ===== */
.sb{
  width:280px;min-width:280px;height:calc(100vh - 24px);max-height:calc(100vh - 24px);
  background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-card);
  display:flex;flex-direction:column;overflow:hidden;flex-shrink:0;
  border:1px solid var(--border-light);
}
.sb-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 10px}
.sb-logo-wrap{flex:0 0 auto;padding:18px 16px 16px;border-bottom:1px solid var(--border-light)}
.sb-logo{display:flex;align-items:center;gap:10px;text-align:left}
.sb-logo-row{align-items:center}
.sb-seal{display:block;width:34px !important;height:34px !important;margin:0;object-fit:contain !important;flex-shrink:0}
.sb-seal-lg{width:42px !important;height:42px !important}
.sb-logo-divider{width:1px;align-self:stretch;background:var(--border);flex-shrink:0;min-height:36px}
.sb-logo-name{font-size:10px;font-weight:700;color:var(--info);line-height:1.45;letter-spacing:-.1px;text-align:left}
.sb-unit{font-size:9px;color:var(--hint);text-transform:uppercase;letter-spacing:.04em;margin-top:9px;line-height:1.5;text-align:center}
.sb-corps{font-size:16px;font-weight:800;color:var(--info);letter-spacing:-.3px;line-height:1.2}
.sb-sec{padding:18px 10px 7px;font-size:9.5px;color:var(--hint);text-transform:uppercase;letter-spacing:.1em;font-weight:700}
.sb-item{
  display:flex;align-items:center;gap:10px;padding:9px 12px;margin:2px 0;font-size:12px;
  color:var(--muted);cursor:pointer;border-radius:var(--r-sm);line-height:1.25;
  transition:all var(--transition-fast);white-space:normal;
}
/* Nested sub-item (e.g. DR Issued under Demerits) — indented under its parent. */
.sb-item.sb-subitem{padding-left:38px !important;font-size:11.5px;color:var(--hint)}
.sb-item.sb-subitem i{font-size:14px !important;width:16px !important}
.sb-item:hover{background:var(--surface-hover);color:var(--text)}
.sb-item.active{
  background:linear-gradient(135deg,var(--info) 0%,var(--info-light) 100%);
  color:#fff;font-weight:600;
  box-shadow:0 2px 10px rgba(110,31,44,.28);
}
.sb-item i{font-size:16px;width:18px;text-align:center;flex-shrink:0}
.sb-count{
  margin-left:auto;font-size:10px;background:var(--bg);
  padding:2px 8px;border-radius:var(--r-pill);color:var(--muted);font-weight:600;
}
.sb-item.active .sb-count{background:rgba(255,255,255,.2);color:#fff}

/* ===== Content column ===== */
.content-col{flex:1;display:flex;flex-direction:column;min-width:0;height:calc(100vh - 24px)}

/* ===== Global topbar ===== */
.global-topbar{
  flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;
  background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-card);
  padding:10px 18px;margin-bottom:12px;border:1px solid var(--border-light);
}
.global-search{
  flex:1;max-width:440px;display:flex;align-items:center;gap:10px;
  background:var(--bg);border:1px solid var(--border-light);
  border-radius:var(--r-pill);padding:8px 16px;color:var(--hint);font-size:13px;
  transition:border-color var(--transition-fast),box-shadow var(--transition-fast);
}
.global-search:focus-within{border-color:var(--info);box-shadow:0 0 0 3px rgba(110,31,44,.08)}
.global-search i{font-size:16px;flex-shrink:0}
.global-search input{border:none;background:transparent;outline:none;font-size:13px;color:var(--text);width:100%;font-family:inherit}
.global-search input::placeholder{color:var(--hint)}
.global-profile{display:flex;align-items:center;gap:10px;flex-shrink:0;position:relative;cursor:pointer;padding:5px 8px;border-radius:var(--r-pill);transition:background var(--transition-fast)}
.global-profile:hover{background:var(--surface-hover)}
.profile-menu{
  display:none;position:absolute;top:calc(100% + 8px);right:0;
  background:var(--surface);border-radius:var(--r-md);
  box-shadow:var(--shadow-lg);border:1px solid var(--border-light);
  min-width:190px;padding:6px;z-index:200;
}
.profile-menu.open{display:block}
.profile-menu-item{display:flex;align-items:center;gap:9px;padding:10px 12px;font-size:12px;font-weight:600;color:var(--text);border-radius:var(--r-sm);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast)}
.profile-menu-item:hover{background:var(--surface-hover)}
.profile-menu-item i{font-size:15px;color:var(--muted)}
.profile-menu-danger{color:var(--danger)}
.profile-menu-danger i{color:var(--danger)}
.profile-menu-divider{height:1px;background:var(--border-light);margin:5px 4px}
.global-profile-text{text-align:right;line-height:1.35}
.global-profile-name{font-size:12px;font-weight:700}
.global-profile-role{font-size:10px;color:var(--hint)}
.global-avatar{
  width:36px;height:36px;border-radius:50%;
  background:linear-gradient(135deg,var(--info),var(--info-light));
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:16px;flex-shrink:0;overflow:hidden;
}

/* ===== Main content area ===== */
.main{flex:1;overflow:auto;display:flex;flex-direction:column;gap:0;min-width:0;padding:2px 2px 8px}
.topbar{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;flex-shrink:0;gap:16px}
.page-title{font-size:22px;font-weight:800;letter-spacing:-.5px;color:var(--text)}
.page-sub{font-size:12px;color:var(--hint);margin-top:4px}

/* ===== Metric cards ===== */
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px}
.mc{
  background:var(--surface);border:1px solid var(--border-light);
  box-shadow:var(--shadow-card);border-radius:var(--r-md);padding:16px 18px;
  transition:box-shadow var(--transition-med),transform var(--transition-med);
}
.mc:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-1px)}
.mc-active{border-color:var(--accent,#6e1f2c);box-shadow:0 0 0 2px var(--accent,#6e1f2c) inset,var(--shadow-card-hover);background:color-mix(in srgb,var(--accent,#6e1f2c) 6%,var(--surface))}
.mc-lbl{font-size:10px;color:var(--hint);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px;font-weight:700}
.mc-val{font-size:22px;font-weight:800;letter-spacing:-.5px}
.mc-sub{font-size:10px;color:var(--muted);margin-top:3px;display:flex;align-items:center;gap:4px}
.metrics-hero{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.mc-hero-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:6px}
.mc-hero{
  background:linear-gradient(145deg,var(--info),var(--info-dark));color:#fff;
  border:none;box-shadow:0 4px 16px rgba(110,31,44,.25);
}
.mc-hero:hover{box-shadow:0 6px 20px rgba(110,31,44,.3);transform:translateY(-2px)}
.mc-proficient{
  background:#191970;color:#c9a227;
  border:none;box-shadow:0 4px 16px rgba(27,122,48,.25);
}
.mc-proficient:hover{box-shadow:0 6px 20px rgba(25,25,112,.3);transform:translateY(-2px)}
.mc-monitoring{
  background:linear-gradient(145deg,#9c7d1c,#c9a227);color:#fff;
  border:none;box-shadow:0 4px 16px rgba(156,125,28,.25);
}
.mc-monitoring:hover{box-shadow:0 6px 20px rgba(156,125,28,.3);transform:translateY(-2px)}
.mc-hero-icon{font-size:17px;color:rgba(255,255,255,.8);flex-shrink:0}
.mc-lbl-light{color:rgba(255,255,255,.75)}
.mc-val-light{color:#fff}
.mc-sub-light{color:rgba(255,255,255,.75)}
.mc-chip{font-size:16px;flex-shrink:0}
.mc-chip-gold{color:var(--gold-dark)}
.mc-chip-maroon{color:var(--info)}
.mc-chip-warn{color:var(--warn)}

/* ===== Cards ===== */
.card{
  background:var(--surface);border:1px solid var(--border-light);
  box-shadow:var(--shadow-card);border-radius:var(--r-md);padding:20px 22px;margin-bottom:14px;
  transition:box-shadow var(--transition-med);
}
.card:hover{box-shadow:var(--shadow-card-hover)}
.card-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.card-title{font-size:13.5px;font-weight:700;letter-spacing:-.1px}

/* ===== Tables ===== */
.tbl-wrap{overflow-x:auto}
/* Draggable column-resize grip on the Medals/Awards/Commendations table headers. */
.rz-handle{position:absolute;top:0;right:-1px;width:8px;height:100%;cursor:col-resize;z-index:2;user-select:none}
.rz-handle:hover{border-right:2px solid #6e1f2c}
/* At-a-glance KPI tiles on the cadet profile. */
.kpi-strip{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.kpi{flex:1 1 112px;min-width:104px;background:var(--surface);border:1px solid var(--border-light);border-radius:10px;padding:9px 12px;box-shadow:var(--shadow-card)}
.kpi-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}
.kpi-val{font-size:19px;font-weight:800;line-height:1.15;margin-top:2px}
.kpi-sub{font-size:10.5px;color:var(--muted);margin-top:1px}
table{width:100%;border-collapse:collapse;font-size:12px}
th{
  padding:10px 12px;text-align:left;font-size:10.5px;font-weight:700;
  color:var(--hint);text-transform:uppercase;letter-spacing:.06em;
  border-bottom:2px solid var(--border);white-space:nowrap;
  cursor:pointer;user-select:none;
  transition:color var(--transition-fast);
}
th:hover{color:var(--text)}
th .sort-icon{opacity:.35;font-size:10px}
th.sorted .sort-icon{opacity:1;color:var(--info)}
td{padding:10px 12px;border-bottom:1px solid var(--border-light);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:var(--surface-hover)}
tr{transition:background var(--transition-fast)}
.tbl-footer{
  padding:12px 16px;display:flex;align-items:center;justify-content:space-between;
  border-top:1px solid var(--border-light);background:var(--surface-hover);
  border-radius:0 0 var(--r-md) var(--r-md);
}

/* ===== Recap table ===== */
.recap-table{border:1px solid var(--border);table-layout:fixed;width:100%;border-collapse:separate;border-spacing:0;border-radius:10px;overflow:hidden}
.recap-table th,.recap-table td{border:1px solid var(--border-light);text-align:center !important;vertical-align:middle}
.recap-table th:first-child,.recap-table td:first-child{text-align:center !important;width:130px}
.recap-table th.recap-class-hdr,.recap-table td.recap-num{width:auto}
.recap-table th:last-child,.recap-table td:last-child{width:70px}
.recap-table th{cursor:default}
.recap-class-hdr{font-size:11px;font-weight:700;background:var(--surface-hover);border-left:2px solid var(--border);text-align:center;vertical-align:middle;transition:background var(--transition-fast)}
.recap-class-hdr:hover{background:var(--gold-bg);color:var(--gold-dark)}
.recap-num[onclick]:hover{background:var(--gold-bg);color:var(--gold-dark);font-weight:700}
.recap-class-total-val[onclick]:hover{filter:brightness(1.25)}
.recap-class-seal{width:22px;height:22px;object-fit:contain;vertical-align:-5px;margin-right:3px}
.recap-sub{font-size:9px;color:var(--hint);font-weight:700;padding:4px 8px;background:var(--surface-hover);text-transform:uppercase;text-align:center}
.recap-sub-m{color:#1a5fb4;border-left:2px solid var(--border);text-align:center}
.recap-sub-f{color:#ad1457;text-align:center}
.recap-num{font-size:11px;color:var(--muted);text-align:center;padding:8px 10px}
.recap-num-f{color:#c62828;font-weight:600;text-align:center}
.recap-num-m-first{border-left:2px solid var(--border);text-align:center}
.recap-co-seal{width:22px;height:22px;object-fit:contain;flex-shrink:0}
.recap-total-row td{font-weight:600;background:#f8f7f3;border-top:1px solid var(--border);font-size:11px;color:var(--muted);padding:8px 10px}
.recap-total-row td.recap-num-f{color:#c62828}
.recap-total-row td:first-child{font-size:9px;text-transform:uppercase;letter-spacing:.5px;color:var(--hint)}
.recap-total-row:hover td{background:#f8f7f3}
.recap-class-total-row td{font-weight:800;background:#6e1f2c !important;color:#c9a227;font-size:14px;border-top:none;letter-spacing:.3px;padding:10px 10px}
.recap-class-total-row:hover td{background:#7a2330 !important;color:#c9a227 !important}
.recap-class-total-row td:first-child{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#e8d5a3}
.recap-class-total-val{text-align:center;border-left:2px solid rgba(201,162,39,.3);color:#c9a227 !important}
.recap-class-total-row:hover .recap-class-total-val{color:#c9a227 !important}
.bmi-collapse{overflow:hidden;max-height:600px;transition:max-height .3s ease}
.bmi-collapse.collapsed{max-height:0}
.collapse-icon{display:inline-block;transition:transform .2s}
.collapse-icon.open{transform:rotate(90deg)}
.recap-layout{display:flex;gap:18px;align-items:stretch}
.recap-table-col{flex:1;min-width:0;display:flex;flex-direction:column}
.recap-bmi-col{flex:0 0 175px;border-left:1px solid var(--border);padding-left:18px;display:flex;flex-direction:column}
.recap-bmi-hdr{font-size:11px;font-weight:700;color:var(--text);margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:6px}
.recap-bmi-hdr a{font-size:9px;color:var(--info);font-weight:600;text-decoration:none;white-space:nowrap;transition:color var(--transition-fast)}
.recap-bmi-hdr a:hover{color:var(--info-dark)}
.recap-bmi-row{display:flex;align-items:center;gap:8px;flex:1;border-bottom:1px solid var(--border-light);padding:4px 0}
.recap-bmi-row:last-of-type{border-bottom:none}
.recap-bmi-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.recap-bmi-label{font-size:10px;color:var(--muted);flex:1}
.recap-bmi-val{font-size:14px;font-weight:700}
.recap-bmi-foot{font-size:9px;color:var(--hint);padding-top:8px;flex:0 0 auto}
@media(max-width:920px){
  .recap-layout{flex-direction:column}
  .recap-bmi-col{flex:none;border-left:none;border-top:1px solid var(--border);padding-left:0;padding-top:14px}
}

/* ===== Search bar ===== */
.search-bar{display:flex;gap:8px;margin-bottom:13px;flex-wrap:wrap}
.search-bar input,.search-bar select,.search-bar button{
  padding:9px 14px;font-size:12px;border:1px solid var(--border);border-radius:var(--r-pill);
  background:var(--surface);color:var(--text);outline:none;font-family:inherit;
  transition:border-color var(--transition-fast),box-shadow var(--transition-fast);
}
.search-bar input:focus,.search-bar select:focus{border-color:var(--info);box-shadow:0 0 0 3px rgba(110,31,44,.08)}
.search-bar input{flex:1;min-width:140px}
.search-bar select{cursor:pointer}
.search-bar button{
  cursor:pointer;background:var(--info-bg);color:var(--info);border-color:var(--info-border);
  font-weight:600;transition:all var(--transition-fast);
}
.search-bar button:hover{background:var(--info);color:#fff}

/* ===== Badges ===== */
.badge{display:inline-block;padding:3px 9px;border-radius:var(--r-pill);font-size:10px;font-weight:700;white-space:nowrap;letter-spacing:.01em}
.b-m{background:#dbeaf8;color:#1a5fb4}
.b-f{background:#fce4ef;color:#ad1457}
.b-2027{background:#e2f4e5;color:#2a7a30}
.b-2028{background:#deeffe;color:#1565c0}
.b-2029{background:#fce4ec;color:#b71c1c}
.b-2030{background:#fff3e0;color:#e65100}
.b-tb{background:#fef3cd;color:#7a5d04;border:1px solid #edc040}
.b-amb{background:#f1e5fd;color:#7b2cbf;border:1px solid #d4b2f5}
.b-gray{background:#eeecea;color:var(--muted)}
.b-ok{background:var(--success-bg);color:var(--success)}
.b-edit{background:var(--edit-bg);color:#7a5d04;border:1px solid var(--edit-border)}
.sn-chip{font-family:'SF Mono','Fira Code',monospace;font-size:10px;background:var(--bg);padding:3px 9px;border-radius:var(--r-pill);color:var(--muted);letter-spacing:.02em}

/* ===== Discipline inline inputs ===== */
.disc-cell-input{
  width:60px;padding:5px 7px;font-size:12px;border:1px solid transparent;border-radius:6px;
  background:transparent;color:var(--text);outline:none;font-family:inherit;
  transition:all var(--transition-fast);
}
.disc-cell-input:hover{border-color:var(--border);background:var(--surface-hover)}
.disc-cell-input:focus{border-color:var(--info);background:#fff;box-shadow:0 0 0 2px rgba(110,31,44,.1)}
select.disc-cell-input{width:auto;min-width:90px;cursor:pointer}
/* Punishment Tours sheet: center the editable number inputs (the read-only
   number cells are already centered). */
#tour-results .disc-cell-input{text-align:center;width:100%}

/* ===== Focus violations card ===== */
.focus-card{border-color:var(--edit-border);background:linear-gradient(180deg,#fffdf5,var(--surface) 70px)}
.focus-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.focus-row:last-child{margin-bottom:0}
.focus-num{
  width:22px;height:22px;border-radius:50%;
  background:linear-gradient(135deg,#f0c040,#e0b020);
  color:#5a4400;font-size:11px;font-weight:700;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.focus-input{
  flex:1;padding:8px 12px;font-size:12px;border:1px solid var(--border);border-radius:8px;
  background:#fff;color:var(--text);outline:none;
  transition:border-color var(--transition-fast),box-shadow var(--transition-fast);
}
.focus-input:focus{border-color:#edc040;box-shadow:0 0 0 3px rgba(240,192,64,.12)}
.focus-input::placeholder{color:var(--hint)}
.focus-clear-btn{width:26px;height:26px;border-radius:50%;border:none;background:transparent;color:var(--hint);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:all var(--transition-fast)}
.focus-clear-btn:hover{background:var(--danger-bg);color:var(--danger)}

/* ===== DR penalty hint ===== */
.dr-penalty-hint{font-size:11px;color:var(--info);background:var(--info-bg);border:1px solid var(--info-border);border-radius:var(--r-sm);padding:8px 12px;margin-bottom:12px}
.dr-penalty-hint i{margin-right:4px;font-size:12px}

/* ===== Academic Status ===== */
.acad-cl-tabs{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.acad-cl-btn{padding:8px 18px;border:1px solid var(--border);background:var(--surface);color:var(--muted);font-size:12px;font-weight:700;border-radius:var(--r-pill);cursor:pointer;transition:all var(--transition-fast)}
.acad-cl-btn:hover{border-color:#191970;color:#191970}
.acad-cl-btn.active{background:#191970;color:#c9a227;border-color:#191970}
.acad-subj-list{display:flex;flex-direction:column;gap:7px}
.acad-subj-row{display:flex;align-items:center;gap:9px}
.acad-subj-num{width:22px;height:22px;border-radius:50%;background:var(--surface-hover);color:var(--muted);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.acad-subj-row input{flex:1;max-width:420px;padding:7px 11px;border:1px solid var(--border);border-radius:var(--r-sm);font-size:12px;color:var(--text);background:var(--surface)}
.acad-subj-row input:focus{border-color:#191970;box-shadow:0 0 0 3px rgba(25,25,112,.10);outline:none}
.acad-grade-input{width:58px;padding:5px 4px;border:1px solid var(--border);border-radius:var(--r-sm);font-size:11px;text-align:center;color:var(--text);background:var(--surface)}
.acad-grade-input:focus{border-color:#191970;box-shadow:0 0 0 2px rgba(25,25,112,.12);outline:none}
.acad-grade-input.acad-grade-def{color:var(--danger);border-color:var(--danger);background:#fbeaea;font-weight:700}

/* ===== Rank chip ===== */
.rank-chip{font-family:'SF Mono','Fira Code',monospace;font-size:10px;background:var(--info-bg);padding:3px 9px;border-radius:var(--r-pill);color:var(--info);display:inline-block;white-space:nowrap}

/* ===== Pagination ===== */
.pager{display:flex;align-items:center;gap:3px;font-size:11px}
.pager button{
  padding:4px 9px;border:1px solid var(--border);border-radius:6px;
  background:var(--surface);cursor:pointer;font-size:11px;color:var(--text);
  transition:all var(--transition-fast);
}
.pager button:hover{background:var(--surface-hover);border-color:#c8c4bc}
.pager button.ap{background:var(--info);color:#fff;border-color:var(--info);font-weight:700;box-shadow:0 1px 4px rgba(110,31,44,.2)}

/* ===== Profile view ===== */
.prof-back{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--info);cursor:pointer;margin-bottom:14px;font-weight:600;transition:color var(--transition-fast)}
.prof-back:hover{color:var(--info-dark);text-decoration:underline}
.prof-hdr{
  display:flex;align-items:center;gap:16px;padding:18px;
  background:var(--surface);border:1px solid var(--border-light);border-radius:var(--r-md);
  margin-bottom:14px;box-shadow:var(--shadow-card);
}
.avatar{
  width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:16px;flex-shrink:0;letter-spacing:1px;overflow:hidden;
}
.avatar-wrap{position:relative;flex-shrink:0}
.avatar-upload-btn{
  position:absolute;bottom:-3px;right:-3px;width:22px;height:22px;border-radius:50%;
  background:var(--info);color:#fff;display:flex;align-items:center;justify-content:center;
  cursor:pointer;border:2px solid var(--surface);font-size:11px;
  transition:background var(--transition-fast);
}
.avatar-upload-btn:hover{background:var(--info-dark)}
.avatar-remove-btn{
  position:absolute;top:-3px;right:-3px;width:18px;height:18px;border-radius:50%;
  background:var(--danger);color:#fff;display:flex;align-items:center;justify-content:center;
  cursor:pointer;border:2px solid var(--surface);font-size:9px;padding:0;
  transition:background var(--transition-fast);
}
.avatar-remove-btn:hover{background:#a31f1f}
.prof-name{font-size:17px;font-weight:700;letter-spacing:-.2px}
.prof-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:5px;font-size:11px;color:var(--muted)}
.prof-meta span{display:flex;align-items:center;gap:3px}

/* ===== Two-column layout ===== */
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px;align-items:start}
.card .two-col{margin-bottom:0}   /* two-col nested inside a card carries no extra bottom margin */

/* ===== Section label ===== */
.sec-lbl{font-size:9.5px;color:var(--hint);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;font-weight:700}

/* ===== Detail rows ===== */
.drow{display:flex;justify-content:space-between;align-items:flex-start;padding:5px 0;border-bottom:1px solid var(--border-light);font-size:12px;gap:8px}
.drow:last-child{border-bottom:none}

/* Per-statistic dividers in a cadet profile: each stacked statistic block in a
   card (DR history, merit history, academics, PFT, admin cases) is introduced by
   a .sec-lbl with a .hist-dot — draw a rule above each so they read as distinct. */
.profile-view .card .sec-lbl:has(.hist-dot){border-top:1px solid var(--border-light);margin-top:18px;padding-top:14px}
/* Recidivist (repeat offender) badge. */
.b-recidivist{background:#fbe3e3;color:#a01818;border:1px solid #e6a3a3;display:inline-flex;align-items:center}
[data-theme="dark"] .b-recidivist{background:#3a1d1d;color:#ff9b9b;border-color:#5a2a2a}

/* Divider between the BMI block and the PFT block in the standing card. */
.standing-divider{border-top:1px solid var(--border-light);margin:7px 0}
/* Measurement-period chip + progression delta (BMI / PFT readability). */
.period-chip{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:600;color:var(--muted);background:var(--surface-hover);border:1px solid var(--border-light);border-radius:10px;padding:1px 7px;margin-left:4px;white-space:nowrap;vertical-align:middle}
.prog-chip{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;border-radius:10px;padding:1px 7px;margin-left:4px;white-space:nowrap;vertical-align:middle}
.prog-up{color:#1e7e34;background:#1e7e341a;border:1px solid #1e7e3455}
.prog-down{color:#c62828;background:#c628281a;border:1px solid #c6282855}
.prog-flat{color:var(--muted);background:var(--surface-hover);border:1px solid var(--border-light)}
.fit-timeline{margin-top:2px}
.fit-tl-row{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;padding:3px 0;border-top:1px dashed var(--border-light)}
.fit-tl-term{color:var(--muted)}
.fit-tl-val{font-weight:600}
.fit-tl-delta{font-weight:700;font-size:10px;margin-left:4px}
/* Interactive fitness-progression charts (BMI / PFT) on the cadet profile. */
.fit-charts{display:flex;flex-wrap:wrap;gap:16px}
.fit-chart-block{flex:1 1 260px;min-width:0}
.fit-chart-title{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--muted);margin-bottom:2px}
.fit-chart-wrap{overflow-x:auto}
.fit-chart{width:100%;min-width:240px;max-width:460px;height:auto;display:block}
.fit-chart circle{transition:r .12s ease;cursor:pointer}
.fit-chart g.fit-pt:hover circle{r:6}

/* Expandable statistic row (BMI / PFT dropdown in the standing card). */
.stat-dd{border-bottom:1px solid var(--border-light)}
.stat-dd>summary{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:5px 0;font-size:12px;cursor:pointer;list-style:none}
.stat-dd>summary::-webkit-details-marker{display:none}
.stat-dd>summary:hover .stat-dd-chev{color:var(--muted)}
.stat-dd-chev{font-size:12px;color:var(--hint);transition:transform .15s ease;margin-left:6px}
.stat-dd[open]>summary .stat-dd-chev{transform:rotate(180deg)}
.stat-dd-body{padding:0 0 8px}

/* Chart type toggle (bar / pie / line) on analytics cards. */
.chart-toggle{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.chart-toggle-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;font-size:12px;font-weight:600;font-family:inherit;transition:all .15s;box-shadow:var(--shadow-card)}
.chart-toggle-btn i{font-size:15px}
.chart-toggle-btn:hover{border-color:#6e1f2c;color:#6e1f2c;background:color-mix(in srgb,#6e1f2c 5%,var(--surface))}
.chart-toggle-btn.active{background:#6e1f2c;border-color:#6e1f2c;color:#fff;box-shadow:0 2px 6px rgba(110,31,44,.25)}
/* Analytics chart navigation bar */
.an-chart-nav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.an-chart-btn{display:flex;flex-direction:column;align-items:center;gap:5px;padding:12px 14px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:11px;font-weight:600;color:var(--muted);transition:border-color .15s,color .15s,background .15s,box-shadow .15s;flex:1;min-width:68px;box-shadow:var(--shadow-card)}
.an-chart-btn i{font-size:22px;color:var(--hint);transition:color .15s}
.an-chart-btn:hover{border-color:#6e1f2c;color:#6e1f2c;background:color-mix(in srgb,#6e1f2c 5%,var(--surface));box-shadow:0 2px 8px rgba(110,31,44,.12)}
.an-chart-btn:hover i{color:#6e1f2c}
/* Segmented control (analytics break-down dimension). */
.seg{display:inline-flex;border:1px solid var(--border-light);border-radius:8px;overflow:hidden}
.seg-btn{background:transparent;border:none;border-right:1px solid var(--border-light);color:var(--muted);padding:5px 12px;cursor:pointer;font-size:12px;font-weight:500}
.seg-btn:last-child{border-right:none}
.seg-btn:hover{background:var(--surface-hover)}
.seg-btn.active{background:var(--maroon,#6e1f2c);color:#fff}
.dk{color:var(--muted);flex-shrink:0;padding-top:1px}
.dv{font-weight:500;text-align:right;word-break:break-word;max-width:200px}

/* ===== Bar charts ===== */
.bar-row{display:flex;align-items:center;gap:8px;margin-bottom:7px;font-size:11px}
.bar-lbl{width:75px;text-align:right;color:var(--muted);flex-shrink:0;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-track{flex:1;height:16px;background:var(--bg);border-radius:4px;overflow:hidden}
.bar-fill{height:100%;border-radius:4px;transition:width .5s ease}
.bar-val{width:32px;font-size:10px;color:var(--muted);text-align:right;font-weight:600}

/* ===== Notices ===== */
.notice{display:flex;align-items:flex-start;gap:9px;padding:12px 15px;border-radius:var(--r-sm);font-size:12px;margin-bottom:14px;line-height:1.55}
.notice.info{background:var(--info-bg);color:var(--info);border:1px solid var(--info-border)}
.notice.warn{background:var(--warn-bg);color:var(--warn);border:1px solid #edc040}
.notice i{flex-shrink:0;margin-top:2px}

/* ===== DR history ===== */
.dr-history-list{display:flex;flex-direction:column;gap:8px;max-height:340px;overflow-y:auto;padding-right:6px}
.dr-history-item{
  background:var(--surface-hover);border:1px solid var(--border-light);border-left:3px solid var(--danger);
  border-radius:var(--r-sm);padding:11px 13px;overflow:hidden;
  transition:box-shadow var(--transition-fast);
}
.dr-history-item:hover{box-shadow:0 2px 8px rgba(0,0,0,.06)}
/* Colour coding: violations are red, merit awards are midnight blue + gold,
   so the two histories are instantly distinguishable on a cadet's profile. */
.dr-history-item.is-violation{border-left-color:var(--danger);background:#fbeaea}
.dr-history-item.is-award{border-left-color:#191970;background:#ececf4}
.merit-amt{color:#191970;font-weight:800;background:#c9a22722;padding:1px 6px;border-radius:10px;margin-right:5px}
.hist-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:0}
.hist-dot-violation{background:var(--danger)}
.hist-dot-award{background:#191970}
.dr-history-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.dr-history-offense{font-size:12px;font-weight:600;color:var(--text);line-height:1.45;word-break:break-word;overflow-wrap:anywhere}
.dr-history-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px;flex-wrap:wrap}
.dr-history-date{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:4px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dr-history-date i{font-size:11px;flex-shrink:0}

/* ===== Company banner ===== */
.co-banner{
  display:flex !important;flex-direction:row !important;align-items:center !important;
  justify-content:flex-start !important;gap:14px !important;
  padding:12px 16px;border-radius:var(--r-md);border:1px solid;
  margin-bottom:12px;box-shadow:var(--shadow-card);
  transition:box-shadow var(--transition-med);
}
.co-banner:hover{box-shadow:var(--shadow-card-hover)}
.co-banner img{width:44px;height:44px;object-fit:contain;flex-shrink:0}
.co-banner-name,.co-name{text-align:left !important;font-size:15px !important;font-weight:700 !important;margin:0 !important}
.co-banner-nick{font-size:11px;color:var(--muted);margin-top:1px}
.co-banner-seal-chip{
  width:56px;height:56px;border-radius:50%;background:#ffffff;
  display:flex !important;align-items:center;justify-content:center;flex-shrink:0;
  box-shadow:0 2px 8px rgba(0,0,0,.18);
}
.co-banner-seal-chip img{width:44px !important;height:44px !important}

/* ===== Unified company seal sizing ===== */
.seal-img,.co-seal{
  width:48px !important;height:48px !important;object-fit:contain !important;
  flex-shrink:0 !important;display:inline-block;
}

/* ===== Sidebar item layout ===== */
.sb-item{
  display:flex !important;align-items:center !important;
  justify-content:flex-start !important;padding:9px 12px !important;
  text-align:left !important;
}
.sb-seal{
  display:inline-block !important;flex-shrink:0 !important;
  width:30px !important;height:30px !important;
  background-size:contain !important;background-position:center !important;
  background-repeat:no-repeat !important;margin-right:6px !important;margin-top:-2px !important;
}
.sb-count{margin-left:auto !important}
.sb-text{flex-grow:1 !important;text-align:left !important;margin-left:0 !important}

/* ===== Edit section ===== */
.edit-section{background:var(--edit-bg);border:1px solid var(--edit-border);border-radius:var(--r-md);padding:16px;margin-bottom:14px}
.edit-section .sec-lbl{color:#7a5d04}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-grid.three{grid-template-columns:1fr 1fr 1fr}
.form-group{display:flex;flex-direction:column;gap:5px}
.form-group label{font-size:10px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.form-group input,.form-group select,.form-group textarea{
  padding:7px 10px;font-size:12px;border:1px solid var(--border);border-radius:7px;
  background:#fff;color:var(--text);outline:none;font-family:inherit;
  transition:border-color var(--transition-fast),box-shadow var(--transition-fast);
}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--edit-border);box-shadow:0 0 0 3px rgba(237,192,64,.15)}
.form-full{grid-column:1/-1}
.edit-actions{display:flex;gap:8px;margin-top:16px}

/* ===== Buttons ===== */
.btn{
  padding:9px 18px;border-radius:var(--r-pill);font-size:12px;font-weight:700;
  cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);
  transition:all var(--transition-fast);display:inline-flex;align-items:center;gap:5px;
}
.btn:hover{background:var(--surface-hover);border-color:#c8c4bc}
.btn-save{
  background:linear-gradient(135deg,var(--info),var(--info-light));
  color:#fff;border-color:var(--info);
  box-shadow:0 2px 6px rgba(110,31,44,.2);
}
.btn-save:hover{background:linear-gradient(135deg,var(--info-dark),var(--info));box-shadow:0 3px 10px rgba(110,31,44,.3)}
.btn-danger{background:var(--danger-bg);color:var(--danger);border-color:#f5b4b4}
.btn-danger:hover{background:var(--danger);color:#fff;box-shadow:0 2px 8px rgba(198,40,40,.25)}
.btn-sm{padding:7px 14px;font-size:11px}

/* ===== Stat Cards ===== */
.stat-card{background:var(--bg);border:1px solid var(--border-light);border-radius:var(--r);padding:14px;text-align:center}
.stat-value{font-size:22px;font-weight:700;color:var(--text)}
.stat-label{font-size:11px;color:var(--muted);margin-top:2px;text-transform:uppercase;letter-spacing:.04em}

/* ===== Toast ===== */
.toast{
  position:fixed;bottom:24px;right:24px;padding:12px 20px;border-radius:var(--r-md);
  font-size:12px;font-weight:600;z-index:9999;transition:opacity .3s;
  box-shadow:var(--shadow-lg);backdrop-filter:blur(4px);
}
.toast.ok{background:#191970;color:#c9a227}
.toast.err{background:#c62828;color:#fff}

/* ===== Tabs ===== */
.tab-bar{display:flex;gap:2px;margin-bottom:14px;border-bottom:2px solid var(--border-light)}
.tab{
  padding:8px 16px;font-size:12px;font-weight:500;color:var(--muted);cursor:pointer;
  border-bottom:2px solid transparent;margin-bottom:-2px;
  transition:all var(--transition-fast);
}
.tab:hover{color:var(--text)}
.tab.active{color:var(--info);border-bottom-color:var(--info);font-weight:600}
.changed-indicator{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--warn);margin-left:5px;vertical-align:middle}

/* ===== Sidebar footer ===== */
.sb-foot{flex:0 0 auto;padding:12px 12px;border-top:1px solid var(--border-light);background:var(--surface)}
.sb-save-btn{
  width:100%;display:flex;align-items:center;justify-content:center;gap:6px;
  padding:10px 12px;border-radius:var(--r-sm);border:none;
  background:#191970;color:#c9a227;font-size:12px;font-weight:700;
  cursor:pointer;box-shadow:0 2px 6px rgba(30,126,52,.25);
  transition:all var(--transition-fast);
}
.sb-save-btn:hover{background:#12125a;box-shadow:0 3px 10px rgba(25,25,112,.35)}
.sb-save-btn i{font-size:15px}
.sb-signout-btn{
  width:100%;display:flex;align-items:center;justify-content:center;gap:6px;
  padding:8px 10px;margin-top:8px;border-radius:var(--r-sm);
  border:1px solid var(--border);background:var(--surface);color:var(--muted);
  font-size:12px;font-weight:600;cursor:pointer;
  transition:all var(--transition-fast);
}
.sb-signout-btn:hover{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}
.sb-signout-btn i{font-size:14px}
.sb-foot-note{font-size:9px;color:var(--hint);text-align:center;margin-top:7px;line-height:1.3}

/* ===== Award grid ===== */
.award-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pick-row{
  display:flex;align-items:center;gap:10px;padding:9px 10px;
  border-bottom:1px solid var(--border-light);cursor:pointer;border-radius:8px;
  transition:background var(--transition-fast);
}
.pick-row:hover{background:var(--surface-hover)}
.sel-banner{
  display:flex;align-items:center;gap:12px;padding:12px 14px;
  border:1px solid var(--info-border);background:var(--info-bg);border-radius:var(--r-sm);margin-bottom:14px;
}
.hist-toggle{
  display:flex;align-items:flex-start;gap:8px;padding:10px 12px;
  border:1px dashed var(--edit-border);background:var(--edit-bg);border-radius:8px;
  font-size:12px;margin-top:4px;cursor:pointer;
  transition:background var(--transition-fast);
}
.hist-toggle:hover{background:#fff9e6}
.hist-toggle input{margin-top:2px}

/* ===== Upload zone ===== */
.upload-zone{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:18px;
  border:2px dashed var(--info-border);border-radius:var(--r-md);background:var(--info-bg);
  transition:border-color var(--transition-fast),background var(--transition-fast);
}
.upload-zone:hover{border-color:var(--info);background:#f0dde1}
.upload-zone .uz-text{flex:1;min-width:180px;font-size:12px;color:var(--info)}
.file-btn{
  display:inline-flex;align-items:center;gap:6px;padding:9px 14px;border-radius:8px;
  border:none;background:linear-gradient(135deg,var(--info),var(--info-light));
  color:#fff;font-size:12px;font-weight:600;cursor:pointer;
  box-shadow:0 2px 6px rgba(110,31,44,.2);
  transition:all var(--transition-fast);
}
.file-btn:hover{box-shadow:0 3px 10px rgba(110,31,44,.3);transform:translateY(-1px)}
.file-btn input{display:none}
.link-btn{background:none;border:none;color:var(--info);font-size:11px;cursor:pointer;text-decoration:underline;padding:0;transition:color var(--transition-fast)}
.link-btn:hover{color:var(--info-dark)}
.row-del{
  border:1px solid var(--border-light);background:none;color:var(--danger);cursor:pointer;
  padding:5px 7px;border-radius:8px;line-height:1;
  transition:all var(--transition-fast);
}
.row-del:hover{color:#fff;background:var(--danger);border-color:var(--danger);box-shadow:0 2px 6px rgba(198,40,40,.25)}
.row-del i{font-size:14px;vertical-align:middle}

/* ===== Cadet Officers ===== */
.officers-section-hdr{display:flex;align-items:center;gap:10px;margin:24px 0 12px}
.officers-section-hdr:first-child{margin-top:0}
.officers-section-title{font-size:14px;font-weight:700}
.officers-section-sub{font-size:11px;color:var(--muted);margin-top:1px}
.batt-seal-wrap{position:relative;width:48px;height:48px;flex-shrink:0}
.batt-seal-img{width:48px;height:48px;border-radius:var(--r-sm);object-fit:cover;border:1px solid var(--border);background:var(--surface-hover);display:block}
.batt-seal-placeholder{
  width:48px;height:48px;border-radius:var(--r-sm);border:2px dashed var(--border);
  background:var(--surface-hover);display:flex;align-items:center;justify-content:center;
  color:var(--hint);font-size:18px;
}
.batt-seal-upload-btn{
  position:absolute;bottom:-3px;right:-3px;width:20px;height:20px;border-radius:50%;
  background:var(--info);color:#fff;display:flex;align-items:center;justify-content:center;
  cursor:pointer;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.2);
  transition:background var(--transition-fast);
}
.batt-seal-upload-btn:hover{background:var(--info-dark)}
.batt-seal-upload-btn input{display:none}
.batt-seal-remove-btn{
  position:absolute;top:-4px;right:-4px;width:16px;height:16px;border-radius:50%;
  background:var(--danger);color:#fff;display:flex;align-items:center;justify-content:center;
  cursor:pointer;border:1.5px solid #fff;font-size:9px;
  transition:background var(--transition-fast);
}
.batt-seal-remove-btn:hover{background:#a31f1f}
.officer-card{border-radius:var(--r-md);margin-bottom:14px;overflow:hidden;box-shadow:var(--shadow-card);border:1px solid var(--border-light)}
.officer-card .card-hdr{padding:16px 20px;margin-bottom:0;background:var(--surface-hover);border-bottom:1px solid var(--border-light)}
.officer-card-body{padding:16px 20px}
.officer-section-seal{width:40px;height:40px;object-fit:contain;border-radius:6px;flex-shrink:0}
.officer-row{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--border-light)}
.officer-row:last-child{border-bottom:none}
.officer-portrait-area{position:relative;flex-shrink:0;width:40px;height:40px}
.officer-portrait{width:40px;height:40px;border-radius:50%;object-fit:cover;border:2px solid var(--border)}
.officer-portrait-empty{width:40px;height:40px;border-radius:50%;border:2px dashed var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--hint);font-size:14px;transition:all var(--transition-fast)}
.officer-portrait-empty:hover{border-color:var(--info);color:var(--info)}
.officer-portrait-remove{position:absolute;top:-4px;right:-4px;width:16px;height:16px;border-radius:50%;background:var(--danger);color:#fff;border:none;font-size:10px;line-height:16px;text-align:center;cursor:pointer;display:none}
.officer-portrait-area:hover .officer-portrait-remove{display:block}
.officer-assigned-card{display:flex;align-items:center;gap:10px;flex:1;min-width:0;padding:4px 8px;border-radius:var(--r);transition:background var(--transition-fast)}
.officer-assigned-card:hover{background:var(--surface-hover)}
.officer-assigned-info{min-width:0;flex:1}
.officer-assigned-name{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.officer-assigned-meta{display:flex;align-items:center;gap:5px;margin-top:2px}
.officer-assigned-rank{font-size:10px;color:var(--muted);font-weight:500}
.officer-vacant{display:flex;align-items:center;gap:10px;flex:1}
.officer-insignia{width:36px;height:36px;object-fit:contain;flex-shrink:0;border-radius:4px;cursor:pointer}
.officer-insignia:hover{outline:2px dashed var(--gold);outline-offset:2px;opacity:.85}
.officer-insignia-empty{display:flex;align-items:center;justify-content:center;color:var(--hint);font-size:10px;border:1px dashed var(--border)}
.officer-info{flex:0 0 220px;width:220px}
.officer-pos{font-size:12px;font-weight:700;color:var(--text)}
.officer-rank-label{font-size:10px;color:var(--muted);margin-top:2px}
.officer-assigned{display:flex;align-items:center;gap:6px;flex-shrink:0}
.pos-del{background:none;border:none;color:var(--muted);cursor:pointer;font-size:14px;font-weight:700;margin-left:4px;opacity:.4;transition:all var(--transition-fast);display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;vertical-align:middle;border-radius:4px;line-height:1}
.pos-del:hover{color:var(--danger);opacity:1;background:var(--danger-bg)}

/* ===== Modal ===== */
.modal-backdrop{position:fixed;inset:0;background:rgba(28,25,23,.5);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:500;padding:20px}
.modal-card{
  background:var(--surface);border-radius:var(--r-lg);
  box-shadow:0 20px 60px rgba(0,0,0,.2);
  padding:24px;width:100%;max-width:440px;max-height:90vh;overflow-y:auto;
  animation:modalIn .2s ease-out;
}
@keyframes modalIn{from{opacity:0;transform:scale(.97) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}
.modal-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}

/* ===== My profile avatar (modal) ===== */
.my-profile-avatar-wrap{position:relative;width:88px;height:88px}
.my-profile-avatar-img{width:88px;height:88px;border-radius:50%;object-fit:cover;display:block;border:2px solid var(--border-light)}
.my-profile-avatar-placeholder{
  width:88px;height:88px;border-radius:50%;background:var(--info-bg);color:var(--info);
  display:flex;align-items:center;justify-content:center;font-size:34px;
}
.my-profile-avatar-btn{
  position:absolute;bottom:-2px;right:-2px;width:30px;height:30px;border-radius:50%;
  background:var(--info);color:#fff;display:flex;align-items:center;justify-content:center;
  cursor:pointer;border:2px solid var(--surface);
  transition:background var(--transition-fast);
}
.my-profile-avatar-btn:hover{background:var(--info-dark)}
.my-profile-avatar-remove{
  position:absolute;top:-2px;right:-2px;width:22px;height:22px;border-radius:50%;
  background:var(--danger);color:#fff;display:flex;align-items:center;justify-content:center;
  cursor:pointer;border:2px solid var(--surface);padding:0;
  transition:background var(--transition-fast);
}
.my-profile-avatar-remove:hover{background:#a31f1f}

/* ===== Collapsible sidebar groups ===== */
.sb-toggle{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none;transition:color var(--transition-fast)}
.sb-toggle:hover{color:var(--muted)}
.sb-chev{font-size:13px;transition:transform .2s ease;opacity:.6}
.sb-sec.collapsed .sb-chev{transform:rotate(-90deg)}
.sb-group{overflow:hidden;transition:max-height .25s ease;max-height:1000px}
.sb-group.collapsed{max-height:0}

/* ===== Responsive ===== */
@media(max-width:1200px){
  .metrics{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}
  .recap-bmi-col{flex:0 0 150px}
}
@media(max-width:1100px){
  .two-col{grid-template-columns:1fr}
  .recap-layout{flex-direction:column}
  .recap-bmi-col{flex:none;border-left:none;border-top:1px solid var(--border);padding-left:0;padding-top:14px}
}
@media(max-width:960px){
  .sb{width:240px;min-width:240px}
  .page-title{font-size:19px}
  .topbar{flex-direction:column;gap:10px}
  .metrics-hero{grid-template-columns:1fr 1fr 1fr}
}
@media(max-width:800px){
  /* Sidebar becomes a slide-out drawer below 900px (see that block); the old
     full-width top-strip rules were removed so they don't fight the drawer. */
  .global-topbar{flex-wrap:wrap;padding:10px 12px}
  .global-search{max-width:none;order:2;flex-basis:100%}
  .global-profile{order:1}
  .page-title{font-size:18px}
  .metrics{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
  .metrics-hero{grid-template-columns:1fr}
  .mc{padding:13px 14px}
  .mc-val{font-size:18px}
  .form-grid{grid-template-columns:1fr}
  .form-grid.three{grid-template-columns:1fr}
  .award-grid{grid-template-columns:1fr}
  .search-bar{gap:6px}
  .search-bar input,.search-bar select,.search-bar button{padding:8px 12px;font-size:11px}
  .card{padding:16px;border-radius:var(--r-sm)}
  .upload-zone{padding:14px;flex-direction:column;text-align:center;gap:10px}
  .co-banner{padding:10px 12px;gap:10px !important}
  .co-banner-seal-chip{width:44px;height:44px}
  .co-banner-seal-chip img{width:34px !important;height:34px !important}
  .prof-hdr{flex-direction:column;text-align:center;gap:10px;padding:16px}
  .tbl-footer{flex-direction:column;gap:8px;align-items:flex-start}
}
@media(max-width:500px){
  /* .shell / .sb here are governed by the drawer block (<=900px); no top-strip caps. */
  .page-title{font-size:16px}
  .page-sub{font-size:11px}
  .mc-val{font-size:16px}
  .mc-lbl{font-size:9px}
  .global-topbar{padding:8px 10px;border-radius:var(--r-sm)}
  .card{padding:14px 12px;margin-bottom:10px}
  .btn{padding:8px 14px;font-size:11px}
  .btn-sm{padding:6px 10px;font-size:10px}
  .search-bar{flex-direction:column}
  .search-bar input{min-width:0}
  table{font-size:11px}
  th{padding:8px 8px;font-size:8.5px}
  td{padding:8px 8px}
  .notice{font-size:11px;padding:10px 12px}
}

/* ===== Violation History - Grouped by Term ===== */
.violation-history-grouped {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 14px;
}

.violation-term-group {
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--surface);
}

.violation-term-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  background: linear-gradient(90deg, rgba(110, 31, 44, 0.05), transparent);
  cursor: pointer;
  user-select: none;
  transition: background var(--transition-fast);
  border-bottom: 1px solid var(--border-light);
}

.violation-term-header:hover {
  background: linear-gradient(90deg, rgba(110, 31, 44, 0.1), transparent);
}

.term-toggle-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  color: var(--muted);
  transition: transform var(--transition-fast);
}

.term-toggle-icon.expanded {
  transform: rotate(180deg);
}

.term-name {
  font-weight: 600;
  color: var(--text);
  flex: 0 1 auto;
}

.term-count {
  background: rgba(110, 31, 44, 0.1);
  color: var(--info);
  font-size: 11px;
  font-weight: 600;
  padding: 2px 6px;
  border-radius: 3px;
  flex: 0 0 auto;
}

.term-summary {
  display: flex;
  gap: 8px;
  margin-left: auto;
  flex: 0 1 auto;
}

.term-stat {
  display: flex;
  align-items: center;
  gap: 3px;
  font-size: 11px;
  color: var(--muted);
}

.term-stat i {
  font-size: 10px;
  opacity: 0.7;
}

.violation-term-content {
  padding: 0 14px 12px;
  overflow: hidden;
  max-height: 0;
  transition: max-height var(--transition-med), opacity var(--transition-med);
  opacity: 0;
}

.violation-term-content[style*="display: block"] {
  max-height: 2000px;
  opacity: 1;
  padding: 12px 14px 12px;
}

.violation-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.violation-item {
  padding: 10px 10px;
  border: 1px solid var(--border-light);
  border-radius: var(--r-sm);
  background: var(--surface-hover);
  transition: all var(--transition-fast);
}

.violation-item:hover {
  border-color: var(--info-border);
  background: var(--info-bg);
}

.violation-item.is-historical {
  border-left: 3px solid var(--gold);
  padding-left: 8px;
}

.violation-item.is-recent {
  border-left: 3px solid var(--info);
  padding-left: 8px;
}

.violation-offense {
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  margin-bottom: 6px;
  line-height: 1.4;
}

.violation-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.stat {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--muted);
}

.stat-label {
  font-weight: 600;
  color: var(--hint);
}

.stat strong {
  color: var(--text);
  font-weight: 600;
}

/* ===== Responsive ===== */
@media (max-width: 768px) {
  .term-summary {
    display: none;
  }
  
  .violation-offense {
    font-size: 12px;
  }
  
  .violation-stats {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* ===== Discipline: current-term indicator + period stats ===== */
.term-indicator{display:flex;align-items:center;gap:12px;padding:11px 15px;margin-bottom:12px;
  background:linear-gradient(90deg,var(--gold-bg),transparent);border:1px solid var(--gold-border);
  border-left:3px solid var(--gold);border-radius:var(--r-md)}
.term-indicator>i{font-size:20px;color:var(--gold-dark)}
.term-indicator-lbl{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
.term-indicator-val{display:block;font-size:15px;font-weight:700;color:var(--text)}
.term-indicator-note{margin-left:auto;font-size:11px;color:var(--hint);max-width:280px;text-align:right}

.stat-period-toggle{display:flex;gap:4px;margin-bottom:14px;flex-wrap:wrap}
.stat-period-btn{padding:6px 14px;border:1px solid var(--border);background:var(--surface);color:var(--muted);
  border-radius:var(--r-pill);font-size:12px;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}
.stat-period-btn:hover{border-color:var(--info);color:var(--info)}
.stat-period-btn.active{background:var(--info);color:#fff;border-color:var(--info)}
/* Show ~4 period rows (each ≈63px + 12px gap), then scroll for the rest. */
.stat-period-list{display:flex;flex-direction:column;gap:12px;max-height:300px;overflow-y:auto;padding-right:4px}
.stat-period-group{flex:0 0 auto}
.stat-period-row{display:flex;flex-direction:column;gap:5px}
.stat-period-head{display:flex;align-items:baseline;justify-content:space-between}
.stat-period-label{font-size:13px;font-weight:600;color:var(--text)}
.stat-period-count{font-size:12px;font-weight:700;color:var(--info)}
.stat-period-meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.stat-cls{font-size:10px;font-weight:600}
.stat-period-meta>.stat-cls:last-child{color:var(--hint);font-weight:500}

/* ===== DR drill-down (clickable charts) ===== */
.stat-period-row.clickable,.bar-row.clickable{cursor:pointer;border-radius:var(--r-sm);padding:6px;margin:-2px -6px 7px;transition:background var(--transition-fast)}
.stat-period-row.clickable:hover,.bar-row.clickable:hover{background:var(--surface-hover)}
.drill-list{max-height:62vh;overflow-y:auto;margin-top:6px;display:flex;flex-direction:column;gap:10px}
.drill-cadet{border:1px solid var(--border-light);border-radius:var(--r-md);overflow:hidden;flex:0 0 auto}
.drill-cadet-hdr{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:linear-gradient(90deg,var(--info-bg),transparent);border-bottom:1px solid var(--border-light)}
.drill-cadet-name{font-weight:700;font-size:13px;color:var(--text)}
.drill-cadet-count{font-size:11px;font-weight:600;color:var(--info)}
.drill-dr{display:flex;align-items:center;gap:8px;padding:7px 12px;font-size:12px;border-bottom:1px solid var(--border-light);flex-wrap:wrap}
.drill-dr:last-child{border-bottom:none}
.drill-dr-date{color:var(--hint);font-size:11px;min-width:84px;font-variant-numeric:tabular-nums}
.drill-dr-offense{flex:1;min-width:160px;color:var(--text)}
.drill-dr-pen{color:var(--muted);font-size:11px;font-weight:600;white-space:nowrap}

/* ===== Inline period drill-down (expand to show cadet names) ===== */
.stat-period-chev{font-size:12px;color:var(--muted);transition:transform var(--transition-fast);display:inline-block}
.stat-period-chev.open{transform:rotate(90deg)}
.stat-period-drill{margin:2px 0 10px;padding:10px;border:1px solid var(--border-light);border-radius:var(--r-md);background:var(--bg)}
.drill-summary{font-size:11px;font-weight:600;color:var(--info);margin-bottom:8px}
.stat-period-drill .drill-list{max-height:340px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:4px}

/* ===== Administrative Cases (purple — not ordinary DRs) ===== */
.hist-dot-admin{background:#7c3aed}
.badge.b-admin{background:#f3e8ff;color:#7c3aed;border:1px solid #c4a3f0}
[data-theme="dark"] .badge.b-admin{background:#2a1a40;color:#c79bff;border-color:#5a3a8a}
.history-jump{cursor:pointer;transition:filter var(--transition-fast)}
.history-jump:hover{filter:brightness(.94);text-decoration:underline}
.admin-case-list{display:flex;flex-direction:column;gap:8px}
.admin-case-item{padding:10px;border:1px solid #e3d4f7;border-left:3px solid #7c3aed;border-radius:var(--r-sm);background:#faf6ff}
[data-theme="dark"] .admin-case-item{background:#221635;border-color:#4a2f73;border-left-color:#9b6dff}
.admin-case-offense{font-size:13px;font-weight:600;color:#5b21b6;margin-bottom:6px}
[data-theme="dark"] .admin-case-offense{color:#c79bff}
.admin-case-meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.admin-case-field{font-size:11px;color:var(--muted)}
.acf-lbl{font-weight:600;color:var(--hint)}
.badge.admin-docket{background:#7c3aed;color:#fff;border:none;font-size:9px;font-weight:600}
.badge.admin-docket-none{background:#ece6f5;color:#8b7da8}
.admin-outcome{display:inline-block;padding:1px 8px;border-radius:10px;font-size:10px;font-weight:700;vertical-align:middle;white-space:nowrap}
.section-flash{animation:sectionFlash 1.2s ease-out}
@keyframes sectionFlash{0%{background:#f3e8ff}100%{background:transparent}}

/* ===== Corps-wide Admin Cases list (discipline dashboard) ===== */
.admin-roster-list{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow-y:auto;padding-right:4px}
.admin-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border-light);
  border-left:3px solid #7c3aed;border-radius:var(--r-sm);background:#faf6ff;cursor:pointer;transition:background var(--transition-fast)}
[data-theme="dark"] .admin-row{background:#221635;border-color:#4a2f73;border-left-color:#9b6dff}
.admin-row:hover{background:#f3e8ff}
[data-theme="dark"] .admin-row:hover{background:#2c1d45}
.admin-row-name{font-weight:600;font-size:12px;min-width:170px;color:var(--text)}
.admin-row-offense{flex:1;min-width:140px;font-size:12px;color:#5b21b6}
[data-theme="dark"] .admin-row-offense{color:#c79bff}
.admin-row-year{font-size:11px;color:var(--muted);white-space:nowrap}

/* ===== Collapsible discipline cards ===== */
.collapse-hdr{user-select:none;transition:background var(--transition-fast)}
.collapse-hdr:hover{background:var(--surface-hover)}
.collapse-chev{display:inline-block;transition:transform var(--transition-fast);color:var(--muted)}
.collapse-chev.collapsed{transform:rotate(-90deg)}
/* tighten nested cards inside the DR/Touring collapsible so borders don't double up */
.collapse-body .two-col{margin-top:0}

/* Side-by-side collapsibles: each card sizes to its own content (no stretch) */
.collapse-row{align-items:start}

/* ===== Data completeness grouped box ===== */
.completeness-group{margin-bottom:14px}
.completeness-group:last-child{margin-bottom:0}
.completeness-group-title{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin:4px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--border-light)}

/* ── AI assistant result popover + per-tab AI analysis card ───────────────── */
.global-search.ai-search{position:relative}
.ai-result{position:absolute;top:calc(100% + 6px);left:0;width:360px;max-width:88vw;background:var(--surface);border:1px solid var(--gold-border);border-radius:12px;box-shadow:var(--shadow-lg);z-index:6000;color:var(--text);overflow:hidden}
.ai-result-hdr{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--gold-bg);border-bottom:1px solid var(--gold-border);font-weight:700;color:var(--gold-dark);font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.ai-result-hdr span{display:flex;align-items:center;gap:6px}
.ai-result-hdr button{background:none;border:none;cursor:pointer;color:var(--muted);padding:2px 4px;border-radius:6px;line-height:1}
.ai-result-hdr button:hover{background:rgba(0,0,0,.06)}
.ai-result-body{padding:11px 13px;line-height:1.5;font-size:12.5px;max-height:52vh;overflow:auto}
.ai-insight-card{background:linear-gradient(180deg,var(--gold-bg),var(--surface));border:1px solid var(--gold-border);border-radius:var(--r-md);padding:12px 15px;margin-bottom:16px;box-shadow:var(--shadow-card)}
.ai-insight-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}
.ai-insight-title{font-size:12px;font-weight:700;color:var(--gold-dark);text-transform:uppercase;letter-spacing:.05em;display:flex;align-items:center;gap:6px}
.ai-insight-refresh{background:none;border:1px solid var(--gold-border);border-radius:8px;cursor:pointer;color:var(--gold-dark);width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center}
.ai-insight-refresh:hover{background:var(--surface)}
.ai-insight-body{font-size:13px;color:var(--text);line-height:1.55}
.ai-insight-list{margin:0;padding-left:18px}
.ai-insight-list li{margin:3px 0}
.ai-insight-loading{color:var(--muted);font-size:12.5px;font-style:italic;display:flex;align-items:center;gap:5px;padding:3px 0}
.ai-insight-err{color:var(--danger);font-size:12.5px}
.ai-dot{width:6px;height:6px;border-radius:50%;background:var(--gold-dark);display:inline-block;animation:aiPulse 1.2s infinite ease-in-out}
.ai-dot:nth-child(2){animation-delay:.2s}
.ai-dot:nth-child(3){animation-delay:.4s}
@keyframes aiPulse{0%,80%,100%{opacity:.25}40%{opacity:1}}

/* AI analysis dropdown — loading skeleton + footer */
.ai-insight-card .collapse-hdr:hover{background:var(--surface-hover)}
.ai-insight-card .ai-insight-title{color:var(--gold-dark)}
.ai-load-row{color:var(--muted);font-size:12.5px;font-style:italic;display:flex;align-items:center;gap:5px;margin:6px 0 12px}
.ai-skel{height:11px;border-radius:6px;margin:8px 0;background:linear-gradient(90deg,var(--gold-bg) 25%,var(--surface-hover) 37%,var(--gold-bg) 63%);background-size:400% 100%;animation:aiShimmer 1.4s ease infinite}
@keyframes aiShimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
.ai-insight-foot{margin-top:10px;padding-top:9px;border-top:1px solid var(--gold-border)}
.ai-insight-foot button{background:none;border:1px solid var(--gold-border);border-radius:8px;cursor:pointer;color:var(--gold-dark);font-size:11px;font-weight:600;padding:4px 10px;display:inline-flex;align-items:center;gap:5px}
.ai-insight-foot button:hover{background:var(--gold-bg)}

.ai-insight-unavail{color:var(--muted);font-size:12.5px;padding:4px 0;display:flex;align-items:center;flex-wrap:wrap;gap:2px}
.ai-insight-unavail a{color:var(--gold-dark);font-weight:600;margin-left:5px}

/* ── Cadet activity timeline ──────────────────────────────────────────────── */
.tl-list{padding:2px 0}
.tl-item{display:flex;gap:12px;padding:9px 2px;border-bottom:1px solid var(--border-light)}
.tl-item:last-child{border-bottom:none}
.tl-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:4px;box-shadow:0 0 0 3px var(--surface)}
.tl-content{flex:1;min-width:0}
.tl-row{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.tl-title{font-size:13px;font-weight:500;color:var(--text)}
.tl-meta{font-size:10px;color:var(--muted);background:var(--surface-hover);padding:1px 7px;border-radius:8px}
.tl-date{font-size:11px;color:var(--muted);margin-top:2px}

/* ── AI bridge status dot ─────────────────────────────────────────────────── */
.ai-status-dot{width:8px;height:8px;border-radius:50%;background:var(--border-strong);flex-shrink:0;margin:0 2px}
.ai-status-dot.online{background:#1e7e34;box-shadow:0 0 0 3px rgba(30,126,52,.16)}
.ai-status-dot.offline{background:#c62828;box-shadow:0 0 0 3px rgba(198,40,40,.16)}

/* ── Loading skeletons (heavy views) ──────────────────────────────────────── */
.skel-page{padding:4px 0}
.skel{background:linear-gradient(90deg,var(--surface-hover) 25%,var(--border-light) 37%,var(--surface-hover) 63%);background-size:400% 100%;animation:aiShimmer 1.4s ease infinite;border-radius:6px}
.skel-line{height:12px}
.skel-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:16px 0}
.skel-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px}
.skel-trow{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid var(--border-light)}
.skel-dot{width:30px;height:30px;border-radius:50%;flex-shrink:0}

/* ── Bulk-operation undo panel ────────────────────────────────────────────── */
.bulk-undo-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--border-light)}
.bulk-undo-row:last-child{border-bottom:none}
.bulk-undo-label{font-size:13px;font-weight:500;color:var(--text)}
.bulk-undo-meta{font-size:11px;color:var(--muted);margin-top:1px}

/* ── Mobile / tablet responsive ───────────────────────────────────────────── */
.sb-burger{display:none;background:none;border:none;cursor:pointer;color:var(--text);font-size:22px;padding:4px 8px;line-height:1;align-items:center}
#sb-scrim{display:none}
/* ===== Tablet & phone: slide-out drawer sidebar (<= 900px) ===== */
@media(max-width:900px){
  .shell{padding:0;gap:0}
  /* Fixed-width drawer panel (not full-width), slides in from the left. */
  .sb{position:fixed;left:0;top:0;height:100vh;height:100dvh;width:min(86vw,300px);min-width:0;max-width:300px;
      z-index:2000;transform:translateX(-110%);transition:transform .25s ease;
      box-shadow:2px 0 18px rgba(0,0,0,.20);border-radius:0;
      padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left)}
  .sb.sb-open{transform:translateX(0)}
  #sb-scrim.show{display:block;position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:1999;
      -webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}
  .content-col{height:100vh;height:100dvh;width:100%;padding:10px;min-width:0}
  .sb-burger{display:inline-flex;justify-content:center;font-size:24px;min-width:42px;min-height:42px;
      border-radius:var(--r-sm);flex-shrink:0}
  .sb-burger:active{background:var(--surface-hover)}
  .global-topbar{flex-wrap:wrap;gap:8px;padding:8px 10px;align-items:center}
  .global-search{min-width:0;flex:1 1 160px}
  .global-profile-text{display:none}
  .two-col{grid-template-columns:1fr}
  .metrics{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))}
  .page-title{font-size:18px}
  .tab-bar{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .tab-bar::-webkit-scrollbar{display:none}
  .ai-result{width:min(92vw,340px)}
  /* Smooth momentum scrolling for any wide table. */
  .tbl-wrap{-webkit-overflow-scrolling:touch}
}

/* Smart DR-entry box */
.smart-dr{background:var(--gold-bg);border:1px solid var(--gold-border);border-radius:var(--r-md);padding:11px 13px;margin-bottom:14px}

/* Login-activity statistics grid */
.login-stats-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;padding:4px 0 2px}
.login-stats-grid .ls-cell{text-align:center;padding:10px 6px;border-radius:10px;background:var(--surface-hover);border:1px solid var(--border-light)}
.login-stats-grid .ls-val{font-size:22px;font-weight:700;color:var(--text);line-height:1.1}
.login-stats-grid .ls-lbl{font-size:11px;color:var(--muted);margin-top:4px;letter-spacing:.01em}
@media(max-width:720px){ .login-stats-grid{grid-template-columns:repeat(2,1fr)} }

/* Watchdog anomaly card */
.anom-card{border-left:3px solid var(--danger)}
.anom-item{display:flex;align-items:baseline;gap:9px;padding:6px 0;border-bottom:1px solid var(--border-light);flex-wrap:wrap}
.anom-item:last-child{border-bottom:none}
.anom-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;align-self:center}
.anom-subj{font-size:13px;font-weight:600;color:var(--text)}
.anom-msg{font-size:12px;color:var(--muted)}

/* Merit-standing bar (profile) */
.merit-bar-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.merit-bar{position:relative;display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--surface-hover);border:1px solid var(--border-light)}
.merit-bar-seg{height:100%;transition:width .45s ease}
/* Divider marking the 147 baseline; the space to its right is the earned-merit allotment. */
.merit-bar-baseline{position:absolute;top:-1px;bottom:-1px;width:2px;background:rgba(0,0,0,.42);z-index:2}
[data-theme="dark"] .merit-bar-baseline{background:rgba(255,255,255,.5)}
/* Scale row under the bar: the 147 cap sits at the end of the green; the earned-merit
   allotment is bracketed across the remaining gap to its right. */
.merit-bar-wrap{position:relative}
.merit-bar-scale{position:relative;height:16px;margin-top:3px;font-size:10px}
.mb-cap{position:absolute;transform:translateX(-50%);font-weight:700;color:var(--text);white-space:nowrap}
.mb-earn-zone{position:absolute;right:0;top:2px;border-top:1px dashed var(--border);color:var(--hint);
  text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1px;font-style:italic}
.merit-bar-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:7px;font-size:11px;color:var(--muted)}
.mb-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}

/* Per-semester demerit bar in DR violation history */
.violation-term-header{flex-direction:column;align-items:stretch;gap:0}
.term-header-row{display:flex;align-items:center;gap:10px}
.term-bar{height:6px;border-radius:3px;background:var(--surface-hover);overflow:hidden;margin-top:9px}
.term-bar-fill{height:100%;border-radius:3px;transition:width .4s ease;min-width:0}

/* ============================================================================
   MOBILE & TABLET REFINEMENTS
   ========================================================================== */

/* Never allow sideways page scroll on small screens. */
@media(max-width:900px){
  html,body{max-width:100%;overflow-x:hidden}
  .main{padding:0 2px 8px}
}

/* --- Tablet band (901–1200px): keep a slim persistent sidebar, roomier cards --- */
@media(min-width:901px) and (max-width:1200px){
  .sb{width:216px;min-width:216px}
  .sb-logo-name{font-size:11px}
  .metrics{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
}

/* --- Touch devices: bigger, thumb-friendly tap targets --- */
@media(pointer:coarse){
  .sb-item{padding:12px 12px;font-size:14px;margin:3px 0}
  .sb-item i{font-size:18px;width:20px}
  .sb-sec{padding:16px 12px 8px}
  .tab{padding:12px 16px;font-size:13px}
  .btn{padding:11px 18px}
  .btn-sm{padding:9px 14px}
  .stat-period-btn,.seg-btn,.chart-toggle-btn,.an-chart-btn{min-height:40px}
  .dark-mode-toggle,.sb-burger,#notif-bell{min-width:42px;min-height:42px;justify-content:center}
  .profile-menu-item{padding:13px 12px}
  /* comfortable row height for tapping into a cadet profile */
  td,th{padding:12px 12px}
}

/* --- Phones (<=560px): stack, enlarge type, prevent iOS input zoom --- */
@media(max-width:560px){
  .content-col{padding:8px;padding-bottom:calc(8px + env(safe-area-inset-bottom))}
  .global-topbar{padding:8px 10px;border-radius:var(--r-sm);gap:6px}
  /* keep burger + search on row 1, AI search wraps to its own row */
  .ai-search{order:3;flex-basis:100%}
  .global-search{flex:1 1 auto}
  /* 16px inputs stop iOS Safari from auto-zooming on focus */
  input,select,textarea,.global-search input,.search-bar input,.search-bar select,
  .form-group input,.form-group select,.form-group textarea{font-size:16px}
  .metrics{grid-template-columns:1fr 1fr;gap:8px}
  .mc{padding:12px 12px}
  .mc-val{font-size:20px}
  .page-title{font-size:17px}
  .card{padding:14px 12px;margin-bottom:10px;border-radius:var(--r-md)}
  .search-bar{flex-direction:column;align-items:stretch}
  .search-bar input,.search-bar select,.search-bar button{width:100%;min-width:0}
  .prof-hdr{flex-direction:column;text-align:center;gap:10px;padding:16px}
  /* let wide tables scroll rather than squashing; hint with a soft right edge */
  .tbl-wrap{position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch}
  table{font-size:12px;min-width:520px}
  th{font-size:9px;padding:9px 10px}
  td{padding:11px 10px}
  .two-col,.form-grid,.form-grid.three,.award-grid{grid-template-columns:1fr}
}

/* Very small phones — single-column stat cards. */
@media(max-width:380px){
  .metrics{grid-template-columns:1fr}
  .sb{width:88vw}
}

/* Offense tab — Individual Offenders 4×2 tile grid (top male/female per class) */
.off-tile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
@media(max-width:900px){.off-tile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.off-tile-grid{grid-template-columns:1fr}}
.off-tile{border:1px solid var(--border);border-radius:var(--r);padding:9px 11px 10px;background:var(--surface);display:flex;flex-direction:column;gap:6px;min-width:0}
.off-tile.clickable{cursor:pointer;transition:box-shadow .15s ease,transform .1s ease}
.off-tile.clickable:hover{box-shadow:0 2px 10px rgba(0,0,0,.08);transform:translateY(-1px)}
.off-tile-lbl{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.off-tile-name{font-weight:700;font-size:12.5px;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.off-tile-empty{opacity:.55;justify-content:center}

/* Icon-only chart-type toggle (Bar/Pie/Line) — compact, in the card header, right-aligned */
.chart-toggle-icons{display:inline-flex;gap:4px;margin:0}
.chart-toggle-icons .chart-toggle-btn{padding:0;width:24px;height:24px;justify-content:center;gap:0;box-shadow:none}
.chart-toggle-icons .chart-toggle-btn i{font-size:13px}

/* PNP Individual BMI Monitoring Form (per-cadet profile card) */
.bmiform{border:1px solid var(--border);border-radius:8px;overflow:hidden}
.bmiform-title{background:#6e1f2c;color:#fff;text-align:center;font-weight:800;letter-spacing:.5px;font-size:13px;padding:9px 10px}
.bmiform-grid{display:grid;grid-template-columns:1fr 1fr;gap:0}
.bmiform-grid>div{border-top:1px solid var(--border-light)}
.bmiform-grid>div:first-child{border-right:1px solid var(--border-light)}
.bmiform-row{display:flex;align-items:stretch;border-bottom:1px solid var(--border-light)}
.bmiform-row:last-child{border-bottom:none}
.bmiform-k{flex:0 0 42%;background:color-mix(in srgb,#6e1f2c 12%,var(--surface));font-weight:700;font-size:11px;color:var(--text);padding:7px 9px;display:flex;align-items:center}
.bmiform-v{flex:1;padding:7px 9px;font-size:12px;display:flex;align-items:center}
.bmi-pill{display:inline-block;color:#fff;font-weight:700;font-size:11px;padding:2px 9px;border-radius:999px;line-height:1.5}
.bmiform-class{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--border-light)}
.bmiform-classcol{padding:8px 10px;text-align:center}
.bmiform-classcol:first-child{border-right:1px solid var(--border-light)}
.bmiform-classlbl,.bmiform-ivlbl{font-size:10px;font-weight:800;letter-spacing:.4px;color:var(--muted);margin-bottom:5px}
.bmiform-iv{padding:10px;border-top:1px solid var(--border-light)}
.bmiform-ivtext{font-size:12px;line-height:1.55;color:var(--text)}
.bmiform-ivnote{font-size:10px;color:var(--hint);margin-top:6px;font-style:italic}
.bmiform-months{padding:10px;border-top:1px solid var(--border-light)}
.bmiform-mtbl{width:100%;border-collapse:collapse;font-size:11px}
.bmiform-mtbl th,.bmiform-mtbl td{border:1px solid var(--border-light);padding:5px 4px;text-align:center;min-width:32px}
.bmiform-mtbl th{background:color-mix(in srgb,#6e1f2c 14%,var(--surface));font-weight:700;font-size:10px}
.bmiform-mtbl thead th:first-child,.bmiform-mtbl tbody td:first-child{text-align:left}
@media(max-width:640px){.bmiform-grid,.bmiform-class{grid-template-columns:1fr}.bmiform-grid>div:first-child{border-right:none}.bmiform-classcol:first-child{border-right:none;border-bottom:1px solid var(--border-light)}}

/* Offense tab — two height-balanced columns of analytics charts, so mismatched
   card heights pack tightly instead of leaving big blank gaps. */
.viol-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start;margin-bottom:14px}
.viol-col{display:flex;flex-direction:column;gap:14px;min-width:0}
.viol-col>.card{margin-bottom:0}
@media(max-width:900px){.viol-cols{grid-template-columns:1fr}}
