/* Drone Command Centre — UI styles (consumes the shared design tokens) */
/* Self-hosted fonts (OFL — see /assets/fonts/OFL-*.txt). The app no longer loads
   Google Fonts, so it renders its real typography offline / air-gapped and behind
   a strict CSP with no external font origins. Only the weights the UI uses are
   bundled (Archivo 600/700/800, Inter 400/500/600, JetBrains Mono 500/600). */
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/inter-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/inter-latin-500-normal.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/inter-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Archivo';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/archivo-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Archivo';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/archivo-latin-700-normal.woff2') format('woff2')}
@font-face{font-family:'Archivo';font-style:normal;font-weight:800;font-display:swap;src:url('/assets/fonts/archivo-latin-800-normal.woff2') format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;src:url('/assets/fonts/jetbrains-mono-latin-500-normal.woff2') format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/jetbrains-mono-latin-600-normal.woff2') format('woff2')}
:root{
  --canvas:#0B0D10; --panel:#13171C; --panel-2:#1A1F26; --panel-3:#222831;
  --line:#262C35; --line-soft:#1C2128;
  --text:#F2F4F7; --text-2:#9AA4B1; --text-3:#646E7B;
  --brand:#E86828; --brand-2:#F47C3C; --brand-tint:rgba(232,104,40,.12); --brand-line:rgba(232,104,40,.4);
  --ok:#3DBE78; --ok-t:rgba(61,190,120,.13); --warn:#E8A33D; --warn-t:rgba(232,163,61,.13);
  --bad:#E2564D; --bad-t:rgba(226,86,77,.13); --info:#4D94E2; --info-t:rgba(77,148,226,.13);
  --disp:'Archivo',system-ui,sans-serif; --body:'Inter',system-ui,sans-serif; --mono:'JetBrains Mono',monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--canvas);color:var(--text);font-family:var(--body);font-size:14px;line-height:1.5}
