/* AeroNav 2.x design system (phase 2, 2026-09-30).
   Colour: Radix-Colors-style 12-step scales per theme, mapped to SEMANTIC roles that components use:
     --bg  --surface  --surface-2  --text  --text-muted  --border  --accent  --accent-contrast  --warn  --danger  --ok  --focus
   plus role tokens for fills/tints (--*-fill, --on-*, --*-bg), the checklist tokens (--row, --pill …), map/instrument inks.
   Legacy short names (--tx --mu --card --btn --line --ac --on-ac --bad) are aliases of the semantic roles (tests + older code).
   Themes: day (default, porcelain / navy / cobalt) · dark (navy-black, cyan) · sun (sunlight high contrast) · night (red only).
   Meaning: accent = interactive / pilot-set; --act (magenta; red in night) = active / current / route; ok / warn / danger = status only.
   Night rule (tested for every colour in effect): B <= G, B <= 0x9A, G <= 0xC0 — red / salmon only, nothing blue, green or white. */
@font-face{font-family:"B612 Mono";src:url(vendor/b612mono-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"B612 Mono";src:url(vendor/b612mono-700.woff2) format("woff2");font-weight:700 900;font-display:swap}
:root{
  /* legacy aliases → semantic roles */
  --tx:var(--text);--mu:var(--text-muted);--card:var(--surface);--btn:var(--surface-2);--line:var(--border);--ac:var(--accent);--on-ac:var(--accent-contrast);--bad:var(--danger);
  --border-strong:var(--edge);
  /* motion (all non-essential motion is removed by prefers-reduced-motion or Settings › Motion off → [data-motion=off]) */
  --ease:cubic-bezier(.2,.8,.2,1);--dur-press:100ms;--dur-tab:160ms;--dur-sheet:200ms;--dur-confirm:140ms;--dur-theme:200ms;
  --tap:56px;--rad:12px;--rad-sm:8px;--rad-lg:16px;--bw:1px;--bw-strong:2px;
  --num:"B612 Mono",system-ui,sans-serif;
}
/* ---- DARK: navy-black glass cockpit, cyan accent (the v2.0 look) ---- */
[data-theme=dark]{
  color-scheme:dark;
  --row:#161f2d;--row-edge:#2a3850;--cur-bg:#2a1633;--pill:#0a2a33;--pill-tx:#8feaf8;--pill-edge:#1d5866;--badge:#223047;--badge-tx:#d5deea;
  --track:#1c2636;--track-edge:#5a6b85;--chk-top:#b4309f;--chk-bot:#8e2380;--on-chk:#ffffff;--chk-chip:#00000047;--chk-hi:#ffffff2e;--good-bg:#0c2a1a;--amb-bg:#2e2208;--bad-soft:#331416;--sub:#131b27;
  --row-shadow:0 1px 0 #ffffff0a inset,0 6px 18px #00000073;--glow:0 0 0 3px #f06be82e;
  --bg:#080c12;--bar:#0c1119;--surface:#111823;--surface-2:#18212f;--btn-hi:#1f2b3d;--border:#243044;--edge:#5a6b85;
  --text:#eef3f8;--text-muted:#9fadc1;--accent:#3fd8f2;--accent-contrast:#00161c;
  --act:#f06be8;--act-fill:#b4309f;--on-act:#ffffff;
  --ok:#3ddc84;--ok-fill:#1fae62;--on-ok:#00170b;
  --warn:#ffb627;--warn-fill:#ffb627;--on-warn:#1c1200;
  --danger:#ff6b6b;--bad-fill:#d42a35;--on-bad:#ffffff;--bad-bg:#2a0d12;
  --scrim:#000000b3;--focus:#3fd8f2;
  --shadow:0 1px 0 #ffffff0d inset,0 1px 2px #0008;--shadow-2:0 1px 0 #ffffff0f inset,0 8px 24px #0009;--press-shadow:0 4px 10px #00000066;
  --map-bg:#0d1626;--map-label:#ffffff;--map-halo:#000000;--inst-bg:#000000;--inst-scrim:#000000cc;--inst-warn:#fbbf24;--inst-tx:#ffffff;
  --cat-vfr:#22c55e;--cat-mvfr:#3b82f6;--cat-ifr:#ef4444;--cat-lifr:#d946ef;--on-cat:#000000;--on-cat-mvfr:#ffffff;
}
/* ---- DAY: warm porcelain, white surfaces, deep navy text, cobalt controls, restrained amber, thin borders, minimal shadows ---- */
[data-theme=day]{
  color-scheme:light;
  /* scales (Radix-style steps: 1–2 app bg, 3–5 component bg, 6–8 borders, 9–10 solid, 11–12 text) */
  --sand-1:#fdfdfc;--sand-2:#f5f4f0;--sand-3:#eeede8;--sand-4:#e6e4de;--sand-6:#d7d4cc;--sand-8:#a9a498;
  --navy-9:#5b6781;--navy-11:#3a465e;--navy-12:#13203a;
  --cobalt-3:#edf2fe;--cobalt-4:#e1e9fd;--cobalt-6:#b8caf6;--cobalt-9:#2152d6;--cobalt-10:#1b46bd;--cobalt-11:#1a3fa6;
  --amber-3:#fdf3df;--amber-7:#e9c27a;--amber-9:#f0b429;--amber-11:#87490c;
  --green-3:#e7f4ec;--green-9:#1e7a4c;--green-11:#17643e;
  --red-3:#fcebed;--red-9:#b42335;--red-11:#a01e2f;
  --magenta-3:#faeef9;--magenta-9:#98208d;
  /* roles */
  --bg:var(--sand-2);--bar:#ffffff;--surface:#ffffff;--surface-2:#ffffff;--btn-hi:var(--cobalt-3);--border:var(--sand-6);--edge:var(--sand-8);
  --text:var(--navy-12);--text-muted:var(--navy-11);--accent:var(--cobalt-9);--accent-contrast:#ffffff;
  --act:var(--magenta-9);--act-fill:var(--magenta-9);--on-act:#ffffff;
  --ok:var(--green-11);--ok-fill:var(--green-9);--on-ok:#ffffff;
  --warn:var(--amber-11);--warn-fill:var(--amber-9);--on-warn:#241600;
  --danger:var(--red-11);--bad-fill:var(--red-9);--on-bad:#ffffff;--bad-bg:var(--red-3);
  --scrim:#13203a73;--focus:var(--cobalt-9);
  --shadow:0 1px 2px #13203a0f;--shadow-2:0 10px 30px #13203a24;--press-shadow:0 1px 2px #13203a1f;
  --row:#ffffff;--row-edge:var(--sand-6);--cur-bg:var(--cobalt-3);--pill:var(--cobalt-3);--pill-tx:var(--cobalt-11);--pill-edge:var(--cobalt-6);--badge:var(--sand-3);--badge-tx:var(--navy-12);
  --track:var(--sand-3);--track-edge:var(--sand-6);--chk-top:var(--cobalt-9);--chk-bot:var(--cobalt-10);--on-chk:#ffffff;--chk-chip:#ffffff2e;--chk-hi:#ffffff2e;--good-bg:var(--green-3);--amb-bg:var(--amber-3);--bad-soft:var(--red-3);--sub:var(--sand-1);
  --row-shadow:0 1px 2px #13203a0d;--glow:0 0 0 3px #2152d62e;
  --map-bg:#e8eef0;--map-label:#13203a;--map-halo:#ffffff;--inst-bg:#000000;--inst-scrim:#000000cc;--inst-warn:#fbbf24;--inst-tx:#ffffff;
  --cat-vfr:#1e7a4c;--cat-mvfr:#2152d6;--cat-ifr:#b42335;--cat-lifr:#98208d;--on-cat:#ffffff;--on-cat-mvfr:#ffffff;
}
/* ---- SUN: direct-sunlight high contrast — white / black, 2–3 px teal lines, no greys ---- */
[data-theme=sun]{
  color-scheme:light;
  --row:#ffffff;--row-edge:#007a87;--cur-bg:#fdeefb;--pill:#e3f8fb;--pill-tx:#004e58;--pill-edge:#007a87;--badge:#000000;--badge-tx:#ffffff;
  --track:#e3f8fb;--track-edge:#007a87;--chk-top:#a3008f;--chk-bot:#85006f;--on-chk:#ffffff;--chk-chip:#000000;--chk-hi:#ffffff00;--good-bg:#e2f7ea;--amb-bg:#fff4dc;--bad-soft:#ffe6e9;--sub:#ffffff;
  --row-shadow:none;--glow:0 0 0 3px #a3008f;
  --bg:#ffffff;--bar:#ffffff;--surface:#ffffff;--surface-2:#ffffff;--btn-hi:#e3f7fb;--border:#00606e;--edge:#00606e;
  --text:#000000;--text-muted:#1d2530;--accent:#00596a;--accent-contrast:#ffffff;
  --act:#8e0f9c;--act-fill:#8e0f9c;--on-act:#ffffff;
  --ok:#005c2b;--ok-fill:#006b33;--on-ok:#ffffff;
  --warn:#7a3b00;--warn-fill:#ffb000;--on-warn:#000000;
  --danger:#b3001b;--bad-fill:#b3001b;--on-bad:#ffffff;--bad-bg:#ffecee;
  --scrim:#000000cc;--focus:#000000;--shadow:none;--shadow-2:none;--press-shadow:none;--bw:2px;--bw-strong:3px;
  --map-bg:#e8eef0;--map-label:#000000;--map-halo:#ffffff;--inst-bg:#000000;--inst-scrim:#000000cc;--inst-warn:#fbbf24;--inst-tx:#ffffff;
  --cat-vfr:#006b33;--cat-mvfr:#00407a;--cat-ifr:#b3001b;--cat-lifr:#8e0f9c;--on-cat:#ffffff;--on-cat-mvfr:#ffffff;
}
/* ---- NIGHT (cockpit, dark-adapted): near-black warm bg, brown-black panels, warm red / salmon text and controls ---- */
[data-theme=night]{
  color-scheme:dark;
  --ember-1:#0e0807;--ember-2:#140b09;--ember-3:#1a0f0d;--ember-4:#22130f;--ember-5:#2e1813;--ember-6:#4a2a22;--ember-8:#8a4535;
  --ember-9:#f0907a;--ember-10:#ff7a62;--ember-11:#c07e6e;--ember-12:#ec9a88;
  --bg:var(--ember-1);--bar:var(--ember-2);--surface:var(--ember-3);--surface-2:var(--ember-4);--btn-hi:var(--ember-5);--border:var(--ember-6);--edge:var(--ember-8);
  --text:var(--ember-12);--text-muted:var(--ember-11);--accent:var(--ember-9);--accent-contrast:#1a0907;
  --act:var(--ember-10);--act-fill:#4a1a12;--on-act:#ff9a80;
  --ok:#e0a878;--ok-fill:#b8703f;--on-ok:#120604;
  --warn:#ffa060;--warn-fill:#ff8c3a;--on-warn:#140600;
  --danger:#ff5a42;--bad-fill:#e8321c;--on-bad:#000000;--bad-bg:#1f0605;
  --scrim:#000000e6;--focus:#ffa060;--shadow:none;--shadow-2:none;--press-shadow:none;
  --row:#170c0a;--row-edge:#3a1d16;--cur-bg:#2e120d;--pill:#22100c;--pill-tx:#f0a080;--pill-edge:#5a2518;--badge:#2a130e;--badge-tx:#f0a080;
  --track:#22100c;--track-edge:#a8452a;--chk-top:#8a2412;--chk-bot:#6a1a0c;--on-chk:#ffc09a;--chk-chip:#00000066;--chk-hi:#00000000;--good-bg:#221008;--amb-bg:#2a1206;--bad-soft:#300806;--sub:#120a08;
  --row-shadow:0 6px 18px #00000099;--glow:0 0 0 3px #ff7a6240;
  --map-bg:#000000;--map-label:#ff6a55;--map-halo:#000000;--inst-bg:#000000;--inst-scrim:#000000;--inst-warn:#ffa060;--inst-tx:#c07e6e;
  --cat-vfr:#2e1813;--cat-mvfr:#2e1813;--cat-ifr:#2e1813;--cat-lifr:#2e1813;--on-cat:#ec9a88;--on-cat-mvfr:#ec9a88;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:17px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-tap-highlight-color:transparent}
[data-theme=sun] body{font-weight:600}
body{display:flex;flex-direction:column;overflow:hidden}
button,input,select{font:inherit;color:var(--text)}
button{min-height:var(--tap);min-width:var(--tap);padding:0 16px;border-radius:var(--rad);border:var(--bw) solid var(--border);background:var(--surface-2);cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;box-shadow:var(--shadow)}
button:active{transform:scale(.97);background:var(--btn-hi)}
button.big{font-weight:700}
button.ghost{background:transparent;box-shadow:none}
button.primary{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}
button[aria-pressed=true],button.on{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}
input,select{min-height:52px;padding:0 12px;border-radius:10px;border:var(--bw) solid var(--border);background:var(--bg);width:100%}
input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
label{display:flex;flex-direction:column;font-size:var(--fs-xs);color:var(--text-muted);gap:3px}
label.inl{flex-direction:row;align-items:center;gap:8px;font-size:var(--fs-m)}label.inl input{width:5em}
h2{margin:0 0 .6rem;font-size:var(--fs-l);letter-spacing:.01em}h2 small{color:var(--text-muted);font-weight:400;font-size:var(--fs-xs);margin-left:4px}
.muted{color:var(--text-muted)}.small{font-size:var(--fs-s)}.src{color:var(--text-muted);font-size:var(--fs-xs);margin:.6rem 0 0}
.kicker{font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);font-weight:700}
.good{color:var(--ok)}.bad{color:var(--danger)}.amb{color:var(--warn)}
[hidden]{display:none!important}

/* ---------- header ---------- */
#top{display:flex;gap:8px;align-items:center;padding:6px 10px;padding-top:max(6px,env(safe-area-inset-top));background:var(--bar);border-bottom:var(--bw) solid var(--border)}
.brand{font-size:var(--fs-m);white-space:nowrap;letter-spacing:.02em}.reg{color:var(--accent);font-weight:800;margin-left:4px}
.clock{font-variant-numeric:tabular-nums;font-weight:800;white-space:nowrap;font-size:var(--fs-l);background:transparent;box-shadow:none;border-color:transparent;padding:0 8px!important}.clock #clk-sw{color:var(--act);margin-left:6px;display:inline}.clock i{font-style:normal;color:var(--accent);font-size:var(--fs-xs);margin-left:1px}.clock small{color:var(--text-muted);margin-left:6px;font-weight:600;font-size:var(--fs-xs)}
#q{flex:1;min-width:120px;min-height:var(--tap)}
#top button{padding:0 14px}
#btn-air.on{background:var(--ok-fill);border-color:var(--ok-fill);color:var(--on-ok)}
#btn-air.arm{background:var(--warn-fill);border-color:var(--warn-fill);color:var(--on-warn)}
#gps-pill{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.05;padding:0 10px!important;min-width:64px}#gps-pill small{font-size:var(--fs-xs);font-weight:800}
#gps-pill.off,#gps-pill.nofix{border-color:var(--warn);color:var(--warn)}#gps-pill.nofix{border-color:var(--danger);color:var(--danger)}#gps-pill.fix{border-color:var(--ok);color:var(--ok);background:var(--surface-2)}#gps-pill.sim{border-color:var(--act);color:var(--act);background:var(--surface-2)}
#btn-freda{font-variant-numeric:tabular-nums}
#btn-freda.run{border-color:var(--accent)}
#btn-freda.due{background:var(--warn-fill);border-color:var(--warn-fill);color:var(--on-warn)}
#btn-emer{margin-left:10px;background:var(--bad-fill);border-color:var(--bad-fill);color:var(--on-bad);letter-spacing:.06em}
#vbar{display:flex;gap:5px;padding:5px 10px;overflow-x:auto;background:var(--bar);border-bottom:var(--bw) solid var(--border);scrollbar-width:none}
#vbar::-webkit-scrollbar{display:none}
.vs{flex:0 0 auto;display:flex;align-items:baseline;gap:5px;border:var(--bw) solid var(--border);border-radius:8px;padding:2px 9px;line-height:1.2;background:var(--surface)}
.vs b{font-size:var(--fs-l);color:var(--accent);font-variant-numeric:tabular-nums}.vs small{font-size:var(--fs-xs);color:var(--text-muted);font-weight:700}
.vs.red b{color:var(--danger)}.vs.grn b{color:var(--ok)}
#search-res{position:absolute;z-index:2000;left:10px;right:10px;top:120px;max-height:60vh;overflow:auto;background:var(--surface);border:2px solid var(--accent);border-radius:14px;padding:6px;box-shadow:var(--shadow-2)}
.hit{display:block;width:100%;text-align:left;padding:10px 12px;margin:0 0 4px;min-height:var(--tap);box-shadow:none}
.hit small{color:var(--text-muted);display:block}mark{background:var(--accent);color:var(--accent-contrast);border-radius:3px}

/* ---------- layout ---------- */
main{flex:1;overflow:auto;position:relative;-webkit-overflow-scrolling:touch}
.pane{display:none;padding:12px;max-width:1400px;margin:0 auto}
.pane.act{display:block}
.pane-full.act{position:absolute;inset:0;padding:0;max-width:none}
.card{background:var(--surface);border:var(--bw) solid var(--border);border-radius:16px;padding:14px;margin-bottom:12px}
.card.warn{border-color:var(--warn)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.grid2>.card{margin:0;min-width:0}
.grid2.wide-left{grid-template-columns:3fr 2fr}
.row{display:flex;gap:8px;align-items:center;margin-bottom:8px}.row.wrap{flex-wrap:wrap}.grow{flex:1}
.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-bottom:8px}
.fields.f4{grid-template-columns:repeat(4,minmax(0,1fr))}
.fields label button{width:100%;padding:0 6px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.chips button{flex:0 0 auto;white-space:nowrap;font-weight:700}
details>summary{list-style:none;cursor:pointer;min-height:44px;display:flex;align-items:center}
details>summary::-webkit-details-marker{display:none}
details>summary h2{margin:0}details>summary::after{content:"▾";margin-left:auto;color:var(--text-muted);font-size:var(--fs-l)}
details[open]>summary::after{content:"▴"}details[open]>summary{margin-bottom:8px}
table.tbl{width:100%;border-collapse:collapse}.tbl td,.tbl th{padding:8px 6px;border-bottom:1px solid var(--border);text-align:left}
.tbl th{font-size:var(--fs-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}
.tbl input{min-height:48px}
.tscroll{overflow-x:auto}
.small-btn{min-height:48px;font-size:var(--fs-xs);margin-left:6px}

/* ---------- home ---------- */
.phases-bar{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-bottom:12px}
.phases-bar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:4px 6px;min-height:64px;line-height:1.15;position:relative}
.phases-bar button small{font-size:var(--fs-xs);color:var(--text-muted);font-weight:700}
.phases-bar button.done small{color:var(--ok)}
.phases-bar button.now{border-color:var(--act);box-shadow:inset 0 -4px 0 var(--act)}
.phases-bar button.sel{background:var(--btn-hi);border-color:var(--act)}
.home-grid{display:grid;grid-template-columns:3fr 2fr;gap:12px;margin-bottom:12px}.home-grid>.card{margin:0}
.next-card{border-color:var(--act)}
.next-card .go{width:100%;min-height:72px;font-size:var(--fs-l);background:var(--act-fill);color:var(--on-act);border-color:var(--act-fill);display:flex;align-items:center;justify-content:center;gap:10px;margin:6px 0 10px}
.next-card .go small{font-weight:600;opacity:.85}
.cl-rows{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.cl-rows button,.tools button{text-align:left;display:flex;align-items:center;gap:8px;font-weight:600;font-size:var(--fs-s);padding:6px 12px}
.cl-rows button b{margin-left:auto;font-size:var(--fs-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}
.cl-rows button.done b{color:var(--ok)}
.cl-rows button.opt{border-style:dashed}
.tools{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-content:start}
.tile{display:block;text-align:left;padding:10px 12px;min-height:84px;background:var(--surface)}
.tile small{display:block;color:var(--text-muted);font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.tile b{display:block;font-size:var(--fs-xl);font-variant-numeric:tabular-nums;line-height:1.2}
.tile span{display:block;font-size:var(--fs-xs);color:var(--text-muted);font-weight:500}
.tile.w2{grid-column:span 2}
.tile.alert{border-color:var(--warn)}.tile.alert b{color:var(--warn)}
.freq{font-size:var(--fs-l);color:var(--accent);font-weight:800;font-variant-numeric:tabular-nums}
#apt-phones a{color:var(--accent)}

/* ---------- checklists ---------- */
.split{display:grid;grid-template-columns:280px 1fr;gap:12px;align-items:start}.split>*,.home-grid>*{min-width:0}
.side{position:sticky;top:0;display:flex;flex-direction:column;gap:8px}
.groups{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.groups button{min-height:48px;padding:0 8px;font-size:var(--fs-s);font-weight:700;display:flex;align-items:center;justify-content:space-between;gap:4px}
.groups button.sel{border-color:var(--act);background:var(--btn-hi)}
.groups button.em{color:var(--danger)}
.groups button small{font-size:var(--fs-xs);color:var(--text-muted)}.groups button.done small{color:var(--ok)}
.cl-list{display:flex;flex-direction:column;gap:5px;max-height:calc(100vh - 330px);overflow:auto}
.cl-list button{text-align:left;font-size:var(--fs-s);display:flex;align-items:center;gap:8px;padding:6px 12px;box-shadow:none}
.cl-list button b{margin-left:auto;font-size:var(--fs-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.cl-list button.cur{border-color:var(--act);box-shadow:inset 5px 0 0 var(--act)}
.cl-list button.done b{color:var(--ok)}
.cl-list button.em{color:var(--danger)}
.em-view{border-color:var(--danger);background:linear-gradient(var(--bad-bg),var(--surface) 140px)}.em-view #cl-title{color:var(--danger)}.em-view #cl-bar{background:var(--danger)}
#cl-items{list-style:none;margin:0;padding:0}
#cl-items li.nt{padding:8px 14px;font-style:italic;color:var(--warn);font-weight:700}
.cl-foot{position:sticky;bottom:0;display:flex;gap:8px;padding-top:10px;background:linear-gradient(transparent,var(--surface) 12px)}
#cl-pics{display:flex;gap:4px;cursor:zoom-in;flex:0 0 auto}
#cl-pics svg{height:88px;width:auto;display:block;border:var(--bw) solid var(--border);border-radius:10px;background:var(--bg)}
.pics-big .cl-head{flex-wrap:wrap}.pics-big #cl-pics{order:9;flex-basis:100%;justify-content:center;cursor:zoom-out}.pics-big #cl-pics svg{height:auto;width:100%;max-height:230px;border:0;background:none}

/* ---------- radio ---------- */
.rt-ph{margin-bottom:12px}
.rt-call{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--border)}
.rt-call .w{display:inline-block;font-size:var(--fs-xs);font-weight:700;color:var(--act);border:1px solid var(--act);border-radius:6px;padding:1px 8px;margin-bottom:4px}
.rt-call .say{font-size:var(--fs-l);font-weight:600}
.rt-em{border-color:var(--danger)}.rt-em h2{color:var(--danger)}

/* ---------- circuit ---------- */
#circ-svg{width:100%;height:auto;display:block}
.legs{padding-left:1.3rem;margin:0}.legs li{margin-bottom:10px}
.seg.on{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}
#circ-map{height:400px;border-radius:12px}
.leaflet-touch .leaflet-bar a{width:56px!important;height:56px!important;line-height:56px!important;font-size:28px!important}
.cpt{background:var(--act-fill);color:var(--on-act);border-radius:50%;width:28px;height:28px;line-height:24px;text-align:center;font-weight:900;border:2px solid var(--text)}
.cpt.vrp{background:var(--accent);color:var(--accent-contrast)}
#circ-pts td:first-child{width:36px}
.mono{font-family:ui-monospace,Consolas,monospace;font-size:var(--fs-s);white-space:nowrap}

/* ---------- map ---------- */
#map{position:absolute;inset:0;background:var(--map-bg)}
#map-ui{position:absolute;z-index:1000;right:10px;top:10px;display:flex;flex-direction:column;gap:6px}
#map-ui button,#pfd-ui button{background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);min-width:72px}
#map-ui button[aria-pressed=true],#pfd-ui button[aria-pressed=true]{background:var(--accent);color:var(--accent-contrast)}
#zin-btn,#zout-btn{font-size:var(--fs-xl);padding:0}
#map-data{position:absolute;z-index:1000;left:10px;bottom:10px;right:96px;display:flex;gap:6px;flex-wrap:wrap;pointer-events:none}
#map-data div{background:color-mix(in srgb,var(--surface) 90%,transparent);border:var(--bw) solid var(--border);border-radius:10px;padding:3px 12px;text-align:center;min-width:80px}
#p-map.hud-on #map-data{left:360px}
#map-data div.nx{border-color:var(--act)}#map-data .nx b{color:var(--act)}
#map-data small{display:block;color:var(--text-muted);font-size:var(--fs-xs);font-weight:700;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#map-data b{font-size:var(--fs-l);font-variant-numeric:tabular-nums;white-space:nowrap}
#map-msg{position:absolute;z-index:1000;left:10px;top:10px;background:var(--surface);padding:6px 12px;border-radius:10px;max-width:calc(100% - 110px);border:var(--bw) solid var(--border)}
#map-msg:empty{display:none}
#hud{position:absolute;z-index:1000;left:10px;bottom:10px;border-radius:12px;border:2px solid var(--border);width:340px;height:227px}
.vrp-lbl{background:transparent;border:0;box-shadow:none;color:var(--map-label);font-weight:700;text-shadow:0 0 3px var(--map-halo),0 0 3px var(--map-halo),0 0 2px var(--map-halo)}
.vrp-lbl::before{display:none}
.acft{filter:drop-shadow(0 0 2px var(--map-halo))}
[data-theme=dark] #map .leaflet-tile-pane{filter:brightness(.82) saturate(.9)}
[data-theme=night] .leaflet-tile-pane{filter:grayscale(1) invert(1) brightness(.5) sepia(1) saturate(6) hue-rotate(-30deg)}
[data-theme=night] #pfd,[data-theme=night] #hud,[data-theme=night] #circ-svg{filter:brightness(.7) sepia(1) saturate(4) hue-rotate(-35deg)}
[data-theme=night]{--ac-fill:var(--accent);--ac-stroke:#000000}   /* map overlays use theme inks (app.js readInk) — no night filter needed */

/* ---------- PFD ---------- */
#pfd{position:absolute;inset:0;width:100%;height:100%;background:var(--inst-bg)}
#pfd-ui{position:absolute;left:10px;top:10px;display:flex;gap:8px;z-index:5;align-items:center;flex-wrap:wrap;max-width:60%}
#pfd-fps{color:var(--inst-tx);font-size:var(--fs-xs);text-shadow:0 0 3px var(--inst-bg)}
.pfd-warn{position:absolute;top:10px;right:10px;max-width:34%;background:var(--inst-scrim);color:var(--inst-warn);padding:6px 12px;border-radius:10px;font-size:var(--fs-xs);font-weight:700}

/* ---------- plan / wx ---------- */
.wx{border-top:1px solid var(--border);padding:8px 0}.wx .raw{font-family:ui-monospace,Consolas,monospace;font-size:var(--fs-s);word-break:break-word}
.cat{display:inline-block;padding:0 8px;border-radius:6px;font-weight:800;color:var(--on-cat);margin-right:6px}
.VFR{background:var(--cat-vfr)}.MVFR{background:var(--cat-mvfr);color:var(--on-cat-mvfr)}.IFR{background:var(--cat-ifr)}.LIFR{background:var(--cat-lifr)}
.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:6px;margin-top:8px}
.kv div{border:var(--bw) solid var(--border);border-radius:10px;padding:5px 10px}.kv small{display:block;color:var(--text-muted);font-size:var(--fs-xs)}.kv b{font-size:var(--fs-l)}
#pl-route,#pl-add{flex:1}

/* ---------- log ---------- */
.phases{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:10px}
.phases div{border:var(--bw) solid var(--border);border-radius:12px;padding:8px;text-align:center}.phases div.on{border-color:var(--ok);box-shadow:inset 0 -4px 0 var(--ok)}
.phases b{display:block;font-size:var(--fs-xl);font-variant-numeric:tabular-nums}.phases small{color:var(--text-muted)}

/* ---------- drill ---------- */
#dr-card .q{font-size:var(--fs-xl);font-weight:700;margin-bottom:12px}
#dr-card .opts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#dr-card .opts button{font-size:var(--fs-l)}
#dr-card ol li{font-size:var(--fs-l);margin:6px 0}

/* ---------- tabs ---------- */
#tabs{display:flex;border-top:var(--bw) solid var(--border);background:var(--bar);padding-bottom:env(safe-area-inset-bottom)}
#tabs button{flex:1;border:0;border-radius:0;background:transparent;font-weight:700;min-height:62px;font-size:var(--fs-m);min-width:0;padding:0 2px;box-shadow:none;color:var(--text-muted)}
#tabs button.act{color:var(--act);box-shadow:inset 0 4px 0 var(--act)}
[data-theme=sun] #tabs button{color:var(--text)}[data-theme=sun] #tabs button.act{background:var(--act-fill);color:var(--on-act);box-shadow:none}

/* ---------- sheets / toast ---------- */
.sheet{position:fixed;inset:0;z-index:2500;background:var(--scrim);display:flex;align-items:flex-start;justify-content:center;padding:70px 12px 12px;overflow:auto}
.sheet-box{background:var(--surface);border:2px solid var(--border);border-radius:18px;padding:14px;width:min(900px,100%)}
.em-box{border-color:var(--danger)}
.emer-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px;margin-bottom:12px}
.emer-grid button{text-align:left;min-height:64px;font-weight:700}
.emer-grid button.em{border-color:var(--danger);color:var(--danger)}
.emer-grid h3{grid-column:1/-1;margin:.4rem 0 0;font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}
.freda{font-size:var(--fs-l);padding-left:1.4rem}.freda li{margin:6px 0}.freda b{color:var(--accent)}
#toast{position:fixed;left:50%;top:calc(env(safe-area-inset-top) + 120px);transform:translateX(-50%);pointer-events:none;background:var(--accent);color:var(--accent-contrast);padding:12px 20px;border-radius:12px;font-weight:700;z-index:3000;max-width:90vw;box-shadow:var(--shadow-2)}

/* ---------- sunlight: sharp, heavy borders ---------- */
[data-theme=sun] .card,[data-theme=sun] .sheet-box{border-width:3px}
[data-theme=sun] #cl-items li.it.cur{border-width:3px}

/* ---------- responsive ---------- */
@media (max-width:1100px){.brand{display:none}}
@media (max-width:1000px){#vbar{display:grid;grid-template-columns:repeat(11,minmax(0,1fr));gap:4px;padding:4px 8px}.vs{flex-direction:column;align-items:center;gap:0;padding:1px 2px}.vs b{font-size:var(--fs-m)}.vs small{font-size:var(--fs-xs)}}
@media (max-width:900px){
  .grid2,.grid2.wide-left,.home-grid{grid-template-columns:1fr}
  .split{grid-template-columns:1fr}
  .side{position:sticky;top:-12px;z-index:5;background:var(--bg);margin:-12px -12px 0;padding:10px 12px 8px;border-bottom:var(--bw) solid var(--border)}
  .groups{display:flex;overflow-x:auto;scrollbar-width:none}.groups button{flex:0 0 auto;white-space:nowrap}
  .cl-list{flex-direction:row;overflow-x:auto;max-height:none;scrollbar-width:none}.cl-list button{flex:0 0 auto;white-space:nowrap;min-height:48px}
  .clock small{display:none}
  #hud{width:240px;height:160px}#p-map.hud-on #map-data{left:260px}
}
@media (max-width:700px){#top{flex-wrap:wrap}#q{order:9;flex-basis:100%}}
@media (max-width:760px){
  .phases-bar{grid-template-columns:repeat(3,1fr)}
  .fields.f4{grid-template-columns:1fr 1fr}
  .cl-rows{grid-template-columns:1fr}
  #tabs button{font-size:var(--fs-s)}
}

/* ---------- PAD (ATIS / clearance entry + notes) ---------- */
#btn-pad{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}
.padrow{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 10px}
.chip-v{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-width:96px;padding:4px 14px;line-height:1.1;text-align:left}
.chip-v small{font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-weight:700}
.chip-v b{font-size:var(--fs-l);color:var(--accent);font-variant-numeric:tabular-nums}
.chip-v.empty b{color:var(--warn);font-size:var(--fs-m)}
.chip-v.sel{border-color:var(--act);box-shadow:inset 0 0 0 2px var(--act)}
.pad-box{width:min(980px,100%)}
.pad-disp{display:flex;align-items:baseline;gap:12px;margin:2px 0 8px}.pad-disp small{color:var(--text-muted);font-weight:700}
.pad-disp b{font-size:var(--fs-2xl);color:var(--act);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.kp{display:grid;gap:8px;margin-bottom:8px}
.kp.num{grid-template-columns:repeat(3,1fr);max-width:420px}.kp.num button{min-height:68px;font-size:var(--fs-2xl);font-weight:800}
.kp.num button:disabled{opacity:.25}
.kp.letters{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}
.kp.letters button,.kp.two button{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:64px;line-height:1.05}
.kp.letters b{font-size:var(--fs-xl)}.kp.letters small{font-size:var(--fs-xs);color:var(--text-muted)}
.kp.two{grid-template-columns:1fr 1fr}.kp.two b{font-size:var(--fs-2xl)}.kp.two small{color:var(--text-muted)}
.kp.picks{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
.pad-notes{display:grid;grid-template-columns:1.3fr 1fr;gap:12px;margin-top:10px;border-top:var(--bw) solid var(--border);padding-top:10px}
.scr-wrap{position:relative}
#scribble{width:100%;height:300px;display:block;border-radius:12px;border:var(--bw) dashed var(--border);background:var(--bg);touch-action:none}
.scr-tools{display:flex;gap:6px;margin-top:6px}
.small-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.small-chips button{min-height:48px;padding:0 10px;font-size:var(--fs-s)}
.pad-log{list-style:none;padding:0;margin:0;max-height:220px;overflow:auto;font-size:var(--fs-s)}.pad-log li{padding:6px 0;border-bottom:1px solid var(--border)}.pad-log li b:first-child{color:var(--text-muted);margin-right:6px}

/* ---------- stage guide ---------- */
.stage{scroll-margin-top:60px}.stage.now{border-color:var(--act);box-shadow:inset 4px 0 0 var(--act)}
.st-head{display:flex;gap:12px;align-items:center;margin-bottom:6px}.st-head h2{margin:0}
.st-n{flex:0 0 40px;height:40px;border-radius:50%;display:grid;place-items:center;font-weight:900;background:var(--surface-2);border:var(--bw) solid var(--border);color:var(--accent)}
.stage.now .st-n{background:var(--act-fill);color:var(--on-act);border-color:var(--act)}
.gl{display:grid;grid-template-columns:92px 1fr;gap:10px;padding:6px 0;border-top:1px solid var(--border)}
.gl-l{font-size:var(--fs-xs);font-weight:800;letter-spacing:.1em;padding-top:6px;color:var(--text-muted)}
.gl.say .gl-l{color:var(--accent)}.gl.rb .gl-l{color:var(--act)}.gl.watch .gl-l{color:var(--warn)}.gl.exp .gl-l{color:var(--ok)}
.gl p{margin:4px 0}.gl .rt-call{border-top:0;padding:4px 0}
.st-foot{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}.st-foot button{min-height:48px;font-size:var(--fs-s)}.st-foot button.done{opacity:.6}
@media (max-width:760px){.pad-notes{grid-template-columns:1fr}.gl{grid-template-columns:1fr;gap:2px}.gl-l{padding-top:0}#scribble{height:240px}}
#top button{white-space:nowrap}
.home-pad{grid-column:1/-1}.home-pad .padrow{margin:4px 0 0}
@media (max-width:900px){#top{gap:6px}#top button{padding:0 10px}#btn-freda span{font-variant-numeric:tabular-nums}}
@media (max-width:800px){#top .clock small{display:none}}

/* ---------- 2026-09-29: touch targets ≥56 px everywhere ---------- */
.groups button,.st-foot button,.small-btn,.small-chips button,.cl-list button,.chips button{min-height:var(--tap)}
h3{font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin:14px 0 6px}
.fields.f3{grid-template-columns:repeat(3,minmax(0,1fr))}.fields.f2{grid-template-columns:1fr 1fr}
#rt-nav{position:sticky;top:-12px;z-index:5;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;background:var(--bg);margin:-12px -12px 10px;padding:10px 12px 8px;border-bottom:var(--bw) solid var(--border)}
#rt-nav::-webkit-scrollbar{display:none}#rt-nav button.on{border-color:var(--act);box-shadow:inset 0 -4px 0 var(--act)}
.stage{scroll-margin-top:84px}
.tile.bad-t{border-color:var(--danger)}.tile.bad-t b,.tile.bad-t small{color:var(--danger)}
.gng{font-style:normal;padding:0 7px;border-radius:6px;margin-left:4px;letter-spacing:.04em}.gng.go{background:var(--ok-fill);color:var(--on-ok)}.gng.caution{background:var(--warn-fill);color:var(--on-warn)}.gng.nogo{background:var(--bad-fill);color:var(--on-bad)}
.gng-v{font-size:var(--fs-l);font-weight:900;padding:8px 12px;border-radius:12px;margin:8px 0;border:2px solid}.gng-v small{font-size:var(--fs-xs);font-weight:600;color:var(--text-muted);margin-left:6px}
.gng-v.go{color:var(--ok)}.gng-v.caution{color:var(--warn)}.gng-v.nogo{color:var(--danger)}
.set-b{color:var(--accent)}
/* phones: tap-to-call + copy (Wi-Fi tablets can't dial) */
.tels{display:flex;flex-direction:column;gap:6px;margin:6px 0}
.tel-row{display:flex;gap:6px}.tel-row .tel-btn{flex:1}
.tel-btn{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:var(--tap);padding:0 16px;border:var(--bw) solid var(--border);border-radius:var(--rad);color:var(--accent);font-weight:700;text-decoration:none;background:var(--surface-2)}
.tel-btn b{font-size:var(--fs-l);font-variant-numeric:tabular-nums;white-space:nowrap}.tel-btn span{color:var(--text);font-size:var(--fs-s)}
.tel-row.atis .tel-btn{border-color:var(--act);border-width:2px}.tel-row.atis .tel-btn span{color:var(--act)}
.tel-row .copy{flex:0 0 auto;font-size:var(--fs-s)}
.btn-link{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);padding:0 14px;border:var(--bw) solid var(--border);border-radius:var(--rad);color:var(--accent);font-weight:700;text-decoration:none;background:var(--surface-2)}
.btn-link.disabled{opacity:.4;pointer-events:none}
.brief{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px}.brief .tel-row{grid-column:1/-1}
/* guide SET row */
.gl.set .gl-l{color:var(--accent)}.setchips{display:flex;flex-wrap:wrap;gap:6px}.setchips span{border:var(--bw) solid var(--border);border-radius:10px;padding:4px 10px;font-weight:700}.setchips small{display:block;font-size:var(--fs-xs);color:var(--text-muted);letter-spacing:.08em}
.set-rows{display:grid;gap:8px;margin:8px 0}.set-row{display:grid;grid-template-columns:80px 1fr;align-items:center;border:var(--bw) solid var(--border);border-radius:12px;padding:10px 14px;min-height:64px}
.set-row small{font-weight:800;color:var(--text-muted);letter-spacing:.1em}.set-row b{font-size:var(--fs-xl);color:var(--accent);font-variant-numeric:tabular-nums}
#set-nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}#set-nav button.on{border-color:var(--act);box-shadow:inset 0 -4px 0 var(--act)}#set-nav button.bad{color:var(--danger)}
/* airports */
.apt-split{display:grid;grid-template-columns:360px 1fr;gap:12px;align-items:start}.apt-split>*{min-width:0}
.apt-side{position:sticky;top:0}.apt-side .row{margin-bottom:6px}#apt-q{flex:1;min-height:var(--tap)}
.seg2 .seg{flex:1}
.apt-list{display:flex;flex-direction:column;gap:6px;max-height:calc(100vh - 290px);overflow:auto}
.apt-list .kicker{margin:8px 2px 0}
.apt-row{display:grid;grid-template-columns:62px 1fr auto;align-items:center;gap:10px;text-align:left;min-height:64px;padding:6px 12px;box-shadow:none}
.apt-row .icao{font-weight:800;font-size:var(--fs-l);letter-spacing:.04em;font-variant-numeric:tabular-nums}
.apt-row .nm{font-weight:600;line-height:1.2;min-width:0}.apt-row .nm small,.apt-row .dist small{display:block;color:var(--text-muted);font-size:var(--fs-xs);font-weight:500}
.apt-row .dist{text-align:right;white-space:nowrap}
.apt-row.sel{border-color:var(--act);box-shadow:inset 5px 0 0 var(--act)}
.apt-row.closed{opacity:.55}
.apt-h{display:flex;gap:10px;align-items:flex-start}.apt-h h2{margin:0}.big-icao{font-size:var(--fs-2xl);font-weight:900;letter-spacing:.04em;line-height:1.1}
#apt-back{display:none}
.badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:var(--fs-xs);font-weight:800;border:2px solid currentColor;text-decoration:none;color:var(--text-muted)}
.badge.high{color:var(--ok)}.badge.medium{color:var(--warn)}.badge.low{color:var(--danger)}.badge.closed{background:var(--bad-fill);color:var(--on-bad);border-color:var(--bad-fill)}
#apt-fav{font-size:var(--fs-xl)}#apt-fav[aria-pressed=true]{background:var(--warn-fill);border-color:var(--warn-fill);color:var(--on-warn)}
.apt-range{margin:8px 0}
.apt-acts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:10px 0}
.apt-acts>*,.big-act{min-height:72px;font-size:var(--fs-m);font-weight:800;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none}
.big-act small{font-size:var(--fs-s);color:var(--text);font-variant-numeric:tabular-nums}
.apt-acts .dest{background:var(--act-fill);color:var(--on-act);border-color:var(--act-fill)}
.card-in{border:var(--bw) solid var(--border);border-radius:12px;padding:10px 12px;margin:8px 0}.card-in p{margin:4px 0}.card-in ul{margin:4px 0;padding-left:1.2rem}
.warn-b{border-color:var(--warn)}.warn-b>b{color:var(--warn)}.good-b{border-color:var(--ok)}
.card-in input{width:9em;min-height:48px;display:inline-block}
.apt-fq{display:flex;flex-direction:column;gap:4px}
.fq-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;border-bottom:1px solid var(--border);padding:4px 0}
.fq-row small{display:block;font-size:var(--fs-xs);color:var(--text-muted)}.fq-row .freq{font-size:var(--fs-xl)}
ul.plain{list-style:none;padding:0;margin:4px 0}ul.plain li{padding:3px 0}
.lnk{color:var(--accent);font-weight:700;margin-right:14px;display:inline-block;min-height:56px;line-height:56px}
.src-l{font-size:var(--fs-xs);word-break:break-all;padding-left:1.1rem}.src-l a{color:var(--accent)}
/* nearest */
.nr-row{display:flex;gap:6px;margin-bottom:6px}
.nr-go{flex:1;display:grid;grid-template-columns:62px 1fr auto;gap:10px;align-items:center;text-align:left;min-height:64px;padding:6px 12px}
.nr-go.on{border-color:var(--act);box-shadow:inset 5px 0 0 var(--act)}
.nr-go .icao{font-size:var(--fs-l)}.nr-go .nm{min-width:0}.nr-go .nm small{display:block;color:var(--text-muted);font-size:var(--fs-xs);font-weight:500}
.nr-num{text-align:right;white-space:nowrap}.nr-num b{font-size:var(--fs-xl);color:var(--accent);font-variant-numeric:tabular-nums}.nr-num small{display:block;color:var(--text);font-weight:700}
.nr-info{font-size:var(--fs-l)}
/* PPR email */
.pp-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:12px}
.pp-form{display:flex;flex-direction:column;gap:8px}.pp-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pp-3{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lbl{font-size:var(--fs-xs);color:var(--text-muted);margin-bottom:3px}
.pp-chips{margin:0 0 4px}.pp-chips button.on{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}
#ppr-prev{white-space:pre-wrap;font:var(--fs-s)/1.35 ui-monospace,Consolas,monospace;color:var(--text-muted);border:var(--bw) dashed var(--border);border-radius:10px;padding:10px;margin:0;max-height:52vh;overflow:auto}
/* stopwatch + fuel tank */
.sw-disp{font-size:var(--fs-hero);font-weight:900;text-align:center;font-variant-numeric:tabular-nums;color:var(--act);margin:6px 0 10px}
.tank{border-top:var(--bw) solid var(--border);margin-top:10px}#tk-side button.on{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}
.chk-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:4px;margin:6px 0}
label.chk{flex-direction:row;align-items:center;gap:10px;font-size:var(--fs-s);color:var(--text);min-height:56px;padding:0 8px;border:var(--bw) solid var(--border);border-radius:10px}
label.chk input{width:26px;height:26px;min-height:0;flex:0 0 auto}label.chk b{margin-left:auto;color:var(--accent)}
.lg-ft input{font-size:var(--fs-l);font-weight:800;letter-spacing:.06em;text-transform:uppercase}
@media (max-width:900px){
  .apt-split{grid-template-columns:1fr}.apt-split.detail .apt-side{display:none}.apt-split:not(.detail) .apt-detail{display:none}
  #apt-back{display:inline-flex;align-items:center}.apt-list{max-height:none}
  .pp-grid{grid-template-columns:1fr}
}
@media (max-width:800px){
  #q{flex:0 0 56px;min-width:56px;padding:0;text-align:center;font-size:var(--fs-l)}
  #q:focus,#q.has{position:absolute;left:8px;right:8px;top:calc(max(6px,env(safe-area-inset-top)) + 64px);z-index:2100;text-align:left;padding:0 12px;width:auto;font-size:var(--fs-m);background:var(--surface);border:2px solid var(--accent)}
}
@media (max-width:760px){.pp-2,.fields.f3{grid-template-columns:1fr 1fr}.fq-row .freq{font-size:var(--fs-l)}}
.apt-sw{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}.apt-sw small{color:var(--text-muted);font-weight:700;margin-right:4px}
.kp.rw{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.kp.rw button{display:flex;flex-direction:column;align-items:center;min-height:68px;line-height:1.1}.kp.rw b{font-size:var(--fs-2xl)}.kp.rw small{color:var(--text-muted);font-size:var(--fs-xs)}
.vs small i{display:block;font-style:normal;font-weight:600;font-size:var(--fs-xs);letter-spacing:0;text-transform:none;color:var(--text-muted);white-space:nowrap;line-height:1.1}
@media (max-width:1000px){.vs small i{white-space:normal;font-size:var(--fs-xs);text-align:center}}
/* V-speed bar: 11 equal columns at every width, meaning under each code */
#vbar{display:grid!important;grid-template-columns:repeat(11,minmax(0,1fr));gap:4px;padding:4px 8px;overflow:hidden}
.vs{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:2px 2px;min-width:0;text-align:center}
.vs b{font-size:var(--fs-l);line-height:1.05}.vs small{font-size:var(--fs-xs);line-height:1.05}
.vs small i{white-space:normal;font-size:var(--fs-xs);text-align:center;overflow:hidden;text-overflow:ellipsis}
@media (max-height:820px){#map-ui{display:grid;grid-template-columns:auto auto;grid-auto-flow:row;gap:6px}#map-data{right:180px}}
#cl-items .h{white-space:pre-line}

/* ===== 2026-09-29 visual refresh (research/visual_spec.md) ===== */
/* numbers (pure-number displays only; mixed text such as set-up rows stays system-ui) */
.vs b,.freq,.chip-v b,.nr-num b,#map-data b,.phases b,.pad-disp b,.sw-disp,.kp.num button,.tel-btn b,.tile b.num{font-family:var(--num);font-variant-numeric:tabular-nums slashed-zero;letter-spacing:-.01em}
/* buttons */
button{border-color:var(--border);transition:background-color .12s,border-color .12s}
button:active{transform:none;background:var(--btn-hi);border-color:var(--edge)}
button.primary,button[aria-pressed=true],button.on{font-weight:800}
button.ghost{background:transparent;border-color:var(--border);box-shadow:none}
input,select{border-color:var(--edge);background:var(--bar)}
input:focus,select:focus,button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
/* header */
#top{background:var(--bar);box-shadow:0 1px 0 var(--border)}
.brand{font-weight:800;letter-spacing:.04em}
#btn-pad{background:transparent;color:var(--accent);border:var(--bw-strong) solid var(--accent)}
#btn-emer{background:var(--bad-fill);border:0;color:var(--on-bad);font-weight:900;letter-spacing:.1em;min-width:96px;box-shadow:0 0 0 2px var(--bar),0 0 0 4px var(--bad-fill)}
#btn-air.on{background:var(--ok-fill);border-color:var(--ok-fill);color:var(--on-ok)}
#btn-air.arm,#btn-freda.due,#apt-fav[aria-pressed=true]{background:var(--warn-fill);border-color:var(--warn-fill);color:var(--on-warn)}
/* V-speed bar */
#vbar{background:var(--bar);border-bottom:var(--bw) solid var(--border)}
.vs{background:transparent;border:0;border-radius:var(--rad-sm);position:relative}
.vs + .vs::before{content:"";position:absolute;left:-2px;top:18%;bottom:18%;width:1px;background:var(--border)}
.vs b{color:var(--text);font-size:var(--fs-l);font-weight:700}
.vs small{color:var(--accent);font-weight:800;letter-spacing:.04em}
.vs small i{color:var(--text-muted);font-weight:500}
.vs.grn b{color:var(--ok)}.vs.red b{color:var(--danger)}
/* phase bar */
.phases-bar button{background:var(--surface)}
.phases-bar button.now{background:var(--btn-hi);border-color:var(--act);box-shadow:inset 0 -4px 0 var(--act)}
.phases-bar button.now small{color:var(--act)}
.phases-bar button.done{border-color:var(--border)}
.phases-bar button.done small::after{content:" ✓"}
/* cards */
.card{border-radius:var(--rad-lg);box-shadow:var(--shadow)}
.next-card{border-color:var(--border);box-shadow:inset 4px 0 0 var(--act),var(--shadow)}
.next-card .go,#cl-check{background:var(--act-fill);border-color:var(--act-fill);color:var(--on-act);font-weight:800}
.kicker,.tile small,.chip-v small{color:var(--text-muted);letter-spacing:.1em}
/* tiles */
.tile{background:var(--surface);border-color:var(--border);box-shadow:none}
.tile b{font-size:var(--fs-xl);font-weight:700}
.tile.alert{border-color:var(--warn);box-shadow:inset 4px 0 0 var(--warn)}
.tile.bad-t{border-color:var(--danger);box-shadow:inset 4px 0 0 var(--danger)}
/* chips */
.chip-v{background:var(--surface)}
.chip-v.empty{border-style:dashed;border-color:var(--edge)}
.chip-v.empty b{color:var(--text-muted);font-weight:600}
/* checklist rows */
#cl-bar{background:var(--act)}
/* groups / lists selected */
.groups button.sel,.cl-list button.cur,.apt-row.sel,.nr-go.on{background:var(--btn-hi);border-color:var(--act);box-shadow:inset 5px 0 0 var(--act)}
/* tab bar */
#tabs{background:var(--bar);box-shadow:0 -1px 0 var(--border);border-top:0}
#tabs button{color:var(--text-muted);font-weight:700;position:relative}
#tabs button.act{color:var(--text);box-shadow:none;background:var(--btn-hi)}
#tabs button.act::before{content:"";position:absolute;left:18%;right:18%;top:0;height:4px;border-radius:0 0 4px 4px;background:var(--act)}
[data-theme=sun] #tabs button.act{background:var(--act-fill);color:var(--on-act)}
[data-theme=sun] #tabs button.act::before{display:none}
/* sheets / toast */
.sheet{background:var(--scrim);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.sheet-box{border-color:var(--edge);box-shadow:var(--shadow-2);border-radius:20px}
.em-box{border-color:var(--danger);border-width:3px;box-shadow:inset 0 6px 0 var(--danger),var(--shadow-2)}
#toast{background:var(--surface);color:var(--text);border:var(--bw-strong) solid var(--accent);box-shadow:var(--shadow-2)}
/* map overlays */
#map-ui button,#pfd-ui button{background:color-mix(in srgb,var(--bar) 86%,transparent);border-color:var(--edge);font-weight:800}
#map-data div{background:color-mix(in srgb,var(--bar) 88%,transparent);border-color:var(--edge);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
#map-data b{color:var(--text)}
#map-data div.nx{border-color:var(--act);border-width:2px}
/* sun: no greys, thick lines */
[data-theme=sun] .card,[data-theme=sun] .sheet-box,[data-theme=sun] #cl-items li.it.cur,[data-theme=sun] .phases-bar button.now{border-width:3px}
[data-theme=sun] .vs b{color:var(--text)}[data-theme=sun] .vs.red b{color:var(--danger)}[data-theme=sun] .vs.grn b{color:var(--ok)}
[data-theme=sun] #cl-items li.it.ok{color:var(--text)}
[data-theme=night] .next-card .go,[data-theme=night] #cl-check{border:2px solid var(--act)}
[data-theme=sun] #tabs{box-shadow:0 -3px 0 var(--border)}
[data-theme=sun] #top,[data-theme=sun] #vbar{border-bottom:3px solid var(--border);box-shadow:none}
/* night: nothing blue / green / white anywhere (weather categories, Leaflet controls, map background, PFD caption) */
[data-theme=night] .cat{border:1px solid var(--edge)}
[data-theme=night] .leaflet-bar a,[data-theme=night] .leaflet-bar a:hover{background:var(--surface-2);color:var(--text);border-color:var(--border)}
[data-theme=night] .leaflet-container{background:var(--map-bg)}
[data-theme=night] #pfd-fps{color:var(--text-muted);text-shadow:none}
[data-theme=night] .cpt{border-color:var(--act)}
/* PAD QNH carried over from another airfield */
.chip-v.stale{border-color:var(--warn);border-style:dashed}.chip-v.stale small{color:var(--warn)}
#rt-booked.done{opacity:1;border-color:var(--ok);color:var(--ok)}
/* header: buttons never shrink below their label (only the search box gives way); tighter at iPad-mini portrait */
#top>button{flex-shrink:0}
@media (max-width:800px){#top{gap:4px;padding-left:6px;padding-right:6px}#top button{padding:0 8px}#btn-emer{min-width:84px;margin-left:6px;letter-spacing:.06em}}
@media (max-width:1180px){.brand{display:none}}
@media (max-width:800px){#top button{font-size:var(--fs-s)}}
@media (max-width:800px){#btn-emer{margin-left:auto}}
/* night: EMER is the only large bright fill — pressed / on states become outlines */
[data-theme=night] button[aria-pressed=true],[data-theme=night] button.on,[data-theme=night] .seg.on,[data-theme=night] #map-ui button[aria-pressed=true],[data-theme=night] #pfd-ui button[aria-pressed=true],[data-theme=night] .pp-chips button.on,[data-theme=night] #tk-side button.on{background:var(--btn-hi);color:var(--accent);border:2px solid var(--accent)}
[data-theme=night] #btn-air.on{background:var(--btn-hi);color:var(--ok);border:2px solid var(--ok)}
[data-theme=night] #btn-air.arm,[data-theme=night] #btn-freda.due,[data-theme=night] #apt-fav[aria-pressed=true]{background:var(--btn-hi);color:var(--warn);border:2px solid var(--warn)}
[data-theme=night] #ac-svg path{fill:var(--text)}
[data-theme=night] button.primary{background:var(--btn-hi);color:var(--accent);border:2px solid var(--accent)}
[data-theme=night] #cl-check.fin{background:var(--btn-hi);color:var(--ok);border:2px solid var(--ok)}

/* aircraft profiles */
.acft-warn{margin:0;padding:8px 12px;background:var(--bad-bg);color:var(--danger);font-weight:700;border-bottom:var(--bw) solid var(--danger)}
#ac-reg{flex:1 1 180px;min-height:56px;text-transform:uppercase}
#ac-list button.on{outline:3px solid var(--act);outline-offset:-3px}
@media (max-width:780px){#acft-reg{display:none}}   /* iPad mini portrait: ✈ icon only, header stays one row */

/* ---- Checklist v2 (2026-09-30): raised numbered rows, value pills, one strong current-item signal, visible progress, planning brief ---- */
.cl-head{display:flex;gap:10px;align-items:flex-end;margin-bottom:14px}
.cl-head .kicker{color:var(--accent);letter-spacing:.14em}
.cl-head h2{margin:4px 0 0;font-size:var(--fs-xl);letter-spacing:-.01em}
.cl-head button{background:var(--surface-2);color:var(--text);border:1px solid var(--edge);box-shadow:var(--shadow)}
.cl-head button[aria-pressed=true]{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}
.prog{height:12px;border-radius:99px;background:var(--track);border:1px solid var(--track-edge);overflow:hidden;margin:0 0 16px}
#cl-bar{height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--ok));transition:width .35s cubic-bezier(.2,.8,.2,1)}
#cl-items{list-style:none;margin:0;padding:0;counter-reset:cl;display:grid;gap:8px}
#cl-items li.it{counter-increment:cl;display:grid;grid-template-columns:44px minmax(0,1fr) auto auto;align-items:center;gap:14px;min-height:64px;padding:8px 14px 8px 12px;
  background:var(--row);border:1px solid var(--row-edge);border-radius:14px;box-shadow:var(--row-shadow);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}
#cl-items li.it .ck{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--badge);font-size:0;color:transparent}
#cl-items li.it .ck::before{content:counter(cl);font:700 17px var(--num);color:var(--badge-tx)}
#cl-items li.it .n{font-size:var(--fs-l);font-weight:600;min-width:0;overflow-wrap:anywhere;hyphens:auto}
#cl-items li.it .h{display:block;font-size:var(--fs-xs);color:var(--text-muted);font-weight:400;margin-top:2px}
#cl-items li.it .a{justify-self:end;text-align:right;max-width:46ch;padding:8px 14px;border-radius:10px;background:var(--pill);color:var(--pill-tx);border:1px solid var(--pill-edge);font:700 var(--fs-m)/1.25 var(--num)}
#cl-items li.it.cur{background:var(--cur-bg);border:2px solid var(--act);box-shadow:var(--glow),var(--row-shadow);min-height:74px}
#cl-items li.it.cur .ck{background:var(--act-fill)}#cl-items li.it.cur .ck::before{color:var(--on-act)}
#cl-items li.it.cur .n{font-size:var(--fs-l);font-weight:700}
#cl-items li.it.ok{box-shadow:none}
#cl-items li.it.ok .ck{background:var(--ok-fill)}#cl-items li.it.ok .ck::before{content:"\2713";font:900 22px system-ui;color:var(--on-ok)}
#cl-items li.it.ok .n{color:var(--text-muted);font-weight:500}
#cl-items li.it.ok .a{background:transparent;border-color:transparent;color:var(--text-muted)}
#cl-items li.nt{padding:8px 14px;font-style:italic;color:var(--warn);font-weight:700}
.aid-t{padding:0 12px;font:700 var(--fs-s) var(--num);color:var(--accent);border:1px solid var(--pill-edge)!important}
li.aid{margin:-2px 0 6px 26px;padding:16px 18px;background:var(--sub);border:1px solid var(--row-edge);border-left:3px solid var(--act);border-radius:0 12px 12px 12px;cursor:default}
.aid-why{margin:0 0 10px;font-size:var(--fs-m);line-height:1.45}
.aid-live{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.chip{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:99px;font:700 var(--fs-s) var(--num);border:1px solid var(--border);background:var(--surface-2);color:var(--text)}
.chip.good{background:var(--good-bg);color:var(--ok);border-color:currentColor}.chip.amb{background:var(--amb-bg);color:var(--warn);border-color:currentColor}.chip.bad{background:var(--bad-soft);color:var(--danger);border-color:currentColor}
.aid-subs{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;counter-reset:st}
.aid-subs li{counter-increment:st;display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 14px;background:var(--row);border:1px solid var(--row-edge);border-radius:10px;font-size:var(--fs-m);line-height:1.3;cursor:pointer}
.aid-subs .sck{flex:none;width:28px;height:28px;border-radius:7px;border:2px solid var(--edge);display:grid;place-items:center;font-size:0;color:transparent}
.aid-subs .sck::before{content:counter(st);font:700 13px var(--num);color:var(--text-muted)}
.aid-subs li.ok{color:var(--text-muted)}.aid-subs li.ok .sck{background:var(--ok-fill);border-color:var(--ok-fill)}.aid-subs li.ok .sck::before{content:"\2713";font:900 16px system-ui;color:var(--on-ok)}
.aid-tools{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.aid-tools button{color:var(--accent);border:1px solid var(--accent);background:var(--surface-2)}
.aid-ntm h4{margin:12px 0 6px;font-size:var(--fs-s)}.aid-ntm h4 small{color:var(--text-muted);font-family:var(--num)}
.ntm{border:1px solid var(--row-edge);border-radius:10px;margin-bottom:6px;background:var(--row)}
.ntm summary{min-height:48px;display:flex;align-items:center;gap:8px;padding:0 12px;cursor:pointer;font-family:var(--num);font-size:var(--fs-s)}
.ntm pre{margin:0;padding:8px 12px 12px;white-space:pre-wrap;font:var(--fs-s)/1.4 var(--num);color:var(--text)}
.cl-foot{position:sticky;bottom:0;display:flex;gap:12px;padding-top:14px;background:linear-gradient(transparent,var(--surface) 14px)}
#cl-check{flex:2;min-height:76px;border:0;border-radius:16px;color:var(--on-chk);background:linear-gradient(180deg,var(--chk-top),var(--chk-bot));
  box-shadow:inset 0 1px 0 var(--chk-hi),0 4px 0 var(--chk-bot),var(--press-shadow);font-size:var(--fs-xl);font-weight:800;letter-spacing:.06em;transition:transform .06s,box-shadow .06s}
#cl-check:active{transform:translateY(3px);box-shadow:inset 0 1px 0 var(--chk-hi),0 1px 0 var(--chk-bot),var(--press-shadow)}
#cl-check small{margin-left:12px;padding:4px 10px;border-radius:8px;background:var(--chk-chip);font:700 var(--fs-m) var(--num);letter-spacing:0;opacity:1}
#cl-check.fin{background:var(--ok-fill);color:var(--on-ok);box-shadow:0 4px 0 var(--chk-bot)}
#cl-next{flex:1;min-height:76px;border-radius:16px;background:var(--surface-2);color:var(--text);border:1px solid var(--edge);font-weight:600}
[data-theme=sun] #cl-check,[data-theme=night] #cl-check,[data-theme=day] #cl-check{box-shadow:0 3px 0 var(--chk-bot)}
@media (prefers-reduced-motion:reduce){#cl-bar,#cl-items li.it,#cl-check{transition:none}}
@media (max-width:900px){.aid-subs{grid-template-columns:1fr}li.aid{margin-left:10px}#cl-items li.it .a{max-width:40vw}}

/* ---- Route planner ---- */
.rp h3{margin:16px 0 8px;font-size:var(--fs-m)}.rp h3 small{font-weight:400;font-size:var(--fs-xs)}
.rp-form{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:10px}
.rp-sum{margin-top:12px}.rp-sum b{font-family:var(--num)}
.rp-flags{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.rp-ap{border:1px solid var(--row-edge);background:var(--row);border-radius:12px;padding:10px 12px;margin-bottom:8px}
.rp-ap-h{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:4px}
.rp-ap .raw{font:var(--fs-s)/1.35 var(--num);margin-top:4px}
.rp-price{cursor:pointer;text-decoration:underline dotted}
@media (max-width:900px){.rp-form{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Pre-flight brief panel (route planner) — theme tokens only */
#rp-brief.rpb{display:block;border:2px solid var(--edge);border-radius:10px;padding:10px 12px;margin:10px 0;background:var(--surface)}#rp-brief.rpb[hidden]{display:none}
.brief-v{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;padding:8px 12px;border-radius:8px;border:3px solid var(--edge);margin-bottom:8px}
.brief-v b{font-size:var(--fs-xl);letter-spacing:.06em}.brief-v span{font-weight:700;letter-spacing:.1em;color:var(--text-muted)}.brief-v small{color:var(--text-muted)}
.brief-v.go{border-color:var(--ok)}.brief-v.go b{color:var(--ok)}.brief-v.caution{border-color:var(--warn)}.brief-v.caution b{color:var(--warn)}.brief-v.nogo{border-color:var(--danger)}.brief-v.nogo b{color:var(--danger)}
.brief-s h4{margin:12px 0 4px}.brief-s ul{margin:0;padding-left:18px}.brief-s li{margin:3px 0;line-height:1.35;overflow-wrap:anywhere}
.brief-s li.bl-nogo{color:var(--danger)}.brief-s li.bl-caution{color:var(--warn)}.brief-s li.bl-ok{color:var(--ok)}
.brief-ai{border-top:2px dashed var(--edge);margin-top:12px;padding-top:4px}.brief-ai h4 small{display:block;font-weight:400;color:var(--warn)}
#rp-brief-btn.on{border-color:var(--act);box-shadow:inset 0 -4px 0 var(--act)}

/* ===== Phase 2 design system (2026-09-30): icons, header toggles, Settings sheet, Day theme details, motion ===== */
/* icons: local Lucide-style sprite in index.html, stroke = currentColor so every theme (incl. Night) inks them */
svg.i{width:20px;height:20px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-4px}
button > svg.i:first-child,a > svg.i:first-child{margin-right:8px}
button.hb > svg.i:first-child,#tabs button > svg.i{margin-right:0}
h2 > svg.i{margin-right:8px;vertical-align:-3px}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* header buttons with icon + label (label stays visible; stacks under the icon on portrait tablets) */
#top button.hb{display:inline-flex;align-items:center;justify-content:center;gap:8px}
#btn-theme{min-width:var(--tap)}
#btn-theme[aria-pressed=true]{background:var(--btn-hi);color:var(--act);border:var(--bw-strong) solid var(--act)}
#btn-set{background:transparent;box-shadow:none}
/* search box with a leading icon (icon sits in the same grid cell as the input) */
.q-wrap{flex:1;min-width:120px;display:grid;align-items:center}
.q-wrap > *{grid-area:1/1}
.q-wrap .q-ic{justify-self:start;margin-left:14px;color:var(--text-muted);pointer-events:none;z-index:1}
#q{flex:none;min-width:0;width:100%;padding-left:44px}
@media (max-width:1400px){   /* tablets: icon over label keeps the header one row */
  #top button.hb{flex-direction:column;gap:3px;font-size:var(--fs-xs);line-height:1;padding:0 8px}
  #top button.hb svg.i{width:22px;height:22px}
}
@media (max-width:800px){
  #top button.hb{padding:0 6px;font-size:var(--fs-xs)}
  #btn-freda{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.05;padding:0 8px!important}
  #btn-emer{min-width:72px}
  .q-wrap{flex:0 0 56px;min-width:56px}
  .q-wrap .q-ic{justify-self:center;margin-left:0;width:22px;height:22px}
  #q{flex:none;width:56px;padding:0}
  #q:not(:focus):not(.has)::placeholder{color:transparent}
  #q:focus,#q.has{padding-left:12px}
}
@media (max-width:700px){.q-wrap{order:9;flex:1 1 100%}.q-wrap .q-ic{justify-self:start;margin-left:14px}#q{width:100%;padding-left:44px}}
/* tab bar: icon over label, one sliding indicator */
#tabs{position:relative}
#tabs button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;line-height:1.1}
#tabs button svg.i{width:22px;height:22px}
#tabs button.act::before{display:none}
#tab-ind{position:absolute;left:0;top:0;height:4px;width:0;border-radius:0 0 4px 4px;background:var(--act);pointer-events:none;
  transition:transform var(--dur-tab) var(--ease),width var(--dur-tab) var(--ease)}
[data-theme=sun] #tab-ind{display:none}
@media (max-width:480px){#tabs{overflow-x:auto;scrollbar-width:none}#tabs button{flex:0 0 auto;min-width:64px;padding:0 6px;font-size:var(--fs-xs)}}
/* Settings sheet */
.set-box h3{margin:14px 0 8px;font-size:var(--fs-m)}
.theme-pick{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px}
.theme-pick button{display:flex;align-items:center;gap:12px;text-align:left;min-height:64px;padding:8px 14px}
.theme-pick button span{display:flex;flex-direction:column;line-height:1.2}.theme-pick small{color:var(--text-muted);font-weight:500;font-size:var(--fs-xs)}
.theme-pick button svg.i{width:24px;height:24px;margin:0}
.theme-pick button[aria-checked=true]{background:var(--btn-hi);color:var(--text);border:var(--bw-strong) solid var(--accent);box-shadow:inset 4px 0 0 var(--accent)}
.set-sw{display:flex;align-items:center;justify-content:space-between;gap:16px;width:min(360px,100%)}
.set-sw b{min-width:3.2em;padding:6px 10px;border-radius:99px;background:var(--surface-2);border:var(--bw) solid var(--edge);text-align:center}
.set-sw[aria-checked=true] b{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}
[data-theme=night] .set-sw[aria-checked=true] b{background:var(--btn-hi);color:var(--accent)}
/* Day theme: thin borders, minimal shadows, cobalt primary controls, restrained amber */
[data-theme=day] .card{box-shadow:var(--shadow)}
[data-theme=day] #top{box-shadow:0 1px 0 var(--border)}
[data-theme=day] #tabs button.act{background:var(--btn-hi);color:var(--accent)}
[data-theme=day] #tab-ind{background:var(--accent)}
[data-theme=day] .next-card{box-shadow:inset 4px 0 0 var(--accent),var(--shadow)}
[data-theme=day] .next-card .go{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}
[data-theme=day] #btn-pad{border-width:var(--bw)}
[data-theme=day] #btn-emer{background:var(--surface);color:var(--danger);border:var(--bw-strong) solid var(--danger);box-shadow:none}
[data-theme=day] #btn-emer:active{background:var(--bad-soft)}
[data-theme=day] .phases-bar button.now{box-shadow:inset 0 -4px 0 var(--accent);border-color:var(--accent)}
[data-theme=day] .phases-bar button.now small{color:var(--accent)}
[data-theme=day] .groups button.sel,[data-theme=day] .cl-list button.cur,[data-theme=day] .apt-row.sel,[data-theme=day] .nr-go.on{border-color:var(--accent);box-shadow:inset 5px 0 0 var(--accent)}
[data-theme=day] #cl-items li.it.cur{border-color:var(--accent)}
[data-theme=day] #cl-items li.it.cur .ck{background:var(--accent)}
[data-theme=day] #cl-bar{background:var(--accent)}
[data-theme=day] input,[data-theme=day] select{background:var(--surface);border-color:var(--sand-8)}
[data-theme=day] .sheet{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
[data-theme=day] .leaflet-bar a{color:var(--text)}
/* ---- motion ---- */
button{transition:background-color var(--dur-press) var(--ease),border-color var(--dur-press) var(--ease),color var(--dur-press) var(--ease),transform var(--dur-press) var(--ease)}
button:active{transform:scale(.97)}
#tabs button:active,#top button:active{transform:scale(.95)}
#cl-check{transition:transform var(--dur-press) var(--ease),box-shadow var(--dur-press) var(--ease)}
#cl-bar{transition:width var(--dur-tab) var(--ease)}
#cl-items li.it{transition:background-color var(--dur-confirm) var(--ease),border-color var(--dur-confirm) var(--ease),box-shadow var(--dur-confirm) var(--ease)}
#cl-items li.it.just-ok{animation:cl-ok var(--dur-confirm) var(--ease)}
#cl-items li.it.just-ok .ck{animation:ck-pop var(--dur-confirm) var(--ease)}
@keyframes cl-ok{from{background-color:var(--good-bg);transform:scale(.985)}to{transform:none}}
@keyframes ck-pop{from{transform:scale(.7)}to{transform:none}}
.sheet:not([hidden]){animation:sheet-scrim var(--dur-sheet) var(--ease)}
.sheet:not([hidden]) > .sheet-box{animation:sheet-in var(--dur-sheet) var(--ease)}
@keyframes sheet-scrim{from{opacity:0}}
@keyframes sheet-in{from{opacity:0;transform:translateY(18px)}}
.sheet-ghost{position:fixed;inset:0;z-index:2499;display:flex;align-items:flex-start;justify-content:center;padding:70px 12px 12px;overflow:hidden;background:var(--scrim);pointer-events:none}
.sheet-ghost *{pointer-events:none!important}
/* theme change: Day ↔ Dark ↔ Sunlight cross-fade (~200 ms, ground only); into / out of Night instant */
.theme-fade,.theme-fade *,.theme-fade *::before,.theme-fade *::after{transition:background-color var(--dur-theme) linear,color var(--dur-theme) linear,border-color var(--dur-theme) linear,fill var(--dur-theme) linear,stroke var(--dur-theme) linear!important}
.theme-instant,.theme-instant *,.theme-instant *::before,.theme-instant *::after{transition:none!important;animation:none!important}
/* no motion: Settings › Motion off, or the OS "reduce motion" setting (map zoom keeps Leaflet's own functional animation) */
[data-motion=off] *,[data-motion=off] *::before,[data-motion=off] *::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
[data-motion=off] .leaflet-zoom-anim .leaflet-zoom-animated{transition:transform .25s cubic-bezier(0,0,.25,1)!important}
[data-theme=day] li.aid{border-left-color:var(--accent)}
@media (max-width:700px){#q:not(:focus):not(.has)::placeholder{color:var(--text-muted)}}

/* ===== v2.1 phase 3: information architecture — six tabs, Navigate switch, calm header, Flight home, Plan status ===== */
#top [hidden]{display:none!important}
.q-wrap .q-lbl{justify-self:start;display:inline-flex;align-items:center;gap:8px;margin-left:12px;color:var(--text);pointer-events:none;z-index:1;font-size:var(--fs-s);line-height:1}
.q-wrap .q-lbl .q-ic{margin:0;width:22px;height:22px;color:var(--accent);justify-self:auto}
.q-wrap .q-lbl b{font-weight:800}
#q{padding-left:112px}
@media (max-width:800px){
  .q-wrap .q-lbl{justify-self:center;margin-left:0;flex-direction:column;gap:3px;font-size:var(--fs-xs)}
  #q{padding-left:0}
  #q:focus,#q.has{padding-left:12px}
}
@media (max-width:700px){.q-wrap .q-lbl{justify-self:start;margin-left:12px;flex-direction:row;gap:8px;font-size:var(--fs-s)}#q{padding-left:112px}#q:focus,#q.has{padding-left:112px}}
/* Navigate: segmented switch over Map / PFD / Circuit / Airports / Radio calls */
#nav-seg{display:flex;gap:6px;padding:6px 10px;background:var(--bar);border-bottom:var(--bw) solid var(--border)}
#nav-seg[hidden]{display:none}
#nav-seg button{flex:1 1 0;min-width:0;min-height:56px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;padding:0 8px;box-shadow:none}
#nav-seg button svg.i{width:20px;height:20px;margin:0;flex:none}
#nav-seg button span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:640px){#nav-seg{gap:4px;padding:4px 6px}#nav-seg button{flex-direction:column;gap:2px;font-size:var(--fs-xs);padding:0 2px}}
/* six bottom tabs always fit: no sideways scrolling on a phone */
@media (max-width:480px){#tabs{overflow-x:visible}#tabs button{flex:1 1 0;min-width:0;padding:0 2px;font-size:var(--fs-xs)}}
/* Flight home */
.fl-grid{display:grid;gap:12px;margin-bottom:12px;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);grid-template-areas:"next ready" "route ready" "resume ready";align-items:start}
.fl-grid{grid-template-rows:auto auto 1fr}
.fl-grid>.card{margin:0;min-width:0}
.fl-grid>#ph-card{grid-area:next}.fl-grid>.fl-route{grid-area:route}.fl-grid>.fl-ready{grid-area:ready}.fl-grid>.fl-resume{grid-area:resume}
@media (max-width:900px){.fl-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"next" "route" "ready" "resume"}}
.fl-top{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:flex-start;justify-content:space-between;margin-bottom:8px}
.fl-ac{display:flex;align-items:center;gap:8px;min-width:0}.fl-ac svg.i{width:22px;height:22px;color:var(--accent);margin:0;flex:none}
.fl-ac b{font:700 var(--fs-l) var(--num);letter-spacing:.02em}.fl-ac span{font-size:var(--fs-s)}
.fl-where{display:flex;flex-direction:column;align-items:flex-end;text-align:right;line-height:1.25;min-width:0}
.fl-where small{color:var(--text-muted);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.07em;font-weight:800}
.fl-where>b{font-size:var(--fs-m)}.fl-where span{color:var(--text-muted);font-size:var(--fs-s)}.fl-where span b{color:var(--text)}
.fl-rt{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;padding:10px 0;border-top:var(--bw) solid var(--border)}
.fl-apt{display:flex;flex-direction:column;min-width:0}.fl-apt b{font:700 var(--fs-2xl)/1.1 var(--num);letter-spacing:.01em}.fl-apt small{color:var(--text-muted);font-size:var(--fs-s)}
.fl-rt .fl-apt:only-of-type b{font:800 var(--fs-l)/1.2 system-ui,sans-serif}
.fl-arr{width:26px;height:26px;color:var(--accent);margin:0;flex:none}
.fl-map{width:100%;height:auto;max-height:150px;display:block;background:var(--surface-2);border:var(--bw) solid var(--border);border-radius:10px;margin:2px 0 10px}
.fl-line{fill:none;stroke:var(--act);stroke-width:3;stroke-dasharray:9 6;stroke-linecap:round}
.fl-pt{fill:var(--surface);stroke:var(--accent);stroke-width:3}.fl-pt.dep{fill:var(--accent)}
.fl-map text{fill:var(--text);font:700 14px system-ui,sans-serif;paint-order:stroke;stroke:var(--surface-2);stroke-width:4px}
.fl-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px}
.fl-kv>div{display:flex;flex-direction:column;padding:8px 10px;background:var(--surface-2);border-radius:10px;min-width:0}
.fl-kv small{color:var(--text-muted);font-size:var(--fs-xs);font-weight:700}.fl-kv b{font:700 var(--fs-l) var(--num)}.fl-kv span{color:var(--text-muted);font-size:var(--fs-xs)}
.fl-ready h2{display:flex;align-items:baseline;gap:10px}.fl-ready h2 small{margin-left:auto}
.fl-rows{display:flex;flex-direction:column;gap:4px}
.fl-row{display:grid;grid-template-columns:22px auto minmax(0,1fr);align-items:center;gap:10px;min-height:56px;width:100%;text-align:left;padding:6px 12px;background:var(--surface);box-shadow:none;font-weight:600}
.fl-row svg.i{width:20px;height:20px;margin:0;color:var(--text-muted)}
.fl-rl{white-space:nowrap}
.fl-rv{justify-self:end;text-align:right;font-size:var(--fs-s);font-weight:700;min-width:0;overflow-wrap:anywhere}
.fl-row.ok .fl-rv{color:var(--ok)}.fl-row.warn .fl-rv{color:var(--warn)}.fl-row.bad .fl-rv{color:var(--danger)}.fl-row.muted .fl-rv{color:var(--text-muted)}
.fl-row.bad{border-color:var(--danger);box-shadow:inset 4px 0 0 var(--danger)}
@media (max-width:520px){.fl-row{grid-template-columns:22px minmax(0,1fr);row-gap:0}.fl-rv{grid-column:2;justify-self:start;text-align:left}}
.fl-resume{display:flex;align-items:center;gap:12px}
.fl-res-i{width:26px;height:26px;color:var(--accent);flex:none;margin:0}
.fl-res-t{display:flex;flex-direction:column;min-width:0;flex:1}.fl-res-t small{color:var(--text-muted)}
.fl-more>summary{min-height:56px}.fl-more>summary h2 small{font-weight:500}
.fl-more .tiles{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin:6px 0 12px}
.next-card h2{margin:2px 0 4px}
/* Plan: preparation status strip */
.pl-status{margin:2px 0 12px;padding:10px 12px;border:var(--bw) solid var(--border);border-radius:12px;background:var(--surface-2)}
.ps-head{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;margin-bottom:8px}
.ps-aid{color:var(--warn);font-weight:700;font-size:var(--fs-s)}
.ps-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.ps{display:flex;flex-direction:column;gap:2px;padding:6px 8px 7px 26px;position:relative;border-radius:8px;background:var(--surface);border:var(--bw) solid var(--border);min-width:0}
.ps-dot{position:absolute;left:9px;top:11px;width:10px;height:10px;border-radius:50%;border:2px solid var(--text-muted);box-sizing:border-box}
.ps-n{font-weight:800;font-size:var(--fs-s)}
.ps-v{font-size:var(--fs-xs);color:var(--text-muted);overflow-wrap:anywhere}
.ps.off .ps-n{color:var(--text-muted)}
.ps.warnoff .ps-v{color:var(--warn)}
.ps.on.acc{border-color:var(--accent)}.ps.on.acc .ps-dot{background:var(--accent);border-color:var(--accent)}
.ps.on.act{border-color:var(--act)}.ps.on.act .ps-dot{background:var(--act);border-color:var(--act)}
.ps.on.ok{border-color:var(--ok)}.ps.on.ok .ps-dot{background:var(--ok);border-color:var(--ok)}
.ps.on.bad{border-color:var(--danger)}.ps.on.bad .ps-dot{background:var(--danger);border-color:var(--danger)}.ps.on.bad .ps-v{color:var(--danger)}
.ps.on.warn{border-color:var(--warn)}.ps.on.warn .ps-dot{background:var(--warn);border-color:var(--warn)}.ps.on.warn .ps-v{color:var(--warn)}
.ps.on.info .ps-dot{background:var(--text-muted)}
@media (max-width:1100px){.ps-list{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}
.rp-rev{margin-top:10px;align-items:center;gap:10px}
/* Settings pane */
.set-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:start}
.set-grid .card{margin:0 0 12px;min-width:0}.set-col{min-width:0}
#p-settings h2 svg.i{width:22px;height:22px;vertical-align:-4px;margin-right:8px}
@media (max-width:900px){.set-grid{grid-template-columns:minmax(0,1fr)}}
.fl-grid+.phases-bar{margin-top:0}
.tel-row .tel-btn{min-width:0}.tel-btn span{min-width:0;overflow-wrap:anywhere}
@media (max-width:480px){   /* phone: header wraps to two tidy rows — controls + EMER, then AIRBORNE + Manual search */
  #top{gap:3px}
  #clock{min-width:0;padding:0 6px!important}
  #gps-pill{min-width:56px;padding:0 6px!important}
  #btn-pad .lbl{font-size:var(--fs-xs)}
  #btn-air,#btn-freda{order:8}
  .q-wrap{order:9;flex:1 1 150px}
}

/* ---------- v2.1 phase 4: checklist states, Undo / Pause / Restart, source header, "Show me", Radio now (theme tokens only) ---------- */
.cl-src{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px;font-size:var(--fs-s);color:var(--text)}
.cl-src span{display:inline-flex;align-items:baseline;gap:6px}.cl-src small{font-size:var(--fs-xs);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.cl-src .bad{color:var(--danger);font-weight:700}
#cl-items li.it{grid-template-columns:44px minmax(0,1fr) fit-content(40%) auto;grid-template-areas:"ck n a sm" "ck st a sm";row-gap:0}   /* phase 6: action pill ≤40% of the row so a long YAA action never squeezes the item name */
#cl-items li.it:has(.aid-t){grid-template-columns:44px minmax(0,1fr) fit-content(40%) auto auto;grid-template-areas:"ck n a aid sm" "ck st a aid sm"}
#cl-items li.it .ck{grid-area:ck}#cl-items li.it .n{grid-area:n;align-self:end}#cl-items li.it .stt{grid-area:st;align-self:start}#cl-items li.it .a{grid-area:a}#cl-items li.it .aid-t{grid-area:aid}#cl-items li.it .showme{grid-area:sm}
#cl-items li.it .stt{display:block;margin-top:3px;font:700 var(--fs-xs)/1.2 var(--num);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
#cl-items li.it .stt-cur{color:var(--act)}#cl-items li.it .stt-done{color:var(--ok)}
[data-theme=day] #cl-items li.it .stt-cur{color:var(--accent)}
.showme{display:inline-flex;align-items:center;gap:6px;padding:0 12px;font-weight:700;font-size:var(--fs-s);color:var(--accent);border:1px solid var(--pill-edge)!important;white-space:nowrap}
.showme .i{width:18px;height:18px}.showme[aria-expanded=true]{border-color:var(--accent)!important;box-shadow:inset 0 0 0 1px var(--accent)}
li.gd{margin:-2px 0 6px 26px;padding:14px 16px;background:var(--sub);border:1px solid var(--row-edge);border-left:3px solid var(--accent);border-radius:0 12px 12px 12px;cursor:default;animation:gd-in var(--dur-sheet) var(--ease)}
@keyframes gd-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
li.gd dl{margin:0;display:grid;gap:0}
.gd-r{display:grid;grid-template-columns:130px minmax(0,1fr);gap:12px;padding:8px 0;border-top:1px solid var(--border)}.gd-r:first-child{border-top:0}
.gd-r dt{font-size:var(--fs-xs);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);padding-top:4px}
.gd-r dd{margin:0;min-width:0}.gd-r p{margin:4px 0;line-height:1.4}.gd-r ul{margin:4px 0;padding-left:20px}.gd-r li{margin:2px 0}
.gd-tag{display:inline-block;font-size:var(--fs-xs);font-weight:800;letter-spacing:.04em;padding:2px 8px;border-radius:6px;border:1px solid var(--warn);color:var(--warn);margin-bottom:2px}
.gd-tag.cl{border-color:var(--ok);color:var(--ok)}
.gd-none{color:var(--text-muted);font-style:italic}
.gd-pre{white-space:pre-line}.gd-q{font:700 var(--fs-m)/1.3 var(--num)}
.gd-svg{display:block;width:100%;max-width:380px;height:auto;border:1px solid var(--border);border-radius:10px;background:var(--bg)}
.cl-ctl{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 12px}
.cl-ctl button{display:inline-flex;align-items:center;gap:6px;max-width:100%}.cl-ctl small{font-weight:500;color:var(--text-muted);max-width:18ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-ctl button:disabled{opacity:.55;cursor:default}
#cl-pause[aria-pressed=true]{background:var(--amb-bg);color:var(--warn);border:2px solid var(--warn)}
.cl-rs{margin:0 0 12px;padding:12px 14px;border:2px solid var(--danger);border-radius:12px;background:var(--bad-soft)}.cl-rs p{margin:0 0 10px}
.cl-rs .row{gap:8px}.rs-yes{color:var(--danger);border:2px solid var(--danger)!important;background:var(--surface);font-weight:800}
.cl-paused{display:flex;align-items:center;gap:12px;margin:0 0 12px;padding:8px 12px;border:2px solid var(--warn);border-radius:12px;background:var(--amb-bg)}
.cl-paused .i{flex:none;color:var(--warn)}.cl-pz-t{flex:1;min-width:0;display:flex;flex-direction:column}.cl-pz-t b{color:var(--warn)}.cl-pz-t small{color:var(--text)}
.fl-resume.paused{border-color:var(--warn);box-shadow:inset 4px 0 0 var(--warn)}.fl-resume.paused .fl-res-t b{color:var(--warn)}
.rt-now h2 small{font-weight:500;color:var(--text-muted);font-size:var(--fs-xs)}
.rn-head{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;margin-bottom:10px}
.rn-k{display:flex;flex-direction:column;min-width:0}.rn-k small{font-size:var(--fs-xs);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.rn-k b{font-size:var(--fs-l)}.rn-k span{font-size:var(--fs-s);color:var(--text-muted)}.rn-all{margin-left:auto}
.rn-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:10px}
.rn-f{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left;padding:6px 12px;min-width:0;line-height:1.15}
.rn-f small{font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-weight:800}
.rn-f b{font:700 var(--fs-l) var(--num);color:var(--accent);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rn-f span{font-size:var(--fs-xs);color:var(--text-muted);white-space:normal}
.rn-f.empty b{color:var(--text-muted)}.rn-f.amb{border-color:var(--warn)}.rn-f.amb span{color:var(--warn);font-weight:700}
.rn-notes{grid-column:span 2}.rn-notes b{font:600 var(--fs-m) system-ui}
.rn-dl{margin:0;display:grid;gap:0}.rn-dl>div{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;padding:8px 0;border-top:1px solid var(--border)}
.rn-dl dt{font-size:var(--fs-xs);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);padding-top:6px}.rn-dl dd{margin:0;min-width:0}.rn-dl p{margin:4px 0}
.rn-dl .rt-call{border-top:0;padding:4px 0}
.rn-cp{list-style:none;margin:4px 0;padding:0;display:grid;gap:6px}.rn-cp li{display:flex;gap:10px;align-items:flex-start}.rn-cp .cpt{flex:none;display:inline-block}
.pad-now{border:1px solid var(--border);border-radius:12px;padding:10px 12px;margin:6px 0 10px;background:var(--surface-2)}
@media (max-width:760px){.gd-r,.rn-dl>div{grid-template-columns:1fr;gap:2px}.rn-notes{grid-column:1/-1}li.gd{margin-left:6px}}
@media (max-width:600px){
  #cl-items li.it,#cl-items li.it:has(.aid-t){grid-template-columns:44px minmax(0,1fr) auto;grid-template-areas:"ck n sm" "ck st sm" "ck a a";row-gap:4px;column-gap:10px}
  #cl-items li.it:has(.aid-t){grid-template-areas:"ck n sm" "ck st sm" "ck a a" "ck aid aid"}
  #cl-items li.it .a{justify-self:start;text-align:left;max-width:100%}#cl-items li.it .aid-t{justify-self:start}
  .rn-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.rn-all{margin-left:0}
  .cl-head{flex-wrap:wrap}.cl-head>div:first-child{flex:1 1 100%;min-width:0}.cl-head>.grow{display:none}#cl-pics{flex-wrap:wrap;max-width:100%}#cl-pics svg{height:72px;max-width:100%}
}

/* ---- v2.1 phase 5: Manual search groups, GPS/data source strip, PFD source label, offline flight pack ---- */
#search-res .sr-h{font-size:var(--fs-s);margin:8px 4px 6px;color:var(--text);border-bottom:var(--bw) solid var(--border);padding-bottom:4px}
#search-res .sr-h small{display:block;font-weight:600;color:var(--text-muted);font-size:var(--fs-xs)}
#search-res .sr-none{padding:10px 12px;margin:4px 0;color:var(--text)}
.hit.mhit,.hit.ahit{border-left:4px solid var(--accent)}.hit.ahit{border-left-color:var(--warn)}
.hit .mh-src{color:var(--text-muted);display:block;font-size:var(--fs-xs);line-height:1.3;margin-bottom:4px}.hit .mh-src b{color:var(--text)}
.hit .mx{display:block}.hit .mx-l{display:block;font-family:var(--num);font-size:var(--fs-s);line-height:1.35;overflow-wrap:anywhere}
.hit .mx-more{display:block;font-size:var(--fs-xs);color:var(--text-muted);margin-top:2px}
.hit .mh-go{display:block;margin-top:6px;font-size:var(--fs-xs);font-weight:800;color:var(--accent)}
.hit.ahit .mh-go{color:var(--text)}
#map-top{position:absolute;z-index:1000;left:10px;top:10px;max-width:min(560px,calc(100% - 110px));display:flex;flex-direction:column;gap:6px;pointer-events:none}
#map-top #map-msg{position:static;max-width:none}
.nav-gps{background:color-mix(in srgb,var(--surface) 92%,transparent);border:var(--bw) solid var(--border);border-radius:10px;padding:5px 10px;font-size:var(--fs-xs);line-height:1.35;color:var(--text)}
.nav-gps:empty{display:none}
.nav-gps span{display:block;color:var(--text-muted)}.nav-gps .ng-c{color:var(--warn);font-weight:700}
.nav-gps .ng-st{display:block;font-size:var(--fs-s)}.nav-gps .ng-st.fix{color:var(--ok)}.nav-gps .ng-st.sim,.nav-gps .ng-st.stale,.nav-gps .ng-st.search{color:var(--warn)}
.nav-gps .ng-st.denied,.nav-gps .ng-st.unavail{color:var(--danger)}
#gps-pill.stale{border-color:var(--warn);color:var(--warn)}#gps-pill.denied,#gps-pill.unavail{border-color:var(--danger);color:var(--danger)}
.pfd-src{display:block;margin-bottom:2px}
.pack-list{list-style:none;margin:8px 0;padding:0;display:grid;gap:4px}
.pack-list .pk{display:flex;align-items:center;gap:10px;padding:6px 10px;border:var(--bw) solid var(--border);border-radius:10px;background:var(--surface-2);min-height:44px}
.pack-list .pk-t{font-weight:900;width:1.2em;text-align:center}.pack-list .pk.ok .pk-t{color:var(--ok)}.pack-list .pk.no .pk-t{color:var(--text-muted)}
.pack-list .pk-l{flex:1;min-width:0;font-weight:700}.pack-list .pk-l small{display:block;font-weight:500;color:var(--text-muted);overflow-wrap:anywhere}
.pack-list .pk-v{font-weight:900;font-size:var(--fs-xs);padding:2px 8px;border-radius:8px;border:var(--bw) solid currentColor}.pack-list .pk-v.ok{color:var(--ok)}.pack-list .pk-v:not(.ok){color:var(--danger)}
@media (max-width:700px){#map-top{max-width:calc(100% - 122px)}.nav-gps{font-size:var(--fs-xs);padding:4px 8px}}

/* v2.1 phase 6: 601–900 px (iPad mini / Lenovo portrait): a checklist line with a plain-English aid button stacks its action pill
   under the name, so the name and the "Now — check" state never overlap the pill. */
@media (min-width:601px) and (max-width:900px){
  #cl-items li.it:has(.aid-t){grid-template-columns:44px minmax(0,1fr) auto auto;grid-template-areas:"ck n aid sm" "ck st aid sm" "ck a a a";row-gap:4px;column-gap:10px}
  #cl-items li.it:has(.aid-t) .a{justify-self:start;text-align:left;max-width:100%}
}

/* 2026-10-01 workflow audit fixes */
.phases .lg-t{display:block;width:100%;min-height:var(--tap);border:var(--bw) solid var(--border);border-radius:12px;padding:8px;text-align:center;background:var(--surface);color:var(--text)}
.phases .lg-t.on{border-color:var(--ok);box-shadow:inset 0 -4px 0 var(--ok)}
.phases .lg-t.man{border-style:dashed;border-color:var(--accent)}.phases .lg-t .lg-src{display:block;font-size:var(--fs-xs)}
.phases .lg-t.man .lg-src{color:var(--accent);font-weight:700}
.phases .lg-tin{min-height:var(--tap);font-size:var(--fs-l);width:100%}
.lg-def{display:block;margin:8px 0}.lg-def label{display:block;max-width:none}.lg-def input{width:100%;min-height:var(--tap)}
.md-box .md-set{font-weight:700;margin:6px 0}.md-box .md-src{font-size:var(--fs-s);margin:6px 0;color:var(--text-muted)}.md-box .md-src.amb{color:var(--warn);font-weight:700}
.md-box .md-say{border:var(--bw) solid var(--danger);border-radius:12px;padding:10px 12px;margin:10px 0}
.md-box .md-say .w{font-size:var(--fs-xs);font-weight:700;color:var(--danger);text-transform:uppercase}
.md-box .md-say .say{font-size:var(--fs-l);line-height:1.4;font-weight:700}
#ao-off{min-width:240px;position:relative;overflow:hidden}
#ao-off.holding{outline:3px solid var(--danger);outline-offset:2px}
.wx-obs{font-size:var(--fs-xs);font-weight:700}
.wb-sample{font-size:var(--fs-m)}
#wb-fuel-src{margin:6px 0}
.cl-memo{border:var(--bw) dashed var(--border);border-radius:12px;padding:10px 12px;margin:8px 0}
#ao-off{border-color:var(--danger);color:var(--danger)}
.rp-form .rp-day{display:flex;flex-wrap:wrap;align-items:center;gap:8px;grid-column:1/-1}
.rp-form .rp-day button{min-width:120px}
#wb-out .kv b.wb-sample{font-size:var(--fs-m);line-height:1.25}

/* ===== UI audit fixes 2026-10-01 (.an2_scratch/audit_ui.md). Last in the file so they win the cascade. ===== */
/* Type scale (P2-8): every font-size in this file is one of these tokens (rem → scales with the root / 125% text). */
:root{--fs-xs:.75rem;--fs-s:.875rem;--fs-m:1rem;--fs-l:1.2rem;--fs-xl:1.5rem;--fs-2xl:2rem;--fs-hero:4.5rem}
small{font-size:var(--fs-xs)}h3{font-size:var(--fs-m)}h1{font-size:var(--fs-xl)}
/* Input boundaries >= 3:1 against card and field in every theme (P2-5); cards keep --border */
[data-theme=day]{--border-input:#8a8577}[data-theme=dark]{--border-input:#6b7a93}[data-theme=sun]{--border-input:#00606e}[data-theme=night]{--border-input:#a8452a}
input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{min-height:var(--tap);border-color:var(--border-input)}
.tbl input,.card-in input{min-height:var(--tap)}
.chip-v.empty{border-color:var(--border-input)}
input::placeholder,textarea::placeholder{color:var(--text-muted);opacity:1}
/* Night: native date / search glyphs are white by default → tint them warm (red-only rule) */
[data-theme=night] input::-webkit-calendar-picker-indicator,[data-theme=night] input::-webkit-search-cancel-button{filter:brightness(0) invert(55%) sepia(60%) saturate(600%)}
/* Touch targets (P2-2/3/4): summaries and inline tel / mail / web links are 56 px tall */
details>summary,.ntm summary,.fl-more>summary{min-height:var(--tap)}
a[href^="tel:"]:not(.tel-btn),a[href^="mailto:"]:not(.btn-link),a[href^="http"]:not(.btn-link):not(.tel-btn){display:inline-flex;align-items:center;min-height:var(--tap);padding:0 6px;margin:-8px 0}
.leaflet-container a[href^="http"]{display:inline;min-height:0;padding:0;margin:0}
/* Links follow the theme accent — Night links are red, never browser blue (P1-2) */
a,a:visited{color:var(--accent)}
/* EMER label inherits the button colour in every theme (P1-1); Day EMER is a solid red fill like Sun (P2-14) */
#top button .lbl{color:inherit}
[data-theme=day] #btn-emer{background:var(--bad-fill);color:var(--on-bad);border:0;box-shadow:0 0 0 2px var(--bar),0 0 0 4px var(--bad-fill)}
[data-theme=day] #btn-emer:active{background:var(--danger)}
/* Pressed ghost toggles (Pen / Eraser / Pause) are filled, never white-on-white (P1-5) */
button.ghost[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}
/* PFD status line sits on the page bar, not the canvas (P2-9) */
#pfd-fps{color:var(--text-muted);text-shadow:none;background:var(--surface);padding:2px 8px;border-radius:6px}   /* readable on the bar and over the canvas */
/* Plan route: primary keeps its width; full width on its own row on narrow screens (P2-1) */
.row.wrap>.grow{flex:1 0 auto}
@media (max-width:800px){#rp-go{flex:1 0 100%}}
/* Phone: V-speeds in two readable rows, descriptors stay in the V-speeds reference (P1-4) */
@media (max-width:600px){#vbar{grid-template-columns:repeat(6,minmax(0,1fr));row-gap:2px}.vs small i{display:none}.vs small{font-size:var(--fs-xs)}.vs + .vs:nth-child(7)::before{display:none}}
/* Landscape tablets: compact one-line V-speeds + slimmer switch on Map / PFD / Circuit / Checks (P2-7; Lenovo 1280x701 showed 1 checklist item) */
@media (max-height:820px) and (min-width:1000px){
  body[data-tab=map] #vbar,body[data-tab=pfd] #vbar,body[data-tab=circuit] #vbar,body[data-tab=checks] #vbar{padding:2px 8px;gap:2px}
  body[data-tab=map] .vs,body[data-tab=pfd] .vs,body[data-tab=circuit] .vs,body[data-tab=checks] .vs{flex-direction:row;align-items:baseline;gap:4px;padding:0 2px}
  body[data-tab=map] .vs small i,body[data-tab=pfd] .vs small i,body[data-tab=circuit] .vs small i,body[data-tab=checks] .vs small i{display:none}
  body[data-tab=map] .vs b,body[data-tab=pfd] .vs b,body[data-tab=circuit] .vs b,body[data-tab=checks] .vs b{font-size:var(--fs-m)}
  #nav-seg{padding-top:2px;padding-bottom:2px}
  #top{padding-top:max(4px,env(safe-area-inset-top));padding-bottom:4px}
}
/* Status (P2-6): one dominant tile; empty states collapse into one muted line */
.ps.on:not(.dom){border-color:var(--border)}
.ps.dom{grid-column:1/-1;border-width:var(--bw-strong)}
.ps-off{margin:8px 0 0;color:var(--text-muted);font-size:var(--fs-s)}.ps-off b{font-weight:700}
.ps-off span+span::before{content:" · "}
/* Toast: app.js places it just under the V-speed strip (P3-1) */
/* Disabled: dashed + muted, readable (P3-2) */
.cl-ctl button:disabled,button:disabled{opacity:1;color:var(--text-muted);border-style:dashed;cursor:default}
.kp.num button:disabled{opacity:.4}
/* Dark go-button counter (P3-3); stopwatch digits (P3-4) */
button.go small{color:inherit;opacity:1}
#sw-disp{font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-variant-numeric:tabular-nums;letter-spacing:0;white-space:nowrap}   /* B612 Mono puts a wide gap after the colon at 76 px */
/* Phone airport header (P2-10) */
@media (max-width:600px){.apt-h{flex-wrap:wrap}#apt-back{flex:1 0 100%}}
/* Set-up stage tabs: fade shows there is more (P3-8) */
@media (max-width:600px){#set-nav{-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent);mask-image:linear-gradient(90deg,#000 85%,transparent)}}
/* Inline sprite icons inside text */
.h > svg.i,.kicker > svg.i,.chip > svg.i,.small svg.i,.src svg.i{width:16px;height:16px;margin-right:4px;vertical-align:-3px}
.ps.off{display:none}
/* Phone checklist: shorter sticky CHECK bar + scroll padding so Undo / Pause / Restart can be scrolled clear of it (P2-11) */
@media (max-width:600px){#cl-check,#cl-next{min-height:var(--tap)}main{scroll-padding-bottom:96px}#cl-view{padding-bottom:24px}}

/* Portrait tablets 601-900: checklist groups wrap so Performance / Drill are never off-screen (Lenovo 800 px) */
@media (min-width:601px) and (max-width:900px){.groups{flex-wrap:wrap;overflow-x:visible}}

/* Traffic: "Show other planes" (adsb.fi). Ink = theme text (night stays red); close / emergency = danger; >10 s fades, >30 s dashed. */
.trf-panel{pointer-events:auto;background:color-mix(in srgb,var(--surface) 94%,transparent);border:var(--bw) solid var(--border);border-radius:12px;padding:6px 8px;display:flex;flex-direction:column;gap:6px;font-size:var(--fs-xs)}
.trf-panel[hidden]{display:none}
.trf-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.trf-row b{color:var(--text-muted);font-weight:700;margin-right:2px}
.trf-row button{min-height:var(--tap);min-width:48px;padding:0 10px;font-size:var(--fs-xs);font-weight:700;display:inline-flex;align-items:center;gap:6px}
.trf-row button svg path{fill:currentColor}
.trf-row button[aria-pressed=false]{opacity:.55;text-decoration:line-through}
.trf-st{font-weight:700;color:var(--text)}.trf-st.warn{color:var(--warn)}.trf-st.bad{color:var(--danger)}
.trf-st:empty{display:none}
#trf-note[hidden]{display:none}#trf-note b{color:var(--warn)}#trf-note span{display:inline}#trf-note span::before{content:" · "}
.trf-foot{color:var(--text-muted);line-height:1.35}.trf-foot a{color:var(--accent);font-weight:700}
.trf-m{background:none;border:0}
.trf-ic{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;pointer-events:auto;color:var(--text)}
.trf-ic svg{flex:0 0 auto;filter:drop-shadow(0 0 1.5px var(--surface))}
.trf-ic svg path{fill:currentColor;stroke:var(--surface);stroke-width:4}
.trf-ic span{font:700 11px/1.1 var(--num);white-space:nowrap;background:color-mix(in srgb,var(--surface) 85%,transparent);border-radius:4px;padding:1px 3px;margin-left:3px;position:absolute;left:100%;top:50%;transform:translateY(-50%)}
.trf-ic.near{color:var(--danger)}.trf-ic.near span{outline:2px solid var(--danger)}
.trf-ic.aging{opacity:.55}.trf-ic.old{opacity:.4}.trf-ic.old span{outline:1px dashed var(--text-muted)}
#trf-btn{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:var(--fs-xs);line-height:1.1;max-width:96px;white-space:normal}
.trf-head{flex-wrap:nowrap}.trf-head .trf-st{flex:1}
.trf-panel.collapsed #trf-sz,.trf-panel.collapsed #trf-band,.trf-panel.collapsed #trf-rng{display:none}

/* Map layers (slice B): airspace + NOTAM panel shares the traffic panel look; What's here popup */
#asp-panel.collapsed > :not(.trf-head){display:none}
#ntm-cat[hidden]{display:none}
.wh-pop .leaflet-popup-content{margin:10px 12px;font-size:var(--fs-xs);line-height:1.35}
.wh ul{list-style:none;padding:0;margin:6px 0;max-height:42vh;overflow:auto}.wh li{padding:5px 0;border-bottom:1px solid var(--border)}.wh li.muted{opacity:.7}
.wh pre{white-space:pre-wrap;font:11px/1.3 ui-monospace,Consolas,monospace;margin:3px 0 0;color:var(--text-muted)}
.trf-st .warn{color:var(--warn)}.trf-st .bad{color:var(--danger)}

/* Phones (not a target device): 11 map buttons → two columns, narrow labels; panels keep clear of them */
@media (max-width:700px){#map-ui{display:grid;grid-template-columns:auto auto}#map-ui button{min-width:64px;max-width:76px;font-size:12px;padding:0 4px}#map-top{max-width:calc(100% - 180px)}}

/* Route safety (slice C1): vertical profile + per-leg airspace table */
.rs-prof{width:100%;height:auto;display:block;background:var(--surface-2);border:var(--bw) solid var(--border);border-radius:10px;margin:4px 0 10px}
.rs-terr{fill:color-mix(in srgb,var(--ok) 35%,transparent);stroke:var(--ok);stroke-width:1.5}
.rs-alt{stroke:var(--act);stroke-width:3}.rs-msa{stroke:var(--danger);stroke-width:2;stroke-dasharray:8 5}
.rs-g{stroke:var(--border);stroke-width:1}.rs-tk{stroke:var(--text-muted);stroke-width:1;stroke-dasharray:3 4}
.rs-t{font:600 13px var(--num);fill:var(--text-muted)}.rs-altt{fill:var(--act)}
.rs-b{fill:color-mix(in srgb,var(--accent) 16%,transparent);stroke:var(--accent);stroke-width:1}.rs-b.k-danger{fill:color-mix(in srgb,var(--danger) 18%,transparent);stroke:var(--danger)}.rs-b.k-atz,.rs-b.k-matz{stroke-dasharray:5 3}
.rs-leg{border-top:var(--bw) solid var(--border);padding:8px 0}.rs-lh{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:4px}
.rs-tbl td,.rs-tbl th{font-size:var(--fs-xs)}.rs-tbl tr.rs-in.k-danger td:first-child,.rs-tbl tr.rs-in.k-ctrl td:first-child{box-shadow:inset 4px 0 0 var(--danger)}.rs-tbl tr.rs-below{color:var(--text-muted)}

/* Short landscape (Lenovo 1280x701): map panels never cover the GS/TRK/ALT strip */
@media (max-height:820px){#map-top{max-height:calc(100% - 100px);overflow-y:auto;pointer-events:auto;scrollbar-width:thin}}

/* Drag-to-edit route (slice C2): 44 px touch handles */
.red-h{background:none;border:0}
.red-dot,.red-plus{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font:800 16px var(--num);cursor:grab;touch-action:none}
.red-dot{background:var(--act);color:var(--on-act,#fff);border:3px solid var(--surface);box-shadow:0 1px 4px #0006}
.red-plus{width:36px;height:36px;background:color-mix(in srgb,var(--surface) 90%,transparent);color:var(--act);border:3px dashed var(--act);font-size:22px}
.red-del{min-height:var(--tap);margin-top:6px;padding:0 14px;font-weight:700}

/* 12 map buttons: two columns on portrait tablets too (iPad mini 744x1133 column hit the GS strip) */
@media (max-width:1000px){#map-ui{display:grid;grid-template-columns:auto auto}#map-top{max-width:calc(100% - 190px)}}

/* Kneeboard PLOG print (slice C3) */
#print-plog{display:none}
@media print{
  @page{size:A5 portrait;margin:7mm}
  body.printing-plog > *:not(#print-plog){display:none!important}
  body.printing-plog{background:#fff!important;color:#000!important}
  body.printing-plog #print-plog{display:block;font:10pt/1.3 system-ui,sans-serif;color:#000}
  #print-plog h1{font-size:13pt;margin:0 0 3px}#print-plog p{margin:3px 0}
  #print-plog table{width:100%;border-collapse:collapse;margin:4px 0}#print-plog th,#print-plog td{border:1px solid #000;padding:2px 3px;text-align:center;font-size:9pt}
  #print-plog td.pp-fq{text-align:left;font-size:7.5pt}#print-plog .pp-notes td{height:26mm}#print-plog .pp-foot{font-size:7pt;color:#333}
}

/* Fixed 2×96 px map-button columns on portrait tablets / phones so the GPS strip and panels never meet them */
@media (max-width:1000px){#map-ui{grid-template-columns:repeat(2,96px)}#map-ui button{min-width:0;width:96px;max-width:96px}#map-top{max-width:calc(100% - 222px)}}

/* v27 QC fixes */
#map-data.stale b{opacity:.4;text-decoration:line-through}
#pos-old{background:var(--bad-fill);color:var(--on-bad);border-radius:10px;padding:8px 14px}#pos-old[hidden]{display:none}
#pos-old b{display:block;font:800 var(--fs-2xl)/1.1 var(--num);font-variant-numeric:tabular-nums}#pos-old small{display:block;font-size:var(--fs-s);font-weight:700}
#p-map.pop-open #map-top .trf-panel{display:none}
.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--surface);color:var(--text)}
.leaflet-popup-content{font-size:var(--fs-s)}
.leaflet-container a.leaflet-popup-close-button{width:48px;height:48px;font-size:28px;line-height:48px;color:var(--text)}
.wh-pop .leaflet-popup-content{font-size:var(--fs-s);margin:12px 44px 12px 12px}.wh pre{font-size:12px}
.trf-row button[aria-pressed=false]{text-decoration:none;opacity:.6}
.red-dot{width:56px;height:56px}.red-plus{width:48px;height:48px}
#map-attr{position:absolute;z-index:999;right:4px;bottom:2px;font:10px system-ui;color:var(--map-label);text-shadow:0 0 2px var(--map-halo),0 0 2px var(--map-halo);pointer-events:none}
.rs-altt{paint-order:stroke;stroke:var(--surface-2);stroke-width:4px}
@media print{#print-plog .pp-warn{border:2px solid #000;padding:3px 5px;font-weight:700}}

/* v28: via waypoints, radio plan, AI flight-plan summary */
.rp-viarow{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-bottom:8px}.rp-viarow label{flex:1 1 260px}
.rp-vias{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.rp-via{display:inline-flex;align-items:center;gap:6px;border:var(--bw) solid var(--border);border-radius:12px;padding:0 6px 0 12px;background:var(--surface-2)}
.rp-via button{min-height:var(--tap);min-width:48px;font-size:var(--fs-m);font-weight:800}
.rs-radio{border-top:var(--bw) solid var(--border);padding:8px 0}.rs-radio h4{margin:0 0 6px}.rs-radio ol{margin:0 0 6px;padding-left:22px}.rs-radio li{padding:4px 0;font-size:var(--fs-s)}
.brief-ai .ai-h{display:inline-block;margin-top:8px;letter-spacing:.04em;color:var(--accent)}

/* v29: Locate button, traffic quick row (range + All planes stay visible with Filters collapsed) */
.trf-panel.collapsed #trf-rng{display:flex}
#trf-quick{gap:10px}
@media (max-width:1000px){#map-ui #follow-btn svg.i{margin-right:4px}}

/* v30: × hides the map panels; chip brings them back */
#map-top.nopanels .trf-panel{display:none}
.trf-head .pnl-x{min-width:var(--tap);min-height:var(--tap);font-size:var(--fs-l);font-weight:800;justify-content:center;flex:0 0 auto}
#pnl-show{pointer-events:auto;align-self:flex-start;min-height:var(--tap);padding:0 14px;font-size:var(--fs-xs);font-weight:700;border-radius:12px;background:color-mix(in srgb,var(--surface) 92%,transparent)}
#pnl-show[hidden]{display:none}
#pnl-show.bad{color:var(--danger,#b3261e);border-color:currentColor}

/* v31: fewer map buttons (More), bigger nav numerals, next-call box, radio stages wrap */
#map-ui:not(.more) .mu-x{display:none}
#map-data b{font-size:var(--fs-2xl);line-height:1.1}
@media (max-width:1000px){#map-data b{font-size:var(--fs-xl)}}
#map-data div.cl{border-color:var(--accent);border-width:2px}#map-data div.cl small{max-width:220px}
@media (min-width:1000px){#rt-nav{flex-wrap:wrap;overflow-x:visible}}
@media (max-height:820px){#map-data{right:260px}}

/* v32: other planes coloured by kind (shape also differs). Night = red-only, so all kinds use the text ink there. Red is never a kind colour. */
:root,[data-theme=dark]{--trf-ga:#6ab7ff;--trf-air:#c3ccd9;--trf-heli:#3ddc84;--trf-gld:#d9a5ff;--trf-unk:#ffd166}
[data-theme=day],[data-theme=sun]{--trf-ga:#0b4fd6;--trf-air:#3c4758;--trf-heli:#0b6b2e;--trf-gld:#7a1fb8;--trf-unk:#7a4d00}
[data-theme=night]{--trf-ga:var(--text);--trf-air:var(--text);--trf-heli:var(--text);--trf-gld:var(--text);--trf-unk:var(--text)}
.trf-ic:not(.near).sz-light,.trf-ic:not(.near).sz-small{color:var(--trf-ga)}
.trf-ic:not(.near).sz-big{color:var(--trf-air)}.trf-ic:not(.near).sz-heli{color:var(--trf-heli)}
.trf-ic:not(.near).sz-glider{color:var(--trf-gld)}.trf-ic:not(.near).sz-unk{color:var(--trf-unk)}
.trf-ic span{color:var(--text)}.trf-ic.near span{color:var(--danger)}

/* v33 */
#map-data div.cl small{max-width:300px}

/* v34: map weather box (bottom right), compact emergency lists in flight, keypad fits, stale plan note */
#map-wx{position:absolute;z-index:1000;right:10px;bottom:22px;width:240px;pointer-events:none;background:color-mix(in srgb,var(--surface) 92%,transparent);border:var(--bw) solid var(--border);border-radius:10px;padding:5px 10px;display:flex;flex-direction:column;line-height:1.25}
#map-wx small{font-size:var(--fs-xs);font-weight:700;color:var(--text-muted)}#map-wx > b{font-size:var(--fs-xl);font-family:var(--num);font-variant-numeric:tabular-nums;white-space:nowrap}
#map-wx span{font-size:var(--fs-m)}#map-wx span b{font-family:var(--num)}
#map-wx.stale{border-color:var(--warn)}#map-wx.stale #mw-src{color:var(--warn)}#map-wx.old{border-color:var(--danger)}#map-wx.old #mw-src{color:var(--danger)}#map-wx.old > b,#map-wx.old span{opacity:.55;text-decoration:line-through}
#map-data{right:262px}
@media (max-height:820px){#map-data{right:262px}}
@media (max-height:760px){#map-ui.more ~ #map-wx{display:none}}
.em-air #cl-src,.em-air #cl-pics,.em-air #cl-voice,.em-air #cl-pause,.em-air #cl-reset,.em-air #cl-items .h,.em-air #cl-items .showme{display:none!important}
.em-air .cl-ctl{margin:4px 0 6px}
.pad-box:has(#pad-key > :nth-child(2)) #pad-now{display:none}
#rp-out.stale::before{content:"Inputs changed since this plan — press Plan route";display:block;margin:0 0 8px;padding:8px 12px;border:2px solid var(--warn);border-radius:10px;color:var(--warn);font-weight:700}

/* v35: forced-landing pictures */
.flp-box{width:min(980px,100%)}
.flp-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.flp-tabs button{min-height:var(--tap);padding:0 14px;font-weight:700}.flp-tabs button.on{background:var(--accent);color:var(--accent-contrast)}
.flp-svg{display:block;width:100%;height:auto;max-height:52vh;border:var(--bw) solid var(--border);border-radius:12px;background:var(--surface-2)}
.flp-svg .bg2{fill:color-mix(in srgb,var(--text-muted) 10%,var(--surface))}
.flp-svg .gd{fill:color-mix(in srgb,var(--ok) 30%,var(--surface));stroke:var(--ok);stroke-width:3}
.flp-svg .bad{fill:color-mix(in srgb,var(--danger) 16%,transparent);stroke:var(--danger);stroke-width:2;stroke-dasharray:6 4}
.flp-svg .tex line{stroke:var(--ok);stroke-width:1;opacity:.5}
.flp-svg .dim,.flp-svg .dimh,.flp-svg .clr,.flp-svg .arr{stroke:var(--text);stroke-width:2;fill:none}.flp-svg .clr{stroke-dasharray:3 5}.flp-svg .arrh{fill:var(--text)}
.flp-svg .path{stroke:var(--act);stroke-width:4;fill:none;stroke-dasharray:12 7;stroke-linecap:round}
.flp-svg .short{stroke:var(--danger);stroke-width:2;fill:none;stroke-dasharray:4 5}
.flp-svg .aim{stroke:var(--act);stroke-width:5}
.flp-svg .ac{fill:var(--text);stroke:var(--surface);stroke-width:1.5}
.flp-svg .wind line{stroke:var(--accent);stroke-width:4}.flp-svg .wind path{fill:var(--accent)}.flp-svg .wind text{fill:var(--accent);font:700 13px system-ui}
.flp-svg .pyl path{fill:var(--danger)}.flp-svg .wire{stroke:var(--danger);stroke-width:2;stroke-dasharray:2 6}
.flp-svg .tree circle{fill:color-mix(in srgb,var(--ok) 70%,var(--text))}
.flp-svg .fence{stroke:var(--text);stroke-width:3;stroke-dasharray:8 4}
.flp-svg .cow ellipse{fill:var(--text)}
.flp-svg .plough line{stroke:var(--danger);stroke-width:1.5;opacity:.7}
.flp-svg .bld rect{fill:var(--text-muted)}.flp-svg .road{stroke:var(--text-muted);stroke-width:6}
.flp-svg .slope path{stroke:var(--danger);stroke-width:3;fill:none}
.flp-svg .gnd{fill:color-mix(in srgb,var(--text-muted) 22%,var(--surface))}
.flp-svg .nb circle{fill:var(--text);stroke:var(--surface);stroke-width:2}.flp-svg .nb text{fill:var(--surface);font:800 14px system-ui}
.flp-pts{margin:10px 0 6px;padding-left:30px;font-size:var(--fs-m);line-height:1.45}.flp-pts li{padding:3px 0}.flp-pts li::marker{font-weight:800}
.flp-foot{font-weight:700;margin:6px 0 10px}
.em-air #flp-btn{display:none}

/* v36 */
.flp-svg .lbl{fill:var(--text);font:700 13px system-ui}.flp-svg .lbl.sm{font-weight:600;fill:var(--text-muted)}
@media (min-width:1000px){#flp-card{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:0 16px;align-items:start}#flp-card .flp-svg{grid-row:1 / span 2;max-height:none}#flp-card .flp-pts{margin-top:0}#flp-card .flp-foot{grid-column:2}.flp-box{width:min(1200px,100%)}#flp-card .flp-pts{font-size:var(--fs-s);line-height:1.35}#flp-card .flp-foot{font-size:var(--fs-s)}}
#map-wx > b.g{font-size:var(--fs-l)}#map-wx span small{font-weight:600}

/* v37 */
#away-note{background:var(--warn-fill,#ffb627);color:var(--on-warn,#1c1200);font-weight:700;font-size:var(--fs-s);padding:6px 12px;border-bottom:var(--bw) solid var(--border)}
.flp-svg .pyl path{fill:none;stroke:var(--danger);stroke-width:3;stroke-linecap:round}
@media (max-height:820px) and (min-width:1000px){
  body[data-tab=radio] #vbar,body[data-tab=apt] #vbar{padding:2px 8px;gap:2px}
  body[data-tab=radio] .vs,body[data-tab=apt] .vs{flex-direction:row;align-items:baseline;gap:4px;padding:0 2px}
  body[data-tab=radio] .vs small i,body[data-tab=apt] .vs small i{display:none}
  body[data-tab=radio] .vs b,body[data-tab=apt] .vs b{font-size:var(--fs-m)}
}
@media (max-width:1000px){body[data-tab=map] .vs small i,body[data-tab=radio] .vs small i,body[data-tab=apt] .vs small i,body[data-tab=pfd] .vs small i,body[data-tab=circuit] .vs small i{display:none}}

/* v38–v40: traffic names, carb badge, TAF tiles, appearance pass */
.trf-ic span{font-size:var(--fs-xs);background:var(--surface);border:var(--bw) solid var(--border)}
.trf-ic span i{font-style:normal;font-weight:600;font-family:var(--font,inherit)}
.trf-ic.nolbl span{display:none}
#mw-carb{display:block;font-size:var(--fs-s);font-weight:700;border-radius:6px;padding:2px 6px;margin-top:3px}
#mw-carb small,#mw-ac{font-weight:600}#mw-ac{display:block;margin-top:2px}
.cb-S{background:var(--bad-fill);color:var(--on-bad)}.cb-M,.cb-D{background:var(--warn-fill,#ffb627);color:var(--on-warn,#1c1200)}.cb-L{outline:2px solid var(--warn-fill,#ffb627)}
.cb-na{outline:1px dashed var(--text-muted);color:var(--text-muted)}.cb-0{color:var(--text-muted)}
#mw-carb.cb-S small,#mw-carb.cb-M small,#mw-carb.cb-D small{color:inherit}
p#fr-carb{outline:0;background:none;font-weight:700;font-size:var(--fs-m);line-height:1.3;margin:8px 0}p#fr-carb.cb-S{color:var(--danger)}p#fr-carb.cb-M,p#fr-carb.cb-D,p#fr-carb.cb-L{color:var(--text)}
.taf-tl{margin:6px 0}.taf-tl small{display:block;color:var(--text-muted);font-size:var(--fs-xs);font-weight:700;margin-bottom:3px}.taf-tl.none{color:var(--text-muted);font-size:var(--fs-s)}
.taf-row{display:flex;gap:3px;overflow-x:auto;padding:0 28px 4px 0;scroll-snap-type:x proximity;-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}
.taf-h{flex:0 0 auto;min-width:86px;display:flex;flex-direction:column;border-radius:6px;padding:3px 5px;color:var(--on-cat);font-size:var(--fs-xs);line-height:1.25;scroll-snap-align:start;border:var(--bw-strong) solid transparent}
.taf-h i{font-style:normal;font-weight:800}.taf-h b{font-family:var(--num);font-size:var(--fs-s)}.taf-h em{font-style:normal;min-height:1em}
.taf-h i::after{float:right;margin-left:6px}
.taf-h.VFR i::after{content:"VFR"}.taf-h.MVFR i::after{content:"MVFR"}.taf-h.IFR i::after{content:"IFR"}.taf-h.LIFR i::after{content:"LIFR"}
.taf-h.MVFR{color:var(--on-cat-mvfr)}
.taf-h.na{background:none;outline:1px dashed var(--text-muted);color:var(--text-muted)}
.taf-h u{text-decoration:none;font-weight:800;background:var(--warn-fill,#ffb627);color:var(--on-warn,#1c1200);border-radius:4px;padding:0 4px;align-self:flex-start}
.taf-h s{text-decoration:none;font-weight:800;background:var(--surface);color:var(--text);border-radius:4px;padding:0 4px;align-self:flex-start;margin-top:2px}
.taf-h.eta{border-color:var(--text)}
[data-theme=night] .taf-h{border-color:var(--border)}
[data-theme=night] .taf-h.MVFR{border-color:var(--warn)}
[data-theme=night] .taf-h.IFR,[data-theme=night] .taf-h.LIFR{border-color:var(--danger)}
[data-theme=night] .taf-h.LIFR{background:var(--bad-soft)}
[data-theme=night] .taf-h.eta{box-shadow:0 0 0 2px var(--text)}
.gl-tip{white-space:normal;width:220px;text-align:center;font-size:var(--fs-xs)}
label input,label select{font-size:var(--fs-m)}
[data-theme=night] #btn-emer{background:var(--btn-hi);color:var(--danger);border:var(--bw-strong) solid var(--danger);box-shadow:none}
#asp-panel.collapsed .trf-st{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.theme-pick{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
@media (min-width:1100px){.rp-form{grid-template-columns:repeat(7,minmax(0,1fr))}}
#map-ui .zz{display:flex;gap:6px}#map-ui .zz button{min-width:56px;flex:1 1 0;padding:0}
@media (max-width:1000px){#map-ui .zz{display:contents}#map-ui .zz button{flex:none}}
@media (max-height:820px) and (min-width:1001px){#map-data{right:290px}}

/* v42 terrain */
#ter-chip{pointer-events:auto;align-self:flex-start;min-height:var(--tap);padding:0 14px;font-size:var(--fs-xs);font-weight:700;border-radius:12px;background:color-mix(in srgb,var(--surface) 92%,transparent)}
#ter-key{pointer-events:auto;align-self:flex-start;width:300px;max-width:100%;background:color-mix(in srgb,var(--surface) 95%,transparent);border:var(--bw) solid var(--border);border-radius:12px;padding:8px 10px;font-size:var(--fs-xs);max-height:max(200px,calc(100dvh - 455px));overflow-y:auto}
#ter-key[hidden]{display:none}
#ter-key .tk-h{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--fs-s)}
#ter-key #ter-on{min-height:var(--tap);padding:0 12px;display:flex;gap:8px;align-items:center}
#ter-bands{list-style:none;margin:6px 0;padding:0}#ter-bands li{display:flex;align-items:center;gap:8px;font-size:var(--fs-s);font-weight:700;padding:1px 0;font-family:var(--num)}
#ter-bands li.own{outline:var(--bw-strong) solid var(--accent);border-radius:6px}
.ter-sw{flex:0 0 auto;width:34px;height:18px;border-radius:4px;border:var(--bw) solid var(--border)}.ter-sw.none{background:repeating-linear-gradient(45deg,transparent 0 4px,var(--border) 4px 5px)}
#ter-info{margin:4px 0 6px;font-size:var(--fs-s);line-height:1.3}#ter-key small{color:var(--text-muted);display:block;line-height:1.25}
.ter-img{image-rendering:auto}
[data-theme=night] .ter-img,[data-theme=night] .ter-sw:not(.none){filter:grayscale(1) sepia(1) hue-rotate(-28deg) saturate(2.2) brightness(.5)}

/* v43 */
.ter-pk span{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;font:800 var(--fs-xs)/1 var(--num);color:var(--text);background:color-mix(in srgb,var(--surface) 88%,transparent);border:var(--bw) solid var(--border);border-radius:6px;padding:2px 5px;pointer-events:none}
.ter-pop .leaflet-popup-content{margin:10px 12px;font-size:var(--fs-s);line-height:1.3}.ter-pop .leaflet-popup-content b{font-size:var(--fs-m)}
#mw-carb{line-height:1.2}#mw-carb small{display:block;font-size:var(--fs-xs);font-weight:600}
/* landscape tablet: with More open the button column reaches the bottom, so the weather box moves to its left, above the nav strip */
@media (max-height:820px) and (min-width:1001px){#map-ui.more ~ #map-wx{right:290px;bottom:98px}}
