/* 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 ---------- */
/* AUTH-10: the signup card is much taller than the sign-in card - it adds the
   organisation and name fields, the plan selector and, since v1.144.0, the
   confirm-password field. `place-items:center` on a fixed, full-viewport grid
   centres the card and then CLIPS IT AT BOTH ENDS when it outgrows the screen,
   with no scrollbar to recover it: on a laptop or any phone the plan options
   and the submit button simply could not be reached, so a new company could not
   finish signing up at all.
   overflow-y:auto restores scrolling; `align-items:start` with auto margins
   keeps the card centred when it FITS and lets it scroll from the top when it
   does not - centring alone would still hide the overflowing top edge. */
.login{position:fixed;inset:0;display:grid;justify-items:center;align-items:start;
  overflow-y:auto;padding:24px 0;
  background:radial-gradient(900px 500px at 70% -10%,rgba(232,104,40,.10),transparent 60%),var(--canvas)}
.login-card{margin:auto 0}
.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}
/* UI-12: the sidebar is height:100vh and sticky, so an expanded sub-tree
   simply overflowed with no way to reach the items below - Weather and
   Flight Logs became unclickable whenever Operations was open. flex:1
   sizes it; min-height:0 is what actually lets a flex child scroll. */
.nav{padding:12px 12px;display:flex;flex-direction:column;gap:3px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.nav::-webkit-scrollbar{width:6px}
.nav::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.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}
.menu-btn{display:none;width:38px;height:38px;border-radius:9px;color:var(--text-2);border:1px solid var(--line);background:var(--panel);place-items:center;flex:none}
.side-scrim{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:55;opacity:0;pointer-events:none;transition:.2s}
.side-scrim.on{opacity:1;pointer-events:auto}
.mtabbar{display:none}
.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;flex-wrap:wrap}
.section-h h2{white-space:nowrap}
.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;flex-wrap:wrap;row-gap:0}
/* TABS-1 (v1.171.0): a strip of eleven tabs used to push the whole page to
   1,719px at a 1,500px viewport - the app scrolled sideways on a desktop.
   Groups wrap as units on desktop; on a phone the strip scrolls (see MOBILE-1). */
.tabgroup{flex:none}
.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-1 (v1.171.0): toasts sat at the top of the page, over the airspace
   map's toolbar and every page header. Bottom-centre, clear of the mobile tab bar. */
.toast-wrap{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:130;display:flex;flex-direction:column-reverse;gap:9px;align-items:center;pointer-events:none}
.toast{pointer-events:auto}
@media (max-width:900px){.toast-wrap{bottom:calc(76px + env(safe-area-inset-bottom));width:calc(100vw - 24px)}.toast{width:100%}}
.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}
/* CRED-1: the credential copy field, at the point of entry */
.onb-credfile{display:block;margin-top:12px;font-size:13px;font-weight:600}
.onb-credfile-hint{display:block;font-weight:400;font-size:11.5px;color:var(--text-3);margin:2px 0 6px}
.onb-credfile input[type=file]{display:block;width:100%;font-weight:400}
.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){.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-qr{display:block;width:max-content;background:#fff;padding:6px;border-radius:8px;margin:6px 0;line-height:0}
.mfa-qr svg{width:180px;height:180px;display: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}
/* MAPHINT-1 (v1.171.0): sat at the top, over the Map/Satellite/Measure toolbar */
.mm-hint{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);max-width:min(90%,420px);text-align:center;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 - 176px);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}
.as-std-badge{display:inline-block;background:color-mix(in srgb,var(--ok) 22%,transparent);color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 50%,transparent);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)}
/* FL-37 (v1.168.2): the flight map was a 160px strip - fine as a thumbnail,
   useless for reviewing what happened on a flight. It is now the largest thing
   on the panel, which is what an operator is actually there to look at. */
.flx-map{height:min(58vh,520px);min-height:300px;border-radius:10px;overflow:hidden;
  margin-top:10px;background:rgba(255,255,255,.03);border:1px solid var(--line)}
.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 */
/* AUTH-10: the honeypot was off-screen but still IN THE TAB ORDER, so tabbing
   from "Your name" landed in an invisible field and the next Tab appeared to
   skip straight past Email. The input itself carries tabindex="-1"; this makes
   the whole wrapper inert so nothing inside it can take focus. */
.hp-field{position:absolute !important;left:-9999px;top:-9999px;height:1px;width:1px;overflow:hidden;opacity:0;
  pointer-events:none}
#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-3 (v1.173.6): the planner sits under the Itinerary header (144px from
   the top with the app bar) and the view's 60px scroll allowance is dropped
   while it is on screen, so the tab fits the window without a page scroll. */
.itin-wrap{height:calc(100vh - 174px);min-height:620px}
#view:has(> #itin-body .itin-wrap){padding-bottom:16px}
.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)}

/* UX-TBL (v1.171.0) — the shared table behaviour: toolbar, sort, sticky head, selection */
.tbl-filter{display:flex;align-items:center;gap:8px;margin:0 0 8px;flex-wrap:wrap}
.tbl-card .tbl-filter{padding:10px 12px 0}
.tbl-filter-i{max-width:280px;font-size:12.5px;padding:6px 10px}
.tbl-sel-f{width:auto;max-width:200px;font-size:12px;padding:5px 26px 5px 9px}
.tbl-filter-n{font-size:11.5px;color:var(--text-3);white-space:nowrap;margin-left:auto}
.btn-xs{padding:4px 9px;font-size:11.5px}
.tbl-export{margin-left:2px}
.tbl-selbar{display:flex;align-items:center;gap:6px;flex-basis:100%;padding:6px 10px;border:1px solid var(--brand-line);background:var(--brand-tint,rgba(232,104,40,.08));border-radius:9px}
.tbl-seln{font-size:12px;font-weight:600;margin-right:6px}
th.th-sort{cursor:pointer;user-select:none;position:relative;padding-right:22px}
th.th-sort::after{content:'';position:absolute;right:9px;top:50%;width:0;height:0;margin-top:-3px;border:4px solid transparent;border-top-color:var(--text-3);opacity:.35}
th.th-sort:hover::after{opacity:.8}
th.th-sort.sorted[aria-sort=ascending]::after{border-top-color:transparent;border-bottom-color:var(--brand);margin-top:-7px;opacity:1}
th.th-sort.sorted[aria-sort=descending]::after{border-top-color:var(--brand);opacity:1}
th.th-sort.sorted{color:var(--text)}
.tbl-sel{width:34px;padding-left:14px;padding-right:0}
.tbl-sel input{accent-color:var(--brand);width:15px;height:15px;cursor:pointer}
/* sticky heading: a card clips (not scrolls), so the header sticks to the viewport under the topbar */
.tbl-card{overflow:clip}
table.tbl thead th{position:sticky;top:var(--topbar-h,62px);background:var(--panel);z-index:2}
@media (max-width:600px){.tbl-filter-i{max-width:none;flex:1}.tbl-filter-n{margin-left:0}}

/* 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}

/* SET-1: grouped settings tab bar. The label is what turns ten flat tabs into
   four decisions - without it the grouping is invisible and the change is
   cosmetic only. The separator carries the grouping visually for anyone who
   reads shape before text. */
.tabgroup{display:inline-flex;align-items:center;gap:4px;padding:0 10px 0 0;margin-right:6px;
  border-right:1px solid var(--line)}
.tabgroup:last-child{border-right:0;margin-right:0;padding-right:0}
.tabgroup-l{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);
  padding-right:4px;white-space:nowrap;user-select:none}
@media (max-width:900px){
  .tabgroup{border-right:0;padding-right:0;margin-right:2px}
  .tabgroup-l{display:none}   /* the labels cost more than they give on a phone */
}

/* SCHED-7: after-the-fact conflict report. Deliberately NOT a modal - it sits
   above the grid so it can be read alongside the change it describes, and left
   open while the operator works through it. */