.hidden{display:none!important}
.mono{font-family:var(--mono)}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
::selection{background:var(--brand);color:#fff}
a{color:var(--brand-2)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:13px;
  padding:9px 15px;border-radius:9px;transition:.15s}
.btn-primary{background:var(--brand);color:#fff;box-shadow:0 4px 14px rgba(232,104,40,.28)}
.btn-primary:hover{background:var(--brand-2)}
.btn-primary:disabled{background:var(--panel-3);color:var(--text-3);box-shadow:none;cursor:not-allowed}
.btn-ghost{background:var(--panel);border:1px solid var(--line);color:var(--text)}
.btn-ghost:hover{background:var(--panel-2)}
.btn-sm{padding:7px 12px;font-size:12px}
.btn-block{width:100%}

/* ---------- LOGIN ---------- */
.login{position:fixed;inset:0;display:grid;place-items:center;
  background:radial-gradient(900px 500px at 70% -10%,rgba(232,104,40,.10),transparent 60%),var(--canvas)}
.login-card{width:380px;max-width:92vw;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:32px}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:26px}
.login-brand img{width:40px;height:40px;filter:drop-shadow(0 2px 8px rgba(232,104,40,.45))}
.lb-name{font-family:var(--disp);font-weight:800;font-size:15px;letter-spacing:.03em}
.lb-tag{font-size:8px;letter-spacing:.34em;color:var(--brand);font-weight:700;margin-top:3px}
.login h1{font-family:var(--disp);font-size:24px;margin-bottom:4px}
.login-sub{color:var(--text-3);font-size:13px;margin-bottom:22px}
.login label{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-2);margin:14px 0 6px}
.login input{width:100%;background:var(--canvas);border:1px solid var(--line);border-radius:9px;padding:11px 13px;color:#fff;font-size:14px}
.login input:focus{outline:none;border-color:var(--brand-line)}
.login-error{color:var(--bad);font-size:13px;min-height:18px;margin:10px 0 4px}
.login-btn-wrap{margin-top:8px}
#login-btn{margin-top:6px}
.login-hint{margin-top:18px;font-size:11.5px;color:var(--text-3);line-height:1.7;border-top:1px solid var(--line);padding-top:14px}

/* ---------- APP SHELL ---------- */
.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
.sidebar{background:#0E1216;border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.side-brand{display:flex;align-items:center;gap:11px;padding:18px 18px 16px;border-bottom:1px solid var(--line)}
.side-brand img{width:30px;height:30px;filter:drop-shadow(0 2px 6px rgba(232,104,40,.4))}
.sb-name{font-family:var(--disp);font-weight:800;font-size:12.5px;letter-spacing:.02em;line-height:1.1}
.sb-name small{display:block;font-size:7px;letter-spacing:.3em;color:var(--brand);margin-top:3px}
.nav{padding:12px 12px;display:flex;flex-direction:column;gap:3px;flex:1}
.nav-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:9px;color:var(--text-2);font-weight:500;font-size:13.5px;transition:.13s}
.nav-item:hover{background:var(--panel);color:var(--text)}
.nav-item.on{background:var(--brand-tint);color:#fff}
.nav-item.on .ni-ic{color:var(--brand)}
.ni-ic{width:18px;height:18px;flex:none;color:var(--text-3)}
.ni-ic svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}
.nav-item .badge{margin-left:auto;font-family:var(--mono);font-size:10px;background:var(--bad);color:#fff;border-radius:10px;padding:1px 7px}
.side-foot{padding:14px 18px;border-top:1px solid var(--line);font-size:11px;color:var(--text-3)}

.main{display:flex;flex-direction:column;min-width:0}
.topbar{display:flex;align-items:center;gap:14px;padding:14px 26px;border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(11,13,16,.85);backdrop-filter:blur(12px);z-index:10}
.topbar-title{font-family:var(--disp);font-size:17px;font-weight:700}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px}
.org-name{font-size:12.5px;color:var(--text-2)}
.user-chip{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}
.user-chip .av{width:28px;height:28px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700}
.view{padding:24px 30px 60px;max-width:1680px;width:100%;margin:0 auto}
/* ^ v1.97: auto margins — without them every capped view pinned LEFT on
   viewports wider than the cap (root instance of the v1.96.0 bug class). */
/* Data-dense views fill the whole window */
.view.view-wide{max-width:none}

/* ---------- shared primitives ---------- */
.pill{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px;border:1px solid transparent;white-space:nowrap}
.pill .d{width:6px;height:6px;border-radius:50%;background:currentColor}
.pill.ok{color:var(--ok);background:var(--ok-t);border-color:rgba(61,190,120,.25)}
.pill.warning{color:var(--warn);background:var(--warn-t);border-color:rgba(232,163,61,.25)}
.pill.blocked{color:var(--bad);background:var(--bad-t);border-color:rgba(226,86,77,.25)}
.pill.mut{color:var(--text-2);background:var(--panel-3);border-color:var(--line)}
.pill.brand{color:var(--brand);background:var(--brand-tint);border-color:var(--brand-line)}

.section-h{display:flex;align-items:center;gap:12px;margin:6px 0 16px}
.section-h h2{font-family:var(--disp);font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.section-h .sub{font-size:12px;color:var(--text-3)}
.section-h .right{margin-left:auto;display:flex;gap:8px}

.card{background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:hidden}
.card-pad{padding:16px}

/* tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:22px}
.tile{background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:16px}
.tile.alert{border-color:var(--brand-line)}
.tile .tl{font-size:11px;color:var(--text-2);display:flex;align-items:center;gap:7px}
.tile .tl svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8}
.tile .tv{font-family:var(--disp);font-weight:800;font-size:26px;margin-top:10px;line-height:1}
.tile .tv small{font-size:13px;color:var(--text-3);font-weight:600}
.tile.alert .tv{color:var(--brand)}

/* tables */
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;font-family:var(--disp);text-transform:uppercase;letter-spacing:.09em;font-size:10px;color:var(--text-3);font-weight:700;padding:11px 16px;border-bottom:1px solid var(--line)}
td{padding:12px 16px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
tbody tr{cursor:pointer;transition:.12s}
tbody tr:hover{background:var(--panel-2)}
tr:last-child td{border-bottom:none}
.cell-main{font-weight:600;color:#fff}
.cell-sub{font-size:11px;color:var(--text-3);font-family:var(--mono);margin-top:2px}

.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px}
.tab{padding:9px 15px;font-size:13px;font-weight:600;color:var(--text-2);border-bottom:2px solid transparent;margin-bottom:-1px}
.tab:hover{color:var(--text)}
.tab.on{color:#fff;border-bottom-color:var(--brand)}
.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--brand);color:#fff;font-size:11px;font-weight:700;margin-left:5px}
tr.mx-clickable{cursor:pointer}
tr.mx-clickable:hover{background:var(--panel-2,rgba(255,255,255,.03))}
.dm-fleet.mx-clickable{cursor:pointer;border-radius:8px}
.dm-fleet.mx-clickable:hover{background:var(--panel-2,rgba(255,255,255,.03))}
td.mx-clickable{cursor:pointer}
td.mx-clickable:hover{color:var(--brand)}

.bar{height:6px;width:90px;border-radius:20px;background:var(--panel-3);overflow:hidden;display:inline-block;vertical-align:middle}
.bar>i{display:block;height:100%;border-radius:20px}

.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
@media(max-width:1000px){.tiles{grid-template-columns:repeat(2,1fr)}.two-col,.three-col{grid-template-columns:1fr}}

.list-row{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid var(--line-soft)}
.list-row:last-child{border-bottom:none}
.list-row .lr-main{font-weight:600}
.list-row .lr-sub{font-size:11.5px;color:var(--text-3)}
.list-row .lr-right{margin-left:auto}

/* drawer */
.scrim{position:fixed;inset:0;background:rgba(5,7,9,.6);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:.2s;z-index:40}
.scrim.on{opacity:1;pointer-events:auto}
/* Detail cards anchor top-centre (matching modals/toasts) and slide down from the
   top; off-screen (above the viewport) when not .on, so navigating away — which
   calls closeDrawer() — fully removes them and they never persist onto the next
   screen. (Was a right-edge panel; a stray later override set the drawer to
   position:relative, dropping it into normal flow at the bottom-left — which read
   as 'pops up at the bottom and persists across pages'. That override is removed.) */
.drawer{position:fixed;top:72px;left:50%;width:520px;max-width:96vw;max-height:calc(100vh - 96px);background:var(--panel);border:1px solid var(--line);border-radius:16px;transform:translate(-50%,calc(-100% - 96px));transition:.28s cubic-bezier(.4,0,.2,1);z-index:50;display:flex;flex-direction:column;box-shadow:0 24px 80px rgba(0,0,0,.55);overflow:hidden}
.drawer.on{transform:translateX(-50%)}
.drawer-h{padding:20px;border-bottom:1px solid var(--line);position:relative}
.drawer-h .cat{font-size:10.5px;color:var(--brand);text-transform:uppercase;letter-spacing:.14em;font-weight:700}
.drawer-h h3{font-family:var(--disp);font-size:19px;font-weight:800;margin:7px 0 5px;padding-right:34px}
.drawer-h .sub{font-family:var(--mono);font-size:12px;color:var(--text-3)}
.x{position:absolute;top:18px;right:18px;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:var(--text-3)}
.x:hover{background:var(--panel-2);color:#fff}
.drawer-b{padding:18px 20px;overflow-y:auto;flex:1}
.spec{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--line-soft);font-size:13px}
.spec:last-of-type{border-bottom:none}
.spec .k{color:var(--text-3)}
.spec .v{font-weight:600;font-family:var(--mono);font-size:12.5px;text-align:right}
.sec-t{font-family:var(--disp);text-transform:uppercase;letter-spacing:.12em;font-size:10px;color:var(--text-3);font-weight:700;margin:20px 0 10px}

/* eligibility reasons */
.reasons{display:flex;flex-direction:column;gap:7px}
.reason{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;background:var(--canvas);border:1px solid var(--line)}
.reason .ic{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:800;flex:none}
.reason.ok .ic{background:var(--ok-t);color:var(--ok)}
.reason.warning .ic{background:var(--warn-t);color:var(--warn)}
.reason.blocked .ic{background:var(--bad-t);color:var(--bad)}
.reason .rt{font-weight:600;font-size:13px}
.reason .rd{font-size:11.5px;color:var(--text-3)}
.reason .rr{margin-left:auto;font-size:11px;color:var(--text-3)}

/* release gate */
.gate{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:1000px){.gate{grid-template-columns:1fr}}
.field{margin-bottom:14px}
.field label{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-2);margin-bottom:6px}
.field select{width:100%;background:var(--canvas);border:1px solid var(--line);border-radius:9px;padding:11px 13px;color:#fff;font-size:14px}
.field select:focus{outline:none;border-color:var(--brand-line)}
.gate-verdict{border-radius:12px;padding:16px;margin-bottom:14px;border:1px solid var(--line)}
.gate-verdict.ok{background:var(--ok-t);border-color:rgba(61,190,120,.3)}
.gate-verdict.warning{background:var(--warn-t);border-color:rgba(232,163,61,.3)}
.gate-verdict.blocked{background:var(--bad-t);border-color:rgba(226,86,77,.3)}
.gate-verdict .gv-title{font-family:var(--disp);font-weight:800;font-size:16px;display:flex;align-items:center;gap:9px}
.gate-verdict .gv-sub{font-size:12.5px;color:var(--text-2);margin-top:4px}

.toast-wrap{position:fixed;top:74px;left:50%;transform:translateX(-50%);z-index:130;display:flex;flex-direction:column;gap:9px;align-items:center}
.toast{display:flex;align-items:center;gap:11px;background:var(--panel-2);border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:11px;padding:12px 17px;box-shadow:0 10px 30px rgba(0,0,0,.45);font-size:13px;font-weight:500;animation:slideup .25s ease}
.toast.bad{border-left-color:var(--bad)}
@keyframes slideup{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.empty{padding:40px;text-align:center;color:var(--text-3)}
.spinner{width:22px;height:22px;border:2.5px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite;margin:40px auto}
@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- Inventory module ---------- */
.tiles-6{grid-template-columns:repeat(6,1fr)}
@media(max-width:1100px){.tiles-6{grid-template-columns:repeat(3,1fr)}}
@media(max-width:640px){.tiles-6{grid-template-columns:repeat(2,1fr)}}
.inv-bar{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.chips{display:flex;gap:8px;flex-wrap:wrap;flex:1}
.chip{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:7px 12px;font-size:12.5px;font-weight:500;color:var(--text-2);display:flex;align-items:center;gap:8px;transition:.13s}
.chip:hover{color:#fff}
.chip.on{border-color:var(--brand-line);background:var(--brand-tint);color:#fff}
.chip .n{font-family:var(--mono);font-size:11px;opacity:.7}
.inv-search{display:flex;align-items:center;gap:9px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px 12px;color:var(--text-3);width:260px}
.inv-search svg{stroke:currentColor;flex:none}
.inv-search input{background:none;border:none;color:var(--text);width:100%;font-size:13px;outline:none}
.inv-search input::placeholder{color:var(--text-3)}
.loc{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-2)}
.loc svg{stroke:var(--text-3);flex:none}

.kits{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.kit{background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:hidden;display:flex;flex-direction:column}
.kit-h{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}
.kit-ic{width:40px;height:40px;border-radius:10px;background:var(--canvas);border:1px solid var(--line);display:grid;place-items:center;flex:none}
.kit-ic svg{stroke:var(--brand)}
.kit-nm{font-weight:700;font-size:14px}
.kit-sub{font-size:11px;color:var(--text-3);margin-top:2px}
.kit-items{padding:8px 16px 12px;flex:1}
.kit-row{display:flex;align-items:center;gap:9px;padding:6px 0;font-size:12.5px;border-bottom:1px solid var(--line-soft)}
.kit-row:last-child{border-bottom:none}
.kdot{width:5px;height:5px;border-radius:50%;background:var(--text-3);flex:none}
.kit-foot{padding:11px 16px;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px}

.hist{display:flex;gap:11px;padding:9px 0;border-bottom:1px solid var(--line-soft)}
.hist:last-child{border-bottom:none}
.hdot{width:8px;height:8px;border-radius:50%;margin-top:5px;background:var(--brand);flex:none;box-shadow:0 0 0 4px var(--brand-tint)}
.ht{font-size:12.5px}
.hm{font-size:11px;color:var(--text-3);font-family:var(--mono);margin-top:1px}
.inv-alert{display:flex;align-items:center;gap:9px;background:var(--warn-t);border:1px solid rgba(232,163,61,.25);color:var(--warn);font-weight:600;font-size:12.5px;border-radius:10px;padding:10px 13px;margin-bottom:14px}
.inv-input{width:100%;background:var(--canvas);border:1px solid var(--line);border-radius:9px;padding:10px 12px;color:#fff;font-size:13.5px;outline:none}
.inv-input:focus{border-color:var(--brand-line)}

/* ---------- Crew / user management ---------- */
.matrix th, .matrix td{white-space:nowrap}
.mcell{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;font-size:12px;font-weight:800;font-family:var(--mono)}
.mcell.ok{background:var(--ok-t);color:var(--ok)}
.mcell.warning{background:var(--warn-t);color:var(--warn)}
.mcell.blocked{background:var(--bad-t);color:var(--bad)}
.mcell.mut{background:var(--panel-3);color:var(--text-3)}
.legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--text-3);margin-top:12px}
.legend .mcell{width:20px;height:20px;font-size:11px;margin-left:8px}
.kv-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft)}
.kv-row:last-of-type{border-bottom:none}
.kv-main{font-weight:600;font-size:13px}
.kv-sub{font-size:11px;color:var(--text-3);margin-top:2px}
.kv-right{margin-left:auto;display:flex;align-items:center;gap:8px}
.icon-btn{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;color:var(--text-3);border:1px solid transparent}
.icon-btn:hover{background:var(--panel-2);color:#fff;border-color:var(--line)}
.icon-btn svg{stroke:currentColor;fill:none;stroke-width:2}
.link-add{font-size:11px;color:var(--brand);font-weight:600;font-family:var(--body);letter-spacing:0;text-transform:none}
.link-add:hover{color:var(--brand-2)}
.muted-row{color:var(--text-3);font-size:12.5px;padding:6px 0}
.sec-flex{display:flex;justify-content:space-between;align-items:center}
.add-form{background:var(--canvas);border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:10px;display:flex;flex-direction:column;gap:8px}
.add-form .two{display:grid;grid-template-columns:1fr 1fr;gap:8px}

/* ---------- Jobs + Schedule (Stage 2) ---------- */
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-right:8px}
.seg-btn{padding:7px 13px;font-size:12.5px;font-weight:600;color:var(--text-2);background:var(--panel)}
.seg-btn:hover{color:#fff}
.seg-btn.on{background:var(--brand-tint);color:#fff}
/* kanban */
.kanban{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;align-items:start}
@media(max-width:1100px){.kanban{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.kanban{grid-template-columns:1fr}}
.kcol{background:var(--panel);border:1px solid var(--line);border-radius:12px;min-height:120px}
.kcol-h{padding:11px 13px;border-bottom:1px solid var(--line);font-family:var(--disp);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-2);display:flex;justify-content:space-between;align-items:center}
.kcol-h .kn{font-family:var(--mono);font-size:11px;color:var(--text-3);background:var(--canvas);border-radius:10px;padding:1px 8px}
.kcol-b{padding:10px;display:flex;flex-direction:column;gap:9px}
.kempty{color:var(--text-3);text-align:center;padding:14px;font-size:12px}
.jcard{background:var(--canvas);border:1px solid var(--line);border-radius:10px;padding:11px 12px;cursor:pointer;transition:.13s}
.jcard:hover{border-color:var(--brand-line);transform:translateY(-1px)}
.jcard-bad{border-left:3px solid var(--bad)}
.jc-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.jc-ref{font-size:11px;color:var(--text-3)}
.jc-flag{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;font-family:var(--mono)}
.jc-flag.bad{color:var(--bad)} .jc-flag.warn{color:var(--warn)}
.jc-flag svg{stroke:currentColor;fill:none;stroke-width:2.2}
.jc-name{font-weight:600;font-size:13px;line-height:1.3}
.jc-client{font-size:11.5px;color:var(--text-3);margin-top:2px}
.jc-meta{font-size:11px;color:var(--text-2);margin-top:8px;display:flex;align-items:center;gap:5px}
.jc-meta svg{stroke:var(--text-3);fill:none;stroke-width:1.8}
.jc-foot{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.jc-pill{font-size:10.5px;font-weight:600;background:var(--panel-3);border-radius:6px;padding:2px 7px;color:var(--text-2)}
/* week schedule */
.weekrange{font-size:12.5px;color:var(--text-3);margin-bottom:10px}
.week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;align-items:start}
@media(max-width:900px){.week{grid-template-columns:repeat(7,minmax(110px,1fr));overflow-x:auto}}
.scol{background:var(--panel);border:1px solid var(--line);border-radius:10px;min-height:420px;display:flex;flex-direction:column}
.scol-today{border-color:var(--brand-line)}
.scol-h{padding:8px 10px;border-bottom:1px solid var(--line);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-2);display:flex;justify-content:space-between}
.scol-h span{color:var(--text-3);font-family:var(--mono)}
.scol-b{padding:8px;display:flex;flex-direction:column;gap:7px}
.scard{background:var(--canvas);border:1px solid var(--line);border-radius:8px;padding:8px 9px;cursor:pointer;transition:.13s}
.scard:hover{border-color:var(--brand-line)}
.scard-bad{border-left:3px solid var(--bad)}
.scard-warn{border-left:3px solid var(--warn)}
.sc-time{font-size:11px;color:var(--brand);font-weight:600}
.sc-name{font-size:12px;font-weight:600;line-height:1.25;margin-top:2px}
.sc-meta{font-size:10.5px;color:var(--text-3);margin-top:3px}
.sc-flag{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;font-family:var(--mono);margin-top:5px}
.sc-flag.bad{color:var(--bad)} .sc-flag.warn{color:var(--warn)}
.sc-flag svg{stroke:currentColor;fill:none;stroke-width:2.4}

/* ---------- Safety / SMS (Stage 3) ---------- */
.tiles-5{grid-template-columns:repeat(5,1fr)}
@media(max-width:1100px){.tiles-5{grid-template-columns:repeat(3,1fr)}}
@media(max-width:640px){.tiles-5{grid-template-columns:repeat(2,1fr)}}
.bar-right{display:flex;justify-content:flex-end;gap:8px;margin-bottom:12px}
.gen-cta{display:flex;align-items:center;gap:20px;background:linear-gradient(135deg,var(--brand-tint),transparent);border:1px solid var(--brand-line);border-radius:14px;padding:20px 22px;margin-top:18px}
.gen-t{font-family:var(--disp);font-weight:700;font-size:16px}
.gen-s{font-size:12.5px;color:var(--text-2);margin-top:5px;max-width:560px;line-height:1.5}
.gen-cta .btn{white-space:nowrap}
.chk-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px 14px}
.chk{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-2)}
.chk input{accent-color:var(--brand)}
/* risk bands */
.band{display:inline-block;font-family:var(--mono);font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;white-space:nowrap}
.b-low{background:rgba(76,175,80,.16);color:#7BD389}
.b-med{background:rgba(255,224,58,.16);color:#E8C84D}
.b-high{background:rgba(255,160,0,.16);color:#FFB74D}
.b-ext{background:rgba(229,57,53,.18);color:#FF6F6A}
.b-na{background:var(--panel-3);color:var(--text-3)}
/* risk step cards */
.ra-meta{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.rstep{background:var(--canvas);border:1px solid var(--line);border-radius:11px;padding:13px 14px;margin-bottom:11px}
.rs-h{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.rs-no{width:22px;height:22px;border-radius:6px;background:var(--brand-tint);color:var(--brand);display:grid;place-items:center;font-family:var(--mono);font-size:12px;font-weight:700;flex:none}
.rs-title{font-weight:700;font-size:13.5px}
.rs-body{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:10px}
@media(max-width:560px){.rs-body{grid-template-columns:1fr}}
.rs-l{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin-top:6px;font-weight:700}
.rs-v{font-size:12px;color:var(--text-1);line-height:1.5}
.rs-scores{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-top:1px solid var(--line-soft);padding-top:10px}
.rs-score{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-2)}
.rs-score>span:first-child{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:10px;color:var(--text-3)}
.lc{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;color:#fff;font-family:var(--mono);font-size:12px;padding:3px 5px}
.rs-add{font-size:12px;color:var(--text-2);margin-top:9px;line-height:1.5}
.rs-add .rs-l{display:inline;margin:0}
.rm-details{margin-top:14px;border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.rm-details summary{cursor:pointer;font-size:12.5px;font-weight:600;color:var(--text-2)}
.rmatrix{width:100%;border-collapse:collapse;margin-top:10px;font-family:var(--mono);font-size:10px}
.rmatrix th{color:var(--text-3);font-weight:600;padding:3px;text-align:center;font-size:9px}
.rmatrix td{text-align:center;padding:5px 3px;border-radius:4px;font-weight:700}
/* jsa */
.prog{display:flex;align-items:center;gap:9px}
.prog-bar{width:120px;height:6px;background:var(--panel-3);border-radius:3px;overflow:hidden}
.prog-bar span{display:block;height:100%;background:var(--brand);border-radius:3px}
.jsa-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line-soft);font-size:13px;cursor:pointer}
.jsa-row:last-child{border-bottom:none}
.jsa-row input{accent-color:var(--brand);width:16px;height:16px}
textarea.inv-input{resize:vertical;font-family:var(--body);line-height:1.5}
.drawer-h-wide+.drawer-b,.drawer-h-wide~*{}

/* ---------- Training ---------- */
.mcell.info{background:rgba(77,148,226,.16);color:#7FB2EC}

/* ---------- My Jobs / field ---------- */
.mj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.mjcard{background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:15px 16px;cursor:pointer;transition:.13s}
.mjcard:hover{border-color:var(--brand-line);transform:translateY(-1px)}
.mjcard-bad{border-left:3px solid var(--bad)}
.mj-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}
.mj-name{font-weight:700;font-size:15px;line-height:1.25}
.mj-meta{margin:11px 0;display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--text-2)}
.mj-meta>div{display:flex;align-items:center;gap:7px}
.mj-meta svg{stroke:var(--text-3);fill:none;stroke-width:1.8}
.mj-foot{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}

/* ====================== STAGE 5 — commercial layer ====================== */
/* login: sign-up */
.login-switch{margin-top:16px;font-size:12.5px;color:var(--text-3);text-align:center}
.login-switch a{cursor:pointer;color:var(--brand-2);font-weight:600}
.su-plans{display:flex;flex-direction:column;gap:8px;margin:4px 0 10px}
.su-plan{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;cursor:pointer;background:var(--canvas)}
.su-plan.on{border-color:var(--brand);background:var(--brand-tint)}
.su-plan .nm{font-weight:700;font-size:13px}.su-plan .pr{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--text-2)}
.su-plan .bl{font-size:11px;color:var(--text-3);display:block}
.su-period{display:flex;gap:6px;margin-bottom:6px}
.su-per{flex:1;border:1px solid var(--line);border-radius:8px;padding:7px;font-size:12px;color:var(--text-2);background:var(--canvas)}
.su-per.on{border-color:var(--brand);color:#fff;background:var(--brand-tint)}

/* notification bell + panel */
.bell{position:relative;width:36px;height:36px;border-radius:9px;border:1px solid var(--line);background:var(--panel);color:var(--text-2);display:grid;place-items:center}
.bell:hover{background:var(--panel-2);color:var(--text)}
.bell-count{position:absolute;top:-5px;right:-5px;background:var(--bad);color:#fff;font-family:var(--mono);font-size:10px;font-weight:700;border-radius:10px;padding:1px 5px;min-width:17px;text-align:center}
.notif-panel{position:fixed;top:62px;right:18px;width:360px;max-width:92vw;max-height:70vh;overflow-y:auto;background:var(--panel-2);border:1px solid var(--line);border-radius:14px;box-shadow:0 20px 50px rgba(0,0,0,.5);z-index:60;opacity:0;transform:translateY(-8px);pointer-events:none;transition:.16s}
.notif-panel.on{opacity:1;transform:translateY(0);pointer-events:auto}
.notif-h{display:flex;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line);font-weight:700;font-size:13px}
.notif-h .mark{margin-left:auto;font-size:12px;color:var(--brand-2);cursor:pointer;font-weight:600}
.notif-item{display:flex;gap:11px;padding:12px 15px;border-bottom:1px solid var(--line-soft);cursor:pointer}
.notif-item:hover{background:var(--panel)}
.notif-item.unread{background:rgba(232,104,40,.05)}
.notif-dot{width:8px;height:8px;border-radius:50%;flex:none;margin-top:5px}
.nd-info{background:var(--info)}.nd-warning{background:var(--warn)}.nd-critical{background:var(--bad)}
.notif-tt{font-size:12.5px;font-weight:600;line-height:1.35}
.notif-bd{font-size:11.5px;color:var(--text-3);margin-top:2px;line-height:1.4}
.notif-tm{font-size:10.5px;color:var(--text-3);margin-top:3px;font-family:var(--mono)}
.notif-empty{padding:30px 15px;text-align:center;color:var(--text-3);font-size:12.5px}

/* settings */
.set-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-bottom:22px}
.plan-card{border:1px solid var(--line);border-radius:13px;padding:18px;background:var(--panel);position:relative}
.plan-card.current{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand-line)}
.plan-card .pc-name{font-family:var(--disp);font-weight:800;font-size:16px}
.plan-card .pc-price{font-family:var(--mono);font-size:22px;margin:8px 0 2px}.plan-card .pc-price small{font-size:11px;color:var(--text-3);font-weight:400}
.plan-card .pc-blurb{font-size:12px;color:var(--text-3);min-height:32px}
.plan-card ul{list-style:none;margin:12px 0;font-size:12px;color:var(--text-2)}
.plan-card li{padding:3px 0;display:flex;gap:7px;align-items:center}.plan-card li svg{color:var(--ok);flex:none}
.plan-card li.off{color:var(--text-3)}.plan-card li.off svg{color:var(--text-3)}
.pc-badge{position:absolute;top:14px;right:14px;font-size:10px;font-family:var(--mono);background:var(--brand);color:#fff;border-radius:20px;padding:2px 9px}
.usage-bar{height:7px;border-radius:5px;background:var(--canvas);overflow:hidden;margin-top:6px}
.usage-bar i{display:block;height:100%;background:var(--brand)}
.usage-bar i.over{background:var(--bad)}
.kvtable{width:100%;border-collapse:collapse}.kvtable td{padding:8px 4px;border-bottom:1px solid var(--line-soft);font-size:13px}.kvtable td:first-child{color:var(--text-3);width:42%}
.code-box{background:var(--canvas);border:1px solid var(--line);border-radius:9px;padding:11px 13px;font-family:var(--mono);font-size:12px;word-break:break-all;color:var(--brand-2);display:flex;align-items:center;gap:10px}
.code-box button{margin-left:auto;color:var(--text-2);flex:none}
.feature-lock{border:1px dashed var(--line);border-radius:12px;padding:26px;text-align:center;color:var(--text-3)}
.feature-lock b{color:var(--text);display:block;margin-bottom:6px;font-size:14px}
.swatch{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);flex:none}
.conn-row{display:flex;align-items:center;gap:13px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--panel);margin-bottom:10px}
.conn-ic{width:38px;height:38px;border-radius:9px;background:var(--brand-tint);color:var(--brand);display:grid;place-items:center;flex:none}
.toggle{position:relative;width:40px;height:22px;border-radius:20px;background:var(--panel-3);cursor:pointer;flex:none;transition:.15s}
.toggle.on{background:var(--brand)}
.toggle i{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.15s}
.toggle.on i{left:20px}
.bar-chart{display:flex;align-items:flex-end;gap:8px;height:140px;padding:10px 0}
.bar-chart .bc{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;justify-content:flex-end;height:100%}
.bar-chart .bc i{width:100%;max-width:34px;background:var(--brand);border-radius:5px 5px 0 0;min-height:3px}
.bar-chart .bc span{font-size:10px;color:var(--text-3);font-family:var(--mono)}
.bar-chart .bc b{font-size:11px;color:var(--text-2);font-family:var(--mono)}
.donut-row{display:flex;gap:10px;flex-wrap:wrap}
.stat-pill{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:9px;padding:8px 12px;font-size:12.5px}
.stat-pill b{font-family:var(--mono)}
.an-donut{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.an-donut svg{flex:none}
.an-legend{display:flex;flex-direction:column;gap:7px}
.an-leg{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-2)}
.an-leg .sw{width:11px;height:11px;border-radius:3px;flex:none}
.an-leg b{font-family:var(--mono);color:var(--text);margin-left:2px}
.an-foot{margin-top:12px;font-size:11.5px;color:var(--text-3);line-height:1.5}

/* ====================== full-screen views (wizard + RA editor) ====================== */
.fsv{position:fixed;inset:0;background:var(--canvas);z-index:80;overflow-y:auto;display:none}
.fsv.on{display:block}
.fsv-bar{position:sticky;top:0;z-index:6;background:rgba(11,13,16,.93);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:15px 28px}
.fsv-bar .fsv-title{font-family:var(--disp);font-weight:700;font-size:18px}
.fsv-bar .fsv-sub{font-size:12.5px;color:var(--text-3);margin-left:4px}
.fsv-bar .right{margin-left:auto;display:flex;gap:9px;align-items:center}
.fsv-body{max-width:min(96vw,2040px);margin:0 auto;padding:26px 44px 90px}
.fsv-body.wide{max-width:none}

/* stepped wizard tile bar (AVCRM-style) */
.wiz-steps{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin:6px 0 26px}
.wiz-step{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;width:128px;height:96px;border-radius:13px;background:var(--panel);border:1px solid var(--line);cursor:pointer;color:var(--text-2);font-size:13px;font-weight:600;transition:.14s;position:relative}
.wiz-step:hover{background:var(--panel-2);color:var(--text)}
.wiz-step.on{background:var(--brand);color:#fff;border-color:var(--brand);box-shadow:0 6px 18px rgba(232,104,40,.3)}
.wiz-step.on .ic{color:#fff}
.wiz-step.done:not(.on){border-color:rgba(61,190,120,.4)}
.wiz-step.done:not(.on):after{content:'✓';position:absolute;top:7px;right:9px;color:var(--ok);font-size:12px;font-weight:700}
.wiz-step .ic{color:var(--text-3)}
.wiz-foot{display:flex;gap:10px;justify-content:space-between;align-items:center;margin-top:26px;padding-top:20px;border-top:1px solid var(--line)}
.wiz-foot .l,.wiz-foot .r{display:flex;gap:10px}

/* AVCRM-style right-aligned label form */
.fs-form .frow{display:grid;grid-template-columns:230px 1fr;gap:18px;align-items:start;padding:11px 0;border-bottom:1px solid var(--line-soft)}
.fs-form{max-width:920px;margin:0 auto}
.fs-form .frow:last-child{border-bottom:none}
.fs-form .frow > label{text-align:right;color:var(--text-2);font-size:13px;font-weight:600;padding-top:9px}
.fs-form .frow .fctl input,.fs-form .frow .fctl select,.fs-form .frow .fctl textarea{width:100%}
.fs-form .frow .hint{font-size:11.5px;color:var(--text-3);margin-top:5px}
.fs-form .frow.two .fctl{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:760px){.fs-form .frow{grid-template-columns:1fr}.fs-form .frow > label{text-align:left;padding-top:0}}
/* v1.96: on wide screens the job wizard's Details form flows into TWO columns of
   fields so it uses the screen instead of a single narrow column pinned left.
   Rows that need the full width (schedule pair, notes/textarea rows) span both.
   Label column narrows a touch so paired inputs stay a usable width. */
@media(min-width:1180px){
  .fs-form.fs-form-2col{max-width:1280px;display:grid;grid-template-columns:1fr 1fr;column-gap:44px;row-gap:0;align-items:start}
  .fs-form.fs-form-2col .frow{grid-template-columns:180px 1fr}
  .fs-form.fs-form-2col .frow.span2{grid-column:1 / -1}
  .fs-form.fs-form-2col .frow:has(textarea){grid-column:1 / -1}
  /* keep the two-up bottom borders visually aligned across columns */
  .fs-form.fs-form-2col .frow{border-bottom:1px solid var(--line-soft)}
}

.fs-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px 26px;margin-bottom:16px}
.fs-card h3{font-family:var(--disp);font-size:15px;margin-bottom:4px}
.fs-card .fs-sub{font-size:12.5px;color:var(--text-3);margin-bottom:16px}

/* signature pad */
.sigpad-wrap{border:2px dashed var(--line);border-radius:12px;background:#f7f8e8;position:relative;overflow:hidden}
.sigpad{display:block;width:100%;height:200px;touch-action:none;cursor:crosshair}
.sigpad-hint{position:absolute;bottom:10px;right:14px;font-size:12px;color:#9a9a6a;pointer-events:none}
.sigpad-clear{position:absolute;top:10px;right:12px}

/* RA full editor — editable step cards */
.rae-step{background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:0;margin-bottom:14px;overflow:hidden}
.rae-head{display:flex;align-items:center;gap:12px;padding:13px 16px;background:var(--panel-2);border-bottom:1px solid var(--line)}
.rae-no{width:26px;height:26px;border-radius:7px;background:var(--brand);color:#fff;display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:12px;flex:none}
.rae-head input.rae-title{flex:1;background:transparent;border:none;color:var(--text);font-weight:700;font-size:14px;font-family:var(--disp)}
.rae-head input.rae-title:focus{outline:none;background:var(--canvas);border-radius:6px;padding:4px 8px}
.rae-grid{display:grid;grid-template-columns:1fr 1fr;gap:0}
.rae-cell{padding:14px 16px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.rae-cell:nth-child(2n){border-right:none}
.rae-cell label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);margin-bottom:6px;font-weight:600}
.rae-cell textarea{width:100%;min-height:62px;background:var(--canvas);border:1px solid var(--line);border-radius:8px;padding:9px 11px;color:var(--text);font-family:inherit;font-size:13px;line-height:1.5;resize:vertical}
.rae-cell textarea:focus{outline:none;border-color:var(--brand-line)}
.rae-scores{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:13px 16px;background:var(--panel-2)}
.rae-score{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-2)}
.rae-score select.lc{background:var(--canvas);border:1px solid var(--line);border-radius:7px;color:var(--text);padding:5px 7px;font-family:var(--mono)}
.rae-score b{color:var(--text-3);font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.rae-del{margin-left:auto}
.rae-toolbar{display:flex;gap:10px;align-items:center;margin:18px 0}

/* ====================== Job Area map + airspace calculator ====================== */
.ja-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.ja-typeset{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.ja-type{background:var(--panel);color:var(--text-2);border:none;padding:7px 13px;font-size:12px;cursor:pointer;border-right:1px solid var(--line)}
.ja-type:last-child{border-right:none}
.ja-type.on{background:var(--brand);color:#fff}
.jobmap{width:100%;height:440px;border-radius:12px;border:1px solid var(--line);background:var(--panel-2);overflow:hidden}
.ja-maperr{display:grid;place-items:center;height:100%;color:var(--bad);font-size:13px;padding:24px;text-align:center}
.ja-draw{margin-top:12px;display:flex;flex-direction:column;gap:10px}
.ja-draw-l{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--text-2)}
.ja-templates{display:flex;gap:8px;flex-wrap:wrap}
.ja-tmpl{display:flex;align-items:center;gap:7px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:7px 12px;font-size:12.5px;color:var(--text-2);cursor:pointer}
.ja-tmpl.on{border-color:var(--c);box-shadow:0 0 0 1px var(--c);color:var(--text)}
.ja-tmpl .sw,.sw{width:13px;height:13px;border-radius:4px;display:inline-block;flex:none}
.ja-shapes{display:flex;gap:8px;flex-wrap:wrap}
.ja-nokey{border:1px dashed var(--line);border-radius:12px;padding:22px}
.air-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:14px}
.air-cell{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:11px 13px}
.air-cell span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin-bottom:4px}
.air-cell b{font-size:14px}
.air-class{padding:11px 14px;border-radius:10px;font-weight:600;font-size:13px;margin-bottom:12px}
.air-class.ok{background:var(--ok-t,rgba(61,190,120,.12));color:var(--ok);border:1px solid rgba(61,190,120,.3)}
.air-class.bad{background:var(--bad-t,rgba(226,86,77,.12));color:var(--bad);border:1px solid rgba(226,86,77,.3)}
.air-aero{font-size:13px;color:var(--text-2);margin-bottom:10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.air-note{font-size:12px;color:var(--text-3);display:flex;gap:8px;align-items:flex-start;padding:5px 0}
.air-note svg{color:var(--warn);flex:none;margin-top:2px}

/* airspace result list + NOTAMs */
.sec-t{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);font-weight:700;margin:14px 0 8px}
.asp-list{display:flex;flex-direction:column;gap:7px;margin-bottom:10px}
.asp-item{border:1px solid var(--line);border-left-width:3px;border-radius:8px;padding:9px 12px;background:var(--panel)}
.asp-item.ctrl{border-left-color:var(--bad)}
.asp-item.restr{border-left-color:var(--warn)}
.asp-item:not(.ctrl):not(.restr){border-left-color:var(--ok)}
.asp-nm{font-weight:600;font-size:13px}
.asp-meta{font-size:11.5px;color:var(--text-3);font-family:var(--mono);margin-top:2px}
.air-class.warn{background:rgba(232,160,60,.12);color:var(--warn);border:1px solid rgba(232,160,60,.3)}
.notam-item{border:1px solid var(--line);border-radius:8px;padding:9px 12px;margin-bottom:7px;background:var(--panel)}
.asp-item.above{border-left-color:var(--text-3);opacity:.62}
.asp-item.above .asp-nm{font-weight:500}

/* ===== Crew onboarding self-service page ===== */
#onboard-root{position:fixed;inset:0;overflow:auto;background:var(--bg);z-index:100}
.onb-wrap{min-height:100%;display:flex;justify-content:center;padding:40px 18px}
.onb-card{width:100%;max-width:680px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:30px 30px 24px;height:fit-content;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.onb-head .onb-org{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent,#E86828);font-weight:700;margin-bottom:6px}
.onb-head h2{font-size:24px;margin:0 0 6px}
.onb-head p{color:var(--text-3);font-size:13.5px;margin:0 0 18px;line-height:1.5}
.onb-done{background:rgba(61,190,120,.12);border:1px solid rgba(61,190,120,.3);color:var(--ok);border-radius:10px;padding:11px 14px;font-size:13px;margin-bottom:16px;display:flex;gap:8px;align-items:center}
.onb-suggest{display:flex;flex-wrap:wrap;gap:7px;align-items:center;font-size:12.5px;color:var(--text-3);margin-bottom:16px}
.onb-suggest .chip{background:var(--panel-2);border:1px solid var(--line);border-radius:20px;padding:5px 12px;font-size:12px;color:var(--text-2);cursor:pointer}
.onb-suggest .chip:hover{border-color:var(--accent,#E86828);color:var(--text)}
.onb-cred{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:10px;background:var(--panel-2)}
.onb-cred-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.onb-cred-meta{font-size:12px;color:var(--text-3);margin-top:3px}
.onb-docs{display:flex;flex-wrap:wrap;gap:6px;margin:9px 0}
.onb-doc{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;background:rgba(61,190,120,.1);color:var(--ok);padding:3px 9px;border-radius:6px}
.onb-doc svg{color:var(--ok)}
.onb-nodoc{font-size:11.5px;color:var(--text-3)}
.onb-upl{margin-top:2px}
.onb-empty{font-size:13px;color:var(--text-3);padding:14px;border:1px dashed var(--line);border-radius:10px;text-align:center}
.onb-addrow{margin:10px 0}
.onb-newform{border:1px solid var(--accent,#E86828);border-radius:12px;padding:16px;margin-bottom:12px;background:var(--panel-2)}
.onb-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.onb-grid label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--text-3)}
.onb-grid-foot{display:flex;gap:8px;margin-top:14px}
.onb-foot{margin-top:18px}
.onb-foot .btn{width:100%}
.onb-fine{text-align:center;font-size:11px;color:var(--text-3);margin-top:14px}
@media(max-width:560px){.onb-grid{grid-template-columns:1fr}}

/* ===== Profile compliance view ===== */
.compl-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 14px}
.compl-cell{background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:11px 13px}
.compl-n{font-size:22px;font-weight:700;font-family:var(--mono)}
.compl-l{font-size:11px;color:var(--text-3);margin-top:2px}
.compl-l .bad{color:var(--bad)} .compl-l .warn{color:var(--warn)}
.onb-status{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.np-invite-box{background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:12px;margin-top:12px}
.kv-stack{flex-direction:column;align-items:stretch;gap:0}
.kv-line{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.cred-docs{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.cred-doc{display:inline-flex;align-items:center;gap:5px;font-size:11px;background:rgba(61,190,120,.1);color:var(--ok);padding:3px 8px;border-radius:6px;cursor:pointer}
.cred-doc svg{color:var(--ok)}
.cred-doc-x{opacity:.6;cursor:pointer;display:inline-flex} .cred-doc-x:hover{opacity:1}
.cred-upl{font-size:11px;color:var(--brand);border:1px dashed var(--line);border-radius:6px;padding:3px 9px;cursor:pointer}
.cred-upl:hover{border-color:var(--brand)}

/* ===== Onboarding sections, agreements & signature pad ===== */
.onb-sec{border-top:1px solid var(--line);padding-top:18px;margin-top:18px}
.onb-sec:first-of-type{border-top:none;margin-top:8px;padding-top:0}
.onb-sec-h{font-size:13px;font-weight:700;color:var(--accent,#E86828);text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px}
.onb-agree{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:10px;background:var(--panel-2)}
.onb-agree.done{border-color:rgba(61,190,120,.4)}
.onb-agree-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}
.onb-agree-body{margin:6px 0}
.onb-agree-body summary{cursor:pointer;font-size:12.5px;color:var(--accent,#E86828)}
.onb-agree-text{font-size:12px;color:var(--text-2);line-height:1.6;max-height:240px;overflow:auto;margin-top:8px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
.onb-agree-dl{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--accent,#E86828);margin:6px 0;text-decoration:none}
.onb-agree-meta{font-size:11.5px;color:var(--text-3);margin-top:6px}
.onb-agree-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.onb-sigbox{margin-top:12px;border-top:1px dashed var(--line);padding-top:12px}
.onb-sig-l{font-size:12px;color:var(--text-3);margin-bottom:8px}
.onb-canvas{width:100%;max-width:520px;height:150px;border:1px solid var(--line);border-radius:8px;background:#fff;touch-action:none;display:block}
.onb-sig-row{display:flex;gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap}
.onb-sig-row .inv-input{flex:1;min-width:160px}
.onb-sig-fine{font-size:11px;color:var(--text-3);margin-top:8px}

/* ===== Full-screen crew profile card ===== */
.cp-card{max-width:min(96vw,2040px);margin:0 auto;padding:8px 4px 40px}
.cp-hero{display:flex;gap:20px;align-items:flex-start;padding:8px 0 20px;border-bottom:1px solid var(--line);margin-bottom:18px;flex-wrap:wrap}
.cp-photo{position:relative;width:104px;height:104px;flex:none}
.cp-photo img{width:104px;height:104px;border-radius:16px;object-fit:cover;border:1px solid var(--line)}
.cp-photo-fallback{width:104px;height:104px;border-radius:16px;background:linear-gradient(135deg,var(--accent,#E86828),#b8501c);color:#fff;display:flex;align-items:center;justify-content:center;font-size:34px;font-weight:700;letter-spacing:1px}
.cp-photo-edit{position:absolute;right:-6px;bottom:-6px;width:30px;height:30px;border-radius:50%;background:var(--panel);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-2);box-shadow:0 2px 6px rgba(0,0,0,.3)}
.cp-photo-edit:hover{color:var(--accent,#E86828)}
.cp-hero-main{flex:1;min-width:200px}
.cp-hero-main h2{margin:0 0 4px;font-size:24px}
.cp-hero-sub{color:var(--text-3);font-size:13px;margin-bottom:8px}
.cp-hero-pills{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.cp-role{display:flex;align-items:center;gap:8px;max-width:320px}
.cp-role label{font-size:12px;color:var(--text-3)}
.cp-hero-stats{display:flex;gap:10px}
.cp-stat{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:10px 14px;text-align:center;min-width:78px}
.cp-stat-n{font-size:18px;font-weight:700}
.cp-stat-l{font-size:10.5px;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;margin-top:2px}
.cp-cols{display:grid;grid-template-columns:1fr 1fr;gap:26px}
@media(max-width:820px){.cp-cols{grid-template-columns:1fr}}
.cp-sec{margin-bottom:22px}
.cp-sec-h{font-size:13px;font-weight:700;color:var(--accent,#E86828);display:flex;align-items:center;gap:7px;margin-bottom:12px;text-transform:uppercase;letter-spacing:.04em}

/* flight-time panel */
.fp-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.fp-tot{display:flex;flex-direction:column}
.fp-tot-n{font-size:26px;font-weight:700;line-height:1}
.fp-tot-l{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em}
.fp-split{display:flex;gap:14px;font-size:12px;color:var(--text-2)}
.fp-split span{display:inline-flex;align-items:center;gap:4px}
.fp-head .btn{margin-left:auto}
.fp-cats{display:flex;flex-direction:column;gap:9px;margin-bottom:8px}
.fp-cat{display:grid;grid-template-columns:150px 1fr auto;gap:10px;align-items:center}
.fp-cat-l{font-size:12.5px;color:var(--text-2)}
.fp-cat.has .fp-cat-l{color:var(--text-1);font-weight:600}
.fp-cat-bars{display:flex;height:10px;border-radius:6px;overflow:hidden;background:var(--panel-2)}
.fp-bar.pilot{background:var(--accent,#E86828)}
.fp-bar.spotter{background:#3DA0F0}
.fp-bar-empty{background:transparent}
.fp-cat-n{font-size:12px;font-weight:600;white-space:nowrap}
.fp-cat-sub{color:var(--text-3);font-weight:400;font-size:11px}
.fp-entries{margin-top:10px}
.fp-entries-h{font-size:12px;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}

/* create-person full-screen card */
.np-card{max-width:620px;margin:0 auto;padding:8px 4px}
.np-intro{color:var(--text-2);font-size:13.5px;line-height:1.6;margin-bottom:20px}
.np-grid{display:flex;flex-direction:column;gap:14px;margin-bottom:6px}

/* roster avatars */
.rost-name{display:flex;align-items:center;gap:10px}
.rost-av{width:34px;height:34px;border-radius:9px;object-fit:cover;flex:none}
.rost-av-f{background:linear-gradient(135deg,var(--accent,#E86828),#b8501c);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}

/* onboarding photo section */
.onb-photo-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.onb-photo-prev{width:88px;height:88px;border-radius:14px;overflow:hidden;background:var(--panel-2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;flex:none}
.onb-photo-prev img{width:88px;height:88px;object-fit:cover}
.onb-photo-ph{color:var(--text-3)}
.onb-photo-side{flex:1;min-width:200px}
.onb-photo-side p{font-size:12.5px;color:var(--text-3);margin:0 0 10px}
.onb-photo-ok{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ok,#3DBE78);margin-left:10px}

/* ===== Sign-off flight-time block ===== */
.signoff-flight{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:16px;background:var(--panel-2)}
.signoff-flight-h{font-size:12.5px;color:var(--text-2);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.opcat-tag{margin-left:auto;font-size:11px;background:var(--accent,#E86828);color:#fff;border-radius:20px;padding:2px 10px;font-weight:600}
.signoff-flight-rows{display:flex;flex-direction:column;gap:8px}
.sf-row{display:flex;align-items:center;gap:12px}
.sf-who{font-size:13px;color:var(--text-2);display:flex;align-items:center;gap:6px;flex:1}
.sf-min{display:flex;align-items:center;gap:6px}
.sf-min .inv-input{width:90px;text-align:right}
.sf-unit{font-size:12px;color:var(--text-3)}
.sf-hint{font-size:11px;color:var(--text-3);margin-top:8px}

/* ===== Schedule: toolbar, multi-view, gantt ===== */
.sched-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.sched-nav{display:flex;gap:4px;margin-left:8px}
.week-month{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.week-month .scol{min-height:auto}
.sc-opcat{font-size:9.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--accent,#E86828);font-weight:700;margin-top:3px}
.adot{display:inline-block;width:8px;height:8px;border-radius:50%;vertical-align:middle;margin-left:2px}
.adot.ok,.adot.acc{background:var(--ok,#3DBE78)}
.adot.warn,.adot.pend{background:var(--warn,#E8A33C)}
.adot.bad,.adot.dec{background:var(--bad,#E2564D)}

/* gantt (crew + equipment rows × day cells) */
.gantt{border:1px solid var(--line);border-radius:12px;overflow:auto;background:var(--panel)}
.gantt-head,.gantt-row{display:grid;grid-template-columns:170px repeat(7,minmax(60px,1fr));align-items:stretch}
.gantt-month .gantt-head,.gantt-month .gantt-row{grid-template-columns:150px repeat(31,minmax(0,1fr))}
.gcell-m{min-height:34px;padding:3px 2px;flex-flow:row wrap;gap:2px;justify-content:center;align-content:flex-start}
.eqpip{width:8px;height:8px;border-radius:50%;flex:none;cursor:pointer}
.eqpip.acc{background:var(--ok,#3DBE78)}
.eqpip.pend{background:var(--warn,#E8A33C)}
.eqpip.dec{background:var(--bad,#E2564D)}
.eqpip.gout{background:var(--text-3);opacity:.55}
.eqpip:focus{outline:2px solid var(--accent,#E86828);outline-offset:1px}
.gantt-head{position:sticky;top:0;background:var(--panel-2);border-bottom:1px solid var(--line);z-index:1}
.gantt-day{padding:8px 4px;text-align:center;font-size:11px;color:var(--text-3);border-left:1px solid var(--line);display:flex;flex-direction:column;gap:1px}
.gantt-day.on{color:var(--accent,#E86828);font-weight:700}
.gantt-day span{font-size:13px;color:var(--text-1)}
.gantt-row{border-bottom:1px solid var(--line)}
.gantt-row:last-child{border-bottom:none}
.gantt-name{display:flex;align-items:center;gap:8px;padding:8px 10px;border-right:1px solid var(--line);min-width:0}
.gname-main{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gname-sub{font-size:10.5px;color:var(--text-3);text-transform:capitalize}
.gantt-cell{border-left:1px solid var(--line);padding:4px;min-height:42px;display:flex;flex-direction:column;gap:3px;align-items:stretch}
.gantt-cell.on{background:rgba(232,104,40,.04)}
.gantt-cell.isoff{background:repeating-linear-gradient(45deg,transparent,transparent 5px,rgba(226,86,77,.07) 5px,rgba(226,86,77,.07) 10px)}
.gdot{color:var(--line);text-align:center;font-size:11px}
.eq-ic{color:var(--text-3);display:flex}
.gcell-job{font-size:10px;font-weight:700;border-radius:5px;padding:2px 4px;cursor:pointer;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
.gcell-job.acc{background:var(--ok,#3DBE78)}
.gcell-job.pend{background:var(--warn,#E8A33C)}
.gcell-job.dec{background:var(--bad,#E2564D)}
.gcell-off{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--bad,#E2564D);border-radius:5px;padding:2px 4px;text-align:center}
.gantt-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--text-3);margin-top:12px}
.gantt-legend .adot{margin:0 2px}

/* ===== Public assignment page ===== */
.assign-card .assign-job{border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:18px;background:var(--panel-2)}
.assign-ref{font-family:var(--mono);font-size:12px;color:var(--accent,#E86828);font-weight:700}
.assign-name{font-size:18px;font-weight:700;margin:2px 0 10px}
.assign-meta{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--text-2);margin-top:5px}
.assign-actions{display:flex;gap:10px}
.assign-actions .btn{flex:1;justify-content:center}
.assign-decline{display:flex;gap:8px;margin-top:12px}
.assign-decline .inv-input{flex:1}
.assign-done{display:flex;align-items:center;gap:8px;border-radius:10px;padding:12px 14px;margin-bottom:14px;font-size:13.5px}
.assign-done.accepted{background:var(--ok-t,rgba(61,190,120,.12));color:var(--ok,#3DBE78)}
.assign-done.declined{background:var(--bad-t,rgba(226,86,77,.12));color:var(--bad,#E2564D)}

/* ===== Feasibility ("Is it Legal?") wizard step ===== */
.feas-list{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.feas-row{display:flex;align-items:center;gap:14px;padding:11px 14px;border-bottom:1px solid var(--line);background:var(--panel)}
.feas-row:last-child{border-bottom:none}
.feas-row.is-yes{background:rgba(226,86,77,.06)}
.feas-q{flex:1;font-size:13.5px;color:var(--text-1);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.feas-cat{font-size:10px;text-transform:uppercase;letter-spacing:.03em;background:var(--accent,#E86828);color:#fff;border-radius:20px;padding:2px 8px;font-weight:700}
.feas-toggle{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;flex:none}
.feas-btn{background:var(--panel-2);border:none;color:var(--text-2);font-size:12.5px;font-weight:600;padding:6px 16px;cursor:pointer}
.feas-btn+.feas-btn{border-left:1px solid var(--line)}
.feas-btn.on-no{background:var(--ok,#3DBE78);color:#fff}
.feas-btn.on-yes{background:var(--bad,#E2564D);color:#fff}
.feas-auth{margin-top:6px}
.feas-auth.hidden{display:none}

/* ===== Authorisations register ===== */
.auth-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:12px;background:var(--panel)}
.auth-card.is-expired{border-color:rgba(226,86,77,.35)}
.auth-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:6px}
.auth-kind{font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:var(--accent,#E86828);margin-right:8px}
.auth-title{font-size:15px;font-weight:600}
.auth-right{display:flex;align-items:center;gap:6px;flex:none}
.auth-meta{font-size:12px;color:var(--text-3);margin-bottom:8px}
.auth-cats{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.auth-cat{font-size:11px;background:var(--panel-2);border:1px solid var(--line);border-radius:20px;padding:2px 10px;color:var(--text-2)}
.auth-cond{font-size:12.5px;color:var(--text-2);line-height:1.5;border-top:1px solid var(--line);padding-top:8px}

/* ===== Tier 2/3: EVLOS register, parachutes, qualifications ===== */
.chk-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px}
.chk-grid .chk{font-size:12.5px;color:var(--text-2)}

/* ===== Date/time inputs: visible calendar picker on the dark theme ===== */
input[type="date"], input[type="datetime-local"], input[type="time"], input[type="month"] {
  color-scheme: dark;                 /* native picker + icon render for dark UI */
  cursor: pointer;
  position: relative;
}
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="datetime-local"]::-webkit-calendar-picker-indicator,
input[type="time"]::-webkit-calendar-picker-indicator,
input[type="month"]::-webkit-calendar-picker-indicator {
  filter: invert(0.7) sepia(1) saturate(4) hue-rotate(340deg);  /* brand-orange tint */
  opacity: 0.9;
  cursor: pointer;
  padding: 2px;
}
input[type="date"]::-webkit-calendar-picker-indicator:hover,
input[type="datetime-local"]::-webkit-calendar-picker-indicator:hover {
  opacity: 1;
}

/* ===== Clickable gate-fix reasons + drawer header actions ===== */
.reason-fix{cursor:pointer;transition:background .12s,border-color .12s}
.reason-fix:hover{background:var(--panel-2);border-color:var(--accent)}
.reason-fix .reason-go{display:flex;align-items:center;color:var(--text-3);margin-left:6px}
.reason-fix:hover .reason-go{color:var(--accent)}
.rd-fix{font-size:11.5px;color:var(--accent);margin-top:4px;display:flex;align-items:center;gap:5px;opacity:.9}
.drawer-h-actions{display:flex;gap:8px;margin-top:10px}

/* ===== JSA item cards: check/not-applicable pills + comment + photo ===== */
.jsa-head-row{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.jsa-count{font-size:12.5px;color:var(--text-3);font-family:var(--mono)}
.jsa-list{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
.jsa-item{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--panel)}
.jsa-item-head{display:flex;align-items:center;gap:14px;justify-content:space-between}
.jsa-item-q{flex:1;font-size:13.5px;color:var(--text-1);font-weight:500}
.jsa-toggle{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;flex:none}
.jsa-btn{background:var(--panel-2);border:none;color:var(--text-2);font-size:12.5px;font-weight:600;padding:7px 14px;cursor:pointer;white-space:nowrap}
.jsa-btn+.jsa-btn{border-left:1px solid var(--line)}
.jsa-btn.on-yes{background:var(--ok,#3DBE78);color:#fff}
.jsa-btn.on-no{background:var(--panel-3);color:var(--text-2)}
.jsa-item-body{display:flex;align-items:center;gap:10px;margin-top:10px}
.jsa-note{flex:1}
.jsa-photo-add{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2);border:1px dashed var(--line);border-radius:9px;padding:8px 12px;cursor:pointer;white-space:nowrap}
.jsa-photo-add:hover{border-color:var(--accent);color:var(--accent)}
.jsa-photo{position:relative;flex:none}
.jsa-photo img{width:48px;height:48px;border-radius:9px;object-fit:cover;display:block;background:var(--panel-2)}
.jsa-photo-x{position:absolute;top:-7px;right:-7px;background:var(--bad);color:#fff;border:none;width:20px;height:20px;border-radius:10px;font-weight:800;cursor:pointer;line-height:1}
@media(max-width:640px){.jsa-item-head{flex-direction:column;align-items:flex-start;gap:8px}.jsa-toggle{width:100%}.jsa-btn{flex:1}}

/* ===== Depots ===== */
.depot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px}
.depot-card{border:1px solid var(--line);border-radius:12px;padding:15px 16px;background:var(--panel)}
.depot-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}
.depot-name{font-size:15.5px;font-weight:700}
.depot-addr{font-size:12.5px;color:var(--text-3);margin-top:2px}
.depot-actions{display:flex;gap:6px;flex:none}
.depot-meta{font-size:12.5px;color:var(--text-2);line-height:1.6;margin-bottom:10px}
.depot-access{display:block;color:var(--text-3);font-size:12px;margin-top:4px;background:var(--panel-2);border-radius:8px;padding:6px 9px}
.depot-counts{display:flex;align-items:center;gap:14px;font-size:12px;color:var(--text-3);border-top:1px solid var(--line);padding-top:10px}
.depot-counts span{font-family:var(--mono)}
.depot-counts button{margin-left:auto}
.dep-assign{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
@media(max-width:900px){.dep-assign{grid-template-columns:1fr}}
.dep-toggle{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-2);padding:5px 0;cursor:pointer}
.dep-toggle input{flex:none}

/* ===== Credential approval ===== */
.cred-pending{background:rgba(232,163,60,.06);border-radius:8px}
.cred-review{display:flex;gap:8px;margin:6px 0 2px}
.cred-evi{color:var(--accent);cursor:pointer;display:inline-flex;align-items:center;gap:3px}

/* ===== Dashboard 3-widget row ===== */
.dash-row3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:22px}
@media(max-width:1100px){.dash-row3{grid-template-columns:1fr}}

/* ===== Analytics extra widgets ===== */
.mini-table{width:100%;border-collapse:collapse}
.mini-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);padding:6px 8px;border-bottom:1px solid var(--line)}
.mini-table td{padding:7px 8px;font-size:13px;border-bottom:1px solid var(--line-soft)}
.hbar-list{display:flex;flex-direction:column;gap:9px}
.hbar-row{display:flex;align-items:center;gap:10px}
.hbar-l{flex:0 0 150px;font-size:12.5px;color:var(--text-2)}
.hbar-track{flex:1;height:9px;background:var(--panel-2);border-radius:20px;overflow:hidden}
.hbar-fill{height:100%;background:var(--brand);border-radius:20px}
.hbar-v{flex:0 0 46px;text-align:right;font-family:var(--mono);font-size:12px;color:var(--text-3)}

/* ===== Topbar product logo + customer branding ===== */
.topbar-brand{display:flex;align-items:center;gap:14px;min-width:0}
.topbar-logo{height:30px;width:auto;flex:none;filter:drop-shadow(0 1px 4px rgba(232,104,40,.35))}
.topbar-title{font-family:var(--disp);font-weight:700;padding-left:14px;border-left:1px solid var(--line);display:flex;flex-direction:column;line-height:1.15}
.tt-brand{font-size:17px;color:var(--text)}
.tt-page{font-size:11.5px;font-weight:600;letter-spacing:.04em;color:var(--text-3);text-transform:uppercase}
.customer-brand{display:flex;align-items:center;gap:8px;padding-right:6px;margin-right:2px;border-right:1px solid var(--line)}
.customer-brand.hidden{display:none}
.cb-for{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.08em}
.cb-logo{height:24px;width:auto;max-width:120px;object-fit:contain;border-radius:4px}
.cb-name{font-size:13px;font-weight:600;color:var(--text-2)}
@media(max-width:720px){.topbar-title{display:none}.cb-for{display:none}}

/* ===== App watermark (subtle, bottom-right, non-interactive) ===== */
.app-watermark{position:fixed;right:16px;bottom:14px;width:38px;height:38px;opacity:.06;pointer-events:none;z-index:5;user-select:none}
@media(max-width:720px){.app-watermark{width:30px;height:30px;right:10px;bottom:10px}}

/* watermark on overlays (drawer + full-screen) */
.drawer::after,.fsv.on::after{content:"";position:absolute;right:16px;bottom:14px;width:38px;height:38px;opacity:.06;pointer-events:none;background:url("data:image/svg+xml,%3Csvg%20viewBox='0%200%20250%20250'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cg%20transform='translate(125,125)'%3E%3Cpolygon%20points='0,-115%20100,-57.5%20100,57.5%200,115%20-100,57.5%20-100,-57.5'%20fill='none'%20stroke='%23ED6C2D'%20stroke-width='7'/%3E%3Cpolygon%20points='0,-93%2080,-46.5%2080,46.5%200,93%20-80,46.5%20-80,-46.5'%20fill='none'%20stroke='%23707070'%20stroke-width='3'/%3E%3Cg%20stroke-linecap='round'%3E%3Cline%20x1='-40'%20y1='-40'%20x2='40'%20y2='40'%20stroke='%23F0F0F0'%20stroke-width='7'/%3E%3Cline%20x1='40'%20y1='-40'%20x2='-40'%20y2='40'%20stroke='%23F0F0F0'%20stroke-width='7'/%3E%3Ccircle%20cx='-40'%20cy='-40'%20r='17'%20fill='none'%20stroke='%23F0F0F0'%20stroke-width='6'/%3E%3Ccircle%20cx='40'%20cy='-40'%20r='17'%20fill='none'%20stroke='%23F0F0F0'%20stroke-width='6'/%3E%3Ccircle%20cx='-40'%20cy='40'%20r='17'%20fill='none'%20stroke='%23F0F0F0'%20stroke-width='6'/%3E%3Ccircle%20cx='40'%20cy='40'%20r='17'%20fill='none'%20stroke='%23F0F0F0'%20stroke-width='6'/%3E%3Ccircle%20cx='0'%20cy='0'%20r='15'%20fill='%23F0F0F0'/%3E%3Ccircle%20cx='0'%20cy='0'%20r='7'%20fill='%23ED6C2D'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E") no-repeat center/contain;z-index:1}

/* ===== Pre-start item photos + in-place layout ===== */
.ps-item{display:flex;align-items:center;gap:10px;justify-content:space-between}
.ps-item .jsa-row{flex:1;margin:0}
.ps-photo-wrap{flex:none;position:relative}
.ps-photo-add{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px dashed var(--line);border-radius:9px;color:var(--text-3);cursor:pointer}
.ps-photo-add:hover{border-color:var(--accent);color:var(--accent)}
.ps-thumb{width:34px;height:34px;border-radius:8px;object-fit:cover;background:var(--panel-2);display:block}
.ps-photo-x{position:absolute;top:-7px;right:-7px;background:var(--bad);color:#fff;border:none;width:19px;height:19px;border-radius:10px;font-weight:800;cursor:pointer;line-height:1;font-size:12px}

/* ===== Authorisation renewal-in-progress ===== */
.auth-renewal{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-3);margin-top:10px;padding-top:10px;border-top:1px solid var(--line-soft);cursor:pointer}
.auth-card.is-renewing{border-color:var(--info,#3DA0F0)}
.auth-card.is-expired{border-color:rgba(226,86,77,.4)}

/* ===== Nav settings sub-tree ===== */
.nav-item{position:relative}
.ni-caret{margin-left:auto;display:inline-flex;color:var(--text-3);transition:transform .2s}
.ni-caret.open{transform:rotate(90deg)}
.nav-sub{display:flex;flex-direction:column;margin:2px 0 6px;padding-left:8px;border-left:1px solid var(--line);margin-left:20px;animation:navSubIn .18s ease both}
@keyframes navSubIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.nav-subitem{text-align:left;padding:7px 12px;font-size:12.5px;color:var(--text-3);border-radius:7px;font-weight:500}
.nav-subitem:hover{color:var(--text-2);background:var(--panel-2)}
.nav-subitem.on{color:#fff;background:var(--brand-tint,rgba(232,104,40,.12));border-left:2px solid var(--brand);padding-left:10px}

/* ===== Post-flight photos ===== */
.pf-photos{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.pf-photo{position:relative}
.pf-photo img{width:72px;height:72px;border-radius:10px;object-fit:cover;background:var(--panel-2);display:block}
.pf-photo-x{position:absolute;top:-7px;right:-7px;background:var(--bad);color:#fff;border:none;width:20px;height:20px;border-radius:10px;font-weight:800;cursor:pointer;line-height:1}
.pf-photo-add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:72px;height:72px;border:1px dashed var(--line);border-radius:10px;color:var(--text-3);cursor:pointer;font-size:11px}
.pf-photo-add:hover{border-color:var(--accent);color:var(--accent)}

/* ===== Persistent drawer expand/collapse ===== */
.drawer.wide{width:min(1100px,94vw)}
.drawer.wide .drawer-b{padding:24px 32px}
.drawer-expand{position:absolute;top:18px;right:52px;width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);color:var(--text-2);cursor:pointer;transition:.13s}
.drawer-expand:hover{border-color:var(--accent);color:var(--accent)}

/* ===== Interactive training module host ===== */
.module-head{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;border-bottom:1px solid var(--line);background:var(--panel)}
.module-head h2{font-family:var(--disp);font-size:18px;font-weight:800;margin:4px 0 0}
.module-loading{display:flex;align-items:center;gap:10px;justify-content:center;padding:60px;color:var(--text-3)}
.module-frame{display:none;width:100%;height:calc(100vh - 62px);border:0;background:#fff}

/* ===== Offline (keyless) map indicator + MapLibre ===== */
.ja-mapsrc{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--text-3);background:var(--panel-2);padding:4px 9px;border-radius:20px;margin-left:auto}
.jobmap .maplibregl-map{border-radius:12px}
.jobmap canvas{border-radius:12px}

/* ===== Security & privacy ===== */
.mfa-key{font-family:var(--mono);font-size:18px;letter-spacing:2px;background:var(--panel-2);padding:10px 14px;border-radius:8px;margin:6px 0;user-select:all;display:inline-block}
.mfa-steps{margin:0 0 14px;padding-left:20px;line-height:1.9;font-size:13px;color:var(--text-2)}
.codes-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}
.codes-grid code{font-family:var(--mono);background:var(--panel-2);padding:8px;border-radius:6px;text-align:center;font-size:13px;user-select:all}
@media(max-width:600px){.codes-grid{grid-template-columns:repeat(2,1fr)}}
.pp-sec{margin-bottom:16px}
.pp-sec h4{font-size:14px;margin:0 0 4px;color:var(--text-1)}
.pp-sec p{font-size:13px;color:var(--text-2);line-height:1.6;margin:0}

/* ===== Breach register ===== */
.breach-list{display:flex;flex-direction:column;gap:12px}
.breach-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--panel)}
.breach-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.breach-meta{font-size:12.5px;color:var(--text-3);margin-bottom:6px}
.breach-clock{font-size:12.5px;font-weight:600;color:var(--warn);background:rgba(232,163,60,.1);padding:6px 10px;border-radius:8px;display:inline-block;margin-bottom:6px}
.breach-clock.overdue{color:var(--bad);background:rgba(226,86,77,.12)}
.breach-desc{font-size:13px;color:var(--text-2);line-height:1.5;margin-bottom:8px}
.breach-status{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.breach-actions{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line-soft);padding-top:10px}

/* ===== Airspace Map ===== */
.as-wrap{display:flex;gap:16px;height:calc(100vh - 190px);min-height:520px}
.as-map{flex:1;border-radius:14px;overflow:hidden;background:var(--panel-2);min-height:400px}
.as-map .maplibregl-map,.as-map canvas{border-radius:14px}
.as-panel{width:300px;flex-shrink:0;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;overflow-y:auto}
.as-panel-h{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);margin-bottom:10px}
.as-layers{display:flex;flex-direction:column;gap:2px}
.as-layer{display:flex;align-items:center;gap:9px;font-size:13px;padding:6px 6px;border-radius:8px;cursor:pointer;color:var(--text-2)}
.as-layer:hover{background:var(--panel-2)}
.as-sw{width:14px;height:14px;border-radius:4px;flex-shrink:0;opacity:.85}
.as-count{color:var(--text-3);font-size:11.5px;margin-left:auto;font-family:var(--mono)}
.as-base{display:flex;gap:6px}
.as-base-btn{flex:1;padding:7px;border:1px solid var(--line);background:var(--panel-2);border-radius:8px;font-size:12px;cursor:pointer;color:var(--text-2)}
.as-base-btn.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.as-info{margin-top:14px}
.as-info-card{background:var(--panel-2);border-radius:10px;padding:12px}
.as-info-h{font-size:13.5px;font-weight:600;margin-bottom:6px;display:flex;gap:8px;align-items:center}
.as-info-r{font-size:12.5px;color:var(--text-2);line-height:1.5}
@media(max-width:820px){.as-wrap{flex-direction:column;height:auto}.as-map{height:60vh}.as-panel{width:auto}}

/* ===== Airspace readout panel ===== */
.as-warn-banner{display:flex;gap:9px;align-items:flex-start;padding:10px 12px;border-radius:10px;font-size:12.5px;line-height:1.4;margin-bottom:12px}
.as-warn-banner.high{background:rgba(226,86,77,.14);color:#E2564D}
.as-warn-banner.med{background:rgba(232,163,60,.14);color:#E8A33C}
.as-warn-banner.low,.as-warn-banner.ok{background:rgba(39,174,96,.12);color:#27AE60}
.as-ro-area{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:10px}
.as-ro-h{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px;margin-bottom:6px}
.as-ro-sub{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-3);margin:8px 0 4px}
.as-ro-row{font-size:12.5px;color:var(--text-2);line-height:1.6;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.as-ro-row .mut,.mut{color:var(--text-3)}
.as-chip{font-size:10.5px;border:1.5px solid;border-radius:20px;padding:1px 8px;font-weight:600}
.as-ro-warn{font-size:12px;color:var(--text-2);background:var(--panel-2);border-left:3px solid;border-radius:0 6px 6px 0;padding:6px 10px;margin-top:6px;line-height:1.4}

/* ===== Flight Logs ===== */
.fl-banner{display:flex;gap:9px;align-items:flex-start;padding:11px 13px;border-radius:10px;font-size:12.5px;line-height:1.45;margin-bottom:14px}
.fl-banner.ok{background:rgba(39,174,96,.12);color:#27AE60}
.fl-banner.mut{background:var(--panel-2);color:var(--text-2)}
.fl-banner.high{background:rgba(226,86,77,.14);color:#E2564D}
.fl-drop{border:2px dashed var(--line);border-radius:14px;padding:30px;text-align:center;transition:.15s;cursor:pointer;background:var(--panel)}
.fl-drop.drag{border-color:var(--accent);background:rgba(232,104,40,.06)}
.fl-drop-inner{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--text-2)}
.fl-browse{color:var(--accent);cursor:pointer;text-decoration:underline}
.fl-table{width:100%}
.fl-row{cursor:pointer}
.fl-row:hover td{background:var(--panel-2)}
.fl-detail{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;background:var(--panel-2);border-radius:10px;padding:14px}
.fl-kv{display:flex;flex-direction:column;gap:2px}
.fl-kv span{font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-3)}
.fl-kv b{font-size:13px}
.fl-form{display:flex;flex-direction:column;gap:10px}

/* ===== MAP-1: Airspace Map readout (AVCRM-style panel) ===== */
.as-primary{border-radius:8px;padding:10px 12px;font-size:12px;line-height:1.5;margin-bottom:10px;color:#1a1408}
.as-primary.med{background:#E8A33C;border:1px solid #c8862a}
.as-primary.high{background:#E2564D;border:1px solid #b93e36;color:#fff}
.as-primary b{display:inline;margin-right:4px}
.as-counts{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0}
.as-cnt{background:var(--panel-2,rgba(255,255,255,.05));border:1px solid var(--line);border-radius:8px;padding:6px 4px;text-align:center}
.as-cnt b{display:block;font-family:var(--mono);font-size:15px;line-height:1.1}
.as-cnt span{font-size:9px;color:var(--text-3);text-transform:uppercase;letter-spacing:.03em}
.as-cnt.warn b{color:var(--warn,#E8A33C)}
.as-metrics{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:10px;font-size:12px}
.as-metrics>div{display:flex;justify-content:space-between;gap:10px;padding:3px 0;border-bottom:1px dashed var(--line-soft,rgba(255,255,255,.06))}
.as-metrics>div:last-child{border-bottom:0}
.as-metrics span{color:var(--text-3)}
.as-agl{background:#E8A33C;color:#1a1408;border-radius:4px;padding:0 5px;font-family:var(--mono);font-size:11px}
.as-ro-adv{font-size:11px;color:var(--text-3);margin:3px 0 2px 0;padding-left:2px;line-height:1.45}

/* ===== MAP-4: two-map Job Area step (draw + airspace check) ===== */
.ja-two{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
@media (max-width:1180px){.ja-two{grid-template-columns:1fr}}
.ja-two-h{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px;margin-bottom:8px}
.ja-step-n{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--brand);color:#fff;font-size:11.5px;font-weight:700}
.ja-two-sub{font-weight:400;font-size:11px;color:var(--text-3)}
.wz-as-map{height:400px}
.wz-as-readout{margin-top:10px;max-height:460px;overflow:auto;padding-right:2px}

/* ===== MAP-6: stacked Job Area step — layout system ===== */
.ja-sec-h{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}
.ja-sec-h h3{margin:0 0 2px 0}
.ja-sec-h .ja-step-n{margin-top:2px;flex:none}
.jobmap-tall{height:min(64vh,760px);min-height:440px;border-radius:10px}
.ja-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.ja-toolbar-spacer{flex:1}
.ja-search-wrap{display:flex;align-items:center;gap:8px;background:var(--panel-2,rgba(255,255,255,.04));border:1px solid var(--line);border-radius:9px;padding:4px 6px 4px 12px;flex:1;min-width:280px;max-width:560px}
.ja-search-wrap svg{opacity:.55;flex:none}
.ja-search{background:transparent;border:0;outline:0;color:var(--text-1);flex:1;font-size:13px;min-width:0}
.ja-seg{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.ja-seg .ja-type{border:0;border-right:1px solid var(--line);border-radius:0;margin:0}
.ja-seg .ja-type:last-child{border-right:0}

/* drawing dock — attached beneath the map, one coherent surface */
.ja-dock{border:1px solid var(--line);border-top:0;border-radius:0 0 10px 10px;background:var(--panel-2,rgba(255,255,255,.03));padding:12px 14px;margin-top:-8px}
.jobmap-tall{border-bottom-left-radius:0;border-bottom-right-radius:0}
.ja-dock-row{display:flex;gap:18px;align-items:flex-end;flex-wrap:wrap}
.ja-dock-group{display:flex;flex-direction:column;gap:6px}
.ja-dock-group.grow{flex:1;min-width:260px}
.ja-dock-group>label{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3)}
.ja-dock-group .inv-input{width:210px}
.ja-dock-note{margin-top:10px;font-size:11.5px;color:var(--text-3);display:flex;gap:6px;align-items:center}
.ja-list{margin-top:14px}
/* v1.96.1: the Job Area step is a map-and-analysis workspace — it should use the
   whole screen, not sit inside the centred 1400px card cap like the form steps.
   `ja-full` (set on #wiz-step when this step renders) widens its cards to the
   body edges so both maps and the airspace read-outs get full width. */
#wiz-step.ja-full .fs-card{max-width:none;margin-left:0;margin-right:0}
#wiz-step.ja-full{width:100%}
.ja-calcrow{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}
.ja-calcrow-l{font-size:12px;font-weight:600}

/* wide stacked readout: banner/counts/metrics full-width, area cards in columns */
.wz-as-wide{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:12px;margin-top:14px;max-height:none;overflow:visible}
.wz-as-wide>.as-primary,.wz-as-wide>.as-warn-banner,.wz-as-wide>.as-counts,.wz-as-wide>.as-metrics,.wz-as-wide>.muted-row,.wz-as-wide>.empty,.wz-as-wide>div[style*="font-size:10px"]{grid-column:1/-1}
.wz-as-wide .as-counts{grid-template-columns:repeat(8,1fr);margin:0}
@media (max-width:900px){.wz-as-wide .as-counts{grid-template-columns:repeat(4,1fr)}}
.wz-as-wide .as-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:2px 26px;padding:10px 14px}
.wz-as-wide .as-ro-area{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0}
.wz-as-wide .as-primary{font-size:13px;padding:12px 16px}

/* section-updated pulse */
@keyframes ja-pulse{0%{box-shadow:0 0 0 0 rgba(232,104,40,.45)}100%{box-shadow:0 0 0 14px rgba(232,104,40,0)}}
.ja-sec-h.pulse .ja-step-n{animation:ja-pulse 1s ease-out 2}

/* ===== MAP-6: built-in MiniMap engine ===== */
.mm-wrap{position:relative;overflow:hidden;background:#10141a;touch-action:none;user-select:none;cursor:grab}
.mm-wrap:active{cursor:grabbing}
.mm-wrap.mm-drawing{cursor:crosshair}
.mm-tiles{position:absolute;inset:0}
.mm-tile{position:absolute;width:256px;height:256px;top:0;left:0;will-change:transform;pointer-events:none;filter:saturate(.92)}
.mm-tile-miss{visibility:hidden}
.mm-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.mm-ui{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;gap:6px;z-index:3}
.mm-btn{width:32px;height:32px;border-radius:8px;border:1px solid var(--line);background:var(--panel,rgba(20,24,30,.92));color:var(--text-1);font-size:17px;cursor:pointer}
.mm-btn:hover{background:var(--panel-2,rgba(255,255,255,.08))}
.mm-attr{position:absolute;bottom:6px;right:8px;font-size:9.5px;color:rgba(255,255,255,.45);z-index:3}
.mm-hint{position:absolute;top:10px;left:50%;transform:translateX(-50%);background:var(--panel,rgba(20,24,30,.94));border:1px solid var(--line);border-radius:8px;padding:6px 12px;font-size:12px;z-index:3}

/* map failure empty-state (used when even MiniMap can't help) */
.ja-maperr{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-2);font-size:13px;background:repeating-linear-gradient(45deg,transparent,transparent 12px,rgba(255,255,255,.015) 12px,rgba(255,255,255,.015) 24px)}

/* ===== BUG-2: dark-theme the MapLibre popups (were white text on the library's default white card) ===== */
.maplibregl-popup{max-width:260px!important}
.maplibregl-popup-content{
  background:var(--panel,#161b22)!important;
  color:var(--text-1,#e6edf3)!important;
  border:1px solid var(--line,rgba(255,255,255,.12))!important;
  border-radius:10px!important;
  box-shadow:0 8px 28px rgba(0,0,0,.5)!important;
  padding:10px 12px!important;
  font-size:12.5px!important;line-height:1.5!important;
}
.maplibregl-popup-content b{color:var(--text-1,#fff)}
.maplibregl-popup-close-button{color:var(--text-3,#8b98a8)!important;font-size:16px!important;padding:2px 6px!important}
.maplibregl-popup-close-button:hover{color:var(--text-1,#fff)!important;background:transparent!important}
/* tip triangle inherits the card colour so it isn't a white notch */
.maplibregl-popup-anchor-top .maplibregl-popup-tip{border-bottom-color:var(--panel,#161b22)!important}
.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{border-top-color:var(--panel,#161b22)!important}
.maplibregl-popup-anchor-left .maplibregl-popup-tip{border-right-color:var(--panel,#161b22)!important}
.maplibregl-popup-anchor-right .maplibregl-popup-tip{border-left-color:var(--panel,#161b22)!important}
.maplibregl-popup-anchor-top-left .maplibregl-popup-tip,
.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{border-bottom-color:var(--panel,#161b22)!important}
.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip,
.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{border-top-color:var(--panel,#161b22)!important}

/* MiniMap click-info card (airport/airspace details on the built-in engine) */
.mm-info{position:absolute;left:10px;bottom:10px;max-width:260px;background:var(--panel,#161b22);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:12.5px;line-height:1.5;color:var(--text-1);box-shadow:0 8px 28px rgba(0,0,0,.5);z-index:4}
.mm-info .mm-info-h{font-weight:600;margin-bottom:2px;display:flex;gap:6px;align-items:center;justify-content:space-between}
.mm-info .mm-info-x{cursor:pointer;color:var(--text-3);border:0;background:transparent;font-size:15px;line-height:1}
.mm-info .mut{color:var(--text-3)}

/* active-state for the draw + basemap segmented buttons (so selection is visible) */
.ja-seg .ja-type.on{background:var(--brand);color:#fff}

/* ============================================================
   MAP-7: Airspace Map redesign — large map + themed filter rail
   ============================================================ */
.as-page{display:grid;grid-template-columns:1fr 340px;gap:0;height:calc(100vh - 132px);position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.view.view-airspace{max-width:none;padding:18px 24px 24px}
.as-mapcol{position:relative;overflow:hidden}
.as-map-lg{position:absolute;inset:0;width:100%;height:100%}
.as-map-lg .mm-wrap{width:100%;height:100%}

/* floating map controls (top-left segmented + fullscreen) */
.as-map-tools{position:absolute;top:14px;left:14px;display:flex;gap:8px;z-index:5}
.as-seg{display:inline-flex;background:var(--panel,#161b22);border:1px solid var(--line);border-radius:9px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.35)}
.as-seg-btn{border:0;background:transparent;color:var(--text-2);padding:7px 16px;font-size:13px;font-weight:600;cursor:pointer}
.as-seg-btn.on{background:#fff;color:#111}
.as-icon-btn{width:36px;height:36px;border-radius:9px;border:1px solid var(--line);background:var(--panel,#161b22);color:var(--text-1);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(0,0,0,.35)}
.as-icon-btn:hover{background:var(--panel-2,rgba(255,255,255,.08))}
.as-info-float{position:absolute;left:14px;bottom:14px;max-width:280px;z-index:5}
.as-info-float:empty{display:none}

/* right rail — the AVCRM-style filter/readout panel, themed dark */
.as-side{background:var(--panel,#12161c);border-left:1px solid var(--line);display:flex;flex-direction:column;overflow-y:auto}
.as-side-top{padding:14px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel,#12161c);z-index:2}
.as-side-top .inv-input{width:100%}
.as-side-readout{padding:14px 16px}
.as-side-readout:empty{display:none}

/* accordion filter groups */
.as-acc{border-top:1px solid var(--line)}
.as-acc-h{width:100%;display:flex;align-items:center;gap:8px;background:transparent;border:0;color:var(--text-1);font-weight:600;font-size:13px;padding:13px 16px;cursor:pointer}
.as-acc-chev{margin-left:auto;transition:transform .18s;color:var(--text-3)}
.as-acc.as-acc-open .as-acc-chev{transform:rotate(180deg)}
.as-acc-b{display:none;padding:0 16px 14px}
.as-acc.as-acc-open .as-acc-b{display:block}
.as-fgroup{margin-bottom:14px}
.as-fgroup-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin:0 0 8px}
.as-chk{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:12.5px;cursor:pointer;color:var(--text-1)}
.as-chk input{accent-color:var(--brand);width:15px;height:15px}
.as-chk .as-sw{width:12px;height:12px;border-radius:3px;flex:none}
.as-chk-l{flex:1}
.as-count{font-size:11px;color:var(--text-3);font-family:var(--mono)}

/* iOS-style operation switches (Indoor/Tether, Relevant only) */
.as-switch{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:12.5px;color:var(--text-1);cursor:pointer}
.as-switch-l{flex:1}
.as-switch-box{position:relative;width:38px;height:22px;flex:none}
.as-switch-box input{opacity:0;width:0;height:0;position:absolute}
.as-switch-slider{position:absolute;inset:0;background:var(--line-strong,rgba(255,255,255,.18));border-radius:22px;transition:.18s}
.as-switch-slider::before{content:'';position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.18s}
.as-switch-box input:checked + .as-switch-slider{background:var(--brand)}
.as-switch-box input:checked + .as-switch-slider::before{transform:translateX(16px)}

/* fullscreen mode: rail collapses, map fills the viewport */
.as-page.as-fullscreen{position:fixed;inset:0;z-index:200;height:100vh;margin:0;grid-template-columns:1fr 340px;background:var(--bg)}

@media (max-width:1000px){
  .as-page{grid-template-columns:1fr;height:auto}
  .as-mapcol{height:60vh}
  .as-side{max-height:none}
}

/* rail readout: fit the AVCRM-style summary into the 340px column */
.as-side-readout .as-counts{grid-template-columns:repeat(4,1fr);gap:5px}
.as-side-readout .as-primary{font-size:12px;padding:9px 11px}
.as-side-readout .as-metrics{font-size:11.5px}
.as-side-readout .as-ro-area{margin-top:10px}

/* ===== FREQ-2: nearby frequencies + aerodrome/HLS drawers in the airspace rail ===== */
.as-nearby{padding:0 16px 16px}
.as-nearby-load{padding:14px 0;text-align:center}
.as-drawer{border:1px solid var(--line);border-radius:9px;margin-top:10px;overflow:hidden}
.as-drawer-h{width:100%;display:flex;align-items:center;gap:8px;background:var(--panel-2,rgba(255,255,255,.03));border:0;color:var(--text-1);font-size:12.5px;font-weight:600;padding:10px 12px;cursor:pointer}
.as-drawer-n{background:var(--brand);color:#fff;border-radius:20px;font-size:10.5px;font-weight:700;padding:1px 8px;min-width:20px;text-align:center}
.as-drawer-chev{margin-left:auto;color:var(--text-3);transition:transform .18s}
.as-drawer.open .as-drawer-chev{transform:rotate(180deg)}
.as-drawer-b{display:none;padding:6px 12px 10px;max-height:280px;overflow-y:auto}
.as-drawer.open .as-drawer-b{display:block}
.as-freq{display:flex;align-items:baseline;gap:10px;padding:5px 0;border-bottom:1px dashed var(--line-soft,rgba(255,255,255,.06))}
.as-freq:last-child{border-bottom:0}
.as-freq-mhz{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--brand);min-width:64px}
.as-freq-l{font-size:12px;line-height:1.35}
.as-freq-sub{display:block;font-size:10.5px;color:var(--text-3)}
.as-aero{display:flex;align-items:flex-start;gap:9px;padding:6px 0;border-bottom:1px dashed var(--line-soft,rgba(255,255,255,.06))}
.as-aero:last-child{border-bottom:0}
.as-aero-dot{width:9px;height:9px;border-radius:50%;background:#27AE60;margin-top:4px;flex:none}
.as-aero-dot.ctrl{background:#2E86DE}
.as-aero-l{font-size:12px;line-height:1.4}
.as-aero-sub{font-size:10.5px;color:var(--text-3)}

.as-notam-note{font-size:11px;color:var(--text-3);line-height:1.5;display:flex;gap:6px;align-items:flex-start;background:var(--panel-2,rgba(255,255,255,.03));border:1px solid var(--line);border-radius:8px;padding:9px 10px}
.as-notam-note svg{flex:none;margin-top:1px;opacity:.6}

/* SAFE-1: clearance-required emphasis on affecting airspace rows */
.as-ro-clear{border-left:2px solid #E2564D;padding-left:8px}
.as-clear-badge{display:inline-block;background:#E2564D;color:#fff;font-size:10px;font-weight:700;padding:1px 7px;border-radius:20px;margin-left:4px;text-transform:uppercase;letter-spacing:.03em}

/* ===== FL-2: centered modal dialog (flight-log review, etc.) ===== */
.modal-root{position:fixed;inset:0;z-index:120;display:none;align-items:flex-start;justify-content:center;padding:72px 24px 24px}
.modal-root.on{display:flex}
.modal-scrim{position:absolute;inset:0;background:rgba(6,9,14,.66);backdrop-filter:blur(3px)}
.modal-dialog{position:relative;width:520px;max-width:96vw;max-height:88vh;overflow-y:auto;background:var(--panel,#12161c);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 80px rgba(0,0,0,.6);animation:modal-pop .18s cubic-bezier(.4,0,.2,1)}
.modal-dialog.wide{width:min(760px,94vw)}
@keyframes modal-pop{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.modal-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 22px 14px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel,#12161c);border-radius:16px 16px 0 0;z-index:2}
.modal-h .cat{font-size:10.5px;color:var(--brand);text-transform:uppercase;letter-spacing:.14em;font-weight:700}
.modal-h h3{font-family:var(--disp);font-size:20px;font-weight:800;margin:5px 0 0}
.modal-x{background:transparent;border:0;color:var(--text-3);font-size:26px;line-height:1;cursor:pointer;padding:0 4px}
.modal-x:hover{color:var(--text-1)}
.modal-b{padding:18px 22px 22px}
.modal-sec{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:700;margin:18px 0 10px}
body.modal-open{overflow:hidden}
.fl-fname{font-family:var(--mono);font-size:12.5px;color:var(--text-2);word-break:break-all;margin-bottom:14px}

/* FL-3: create-asset-from-log callout */
.fl-create-box{border:1px solid var(--brand);background:rgba(232,104,40,.06);border-radius:10px;padding:12px 14px;margin-bottom:14px}
.fl-create-h{font-size:12.5px;font-weight:700;display:flex;gap:6px;align-items:center;margin-bottom:8px}
.fl-create-box .chk{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:4px 0}
.fl-encnote{display:flex;gap:8px;align-items:flex-start;font-size:11.5px;color:var(--text-3);line-height:1.5;background:var(--panel-2,rgba(255,255,255,.03));border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-top:12px}
.fl-encnote svg{flex:none;margin-top:1px;opacity:.6}

/* FL-5: DJI decrypt-key section in the connection card */
.dji-key-section{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.dji-key-h{font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:6px}

/* FL-8: inline note under a form field */
.frow-note{font-size:11px;color:var(--text-3);margin-top:5px;line-height:1.4}

/* ===== FL-10: fullscreen flight-log viewer ===== */
.flx-wrap{padding:22px 26px;max-width:1200px;margin:0 auto}
.flx-fname{font-size:12px;color:var(--text-3);margin-bottom:16px;word-break:break-all}
.flx-ok{color:#3DBE78} .flx-mut{color:var(--text-3)}
.flx-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
@media(min-width:1000px){.flx-grid{grid-template-columns:repeat(4,1fr)}}
.flx-col{background:var(--panel-2,rgba(255,255,255,.02));border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.flx-sec{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--brand);margin-bottom:12px}
.flx-f{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.04)}
.flx-f:last-child{border-bottom:0}
.flx-f.wide{flex-direction:column;align-items:flex-start;gap:2px}
.flx-l{font-size:11px;color:var(--text-3);white-space:nowrap}
.flx-v{font-size:13.5px;font-weight:600;text-align:right}
.flx-f.wide .flx-v{text-align:left;word-break:break-all}
.flx-v.mono,.mono{font-family:var(--mono)}
.flx-note{font-size:11px;color:var(--text-3);line-height:1.4;margin-top:8px}
.flx-cells{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-top:10px}
.flx-cell{background:rgba(255,255,255,.03);border-radius:6px;padding:5px 8px}
.flx-cell-n{font-size:9.5px;color:var(--text-3);text-transform:uppercase}
.flx-cell-v{font-size:12px;font-weight:600;font-family:var(--mono)}
.flx-map{height:160px;border-radius:8px;overflow:hidden;margin-top:10px;background:rgba(255,255,255,.03)}
.flx-map-empty{display:flex;align-items:center;justify-content:center;height:100%;font-size:11px;color:var(--text-3);text-align:center;padding:0 12px}
.flx-apply{margin-top:20px;background:var(--panel-2,rgba(255,255,255,.02));border:1px solid var(--line);border-radius:12px;padding:16px 18px;max-width:640px}
.flx-form3{display:grid;grid-template-columns:1fr;gap:10px}
@media(min-width:700px){.flx-form3{grid-template-columns:repeat(3,1fr)}}

/* FL-13: warning chip in flight-log review */
.flx-warn{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:#E2A33C;background:rgba(226,163,60,.1);border-radius:6px;padding:4px 8px;margin-top:8px}

/* FL-13: flight-log list filter bar */
.fl-filters{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.fl-fsel{min-width:150px;max-width:200px}
.fl-filters-right{margin-left:auto;display:flex;align-items:center;gap:12px}

/* ===== FL-14: All-data expanded view ===== */
.ad-wrap{padding:20px 24px;max-width:100%;overflow:hidden}
.ad-fname{font-size:12px;color:var(--text-3);margin-bottom:16px;word-break:break-all}
.ad-cfg{display:grid;grid-template-columns:1fr;gap:16px}
@media(min-width:900px){.ad-cfg{grid-template-columns:1fr 1fr}}
.ad-cfg-col{background:var(--panel-2,rgba(255,255,255,.02));border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.ad-kv{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px solid rgba(255,255,255,.04);font-size:12.5px}
.ad-kv:last-child{border-bottom:0}
.ad-kv span{color:var(--text-3)}
.ad-table-wrap{margin-top:10px;overflow:auto;max-height:60vh;border:1px solid var(--line);border-radius:10px}
.ad-table{border-collapse:collapse;width:max-content;min-width:100%;font-size:11.5px}
.ad-table th{position:sticky;top:0;background:var(--panel,#14161a);color:var(--text-2);text-align:left;padding:8px 10px;white-space:nowrap;border-bottom:1px solid var(--line);z-index:1;font-weight:600}
.ad-table td{padding:5px 10px;white-space:nowrap;border-bottom:1px solid rgba(255,255,255,.03);color:var(--text-1)}
.ad-table tbody tr:hover{background:rgba(255,255,255,.03)}

/* ===== MAP-8: Airspace-check (Map 2) toolbar ===== */
.wz-as-toolbar{margin-bottom:8px}
.wz-as-ceil{display:flex;align-items:center;gap:6px}
.wz-as-ceil label{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.4px}
.wz-as-ceil input{width:78px;padding:6px 8px;font-size:12.5px}
.wz-as-ceil .mut{font-size:11px}

/* JS-1/2: Job Brief editor (wizard) + frequency picker (airspace step) */
.brief-list{display:flex;flex-direction:column;gap:10px}
.brief-sec{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--card)}
.brief-sec.off{opacity:.55}
.brief-sec.off .brief-b{display:none}
.brief-h{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.brief-h b{font-size:13px}
.brief-hint{margin-left:auto;font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.4px}
.switch{position:relative;display:inline-block;width:34px;height:20px;flex:none}
.switch input{opacity:0;width:0;height:0}
.switch .sl{position:absolute;inset:0;background:var(--line-2,#c9ccd1);border-radius:20px;transition:.15s;cursor:pointer}
.switch .sl::before{content:"";position:absolute;height:14px;width:14px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.15s}
.switch input:checked + .sl{background:var(--accent,#E86828)}
.switch input:checked + .sl::before{transform:translateX(14px)}
.brief-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.brief-f{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--text-2)}
.brief-f span{font-size:11px;color:var(--text-3)}
.as-freq-pick{display:flex;align-items:center;gap:8px;cursor:pointer}
.as-freq-pick input{flex:none;width:15px;height:15px;accent-color:var(--accent,#E86828)}
.as-freq-hint{font-size:11px;color:var(--text-3);padding:2px 0 6px;line-height:1.4}

/* UI: airspace map layer-toggle legend + overlays */
.wz-layers{margin:8px 0;padding:8px 10px;background:var(--card);border:1px solid var(--line);border-radius:8px}
.wz-legend-inner{display:flex;flex-wrap:wrap;gap:14px}
.wz-lgroup{min-width:150px}
.wz-lg-t{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);margin-bottom:4px}
.wz-lyr{display:flex;align-items:center;gap:6px;font-size:12px;padding:2px 0;cursor:pointer;color:var(--text-2)}
.wz-lyr input{flex:none;width:14px;height:14px;accent-color:var(--accent,#E86828)}
.wz-lyr-sw{width:16px;height:10px;border-radius:2px;flex:none}
.wz-lyr-ov{font-size:9px;color:var(--text-3);border:1px solid var(--line);border-radius:8px;padding:0 5px;margin-left:2px}

/* UI: MapLibre draggable edit handles (vertex/centre/edge) */
.ml-vh{width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.5);cursor:grab;background:#E86828}
.ml-vh:active{cursor:grabbing}

/* MAP-8: airspace zone warning dialog (AVCRM-style) */
.as-warn-head{background:#C62828;color:#fff;font-weight:800;font-size:18px;text-align:center;padding:14px 18px;border-radius:16px 16px 0 0;position:relative;letter-spacing:.3px}
.as-warn-x{position:absolute;right:10px;top:10px;color:#fff;opacity:.85}
.as-warn-body{max-height:70vh;overflow-y:auto}
.as-warn-title{margin:2px 0 10px;font-size:18px}
.as-warn-text p{margin:0 0 10px;line-height:1.5;font-size:13.5px}
.as-warn-text ul{margin:0 0 10px 20px;line-height:1.5;font-size:13.5px}
.as-warn-text .fine{font-size:11.5px;color:var(--text-3)}
.as-warn-ok{background:#C62828;color:#fff;font-weight:700;padding:8px 22px}
.as-warn-ok:hover{background:#B02020}

/* ================= DASH-1: reference dashboard ================= */
.dm-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.dm-metric{position:relative;padding:18px 20px;overflow:hidden}
.dm-lab{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-3);font-weight:600;letter-spacing:.02em}
.dm-lab svg{stroke:var(--text-3);fill:none;width:15px;height:15px}
.dm-big{font-family:var(--disp,'Archivo',sans-serif);font-weight:800;font-size:40px;line-height:1.05;margin-top:12px;color:var(--text)}
.dm-big small{font-size:16px;font-weight:600;color:var(--text-3);margin-left:6px}
.dm-delta{font-size:12.5px;margin-top:7px;display:flex;align-items:center;gap:6px}
.dm-delta svg{fill:none;stroke:currentColor;stroke-width:2}
.dm-delta.muted{color:var(--text-3)}
.dm-dot{width:7px;height:7px;border-radius:50%;display:inline-block}
.dm-dot.bad{background:var(--bad)} .dm-dot.warn{background:var(--warn)} .dm-dot.ok{background:var(--ok)}
.dm-ring-wrap{position:absolute;right:16px;top:16px}
.dm-ring .bg{fill:none;stroke:var(--line);stroke-width:5}
.dm-ring circle:not(.bg){fill:none;stroke-width:5;transition:stroke-dashoffset .6s ease}
.dm-spark{position:absolute;right:18px;bottom:16px;opacity:.9}
/* command-centre layout: map hero + attention, then ops two-up, then three panels */
.card-h{display:flex;align-items:center;gap:10px;padding:15px 18px 13px;border-bottom:1px solid var(--line)}
.card-h h3{font-family:var(--disp,'Archivo',sans-serif);font-weight:800;font-size:15px;letter-spacing:.2px;margin:0;display:flex;align-items:center;gap:9px;color:var(--text)}
.card-h h3::before{content:"";width:3px;height:15px;border-radius:2px;background:var(--brand,#E86828);flex:none}
.card-h .right{margin-left:auto;display:flex;gap:8px;align-items:center}
.card-h .tag{margin-left:auto}
.card-h .tag{font-size:11.5px;font-weight:700;padding:4px 11px;letter-spacing:.02em}
.card-h .tag.t-ok{border-color:rgba(61,190,120,.35)}
.card-h .tag.t-warn{border-color:rgba(232,163,61,.4)}
.card-h .tag.t-bad{border-color:rgba(226,86,77,.4)}
.dm-cmd{display:grid;grid-template-columns:1.55fr 1fr;gap:16px;margin-top:16px}
.dm-ops2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.dm-row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-top:16px}
.dm-mapcard,.dm-attncard{display:flex;flex-direction:column}
.dm-map{flex:1;min-height:320px;border-radius:0 0 12px 12px;overflow:hidden;position:relative}
.dm-map .mm-wrap{width:100%;height:100%;min-height:320px}
.dm-map-foot{font-size:11.5px;color:var(--text-3);padding:9px 16px;border-top:1px solid var(--line)}
.dm-map-leg{font-size:11px;color:var(--text-3);display:inline-flex;align-items:center;gap:6px;margin-right:10px}
.dm-lg{width:9px;height:9px;border-radius:50%;display:inline-block}.dm-lg.on{background:#E86828}.dm-lg.up{background:#3DA0F0;margin-left:6px}
.dm-attn-body{padding:6px 12px 12px;overflow:auto}
.dm-crew{padding:14px 18px 18px}
.dm-crew-big{font-family:var(--disp,'Archivo',sans-serif);font-weight:800;font-size:30px;color:var(--text)}
.dm-crew-big small{font-size:14px;font-weight:600;color:var(--text-3);margin-left:6px}
.dm-crew-bar{display:flex;gap:3px;height:9px;border-radius:5px;overflow:hidden;margin:12px 0 9px}
.dm-crew-bar>div{border-radius:2px}
.dm-crew-legend{display:flex;gap:14px;font-size:11.5px;color:var(--text-3)}
.dm-crew-legend span{display:flex;align-items:center;gap:5px}
.dm-crew-note{margin-top:12px;font-size:12px;color:var(--warn);display:flex;align-items:center;gap:6px}
.dm-crew-note svg{fill:none;stroke:currentColor;stroke-width:2}
.dm-crew-sub{margin-top:14px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:600}
.dm-mini-row{font-size:12.5px;color:var(--text-2);padding:5px 0;border-bottom:1px solid var(--line-soft,var(--line))}
.dm-mini-row:last-child{border-bottom:none}
.dm-panel-scroll{max-height:340px;overflow:auto;padding:6px 16px 14px}
.dm-table{width:100%;border-collapse:collapse;font-size:13.5px}
.dm-table thead th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:600;padding:9px 16px;border-bottom:1px solid var(--line)}
.dm-table tbody td{padding:12px 16px;border-bottom:1px solid var(--line-soft,var(--line))}
.dm-table tbody tr:last-child td{border-bottom:none}
.dm-table tbody tr:hover{background:var(--panel-2,rgba(255,255,255,.02))}
.dm-cell-main{font-weight:600;color:var(--text);font-size:14px}
.dm-cell-sub{font-size:12px;color:var(--text-3)}
.dm-gate{display:flex;align-items:center;gap:11px;padding:10px;border-radius:10px;margin:6px 0;transition:background .12s}
.dm-gate:hover{background:var(--panel-2,rgba(255,255,255,.03))}
.dm-gate-ic{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex:none}
.dm-gate-ic svg{fill:none;stroke:currentColor;stroke-width:2;width:16px;height:16px}
.dm-gate-ic.t-bad{background:var(--bad-tint,rgba(226,86,77,.13));color:var(--bad)}
.dm-gate-ic.t-warn{background:var(--warn-tint,rgba(232,163,61,.13));color:var(--warn)}
.dm-gt{font-weight:600;font-size:14px;color:var(--text)}
.dm-gs{font-size:12.5px;color:var(--text-3);margin-top:2px}
.dm-gx{color:var(--text-3);flex:none}.dm-gx svg{fill:none;stroke:currentColor;stroke-width:2}
.dm-fleet{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line-soft,var(--line))}
.dm-fleet:last-child{border-bottom:none}
.dm-fleet-m{font-weight:600;font-size:13.5px;color:var(--text)}
.dm-feed{padding:6px 16px 14px}
.dm-fitem{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:8px 0;font-size:13px}
.dm-fdot{width:7px;height:7px;border-radius:50%;background:var(--accent);opacity:.7}
.dm-ft{color:var(--text-2)} .dm-ft b{color:var(--text);font-weight:600}
.dm-fw{color:var(--text-3);font-size:11px;font-variant-numeric:tabular-nums}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:100px;border:1px solid transparent}
.tag .d{width:6px;height:6px;border-radius:50%;background:currentColor}
.tag.t-ok{color:var(--ok);background:var(--ok-tint,rgba(61,190,120,.13))}
.tag.t-warn{color:var(--warn);background:var(--warn-tint,rgba(232,163,61,.13))}
.tag.t-bad{color:var(--bad);background:var(--bad-tint,rgba(226,86,77,.13))}
.tag.t-info{color:var(--info,#4D94E2);background:var(--info-tint,rgba(77,148,226,.13))}
.tag.t-mut{color:var(--text-3);background:var(--panel-2,rgba(255,255,255,.04))}
@media(max-width:1200px){.dm-cmd{grid-template-columns:1fr}.dm-row3{grid-template-columns:1fr 1fr}}
@media(max-width:1080px){.dm-metrics{grid-template-columns:repeat(2,1fr)}.dm-ops2{grid-template-columns:1fr}.dm-row3{grid-template-columns:1fr}}

/* MAP-9: location search (airspace page + wizard) */
.as-search{position:relative;display:block;margin-bottom:8px}
.wz-as-search{margin-bottom:0;min-width:240px;flex:1}
.as-search-r{position:absolute;top:100%;left:0;right:0;z-index:60;background:var(--panel,#171b21);border:1px solid var(--line);border-radius:9px;margin-top:4px;max-height:240px;overflow-y:auto;box-shadow:0 10px 28px rgba(0,0,0,.45)}
.as-search-r.hidden{display:none}
.as-search-i{padding:9px 12px;font-size:12.5px;cursor:pointer;border-bottom:1px solid var(--line-soft,var(--line));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.as-search-i:last-child{border-bottom:none}
.as-search-i:hover{background:var(--panel-2,rgba(255,255,255,.04))}
.as-search-i.muted{color:var(--text-3);cursor:default}

/* SEC-32: honeypot field is removed from visual + AT flow */
.hp-field{position:absolute !important;left:-9999px;top:-9999px;height:1px;width:1px;overflow:hidden;opacity:0}
#su-turnstile{margin:10px 0}
/* SEC-31: unverified-email banner */
.verify-banner{display:flex;align-items:center;gap:10px;background:var(--warning-bg,#fff7e6);border:1px solid var(--warning,#e8a33c);color:var(--text-1,#333);padding:8px 14px;border-radius:8px;margin:10px 14px 0;font-size:13px}
.verify-banner .btn{margin-left:auto}

/* UI-A11Y: destructive-action button + styled confirm dialog (replaces native confirm) */
.btn-danger{background:var(--bad);color:#fff;box-shadow:0 4px 14px rgba(226,86,77,.28)}
.btn-danger:hover{background:#ec6a62}
.btn-danger:disabled{background:var(--panel-3);color:var(--text-3);box-shadow:none;cursor:not-allowed}
#confirm-root{position:fixed;inset:0;z-index:1200;display:none}
#confirm-root.on{display:block}
.confirm-scrim{position:absolute;inset:0;background:rgba(6,9,14,.66);backdrop-filter:blur(3px)}
.confirm-box{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:440px;max-width:92vw;
  background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 80px rgba(0,0,0,.6);
  padding:22px 22px 18px;animation:modal-pop .18s cubic-bezier(.4,0,.2,1)}
.confirm-box:focus{outline:none}
.confirm-msg{color:var(--text);font-size:14.5px;line-height:1.5;white-space:pre-line;margin-bottom:18px}
.confirm-actions{display:flex;justify-content:flex-end;gap:10px}
.confirm-actions .btn{min-width:96px}
/* A11Y: visible keyboard-focus ring across interactive elements (was relying on
   browser default, which the dark theme washed out). */
.btn:focus-visible,.nav-item:focus-visible,.nav-subitem:focus-visible,
input:focus-visible,select:focus-visible,textarea:focus-visible,
[data-close]:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--brand-2);outline-offset:2px;border-radius:8px}
/* A11Y: skip-to-content link, visible only on keyboard focus */
.skip-link{position:absolute;left:-9999px;top:8px;z-index:1300;background:var(--brand);color:#fff;
  padding:8px 14px;border-radius:8px;font-size:13px;text-decoration:none}
.skip-link:focus{left:12px}
/* A11Y: honour reduced-motion for the animated overlays */
@media (prefers-reduced-motion: reduce){
  .confirm-box,.modal-dialog{animation:none}
}

/* P1: JSA tri-state — explicit "not checked" is a red flag, not a silent pending */
.jsa-btn.on-notchecked{background:var(--bad);color:#fff;border-color:var(--bad)}
.jsa-item.jsa-flag{border:1px solid var(--bad);background:rgba(226,86,77,.08);border-radius:10px}

/* P4: readable rotated full-name matrix headers + P11 matrix polish */
.matrix-named thead th.mx-rot{height:150px;vertical-align:bottom;padding:0 4px;white-space:nowrap}
.matrix-named thead th.mx-rot span{display:inline-block;transform:rotate(-55deg) translateX(6px);transform-origin:bottom left;font-size:11.5px;font-weight:600;color:var(--text-2);max-width:150px;overflow:hidden;text-overflow:ellipsis}

/* P6: schedule drag-drop affordance */
.gcell-job[draggable="true"]{cursor:grab}
.gantt-cell.drop-ok{outline:2px dashed var(--brand);outline-offset:-2px;background:var(--brand-tint)}

/* P8: flight map fullscreen toggle */
.fl-map-full{position:fixed !important;inset:52px 0 0 0 !important;z-index:95;width:100vw !important;height:calc(100vh - 52px) !important;border-radius:0 !important}
/* P7: clickable inventory filter tiles */
.tile.tile-click{cursor:pointer;transition:.12s}
.tile.tile-click:hover{border-color:var(--brand-line);transform:translateY(-1px)}

/* ============ P11: application-wide visual uplift ============ */
/* Bigger, more confident type + controls; stronger use of the brand orange. */
body{font-size:14.5px}
.section-h h2{font-size:22px;letter-spacing:.2px}
.section-h .sub{font-size:13px}
.btn{padding:9px 16px;font-size:13.5px;border-radius:10px}
.btn-sm{padding:7px 12px;font-size:12.5px}
.btn-primary{box-shadow:0 4px 16px rgba(232,104,40,.3)}
.tab{font-size:13px;padding:9px 14px}
.card-h h3{font-size:16px}
.tile .tv{font-size:24px}
.dm-big{font-size:40px}
th{font-size:12px}
td{font-size:13px}
/* P11: improved secondary-text contrast (operator screenshot showed washed-out
   labels; these lift --text-2/--text-3 toward WCAG AA on the dark panels) */
:root{--text-2:#B7C0CC;--text-3:#8A94A2}
/* P11: crew card popup — bigger, fills the viewport better */
#fsv .cp-wrap,.fsv .cp-wrap{max-width:1240px;margin:0 auto}
.cp-stat-n{font-size:26px}
.cp-stat-l{font-size:12.5px}
.cp-sec .sec-t{font-size:14px}
.kv-main{font-size:13.5px}
.kv-sub{font-size:12px}
/* P11: risk-assessment generator readability */
.ra-step,.ra-form .frow label{font-size:13.5px}

/* P8: richer, full-width flight-log review */
#fsv .fsv-body:has(.flx-cells), .fsv-body.fl-rich{max-width:none;padding:18px 28px}
.flx-cells{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}
.flx-cell-v{font-size:15px}
.fsv-body .fs-card{max-width:1400px;margin-left:auto;margin-right:auto}

/* ===== SCHED-3/4/5 (v1.87): schedule overhaul ===== */
[data-sdrag]{touch-action:none;cursor:grab}
body.sdragging{cursor:grabbing;user-select:none}
body.sdragging *{cursor:grabbing!important}
.sghost{position:fixed;z-index:2000;pointer-events:none;opacity:.88;box-shadow:0 8px 24px rgba(0,0,0,.28);border-radius:8px;max-width:240px}
.sdrop-hover{outline:2px solid var(--accent,#E86828);outline-offset:-2px;background:rgba(232,104,40,.08)!important}
.schedfil{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-6px 0 14px}
.confbadge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--warn,#E8A33C);background:rgba(232,163,60,.12);border:1px solid rgba(232,163,60,.4);border-radius:99px;padding:3px 10px;cursor:pointer}
/* jobs day/week */
.scol-wkend{background:var(--panel-2)}
.sc-seg{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--text-3);padding:2px 2px 0}
.sc-rel{color:var(--ok,#3DBE78);font-weight:800;margin-left:4px}
.sc-add{border:1px dashed var(--line);background:none;color:var(--text-3);border-radius:8px;padding:4px;cursor:pointer;font-size:14px;line-height:1;margin-top:auto}
.sc-add:hover{color:var(--accent,#E86828);border-color:var(--brand-line)}
/* month grid */
.mgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.mgrid-h{margin-bottom:6px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);text-align:center}
.mcellD{background:var(--panel);border:1px solid var(--line);border-radius:9px;min-height:96px;padding:6px;display:flex;flex-direction:column;gap:3px;cursor:pointer}
.mcellD:hover{border-color:var(--brand-line)}
.mcellD.other{opacity:.35;pointer-events:none}
.mcellD.wkend{background:var(--panel-2)}
.mcellD.today{border-color:var(--accent,#E86828);box-shadow:inset 0 0 0 1px var(--accent,#E86828)}
.mnum{font-size:11.5px;font-weight:700;color:var(--text-2);font-family:var(--mono)}
.mpip{font-size:10px;font-weight:700;color:#fff;border-radius:5px;padding:2px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mpip.ok{background:var(--ok,#3DBE78)}.mpip.warn{background:var(--warn,#E8A33C)}.mpip.bad{background:var(--bad,#E2564D)}
.mmore{font-size:10px;color:var(--text-3);font-weight:700}
/* crew / equipment grids */
.gantt-name{position:sticky;left:0;background:var(--panel);z-index:2}
.gantt-head .gantt-name{background:var(--panel-2)}
.gantt-row:nth-child(even) .gantt-name{background:var(--panel)}
.gantt-day.wkend,.gantt-cell.wkend{background:var(--panel-2)}
.gantt-cell.util-2{background:rgba(232,163,60,.07)}
.gantt-cell.util-3{background:rgba(226,86,77,.09)}
.wload{margin-left:auto;font-size:10px;font-weight:800;font-family:var(--mono);background:var(--panel-2);border:1px solid var(--line);border-radius:99px;padding:1px 7px;color:var(--text-2);flex:none}
.gmore{font-size:9.5px;color:var(--text-3);font-weight:700;text-align:center}
.gantt-row-v{height:52px;overflow:hidden}
#gantt-scroll{max-height:70vh}
.rost-av.st-ok{box-shadow:0 0 0 2px var(--ok,#3DBE78)}
.rost-av.st-warning{box-shadow:0 0 0 2px var(--warn,#E8A33C)}
.rost-av.st-blocked{box-shadow:0 0 0 2px var(--bad,#E2564D)}
.eqdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px;vertical-align:middle}
.eqdot.ok{background:var(--ok,#3DBE78)}.eqdot.warn{background:var(--warn,#E8A33C)}.eqdot.bad{background:var(--bad,#E2564D)}
.strike{text-decoration:line-through;color:var(--text-3)}
.gcell-job.gout{background:var(--text-3);opacity:.55}
.gcell-job:focus{outline:2px solid var(--accent,#E86828);outline-offset:1px}
/* hover card */
.hovercard{position:fixed;z-index:1500;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.35);padding:10px 12px;max-width:320px;pointer-events:none;font-size:12px}
.hc-t{font-weight:700;font-size:12.5px;margin-bottom:3px}
.hc-r{color:var(--text-2);margin-top:2px}
.hc-c{color:var(--bad,#E2564D);margin-top:5px;font-size:11.5px}

/* SCHED-6 (v1.88): multi-crew chips + vertical day timeline */
.gcell-job.xc{outline:1px dashed rgba(255,255,255,.55);outline-offset:-2px}
.tl-wrap{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-top:4px}
.tl-hour{position:absolute;left:0;right:0;border-top:1px solid var(--line);opacity:.6}
.tl-hour span{position:absolute;left:8px;top:-8px;font-size:10px;font-family:var(--mono);color:var(--text-3);background:var(--panel);padding:0 3px}
.tl-card{position:absolute;background:var(--canvas);border:1px solid var(--line);border-radius:8px;padding:6px 8px;overflow:hidden;cursor:pointer;transition:border-color .13s;z-index:2}
.tl-card:hover{border-color:var(--brand-line);z-index:4}

/* SCHED-7 (v1.88.1): crew-view chip shows job number + role on two tiers */
.gcell-job .gj-ref{display:block;font-weight:700;line-height:1.15;overflow:hidden;text-overflow:ellipsis}
.gcell-job .gj-role{display:block;font-size:8.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;opacity:.85;line-height:1.1;overflow:hidden;text-overflow:ellipsis}

/* CREW-REVIEW A5 (v1.89.0): tabbed crew profile */
.cp-hero-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;align-items:center}
.cp-role-sel{max-width:180px;padding:5px 8px;font-size:12px}
.cp-tabs{margin:14px 0 16px}
.cp-tabbadge{display:inline-block;min-width:16px;text-align:center;font-size:10px;font-weight:800;border-radius:99px;padding:1px 5px;margin-left:4px}
.cp-tabbadge.bad{background:var(--bad,#E2564D);color:#fff}
.cp-tabbadge.warn{background:var(--warn,#E8A33C);color:#fff}
.cp-attn{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:14px 0 0}
.cp-attn-h{font-size:12px;font-weight:800;display:flex;align-items:center;gap:6px;margin-bottom:6px}
.cp-attn-n{font-weight:600;color:var(--text-3);margin-left:4px}
.cp-attn-row{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:none;border-top:1px solid var(--line-soft);padding:6px 4px;font-size:12.5px;color:var(--text);cursor:pointer}
.cp-attn-row:hover{color:var(--accent,#E86828)}
.cp-attn-dot{width:8px;height:8px;border-radius:50%;flex:none}
.cp-attn-row.bad .cp-attn-dot{background:var(--bad,#E2564D)}
.cp-attn-row.warn .cp-attn-dot{background:var(--warn,#E8A33C)}
.cp-attn-ok{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ok,#3DBE78);font-weight:600}
.cp-pane{animation:fadeIn .15s ease}

/* CREW-REVIEW A6 (v1.90.1): command-centre overview + wider profile */
.cp-over-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}
.cp-chart-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px 12px}
.cp-chart-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin-bottom:8px}
.cp-chart-card canvas{width:100%;height:150px;display:block}
/* row 2: eligibility graphic (wide) + highlighted depot card */
.cp-over-grid2{display:grid;grid-template-columns:1.7fr 1fr;gap:16px;margin-top:16px}
.elig-graphic{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.elig-chip{display:flex;align-items:flex-start;gap:9px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel-2)}
.elig-chip.ok{border-color:rgba(61,190,120,.35)}
.elig-chip.warn{border-color:rgba(232,163,60,.45);background:rgba(232,163,60,.06)}
.elig-chip.bad{border-color:rgba(226,86,77,.5);background:rgba(226,86,77,.07)}
.elig-ic{width:20px;height:20px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#fff}
.elig-chip.ok .elig-ic{background:var(--ok,#3DBE78)}
.elig-chip.warn .elig-ic{background:var(--warn,#E8A33C)}
.elig-chip.bad .elig-ic{background:var(--bad,#E2564D)}
.elig-tx{min-width:0}
.elig-k{font-size:13px;font-weight:700;color:var(--text)}
.elig-d{font-size:11.5px;color:var(--text-3);margin-top:1px}
.cp-depot-card{background:linear-gradient(150deg,rgba(232,104,40,.14),var(--panel) 60%);border:1px solid var(--brand-line,rgba(232,104,40,.4));border-radius:12px;padding:16px 18px}
.cp-depot-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);display:flex;align-items:center;gap:6px;margin-bottom:10px}
.cp-depot-primary{font-size:26px;font-weight:800;color:var(--text);line-height:1.1}
.cp-depot-more{font-size:12px;color:var(--text-2);margin-top:6px}
.cp-depot-empty{font-size:13px;color:var(--text-3)}
.cp-depot-toggles{margin-top:14px;border-top:1px solid var(--line-soft);padding-top:8px}
.cp-depot-toggles .dep-toggle{justify-content:space-between;border-bottom:1px solid var(--line-soft);padding:7px 0;font-size:13px}
@media(max-width:1200px){.cp-over-grid{grid-template-columns:repeat(3,1fr)}.cp-over-grid2{grid-template-columns:1fr}.elig-graphic{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.cp-over-grid{grid-template-columns:1fr}.elig-graphic{grid-template-columns:1fr}}
/* personal detail grid — fills the width instead of a thin stack */
.cp-detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px 28px;margin-top:6px}
@media(max-width:1100px){.cp-detail-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.cp-detail-grid{grid-template-columns:1fr}}
.cp-detail{padding:11px 2px;border-bottom:1px solid var(--line-soft);min-width:0}
.cp-detail-k{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);margin-bottom:3px}
.cp-detail-v{font-size:13.5px;color:var(--text);word-break:break-word}
.cp-detail-empty{color:var(--text-3);font-style:italic;font-size:12.5px}
.cp-hero-stats{gap:12px}
.rost-avwrap{display:inline-block;position:relative;line-height:0}

/* v1.90.3: agreement completion progress bars */
.ag-progress{height:5px;border-radius:3px;background:var(--line);margin-top:6px;max-width:320px;overflow:hidden}
.ag-progress-bar{height:100%;background:linear-gradient(90deg,var(--accent,#E86828),var(--ok,#3DBE78));border-radius:3px;transition:width .3s}

/* v1.90.5: per-agreement admin actions (wet-signed upload / blank / clear) */
.agree-actions{display:flex;gap:14px;align-items:center;margin-top:6px;flex-wrap:wrap}
.agree-actions .link-add{font-size:11.5px;display:inline-flex;align-items:center;gap:3px}
.link-danger{color:var(--bad,#E2564D)!important}

/* v1.93: Itinerary (TripDesk) integration */
.itin-wrap{height:calc(100vh - 122px);min-height:620px}
.itin-frame{width:100%;height:100%;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.gcell-trip{display:flex;align-items:center;gap:4px;background:var(--info-t);border:1px solid rgba(77,148,226,.45);color:var(--info);
  border-radius:5px;padding:1px 6px;font-size:10.5px;font-weight:600;cursor:pointer;min-width:0;overflow:hidden;white-space:nowrap}
.gcell-trip .gj-role{overflow:hidden;text-overflow:ellipsis;font-weight:600}
.gcell-trip:hover{border-color:var(--info)}
.eqpip.trip{background:var(--info)}

/* v1.99.2: JSA four-state selector — green checked · red not checked · blue N/A.
   N/A is now a real recorded answer (checked=3), distinct from pending (0),
   so the button lights up on selection instead of silently doing nothing. */
.jsa-btn.on-na{background:var(--info);color:#fff}
.jsa-item.jsa-na{border:1px solid rgba(77,148,226,.45);background:var(--info-t);border-radius:10px}

/* v1.100: Job Area airspace panel — full width + bold verdict header.
   The readout was capped narrow beside the map; on the full-width Job Area step
   it should use the page. Verdict colours: red restricted, orange caution,
   green clear (operator request). */
.wz-as-readout.wz-as-wide{max-width:none;width:100%;max-height:none}
.as-verdict{border-radius:12px;padding:14px 16px;margin:0 0 12px;border:1px solid var(--line);background:var(--panel-2)}
.as-verdict-t{font-family:var(--disp,inherit);font-size:19px;font-weight:800;letter-spacing:.04em}
.as-verdict-s{font-size:12.5px;color:var(--text-2);margin-top:4px}
.as-verdict.restricted{background:var(--bad-t);border-color:rgba(226,86,77,.45)}
.as-verdict.restricted .as-verdict-t{color:var(--bad)}
.as-verdict.caution{background:var(--warn-t);border-color:rgba(232,163,61,.45)}
.as-verdict.caution .as-verdict-t{color:var(--warn)}
.as-verdict.clear{background:var(--ok-t);border-color:rgba(61,190,120,.45)}
.as-verdict.clear .as-verdict-t{color:var(--ok)}
.as-verdict-key{display:flex;gap:14px;margin-top:9px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.as-verdict-key .k{display:flex;align-items:center;gap:5px;color:var(--text-3)}
.as-verdict-key .k::before{content:'';width:10px;height:10px;border-radius:3px;display:inline-block}
.as-verdict-key .k.r::before{background:var(--bad)}
.as-verdict-key .k.c::before{background:var(--warn)}
.as-verdict-key .k.g::before{background:var(--ok)}

/* P11 — app-wide table filter (auto-injected above every list/matrix table) */
.tbl-filter{display:flex;align-items:center;gap:10px;margin:0 0 8px}
.tbl-filter-i{max-width:300px;font-size:12.5px;padding:6px 10px}
.tbl-filter-n{font-size:11.5px;color:var(--text-3);white-space:nowrap}
@media (max-width:600px){.tbl-filter-i{max-width:none;flex:1}}

/* AREA-1 — custom job area types in the draw palette */
.ja-tmpl-add{border-style:dashed!important;opacity:.85}
.ja-tmpl-add:hover{opacity:1}
.ja-tmpl-x{margin-left:6px;opacity:.55;font-weight:700;padding:0 2px;border-radius:3px}
.ja-tmpl-x:hover{opacity:1;background:rgba(226,86,77,.25);color:var(--bad)}

/* MEASURE-1 — point-to-point distance readout (km + NM) */
.measure-out{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0;padding:9px 13px;
  border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:8px;
  background:var(--panel-2,var(--panel));font-size:12.5px}
.measure-out.hidden{display:none}
.measure-out .m-km{font-size:15px;font-weight:700;color:var(--brand)}
.measure-out .m-nm{font-size:15px;font-weight:700;color:var(--info)}
[data-measure-toggle].on{background:var(--brand);color:#fff;border-color:var(--brand)}

/* CRP-1 — Chief Remote Pilot appointment toggle on the crew card */
.cp-crp{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;padding:6px 11px;
  border:1px solid var(--line);border-radius:8px;background:var(--panel-2,var(--panel));cursor:pointer}
.cp-crp input{accent-color:var(--brand)}
.cp-crp:has(input:checked){border-color:var(--brand);color:var(--brand)}

/* AS-3 — consolidated full-width airspace read-out */
.as-panel{width:100%;max-width:none;border:1px solid var(--line);border-radius:12px;
  background:var(--panel);padding:0 0 4px;overflow:hidden}
.as-panel.as-restricted{border-color:rgba(226,86,77,.55);box-shadow:0 0 0 1px rgba(226,86,77,.16) inset}
.as-panel.as-caution{border-color:rgba(232,163,60,.5)}
.as-panel.as-clear{border-color:rgba(61,190,120,.45)}
.as-panel .as-verdict{margin:0;border-radius:0;border:0;border-bottom:1px solid var(--line);padding:16px 20px}
.as-panel .as-verdict-t{font-family:var(--disp);font-size:19px;font-weight:800;letter-spacing:.02em}
.as-panel.as-restricted .as-verdict{background:linear-gradient(180deg,rgba(226,86,77,.20),transparent)}
.as-panel.as-restricted .as-verdict-t{color:var(--bad)}
.as-panel.as-caution .as-verdict{background:linear-gradient(180deg,rgba(232,163,60,.16),transparent)}
.as-panel.as-caution .as-verdict-t{color:var(--warn)}
.as-panel.as-clear .as-verdict{background:linear-gradient(180deg,rgba(61,190,120,.14),transparent)}
.as-panel.as-clear .as-verdict-t{color:var(--ok)}
.as-panel .as-verdict-s{font-size:13px;color:var(--text-2);margin-top:5px;max-width:76ch}
.as-verdict-key{display:flex;gap:14px;margin-top:9px;font-size:10.5px;letter-spacing:.06em;color:var(--text-3)}
.as-verdict-key .k::before{content:"";display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.as-verdict-key .k.r::before{background:var(--bad)}
.as-verdict-key .k.c::before{background:var(--warn)}
.as-verdict-key .k.g::before{background:var(--ok)}
.as-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;
  background:var(--line);border-bottom:1px solid var(--line)}
.as-facts>div{background:var(--panel);padding:10px 14px}
.as-facts span{display:block;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);margin-bottom:3px}
.as-facts b{font-size:13.5px}
.as-agl{background:var(--warn);color:#1a1200;padding:1px 6px;border-radius:4px;font-weight:700}
.as-area{margin:14px 16px;padding:13px 15px;border:1px solid var(--line);border-left-width:4px;border-radius:9px;background:var(--panel-2,rgba(255,255,255,.02))}
.as-area-restricted{border-left-color:var(--bad)}
.as-area-caution{border-left-color:var(--warn)}
.as-area-clear{border-left-color:var(--ok)}
.as-area-h{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:9px;font-size:14.5px}
.as-area-h .as-sw{width:12px;height:12px;border-radius:3px;flex:none}
.as-area-badge{margin-left:auto;font-size:10px;letter-spacing:.07em;font-weight:700;padding:3px 9px;border-radius:20px}
.as-area-badge.restricted{background:rgba(226,86,77,.2);color:var(--bad)}
.as-area-badge.caution{background:rgba(232,163,60,.18);color:var(--warn)}
.as-area-badge.clear{background:rgba(61,190,120,.16);color:var(--ok)}
.as-vol{padding:9px 11px;margin-bottom:7px;border-radius:7px;background:rgba(255,255,255,.03);border-left:3px solid var(--line)}
.as-vol.vol-red{border-left-color:var(--bad);background:rgba(226,86,77,.09)}
.as-vol-h{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:13px}
.as-vol-a{font-size:12px;color:var(--text-2);margin-top:5px;line-height:1.45}
.as-clear-badge{background:var(--bad);color:#fff;font-size:9.5px;font-weight:700;letter-spacing:.06em;padding:2px 7px;border-radius:20px}
.as-aero-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.as-aero-chip{font-size:12px;padding:4px 10px;border:1px solid var(--line);border-radius:20px;color:var(--text-2)}
.as-aero-chip.in{border-color:var(--warn);color:var(--warn)}
.as-ro-sub{font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3);margin:11px 0 6px}
.as-foot{font-size:10.5px;color:var(--text-3);padding:4px 16px 12px}

/* FREQ-4 — frequency entry rows + panel manager bar */
.fq-row{display:grid;grid-template-columns:120px 150px 1fr 32px;gap:8px;margin-bottom:7px;align-items:center}
.as-freq-mgr{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
@media (max-width:700px){.fq-row{grid-template-columns:1fr 1fr;grid-auto-rows:auto}}

/* SNAP-1 — national airspace dataset status in empty panels */
.snap-note{display:flex;align-items:center;gap:12px;padding:11px 13px;margin:6px 0;
  border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:8px;
  background:rgba(255,255,255,.02);font-size:12.5px;line-height:1.5}
.snap-note.bad{border-left-color:var(--bad)}
.snap-note button{margin-left:auto;white-space:nowrap;flex:none}
.spinner-sm{width:16px;height:16px;flex:none}

/* OPS-1 — job cards on the operational release gate (replaces a <select>) */
.ops-jobs{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:9px;
  max-height:340px;overflow-y:auto;padding:2px}
.ops-job{text-align:left;background:var(--panel-2,rgba(255,255,255,.02));border:1px solid var(--line);
  border-left:3px solid var(--line);border-radius:9px;padding:10px 12px;cursor:pointer;
  color:var(--text-1);font:inherit;transition:border-color .12s,background .12s}
.ops-job:hover{border-color:var(--text-3)}
.ops-job.on{border-color:var(--brand);border-left-color:var(--brand);background:rgba(232,104,40,.10)}
.ops-job.adhoc{border-style:dashed}
.oj-top{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.oj-ref{font-size:11px;color:var(--text-3)}
.oj-status{margin-left:auto;font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;
  padding:2px 7px;border-radius:20px;background:rgba(255,255,255,.06);color:var(--text-2)}
.oj-status.released{background:rgba(61,190,120,.18);color:var(--ok)}
.oj-status.release_pending,.oj-status.pending{background:rgba(232,163,60,.18);color:var(--warn)}
.oj-status.in_progress{background:rgba(77,148,226,.18);color:var(--info)}
.oj-name{font-size:13.5px;font-weight:600;line-height:1.3;margin-bottom:5px}
.oj-meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:11.5px;color:var(--text-3)}
.oj-late{color:var(--warn)}
@media (max-width:600px){.ops-jobs{grid-template-columns:1fr;max-height:none}}

/* NAV-1 — My Jobs count badge + field-view cross-link from the Jobs list */
.ni-badge{margin-left:auto;background:var(--brand);color:#fff;font-size:10.5px;font-weight:700;
  min-width:18px;height:18px;padding:0 5px;border-radius:9px;display:inline-flex;
  align-items:center;justify-content:center}
.mj-link{cursor:pointer;border:1px solid var(--info);background:transparent;
  color:var(--info);font:inherit;font-size:10.5px;padding:1px 8px}
.mj-link:hover{background:rgba(77,148,226,.15)}

/* PF-1 — per-item equipment return on the post-flight checklist */
.pf-eq{margin-bottom:6px}
.pf-eq-src{display:block;font-size:10.5px;color:var(--text-3);margin-top:1px}
.pf-eq-note{margin:5px 0 0 28px;width:calc(100% - 28px);font-size:12.5px;
  border-color:var(--warn)}
.pf-eq-note.hidden{display:none}

/* SOP-1 — structured SOP library and builder */
.sop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:11px;margin-bottom:16px}
.sop-card{border:1px solid var(--line);border-radius:10px;padding:13px 15px;background:var(--panel-2,rgba(255,255,255,.02))}
.sop-h{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:6px}
.sop-ref{font-size:11px;color:var(--text-3)}
.sop-t{font-size:14.5px;font-weight:600;line-height:1.3;margin-bottom:4px}
.sop-m{font-size:11.5px;color:var(--text-3);margin-bottom:10px}
.sop-a{display:flex;gap:6px;flex-wrap:wrap}
.sop-edit{max-width:900px;margin:0 auto}
.sop-sec{border:1px solid var(--line);border-radius:10px;padding:13px 15px;margin-bottom:11px;background:var(--panel)}
.sop-sec-h{display:flex;align-items:center;gap:9px;margin-bottom:6px}
.sop-sec-h .mono{color:var(--text-3);font-size:12px;min-width:16px}
.sop-head{font-weight:600}
.sop-body{margin-top:7px;width:100%}
.sop-sec-a{display:flex;gap:7px;margin-top:8px}
.sop-img{max-width:100%;border-radius:8px;margin-top:9px;border:1px solid var(--line)}
.sop-att{margin-top:8px;font-size:12.5px;color:var(--info);display:flex;align-items:center;gap:6px}
.chk-inline{display:inline-flex;align-items:center;gap:6px;margin:0 12px 6px 0;font-size:12.5px}
.chk-inline input{accent-color:var(--brand)}

/* SHEET-3 — job sheet audience chooser + printed SOP pages */
.choice-row{display:block;width:100%;text-align:left;padding:13px 15px;margin-bottom:9px;height:auto}
.choice-l{font-size:14px;font-weight:600;margin-bottom:3px}
.choice-h{font-size:12px;color:var(--text-3);line-height:1.45;white-space:normal}
.sop-print{margin-bottom:9mm}
.sop-print-h{display:flex;justify-content:space-between;align-items:baseline;
  border-bottom:1px solid #999;padding-bottom:2mm;margin-bottom:3mm}
.sop-print-s{margin-bottom:3mm}
.sop-print-s .k{font-size:8pt;letter-spacing:.06em;text-transform:uppercase;color:#555}
.sop-print-s .v{font-size:9.5pt;line-height:1.5;white-space:pre-wrap}

/* ITIN-1/2 — hide the planner until it has painted, so its own splash screen
   never flashes in place of ours */
.itin-frame.itin-hidden{visibility:hidden;position:absolute;pointer-events:none}
.itin-load{margin:40px auto}
