/* APEX Admin UI v14 — production consistency layer */
:root{
  --admin-text:#edf6ff;
  --admin-muted:#96aabd;
  --admin-muted-2:#71869b;
  --admin-radius:14px;
  --admin-gap:12px;
}
html{color-scheme:dark}
body{font-size:13px;line-height:1.45}
button,input,select,textarea{font-size:12px}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid rgba(84,215,255,.72);outline-offset:2px}

.app-shell{grid-template-columns:220px minmax(0,1fr)}
.sidebar{padding:20px 16px;gap:22px}
.brand strong{font-size:17px}.brand small{font-size:9px;line-height:1.3}
.sidebar nav{gap:5px}.nav-item,.signout{min-height:40px;padding:10px 11px;font-size:12px;line-height:1.2}
.status-card{padding:12px}.status-card b{font-size:11px}.status-card small{font-size:9.5px;line-height:1.25}

.admin-main{height:100vh;padding:20px 24px 18px;overflow:auto;display:flex;flex-direction:column;min-width:0}
.admin-main .topbar{margin-bottom:14px;align-items:flex-start;flex:0 0 auto}
.admin-main .topbar h1{font-size:26px;line-height:1.1;margin:5px 0 5px}
.admin-main .topbar p{font-size:11px;line-height:1.4;color:var(--admin-muted);max-width:760px}
.eyebrow{font-size:9px;line-height:1.25}
.primary-btn,.ghost-btn{height:36px;padding:0 13px;font-size:11px}

.admin-kpis{gap:var(--admin-gap);margin-bottom:12px;grid-template-columns:repeat(4,minmax(0,1fr))}
.admin-kpis .kpi{min-height:88px;padding:14px 15px;display:grid;grid-template-rows:18px minmax(30px,1fr) 16px;align-items:center}
.admin-kpis .kpi span{font-size:10px}.admin-kpis .kpi strong{font-size:23px;line-height:1;margin:0}.admin-kpis .kpi small{font-size:9.5px;line-height:1.2}

.admin-section{min-height:0;flex:1}
.panel{border-radius:var(--admin-radius);padding:16px}
.panel-head{margin-bottom:14px;align-items:flex-start}.panel h2{font-size:16px;line-height:1.2;margin-top:4px}.panel-head>.muted{font-size:10px}
.inline-filters{gap:8px}.admin-input{min-height:36px;padding:8px 10px;font-size:11px;line-height:1.3}.inline-filters .admin-input{font-size:11px}
.admin-table{max-height:none;min-height:0}.admin-table table{font-size:11px}.admin-table th{font-size:9px;padding:10px}.admin-table td{font-size:10.5px;padding:10px;line-height:1.35}
.mini-btn{min-height:30px;padding:6px 9px;font-size:9.5px}.status-pill{font-size:8.5px;padding:4px 7px}
.empty,.empty-card{font-size:10px}

/* Backfill cards */
#section-jobs:not(.hidden){display:flex;min-height:0}
#section-jobs>.panel{display:flex;flex-direction:column;min-height:0;width:100%}
.job-controlbar{gap:12px}.job-overall span,.job-overall b{font-size:10px}.job-filters{gap:5px}.job-filter{min-height:30px;font-size:9.5px;padding:0 10px}
.job-list{gap:9px;overflow:auto;min-height:0;padding-right:2px}
.job-card{padding:12px 13px}.job-top b{font-size:11.5px}.job-top .mono{font-size:9px}.job-meta{font-size:9px;gap:12px}.job-actions{margin-top:9px}.job-error{font-size:9px;line-height:1.35}
.progress{height:6px;margin:10px 0 7px}

/* Health and operations */
.admin-health-grid{grid-template-columns:minmax(0,1.45fr) minmax(300px,.85fr);gap:12px}
.health-list{gap:8px}.health-item{padding:9px 0}.health-item b{font-size:10.5px}.health-item small{font-size:9px;line-height:1.3}
.ops-card{font-size:10.5px;line-height:1.5}.ops-stats{gap:8px}.ops-stats span{font-size:9px}.ops-stats b{font-size:11px}.ops-flow{gap:7px;margin-top:14px}.ops-flow span{font-size:9px;padding:8px}
.audit-json{font-size:9px}