.sched-confl{background:var(--panel,#12161c);border:1px solid var(--warn,#e8a33c);
  border-radius:10px;padding:12px 14px;margin-bottom:14px}
.sched-confl-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.sched-confl-b{display:flex;flex-direction:column;gap:6px}
.sched-confl-i{display:flex;align-items:center;gap:8px;font-size:13px}
.sched-confl-i .d{width:7px;height:7px;border-radius:50%;flex:none}
.sched-confl-i .d.bad{background:var(--danger,#e5534b)}
.sched-confl-i .d.warn{background:var(--warn,#e8a33c)}

/* RISK-1: sections of the merged Risk & Legality step. Numbered because the
   order is the order the assessment is actually made - may we fly this at all,
   what could go wrong, what the crew checks on site - and losing that sequence
   was the risk in merging three steps into one screen. */
.wiz-sec{border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:16px;
  background:var(--panel,#12161c)}
.wiz-sec-h{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px;
  padding-bottom:10px;border-bottom:1px solid var(--line)}
.wiz-sec-n{width:22px;height:22px;border-radius:50%;background:var(--accent,#e86828);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:none}

/* ITIN-2: the native trip list. Deliberately plain - this is the screen a crew
   member reads on a phone at a site with one bar of signal, so it must render
   from data we already hold and depend on nothing external. */
.itin-list{display:flex;flex-direction:column;gap:10px}
.itin-card{border:1px solid var(--line);border-radius:9px;padding:12px 14px;background:var(--panel,#12161c)}
.itin-card-h{display:flex;align-items:center;gap:10px;margin-bottom:4px}

/* ===== UI-6 (v1.165.4): classes a dozen modals reference that were never
   defined. The stylesheet had .modal-h / .modal-b; twelve call sites write
   .modal-head / .modal-body / .modal-foot, and several write .modal-f. Those
   dialogs rendered with no header rule, no padding, no scroll containment and
   no footer layout - the operator's "messy popup window". Defined as aliases
   rather than rewriting thirty call sites, which would risk missing one. The
   ui_audit rule added in this build fails the build on the next such class. */
.modal-head{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-head h3{font-family:var(--disp);font-size:20px;font-weight:800;margin:0}
.modal-body{padding:18px 22px 22px}
.modal-foot,.modal-f{display:flex;justify-content:flex-end;gap:8px;padding:14px 22px 20px;
  border-top:1px solid var(--line);position:sticky;bottom:0;background:var(--panel,#12161c)}
.modal-body .modal-foot,.modal-b .modal-f{padding-left:0;padding-right:0;border-top:1px solid var(--line)}

/* Pick lists (assign-training and friends): the two columns were bare
   checkboxes with no scroll, so a dozen modules and twenty crew produced a
   dialog taller than the screen with no way to reach the buttons. */
.pick-list{max-height:min(46vh,340px);overflow-y:auto;border:1px solid var(--line);
  border-radius:10px;background:var(--panel-2,#171c23);padding:4px}
.pick-row{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;
  font-size:13px;cursor:pointer;line-height:1.35}
.pick-row:hover{background:var(--panel,#12161c)}
.pick-row input{flex:none;margin:0}
.pick-row>span:first-of-type{font-weight:600}
.pick-meta{margin-left:auto;font-size:11.5px;color:var(--text-3);text-align:right;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:52%}
@media (max-width:720px){
  .ba-grid{grid-template-columns:1fr !important}
  .pick-meta{max-width:44%}
}

/* UI-7 (v1.165.4) - two more classes the new ui_audit rule 9 surfaced on its
   very first run, both the same bug class as the modal one above: markup asks
   for a class that no stylesheet defines, so it silently renders as nothing.

   .drawer-f: five drawers put their primary action in a footer row - the job
   status button, the pre-flight "Complete job", the risk-assessment export -
   and .drawer-h / .drawer-b were defined while .drawer-f never was. Two of
   those five set style="flex:1" on the button, which does nothing outside a
   flex container, so the action rendered flush against the body with no rule
   above it and no full-width button. */
.drawer-f{display:flex;align-items:center;gap:8px;padding:14px 20px;
  border-top:1px solid var(--line);background:var(--panel-2,#171c23);flex:none}
.drawer-f .btn{flex:1}
.drawer-f .btn-block{width:100%}

/* .tiles-4: .tiles-5 and .tiles-6 exist; .tiles-4 was written in four
   dashboards and never defined, so those rows fell back to the auto-fit
   default and packed five or six tiles across on a wide screen. */
.tiles-4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1100px){.tiles-4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.tiles-4{grid-template-columns:1fr}}

/* FL-31 (v1.167.0): per-file flight-log import failures. Previously the whole
   thing was collapsed to "1 error" inside a success-styled banner, so the one
   surface that could explain a failed import explained nothing. */
.fl-err-list{margin:6px 0 0;padding-left:18px;font-size:12.5px;line-height:1.55}
.fl-err-list li{margin:2px 0}
.fl-err-ref{font-size:11px;opacity:.8;white-space:nowrap}
.fl-err-hint{margin-top:7px;font-size:11.5px;opacity:.8}

/* ADDR-1 (v1.168.0): the shared address lookup. One dropdown style for every
   address field in the app — sites, depots, jobs, crew — so the control reads
   the same wherever it appears. */
.addr-drop{position:absolute;left:0;right:0;top:100%;z-index:60;margin-top:3px;
  background:var(--panel,#12161c);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 14px 40px rgba(0,0,0,.45);max-height:min(44vh,300px);overflow-y:auto}
.addr-i{padding:8px 11px;cursor:pointer;border-bottom:1px solid var(--line-soft)}
.addr-i:last-child{border-bottom:none}
.addr-i:hover,.addr-i.on{background:var(--panel-2,#171c23)}
.addr-i-main{font-size:13px;font-weight:600;color:var(--text-1)}
.addr-i-sub{font-size:11.5px;color:var(--text-3);margin-top:1px}
.addr-i-empty{color:var(--text-3);font-size:12.5px;cursor:default}
.addr-i-empty:hover{background:none}
.addr-coord{font-size:11px;color:var(--text-3);margin-top:4px;min-height:14px}
.addr-manual{margin-top:6px}
.addr-manual summary{font-size:11.5px;color:var(--text-3);cursor:pointer;user-select:none}
.addr-manual summary:hover{color:var(--text-2)}
.addr-manual .two{margin-top:6px}

/* INV-CAT-1 (v1.168.0): the Categories tab and the pick dialog. */
.cat-label-edit{max-width:280px;padding:5px 8px;font-size:13px}
.confirm-title{font-family:var(--disp);font-size:17px;font-weight:800;margin-bottom:6px}

/* INV-CARD-1 (v1.168.0): the inventory item card — photo, supplier, lifecycle. */
.inv-photo{position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;
  background:var(--panel-2,#171c23);margin-bottom:14px}
.inv-photo img{display:block;width:100%;max-height:230px;object-fit:cover}
.inv-photo.empty{display:flex;align-items:center;justify-content:center;min-height:120px}
.inv-photo-ph{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--text-3);font-size:12px}
.inv-photo-acts{display:flex;gap:6px;padding:8px;border-top:1px solid var(--line);
  background:var(--panel,#12161c)}
.inv-photo.empty .inv-photo-acts{position:absolute;right:0;bottom:0;border-top:none;background:transparent}

.lc-bar{height:9px;border-radius:6px;background:var(--panel-2,#171c23);
  border:1px solid var(--line);overflow:hidden;margin:9px 0 6px}
.lc-fill{height:100%;border-radius:5px;transition:width .3s}
.lc-fill.lc-ok{background:var(--ok,#3fae6a)}
.lc-fill.lc-warning{background:var(--warn,#e8a33c)}
.lc-fill.lc-due,.lc-fill.lc-expired{background:var(--danger,#d9534f)}
.lc-legend{display:flex;align-items:center;justify-content:space-between;gap:8px;
  font-size:11.5px;color:var(--text-3)}
.lc-tag{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:700}
.lc-tag.lc-ok{color:var(--ok,#3fae6a)}
.lc-tag.lc-warning{color:var(--warn,#e8a33c)}
.lc-tag.lc-due,.lc-tag.lc-expired{color:var(--danger,#d9534f)}
.lc-note{font-size:11px;color:var(--text-3);margin-top:6px;line-height:1.5}
.lc-none{font-size:12.5px;color:var(--text-3);margin:6px 0 2px;line-height:1.5}

/* FL-37: playback transport + the telemetry readout for the moment under the
   playhead. */
.flx-play{margin-top:10px}
.flx-play-ctl{display:flex;align-items:center;gap:10px}
.flx-scrub{flex:1;min-width:0;accent-color:var(--brand,#E86828);height:20px}
.flx-play-t{font-size:12px;color:var(--text-2);min-width:44px;text-align:right}
.flx-play-rate{width:74px;padding:4px 6px;font-size:12px}
.flx-readout{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));
  gap:6px 14px;margin-top:10px;padding:10px 12px;border:1px solid var(--line);
  border-radius:10px;background:var(--panel-2,#171c23)}
.flx-ro{display:flex;align-items:baseline;justify-content:space-between;gap:8px;
  font-size:12px;border-bottom:1px solid var(--line-soft);padding:3px 0}
.flx-ro .k{color:var(--text-3)}
.flx-ro .v{color:var(--text-1);font-weight:600;white-space:nowrap}
@media (max-width:720px){ .flx-map{height:min(42vh,340px);min-height:220px} }

/* FL-41 (v1.168.3): the post-import review. This was a queue of small modals,
   one asset at a time, with no sense of how many were coming. It is now one
   full-size card per created asset, laid out together, so an import that
   registers an airframe, two packs, a controller and a camera reads as one
   review instead of five interruptions. */
.ivr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(440px,1fr));
  gap:18px;align-items:start;max-width:1600px;margin:0 auto}
.ivr-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:20px 22px 12px;min-width:0}
.ivr-card-h{display:flex;align-items:center;gap:12px;padding-bottom:14px;
  border-bottom:1px solid var(--line-soft)}
.ivr-ico{width:34px;height:34px;border-radius:9px;background:var(--panel-2);
  display:grid;place-items:center;color:var(--brand);flex:0 0 auto}
.ivr-h-txt{min-width:0;display:flex;flex-direction:column;gap:2px}
.ivr-h-txt b{font-family:var(--disp);font-size:15px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.ivr-kind{font-size:11.5px;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em}
.ivr-asset{margin-left:auto;font-size:11px;color:var(--text-3);background:var(--panel-2);
  border:1px solid var(--line);border-radius:6px;padding:3px 8px;flex:0 0 auto}
.ivr-fromlog{display:flex;flex-wrap:wrap;gap:7px;align-items:center;padding:12px 0 2px}
.ivr-fl-l{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;
  margin-right:2px}
.ivr-chip{font-size:11.5px;background:var(--panel-2);border:1px solid var(--line);
  border-radius:999px;padding:3px 10px;display:inline-flex;gap:6px;align-items:center}
.ivr-chip i{font-style:normal;color:var(--text-3)}
/* the shared field renderer is built for a wide two-column form; inside a card
   it has to stack, or the label column eats the input */
.ivr-form .frow{display:block;padding:10px 0;border-bottom:1px solid var(--line-soft)}
.ivr-form .frow:last-child{border-bottom:none}
.ivr-form .frow > label{display:block;text-align:left;font-size:12px;font-weight:600;
  color:var(--text-2);margin-bottom:5px;padding-top:0}
.ivr-form .frow .fctl input,.ivr-form .frow .fctl select{width:100%}
.ivr-form .frow .hint{font-size:11px;color:var(--text-3);margin-top:4px}
.ivr-foot{position:sticky;bottom:0;margin-top:20px;padding:14px 0;
  background:linear-gradient(to top,var(--canvas) 72%,transparent);
  display:flex;align-items:center;gap:12px;max-width:1600px;margin-left:auto;margin-right:auto}
.ivr-foot-note{font-size:12px;color:var(--text-3);margin-right:auto}
@media(max-width:760px){
  .ivr-grid{grid-template-columns:1fr}
  .ivr-foot{flex-wrap:wrap}
  .ivr-foot-note{width:100%;margin-bottom:6px}
}

/* FL-46/48 (v1.169.0): per-pack detail, and the flight map's own fullscreen.

   The expand control used to live on the LOADING bar, which openFlightLog
   replaces the moment the log arrives — so by the time there was a map to
   expand, the button was gone. It sits on the map now, and it expands the
   WRAPPER so the playback bar and readout come with it: a fullscreen map you
   cannot scrub is worse than a small one you can. */
.flx-map-wrap{position:relative}
.flx-map-fs{position:absolute;top:18px;right:10px;z-index:4;width:30px;height:30px;
  display:grid;place-items:center;border-radius:8px;cursor:pointer;
  background:rgba(11,13,16,.82);border:1px solid var(--line);color:var(--text-2);
  backdrop-filter:blur(8px)}
.flx-map-fs:hover{color:var(--brand);border-color:var(--brand)}
.flx-map-wrap.flx-map-fs-on{position:fixed;inset:0;z-index:96;background:var(--canvas);
  padding:14px 16px 16px;display:flex;flex-direction:column;margin:0}
.flx-map-wrap.flx-map-fs-on .flx-map{flex:1 1 auto;height:auto;min-height:0;margin-top:0}
.flx-map-wrap.flx-map-fs-on .flx-play{flex:0 0 auto;margin-top:10px}
.flx-map-wrap.flx-map-fs-on .flx-map-fs{top:24px;right:26px}
body.flx-map-fs-body{overflow:hidden}

.flx-sec-sub{margin-top:16px}
.flx-packs{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.flx-pack{background:var(--panel-2,rgba(255,255,255,.02));border:1px solid var(--line);
  border-radius:10px;padding:11px 13px}
.flx-pack-h{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:8px}
.flx-pack-h b{font-family:var(--disp);font-size:13px}
.flx-pack-slot{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--text-3);border:1px solid var(--line);border-radius:999px;padding:1px 7px}
.flx-pack-sn{font-size:11px;color:var(--text-3);margin-left:auto}
.flx-pack-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:7px 14px}
.flx-pack-kv{display:flex;flex-direction:column;gap:1px;min-width:0}
.flx-pack-kv span{font-size:10.5px;color:var(--text-3)}
.flx-pack-kv b{font-size:12.5px;font-family:var(--mono)}
.flx-packs-warn{display:flex;gap:8px;align-items:flex-start;margin-top:10px;
  font-size:11.5px;line-height:1.45;color:var(--warn,#E8A33D);
  background:rgba(232,163,61,.08);border:1px solid rgba(232,163,61,.25);
  border-radius:9px;padding:9px 11px}
.flx-packs-warn b{color:var(--text-1,#F2F4F7)}
@media(max-width:720px){ .flx-pack-sn{margin-left:0;width:100%} }

/* RAW-2 (v1.169.2): the decoder diagnostics drawer. It had been reading fields
   the endpoint stopped returning at v1.167.0, so it rendered "No / No / —"
   whatever the truth was. */
.dg-step{border-left:2px solid var(--line);padding:8px 0 8px 12px;margin-bottom:8px}
.dg-step-h{display:flex;align-items:center;gap:9px;font-size:13px}
.dg-ok{font-size:10px;font-weight:700;letter-spacing:.05em;color:var(--ok);
  background:rgba(61,190,120,.12);border-radius:4px;padding:2px 6px}
.dg-bad{font-size:10px;font-weight:700;letter-spacing:.05em;color:var(--bad,#E2564D);
  background:rgba(226,86,77,.12);border-radius:4px;padding:2px 6px}
.dg-skip{font-size:10px;font-weight:700;letter-spacing:.05em;color:var(--text-3);
  background:var(--panel-2);border-radius:4px;padding:2px 6px}
.dg-detail{font-size:11.5px;color:var(--text-3);line-height:1.5;margin-top:4px}
.dg-fix{font-size:11.5px;color:var(--warn,#E8A33D);line-height:1.5;margin-top:5px}
.dg-hist{margin-top:10px;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.dg-row{display:flex;justify-content:space-between;padding:5px 11px;font-size:12px;
  border-bottom:1px solid var(--line-soft)}
.dg-row:last-child{border-bottom:none}

/* EXPORT-4 (v1.169.4): the export chooser. "Export JSON" used to be DCC's own
   record and was reasonably mistaken for the decoder's output — which is the
   one file that settles an argument about whether DCC's mapping is right. */
.exp-opt{border:1px solid var(--line);border-radius:11px;padding:13px 15px;margin-bottom:11px}
.exp-h{display:flex;align-items:center;gap:8px;font-size:13.5px;margin-bottom:5px}
.exp-h b{font-family:var(--disp)}
.exp-tag{font-size:9.5px;font-weight:700;letter-spacing:.06em;color:var(--ok);
  background:rgba(61,190,120,.13);border-radius:4px;padding:2px 6px}
.exp-opt p{font-size:11.5px;color:var(--text-3);line-height:1.55;margin:0 0 10px}

/* FIT-1 (v1.169.6): fitted components. An Inspire 3 flies on two batteries and
   carries a camera, and the DJI record names neither - so this panel is where
   those components get their flight hours. */
.fit-note{font-size:11.5px;color:var(--text-3);line-height:1.5;margin:2px 0 10px}
.fit-row{display:flex;align-items:center;gap:11px;padding:9px 0;border-bottom:1px solid var(--line)}
.fit-row:last-child{border-bottom:none}
.fit-main{flex:1;min-width:0}
.fit-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fit-bay{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);
  border:1px solid var(--line);border-radius:999px;padding:1px 6px;margin-left:4px}
.fit-sub{font-size:11px;color:var(--text-3);margin-top:2px}
.fit-h{text-align:right;flex:0 0 auto;display:flex;flex-direction:column;gap:1px}
.fit-h b{font-family:var(--mono);font-size:13px}
.fit-h span{font-size:10.5px;color:var(--text-3)}
.fit-row.fit-off{opacity:.55}
.fit-empty{font-size:12px;color:var(--warn,#E8A33D);padding:8px 0}
.fit-hist{margin-top:8px}
.fit-hist summary{font-size:11.5px;color:var(--text-3);cursor:pointer}

/* ---------- MOBILE-1 (v1.171.0): the phone shell ----------
   The app was a fixed 236px sidebar + content grid with NO breakpoint, so on a
   390px phone the sidebar took 60% of the width and every view was ~150px
   wide - all sixteen of the audit's "mobile-overflow" findings were this one
   defect. Below 900px the sidebar is an off-canvas drawer (hamburger in the
   topbar), the five screens a crew member uses at a site sit in a bottom tab
   bar, headers and tab strips wrap or scroll, and any card holding a table
   scrolls sideways inside itself instead of pushing the page wider. */
@media (max-width:900px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:min(290px,84vw);z-index:60;transform:translateX(-102%);transition:transform .22s cubic-bezier(.4,0,.2,1);box-shadow:0 0 60px rgba(0,0,0,.6)}
  .sidebar.open{transform:none}
  .menu-btn{display:grid}
  .topbar{padding:10px 14px;gap:10px}
  .topbar-title{font-size:15px}
  .topbar-title .tt-brand{display:none}
  .topbar-title{padding-left:0;border-left:0}
  .topbar-title .tt-page{display:inline;margin-left:0;font-size:13px;color:var(--text)}
  .customer-brand{display:none}
  .dm-metrics{grid-template-columns:repeat(2,1fr)!important}
  .topbar-right{gap:8px}
  .user-chip{font-size:0;gap:0}
  .user-chip .av{font-size:12px}
  .view{padding:14px 12px 86px}
  .section-h{flex-wrap:wrap;gap:8px 12px}
  .section-h .right{margin-left:0;flex-basis:100%;flex-wrap:wrap}
  .section-h .right .inv-input{flex:1;min-width:0}
  .tabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .tabs::-webkit-scrollbar{display:none}
  .tab{white-space:nowrap;flex:none}
  .card:has(table),.tbl-card,.tbl-wrap{overflow-x:auto}
  .card table,.tbl-wrap > table{min-width:560px}
  .conn-row{flex-wrap:wrap}
  .conn-row > .btn{margin-left:auto}
  table.tbl thead th{position:static}
  .inv-bar{gap:8px}
  .inv-search{width:100%;max-width:none}
  #drawer{top:0;left:0;width:100vw;max-width:100vw;max-height:100vh;border-radius:0;transform:translate(0,-104%)}
  #drawer.on{transform:none}
  .modal-dialog{width:100vw;max-width:100vw;max-height:100vh;border-radius:0}
  .notif-panel{right:8px;left:8px;width:auto}
  .tiles,.tiles-5,.tiles-6{grid-template-columns:repeat(2,1fr)}
  .seg{flex-wrap:wrap}
  .mtabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:40;background:rgba(14,18,22,.96);backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
  .mtabbar button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;border-radius:9px;color:var(--text-3);font-size:10px;font-weight:600;letter-spacing:.02em}
  .mtabbar button svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8}
  .mtabbar button.on{color:var(--brand)}
  .mtabbar button .badge{position:absolute;margin:-4px 0 0 22px;font-family:var(--mono);font-size:9px;background:var(--bad);color:#fff;border-radius:8px;padding:0 5px}
  .mtabbar button{position:relative}
  .app-watermark{display:none}
}
@media (max-width:480px){
  .tiles,.tiles-5,.tiles-6{grid-template-columns:1fr 1fr}
  .view{padding:12px 10px 86px}
  .section-h h2{font-size:18px}
}

/* ---------- CMDK (v1.171.0): global search / command palette ---------- */
.cmdk{position:fixed;inset:0;z-index:90}
.cmdk[hidden]{display:none}
.cmdk-scrim{position:absolute;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(2px)}
.cmdk-box{position:relative;width:640px;max-width:calc(100vw - 24px);margin:9vh auto 0;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 30px 90px rgba(0,0,0,.6);overflow:hidden;display:flex;flex-direction:column;max-height:76vh}
.cmdk-input{width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);padding:16px 18px;font-size:16px;color:var(--text);outline:none}
.cmdk-list{overflow-y:auto;padding:6px}
.cmdk-g{font-family:var(--disp);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3);padding:10px 12px 4px}
.cmdk-it{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:9px;cursor:pointer;color:var(--text-2)}
.cmdk-it .ic{width:18px;height:18px;flex:none;color:var(--text-3)}
.cmdk-it .ic svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}
.cmdk-it .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.cmdk-it .s{font-size:12px;color:var(--text-3);white-space:nowrap}
.cmdk-it.on,.cmdk-it:hover{background:var(--brand-tint);color:var(--text)}
.cmdk-it.on .ic{color:var(--brand)}
.cmdk-empty{padding:22px;text-align:center;color:var(--text-3);font-size:13px}
.cmdk-foot{display:flex;gap:18px;padding:8px 14px;border-top:1px solid var(--line);font-size:11px;color:var(--text-3)}
.cmdk-foot kbd{display:inline-block;font-family:var(--mono);font-size:10px;padding:1px 5px;border:1px solid var(--line);border-radius:4px;margin-right:3px;color:var(--text-2)}
@media (max-width:900px){.cmdk-box{margin-top:8px;max-height:calc(100vh - 16px)}.cmdk-foot{display:none}}
/* JOBS-1: the "at a glance" bars are filters - say so */
.glance-bar{text-align:center;cursor:pointer;padding:4px 8px;border-radius:9px;transition:.12s}
.glance-bar:hover,.glance-bar:focus-visible{background:var(--panel-2)}
.confl-actions{display:inline-flex;align-items:center;gap:6px}
.page-note{font-size:12.5px;color:var(--text-2);line-height:1.55;margin:-8px 0 16px;width:min(100%,980px)}
.section-h .right{flex-wrap:wrap;align-items:center}
.section-h .right .inv-input{width:auto}
/* EMPTY-1 (v1.171.0): an empty state says what to do next */
.empty-act{display:flex;flex-direction:column;align-items:center;gap:12px}
.empty-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
/* DRAWER-F (v1.171.0): five equal-width buttons wrapped to two lines each and
   truncated; let them size to their labels and wrap as a row instead */
.drawer-f{flex-wrap:wrap}
.drawer-f .btn{flex:1 1 auto;white-space:nowrap}
.as-assess-r{padding:7px 8px;font-size:12px;background:var(--panel);color:var(--text-2);border-left:1px solid var(--line)!important;border-radius:0}
.as-seg-btn.on{color:var(--brand)}

.tbl-wrap{min-width:0}
/* MOBILE-2 (v1.172.0): the per-view polish pass */
@media (max-width:900px){
  .fsv-bar{padding:10px 12px;gap:8px;flex-wrap:wrap}
  .fsv-bar .right{flex-wrap:wrap;justify-content:flex-end}
  .fsv-body{padding:12px 10px 90px;max-width:100vw}
  .wiz-steps{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;gap:8px;margin:2px -10px 16px;padding:0 10px 6px;scrollbar-width:none}
  .wiz-steps::-webkit-scrollbar{display:none}
  .wiz-step{flex:none;width:104px;height:78px;font-size:12px;gap:6px}
  .cp-hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  .cp-stat{min-width:0;padding:8px 6px}
  .cp-cols{grid-template-columns:1fr;gap:16px}
  .add-form .two,.frow.two .fctl{grid-template-columns:1fr}
  .drawer-f .btn{flex:1 1 40%}
  .sv-row{flex-wrap:wrap}
}

/* ---- BVLOS area assessment tool (BVLOS-ASSESS, v1.173.0; restyled v1.173.3) ---- */
/* The tool uses the site's own vocabulary: .fs-card sections with the wizard's
   orange numbered header, the right-aligned .fs-form label column, brand
   orange for the primary action and the flight geography, the airspace
   read-out's verdict band (clear / caution / restricted) for the result. */
.fs-form .frow .fctl input[type=checkbox],.fs-form .frow .fctl input[type=radio]{width:auto;flex:none;margin:0;accent-color:var(--brand)}
.feas-grid{display:grid;grid-template-columns:minmax(0,1fr) 460px;gap:22px;align-items:start}
.feas-card{padding:20px 24px 18px}
.feas-card .feas-sec-h{margin:0 0 6px;padding-bottom:12px}
.feas-card .feas-sec-h b{font-family:var(--disp);font-size:15px}
.feas-card .feas-sec-h .cell-sub{font-family:var(--body);font-size:12.5px;color:var(--text-2);margin-top:2px}
.feas-card .fs-form{max-width:none}
.feas-card .fs-form .frow{grid-template-columns:200px 1fr;gap:16px;padding:12px 0}
.fs-form .frow[hidden]{display:none}
.feas-card .fs-form .frow > label{font-size:12.5px}
.feas-card .fs-sub{margin-bottom:10px}
.feas-opt{display:inline-block;font-family:var(--mono);font-weight:500;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);border:1px solid var(--line);border-radius:999px;padding:1px 8px;margin-left:8px;vertical-align:middle}
.feas-side{position:sticky;top:78px}
.feas-side-h{font-family:var(--disp);text-transform:uppercase;letter-spacing:.1em;font-size:11px;font-weight:700;color:var(--text-3);margin:0 0 8px 2px}
.feas-side-h .mut{font-family:var(--body);text-transform:none;letter-spacing:0;font-weight:500;margin-left:6px}
.feas-side #feas-live{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;max-height:calc(100vh - 130px);overflow:auto}
.feas-side #feas-live.busy{opacity:.55}
.feas-verdict{margin:0 0 12px}
.feas-verdict .as-verdict-t{font-size:16px}
/* segmented source picker (radio inputs, styled like the map's .as-seg) */
.feas-seg{display:inline-flex;flex-wrap:wrap;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:10px}
.feas-seg-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;font-size:12.5px;font-weight:600;color:var(--text-2);cursor:pointer;border-right:1px solid var(--line);transition:.12s}
.feas-seg-btn:last-child{border-right:none}
.feas-seg-btn svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:1.8}
.feas-seg-btn input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.feas-seg-btn:has(input:checked){background:var(--brand);color:#fff}
.feas-seg-btn.off{opacity:.45;cursor:not-allowed}
.feas-seg-btn:hover:not(.off):not(:has(input:checked)){background:var(--panel-3);color:var(--text)}
.feas-geo-opt{margin-top:4px;font-size:13px;color:var(--text-2)}
.feas-inline{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}
.feas-inline > span{font-size:12.5px;color:var(--text-2)}
.feas-chk{white-space:nowrap}
.feas-toggle{margin:2px 0 10px;font-size:13px;color:var(--text)}
.feas-rows{display:flex;flex-direction:column;gap:6px}
.feas-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:6px;align-items:center}
/* the attestation list */
.feas-checks{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.feas-check{display:grid;grid-template-columns:18px minmax(0,1fr) 220px;gap:12px;align-items:center;padding:9px 12px;border-bottom:1px solid var(--line-soft);cursor:pointer;background:var(--panel-2)}
.feas-check:last-child{border-bottom:none}
.feas-check:hover{background:var(--panel-3)}
.feas-check:has(input:checked){background:var(--ok-t)}
.feas-check input[type=checkbox]{width:auto;margin:0;accent-color:var(--ok)}
.feas-check-l{font-size:12.5px;color:var(--text);line-height:1.35}
.feas-check .feas-check-note{font-size:12px;padding:6px 9px}
.feas-sign{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--brand-line);background:var(--brand-tint);border-radius:10px;font-size:13px;line-height:1.45;cursor:pointer}
.feas-sign input{width:auto;margin-top:3px;accent-color:var(--brand)}
.feas-sign b{color:var(--brand-2)}
/* the read-out */
.feas-plan{width:100%;height:auto;display:block;border:1px solid var(--line);border-radius:10px}
.feas-legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:11px;color:var(--text-3);margin:6px 0 12px}
.feas-legend i{display:inline-block;width:12px;height:8px;margin-right:5px;border-radius:2px;vertical-align:middle}
.feas-tiles{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.feas-tiles .tile{padding:12px 14px;background:var(--panel-2)}
.feas-tiles .tl{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3)}
.feas-tiles .tv{font-size:22px;margin-top:6px}
.feas-tiles .hint{margin-top:6px;font-size:11.5px}
.feas-paths{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:4px 0 8px}
.feas-path{font-family:var(--mono);font-size:12px;padding:3px 8px;border-radius:999px;border:1px solid var(--line);color:var(--text-2)}
.feas-path small{color:var(--text-3)}
.feas-path.ok{border-color:rgba(61,190,120,.6);color:var(--ok);background:var(--ok-t)}
.feas-path.ok::before{content:'✓ '}
.feas-path.no{border-color:rgba(226,86,77,.5);color:var(--bad);background:var(--bad-t);opacity:.85}
.feas-path.no::before{content:'✕ '}
.feas-path.sel{box-shadow:0 0 0 2px var(--brand-line)}
.feas-chkrow{display:grid;grid-template-columns:44px 1fr;gap:10px;padding:7px 0;border-bottom:1px solid var(--line-soft);font-size:13px}
.feas-chkrow:last-child{border-bottom:none}
.feas-res{font-family:var(--mono);font-size:11px;font-weight:700;padding:2px 0;text-align:center;border-radius:6px;align-self:start;margin-top:2px}
.feas-chkrow.ok .feas-res{background:var(--ok-t);color:var(--ok)}
.feas-chkrow.no .feas-res{background:var(--bad-t);color:var(--bad)}
.feas-kvgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 16px;margin-bottom:12px}
.feas-kv span{display:block;font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}
.feas-kv b{font-size:13px;font-weight:600;word-break:break-word}
.feas-text{font-size:13px;color:var(--text-2);white-space:pre-wrap;padding:6px 0}
.as-pop{font-size:12.5px;color:var(--text-2);padding:6px 0}
.as-pop b{color:var(--text)}
.as-assess-bv{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.as-assess-bv input{margin:0}
#so-result .feas-tiles{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
@media (max-width:1100px){ .feas-grid{grid-template-columns:1fr} .feas-side{position:static} .feas-side #feas-live{max-height:none} }
@media (max-width:760px){ .feas-card .fs-form .frow{grid-template-columns:1fr;gap:6px} .feas-card .fs-form .frow > label{text-align:left;padding-top:0} .feas-check{grid-template-columns:18px 1fr} .feas-check .feas-check-note{grid-column:2} .feas-row{grid-template-columns:1fr 1fr} .feas-kvgrid{grid-template-columns:1fr 1fr} .feas-tiles{grid-template-columns:1fr 1fr} }

/* MAPS-DIAG (v1.173.1) */
.maps-error{margin:8px 0 0;font-size:12.5px}
.addr-i-prov{color:var(--text-3);font-size:11px;cursor:default;padding:4px 11px;background:var(--panel)}
.addr-i-prov:hover{background:var(--panel)}
.maps-test-row{display:grid;grid-template-columns:150px 1fr;gap:8px;padding:5px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px}
.maps-test-row b{font-family:var(--mono);font-size:11px}

/* ============================================================
   REMOTE-OPS (v1.174.0): the dock command centre
   ============================================================ */
.ro-page{display:grid;grid-template-columns:290px 1fr 380px;gap:12px;height:calc(100vh - 236px);min-height:560px}
.ro-col{background:var(--panel);border:1px solid var(--line);border-radius:13px;overflow:auto;padding:12px}
.ro-mapcol{position:relative;padding:0;overflow:hidden}
.ro-map{position:absolute;inset:0;width:100%;height:100%}
.ro-map .mm-wrap{width:100%;height:100%}
.ro-map-legend{position:absolute;right:14px;bottom:54px;display:flex;gap:12px;font-size:11px;color:var(--text-2);background:rgba(11,13,16,.75);padding:6px 10px;border-radius:8px;z-index:5;flex-wrap:wrap}
.ro-map-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.ro-col-h{font-family:var(--disp);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-2);display:flex;align-items:center;gap:8px;margin:2px 0 10px}
.ro-col-h .hint{text-transform:none;letter-spacing:0;font-weight:500}
.ro-card{border:1px solid var(--line);border-radius:11px;padding:10px 12px;margin-bottom:10px;cursor:pointer;background:var(--panel-2);transition:border-color .15s}
.ro-card:hover{border-color:var(--text-3)}
.ro-card.on{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand-line)}
.ro-card.off{opacity:.6}
.ro-card-h{display:flex;align-items:center;gap:8px;font-size:13.5px}
.ro-card-sub{font-size:11.5px;color:var(--text-3);margin:2px 0 8px}
.ro-dot{width:9px;height:9px;border-radius:50%;background:var(--text-3);flex:none}
.ro-dot.on{background:var(--ok);box-shadow:0 0 0 3px var(--ok-t)}
.ro-dot.fly{background:var(--brand);box-shadow:0 0 0 3px var(--brand-tint);animation:ro-pulse 1.2s infinite}
.ro-dot.off{background:var(--bad)}
@keyframes ro-pulse{0%{box-shadow:0 0 0 2px var(--brand-tint)}50%{box-shadow:0 0 0 6px rgba(232,104,40,.05)}100%{box-shadow:0 0 0 2px var(--brand-tint)}}
.ro-kv{display:flex;gap:10px;flex-wrap:wrap;font-size:12.5px;align-items:center}
.ro-kv.small{font-size:11.5px;color:var(--text-2);margin-top:5px}
.ro-batt{display:flex;align-items:center;gap:8px;margin-top:6px}
.ro-batt-bar{flex:1;height:7px;border-radius:4px;background:var(--panel-3);overflow:hidden}
.ro-batt-bar i{display:block;height:100%;border-radius:4px}
.ro-prog{height:5px;border-radius:3px;background:var(--panel-3);overflow:hidden;margin-top:4px}
.ro-prog i{display:block;height:100%;background:var(--brand);transition:width .6s linear}
.ro-task{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}
.ro-sec{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--line-soft)}
.ro-sec:last-child{border-bottom:0}
.ro-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ro-tile{position:relative;border-radius:8px;overflow:hidden;background:#000;aspect-ratio:16/9;border:1px solid var(--line)}
/* the canvas is drawn at 320×180 (16:9) and the tile is 16:9 — height:auto keeps
   the drawing's aspect; only a real <video> is object-fit'd. */
.ro-tile canvas{width:100%;height:auto;display:block}
.ro-tile video{width:100%;height:100%;display:block;object-fit:cover}
.ro-tile.ro-tile-big{grid-column:1/-1}
.ro-tile-l{position:absolute;left:6px;top:5px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#fff;background:rgba(0,0,0,.5);padding:2px 6px;border-radius:5px}
.ro-btns{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:8px}
.ro-estop{background:var(--bad);color:#fff;font-weight:800;letter-spacing:.06em;border:0}
.ro-estop:hover{background:#c9453d}
.ro-hud{display:flex;gap:12px;flex-wrap:wrap;font-family:var(--mono);font-size:11px;color:var(--text-2);background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px}
.ro-hud b{color:var(--text);font-size:13px;margin-left:3px}
.ro-drc{margin-top:10px;font-size:12.5px}
.ro-drc summary{cursor:pointer;color:var(--warn);font-weight:600}
.ro-drcpad{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:8px 0}
.ro-gate{border:1px solid var(--line);border-radius:10px;overflow:hidden;font-size:12.5px}
.ro-gate-v{padding:9px 12px;font-size:12.5px}
.ro-gate.ok .ro-gate-v{background:var(--ok-t);color:var(--ok)}
.ro-gate.no .ro-gate-v{background:var(--bad-t);color:var(--bad)}
.ro-gate-rows{max-height:300px;overflow:auto}
.ro-gate-row{display:grid;grid-template-columns:150px 1fr;gap:8px;padding:6px 12px;border-top:1px solid var(--line-soft);align-items:start}
.ro-gate-d{color:var(--text-2);font-size:12px;line-height:1.35}
.ro-gate-row .pill{white-space:normal;text-align:left;line-height:1.3}
.ro-rb{margin-bottom:8px;font-size:12.5px;line-height:1.4}
.ro-rb .hint{display:block;font-size:11px}
.ro-ticker{margin-top:12px;padding:10px 14px}
.ro-ticker-h{display:flex;align-items:center;gap:10px;margin-bottom:6px;font-size:13px}
.ro-ticker-list{max-height:180px;overflow:auto}
.ro-ev{display:flex;gap:10px;align-items:center;padding:5px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px}
.ro-ev .mono{font-size:11px;color:var(--text-3);flex:none}
.ro-ev-m{flex:1}
.ro-ev.error .ro-ev-m{color:var(--bad)}
.ro-ev.warn .ro-ev-m{color:var(--warn)}
.ro-diag-row{display:grid;grid-template-columns:60px 150px 1fr;gap:8px;padding:5px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px;align-items:center}
.ro-replay{padding:14px 20px}
.ro-rp-map{position:relative;height:60vh;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
.ro-rp-map .mm-wrap{width:100%;height:100%}
.ro-rp-ctl{display:flex;gap:12px;align-items:center;margin:12px 0}
.ro-rp-ev{display:flex;gap:6px;flex-wrap:wrap}
tr.muted td{opacity:.55}
@media(max-width:1300px){.ro-page{grid-template-columns:250px 1fr 340px}}
@media(max-width:1100px){.ro-page{grid-template-columns:1fr 1fr;grid-template-rows:auto;height:auto}.ro-mapcol{grid-column:1/-1;height:52vh;order:-1}.ro-left,.ro-right{max-height:70vh}}
@media(max-width:700px){.ro-page{grid-template-columns:1fr}.ro-tiles{grid-template-columns:1fr 1fr}}

/* VIEWS-1 (v1.175.0): swappable main view, telemetry board, pop-out windows */
.ro-main-tools{position:absolute;top:14px;left:14px;display:flex;gap:8px;z-index:5;flex-wrap:wrap}
.ro-main-cam{position:absolute;inset:0;background:#000;display:flex;align-items:center;justify-content:center}
.ro-main-cam canvas{display:block}
.ro-main-cam video{max-width:100%;max-height:100%;display:block}
/* the <video> is `hidden` until a real stream plays; display:block above must not resurrect it (it sat beside the canvas and pushed it off-centre) */
.ro-main-cam video[hidden],.ro-tile video[hidden],.ro-tile canvas[hidden],.ro-main-cam canvas[hidden]{display:none}
.ro-sparks>div{min-width:0}
.ro-sparks canvas{max-width:100%}
.ro-tile-map .mm-ui,.ro-tile-map .mm-attr,.ro-tile-map .mm-hint{display:none}
.ro-hud-strip{position:absolute;left:0;right:0;bottom:0;display:flex;gap:16px;flex-wrap:wrap;padding:8px 14px;background:rgba(11,13,16,.82);font-family:var(--mono);font-size:11px;color:var(--text-2);z-index:5;border-top:1px solid var(--line)}
.ro-hud-strip b{color:var(--text);font-size:13px;margin-left:3px}
.ro-tile-pop{position:absolute;right:5px;top:5px;border:0;background:rgba(0,0,0,.55);color:#fff;border-radius:5px;padding:2px 5px;cursor:pointer;line-height:1}
.ro-tile-pop:hover{background:var(--brand)}
.ro-tile-map .ro-map{position:absolute;inset:0}
.ro-tile-tele{background:var(--panel-2)}
.ro-tile-tele-in{position:absolute;inset:0;padding:6px;overflow:hidden}
.ro-tele-wrap{position:absolute;inset:0;overflow:auto;padding:52px 16px 16px}
.ro-tele-wrap.big{padding:16px}
.ro-tele{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.ro-tele.mini{grid-template-columns:1fr 1fr 1fr;gap:4px}
.ro-tele-tile{background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:74px}
.ro-tele.mini .ro-tele-tile{padding:4px 6px;min-height:0;border-radius:6px}
.ro-tele-l{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);font-weight:700;margin-bottom:4px}
.ro-tele.mini .ro-tele-l{font-size:8px;margin-bottom:1px}
.ro-tele-v{font-family:var(--mono);font-size:24px;font-weight:700;line-height:1.15}
.ro-tele-v small{font-size:12px;color:var(--text-2);font-weight:500}
.ro-tele.mini .ro-tele-v{font-size:12px}
.ro-tele.mini .ro-tele-v small{font-size:8px}
.ro-tele.mini .ro-tele-v .pill{display:none}
.ro-rose{display:inline-block;font-style:normal;color:var(--brand);transition:transform .4s}
.ro-sparks{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.ro-sparks canvas{display:block;width:100%;height:80px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px}
.ro-tele-wrap.big .ro-sparks canvas{height:120px}
.ro-tele-wrap.big .ro-tele-v{font-size:34px}
/* pop-out window: one view, no shell */
.ro-popout .sidebar,.ro-popout .topbar,.ro-popout .mtabbar,.ro-popout #side-scrim{display:none!important}
.ro-popout .app{grid-template-columns:1fr}
.ro-popout .view,.ro-popout .view.view-wide{padding:0;max-width:none;margin:0}
.ro-pop{display:flex;flex-direction:column;height:100vh;background:var(--canvas)}
.ro-pop-bar{display:flex;align-items:center;gap:12px;padding:8px 14px;border-bottom:1px solid var(--line);background:var(--panel);flex-wrap:wrap}
.ro-pop-body{flex:1;position:relative;min-height:0}
.ro-pop-body .ro-map{position:absolute;inset:0}
.ro-pop-panel{position:absolute;inset:0;border:0;border-radius:0;max-width:720px;margin:0 auto}
.ro-pop-ticker{position:absolute;inset:12px;overflow:auto;margin:0}
.ro-pop-ticker .ro-ticker-list{max-height:none}
@media(max-width:1100px){.ro-tele{grid-template-columns:1fr 1fr}.ro-sparks{grid-template-columns:1fr}}

/* ==== MISSION PLANNER (PLAN-1, v1.176.0) ================================== */
.pl-fsbody{padding:0 !important;max-width:none !important}
.pl-host{display:block;min-height:0}
.pl-wrap{display:grid;grid-template-columns:minmax(0,1fr) 440px;gap:0;height:calc(100vh - 56px);min-height:520px}
.pl-host.pl-embed .pl-wrap{height:720px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.pl-left{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--panel-2)}
.pl-types{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:8px 10px 0}
.pl-type{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text);cursor:pointer;font:inherit}
.pl-type b{font-size:12.5px}.pl-type span{font-size:10.5px;color:var(--text-3);line-height:1.25}
.pl-type.on{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand);background:color-mix(in srgb,var(--brand) 8%,var(--panel))}
.pl-maptools{padding:8px 10px}
.pl-toolrow{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pl-toolrow .hint{font-size:11px}
.pl-dock{max-width:220px}
.pl-map{flex:1;min-height:320px;position:relative}
.pl-side{overflow:auto;border-left:1px solid var(--line);background:var(--panel);padding:10px 12px 40px;min-height:0}
.pl-save{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.pl-relwarn{font-size:12px;padding:8px 10px;border-radius:8px;background:color-mix(in srgb,var(--warn) 14%,transparent);border:1px solid color-mix(in srgb,var(--warn) 50%,transparent);color:var(--text)}
.pl-summary{margin-bottom:10px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2)}
.pl-sum-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 10px}
.pl-sum-grid div{display:flex;flex-direction:column;line-height:1.15}
.pl-sum-grid b{font-size:16px;font-variant-numeric:tabular-nums}.pl-sum-grid span{font-size:10.5px;color:var(--text-3);text-transform:uppercase;letter-spacing:.03em}
.pl-warn{margin-top:8px;font-size:12px;padding:6px 8px;border-radius:6px;background:color-mix(in srgb,var(--warn) 14%,transparent);color:var(--text)}
.pl-sum-err{font-size:12px;color:var(--bad)}
.pl-sec{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:var(--panel)}
.pl-sec>summary{cursor:pointer;padding:8px 12px;font-weight:600;font-size:13px;list-style:none;display:flex;align-items:center;gap:8px}
.pl-sec>summary::before{content:'▸';font-size:11px;color:var(--text-3);transition:transform .15s}
.pl-sec[open]>summary::before{transform:rotate(90deg)}
.pl-sec-b{padding:2px 12px 10px}
.pl-sec-b .frow{margin:6px 0}
.pl-sec-b .frow label{width:120px;flex:0 0 120px;font-size:12px}
.pl-sec-b .fctl{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12.5px}
.pl-chk{display:inline-flex;align-items:center;gap:6px;font-size:12px;margin-right:10px}
.pl-wptbl td,.pl-wptbl th{padding:5px 6px;font-size:12px}
.pl-wptbl tr{cursor:pointer}.pl-wptbl tr.on td{background:color-mix(in srgb,var(--brand) 12%,transparent)}
.pl-wpbtns{white-space:nowrap}.pl-wpbtns .icon-btn{width:22px;height:22px;font-size:12px}
.pl-wpedit{margin-top:8px;padding:10px;border:1px dashed var(--line);border-radius:8px;background:var(--panel-2)}
.pl-wpedit-h{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.pl-wpgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;font-size:12px}
.pl-wpgrid label{display:flex;align-items:center;gap:6px}.pl-wpgrid input,.pl-wpgrid select{flex:1;min-width:0}
.pl-acts-h{display:flex;align-items:center;justify-content:space-between;margin:10px 0 6px;font-weight:600;font-size:12.5px}
.pl-act{border:1px solid var(--line);border-radius:8px;padding:6px 8px;margin-bottom:6px;background:var(--panel)}
.pl-act-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pl-act-p{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px;margin-top:6px;font-size:11.5px}
.pl-act-p label{display:flex;align-items:center;gap:6px;color:var(--text-3)}.pl-act-p input,.pl-act-p select{flex:1;min-width:0;font-size:12px}
.ro-plan-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}
.wz-plans .kv-row{cursor:default}
@media (max-width:1100px){ .pl-wrap{grid-template-columns:1fr;height:auto} .pl-map{min-height:420px} .pl-side{border-left:0;border-top:1px solid var(--line)} .pl-types{grid-template-columns:repeat(2,minmax(0,1fr))} }

/* ==== SAFETY-1 / DUAL-1 (v1.176.1): flight-control bar on every view, window binding ==== */
.ro-ctl-host{position:absolute;left:0;right:0;bottom:0;z-index:7}
.ro-ctl{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--panel);border-top:2px solid var(--dc,var(--line));min-height:56px;flex-wrap:wrap}
.ro-ctl.live{background:color-mix(in srgb,var(--dc,var(--brand)) 10%,var(--panel))}
.ro-ctl-dock{display:inline-flex;align-items:center;gap:8px;font-size:13px;white-space:nowrap}
.ro-ctl-dock i,.ro-pop-dock i,.ro-disp i{display:inline-block;width:12px;height:12px;border-radius:3px;background:var(--dc,var(--text-3));box-shadow:0 0 0 2px rgba(255,255,255,.15)}
.ro-ctl-dock .mono{color:var(--text-2);font-size:11.5px}
.ro-ctl-state{font-family:var(--mono);font-size:11.5px;color:var(--text-2);flex:1;min-width:160px}
.ro-ctl-btns{display:flex;gap:8px;align-items:center;margin-left:auto;flex-wrap:wrap}
.ro-ctl-btns .btn{min-height:38px;padding:0 14px;font-size:13px;font-weight:600}
.ro-ctl-btns .btn[disabled]{opacity:.4;cursor:not-allowed}
.ro-ctl-btns .ro-estop{min-height:42px;padding:0 20px;font-size:13.5px;letter-spacing:.08em;box-shadow:0 0 0 2px rgba(226,61,61,.35)}
.ro-ctl-btns .ro-estop:not([disabled]){animation:ro-estop-pulse 2.4s ease-in-out infinite}
@keyframes ro-estop-pulse{0%,100%{box-shadow:0 0 0 2px rgba(226,61,61,.35)}50%{box-shadow:0 0 0 5px rgba(226,61,61,.18)}}
.ro-has-ctl>.ro-map,.ro-has-ctl .ro-tele-wrap,.ro-has-ctl .ro-pop-ticker{bottom:58px}
.ro-has-ctl .ro-main-cam{bottom:90px}   /* the HUD strip sits under the picture, not over its lower edge */
.ro-has-ctl .ro-hud-strip{bottom:58px}
.ro-has-ctl .ro-map-legend{bottom:120px}
.ro-pop-body.ro-has-ctl .ro-pop-ticker{bottom:70px}
.ro-card{border-left:4px solid var(--dc,var(--line))}
.ro-pop-dock{display:inline-flex;align-items:center;gap:8px;padding:4px 10px 4px 6px;border-radius:8px;background:color-mix(in srgb,var(--dc,var(--brand)) 16%,transparent);border:1px solid var(--dc,var(--line));font-size:13px}
.ro-pop-dock .mono{color:var(--text-2);font-size:11px}
.ro-disp{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px;flex-wrap:wrap}
.ro-disp b{white-space:nowrap}.ro-disp .hint{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ro-disp select{max-width:150px;font-size:12px;padding:3px 6px}

/* ==== SEATS-1 (v1.176.2): operator positions ============================== */
.ro-seat{border:1px solid var(--line);border-left:4px solid var(--dc,var(--line));border-radius:10px;padding:8px 10px;margin-bottom:8px;background:var(--panel-2)}
.ro-seat.on{box-shadow:inset 0 0 0 1px var(--brand)}
.ro-seat-h{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.ro-seat-h i{display:inline-block;width:12px;height:12px;border-radius:3px;background:var(--dc,var(--text-3))}
.ro-seat-row{display:flex;align-items:center;gap:8px;font-size:12px;margin:3px 0;flex-wrap:wrap}
.ro-seat-row>.hint:first-child{width:52px;flex:0 0 52px;text-transform:uppercase;font-size:10px;letter-spacing:.04em}
.ro-seat-row select{flex:1;min-width:0;font-size:12px;padding:3px 6px}
.ro-seat .ro-btns{margin-top:6px}
.ro-st-panes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px}

/* ==== SWMS-ING (v1.177.0): SWMS PDF import preview ======================== */
.ra-imp-list{max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:10px}
.ra-imp-step{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line-soft)}
.ra-imp-step:last-child{border-bottom:0}
.ra-imp-step.off{opacity:.42}
.ra-imp-inc{margin-top:2px}
.ra-imp-main{flex:1;min-width:0}
.ra-imp-main b{font-size:12.5px}
.ra-imp-main .hint{font-size:11.5px;margin-top:1px}
.ra-imp-bands{white-space:nowrap;font-size:11px;display:flex;align-items:center;gap:6px}

/* COMPASS-1 (v1.178.3): heading + wind rose on every ROC viewport */
.ro-compass{position:absolute;top:12px;right:12px;z-index:6;display:flex;flex-direction:column;align-items:flex-end;gap:3px;pointer-events:none}
.ro-compass svg{filter:drop-shadow(0 1px 3px rgba(0,0,0,.5))}
.ro-cmp-cap{font-size:10px;font-weight:600;letter-spacing:.03em;color:#fff;background:rgba(8,12,16,.6);padding:2px 7px;border-radius:8px;white-space:nowrap}
.ro-cmp-cap i{display:inline-block;width:7px;height:7px;border-radius:2px;margin:0 3px 0 0;vertical-align:baseline}
.ro-cmp-cap i.ac{background:var(--brand,#E86828)}
.ro-cmp-cap i.wn{background:var(--info,#3E9BE8)}
.ro-tile .ro-compass{top:auto;bottom:6px;right:6px;transform:scale(.6);transform-origin:bottom right}
.ro-tile .ro-cmp-cap{display:none}

/* IMP-1 (v1.179.0): bulk import preview */
.imp-off td{opacity:.5}
.imp-note td{padding-top:0;border-top:0}

/* ESTOP-2 (v1.179.3): the control bar in recovery mode */
.ro-ctl-estop{background:color-mix(in srgb, var(--bad) 14%, var(--panel));border-color:var(--bad)}
.ro-ctl-estop .ro-ctl-state{color:var(--bad);font-weight:700}

/* BAT-RTH-1 (v1.179.4): battery floor warnings on the HUD strip */
.ro-batt-alert{background:var(--bad);color:#fff;font-weight:800;padding:3px 10px;border-radius:6px;letter-spacing:.04em;animation:ro-batt-flash 1s steps(2,start) infinite}
.ro-batt-warn{background:var(--warn);color:#1c1c1c;font-weight:700;padding:3px 10px;border-radius:6px}
@keyframes ro-batt-flash{50%{opacity:.55}}
@media (prefers-reduced-motion: reduce){.ro-batt-alert{animation:none}}

/* MANUAL-OPS-1 (v1.181.0) */
.mo-grid{display:grid;grid-template-columns:minmax(300px,380px) 1fr;gap:14px;align-items:start}
@media(max-width:900px){.mo-grid{grid-template-columns:1fr}}
.mo-card{margin:0 0 10px}
.mo-card.mo-stale{opacity:.65}
.mo-hud{display:flex;gap:14px;margin-top:6px;font-size:12.5px;color:var(--text-2)}
.mo-hud b{color:var(--text-1);font-variant-numeric:tabular-nums}

/* MANUAL-OPS-3: on-demand video viewer */
.mo-video{background:#000;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center}
.mo-video canvas,.mo-video video{max-width:100%;display:block}
.mo-video [hidden]{display:none}
/* MANUAL-OPS-4 (v1.183.0): the flight board + pop-outs */
.mo-stats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.mo-stat{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 16px;min-width:112px;display:flex;flex-direction:column;gap:2px}
.mo-stat>span:first-child{font-size:10.5px;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}
.mo-stat b{font-size:22px;line-height:1.1;font-variant-numeric:tabular-nums}
.mo-stat.warn b{color:var(--warn)}
.mo-stat.bad b{color:var(--bad)}
.mo-stat-act{justify-content:center}
.mo-board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px;align-items:start}
.mo-tile{margin:0}
.mo-tile-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.mo-tile-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px}
.mo-tile-grid>div{background:var(--panel-2);border-radius:8px;padding:6px 8px;display:flex;flex-direction:column}
.mo-tile-grid span{font-size:10px;color:var(--text-3);letter-spacing:.05em}
.mo-tile-grid b{font-variant-numeric:tabular-nums}
.mo-batt{position:relative;height:16px;border-radius:8px;background:var(--panel-2);margin-top:8px;overflow:hidden}
.mo-batt i{position:absolute;top:0;bottom:0;left:0;display:block;border-radius:8px;transition:width .5s}
.mo-batt span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.mo-tile-alerts{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.mo-vnote{border-left:3px solid var(--warn);background:var(--panel-2);border-radius:0 8px 8px 0;padding:8px 12px;margin-top:8px;font-size:12.5px;color:var(--text-2)}
.mo-video-pop{position:absolute;inset:0 0 34px 0;border-radius:0}
.mo-video-pop canvas,.mo-video-pop video{width:100%;height:100%;object-fit:contain}
.mo-video-pop canvas[hidden],.mo-video-pop video[hidden]{display:none}

/* PILOT-VIEW (v1.187.21): the pilot's own analytics - a small bar chart */
.ma-chart{display:flex;align-items:flex-end;gap:10px;height:140px;padding:6px 4px 0}
.ma-bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%}
.ma-fill{width:100%;max-width:48px;background:var(--accent,#E86828);border-radius:4px 4px 0 0;min-height:2px;transition:height .3s}
.ma-lbl{font-size:11px;color:var(--text-3);margin-top:4px}
.mm-btn.mm-base{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.mo-card .ro-btns{gap:6px}
/* INV-CARD-2 (v1.187.23): inventory thumbnails */
.inv-thumb{width:36px;height:36px;border-radius:8px;overflow:hidden;flex:0 0 36px;background:var(--panel-2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--text-3)}
.inv-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.inv-thumb.empty svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8}
/* INV-CARD-2: kit contents picker */
.kit-picker{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}
.kit-pick{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid var(--line);cursor:pointer;font-size:13px;flex-wrap:wrap}
.kit-pick:last-child{border-bottom:0}
.kit-pick:hover{background:rgba(255,255,255,.04)}
.kit-pick-n{flex:1;min-width:0}