/* Modals and forms */
.modal-card{width:min(660px,100%);padding:20px}.modal-head h2{font-size:19px}.admin-form{gap:12px}.admin-form label{font-size:10.5px;line-height:1.3}.admin-form label span{font-size:9.5px}.info-box,.small-copy{font-size:10px;line-height:1.5}.wallet-hero .mono{font-size:10px}.modal-actions{gap:8px}.toast{font-size:10px}
.method-note{font-size:10px;line-height:1.45}

/* Analytics visibility */
.analytics-visibility-panel{height:100%;display:flex;flex-direction:column;min-height:0}
.analytics-visibility-copy{color:var(--admin-muted);font-size:10.5px;line-height:1.45;max-width:780px;margin:5px 0 0}
.analytics-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px;flex-wrap:wrap}
.analytics-toolbar-actions{display:flex;gap:8px;flex-wrap:wrap}
.analytics-selection-count{font-size:10.5px;color:var(--admin-muted)}.analytics-selection-count b{color:var(--admin-text)}
.analytics-firm-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:9px;overflow:auto;min-height:0;padding:2px 3px 9px 2px}
.analytics-firm-card{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #1d3040;background:#0a1620;border-radius:12px;padding:12px 13px;min-height:66px;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.analytics-firm-card:hover{border-color:#2d526b;background:#0d1c28}.analytics-firm-card.is-enabled{border-color:#23526c;background:#0b1d2a}
.analytics-firm-copy{min-width:0}.analytics-firm-copy b{display:block;font-size:11px;line-height:1.3;color:var(--admin-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.analytics-firm-copy small{display:block;margin-top:4px;font-size:9px;line-height:1.3;color:var(--admin-muted)}
.analytics-switch{position:relative;display:inline-flex;flex:0 0 auto;width:42px;height:24px}.analytics-switch input{opacity:0;width:0;height:0}.analytics-switch span{position:absolute;inset:0;border-radius:999px;background:#20313f;border:1px solid #344b5c;transition:.15s ease}.analytics-switch span:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;border-radius:50%;background:#8aa0b1;transition:.15s ease}.analytics-switch input:checked+span{background:#0f485e;border-color:#28779a}.analytics-switch input:checked+span:before{transform:translateX(18px);background:#5de4ff}.analytics-switch input:disabled+span{opacity:.55;cursor:wait}
.analytics-note{margin-top:9px;padding:10px 11px;border:1px solid #17364a;border-radius:10px;background:#0a1b27;color:#89a8bc;font-size:9.5px;line-height:1.45}

@media(max-width:1320px){
  .app-shell{grid-template-columns:76px minmax(0,1fr)}
  .sidebar{padding-inline:10px}.brand>div,.sidebar .nav-item{font-size:0}.sidebar .nav-item{justify-content:center;padding-inline:0}.status-card,.signout{display:none}
  .admin-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .analytics-firm-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}
}
@media(max-width:900px){
  body{height:auto;overflow:auto}.app-shell{height:auto;min-height:100vh;display:block}.sidebar{display:none}
  .admin-main{height:auto;min-height:100vh;padding:16px 12px;overflow:visible}
  .topbar{display:block}.top-actions{margin-top:12px;flex-wrap:wrap}
  .admin-kpis{grid-template-columns:1fr 1fr}
  .admin-health-grid{grid-template-columns:1fr}
  .inline-filters{display:flex;flex-wrap:wrap}
  .analytics-firm-grid{grid-template-columns:1fr}
}
@media(max-width:560px){
  .admin-kpis{grid-template-columns:1fr}.form-grid,.manage-grid{grid-template-columns:1fr}.inline-filters{display:none}
  .admin-main .topbar h1{font-size:23px}.admin-main .topbar p{font-size:10.5px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Keep text navigation usable on laptop widths; collapse only below the mobile breakpoint. */
@media(max-width:1320px) and (min-width:901px){
  .app-shell{grid-template-columns:190px minmax(0,1fr)}
  .sidebar{padding-inline:12px}
  .sidebar .nav-item{font-size:11px;justify-content:flex-start;padding-inline:10px}
  .status-card{display:flex}
  .signout{display:block;font-size:11px}
}
