:root {
    color-scheme: dark;
    --pk-bg: #080c0f;
    --pk-surface: #0d1317;
    --pk-panel: #11191e;
    --pk-panel-2: #151f25;
    --pk-line: #233039;
    --pk-line-soft: #1a252b;
    --pk-text: #ecf4f5;
    --pk-muted: #bac7ca;
    --pk-cyan: #42dce7;
    --pk-cyan-deep: #0e7880;
    --pk-lime: #9be86f;
    --pk-amber: #ffb648;
    --pk-red: #ff6a68;
    --pk-blue: #70a8ff;
    --pk-radius: 12px;
    --pk-type-micro: 12px;
    --pk-type-caption: 13px;
    --pk-type-supporting: 14px;
    --pk-type-control: 14px;
    --pk-control-height: 36px;
}

* { box-sizing: border-box; }
html { background: var(--pk-bg); }
body { margin: 0; min-width: 320px; background: var(--pk-bg); color: var(--pk-text); font-family: Inter, "Segoe UI Variable", "Segoe UI", system-ui, sans-serif; font-size: 14px; line-height: 1.42; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
button:focus-visible, input:focus-visible, select:focus-visible, a:focus-visible { outline: 2px solid var(--pk-cyan); outline-offset: 2px; }
button:disabled { cursor: not-allowed; opacity: .42; }

.ofp-app { min-height: 100vh; background: radial-gradient(circle at 72% -5%, rgba(45, 98, 103, .13), transparent 31%), var(--pk-bg); }
.rail { position: fixed; inset: 0 auto 0 0; z-index: 30; width: 224px; padding: 16px 12px; border-right: 1px solid var(--pk-line); background: rgba(11, 16, 20, .97); display: flex; flex-direction: column; }
.brand { border: 0; background: transparent; display: flex; align-items: center; gap: 10px; padding: 5px 8px 20px; cursor: pointer; text-align: left; }
.brand-mark { width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid #2d5960; border-radius: 10px; color: var(--pk-cyan); background: linear-gradient(145deg, #13242a, #0b1216); box-shadow: inset 0 0 20px rgba(66, 220, 231, .06); }
.brand-mark svg { width: 29px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.brand-copy { display: flex; flex-direction: column; letter-spacing: .18em; }
.brand-copy strong { font-size: 16px; }
.brand-copy small { margin-top: 1px; font-size: var(--pk-type-caption); color: var(--pk-muted); }
.rail-nav { display: grid; gap: 4px; margin-top: 22px; }
.rail-item { position: relative; min-height: 46px; border: 1px solid transparent; border-radius: 8px; padding: 0 10px; background: transparent; color: #a8b6ba; display: grid; grid-template-columns: 28px 1fr auto; align-items: center; gap: 6px; text-align: left; font-size: var(--pk-type-caption); cursor: pointer; transition: .18s ease; }
.rail-item:hover { background: #131c21; color: var(--pk-text); }
.rail-item.active { background: linear-gradient(90deg, rgba(66,220,231,.14), rgba(66,220,231,.03)); border-color: rgba(66,220,231,.22); color: var(--pk-cyan); }
.rail-item.active::before { content: ""; position: absolute; left: -13px; width: 3px; height: 26px; border-radius: 0 2px 2px 0; background: var(--pk-cyan); box-shadow: 0 0 12px var(--pk-cyan); }
.rail-icon { color: inherit; font-size: 20px; text-align: center; display: grid; place-items: center; }
.app-icon { width: 24px; height: 24px; display: inline-block; flex: 0 0 24px; overflow: visible; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.app-icon .icon-dot { fill: currentColor; stroke: none; }
.app-icon .icon-route { stroke-dasharray: 1.25 1.35; }
.toolbar-actions .app-icon { width: 22px; height: 22px; flex-basis: 22px; }
.rail-count { min-width: 22px; padding: 2px 6px; border-radius: 9px; text-align: center; color: #a8babf; background: #1d292f; font-size: var(--pk-type-caption); }
.rail-footer { margin-top: auto; border-top: 1px solid var(--pk-line); padding-top: 12px; }
.sync-line { display: flex; align-items: center; gap: 7px; color: var(--pk-muted); font-size: var(--pk-type-caption); padding: 4px 8px 12px; text-transform: uppercase; letter-spacing: .06em; }
.profile-button { width: 100%; min-height: 52px; border: 0; border-radius: 8px; background: transparent; display: flex; align-items: center; gap: 9px; text-align: left; cursor: pointer; }
.profile-button:hover { background: #141d22; }
a.profile-button { color: inherit; text-decoration: none; }
.profile-button strong, .profile-button small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.profile-button > span:last-child { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.profile-button strong { font-size: var(--pk-type-caption); }
.profile-button small { color: var(--pk-muted); font-size: var(--pk-type-caption); }
.avatar { flex: 0 0 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; color: var(--pk-bg); background: var(--pk-cyan); font-weight: 800; font-size: 14px; }
.status-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--pk-muted); box-shadow: 0 0 0 3px rgba(129,145,152,.1); }
.status-dot.good { background: var(--pk-lime); box-shadow: 0 0 0 3px rgba(155,232,111,.1); }
.status-dot.amber { background: var(--pk-amber); box-shadow: 0 0 0 3px rgba(255,182,72,.1); }
.status-dot.danger { background: var(--pk-red); box-shadow: 0 0 0 3px rgba(255,106,104,.1); }
.status-dot.muted { background: #607077; }

.shell { min-height: 100vh; margin-left: 224px; }
.appbar { height: 58px; padding: 0 24px; border-bottom: 1px solid var(--pk-line); background: rgba(8, 12, 15, .88); backdrop-filter: blur(14px); display: flex; align-items: center; justify-content: space-between; position: sticky; top: 0; z-index: 25; }
.mobile-brand { display: none; }
.breadcrumb { display: flex; align-items: center; gap: 8px; color: var(--pk-muted); font-size: var(--pk-type-caption); }
.breadcrumb strong { color: #c9d7da; }
.crumb-divider { color: #39494f; }
.appbar-actions { display: flex; align-items: center; gap: 8px; }
.airac-chip, .language-switch { height: 30px; border: 1px solid var(--pk-line); border-radius: 6px; background: #10171b; display: inline-flex; align-items: center; gap: 7px; color: #aab9bd; padding: 0 10px; font-size: var(--pk-type-caption); letter-spacing: .05em; }
.appbar button.airac-chip { cursor: pointer; font: inherit; }
.appbar button.airac-chip:hover { border-color: #52636a; color: var(--pk-text); }
.language-switch { padding: 2px; gap: 2px; cursor: pointer; }
.language-switch span { min-width: 28px; padding: 5px 6px; border-radius: 4px; text-align: center; color: var(--pk-muted); }
.language-switch span.selected { background: #26343a; color: var(--pk-text); }
.icon-button { width: 34px; height: 34px; padding: 0; border: 1px solid var(--pk-line); border-radius: 7px; background: #10171b; color: var(--pk-muted); display: inline-grid; place-items: center; cursor: pointer; }
.icon-button:hover { color: var(--pk-text); border-color: #3a4c54; }
.icon-button.close { position: relative; display: grid; place-items: center; padding: 0; line-height: 0; }
.close-mark { position: relative; display: block; width: 18px; height: 18px; }
.close-mark::before, .close-mark::after { content: ""; position: absolute; top: 8px; left: 0; width: 18px; height: 2px; border-radius: 2px; background: currentColor; transform-origin: 50% 50%; }
.close-mark::before { transform: rotate(45deg); }
.close-mark::after { transform: rotate(-45deg); }
.runtime-banner { min-height: 42px; padding: 8px 24px; border-bottom: 1px solid; display: flex; align-items: center; gap: 14px; font-size: var(--pk-type-caption); line-height: 1.45; }
.runtime-banner strong { flex: 0 0 auto; font-size: var(--pk-type-caption); letter-spacing: .1em; }
.runtime-banner span { color: #b8c4c7; }
.runtime-banner.screening { border-block: 1px solid var(--pk-line); background: rgba(255,182,72,.09); }
.runtime-banner.screening strong { color: var(--pk-amber); }
.runtime-banner.blocked { border-color: rgba(255,106,104,.35); background: rgba(255,106,104,.09); }
.runtime-banner.blocked strong { color: var(--pk-red); }
.runtime-banner.airspace-warning { border-color: rgba(255,182,72,.38); background: rgba(255,182,72,.1); }
.runtime-banner.airspace-warning strong { color: var(--pk-amber); }

.navigation-database-dialog { display: grid; gap: 14px; }
.navigation-database-dialog > section { padding: 14px; border: 1px solid var(--pk-line); border-radius: 8px; background: #0b1216; }
.navigation-database-dialog > section:first-child { display: grid; gap: 6px; }
.navigation-database-dialog code { display: block; color: #b8c7cb; font: 13px/1.45 ui-monospace, SFMono-Regular, Consolas, monospace; overflow-wrap: anywhere; }
.navigation-database-dialog small, .navigation-database-dialog em { color: var(--pk-muted); font-size: var(--pk-type-caption); font-style: normal; }
.navigation-database-old { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.navigation-database-old > span { min-width: 0; display: grid; gap: 5px; }
.navigation-database-old.disabled { opacity: .65; }
.navigation-database-old .icon-button.danger { color: var(--pk-red); }
.trash-icon { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.navigation-database-message { margin: 0; color: var(--pk-red); }
.navigation-database-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.navigation-database-actions label.primary-button, .navigation-database-actions label.subtle-button { display: inline-flex; align-items: center; cursor: pointer; }
.navigation-database-input { position: absolute; width: 1px !important; height: 1px !important; min-height: 0 !important; padding: 0 !important; border: 0 !important; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); opacity: 0; white-space: nowrap; }

.trip-shell { min-width: 0; }
.trip-heading { min-height: 88px; padding: 14px 24px; border-bottom: 1px solid var(--pk-line-soft); display: flex; align-items: center; gap: 16px; }
.back-button { flex: 0 0 34px; height: 34px; border: 1px solid var(--pk-line); border-radius: 8px; background: transparent; color: var(--pk-muted); cursor: pointer; }
.back-button:hover { color: var(--pk-text); }
.airport-pair { min-width: 440px; display: grid; grid-template-columns: max-content 120px max-content; align-items: center; gap: 16px; }
.airport-pair > div:not(.route-arrow) { display: flex; flex-direction: column; }
.airport-pair > div:first-child { align-items: flex-end; text-align: right; }
.airport-pair strong { font-size: 23px; letter-spacing: .08em; }
.airport-pair span { color: var(--pk-muted); font-size: var(--pk-type-caption); }
.route-arrow { display: grid; grid-template-rows: 18px 16px; align-content: center; justify-items: center; height: 36px; }
.route-arrow span { font-size: var(--pk-type-micro); letter-spacing: .03em; white-space: nowrap; }
.route-arrow svg { display: block; width: 100%; height: 16px; fill: none; stroke: var(--pk-cyan); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.trip-meta { margin-left: auto; display: flex; align-items: center; gap: 18px; color: #c0cdd0; }
.trip-meta > span:not(.status-chip) { display: flex; flex-direction: column; gap: 3px; font-size: 14px; }
.trip-meta small { color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .1em; }
.status-chip { display: inline-flex; align-items: center; justify-content: center; width: max-content; min-height: 27px; padding: 3px 8px; border: 1px solid; border-radius: 4px; font-style: normal; font-size: var(--pk-type-micro); font-weight: 800; letter-spacing: .07em; }
.status-chip.draft { color: var(--pk-amber); border-color: rgba(255,182,72,.32); background: rgba(255,182,72,.08); }
.status-chip.pass, .status-chip.released { color: var(--pk-lime); border-color: rgba(155,232,111,.3); background: rgba(155,232,111,.07); }
.status-chip.archived { color: #9ca9ad; border-color: #39484e; background: #192227; }
.status-chip.screening { color: var(--pk-amber); border-color: rgba(255,182,72,.32); background: rgba(255,182,72,.08); }
.status-chip.block { color: var(--pk-red); border-color: rgba(255,106,104,.35); background: rgba(255,106,104,.08); }
.status-chip.no-go { color: var(--pk-red); border-color: rgba(255,106,104,.35); background: rgba(255,106,104,.08); }
.status-chip.update { color: var(--pk-blue); border-color: rgba(112,168,255,.35); background: rgba(112,168,255,.08); }
.trip-tabs { min-height: 48px; padding: 0 24px; border-bottom: 1px solid var(--pk-line); background: #0b1013; display: flex; gap: 26px; overflow-x: auto; scrollbar-width: none; }
.trip-tabs::-webkit-scrollbar { display: none; }
.trip-tabs button { flex: 0 0 auto; position: relative; min-height: 48px; padding: 0 1px; border: 0; background: transparent; color: var(--pk-muted); font-size: 14px; cursor: pointer; }
.trip-tabs button:hover { color: #d5e2e5; }
.trip-tabs button.active { color: var(--pk-cyan); }
.trip-tabs button.active::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--pk-cyan); box-shadow: 0 0 8px rgba(66,220,231,.5); }
.attention-dot { position: absolute; top: 12px; right: -7px; width: 4px; height: 4px; border-radius: 50%; background: var(--pk-amber); }
.trip-content { min-width: 0; }
.workspace-view, .page-view { max-width: 1480px; margin: 0 auto; padding: 20px 24px 30px; }
.page-view { padding-top: 26px; }
.workspace-toolbar, .page-heading { min-height: 48px; margin-bottom: 18px; display: flex; justify-content: space-between; align-items: flex-end; gap: 18px; }
.workspace-toolbar h1, .page-heading h1 { margin: 3px 0 0; color: var(--pk-text); font-size: 26px; font-weight: 650; letter-spacing: -.02em; }
.page-heading h1 { font-size: 29px; }
.page-heading p { margin: 4px 0 0; color: var(--pk-muted); font-size: var(--pk-type-supporting); }
.eyebrow, .panel-kicker { display: block; color: var(--pk-cyan); font-size: var(--pk-type-caption); font-weight: 750; letter-spacing: .13em; }
.toolbar-actions, .dataset-actions { display: flex; align-items: center; gap: 8px; }
.primary-button, .ghost-button, .subtle-button, .text-button { min-height: 36px; border-radius: 7px; padding: 0 14px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; cursor: pointer; font-size: var(--pk-type-control); font-weight: 650; }
.primary-button { border: 1px solid var(--pk-cyan); background: var(--pk-cyan); color: #061012; box-shadow: 0 6px 22px rgba(66,220,231,.11); }
.primary-button:hover { background: #76e8ef; border-color: #76e8ef; }
.ghost-button { border: 1px solid var(--pk-line); background: #10171b; color: #bdcace; }
.ghost-button:hover { border-color: #3d535b; color: var(--pk-text); }
.subtle-button { min-height: 32px; border: 1px solid #31424a; background: transparent; color: #b6c4c8; }
.text-button { min-height: 30px; border: 0; padding: 0; background: transparent; color: var(--pk-cyan); }
.compact { min-height: 30px; padding: 0 10px; }

.panel { border: 1px solid var(--pk-line); border-radius: var(--pk-radius); background: linear-gradient(145deg, rgba(18,26,31,.98), rgba(13,19,23,.98)); box-shadow: 0 12px 36px rgba(0,0,0,.12); overflow: hidden; }
.panel > header { min-height: 58px; padding: 13px 16px; border-bottom: 1px solid var(--pk-line-soft); display: flex; align-items: center; justify-content: space-between; gap: 15px; }
.panel > header h2 { margin: 4px 0 0; font-size: 15px; font-weight: 600; }
.crew-sector-editor { padding: 13px; border: 1px solid var(--pk-line-soft); border-radius: 8px; background: rgba(4,9,12,.28); display: grid; gap: 10px; }
.sector-entry-form { grid-template-columns: .6fr .6fr 1fr 1fr .45fr auto; align-items: end; }
.crew-sector-editor .crew-form-row { padding-top: 10px; border-top: 1px solid var(--pk-line-soft); }
.crew-member-editor { display: grid; gap: 9px; }
.crew-member-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.crew-member-card { min-width: 0; border: 1px solid var(--pk-line); border-radius: 7px; background: rgba(5,11,14,.35); }
.crew-member-card > summary { min-height: 42px; padding: 8px 10px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 9px; cursor: pointer; list-style: none; }
.crew-member-card > summary::-webkit-details-marker { display: none; }
.crew-member-card > summary > span:first-child { color: var(--pk-cyan); font-size: var(--pk-type-micro); letter-spacing: .12em; }
.crew-member-card > summary strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--pk-type-caption); }
.crew-member-fields { padding: 10px; border-top: 1px solid var(--pk-line-soft); display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.crew-member-fields .wide { grid-column: 1/-1; }
.crew-member-summary { padding: 8px 10px; border-top: 1px solid var(--pk-line-soft); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; color: #dce8ea; font-size: var(--pk-type-micro); }
.crew-member-findings { max-height: 230px; padding: 0 10px 10px; display: grid; gap: 5px; overflow: auto; }
.crew-member-findings > div { padding: 7px; border-left: 2px solid currentColor; background: rgba(255,255,255,.025); display: grid; gap: 3px; font-size: var(--pk-type-micro); }
.crew-member-findings .pass { color: var(--pk-lime); }.crew-member-findings .warn { color: #f4bd5c; }.crew-member-findings .block { color: #ff7474; }.crew-member-findings .explain { color: var(--pk-cyan); }
.crew-member-findings span, .crew-member-findings small { color: #aab7ba; line-height: 1.35; }
.crew-form select { width: 100%; height: 34px; border: 1px solid var(--pk-line); border-radius: 5px; background: #091014; color: #dce8ea; padding: 0 9px; font: inherit; font-size: var(--pk-type-caption); }
.crew-form select:focus { outline: 1px solid var(--pk-cyan); border-color: var(--pk-cyan); }
.crew-timeline-switch { margin-bottom: 12px; min-height: 42px; display: flex; align-items: center; gap: 5px; }.crew-timeline-switch button { min-width: 92px; height: 32px; border: 1px solid var(--pk-line); border-radius: 6px; background: #0d1519; color: var(--pk-muted); cursor: pointer; }.crew-timeline-switch button.active { border-color: var(--pk-cyan); color: var(--pk-cyan); background: rgba(66,220,231,.08); }.crew-timeline-switch > span { margin-left: auto; color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .08em; }.crew-duty-grid { display: grid; grid-template-columns: minmax(620px,1.45fr) minmax(300px,.65fr); gap: 12px; }.crew-input-panel { min-width: 0; }.crew-form { padding: 16px; display: grid; gap: 15px; }.crew-form-row { display: grid; gap: 10px; }.crew-form-row.three { grid-template-columns: repeat(3,minmax(0,1fr)); }.crew-form-row.four { grid-template-columns: repeat(4,minmax(0,1fr)); }.crew-form label, .crew-timeline-card label { min-width: 0; display: grid; gap: 6px; color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .04em; }.crew-form input, .crew-timeline-card input { width: 100%; height: 34px; border: 1px solid var(--pk-line); border-radius: 5px; background: #091014; color: #dce8ea; padding: 0 9px; font: inherit; font-size: var(--pk-type-caption); }.crew-form input:focus, .crew-timeline-card input:focus { outline: 1px solid var(--pk-cyan); border-color: var(--pk-cyan); }.crew-timeline-cards { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }.crew-timeline-card { padding: 12px; border: 1px solid var(--pk-line); border-radius: 7px; background: rgba(5,11,14,.35); display: grid; grid-template-columns: 1fr 1fr 80px; gap: 10px; }.crew-timeline-card.selected { border-color: rgba(66,220,231,.65); box-shadow: inset 0 0 0 1px rgba(66,220,231,.08); }.crew-timeline-card header { grid-column: 1/-1; display: flex; justify-content: space-between; }.crew-timeline-card header strong { font-size: var(--pk-type-caption); }.crew-timeline-card header small { color: var(--pk-cyan); font-size: var(--pk-type-micro); letter-spacing: .12em; }.crew-checkbox { align-content: center; grid-template-columns: 18px 1fr !important; }.crew-checkbox input { width: 16px; height: 16px; accent-color: var(--pk-cyan); }.crew-results { display: grid; align-content: start; gap: 12px; }.crew-result-card > header { align-items: flex-start; }.crew-badge { padding: 4px 7px; border: 1px solid; border-radius: 999px; font-size: var(--pk-type-micro); letter-spacing: .1em; }.crew-badge.pass { color: var(--pk-lime); border-color: rgba(152,239,105,.5); }.crew-badge.block { color: #ff7474; border-color: rgba(255,116,116,.5); }.crew-badge.explain { color: var(--pk-cyan); border-color: rgba(66,220,231,.5); }.crew-metrics { margin: 0; padding: 8px 15px 14px; }.crew-metrics div { min-height: 32px; display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 9px; border-bottom: 1px solid var(--pk-line-soft); }.crew-metrics dt { color: var(--pk-muted); font-size: var(--pk-type-micro); }.crew-metrics dd { margin: 0; font-size: var(--pk-type-caption); text-align: right; }.weekly-rest-note { margin: 0 14px 14px; padding: 11px; border-left: 2px solid var(--pk-cyan); background: rgba(66,220,231,.05); display: grid; gap: 5px; }.weekly-rest-note strong { font-size: var(--pk-type-caption); }.weekly-rest-note span { color: #aab9bc; font-size: var(--pk-type-micro); line-height: 1.5; }.weekly-rest-note small { color: var(--pk-cyan); font-size: var(--pk-type-micro); }.crew-findings-panel { margin-top: 12px; }.crew-findings { padding: 12px 15px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }.crew-finding { min-height: 72px; padding: 10px; border: 1px solid var(--pk-line-soft); border-radius: 6px; display: grid; grid-template-columns: 58px 1fr; gap: 10px; }.crew-finding > span { align-self: start; padding: 4px 5px; border: 1px solid currentColor; border-radius: 999px; font-size: var(--pk-type-micro); text-align: center; }.crew-finding.pass { color: var(--pk-lime); }.crew-finding.warn { color: #f4bd5c; }.crew-finding.block { color: #ff7474; }.crew-finding.explain { color: var(--pk-cyan); }.crew-finding div { color: #d5e0e2; }.crew-finding strong { font-size: var(--pk-type-micro); }.crew-finding p { margin: 4px 0; color: #aab7ba; font-size: var(--pk-type-micro); line-height: 1.4; }.crew-finding small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.crew-empty { padding: 16px; display: grid; gap: 5px; color: var(--pk-muted); font-size: var(--pk-type-micro); }.crew-empty strong { color: #f4bd5c; font-size: var(--pk-type-micro); }
.crew-badge.warn { color: #f4bd5c; border-color: rgba(244,189,92,.55); }.weekly-result-card { grid-column: 1/-1; }.crew-history-panel { margin-top: 12px; }.crew-history-panel > header { align-items: flex-start; }.history-timeline-chip { padding: 5px 8px; border: 1px solid var(--pk-cyan); border-radius: 999px; color: var(--pk-cyan); font-size: var(--pk-type-micro); letter-spacing: .12em; }.crew-history-editor { padding: 14px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }.history-column { min-width: 0; display: grid; align-content: start; gap: 10px; }.history-column-heading { min-height: 34px; display: grid; gap: 4px; }.history-column-heading strong { font-size: var(--pk-type-caption); }.history-column-heading small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.history-entry-form { padding: 11px; border: 1px solid var(--pk-line-soft); border-radius: 7px; background: rgba(4,9,12,.38); display: grid; gap: 8px; }.work-entry-form { grid-template-columns: 1fr 1fr .7fr auto; align-items: end; }.rest-entry-form { grid-template-columns: 1fr 1fr .55fr .7fr; align-items: end; }.rest-entry-form > label:nth-child(5) { grid-column: 1/3; }.history-entry-form label { min-width: 0; display: grid; gap: 5px; color: var(--pk-muted); font-size: var(--pk-type-micro); }.history-entry-form input, .history-entry-form select { width: 100%; height: 32px; border: 1px solid var(--pk-line); border-radius: 5px; padding: 0 8px; background: #091014; color: #dce8ea; font-size: var(--pk-type-micro); }.history-entry-form .subtle-button { min-height: 32px; }.history-checks { display: flex; align-items: center; gap: 10px; }.history-checks label { grid-template-columns: 16px 1fr; align-items: center; }.history-checks input { width: 14px; height: 14px; accent-color: var(--pk-cyan); }.history-list { display: grid; gap: 6px; }.history-empty { min-height: 50px; padding: 15px; border: 1px dashed var(--pk-line); border-radius: 6px; color: var(--pk-muted); font-size: var(--pk-type-micro); display: grid; place-items: center; }.history-row { min-height: 48px; padding: 7px 9px; border: 1px solid var(--pk-line-soft); border-radius: 6px; display: grid; grid-template-columns: 44px 1fr 27px; align-items: center; gap: 9px; background: rgba(12,19,23,.6); }.history-kind { padding: 4px; border: 1px solid #45606a; border-radius: 4px; color: #9bb1b6; font-size: var(--pk-type-micro); text-align: center; }.history-kind.qualifies { border-color: rgba(152,239,105,.5); color: var(--pk-lime); }.history-row div { min-width: 0; display: grid; gap: 3px; }.history-row strong { overflow: hidden; text-overflow: ellipsis; color: #d5e1e3; font-size: var(--pk-type-micro); white-space: nowrap; }.history-row small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.history-row > button { width: 25px; height: 25px; border: 1px solid transparent; border-radius: 4px; background: transparent; color: var(--pk-muted); cursor: pointer; }.history-row > button:hover { border-color: rgba(255,116,116,.45); color: #ff7474; }
.crew-timeline-card select { width: 100%; height: 34px; border: 1px solid var(--pk-line); border-radius: 5px; background: #091014; color: #dce8ea; padding: 0 9px; font: inherit; font-size: var(--pk-type-caption); }.crew-timeline-card select:focus { outline: 1px solid var(--pk-cyan); border-color: var(--pk-cyan); }
@media (max-width: 1100px) { .crew-duty-grid { grid-template-columns: 1fr; }.crew-results { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 900px) { .crew-history-editor { grid-template-columns: 1fr; }.work-entry-form, .rest-entry-form, .sector-entry-form { grid-template-columns: repeat(2,minmax(0,1fr)); }.rest-entry-form > label:nth-child(5) { grid-column: auto; } }
@media (max-width: 720px) { .crew-timeline-switch > span { display: none; }.crew-form-row.three, .crew-form-row.four, .crew-timeline-cards, .crew-member-grid, .crew-member-fields, .crew-results, .crew-findings { grid-template-columns: 1fr; }.crew-member-fields .wide { grid-column: auto; }.crew-timeline-card { grid-template-columns: 1fr; }.crew-timeline-card header { grid-column: auto; }.crew-findings { padding: 10px; }.crew-finding { grid-template-columns: 52px 1fr; }.crew-duty-view .page-heading .primary-button { width: 100%; }.work-entry-form, .rest-entry-form, .sector-entry-form { grid-template-columns: 1fr; }.history-entry-form .subtle-button { width: 100%; }.history-checks { flex-wrap: wrap; } }
.source-footer { min-height: 35px; padding: 9px 14px; border-top: 1px solid var(--pk-line-soft); color: #6f8087; display: flex; justify-content: space-between; gap: 12px; font-size: var(--pk-type-micro); letter-spacing: .03em; }
.alert-banner { min-height: 56px; margin-bottom: 16px; padding: 10px 14px; border: 1px solid; border-radius: 9px; display: flex; align-items: center; gap: 12px; }
.alert-banner.warning { border-color: rgba(255,182,72,.32); background: linear-gradient(90deg, rgba(255,182,72,.1), rgba(255,182,72,.02)); }
.alert-banner.danger { border-color: rgba(255,106,104,.3); background: linear-gradient(90deg, rgba(255,106,104,.11), rgba(255,106,104,.02)); }
.alert-banner.success { border-color: rgba(155,232,111,.25); background: linear-gradient(90deg, rgba(155,232,111,.09), rgba(155,232,111,.02)); }
.alert-banner .alert-icon { flex: 0 0 29px; height: 29px; display: grid; place-items: center; border-radius: 50%; color: #071012; background: var(--pk-amber); font-weight: 900; }
.alert-banner.danger .alert-icon { background: var(--pk-red); }
.alert-banner.success .alert-icon { background: var(--pk-lime); }
.alert-banner > div { flex: 1; }
.alert-banner strong { font-size: 14px; }
.alert-banner p { margin: 3px 0 0; color: #a5b3b7; font-size: var(--pk-type-caption); }
.alert-banner > button { border: 0; background: transparent; color: var(--pk-amber); font-size: var(--pk-type-caption); cursor: pointer; }
.alert-banner.danger > button { color: var(--pk-red); }

.metric-grid { display: grid; gap: 10px; margin-bottom: 12px; }
.metric-grid.four { grid-template-columns: repeat(4, 1fr); }
.metric-card { position: relative; min-height: 118px; padding: 15px 16px; border: 1px solid var(--pk-line); border-radius: 10px; background: linear-gradient(145deg, #121a1f, #0e1519); display: flex; flex-direction: column; }
.metric-card > span { color: var(--pk-muted); font-size: var(--pk-type-micro); font-weight: 650; letter-spacing: .12em; }
.metric-card strong { margin-top: 11px; font-size: 25px; font-weight: 620; letter-spacing: -.03em; }
.metric-card strong em { color: #91a0a5; font-size: 14px; font-style: normal; }
.metric-card small { margin-top: 4px; color: #77888e; font-size: var(--pk-type-caption); }
.metric-card .trend { position: absolute; right: 13px; bottom: 12px; padding: 3px 6px; border-radius: 4px; font-size: var(--pk-type-micro); font-style: normal; }
.trend.good { color: var(--pk-lime); background: rgba(155,232,111,.07); }
.trend.warning { color: var(--pk-amber); background: rgba(255,182,72,.07); }
.trend.neutral { color: var(--pk-cyan); background: rgba(66,220,231,.07); }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(270px, .72fr); gap: 12px; }
.dashboard-grid .wide { grid-row: span 2; }
.route-overview { min-height: 450px; }
.route-overview header h2 { max-width: 720px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #aab8bc; font-size: var(--pk-type-caption); font-weight: 500; }
.map-stage { position: relative; min-height: 348px; background: radial-gradient(circle at 50% 20%, #122127, #0c1215 70%); overflow: hidden; }
.map-stage svg { width: 100%; height: 310px; }
.map-stage .terrain { fill: #172328; stroke: #28383e; }
.map-grid, .chart-grid { fill: none; stroke: #213038; stroke-width: 1; opacity: .62; }
.route-line { fill: none; stroke: url(#routeFade); stroke-width: 2.2; stroke-dasharray: 7 4; }
.route-nodes circle { fill: #10171b; stroke: var(--pk-cyan); stroke-width: 2; }
.route-nodes circle:last-child { stroke: var(--pk-lime); }
.map-labels { fill: #e6f0f3; font-size: calc(var(--pk-type-caption) * 1.0925); font-weight: 700; letter-spacing: .09em; }
.route-map-section .map-labels text { font-size: inherit; paint-order: stroke fill; stroke: #000; stroke-width: 2; stroke-linejoin: round; }
.map-stat { position: absolute; bottom: 15px; display: flex; flex-direction: column; gap: 3px; }
.map-stat.start { left: 18px; }.map-stat.end { right: 18px; text-align: right; }
.map-stat small { color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .12em; }.map-stat strong { font-size: var(--pk-type-caption); }
.combined-route-profile { min-height: 365px; overflow-x: auto; }
.combined-route-profile svg { min-width: 720px; height: 325px; }
.flight-profile-area { fill: url(#profileFade); stroke: none; }
.flight-profile-line { fill: none; stroke: #86969c; stroke-width: 1.8; opacity: .82; }
.route-nodes .waypoint { fill: #0d1519; stroke: var(--pk-cyan); stroke-width: 1.5; }
.route-nodes .airport { fill: #0d1519; stroke: var(--pk-lime); stroke-width: 2.2; }
.profile-axis { fill: #667980; font-size: var(--pk-type-micro); letter-spacing: .08em; }
.north-arrow { fill: none; stroke: #92a5aa; stroke-width: 1.5; }
.north-arrow text { fill: #b8c6c9; stroke: none; font-size: var(--pk-type-caption); font-weight: 750; }
.profile-nodes circle { fill: #8b9ca1; opacity: .82; }
.profile-nodes text, .combined-profile-labels { fill: #9caaae; font-size: var(--pk-type-micro); font-weight: 650; letter-spacing: .05em; }
.profile-unavailable-message { position: absolute; inset: 95px 14% auto; padding: 12px 14px; border: 1px solid rgba(129,145,151,.16); border-radius: 8px; background: rgba(9,15,18,.86); display: grid; grid-template-columns: auto 1fr; gap: 4px 10px; color: #75878d; font-size: var(--pk-type-caption); }
.profile-unavailable-message strong { color: #a0b1b5; font-size: var(--pk-type-caption); text-transform: uppercase; letter-spacing: .06em; }
.profile-unavailable-message.profile-only { inset: 218px 8% auto; background: rgba(9,15,18,.72); grid-template-columns: auto minmax(0, 1fr); }
.combined-legend { min-width: 690px; min-height: 40px; padding: 7px 14px; border-top: 1px solid var(--pk-line-soft); display: flex; align-items: center; gap: 18px; color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .05em; }
.combined-legend span:last-child { margin-left: auto; color: #91a2a7; }
.combined-legend i { display: inline-block; width: 23px; margin-right: 6px; vertical-align: middle; }
.map-route-key { border-top: 2px dashed var(--pk-cyan); }
.profile-key { height: 7px; border-top: 2px solid #86969c; background: rgba(129,145,151,.16); }
.decision-card, .weather-card { min-height: 219px; }
.decision-route { margin: 14px 16px 9px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 8px; color: #dce6e8; font-size: 14px; font-weight: 750; }
.decision-route i { height: 1px; background: linear-gradient(90deg, var(--pk-cyan), var(--pk-lime)); }
.check-list { list-style: none; margin: 0; padding: 3px 16px 10px; display: grid; gap: 6px; }
.check-list li { min-height: 22px; display: grid; grid-template-columns: 17px 1fr auto; align-items: center; gap: 5px; color: #a9b7ba; font-size: var(--pk-type-caption); }
.check-list li i { width: 15px; height: 15px; display: grid; place-items: center; border-radius: 50%; background: rgba(155,232,111,.11); color: var(--pk-lime); font-style: normal; font-size: var(--pk-type-micro); }
.check-list li strong { color: #d2dcde; font-size: var(--pk-type-caption); }
.check-list li.warn i { color: var(--pk-amber); background: rgba(255,182,72,.1); }
.check-list li.block i { color: var(--pk-red); background: rgba(255,106,104,.1); }
.decision-card .subtle-button { margin: 0 16px 12px; }
.weather-airports { padding: 9px 15px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.weather-airports > div { min-width: 0; padding-right: 8px; border-right: 1px solid var(--pk-line-soft); display: flex; flex-direction: column; gap: 3px; }
.weather-airports > div:last-child { border: 0; }.weather-airports strong { font-size: 14px; }.weather-airports span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #adbbbe; font-size: var(--pk-type-micro); }.weather-airports small { color: var(--pk-muted); font-size: var(--pk-type-micro); }
.weather-briefing-details { padding: 10px 15px; display: grid; gap: 9px; }
.weather-briefing-status { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.weather-briefing-status small, .weather-location header small, .weather-report small, .weather-briefing-provenance { color: var(--pk-muted); font-size: var(--pk-type-micro); }
.weather-location { min-width: 0; display: grid; gap: 6px; padding-top: 8px; border-top: 1px solid var(--pk-line-soft); }
.weather-location header, .weather-report-head { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; }
.weather-location header { justify-content: space-between; }
.weather-report { min-width: 0; display: grid; gap: 3px; padding: 7px 8px; border-radius: 5px; background: rgba(255,255,255,.018); }
.weather-report-head b { color: var(--pk-cyan); font-size: var(--pk-type-caption); letter-spacing: .08em; }
.weather-report-head span { color: #adbbbe; font-size: var(--pk-type-micro); }
.weather-report-head em { color: var(--pk-amber); font-size: var(--pk-type-micro); font-style: normal; }
.weather-report code { color: #d7e1e3; font-family: var(--pk-mono); font-size: var(--pk-type-caption); line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
.weather-report small, .weather-briefing-provenance span, .weather-failure { overflow-wrap: anywhere; }
.weather-failure { margin: 0; color: var(--pk-red); font-size: var(--pk-type-caption); }
.weather-briefing-provenance { display: grid; gap: 3px; padding-top: 7px; border-top: 1px solid var(--pk-line-soft); }
.weather-briefing-details.compact { padding: 8px 0; }
.weather-briefing-details.compact .weather-report { padding: 5px 7px; }
.weather-isa-note { color: var(--pk-muted); font-size: var(--pk-type-caption); }
.folder-weather-details { grid-column: 1 / -1; padding: 8px 14px; }
.ofp-paper .weather-briefing-status small,
.ofp-paper .weather-location header small,
.ofp-paper .weather-report small,
.ofp-paper .weather-briefing-provenance,
.ofp-paper .weather-isa-note { color: #4c585d; }
.ofp-paper .weather-location,
.ofp-paper .weather-briefing-provenance { border-color: #c1c7c5; }
.ofp-paper .weather-report { background: #e1e5e2; }
.ofp-paper .weather-report code { color: #172026; }
.ofp-paper .weather-report-head b { color: #11666c; }
.ofp-paper .weather-report-head span { color: #445156; }
.ofp-paper .weather-failure { color: #9f2424; }
.ofp-paper .status-chip.block { color: #8f2020; border-color: #c97878; background: #f9dddd; }
.live-pill { color: var(--pk-lime); font-size: var(--pk-type-micro); letter-spacing: .09em; }
.wind-row { margin: 4px 15px 10px; padding: 8px 10px; border-radius: 6px; background: #182227; display: grid; grid-template-columns: auto 20px 1fr auto; align-items: center; gap: 7px; font-size: var(--pk-type-caption); }.wind-row i { color: var(--pk-cyan); transform: rotate(var(--angle)); font-style: normal; }.wind-row small { color: var(--pk-muted); }
.warning-text, .amber-text { color: var(--pk-amber) !important; }

/* Trips */
.filterbar { margin: 22px 0 13px; display: flex; align-items: center; gap: 10px; }
.segmented { display: flex; padding: 3px; border: 1px solid var(--pk-line); border-radius: 7px; background: #0d1418; }
.segmented button { min-height: 30px; padding: 0 13px; border: 0; border-radius: 5px; background: transparent; color: var(--pk-muted); font-size: var(--pk-type-caption); cursor: pointer; }
.segmented button.active { background: #243238; color: var(--pk-text); }
.segmented span { color: var(--pk-cyan); margin-left: 4px; }
.search-field { flex: 1; max-width: 430px; height: 38px; border: 1px solid var(--pk-line); border-radius: 7px; background: #0e1519; display: flex; align-items: center; gap: 8px; padding: 0 11px; color: var(--pk-muted); }
.search-field input { flex: 1; border: 0; outline: 0; background: transparent; color: var(--pk-text); font-size: 14px; }
.trip-list-card { border: 1px solid var(--pk-line); border-radius: 11px; background: var(--pk-panel); overflow: hidden; }
.trip-list-head, .trip-row { display: grid; grid-template-columns: minmax(210px, 1.35fr) .72fr .72fr .64fr 1fr .85fr 26px; align-items: center; gap: 13px; }
.trip-list-head { min-height: 40px; padding: 0 16px; color: #64767d; background: #0e1519; font-size: var(--pk-type-micro); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.trip-row { width: 100%; min-height: 79px; padding: 10px 16px; border: 0; border-top: 1px solid var(--pk-line-soft); background: transparent; color: #d7e2e4; text-align: left; cursor: pointer; }
.trip-row:hover { background: #151f24; }.trip-row.featured { background: linear-gradient(90deg, rgba(66,220,231,.045), transparent 60%); }
.saved-trip-head { display: grid; grid-template-columns: minmax(180px,1.4fr) 120px minmax(130px,1fr) 120px 110px 140px; gap: 12px; padding: 12px 16px; color: var(--pk-muted); font-size: 14px; background: #0e1519; }
.saved-trip-row { display: grid; grid-template-columns: minmax(180px,1.4fr) 120px minmax(130px,1fr) 120px 110px 140px; gap: 12px; padding: 0 16px; border-top: 1px solid var(--pk-line-soft); }
.saved-trip-open { grid-column: 1 / 6; display: grid; grid-template-columns: subgrid; gap: inherit; align-items: center; min-width: 0; min-height: 79px; padding: 12px 0; border: 0; background: transparent; color: #d7e2e4; text-align: left; cursor: pointer; }
.saved-trip-open:hover:not(:disabled) { background: #151f24; }
.saved-trip-open:disabled { opacity: 1; cursor: default; }
.saved-trip-open > span { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.saved-trip-open strong, .saved-trip-open small { font-size: 14px; overflow-wrap: anywhere; }
.saved-trip-open small { color: var(--pk-muted); }
.saved-trip-actions { grid-column: 6; display: flex; align-items: center; justify-content: center; padding: 8px 0; }
.saved-trips-view .filterbar { flex-wrap: wrap; }
.ofp-app .saved-trips-view .segmented button { min-height: 36px; }
.saved-trips-view .search-field { height: 36px; padding: 0; border: 0; }
.saved-trips-view .search-field input { height: 36px; min-height: 36px; padding: 0 12px; border: 1px solid var(--pk-line); border-radius: 4px; }
@media (max-width: 1200px) {
    .saved-trip-head { display: none; }
    .saved-trip-row { grid-template-columns: minmax(0,1fr) 140px; gap: 0; padding: 0; }
    .saved-trip-open { grid-column: auto; grid-template-columns: minmax(140px,1.3fr) 110px minmax(100px,1fr); gap: 12px; padding: 12px 16px; }
    .saved-trip-actions { grid-column: auto; padding: 8px; }
    .saved-trip-open > .saved-trip-time, .saved-trip-open > .saved-trip-status { display: none; }
}
@media (max-width: 620px) {
    .saved-trip-row { grid-template-columns: minmax(0,1fr); }
    .saved-trip-open { grid-template-columns: minmax(0,1fr) 110px; padding-bottom: 6px; }
    .saved-trip-open > .saved-trip-aircraft { grid-column: 1/-1; }
    .saved-trip-actions { justify-content: flex-end; padding: 0 12px 10px; }
    .saved-trips-view .search-field { flex-basis: 100%; }
}
.trip-row > span { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.trip-row strong { font-size: var(--pk-type-caption); }.trip-row small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--pk-muted); font-size: var(--pk-type-micro); }.trip-row .city-pair { position: relative; padding-left: 17px; }.trip-row .city-pair > i { position: absolute; left: 0; top: 4px; }.trip-row .city-pair strong { font-size: 15px; letter-spacing: .05em; }.city-pair b { color: var(--pk-cyan); font-weight: 400; margin: 0 5px; }.row-chevron { color: var(--pk-cyan); font-size: 23px; }
.page-note { margin-top: 14px; padding: 12px 14px; border: 1px solid var(--pk-line); border-radius: 9px; background: rgba(17,25,30,.72); display: flex; gap: 11px; color: #9eacb0; }.page-note > span { width: 23px; height: 23px; border: 1px solid #31505a; border-radius: 50%; display: grid; place-items: center; color: var(--pk-cyan); font-weight: 700; }.page-note p { margin: 0; font-size: var(--pk-type-caption); line-height: 1.55; }.page-note strong { color: #c9d4d7; }

/* Flight planning */
.flight-plan-view > .panel, .flight-plan-view > .planning-grid { margin-bottom: 18px; }
.route-controls { min-height: 76px; margin-bottom: 12px; padding: 10px 14px; display: grid; grid-template-columns: 1.15fr .75fr 1fr 2.7fr; gap: 10px; align-items: center; }
label > span, .route-controls label > span { display: block; margin-bottom: 4px; color: var(--pk-muted); font-size: var(--pk-type-caption); font-weight: 650; letter-spacing: .06em; }
input, select { width: 100%; min-height: var(--pk-control-height); border: 1px solid #2b3a41; border-radius: 6px; background: #0d1418; color: #d7e2e4; padding: 0 10px; font-size: var(--pk-type-control); outline: 0; }
input:focus, select:focus { border-color: var(--pk-cyan); box-shadow: 0 0 0 2px rgba(66,220,231,.08); }
.route-summary-inline { min-height: 49px; border-left: 1px solid var(--pk-line); display: grid; grid-template-columns: repeat(3,1fr); align-items: center; }.route-summary-inline span { display: flex; flex-direction: column; gap: 5px; padding-left: 16px; }.route-summary-inline small { color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .08em; }.route-summary-inline strong { font-size: 14px; }
.procedure-controls { margin-bottom: 12px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.landing-runway-select { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 10px; margin-top: 8px; }
.procedure-controls > section { min-width: 0; padding: 12px 14px; }
.procedure-controls > section + section { border-left: 1px solid var(--pk-line); }
.procedure-controls header { margin-bottom: 9px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.procedure-controls header span { color: var(--pk-text); font-size: var(--pk-type-caption); font-weight: 750; letter-spacing: .08em; }
.procedure-controls header small { color: var(--pk-muted); font-size: var(--pk-type-micro); text-align: right; }
.procedure-controls select { width: 100%; min-height: 34px; }
.procedure-transitions { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 6px; }
.procedure-transitions label { min-height: 31px; padding: 5px 8px; border: 1px solid var(--pk-line); border-radius: 5px; display: grid; grid-template-columns: auto auto; column-gap: 6px; align-items: center; cursor: pointer; }
.procedure-transitions label:has(input:checked) { border-color: var(--pk-cyan); background: color-mix(in srgb, var(--pk-cyan) 10%, transparent); }
.procedure-transitions label.blocked { cursor: not-allowed; opacity: .52; }
.procedure-transitions input { margin: 0; accent-color: var(--pk-cyan); }
.procedure-transitions span { font-size: var(--pk-type-micro); font-weight: 750; }
.procedure-transitions small { grid-column: 2; color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .06em; }
.procedure-unavailable { margin: 0; padding: 9px 10px; border: 1px solid var(--pk-amber); border-radius: 4px; color: var(--pk-amber); font-size: var(--pk-type-micro); }
.procedure-controls > footer { grid-column: 1/-1; padding: 7px 14px; border-top: 1px solid var(--pk-line); color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .04em; }
.planning-grid { display: grid; grid-template-columns: minmax(540px, 1.05fr) minmax(450px, 1fr); gap: 12px; }
.route-editor, .vertical-panel { min-width: 0; min-height: 520px; }
.waypoint-table-wrap { overflow: auto; }
.waypoint-table { width: 100%; border-collapse: collapse; font-size: var(--pk-type-caption); }.waypoint-table th { height: 34px; color: #66787e; background: #0e1519; text-align: left; font-size: var(--pk-type-micro); letter-spacing: .08em; }.waypoint-table td, .waypoint-table th { padding: 7px 7px; border-bottom: 1px solid var(--pk-line-soft); white-space: nowrap; }.waypoint-table td:first-child, .waypoint-table th:first-child { padding-left: 12px; }.waypoint-table td:nth-child(n+4):not(:last-child) { color: #aab8bc; text-align: right; }.waypoint-table th:nth-child(n+4):not(:last-child) { text-align: right; }.waypoint-table td strong { display: block; font-size: var(--pk-type-caption); }.waypoint-table td small { display: block; color: var(--pk-muted); font-size: var(--pk-type-micro); margin-top: 2px; }.waypoint-table tr:hover { background: #151f24; }.waypoint-table tr.departure { background: rgba(66,220,231,.035); }.drag-handle { color: #5c7077; margin-right: 5px; }.row-actions { display: flex; gap: 2px; }.row-actions button { width: 23px; height: 23px; border: 0; border-radius: 4px; background: transparent; color: #75878d; cursor: pointer; }.row-actions button:hover:not(:disabled) { background: #26343a; color: var(--pk-cyan); }
.expanded-route-preview { padding: 10px 13px; border-top: 1px solid var(--pk-line-soft); background: rgba(62,222,232,.025); color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .05em; }.expanded-route-preview > span { display: block; margin-bottom: 8px; color: var(--pk-cyan); }.expanded-route-preview ol { display: flex; gap: 5px; margin: 0; padding: 0; list-style: none; overflow-x: auto; }.expanded-route-preview li { flex: 0 0 auto; padding: 4px 7px; border: 1px solid #27383e; border-radius: 10px; color: #aebdc1; }.expanded-route-preview li.airport { border-color: rgba(151,231,105,.5); color: var(--pk-lime); }.expanded-route-preview.failed { background: rgba(255,115,92,.04); }.expanded-route-preview.failed > span { color: var(--pk-red); }.expanded-route-preview.failed p { margin: 0; color: #c69c95; letter-spacing: 0; }
.add-waypoint { padding: 10px 12px; display: grid; grid-template-columns: 19px 1fr 98px auto; align-items: center; gap: 7px; }.add-waypoint > span { color: var(--pk-cyan); }.add-waypoint input, .add-waypoint select { min-height: 32px; }.add-waypoint .via-input { text-transform: uppercase; }.add-waypoint .subtle-button { min-height: 32px; }
.row-actions button.insert-selected { color: var(--pk-cyan); background: #26343a; }
.route-insertion-target { margin: 0; padding: 0 12px 10px; color: var(--pk-cyan); font-size: var(--pk-type-caption); }
.vertical-chart { height: 350px; padding: 25px 18px 0 8px; background: radial-gradient(circle at 52% 25%, rgba(25,48,56,.65), transparent 55%); }.vertical-chart svg { width: 100%; height: 280px; }.axis-labels { fill: #65777e; font-size: var(--pk-type-micro); }.profile-area { fill: rgba(66,220,231,.08); }.profile-line { fill: none; stroke: var(--pk-cyan); stroke-width: 2.2; }.profile-waypoints circle { fill: #0d1418; stroke: var(--pk-cyan); stroke-width: 2; }.profile-labels { fill: #9dafb4; font-size: var(--pk-type-caption); }.profile-legend { min-height: 49px; padding: 10px 16px; border-top: 1px solid var(--pk-line-soft); display: flex; align-items: center; justify-content: space-between; gap: 10px; color: var(--pk-muted); font-size: var(--pk-type-micro); }.profile-legend span { white-space: nowrap; }.legend-line { display: inline-block; width: 19px; height: 2px; margin-right: 5px; background: var(--pk-cyan); vertical-align: middle; }

/* OFP */
.ofp-layout { display: grid; grid-template-columns: minmax(620px, 1.55fr) minmax(270px, .55fr); gap: 12px; }.ofp-paper { padding: 18px 20px; background: #f0f2ef; color: #172026; border-color: #c1c7c5; }.ofp-paper .status-chip.draft { color: #8b5c12; border-color: #d8a957; background: #fff3d5; }.ofp-titlebar { padding-bottom: 13px; border-bottom: 2px solid #172026; display: grid; grid-template-columns: 1fr 1.2fr auto; align-items: center; gap: 18px; }.document-logo { display: flex; align-items: center; gap: 8px; font-size: 14px; letter-spacing: .1em; }.document-logo > span { width: 27px; height: 27px; display: grid; place-items: center; border: 1px solid #172026; border-radius: 5px; }.ofp-titlebar > div:nth-child(2) { display: flex; flex-direction: column; text-align: center; font-size: 14px; }.ofp-titlebar small { font-size: var(--pk-type-micro); color: #566066; margin-top: 3px; }.ofp-route-head { padding: 17px 4px; border-bottom: 1px solid #909896; display: grid; grid-template-columns: 1fr 35px 1fr .9fr 1fr; align-items: center; gap: 13px; }.ofp-route-head > div { display: flex; flex-direction: column; gap: 2px; }.ofp-route-head small, .ofp-summary-grid small { color: #657074; font-size: var(--pk-type-micro); letter-spacing: .08em; }.ofp-route-head strong { font-size: 18px; letter-spacing: .07em; }.ofp-route-head span, .ofp-summary-grid span { color: #4c585d; font-size: var(--pk-type-micro); }.ofp-route-head b { color: #188b94; font-size: 22px; }.ofp-summary-grid { padding: 12px 4px; border-bottom: 1px solid #9aa2a0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }.ofp-summary-grid > div { display: flex; flex-direction: column; gap: 3px; }.ofp-summary-grid strong { font-size: var(--pk-type-caption); }.ofp-section { margin-top: 14px; }.ofp-section h3 { margin: 0; padding: 6px 8px; background: #26343a; color: white; font-size: var(--pk-type-micro); letter-spacing: .1em; }.ofp-section table { width: 100%; border-collapse: collapse; font-size: var(--pk-type-micro); }.ofp-section th, .ofp-section td { padding: 5px 8px; border-bottom: 1px solid #cbd0ce; text-align: right; }.ofp-section th:first-child, .ofp-section td:first-child { text-align: left; }.ofp-section th { color: #5b666a; font-size: var(--pk-type-micro); }.ofp-section tr.total { font-weight: 800; background: #dde2df; }.mini-navlog { display: flex; align-items: center; justify-content: space-between; padding: 14px 5px; font-size: var(--pk-type-micro); }.mini-navlog span { min-width: 38px; font-weight: 800; }.mini-navlog i { flex: 1; position: relative; color: #566166; font-size: var(--pk-type-micro); text-align: center; font-style: normal; }.mini-navlog i::after { content: ""; display: block; height: 1px; margin: 3px 5px 0; background: #718084; }.ofp-document-footer { margin-top: 16px; padding-top: 8px; border-top: 1px solid #8f9997; display: flex; justify-content: space-between; color: #5c666a; font-size: var(--pk-type-micro); }.ofp-inspector { display: grid; align-content: start; gap: 12px; }.ring-progress { width: 43px; height: 43px; border: 4px solid #284047; border-right-color: var(--pk-cyan); border-top-color: var(--pk-cyan); border-radius: 50%; display: grid; place-items: center; font-size: var(--pk-type-micro); }.ofp-inspector .check-list { padding: 12px 16px 16px; }.source-card { padding-bottom: 14px; }.source-card > .panel-kicker { margin: 15px 16px 8px; }.source-card dl, .dataset-card dl { margin: 0; padding: 0 16px 12px; }.source-card dl div, .dataset-card dl div { min-height: 31px; border-bottom: 1px solid var(--pk-line-soft); display: grid; grid-template-columns: .8fr 1.2fr; align-items: center; gap: 8px; font-size: var(--pk-type-micro); }.source-card dt, .dataset-card dt { color: var(--pk-muted); }.source-card dd, .dataset-card dd { margin: 0; color: #c1cdd0; text-align: right; }.source-card .subtle-button { margin-left: 16px; }

/* Runway */
.runway-grid { display: grid; grid-template-columns: minmax(380px,.82fr) minmax(380px,1fr); gap: 12px; }.runway-grid .full { grid-column: 1 / -1; }.runway-visual { position: relative; margin: 17px 18px; display: grid; grid-template-columns: 30px 1fr 30px; align-items: center; gap: 8px; }.runway-visual > span { width: 30px; height: 30px; border: 1px solid #44565d; display: grid; place-items: center; font-weight: 800; font-size: var(--pk-type-caption); }.runway-visual > i { height: 36px; padding: 5px; border: 1px solid #394b52; background: repeating-linear-gradient(90deg, #172128 0 22px, #1c292f 22px 44px); }.runway-visual > i b { display: block; height: 100%; border: 1px dashed #8a9a9d; }.runway-visual small { position: absolute; top: 43px; left: 50%; transform: translateX(-50%); color: var(--pk-muted); font-size: var(--pk-type-micro); }.input-matrix { padding: 16px 18px 10px; display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; }.unit-input, .input-with-code { position: relative; }.unit-input input, .input-with-code input { padding-right: 43px; }.unit-input small, .input-with-code small { position: absolute; right: 9px; top: 50%; transform: translateY(-50%); color: #6d7e84; font-size: var(--pk-type-micro); }.toggle-list { padding: 9px 18px 17px; display: grid; grid-template-columns: repeat(2,1fr); gap: 8px; }.toggle-list label { display: flex; align-items: center; gap: 7px; color: #aab8bc; font-size: var(--pk-type-caption); }.toggle-list input { width: 15px; min-height: 15px; accent-color: var(--pk-cyan); }.speed-strip { margin: 17px; display: grid; grid-template-columns: repeat(3,1fr); border: 1px solid var(--pk-line); border-radius: 8px; overflow: hidden; }.speed-strip span { min-height: 70px; border-right: 1px solid var(--pk-line); display: grid; grid-template-columns: 1fr auto; align-content: center; padding: 10px 14px; }.speed-strip span:last-child { border: 0; }.speed-strip small { grid-column: 1/-1; color: var(--pk-cyan); font-size: var(--pk-type-micro); }.speed-strip strong { font-size: 25px; }.speed-strip em { align-self: end; color: var(--pk-muted); font-size: var(--pk-type-micro); font-style: normal; }.result-list { margin: 0; padding: 0 18px; }.result-list div { min-height: 32px; border-bottom: 1px solid var(--pk-line-soft); display: flex; justify-content: space-between; align-items: center; font-size: var(--pk-type-caption); }.result-list dt { color: var(--pk-muted); }.result-list dd { margin: 0; font-weight: 700; }.result-list div.bad dd { color: var(--pk-red); }.runway-bar { padding: 16px 18px 10px; }.runway-bar > div { position: relative; height: 7px; background: #26343a; border-radius: 4px; }.runway-bar span { display: block; height: 100%; background: linear-gradient(90deg,var(--pk-cyan),var(--pk-amber)); border-radius: 4px; }.runway-bar i { position: absolute; top: -4px; width: 2px; height: 15px; background: var(--pk-red); }.runway-bar small { display: flex; justify-content: space-between; margin-top: 7px; color: var(--pk-muted); font-size: var(--pk-type-micro); }.bad-text { color: var(--pk-red); }.recommendation { margin: 5px 18px 18px; padding: 10px 12px; border: 1px solid rgba(255,106,104,.25); border-radius: 7px; background: rgba(255,106,104,.06); display: flex; align-items: center; gap: 12px; }.recommendation strong { color: var(--pk-red); font-size: 17px; }.recommendation span { color: #aebcc0; font-size: var(--pk-type-micro); }.legend-pills { display: flex; gap: 10px; color: var(--pk-muted); font-size: var(--pk-type-micro); }.legend-pills span { display: flex; align-items: center; gap: 4px; }.legend-pills i { width: 13px; height: 2px; }.legend-pills i.cyan { background: var(--pk-cyan); }.legend-pills i.amber { background: var(--pk-amber); }.legend-pills i.red { background: var(--pk-red); }.obstacle-chart { height: 270px; padding: 5px 16px 10px; }.obstacle-chart svg { width: 100%; height: 100%; }.ground { fill: none; stroke: #69787d; stroke-width: 2; }.aeo { fill: none; stroke: var(--pk-cyan); stroke-width: 2; }.oei { fill: none; stroke: var(--pk-amber); stroke-width: 2; stroke-dasharray: 5 3; }.obstacles { stroke: var(--pk-red); fill: var(--pk-red); }.obstacle-chart text { fill: var(--pk-red); font-size: var(--pk-type-micro); }

/* W&B */
.wb-layout { display: grid; grid-template-columns: minmax(540px,1.05fr) minmax(440px,1fr); gap: 12px; }.wb-layout .full { grid-column: 1/-1; }.cabin-panel, .cg-panel { min-height: 550px; }.aircraft-cabin { position: relative; margin: 20px auto; width: min(91%, 690px); min-height: 430px; padding: 36px 46px 25px; border: 1px solid #33474f; border-radius: 48% 48% 23% 23% / 13% 13% 7% 7%; background: linear-gradient(90deg,#0d1418,#162228 50%,#0d1418); }.cockpit { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; margin: 0 10px 40px; }.cabin-aisle { display: grid; grid-template-columns: 1fr 1fr; gap: 13px 90px; }.seat { position: relative; min-height: 54px; border: 1px solid #34484f; border-radius: 9px 9px 15px 15px; background: #121c21; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; cursor: pointer; }.seat.occupied { border-color: rgba(66,220,231,.38); background: linear-gradient(145deg,rgba(66,220,231,.14),rgba(66,220,231,.03)); }.seat.crew { border-color: rgba(112,168,255,.35); }.seat span { font-size: 14px; font-weight: 750; }.seat small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.seat i { position: absolute; right: 4px; bottom: 3px; color: #4d626a; font-size: var(--pk-type-micro); font-style: normal; }.seat.empty span { color: #60737a; font-size: 17px; }.baggage-bays { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 24px; }.baggage-bays button { min-height: 45px; border: 1px dashed #3b4d54; border-radius: 7px; background: #10181c; display: grid; grid-template-columns: 25px 1fr; text-align: left; align-items: center; cursor: pointer; }.baggage-bays button > span { grid-row: 1/3; color: var(--pk-amber); }.baggage-bays strong { font-size: var(--pk-type-micro); }.baggage-bays small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.cg-chart { height: 405px; padding: 10px; }.cg-chart svg { width: 100%; height: 100%; }.envelope { fill: rgba(66,220,231,.07); stroke: #4a7b80; stroke-width: 1.5; }.cg-trajectory { fill: none; stroke: var(--pk-amber); stroke-width: 2.2; }.cg-points circle { fill: #10171b; stroke: var(--pk-lime); stroke-width: 2.2; }.cg-labels { fill: #b0bfc3; font-size: var(--pk-type-micro); }.cg-metrics { min-height: 66px; border-top: 1px solid var(--pk-line-soft); display: grid; grid-template-columns: repeat(3,1fr); }.cg-metrics span { padding: 11px 14px; border-right: 1px solid var(--pk-line-soft); display: flex; flex-direction: column; gap: 4px; }.cg-metrics span:last-child { border: 0; }.cg-metrics small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.cg-metrics strong { font-size: var(--pk-type-caption); }.cg-metrics em { color: var(--pk-lime); font-size: var(--pk-type-micro); font-style: normal; }.fuel-flow { padding: 22px 28px; display: grid; grid-template-columns: 1fr 45px 1fr 45px 1fr 45px 1fr 45px 1fr; align-items: center; }.fuel-flow > div { min-height: 75px; border: 1px solid #304149; border-radius: 8px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; }.fuel-flow > div.reserve { border-color: rgba(155,232,111,.4); background: rgba(155,232,111,.04); }.fuel-flow > i { position: relative; color: var(--pk-muted); text-align: center; font-size: var(--pk-type-micro); font-style: normal; }.fuel-flow > i::after { content:""; display:block; height:1px; margin-top:4px; background:#405158; }.fuel-flow small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.fuel-flow strong { font-size: 14px; }.fuel-flow span { color: #71848a; font-size: var(--pk-type-micro); }

.wb-load-editor { padding: 12px 16px 0; display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; }
.wb-load-editor input { min-height: 32px; }
.seat-slot { min-width: 0; display: grid; gap: 4px; }
.seat-slot .seat { width: 100%; }
.cabin-aisle .seat-slot:last-child { grid-column: 1/-1; justify-self: center; width: calc(50% - 45px); }
.seat-mass { position: relative; display: block; }
.seat-mass input { min-height: 26px; padding: 0 25px 0 7px; text-align: right; font-size: var(--pk-type-caption); }
.seat-mass > small { position: absolute; right: 7px; top: 50%; transform: translateY(-50%); color: var(--pk-muted); font-size: var(--pk-type-micro); }
.fuel-input-row { padding: 14px 20px 0; border-top: 1px solid var(--pk-line-soft); display: grid; grid-template-columns: minmax(150px,.7fr) minmax(270px,1.4fr) minmax(160px,.8fr); align-items: end; gap: 12px; }
.density-control > span { display: block; margin-bottom: 5px; color: var(--pk-muted); font-size: var(--pk-type-micro); font-weight: 650; letter-spacing: .08em; }
.density-buttons { display: grid; grid-template-columns: repeat(5,1fr); gap: 5px; }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }
.passenger-editor { margin: 4px 0 12px; padding: 11px; border: 1px solid var(--pk-line); border-radius: 8px; background: rgba(17,25,30,.55); }
.passenger-editor-head { margin-bottom: 9px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.passenger-editor-head > span { display: flex; flex-direction: column; gap: 3px; }
.passenger-editor-head strong, .passenger-editor-head b { font-size: var(--pk-type-caption); }
.passenger-editor-head small { color: var(--pk-muted); font-size: var(--pk-type-micro); }
.passenger-editor-head b { color: var(--pk-cyan); white-space: nowrap; }
.passenger-draft-grid { display: grid; grid-template-columns: repeat(9,1fr); gap: 6px; }
.passenger-draft { min-width: 0; border: 1px solid #2e3e45; border-radius: 7px; background: #0e161a; overflow: hidden; }
.passenger-draft.occupied { border-color: rgba(66,220,231,.38); background: rgba(66,220,231,.04); }
.passenger-draft > button { width: 100%; min-height: 47px; padding: 5px 3px; border: 0; background: transparent; color: var(--pk-muted); display: grid; grid-template-columns: 14px 1fr; align-items: center; text-align: left; cursor: pointer; }
.passenger-draft > button span { grid-row: 1/3; color: var(--pk-cyan); text-align: center; }
.passenger-draft > button strong { color: #c5d1d4; font-size: var(--pk-type-micro); }
.passenger-draft > button small { color: #60737a; font-size: var(--pk-type-micro); }
.passenger-draft > label { margin: 0 4px 5px; display: grid; grid-template-columns: 1fr auto; align-items: center; }
.passenger-draft > label input { width: 100%; min-height: 27px; padding-inline: 5px; border-radius: 4px; }
.passenger-draft > label small { padding-left: 3px; color: var(--pk-muted); font-size: var(--pk-type-micro); }

/* Folder */
.folder-summary { min-height: 64px; margin-bottom: 14px; padding: 12px 17px; border: 1px solid var(--pk-line); border-radius: 9px; background: #10171b; display: grid; grid-template-columns: auto 240px; gap: 20px; align-items: center; }.folder-summary > span { display: grid; grid-template-columns: 12px 1fr; align-items: center; gap: 5px 10px; }.folder-summary > span i { grid-row: 1/3; }.folder-summary strong { font-size: 14px; }.folder-summary small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.folder-progress, .storage-bar { height: 5px; border-radius: 4px; background: #26343a; overflow: hidden; }.folder-progress i, .storage-bar span { display: block; height: 100%; background: linear-gradient(90deg,var(--pk-cyan),var(--pk-lime)); }.document-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 10px; }.document-card { min-height: 117px; padding: 14px; border: 1px solid var(--pk-line); border-radius: 9px; background: linear-gradient(145deg,#11191e,#0d1418); display: grid; grid-template-columns: 42px 1fr auto; gap: 12px; }.doc-icon { width: 42px; height: 52px; border: 1px solid; border-radius: 6px; display: grid; place-items: center; font-size: 19px; }.doc-icon.cyan { color: var(--pk-cyan); border-color: rgba(66,220,231,.3); background: rgba(66,220,231,.05); }.doc-icon.lime { color: var(--pk-lime); border-color: rgba(155,232,111,.3); background: rgba(155,232,111,.05); }.doc-icon.amber { color: var(--pk-amber); border-color: rgba(255,182,72,.3); background: rgba(255,182,72,.05); }.doc-icon.blue { color: var(--pk-blue); border-color: rgba(112,168,255,.3); background: rgba(112,168,255,.05); }.doc-icon.red { color: var(--pk-red); border-color: rgba(255,106,104,.3); background: rgba(255,106,104,.05); }.doc-main { min-width: 0; }.doc-main h2 { margin: 5px 0; font-size: 14px; }.doc-main p { margin: 0 0 6px; color: #8b9ba0; font-size: var(--pk-type-micro); }.doc-main > small { color: #65767c; font-size: var(--pk-type-micro); }.doc-state { display: flex; align-items: flex-start; gap: 5px; }.doc-state .icon-button { width: 27px; height: 27px; border: 0; background: transparent; }.signatures-panel { margin-top: 12px; }.signature-flow { padding: 20px 24px; display: grid; grid-template-columns: 1fr 30px 1fr 30px 1fr; align-items: center; }.signature-flow > i { color: #50636a; text-align: center; font-style: normal; }.signature-slot { min-height: 72px; padding: 11px; border: 1px dashed #384b52; border-radius: 8px; display: grid; grid-template-columns: 29px 1fr; align-content: center; gap: 4px 8px; }.signature-slot > span { grid-row: 1/3; width: 27px; height: 27px; border-radius: 50%; display: grid; place-items: center; background: #26353b; }.signature-slot strong { font-size: var(--pk-type-caption); }.signature-slot small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.signature-slot.ready { border-style: solid; border-color: rgba(155,232,111,.3); }.signature-slot.ready > span { color: var(--pk-lime); background: rgba(155,232,111,.1); }.signature-slot.current { border-style: solid; border-color: rgba(66,220,231,.35); }.signature-slot.current > span { color: var(--pk-cyan); background: rgba(66,220,231,.1); }.signature-slot.disabled { opacity: .55; }.signature-button { margin: 0 24px 19px; width: calc(100% - 48px); }
.reference-import-panel { margin-bottom: 14px; padding: 14px 16px; }.reference-import-panel > header { padding: 0 0 11px; border-bottom: 1px solid var(--pk-line-soft); }.reference-rights-confirmation { margin-top: 12px; display: grid; grid-template-columns: 18px 1fr; gap: 9px; align-items: start; color: var(--pk-text); font-size: var(--pk-type-caption); line-height: 1.45; }.reference-rights-confirmation input { margin: 2px 0 0; accent-color: var(--pk-cyan); }.reference-source-note, .reference-import-message { margin: 10px 0 0; color: var(--pk-muted); font-size: var(--pk-type-micro); }.reference-import-message { color: var(--pk-cyan); }.reference-document-list { margin-top: 12px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }.reference-document { min-height: 66px; padding: 10px 12px; border: 1px solid var(--pk-line); border-radius: 7px; background: #0c1418; color: var(--pk-text); text-align: left; display: grid; gap: 6px; cursor: pointer; }.reference-document:hover { border-color: rgba(66,220,231,.55); }.reference-document > span { min-width: 0; display: grid; gap: 2px; }.reference-document strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--pk-type-caption); }.reference-document small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.reference-clear { margin-top: 10px; }

/* ICAO FPL manual export */
.fpl-workspace { display: grid; gap: 12px; }
.fpl-workspace > .workspace-toolbar { margin-bottom: 6px; }
.fpl-hero { border-color: rgba(255,182,72,.28); }
.fpl-warning { margin: 15px 16px 10px; padding: 12px 14px; border: 1px solid rgba(255,182,72,.3); border-radius: 8px; background: rgba(255,182,72,.07); display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 14px; }
.fpl-warning strong { color: var(--pk-amber); font-size: var(--pk-type-caption); letter-spacing: .08em; }
.fpl-warning span { color: #c0cccf; font-size: var(--pk-type-caption); line-height: 1.5; }
.fpl-source-strip { margin: 0; padding: 0 16px 15px; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.fpl-source-strip > div { min-width: 0; padding: 9px 10px; border: 1px solid var(--pk-line-soft); border-radius: 6px; background: rgba(4,9,12,.25); display: grid; gap: 4px; }
.fpl-source-strip dt { color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .08em; }
.fpl-source-strip dd { margin: 0; overflow-wrap: anywhere; color: #cdd8da; font-size: var(--pk-type-micro); font-family: ui-monospace, "Cascadia Mono", monospace; }
.fpl-editor > .form-grid { padding-inline: 16px; }
.fpl-editor > .form-grid:first-of-type { padding-top: 15px; }
.fpl-speed-changes { margin: 0 16px 12px; padding: 12px; border: 1px solid var(--pk-line-soft); border-radius: 7px; background: #0d1519; }
.fpl-speed-changes > div:first-child { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.fpl-speed-changes small { color: var(--pk-muted); }
.fpl-speed-change-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(135px,1fr)); gap: 8px; }
.fpl-route-field { margin: 0 16px 10px; display: block; }
.fpl-route-field textarea { width: 100%; min-height: 70px; resize: vertical; border: 1px solid #2b3a41; border-radius: 6px; background: #0d1418; color: #d7e2e4; padding: 9px 10px; font-size: 14px; line-height: 1.45; outline: 0; }
.fpl-route-field textarea:focus { border-color: var(--pk-cyan); box-shadow: 0 0 0 2px rgba(66,220,231,.08); }
.fpl-output { min-width: 0; }
.fpl-findings { margin: 0; padding: 12px 16px; list-style: none; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.fpl-findings li { min-width: 0; min-height: 54px; padding: 9px 10px; border: 1px solid var(--pk-line-soft); border-left-width: 3px; border-radius: 6px; display: grid; gap: 5px; }
.fpl-findings li.pass { border-left-color: var(--pk-lime); }.fpl-findings li.explain { border-left-color: var(--pk-cyan); }.fpl-findings li.block { border-left-color: var(--pk-red); }
.fpl-findings strong { overflow-wrap: anywhere; font-size: var(--pk-type-micro); }.fpl-findings span { color: #aebbc0; font-size: var(--pk-type-micro); line-height: 1.45; }
.fpl-message { margin: 0 16px 14px; padding: 14px; overflow-x: auto; border: 1px solid #385059; border-radius: 7px; background: #080d10; color: #d9f4f5; font: var(--pk-type-caption)/1.55 ui-monospace, "Cascadia Mono", monospace; white-space: pre-wrap; overflow-wrap: anywhere; }
.fpl-export-actions { padding: 0 16px 16px; display: grid; grid-template-columns: minmax(190px,1fr) auto auto; align-items: end; gap: 8px; }
.fpl-export-actions label { min-width: 0; }
.danger-button { min-height: 38px; padding: 0 14px; border: 1px solid rgba(255,106,104,.6); border-radius: 7px; background: rgba(255,106,104,.1); color: #ff8c8a; cursor: pointer; font-size: 14px; font-weight: 650; }
.danger-button:hover { background: rgba(255,106,104,.18); }
.fpl-action-error { margin: 0 16px 16px; padding: 9px 11px; border-left: 3px solid var(--pk-red); background: rgba(255,106,104,.07); color: #ffaaa8; font-size: var(--pk-type-caption); }
.fpl-response > p { margin: 0; padding: 0 16px 16px; overflow-wrap: anywhere; color: #b9c6c9; font-size: var(--pk-type-caption); }
.fpl-response-notice { margin: 0 16px 14px; padding: 12px 14px; border: 1px solid rgba(66,220,231,.28); border-radius: 8px; background: rgba(66,220,231,.055); display: grid; gap: 6px; }
.fpl-response-notice strong { color: var(--pk-cyan); font-size: var(--pk-type-caption); letter-spacing: .04em; }
.fpl-response-notice span { color: #bbc9cc; font-size: var(--pk-type-caption); line-height: 1.55; }
.fpl-response-editor { padding: 0 16px 14px; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: end; gap: 10px; }
.fpl-response-editor label { min-width: 0; display: grid; gap: 6px; }
.fpl-response-editor label > span { color: #899a9f; font-size: var(--pk-type-micro); letter-spacing: .05em; }
.fpl-response-editor textarea { width: 100%; min-height: 86px; resize: vertical; padding: 10px 11px; border: 1px solid #34484f; border-radius: 7px; background: #090f12; color: #d9f4f5; font: var(--pk-type-caption)/1.5 ui-monospace, "Cascadia Mono", monospace; outline: 0; }
.fpl-response-editor textarea:focus { border-color: var(--pk-cyan); box-shadow: 0 0 0 2px rgba(66,220,231,.08); }
.fpl-response-editor small { color: var(--pk-muted); font-size: var(--pk-type-micro); }
.fpl-response-findings { padding-top: 0; }
.fpl-expected-response > span { display: block; margin: 0 16px 7px; color: var(--pk-amber); font-size: var(--pk-type-micro); letter-spacing: .04em; }
.fpl-ack-scope { margin: 0 16px 14px !important; padding: 10px 12px !important; border-left: 3px solid var(--pk-amber); background: rgba(255,182,72,.07); color: #d8c49f !important; line-height: 1.55; }
.fpl-manual-fallback { margin: 0 16px 16px; border: 1px solid var(--pk-line-soft); border-radius: 7px; background: rgba(4,9,12,.25); }
.fpl-manual-fallback summary { padding: 11px 12px; color: #91a4a9; font-size: var(--pk-type-caption); cursor: pointer; }
.fpl-manual-fallback > p { margin: 0; padding: 0 12px 11px; color: var(--pk-muted); font-size: var(--pk-type-micro); line-height: 1.5; }
.fpl-manual-fallback .fpl-export-actions { padding: 0 12px 12px; grid-template-columns: auto auto; justify-content: start; }
.fpl-formal-response-state { margin: -6px 16px 16px !important; padding: 9px 11px !important; border-left: 3px solid var(--pk-lime); background: rgba(155,232,111,.06); color: #b9d9a8 !important; }

/* Updates / Preferences */
.update-summary { min-height: 92px; margin: 22px 0 13px; padding: 16px 18px; display: flex; align-items: center; justify-content: space-between; }.update-summary > div { display: flex; align-items: center; gap: 13px; }.update-summary > div > span:last-child { display: flex; flex-direction: column; gap: 4px; }.update-summary strong { font-size: 14px; }.update-summary small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.update-shield { width: 42px; height: 42px; border-radius: 11px; display: grid; place-items: center; color: var(--pk-bg); background: var(--pk-lime); font-size: 20px; }.update-summary dl { margin: 0; display: grid; grid-template-columns: repeat(3,auto); gap: 28px; }.update-summary dl div { display: flex; flex-direction: column; gap: 4px; }.update-summary dt { color: var(--pk-muted); font-size: var(--pk-type-micro); letter-spacing: .08em; text-transform: uppercase; }.update-summary dd { margin: 0; font-size: 14px; font-weight: 700; }.dataset-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; }.dataset-card { min-height: 245px; padding-bottom: 13px; }.dataset-card > header { min-height: 52px; border: 0; }.dataset-icon { font-size: 24px; color: var(--pk-cyan); }.dataset-card > h2 { margin: 5px 16px 6px; font-size: 14px; }.dataset-card > p { min-height: 29px; margin: 0 16px 10px; color: var(--pk-muted); font-size: var(--pk-type-micro); line-height: 1.55; }.dataset-actions { padding: 0 16px; justify-content: space-between; }.provenance-panel { margin-top: 12px; }.provenance-flow { padding: 21px 22px; display: grid; grid-template-columns: 1fr 30px 1fr 30px 1fr 30px 1fr; align-items: center; }.provenance-flow > span { display: grid; grid-template-columns: 28px 1fr; gap: 4px 8px; }.provenance-flow i { grid-row: 1/3; width: 28px; height: 28px; border: 1px solid #3b5158; border-radius: 50%; display: grid; place-items: center; color: var(--pk-cyan); font-style: normal; font-size: var(--pk-type-caption); }.provenance-flow strong { font-size: var(--pk-type-micro); }.provenance-flow small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.provenance-flow > b { color: #4b6067; text-align: center; }
.settings-layout { margin-top: 22px; display: grid; grid-template-columns: 190px minmax(0,820px); gap: 18px; }.settings-nav { display: grid; align-content: start; gap: 3px; }.settings-nav button { min-height: 40px; padding: 0 12px; border: 0; border-radius: 7px; background: transparent; color: var(--pk-muted); text-align: left; font-size: var(--pk-type-caption); cursor: pointer; }.settings-nav button.active { color: var(--pk-cyan); background: rgba(66,220,231,.08); }.settings-content { display: grid; gap: 11px; }.settings-card .settings-rows { padding: 3px 16px; }.settings-rows > label { min-height: 61px; border-bottom: 1px solid var(--pk-line-soft); display: grid; grid-template-columns: 1fr 190px; align-items: center; gap: 18px; }.settings-rows > label:last-child { border: 0; }.settings-rows label > span:first-child { margin: 0; display: flex; flex-direction: column; gap: 4px; }.settings-rows strong { color: #d6e0e2; font-size: var(--pk-type-caption); }.settings-rows small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.toggle { justify-self: end; width: 38px; height: 21px; padding: 2px; border-radius: 12px; background: #2d3b41; }.toggle i { display: block; width: 17px; height: 17px; border-radius: 50%; background: #809095; }.toggle.on { background: var(--pk-cyan-deep); }.toggle.on i { margin-left: 17px; background: #dffbfc; }.device-row { padding: 16px; display: grid; grid-template-columns: 42px 1fr auto; align-items: center; gap: 12px; }.device-icon { width: 42px; height: 42px; border: 1px solid #39525a; border-radius: 8px; display: grid; place-items: center; color: var(--pk-cyan); }.device-row > span:nth-child(2) { display: flex; flex-direction: column; gap: 4px; }.device-row strong { font-size: var(--pk-type-caption); }.device-row small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.settings-card .storage-bar { margin: 0 16px 7px; }.storage-label { display: block; padding: 0 16px 14px; color: var(--pk-muted); text-align: right; font-size: var(--pk-type-micro); }
.mass-standard-section { padding: 15px 16px; border-bottom: 1px solid var(--pk-line-soft); }
.mass-standard-heading > span { display: flex; flex-direction: column; gap: 4px; }.mass-standard-heading strong { font-size: var(--pk-type-caption); }.mass-standard-heading small { color: var(--pk-muted); font-size: var(--pk-type-micro); }
.settings-radio-group { margin-top: 12px; display: grid; gap: 7px; }.settings-radio { width: 100%; min-height: 52px; padding: 9px 11px; border: 1px solid #2d3e45; border-radius: 7px; background: #0e161a; color: var(--pk-text); display: grid; grid-template-columns: 15px 1fr auto; align-items: center; gap: 10px; text-align: left; cursor: pointer; }.settings-radio:hover { border-color: #3b535b; }.settings-radio.selected { border-color: var(--pk-cyan); background: rgba(66,220,231,.055); }.settings-radio > i { width: 14px; height: 14px; border: 1px solid #53676e; border-radius: 50%; }.settings-radio.selected > i { border: 4px solid var(--pk-cyan); }.settings-radio > span { display: flex; flex-direction: column; gap: 3px; }.settings-radio strong { font-size: var(--pk-type-caption); }.settings-radio small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.settings-radio b { color: var(--pk-cyan); font-size: 14px; }
.pilot-standard-row { display: grid; grid-template-columns: 1fr 115px; align-items: center; gap: 10px 16px; }.pilot-standard-row > label { display: grid; grid-template-columns: 18px 1fr; align-items: center; gap: 9px; }.pilot-standard-row > label input { width: 16px; height: 16px; accent-color: var(--pk-cyan); }.pilot-standard-row > label span { display: flex; flex-direction: column; gap: 4px; }.pilot-standard-row strong { font-size: var(--pk-type-caption); }.pilot-standard-row small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.settings-source-note { grid-column: 1 / -1; margin: 8px 0 0; color: var(--pk-muted); font-size: var(--pk-type-micro); line-height: 1.5; }.settings-source-note a { color: var(--pk-cyan); text-decoration: none; }.settings-source-note a:hover { text-decoration: underline; }.settings-policy-warning { margin: 0; padding: 11px 16px 14px; color: var(--pk-amber); font-size: var(--pk-type-micro); line-height: 1.5; }

/* New trip modal */
.modal-scrim { position: fixed; inset: 0; z-index: 100; padding: 28px; background: rgba(1,4,6,.76); backdrop-filter: blur(7px); display: grid; place-items: center; overflow: auto; }.modal-panel { width: min(980px, 100%); max-height: calc(100vh - 56px); border: 1px solid #30434a; border-radius: 14px; background: #0d1418; box-shadow: 0 32px 100px rgba(0,0,0,.7); overflow: hidden; display: flex; flex-direction: column; }.modal-header { min-height: 70px; padding: 14px 20px; border-bottom: 1px solid var(--pk-line); display: flex; align-items: center; justify-content: space-between; }.modal-header h2 { margin: 3px 0 0; font-size: 20px; }.modal-body { padding: 0 20px 20px; overflow: auto; }.step-rail { max-width: 470px; margin: 19px auto 7px; display: grid; grid-template-columns: 28px 1fr 28px 1fr 28px; align-items: center; row-gap: 6px; }.step-rail > span { width: 27px; height: 27px; border: 1px solid #3b4d54; border-radius: 50%; display: grid; place-items: center; color: #6c7d83; font-size: var(--pk-type-caption); }.step-rail > span.done { border-color: var(--pk-lime); color: var(--pk-bg); background: var(--pk-lime); }.step-rail > span.active { border-color: var(--pk-cyan); color: var(--pk-cyan); background: rgba(66,220,231,.1); }.step-rail > i { height: 1px; background: #33454c; }.step-rail > small { grid-row: 2; color: var(--pk-muted); text-align: center; font-size: var(--pk-type-micro); }.step-rail > small:nth-of-type(1) { grid-column: 1; }.step-rail > small:nth-of-type(2) { grid-column: 3; }.step-rail > small:nth-of-type(3) { grid-column: 5; }.form-section { padding: 17px 0; border-bottom: 1px solid var(--pk-line); }.form-section:last-child { border: 0; }.form-section h3 { margin: 0 0 13px; font-size: 14px; }.form-grid { display: grid; gap: 10px; margin-bottom: 10px; }.form-grid.three { grid-template-columns: repeat(3,1fr); }.form-grid.four { grid-template-columns: repeat(4,1fr); }.form-grid.five { grid-template-columns: repeat(5,1fr); }.choice-grid.modes { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; margin-bottom: 13px; }.choice-card { min-height: 64px; padding: 10px 10px 10px 37px; position: relative; border: 1px solid var(--pk-line); border-radius: 8px; background: #10181c; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; text-align: left; cursor: pointer; }.choice-card:hover { border-color: #3a5159; }.choice-card.selected { border-color: var(--pk-cyan); background: rgba(66,220,231,.06); }.choice-card .radio { position: absolute; left: 12px; top: 16px; width: 14px; height: 14px; border: 1px solid #4f646b; border-radius: 50%; }.choice-card.selected .radio { border: 4px solid var(--pk-cyan); }.choice-card strong { font-size: var(--pk-type-caption); }.choice-card small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.density-row { min-height: 50px; display: flex; align-items: center; gap: 7px; }.density-row > div:first-child { flex: 1; display: flex; flex-direction: column; gap: 3px; }.density-row > div:first-child > span { color: #bdc9cc; font-size: var(--pk-type-caption); }.density-row > div:first-child > small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.density-chip { min-width: 44px; min-height: 31px; border: 1px solid #304149; border-radius: 6px; background: #11191e; color: #8d9ca1; font-size: var(--pk-type-caption); cursor: pointer; }.density-chip.selected { border-color: var(--pk-cyan); color: var(--pk-cyan); background: rgba(66,220,231,.07); }.density-custom { width: 105px; }.density-custom input { min-height: 31px; }.calculated-strip { min-height: 59px; margin-top: 12px; padding: 10px 13px; border: 1px solid var(--pk-line); border-radius: 7px; background: #11191e; display: flex; align-items: center; gap: 28px; }.calculated-strip > span:not(.warning-text) { display: flex; flex-direction: column; gap: 4px; }.calculated-strip small { color: var(--pk-muted); font-size: var(--pk-type-micro); }.calculated-strip strong { font-size: var(--pk-type-caption); }.calculated-strip .warning-text { margin-left: auto; font-size: var(--pk-type-micro); }.modal-footer { min-height: 67px; padding: 12px 20px; border-top: 1px solid var(--pk-line); background: #0b1114; display: flex; justify-content: flex-end; align-items: center; gap: 8px; }.modal-validation { margin-right: auto; max-width: 390px; color: var(--pk-red); font-size: var(--pk-type-micro); line-height: 1.35; }
.form-grid.two { grid-template-columns: repeat(2,minmax(0,1fr)); }.dispatch-fields { max-width: 66%; }
.airport-entry { position: relative; }.airport-entry .airport-suggestions { position: absolute; z-index: 25; top: calc(100% + 4px); left: 0; right: 0; max-height: 240px; padding: 5px; border: 1px solid #3a5159; border-radius: 8px; background: #0b1216; box-shadow: 0 14px 38px rgba(0,0,0,.55); overflow-y: auto; }.airport-suggestions button { width: 100%; min-height: 42px; padding: 7px 9px; border: 0; border-radius: 5px; background: transparent; color: var(--pk-text); display: flex; flex-direction: column; align-items: flex-start; gap: 3px; text-align: left; cursor: pointer; }.airport-suggestions button:hover { background: rgba(66,220,231,.09); }.airport-suggestions strong { color: var(--pk-cyan); font-size: var(--pk-type-caption); letter-spacing: .05em; }.airport-suggestions span { color: #aab9bd; font-size: var(--pk-type-micro); }.input-with-code.airport-entry > small { pointer-events: none; max-width: 48%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.passenger-count-editor { display: grid; gap: 7px; }.passenger-count-control { display: grid; grid-template-columns: 36px 44px minmax(150px,1fr) 36px; align-items: center; gap: 10px; }.passenger-count-control button { width: 36px; height: 36px; border: 1px solid #365059; border-radius: 50%; background: #101b20; color: var(--pk-cyan); font-size: 20px; cursor: pointer; }.passenger-count-control button:disabled { opacity: .35; cursor: default; }.passenger-count-control output { color: #e4f5f6; font-size: 24px; font-weight: 750; text-align: center; }.passenger-count-control input[type="range"] { min-height: 30px; padding: 0; accent-color: var(--pk-cyan); }.passenger-standard-note { color: var(--pk-muted); font-size: var(--pk-type-micro); }

/* Shared legibility and density system. Keep operational data readable without
   making controls taller than the information they contain. */
.runtime-banner,
.source-footer,
.page-note p,
.trip-list-head,
.metric-card > span,
.metric-card .trend,
.route-summary-inline small,
.procedure-controls header small,
.procedure-unavailable,
.procedure-controls > footer,
.expanded-route-preview,
.profile-legend,
.passenger-standard-note { font-size: var(--pk-type-caption); }

.runtime-banner strong,
.alert-banner p,
.trip-row small,
.trip-row strong,
.procedure-controls header span,
.waypoint-table,
.waypoint-table td small,
.map-stat small { font-size: var(--pk-type-supporting); }

.segmented button,
.search-field input,
.trip-tabs button,
.status-chip { font-size: var(--pk-type-supporting); }

.panel:not(.ofp-paper) small { font-size: var(--pk-type-caption); line-height: 1.35; }
.panel:not(.ofp-paper) p { font-size: var(--pk-type-supporting); line-height: 1.45; }
.settings-rows strong,
.settings-radio strong,
.pilot-standard-row strong,
.device-row strong,
.crew-timeline-card header strong,
.crew-metrics dd,
.crew-finding strong,
.history-row strong { font-size: var(--pk-type-supporting); }
.settings-rows small,
.settings-radio small,
.pilot-standard-row small,
.device-row small,
.settings-source-note,
.settings-policy-warning,
.crew-form label,
.crew-timeline-card label,
.crew-metrics dt,
.crew-finding p,
.crew-finding small,
.history-entry-form label,
.history-row small { font-size: var(--pk-type-caption); }
.crew-form input,
.crew-form select,
.crew-timeline-card input,
.crew-timeline-card select,
.history-entry-form input,
.history-entry-form select { height: var(--pk-control-height); font-size: 14px; }

/* New-trip dialog: larger type, tighter vertical rhythm, even three-column rows. */
.modal-scrim { padding: 18px; }
.modal-panel { width: min(1120px,100%); max-height: calc(100vh - 36px); }
.modal-header { min-height: 62px; padding: 10px 20px; }
.modal-header h2 { margin-top: 2px; font-size: 22px; line-height: 1.15; }
.modal-header .icon-button.close { flex: 0 0 36px; width: 36px; height: 36px; }
.modal-body { padding: 0 20px 14px; }
.step-rail { margin: 14px auto 4px; row-gap: 5px; }
.step-rail > span { width: 28px; height: 28px; font-size: var(--pk-type-supporting); }
.step-rail > small { font-size: var(--pk-type-micro); }
.form-section { padding: 13px 0; }
.form-section h3 { margin-bottom: 10px; font-size: 14px; line-height: 1.25; }
.form-grid { gap: 9px 10px; margin-bottom: 8px; }
.form-grid:last-child { margin-bottom: 0; }
.choice-grid.modes { gap: 10px; margin-bottom: 10px; }
.choice-card { min-height: 56px; padding: 8px 12px 8px 39px; gap: 3px; justify-content: center; }
.choice-card .radio { top: 50%; left: 13px; transform: translateY(-50%); width: 15px; height: 15px; }
.choice-card strong { font-size: 14px; line-height: 1.2; }
.choice-card small { font-size: var(--pk-type-micro); line-height: 1.2; }
.airport-entry .airport-suggestions { max-height: 260px; padding: 4px; }
.airport-entry:not(:focus-within) .airport-suggestions { display: none; }
.airport-suggestions button { min-height: 42px; padding: 6px 10px; gap: 2px; }
.airport-suggestions strong { font-size: 14px; }
.airport-suggestions span { font-size: var(--pk-type-caption); }
.input-with-code > small,
.unit-input > small { font-size: var(--pk-type-micro); }
.passenger-editor { margin: 2px 0 9px; padding: 9px 11px; }
.passenger-editor-head { margin-bottom: 7px; }
.passenger-editor-head strong,
.passenger-editor-head b { font-size: 14px; }
.passenger-editor-head small { font-size: var(--pk-type-caption); line-height: 1.35; }
.passenger-count-control { grid-template-columns: 34px 42px minmax(150px,1fr) 34px; gap: 9px; }
.passenger-count-control button { width: 34px; height: 34px; }
.passenger-count-control output { font-size: 22px; }
.passenger-standard-note { line-height: 1.35; }
.density-row { min-height: 43px; gap: 6px; }
.density-row > div:first-child > span { font-size: 14px; }
.density-row > div:first-child > small { font-size: var(--pk-type-caption); }
.density-chip { min-height: 30px; font-size: 14px; }
.density-custom input { min-height: 30px; }
.calculated-strip { min-height: 52px; margin-top: 9px; padding: 8px 12px; gap: 24px; }
.calculated-strip small { font-size: var(--pk-type-caption); }
.calculated-strip strong { font-size: 14px; }
.calculated-strip .warning-text { font-size: var(--pk-type-caption); line-height: 1.35; }
.modal-footer { min-height: 58px; padding: 10px 20px; }
.modal-validation { max-width: 520px; font-size: var(--pk-type-caption); line-height: 1.4; }

@media (max-width: 1180px) {
    .rail { width: 76px; padding-inline: 9px; }.shell { margin-left: 76px; }.brand { justify-content: center; padding-inline: 0; }.brand-copy, .rail-item > span:not(.rail-icon), .rail-count, .profile-button > span:last-child, .sync-line > span:last-child { display: none; }.rail-item { grid-template-columns: 1fr; padding: 0; }.rail-item.active::before { left: -10px; }.profile-button { justify-content: center; }.airport-pair { min-width: 390px; }.planning-grid { grid-template-columns: 1fr; }.route-editor, .vertical-panel { min-height: auto; }.vertical-chart { height: 310px; }.ofp-layout { grid-template-columns: 1fr; }.ofp-inspector { grid-template-columns: 1fr 1fr; }.wb-layout { grid-template-columns: 1fr; }.dataset-grid { grid-template-columns: repeat(2,1fr); }
}

@media (max-width: 860px) {
    .rail { position: fixed; inset: auto 0 0; width: auto; height: 64px; padding: 5px 8px max(5px, env(safe-area-inset-bottom)); border: 0; border-top: 1px solid var(--pk-line); flex-direction: row; }.brand, .rail-footer { display: none; }.rail-nav { width: 100%; margin: 0; display: grid; grid-template-columns: repeat(4,1fr); gap: 3px; }.rail-item { min-height: 50px; grid-template-columns: 1fr; place-items: center; gap: 0; font-size: var(--pk-type-micro); }.rail-item > span:nth-child(2) { display: block; max-width: 80px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.rail-item.active::before { left: 22%; right: 22%; top: -6px; width: auto; height: 2px; }.rail-icon { font-size: 18px; }.shell { margin: 0 0 64px; }.appbar { height: 54px; padding: 0 14px; }.mobile-brand { display: flex; align-items: center; gap: 8px; font-size: 14px; }.mobile-brand .brand-mark.small { width: 26px; height: 26px; border-radius: 6px; }.breadcrumb { display: none; }.airac-chip { display: none; }.trip-heading { padding: 12px 14px; align-items: flex-start; }.airport-pair { min-width: 0; flex: 1; grid-template-columns: max-content 65px max-content; gap: 8px; }.airport-pair strong { font-size: 18px; }.airport-pair > div:not(.route-arrow) span { display: none; }.trip-meta { display: none; }.trip-tabs { padding: 0 14px; gap: 22px; }.workspace-view, .page-view { padding: 18px 14px 28px; }.page-view { padding-top: 24px; }.workspace-toolbar, .page-heading { align-items: flex-start; }.metric-grid.four { grid-template-columns: repeat(2,1fr); }.dashboard-grid { grid-template-columns: 1fr; }.dashboard-grid .wide { grid-row: auto; }.route-overview { min-height: 410px; }.route-controls { grid-template-columns: repeat(3,1fr); }.route-summary-inline { grid-column: 1/-1; border: 0; border-top: 1px solid var(--pk-line); padding-top: 8px; }.planning-grid { grid-template-columns: minmax(0,1fr); }.runway-grid { grid-template-columns: 1fr; }.runway-grid .full { grid-column: auto; }.document-grid, .reference-document-list { grid-template-columns: 1fr; }.dataset-grid { grid-template-columns: repeat(2,1fr); }.settings-layout { grid-template-columns: 1fr; }.settings-nav { display: flex; overflow-x: auto; }.settings-nav button { flex: 0 0 auto; padding-inline: 15px; }.trip-list-head { display: none; }.trip-row { grid-template-columns: 1.3fr .8fr .8fr 25px; min-height: 93px; }.trip-row > span:nth-child(4), .trip-row > span:nth-child(5), .trip-row > span:nth-child(6) { display: none; }.update-summary { align-items: flex-start; }.update-summary dl { gap: 12px; }.provenance-flow { grid-template-columns: 1fr 20px 1fr; row-gap: 14px; }.provenance-flow > b:nth-of-type(2) { display: none; }.provenance-flow > span:nth-of-type(4) { grid-column: 3; }.modal-scrim { padding: 0; place-items: stretch; }.modal-panel { width: 100%; max-height: 100vh; border-radius: 0; border: 0; }.form-grid.four, .form-grid.five { grid-template-columns: repeat(2,1fr); }.passenger-draft-grid { grid-template-columns: repeat(5,1fr); }.density-row { flex-wrap: wrap; }.density-row > div:first-child { flex-basis: 100%; }.calculated-strip { flex-wrap: wrap; gap: 13px 24px; }.calculated-strip .warning-text { width: 100%; margin: 0; }.signature-flow { grid-template-columns: 1fr; gap: 8px; }.signature-flow > i { transform: rotate(90deg); }.ofp-titlebar { grid-template-columns: 1fr 1fr; }.ofp-titlebar > div:nth-child(2) { display: none; }.ofp-route-head { grid-template-columns: 1fr 25px 1fr; }.ofp-route-head > div:nth-child(n+4) { display: none; }
}

@media (max-width: 560px) {
    .procedure-controls { grid-template-columns: 1fr; }
    .procedure-controls > section + section { border-left: 0; border-top: 1px solid var(--pk-line); }
    body { font-size: 15px; }.appbar-actions { gap: 5px; }.language-switch { height: 32px; }.trip-heading { min-height: 71px; }.back-button { flex-basis: 31px; height: 31px; }.airport-pair { grid-template-columns: max-content 45px max-content; }.airport-pair strong { font-size: 16px; }.route-arrow span { font-size: var(--pk-type-caption); }.trip-tabs { min-height: 45px; gap: 19px; }.trip-tabs button { min-height: 45px; font-size: var(--pk-type-caption); }.workspace-toolbar, .page-heading { flex-direction: column; align-items: stretch; }.toolbar-actions { width: 100%; }.toolbar-actions > button { flex: 1; }.page-heading > .primary-button { width: 100%; }.alert-banner { align-items: flex-start; }.alert-banner > button { display: none; }.metric-grid.four { grid-template-columns: 1fr 1fr; }.metric-card { min-height: 102px; padding: 12px; }.metric-card strong { font-size: 20px; }.metric-card .trend { position: static; margin-top: auto; width: max-content; }.dashboard-grid { gap: 10px; }.route-overview { min-height: auto; }.map-stage { min-height: 280px; }.map-stage svg { height: 245px; }.weather-airports { grid-template-columns: 1fr; }.weather-airports > div { padding: 6px 0; border: 0; border-bottom: 1px solid var(--pk-line-soft); }.wind-row { grid-template-columns: auto 20px 1fr; }.wind-row small { display: none; }.source-footer { flex-direction: column; }.filterbar { flex-wrap: wrap; }.segmented { flex: 1; }.search-field { order: 3; flex-basis: 100%; max-width: none; }.trip-row { grid-template-columns: 1fr 25px; padding: 13px; }.trip-row > span:not(.city-pair):not(.row-chevron) { display: none; }.trip-row .city-pair strong { font-size: 14px; }.route-controls { grid-template-columns: 1fr 1fr; }.route-controls label:nth-child(3) { grid-column: 1/-1; }.route-summary-inline { grid-template-columns: repeat(3,1fr); }.route-summary-inline span { padding-left: 8px; }.add-waypoint { grid-template-columns: 18px 1fr auto; }.add-waypoint select { display: none; }.waypoint-table { min-width: 690px; }.profile-legend { overflow-x: auto; justify-content: flex-start; }.ofp-paper { padding: 13px 10px; overflow-x: auto; }.ofp-paper > * { min-width: 520px; }.ofp-inspector { grid-template-columns: 1fr; }.ofp-summary-grid { grid-template-columns: repeat(2,1fr); }.input-matrix { grid-template-columns: repeat(2,1fr); }.toggle-list { grid-template-columns: 1fr; }.speed-strip strong { font-size: 20px; }.runway-bar small { flex-direction: column; gap: 4px; }.legend-pills { display: none; }.aircraft-cabin { min-height: 385px; padding: 30px 24px 20px; }.cockpit { gap: 45px; margin-bottom: 32px; }.cabin-aisle { gap: 10px 45px; }.seat { min-height: 48px; }.baggage-bays { grid-template-columns: 1fr; }.cabin-panel, .cg-panel { min-height: auto; }.cg-chart { height: 340px; }.fuel-flow { padding: 15px; grid-template-columns: repeat(5,1fr); gap: 4px; overflow-x: auto; }.fuel-flow > i { display: none; }.fuel-flow > div { min-width: 89px; }.folder-summary { grid-template-columns: 1fr; gap: 8px; }.document-card { grid-template-columns: 37px 1fr; }.doc-icon { width: 37px; height: 47px; }.doc-state { grid-column: 2; grid-row: 2; }.update-summary { flex-direction: column; gap: 16px; }.dataset-grid { grid-template-columns: 1fr; }.provenance-flow { grid-template-columns: 1fr; }.provenance-flow > b { transform: rotate(90deg); }.provenance-flow > span:nth-of-type(4) { grid-column: auto; }.settings-rows > label { grid-template-columns: 1fr; padding: 11px 0; gap: 9px; }.settings-rows select, .settings-rows .toggle { justify-self: stretch; }.form-grid.three, .form-grid.four, .form-grid.five, .choice-grid.modes { grid-template-columns: 1fr; }.passenger-editor-head { align-items: flex-start; }.passenger-draft-grid { grid-template-columns: repeat(3,1fr); }.modal-header { min-height: 62px; }.modal-body { padding-inline: 14px; }.modal-footer { padding: 10px 14px max(10px,env(safe-area-inset-bottom)); }.modal-footer button { flex: 1; }.density-row { gap: 5px; }.density-chip { flex: 1; min-width: 39px; }.density-custom { flex-basis: 100%; }.calculated-strip > span:not(.warning-text) { flex: 1; }.step-rail { margin-inline: 20px; }
}

@media (max-width: 560px) {
    .add-waypoint { grid-template-columns: 18px minmax(125px,1fr) 82px auto; }
    .add-waypoint .via-input { display: block; }
}

@media (max-width: 860px) {
    .wb-load-editor { grid-template-columns: repeat(2,1fr); }
    .fuel-input-row { grid-template-columns: 1fr; align-items: stretch; }
}

@media (max-width: 560px) {
    .cabin-aisle .seat-slot:last-child { width: calc(50% - 22px); }
    .wb-load-editor { padding-inline: 12px; gap: 6px; }
    .fuel-input-row { padding-inline: 14px; }
    .density-buttons { overflow-x: auto; }
}

@media (max-width: 860px) {
    .fpl-findings { grid-template-columns: 1fr; }
    .fpl-export-actions { grid-template-columns: 1fr auto auto; }
    .fpl-response-editor { grid-template-columns: 1fr; }
    .fpl-response-editor button { justify-self: start; }
}

@media (max-width: 560px) {
    .fpl-warning { grid-template-columns: 1fr; }
    .fpl-source-strip, .fpl-export-actions { grid-template-columns: 1fr; }
    .fpl-export-actions button { width: 100%; }
    .fpl-response-editor button { width: 100%; }
    .fpl-manual-fallback .fpl-export-actions { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
    .form-grid.two { grid-template-columns: 1fr; }
    .dispatch-fields { max-width: none; }
    .pilot-standard-row { grid-template-columns: 1fr; }
    .passenger-count-control { grid-template-columns: 36px 38px minmax(0,1fr) 36px; gap: 7px; }
    .modal-footer { min-height: auto; flex-wrap: wrap; }
    .modal-validation { flex: 0 0 100%; max-width: none; margin: 0; }
    .modal-footer .ghost-button, .modal-footer .primary-button { flex: 1 1 calc(50% - 4px); }
}

@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; transition: none !important; } }

/* Unified operational legibility floor.
   This block deliberately comes after responsive rules so desktop, tablet and
   phone views use the same readable hierarchy. Compactness comes from spacing
   and grid rhythm, never from tiny operational text. */
.ofp-app { font-size: var(--pk-type-supporting); }
.ofp-app .rail-item,
.ofp-app .profile-button strong,
.ofp-app .breadcrumb,
.ofp-app .mobile-brand,
.ofp-app .trip-tabs button,
.ofp-app .settings-nav button { font-size: var(--pk-type-supporting); }

.ofp-app .brand-copy small,
.ofp-app .rail-count,
.ofp-app .sync-line,
.ofp-app .profile-button small,
.ofp-app .airac-chip,
.ofp-app .language-switch,
.ofp-app .runtime-banner,
.ofp-app .trip-meta small,
.ofp-app .route-arrow span,
.ofp-app .status-chip,
.ofp-app .eyebrow,
.ofp-app .panel-kicker,
.ofp-app label > span,
.ofp-app .trip-list-head,
.ofp-app th,
.ofp-app dt,
.ofp-app small { font-size: var(--pk-type-caption); line-height: 1.35; }

.ofp-app p,
.ofp-app td,
.ofp-app dd,
.ofp-app li,
.ofp-app .source-footer,
.ofp-app .page-note p,
.ofp-app .alert-banner p,
.ofp-app .trip-row strong,
.ofp-app .trip-row small,
.ofp-app .result-list div,
.ofp-app .check-list li,
.ofp-app .weather-report code,
.ofp-app .settings-rows strong,
.ofp-app .settings-radio strong,
.ofp-app .pilot-standard-row strong,
.ofp-app .device-row strong { font-size: var(--pk-type-supporting); line-height: 1.4; }

.ofp-app .avatar,
.ofp-app .metric-card strong em,
.ofp-app .document-logo,
.ofp-app .ofp-titlebar > div:nth-child(2),
.ofp-app .settings-radio b { font-size: var(--pk-type-caption); }

.ofp-app .trip-meta > span:not(.status-chip),
.ofp-app .alert-banner strong,
.ofp-app .decision-route,
.ofp-app .weather-airports strong,
.ofp-app .route-summary-inline strong,
.ofp-app .seat span,
.ofp-app .fuel-flow strong,
.ofp-app .folder-summary strong,
.ofp-app .doc-main h2,
.ofp-app .update-summary strong,
.ofp-app .update-summary dd,
.ofp-app .dataset-card > h2,
.ofp-app .airport-suggestions strong,
.ofp-app .density-row > div:first-child > span,
.ofp-app .density-chip { font-size: var(--pk-type-supporting); }

.ofp-app input,
.ofp-app select,
.ofp-app textarea,
.ofp-app button:not(.icon-button):not(.back-button) { font-size: var(--pk-type-control); }
.ofp-app input,
.ofp-app select { min-height: var(--pk-control-height); padding-block: 0; }
.ofp-app textarea { padding: 7px 10px; line-height: 1.45; }

.ofp-app .page-heading h1 { font-size: 34px; line-height: 1.12; }
.ofp-app .workspace-toolbar h1 { font-size: 28px; line-height: 1.15; }
.ofp-app .page-heading p { font-size: var(--pk-type-supporting); line-height: 1.4; }
.ofp-app .panel > header { min-height: 52px; padding: 9px 15px; }
.ofp-app .panel > header h2 { margin-top: 1px; font-size: 20px; line-height: 1.2; }
.ofp-app .primary-button,
.ofp-app .ghost-button,
.ofp-app .subtle-button,
.ofp-app .danger-button { min-height: 38px; padding-inline: 14px; font-size: var(--pk-type-control); }

.ofp-app input,
.ofp-app select { font-weight: 540; }
.ofp-app label > span,
.ofp-app th,
.ofp-app dt { font-weight: 680; }

.ofp-app .filterbar,
.ofp-app .settings-layout,
.ofp-app .update-summary { margin-top: 14px; }
.ofp-app .page-note { padding: 10px 13px; }
.ofp-app .trip-row { min-height: 68px; padding-block: 7px; }
.ofp-app .settings-rows > label { min-height: 54px; }
.ofp-app .settings-radio { min-height: 46px; padding-block: 6px; }
.ofp-app .dataset-card > p,
.ofp-app .doc-main p,
.ofp-app .fpl-warning span,
.ofp-app .fpl-findings span,
.ofp-app .fpl-response-notice span,
.ofp-app .fpl-response > p { font-size: var(--pk-type-supporting); }

.ofp-app .waypoint-table,
.ofp-app .ofp-section table { font-size: var(--pk-type-caption); }
.ofp-app .ofp-section .ofp-pressure-table th, .ofp-app .ofp-section .ofp-pressure-table td { font-size: 14px; height: 36px; box-sizing: border-box; }
.ofp-app .ofp-paper small,
.ofp-app .ofp-paper span,
.ofp-app .ofp-paper th,
.ofp-app .ofp-paper td,
.ofp-app .ofp-section h3,
.ofp-app .mini-navlog,
.ofp-app .ofp-document-footer { font-size: var(--pk-type-micro); line-height: 1.35; }
.ofp-app .ofp-paper strong,
.ofp-app .document-logo,
.ofp-app .ofp-titlebar > div:nth-child(2) { font-size: var(--pk-type-caption); }
.ofp-app .fpl-message,
.ofp-app .fpl-response-editor textarea { font: var(--pk-type-caption)/1.5 ui-monospace, "Cascadia Mono", monospace; }

.ofp-app svg text,
.ofp-app .axis-labels,
.ofp-app .profile-axis,
.ofp-app .profile-labels,
.ofp-app .combined-profile-labels,
.ofp-app .cg-labels,
.ofp-app .obstacle-chart text { font-size: var(--pk-type-micro); }

.ofp-app .modal-header { min-height: 58px; padding-block: 8px; }
.ofp-app .modal-header h2 { font-size: 26px; }
.ofp-app .step-rail { margin-top: 8px; }
.ofp-app .form-section { padding-block: 8px; }
.ofp-app .form-section h3 { margin-bottom: 8px; font-size: 17px; }
.ofp-app .form-grid { gap: 6px 10px; margin-bottom: 6px; }
.ofp-app .choice-grid.modes { margin-bottom: 6px; }
.ofp-app .choice-card { min-height: 50px; padding-block: 5px; }
.ofp-app .choice-card strong,
.ofp-app .passenger-editor-head strong,
.ofp-app .passenger-editor-head b,
.ofp-app .calculated-strip strong { font-size: var(--pk-type-supporting); }
.ofp-app .passenger-editor { padding-block: 6px; }
.ofp-app .density-row { min-height: 36px; }
.ofp-app .calculated-strip { min-height: 46px; padding-block: 5px; }
.ofp-app .modal-footer { min-height: 54px; padding-block: 7px; }

@media (max-width: 860px) {
    .ofp-app .rail-item { font-size: var(--pk-type-micro); }
    .ofp-app .workspace-view,
    .ofp-app .page-view { padding-top: 16px; }
}

@media (max-width: 560px) {
    body { font-size: 21px; }
    .ofp-app .runtime-banner { flex-direction: column; align-items: flex-start; gap: 4px; padding-inline: 14px; }
    .ofp-app .runtime-banner strong { flex: none; }
    .ofp-app .runtime-banner span { min-width: 0; overflow-wrap: anywhere; }
    .ofp-app .trip-tabs button { font-size: var(--pk-type-caption); }
    .ofp-app .page-heading h1 { font-size: 30px; }
    .ofp-app .modal-body { padding-inline: 12px; }
}

/* Operator readability scale, pass 3.
   Every application surface shares the same 17/18/20 px hierarchy. Controls
   remain only 40 px high, so the larger type replaces empty padding instead of
   making forms taller. These rules stay last to override legacy page-specific
   compact sizes and responsive reductions. */
.ofp-app .rail { width: 236px; padding: 14px 11px; }
.ofp-app .shell { margin-left: 236px; }
.ofp-app .brand { padding-bottom: 14px; }
.ofp-app .brand-copy strong { font-size: var(--pk-type-caption); }
.ofp-app .rail-nav { margin-top: 14px; }
.ofp-app .rail-item { min-height: 48px; padding-inline: 9px; }
.ofp-app .rail-icon { font-size: 22px; }
.ofp-app .appbar { height: 60px; padding-inline: 22px; }
.ofp-app .airac-chip,
.ofp-app .language-switch { height: 34px; }
.ofp-app .icon-button,
.ofp-app .back-button { width: 38px; height: 38px; padding: 0; line-height: 1; display: grid; place-items: center; }
.ui-arrow { width: 1em; height: 1em; display: inline-block; flex: 0 0 auto; vertical-align: -0.125em; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; overflow: visible; }
button > .ui-arrow { align-self: center; }
.back-button .ui-arrow { width: 18px; height: 18px; vertical-align: 0; }
.inline-route, .city-pair strong { display: inline-flex; align-items: center; }
.city-pair b, .ofp-route-head > b, .provenance-flow > b, .signature-flow > i { display: inline-grid; place-items: center; line-height: 1; }
.row-actions button { display: inline-grid; place-items: center; padding: 0; }
.ofp-app .back-button { flex: 0 0 38px; }
.ofp-app .icon-button.close { display: grid; place-items: center; }
.ofp-app .close-mark { width: 20px; height: 20px; }
.ofp-app .close-mark::before,
.ofp-app .close-mark::after { top: 9px; width: 20px; }
.ofp-app .runtime-banner { min-height: 44px; padding: 7px 22px; gap: 12px; }
.ofp-app .workspace-view,
.ofp-app .page-view { max-width: 1560px; padding: 18px 22px 26px; }
.ofp-app .page-view { padding-top: 22px; }
.ofp-app .workspace-toolbar,
.ofp-app .page-heading { min-height: 46px; margin-bottom: 14px; }
.ofp-app .page-heading h1 { font-size: 38px; }
.ofp-app .workspace-toolbar h1 { font-size: 34px; }
.ofp-app .page-heading p { margin-top: 2px; }
.ofp-app .filterbar { margin-block: 16px 11px; }
.ofp-app .search-field { height: var(--pk-control-height); }
.ofp-app .segmented button { min-height: 32px; }
.ofp-app .panel > header { min-height: 50px; padding: 8px 14px; }
.ofp-app .panel > header h2 { font-size: 22px; }
.ofp-app .primary-button,
.ofp-app .ghost-button,
.ofp-app .subtle-button,
.ofp-app .danger-button { min-height: var(--pk-control-height); padding: 0 13px; line-height: 1.2; }
.ofp-app .text-button { min-height: 34px; line-height: 1.2; }
.ofp-app input,
.ofp-app select { min-height: var(--pk-control-height); padding-inline: 11px; line-height: 1.2; }
/* Reserve room for the suffix in every numeric editor, including dialogs. */
.unit-input > input[type="number"] { padding-inline-end: 36px; }
.seat-mass > input[type="number"] { padding-inline-end: 48px; }
.unit-input > small,
.seat-mass > small { pointer-events: none; white-space: nowrap; }
.ofp-app .panel > p { padding-inline: 16px; }
.ofp-app input[type="checkbox"],
.ofp-app input[type="radio"] { width: 18px; height: 18px; min-height: 18px; padding: 0; }
.ofp-app input[type="range"] { min-height: 24px; padding: 0; }
.ofp-app textarea { padding: 7px 11px; }
.ofp-app label > span { margin-bottom: 3px; }
.ofp-app .trip-list-head { min-height: 38px; }
.ofp-app .trip-row { min-height: 66px; padding-block: 6px; }
.ofp-app .page-note { margin-top: 11px; padding: 8px 12px; }
.ofp-app .source-footer { min-height: 34px; padding: 7px 13px; }
.ofp-app .metric-card { padding: 13px; }
.ofp-app .metric-card strong { font-size: 30px; }
.ofp-app .result-list div,
.ofp-app .source-card dl div,
.ofp-app .dataset-card dl div { min-height: 38px; }
.ofp-app table th,
.ofp-app table td { padding-block: 7px; }
.ofp-app .settings-rows > label { min-height: 52px; padding-block: 7px; }
.ofp-app .settings-radio { min-height: 44px; padding-block: 5px; }
.ofp-app .crew-form,
.ofp-app .crew-history-editor { padding: 13px; }
.ofp-app .crew-form-row,
.ofp-app .crew-form { gap: 10px; }
.ofp-app .document-card { min-height: 108px; padding: 12px; }
.ofp-app .update-summary { min-height: 80px; padding: 12px 15px; }
.ofp-app .dataset-card { min-height: 226px; }
.ofp-app .ofp-paper { font-size: var(--pk-type-caption); }
.ofp-app .ofp-paper small,
.ofp-app .ofp-paper span,
.ofp-app .ofp-paper th,
.ofp-app .ofp-paper td,
.ofp-app .ofp-section h3,
.ofp-app .mini-navlog,
.ofp-app .ofp-document-footer,
.ofp-app svg text,
.ofp-app .axis-labels,
.ofp-app .profile-axis,
.ofp-app .profile-labels,
.ofp-app .combined-profile-labels,
.ofp-app .cg-labels,
.ofp-app .obstacle-chart text { font-size: var(--pk-type-micro); }
.ofp-app .modal-panel { width: min(1180px,100%); }
.ofp-app .modal-header { min-height: 60px; padding: 8px 18px; }
.ofp-app .modal-header h2 { font-size: 29px; }
.ofp-app .modal-header .icon-button.close { flex: 0 0 38px; width: 38px; height: 38px; }
.ofp-app .modal-body { padding: 0 18px 12px; }
.ofp-app .step-rail { margin-top: 7px; }
.ofp-app .form-section { padding-block: 7px; }
.ofp-app .form-section h3 { margin-bottom: 6px; font-size: var(--pk-type-supporting); }
.ofp-app .form-grid { gap: 5px 9px; margin-bottom: 5px; }
.ofp-app .choice-grid.modes { gap: 8px; margin-bottom: 5px; }
.ofp-app .choice-card { min-height: 48px; padding-block: 4px; }
.ofp-app .passenger-editor { margin-bottom: 6px; padding: 5px 10px; }
.ofp-app .passenger-editor-head { margin-bottom: 5px; }
.ofp-app .passenger-count-control button { width: 38px; height: 38px; }
.ofp-app .density-row { min-height: 34px; }
.ofp-app .calculated-strip { min-height: 44px; margin-top: 6px; padding: 4px 11px; }
.ofp-app .modal-footer { min-height: 52px; padding: 6px 18px; }

@media (max-width: 1180px) {
    .ofp-app .rail { width: 78px; padding-inline: 9px; }
    .ofp-app .shell { margin-left: 78px; }
}

@media (max-width: 860px) {
    .ofp-app .rail { inset: auto 0 0; width: auto; height: 68px; padding: 4px 7px max(4px,env(safe-area-inset-bottom)); }
    .ofp-app .shell { margin: 0 0 68px; }
    .ofp-app .rail-item { min-height: 54px; font-size: var(--pk-type-micro); }
    .ofp-app .appbar { height: 58px; padding-inline: 13px; }
    .ofp-app .workspace-view,
    .ofp-app .page-view { padding: 14px 13px 22px; }
}

@media (max-width: 560px) {
    body { font-size: 21px; }
    .ofp-app .page-heading h1 { font-size: 34px; }
    .ofp-app .workspace-toolbar h1 { font-size: 31px; }
    .ofp-app .modal-body { padding-inline: 11px; }
    .ofp-app .ofp-paper > * { min-width: 660px; }
}

/* Operator readability scale, pass 4.
   Apply one deliberate hierarchy and one compact control rhythm to every
   application page. The text floor is raised again after operator review;
   fields gain type size without gaining equivalent empty vertical space. */
.ofp-app .rail { width: 252px; }
.ofp-app .shell { margin-left: 252px; }
.ofp-app .rail-item { grid-template-columns: 30px 1fr auto; gap: 8px; }
.ofp-app .brand-copy { letter-spacing: .14em; }
.ofp-app .appbar { padding-inline: 20px; }

.ofp-app .workspace-view,
.ofp-app .page-view { max-width: 1600px; padding-inline: 20px; }
.ofp-app .workspace-toolbar,
.ofp-app .page-heading { margin-bottom: 12px; gap: 14px; }
.ofp-app .page-heading h1 { font-size: 40px; }
.ofp-app .workspace-toolbar h1 { font-size: 36px; }
.ofp-app .eyebrow,
.ofp-app .panel-kicker { letter-spacing: .09em; }

.ofp-app .panel {
    border-color: #30414a;
    border-radius: 10px;
    box-shadow: 0 10px 28px rgba(0,0,0,.15);
}
.ofp-app .panel > header { min-height: 48px; padding: 7px 13px; }
.ofp-app .panel > header h2 { font-size: 23px; }
.ofp-app .page-note,
.ofp-app .alert-banner { border-color: #30414a; }
.ofp-app .page-note { padding: 8px 11px; }

.ofp-app .metric-grid,
.ofp-app .dashboard-grid,
.ofp-app .planning-grid,
.ofp-app .runway-grid,
.ofp-app .wb-layout,
.ofp-app .document-grid,
.ofp-app .dataset-grid,
.ofp-app .settings-layout,
.ofp-app .ofp-layout { gap: 14px; }

.ofp-app input,
.ofp-app select,
.ofp-app textarea {
    border-color: #3a4c55;
    border-radius: 7px;
    background: #0a1216;
    color: #f0f7f8;
}
.ofp-app input,
.ofp-app select { min-height: var(--pk-control-height); padding-inline: 10px; }
.ofp-app textarea { padding: 7px 10px; }
.ofp-app input::placeholder,
.ofp-app textarea::placeholder { color: #87979c; opacity: 1; }
.ofp-app label > span,
.ofp-app th,
.ofp-app dt { color: #c3d0d3; letter-spacing: .025em; }

.ofp-app .primary-button,
.ofp-app .ghost-button,
.ofp-app .subtle-button,
.ofp-app .danger-button { min-height: var(--pk-control-height); padding-inline: 12px; }
.ofp-app .segmented { min-height: var(--pk-control-height); }
.ofp-app .segmented button { min-height: 36px; padding-inline: 12px; }
.ofp-app .search-field { height: var(--pk-control-height); }

.ofp-app table { line-height: 1.38; }
.ofp-app table th,
.ofp-app table td { padding-block: 6px; }
.ofp-app .result-list div,
.ofp-app .source-card dl div,
.ofp-app .dataset-card dl div { min-height: 40px; }
.ofp-app .trip-row { min-height: 64px; padding-block: 5px; }
.ofp-app .settings-rows > label { min-height: 50px; padding-block: 6px; }
.ofp-app .settings-radio { min-height: 42px; padding-block: 4px; }

.ofp-app .ofp-paper,
.ofp-app .ofp-paper small,
.ofp-app .ofp-paper span,
.ofp-app .ofp-paper th,
.ofp-app .ofp-paper td,
.ofp-app .ofp-section h3,
.ofp-app .mini-navlog,
.ofp-app .ofp-document-footer { font-size: var(--pk-type-caption); }
.ofp-app svg text,
.ofp-app .axis-labels,
.ofp-app .profile-axis,
.ofp-app .profile-labels,
.ofp-app .combined-profile-labels,
.ofp-app .cg-labels,
.ofp-app .obstacle-chart text { font-size: var(--pk-type-micro); }

.ofp-app .modal-panel { width: min(1220px,100%); }
.ofp-app .modal-header { min-height: 58px; padding: 7px 16px; }
.ofp-app .modal-header h2 { font-size: 31px; }
.ofp-app .modal-body { padding: 0 16px 10px; }
.ofp-app .form-section { padding-block: 6px; }
.ofp-app .form-section h3 { margin-bottom: 5px; font-size: 22px; }
.ofp-app .form-grid { gap: 5px 8px; margin-bottom: 4px; }
.ofp-app .choice-card { min-height: 46px; padding-block: 3px; }
.ofp-app .passenger-editor { padding: 4px 9px; }
.ofp-app .density-row { min-height: 32px; }
.ofp-app .calculated-strip { min-height: 42px; padding-block: 3px; }
.ofp-app .modal-footer { min-height: 50px; padding: 5px 16px; }

.ofp-app .icon-button.close {
    position: relative;
    display: grid;
    place-items: center;
    padding: 0;
}
.ofp-app .icon-button.close .close-mark { position: absolute; inset: 50% auto auto 50%; transform: translate(-50%,-50%); }
.ofp-app .close-mark::before,
.ofp-app .close-mark::after { top: 50%; left: 50%; transform-origin: center; }
.ofp-app .close-mark::before { transform: translate(-50%,-50%) rotate(45deg); }
.ofp-app .close-mark::after { transform: translate(-50%,-50%) rotate(-45deg); }

@media (max-width: 1180px) {
    .ofp-app .rail { width: 82px; }
    .ofp-app .shell { margin-left: 82px; }
}

@media (max-width: 860px) {
    .ofp-app .rail { inset: auto 0 0; width: auto; }
    .ofp-app .rail-nav { margin-top: 0; grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .ofp-app .rail-item { min-width: 0; grid-template-columns: minmax(0, 1fr); grid-template-rows: 24px 20px; gap: 0; padding: 3px 2px; }
    .ofp-app .rail-icon { font-size: 22px; line-height: 24px; }
    .ofp-app .rail-item > span:nth-child(2) { min-width: 0; max-width: 100%; line-height: 20px; }
    .ofp-app .shell { margin: 0 0 68px; }
    .ofp-app .workspace-view,
    .ofp-app .page-view { padding-inline: 12px; }
    .ofp-app .page-heading h1 { font-size: 36px; }
    .ofp-app .workspace-toolbar h1 { font-size: 33px; }
}

@media (max-width: 560px) {
    .ofp-app .page-heading h1 { font-size: 34px; }
    .ofp-app .workspace-toolbar h1 { font-size: 32px; }
    .ofp-app .modal-header h2 { font-size: 28px; }
    .ofp-app .modal-body { padding-inline: 10px; }
    .ofp-app .modal-footer { padding-inline: 10px; }
}

/* Operator readability scale, pass 5.
   Local component rules must not pull operational labels below the shared
   readable floor. Controls spend less height on padding instead of whitespace. */
.ofp-app .brand-copy strong,
.ofp-app .trip-meta > span:not(.status-chip),
.ofp-app .trip-tabs button,
.ofp-app .alert-banner strong,
.ofp-app .decision-route,
.ofp-app .weather-airports strong,
.ofp-app .trip-row .city-pair strong,
.ofp-app .route-summary-inline strong,
.ofp-app .document-logo,
.ofp-app .ofp-titlebar > div:nth-child(2),
.ofp-app .seat span,
.ofp-app .fuel-flow strong,
.ofp-app .folder-summary strong,
.ofp-app .doc-main h2,
.ofp-app .update-summary strong,
.ofp-app .update-summary dd,
.ofp-app .dataset-card > h2,
.ofp-app .settings-radio b,
.ofp-app .choice-card strong,
.ofp-app .airport-suggestions strong,
.ofp-app .passenger-editor-head b,
.ofp-app .density-row > div:first-child > span,
.ofp-app .density-chip,
.ofp-app .calculated-strip strong,
.ofp-app .history-entry-form select {
    font-size: var(--pk-type-caption);
}

.ofp-app .search-field input,
.ofp-app .fpl-route-field textarea,
.ofp-app .danger-button {
    font-size: var(--pk-type-control);
}

.ofp-app .avatar,
.ofp-app .metric-card strong em {
    font-size: 12px;
}

.ofp-app .rail-item,
.ofp-app .profile-button strong,
.ofp-app .profile-button small,
.ofp-app .breadcrumb,
.ofp-app .airac-chip,
.ofp-app .language-switch,
.ofp-app .runtime-banner,
.ofp-app .runtime-banner strong,
.ofp-app .primary-button,
.ofp-app .ghost-button,
.ofp-app .subtle-button,
.ofp-app .danger-button,
.ofp-app .segmented button,
.ofp-app input,
.ofp-app select,
.ofp-app textarea {
    font-size: var(--pk-type-control);
    line-height: 1.2;
}

.ofp-app .rail-item { min-height: 44px; }
.ofp-app .appbar { height: 56px; }
.ofp-app .runtime-banner { min-height: 40px; padding-block: 6px; }
.ofp-app .workspace-view,
.ofp-app .page-view { padding-top: 16px; padding-bottom: 24px; }
.ofp-app .filterbar { margin-block: 14px 10px; }
.ofp-app .panel > header { min-height: 46px; padding-block: 5px; }
.ofp-app .panel > header h2 { margin-block: 1px; }
.ofp-app .page-note,
.ofp-app .alert-banner { min-height: 50px; padding-block: 7px; }

.ofp-app input,
.ofp-app select {
    height: var(--pk-control-height);
    min-height: var(--pk-control-height);
    padding-block: 3px;
}
.ofp-app textarea { padding-block: 6px; }
.ofp-app .search-field { height: var(--pk-control-height); padding-block: 0; }
.ofp-app .primary-button,
.ofp-app .ghost-button,
.ofp-app .subtle-button,
.ofp-app .danger-button {
    min-height: var(--pk-control-height);
    padding-block: 3px;
}
.ofp-app .segmented { min-height: var(--pk-control-height); padding-block: 2px; }
.ofp-app .segmented button { min-height: 34px; padding-block: 2px; }

.ofp-app .metric-card { min-height: 108px; padding-block: 11px; }
.ofp-app .trip-row { min-height: 60px; }
.ofp-app .result-list div,
.ofp-app .source-card dl div,
.ofp-app .dataset-card dl div { min-height: 38px; }
.ofp-app .settings-rows > label { min-height: 46px; padding-block: 5px; }
.ofp-app .settings-radio { min-height: 40px; padding-block: 3px; }

.ofp-app .modal-header { min-height: 56px; padding-block: 5px; }
.ofp-app .modal-header .icon-button.close {
    flex-basis: 40px;
    width: 40px;
    height: 40px;
}
.ofp-app .form-section { padding-block: 5px; }
.ofp-app .form-section h3 { margin-bottom: 4px; font-size: var(--pk-type-supporting); }
.ofp-app .choice-card { min-height: 44px; }
.ofp-app .passenger-count-control button { width: 36px; height: 36px; }
.ofp-app .density-row { min-height: 30px; }
.ofp-app .density-chip { min-height: 30px; }
.ofp-app .calculated-strip { min-height: 40px; }
.ofp-app .modal-footer { min-height: 48px; padding-block: 4px; }

@media (max-width: 860px) {
    .ofp-app .rail-item { min-height: 52px; }
    .ofp-app .workspace-view,
    .ofp-app .page-view { padding-top: 13px; }
}

@media (max-width: 560px) {
    body { min-width: 0; font-size: 14px; }
    .ofp-app .rail-item,
    .ofp-app .primary-button,
    .ofp-app .ghost-button,
    .ofp-app .subtle-button,
    .ofp-app .danger-button,
    .ofp-app .segmented button,
    .ofp-app input,
    .ofp-app select,
    .ofp-app textarea { font-size: 14px; }
}

/* Operator readability scale, balanced desktop pass.
   The previous 22px global floor was oversized at the operator's 125% desktop
   scale. Preserve the all-page hierarchy while restoring working density. */
.ofp-app .rail { width: 224px; }
.ofp-app .shell { margin-left: 224px; }
.ofp-app .page-heading h1 { font-size: 29px; }
.ofp-app .workspace-toolbar h1 { font-size: 26px; }
.ofp-app .panel > header h2 { font-size: 16px; }
.ofp-app .modal-header h2 { font-size: 22px; }
.ofp-app .runtime-banner,
.ofp-app .runtime-banner strong { font-size: var(--pk-type-caption); }

@media (max-width: 1180px) {
    .ofp-app .rail { width: 78px; }
    .ofp-app .shell { margin-left: 78px; }
}

@media (max-width: 860px) {
    .ofp-app .rail { inset: auto 0 0; width: auto; }
    .ofp-app .shell { margin: 0 0 68px; }
    .ofp-app .page-heading h1 { font-size: 28px; }
    .ofp-app .workspace-toolbar h1 { font-size: 26px; }
}

@media (max-width: 560px) {
    .ofp-app .page-heading h1 { font-size: 27px; }
    .ofp-app .workspace-toolbar h1 { font-size: 25px; }
    .ofp-app .modal-header h2 { font-size: 22px; }
}
.ofp-app .search-field > svg, .ofp-app .action-icon, .ofp-app .notification-bell {
    width: 18px; height: 18px; flex: 0 0 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round;
}
.ofp-app .notification-bell { width: 20px; height: 20px; }
.ofp-app .search-field > input, .ofp-app .search-field > input:focus {
    min-width: 0; width: 100%; height: 100%; min-height: 0; padding: 0; border: 0; border-radius: 0; outline: 0; box-shadow: none; background: transparent;
}
.ofp-app .search-field:focus-within { outline: 2px solid var(--pk-cyan); outline-offset: 2px; }
.ofp-app .saved-trip-search > input, .ofp-app .saved-trip-search > input:focus { padding-inline: 12px; }
.ofp-app .terminal-selection .published-missed-choice { display: flex; align-items: center; gap: 9px; margin-block: 8px 4px; }
.ofp-app .published-missed-choice input { width: 18px; height: 18px; min-height: 18px; flex: 0 0 18px; margin: 0; accent-color: var(--pk-cyan); }
.ofp-app .brand-mark .brand-symbol { width: 32px; height: 32px; stroke-width: 1.7; stroke-linejoin: round; stroke-linecap: round; }
.ofp-app .trip-filter-panel { display: grid; grid-template-columns: 1fr 1fr 1fr auto; gap: 12px; padding: 14px; align-items: end; margin-bottom: 14px; }
.ofp-app .trip-filter-panel label { display: grid; gap: 6px; min-width: 0; }
.ofp-app .trip-filter-panel input, .ofp-app .trip-filter-panel select { width: 100%; min-width: 0; }
.ofp-app .trip-filter-panel p { grid-column: 1 / -1; margin: 0; }
.ofp-app .information-dialog { width: min(700px, 100%); }
.ofp-app .information-dialog-body { line-height: 1.6; padding: 16px; }
.ofp-app .information-dialog-body p { margin: 0 0 16px; }
.ofp-app .information-dialog-body h3 { font-size: 15px; margin: 16px 0 8px; }
.ofp-app .information-dialog-body li + li { margin-top: 8px; }
.ofp-app .notification-message { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; }
.ofp-app .source-detail-list > div { display: grid; grid-template-columns: 110px 1fr; gap: 10px; padding-block: 8px; border-bottom: 1px solid var(--pk-line); }
.ofp-app .source-detail-list dd { margin: 0; overflow-wrap: anywhere; }
.ofp-app .registry-list { list-style: none; padding: 0; }
.ofp-app .registry-list li { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; padding: 10px 0; border-bottom: 1px solid var(--pk-line); }
.ofp-app .registry-list li > span { grid-column: 1; font-size: 13px; color: var(--pk-muted); }
.ofp-app .registry-list button { grid-column: 2; grid-row: 1 / 3; }
.ofp-app .inline-source { min-height: 0; padding: 0; font-size: inherit; text-align: left; }
.ofp-app .runway-start-panel { padding: 20px; line-height: 1.6; }
.ofp-app .runway-analysis .input-matrix label,
.ofp-app .runway-configuration label { display: grid; grid-template-rows: 1fr 36px; gap: 5px; min-width: 0; }
.ofp-app .runway-analysis input,
.ofp-app .runway-analysis select { width: 100%; min-width: 0; }
.ofp-app .runway-configuration { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 0 18px 18px; }
.ofp-app .runway-configuration > label:first-child { grid-column: 1 / -1; }
.ofp-app .runway-inputs > label { display: grid; gap: 5px; margin: 12px 18px 0; }
.ofp-app .runway-configuration .runway-equipment-check { display: flex; grid-column: 1 / -1; grid-template-rows: none; align-items: center; gap: 9px; color: var(--pk-text); }
.ofp-app .runway-configuration .runway-equipment-check input { width: 16px; height: 16px; margin: 0; accent-color: var(--pk-cyan); opacity: 1; }
.ofp-app .takeoff-results .speed-strip > span:only-child { grid-column: 1 / -1; }
.ofp-app .runway-hint { padding: 10px 18px; color: var(--pk-muted); line-height: 1.5; }
.ofp-app .runway-water-hint { grid-column: 1 / -1; }
.ofp-app .runway-findings { padding: 6px 18px 12px; color: var(--pk-amber); }
.ofp-app .runway-findings p { margin: 7px 0; line-height: 1.45; }
.ofp-app .runway-table-scroll { overflow-x: auto; }
.ofp-app .runway-obstacle-table { width: 100%; border-collapse: collapse; text-align: left; }
.ofp-app .runway-obstacle-table th,
.ofp-app .runway-obstacle-table td { padding: 10px 12px; border-bottom: 1px solid var(--pk-line); }
.ofp-app .runway-obstacle-table th { color: var(--pk-muted); font-weight: 500; }
.ofp-app .runway-import-text { display: grid; gap: 8px; margin: 16px 0; }
.ofp-app .runway-import-text textarea { width: 100%; font-family: ui-monospace, monospace; }
@media (max-width: 600px) {
    .ofp-app .trip-filter-panel { grid-template-columns: 1fr 1fr; }
    .ofp-app .settings-nav { display: flex; flex-wrap: wrap; }
}

/* OFP runway input binding and immutable package evidence. */
.ofp-app .runway-ofp-bindings { padding: 16px 18px; margin-bottom: 12px; }
.ofp-app .runway-ofp-bindings h2 { margin: 0 0 8px; }
.ofp-app .runway-ofp-bindings p { margin: 8px 0; color: var(--pk-muted); }
.ofp-app .runway-ofp-bindings .toolbar-actions { flex-wrap: wrap; }
.ofp-app .runway-ofp-bindings select { width: auto; min-width: 210px; max-width: 100%; }
.ofp-app .ofp-runway-saved { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 8px; }
.ofp-app .ofp-runway-saved > span { margin-right: auto; }
.ofp-app .ofp-package-hash { overflow-wrap: anywhere; font-family: var(--pk-font-mono, monospace); }
.ofp-app .ofp-runway-table-scroll { overflow-x: auto; }
.ofp-app .ofp-runway-summary table { min-width: 590px; }
.ofp-app .ofp-runway-summary td { overflow-wrap: anywhere; max-width: 170px; }
.ofp-app .ofp-runway-summary td:nth-child(3), .ofp-app .ofp-runway-summary td:last-child { white-space: nowrap; overflow-wrap: normal; }

/* Source-bound alternate route editor: keep the workspace 14 px / 36 px scale. */
.ofp-app .ofp-diversions-panel { margin-bottom: 16px; }
.ofp-app .ofp-diversions-content { padding: 0 16px 16px; }
.ofp-app .ofp-diversion-actions, .ofp-app .ofp-saved-diversion, .ofp-app .ofp-diversion-editor-title { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.ofp-app .ofp-saved-diversion { justify-content: space-between; padding-block: 10px; border-bottom: 1px solid var(--pk-line); }
.ofp-app .ofp-diversion-editor-title { justify-content: space-between; }
.ofp-app .ofp-diversion-editor { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--pk-line); }
.ofp-app .ofp-diversion-editor fieldset { min-width: 0; margin: 12px 0; padding: 12px; border: 1px solid var(--pk-line); border-radius: 8px; }
.ofp-app .ofp-diversion-editor legend { padding-inline: 6px; color: var(--pk-cyan); }
.ofp-app .ofp-diversion-editor label { display: grid; gap: 5px; min-width: 0; margin-bottom: 10px; }
.ofp-app .ofp-diversion-editor .form-grid { gap: 12px; }
.ofp-app .ofp-diversion-editor .form-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ofp-app .ofp-diversion-editor input, .ofp-app .ofp-diversion-editor select { width: 100%; min-width: 0; }
.ofp-app .ofp-diversion-editor .ofp-diversion-check { display: flex; align-items: center; gap: 8px; }
.ofp-app .ofp-diversion-check input { width: 16px; height: 16px; min-height: 16px; }
.ofp-app .runway-airborne-forecast { min-width: 0; margin: 12px 0; padding: 12px; border: 1px solid var(--pk-line); border-radius: 8px; }
.ofp-app .runway-airborne-forecast .ofp-diversion-check { display: flex; align-items: center; gap: 8px; }
.ofp-app .runway-airborne-forecast .form-grid > label { display: flex; flex-direction: column; align-items: stretch; gap: 4px; }
.ofp-app .ofp-diversion-point { margin-block: 10px; padding: 10px; background: var(--pk-bg); border: 1px solid var(--pk-line); border-radius: 6px; }
.ofp-app .ofp-diversion-point button { align-self: center; }
.ofp-app .ofp-boundary-reference { color: var(--pk-muted); overflow-wrap: anywhere; }
.ofp-app .ofp-terminal-review { margin-bottom: 12px; padding: 12px; border-left: 3px solid var(--pk-amber); background: var(--pk-panel); overflow-wrap: anywhere; }
.ofp-app .ofp-terminal-review p:first-child { margin-top: 0; }
.ofp-app .ofp-diversion-summary td, .ofp-app .ofp-diversion-summary th { white-space: nowrap; }
@media (max-width: 700px) {
  .ofp-app .ofp-diversion-editor .form-grid.three, .ofp-app .ofp-diversion-editor .form-grid.four, .ofp-app .ofp-diversion-editor .form-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 440px) {
  .ofp-app .ofp-diversion-editor .form-grid.three, .ofp-app .ofp-diversion-editor .form-grid.four, .ofp-app .ofp-diversion-editor .form-grid.two { grid-template-columns: minmax(0, 1fr); }
}

/* Geographic map and distance/altitude profile use separate coordinate systems. */
.ofp-app .route-overview { min-height: 0; align-self: start; }
.route-map-host { min-width: 0; }
.route-map-backdrop, .route-map-collapse { display: none; }
.route-map-expand, .route-map-collapse { flex: 0 0 auto; width: 32px; height: 32px; padding: 5px; border: 1px solid var(--pk-line); border-radius: 6px; background: #18282d; color: #d3e6e9; cursor: pointer; }
.route-map-expand { margin-left: auto; align-self: flex-end; }
.route-map-expand svg { display: block; width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.route-map-expand:hover, .route-map-collapse:hover { border-color: var(--pk-cyan); }
.route-map-light :is(.route-map-expand, .route-map-collapse) { background: #f3f7f8; color: #263f4b; }
.route-map-host.is-expanded .route-map-backdrop { display: block; position: fixed; inset: 0; z-index: 1199; background: rgba(0, 0, 0, .78); }
.route-map-host.is-expanded .route-map-section { position: fixed; inset: 16px; z-index: 1200; display: flex; flex-direction: column; min-height: 0; border: 1px solid var(--pk-line); border-radius: 10px; box-shadow: 0 16px 60px #000; }
.route-map-host.is-expanded .plot-caption { flex: 0 0 auto; }
.route-map-host.is-expanded .route-map-collapse { display: block; margin-left: 8px; }
.route-map-host.is-expanded .route-map-toolbar { flex: 0 0 auto; }
.route-map-host.is-expanded .route-plot-scroll { flex: 1 1 0; min-height: 0; overflow: hidden; }
.route-map-host.is-expanded .route-map-svg { width: 100%; height: 100%; min-width: 0; }
.route-map-host.is-expanded .route-map-legend { flex: 0 0 auto; }
.route-map-host.is-expanded .route-map-expand { display: none; }
@media (max-width: 600px) {
    .route-map-host.is-expanded .route-map-section { inset: 8px; }
    .route-map-host.is-expanded .route-map-toolbar { gap: 8px; padding-inline: 10px; }
    .route-map-host.is-expanded .route-airspace-controls { gap: 6px 10px; }
}
.route-map-section, .route-profile-section { min-width: 0; }
.route-map-section { background: radial-gradient(ellipse at center, #122127, #0c1215); }
.route-profile-section { border-top: 1px solid var(--pk-line); }
.plot-caption { padding: 12px 16px 6px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 6px 16px; color: var(--pk-muted); font-size: var(--pk-type-caption); }
.plot-caption strong { color: #c2d1d5; font-size: var(--pk-type-caption); }
.plot-note { padding-top: 6px; padding-bottom: 12px; }
.route-notes { display: grid; gap: 8px; padding: 12px 16px; }
.route-notes p { margin: 0; }
.route-plot-scroll { position: relative; overflow-x: auto; }
.route-map-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 10px 18px; flex-wrap: wrap; padding: 4px 16px 8px; }
.route-map-controls, .route-airspace-controls { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.route-map-controls button { min-width: 36px; height: 36px; padding: 0 9px; border: 1px solid var(--pk-line); border-radius: 6px; background: #18282d; color: #d3e6e9; font-size: 16px; cursor: pointer; }
.route-map-controls button:hover { border-color: var(--pk-cyan); }
.route-map-controls .route-map-theme-toggle { font-size: 13px; }
.route-map-controls .route-map-theme-toggle[aria-pressed="true"] { border-color: #00869a; }
.route-map-light { --pk-lime: #15943c; --pk-cyan: #2457d6; --pk-muted: #465b65; --pk-line: #bbc9d0; background: #fff; color: #213840; }
.route-map-light .plot-caption, .route-map-light .plot-caption strong { color: #304c58; }
.route-map-light .route-map-controls button { background: #f3f7f8; border-color: #a9bcc5; color: #263f4b; }
.route-map-light .map-grid { stroke: #d1dce1; opacity: .7; }
.route-map-light .basemap-coastline { stroke: #497f91; }
.route-map-light .basemap-boundary { stroke: #7c8984; }
.route-map-light .map-labels { fill: #273e4a; }
.route-map-light .map-city-labels circle { fill: #617980; }
.route-map-light .map-city-labels text { fill: #405d68; stroke: #fff; }
.route-map-light .route-nodes circle { fill: #fff; }
.route-map-light .map-scale path, .route-map-light .north-arrow path { stroke: #536f7b; }
.route-map-light .map-scale text, .route-map-light .north-arrow text { fill: #536f7b; }
.route-map-light .route-airspaces .airspace-prohibited { stroke: #bc3550; }
.route-map-light .route-airspaces .airspace-restricted { stroke: #b06c00; }
.route-map-light .route-airspaces .airspace-danger { stroke: #8e7822; }
@media print {
    .ofp-paper .route-map-section { --pk-lime: #15943c; --pk-cyan: #2457d6; --pk-muted: #465b65; background: #fff !important; color: #213840; }
    .ofp-paper .route-map-toolbar { display: none; }
    .ofp-paper .route-map-section .map-labels { fill: #273e4a; }
    .route-map-expand, .route-map-collapse, .route-map-backdrop { display: none !important; }
    .ofp-paper .route-map-section .map-city-labels text { fill: #405d68; stroke: #fff; }
    .ofp-paper .route-map-section .route-nodes circle { fill: #fff; }
}
.route-airspace-controls label { display: inline-flex; align-items: center; gap: 5px; color: var(--pk-muted); font-size: 14px; cursor: pointer; }
.route-airspace-controls label:has(input:disabled) { opacity: .55; cursor: not-allowed; }
.route-airspace-controls input { accent-color: var(--pk-cyan); }
.route-map-svg { touch-action: none; cursor: grab; }
.route-map-svg.is-panning { cursor: grabbing; }
.route-map-svg :is(path, circle) { vector-effect: non-scaling-stroke; }
.route-airspaces { fill: transparent; stroke-width: 1.5; pointer-events: none; }
.route-airspaces .airspace-prohibited { stroke: #f56d78; }
.route-airspaces .airspace-restricted { stroke: #efaa49; }
.route-airspaces .airspace-danger { stroke: #d7cb55; }
.route-airspaces .is-selected { stroke-width: 2.5; }
.route-airspaces path:focus-visible { outline: 2px solid var(--pk-cyan); }
.route-map-svg, .route-profile-svg { display: block; width: 100%; height: auto; min-width: 540px; }
.route-map-section .route-line { stroke: var(--pk-lime); stroke-dasharray: none; }
.route-map-section .route-sid-preview-line { fill: none; stroke: var(--pk-cyan); stroke-width: 2.2; stroke-dasharray: 7 5; }
.route-map-section .route-alternate-line { fill: none; stroke: var(--pk-cyan); stroke-width: 2.2; }
.route-map-section .route-missed-line { fill: none; stroke: #2864d8; stroke-width: 2.2; }
.route-map-legend { display: flex; flex-wrap: wrap; gap: 8px 18px; padding: 0 16px 12px; color: var(--pk-muted); font-size: var(--pk-type-caption); }
.route-map-legend span { display: inline-flex; align-items: center; gap: 7px; }
.route-map-legend i { width: 18px; height: 3px; background: var(--pk-lime); }
.route-map-legend i.alternate { background: var(--pk-cyan); }
.route-map-legend i.missed { background: #2864d8; }
.route-map-legend i.sid-preview { background: repeating-linear-gradient(90deg, var(--pk-cyan) 0 6px, transparent 6px 10px); }
.route-airspace-card { position: absolute; z-index: 3; top: 10px; right: 10px; width: min(390px, calc(100% - 20px)); max-height: min(270px, 65vh); overflow: auto; padding: 12px; border: 1px solid #4c666c; border-radius: 8px; background: rgba(11, 20, 24, .97); box-shadow: 0 12px 30px #0009; color: #d3e0e3; font-size: 14px; }
.route-airspace-card header, .route-airspace-card-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.route-airspace-card header { margin-bottom: 8px; color: var(--pk-cyan); }
.route-airspace-card header button { border: 0; background: transparent; color: #d3e0e3; font-size: 20px; cursor: pointer; }
.route-airspace-card article { padding: 8px 0; border-top: 1px solid var(--pk-line); }
.route-airspace-card-title span { color: var(--pk-muted); }
.route-airspace-card p { margin: 5px 0 0; line-height: 1.4; }
.route-airspace-card p b { color: #afc0c4; }
.route-airspace-card .route-airspace-card-note { padding-top: 8px; border-top: 1px solid var(--pk-line); color: var(--pk-muted); font-size: 12px; }
.route-profile-section .flight-profile-area { fill: rgba(129,145,151,.12); }
.route-profile-section .flight-profile-line { stroke: #b0c1c7; stroke-width: 2; opacity: 1; }
.route-profile-section .profile-axis { fill: #91a5ad; letter-spacing: 0; font-size: 12px; }
.route-profile-section .profile-labels { fill: #c2d1d5; font-size: 13px; }
.route-profile-section .profile-nodes text { font-size: 12px; fill: #c2d1d5; }
.ofp-paper .route-profile-section { --pk-muted: #465b65; --pk-line: #bbc9d0; color: #213840; background: #fff; }
.ofp-paper .route-profile-section .plot-caption strong { color: #304c58; }
.ofp-paper .route-profile-section .flight-profile-line { stroke: #267f45; }
.ofp-paper .route-profile-section .flight-profile-area { fill: rgba(38,127,69,.08); }
.ofp-paper .route-profile-section .chart-grid { stroke: #d1dce1; }
.ofp-paper .route-profile-section .profile-axis,
.ofp-paper .route-profile-section .profile-nodes text { fill: #304c58; }
.ofp-paper .route-profile-section .profile-phase-markers text { fill: #006e80; }
.ofp-paper .route-profile-section .profile-phase-markers path { stroke: #00869a; }
.ofp-paper .route-profile-section .profile-axis-choice select { background: #f3f7f8; color: #263f4b; border-color: #a9bcc5; }
.map-scale path { fill: none; stroke: #91a5ad; stroke-width: 1.5; }
.map-scale text { fill: #91a5ad; font-size: 12px; }
.plot-endpoints { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px 16px; padding: 6px 16px 12px; color: var(--pk-muted); font-size: var(--pk-type-caption); }
.plot-source { padding: 0 16px 12px; color: var(--pk-muted); font-size: var(--pk-type-caption); }
.plot-source summary { cursor: pointer; }
.plot-source p { overflow-wrap: anywhere; }
.ofp-app .ofp-paper .plot-source { color: #172026; }
.ofp-app .ofp-paper :is(.ofp-runway-weather, .ofp-holding-conditions) dt { color: #334148; }
.ofp-app .ofp-paper .ofp-fuel-balance .fuel-shortfall { color: #922a24; font-weight: 700; background: #fbe4df; }
.ofp-app .ofp-paper :is(.ofp-fuel-balance, .ofp-diversion-wb) :is(table, th, td, summary) { font-size: 14px; }
.ofp-app .ofp-paper :is(.ofp-runway-weather, .ofp-holding-conditions) .source-detail-list > div { border-color: #ccd3d5; }
.ofp-app .ofp-paper th { color: #4c585d; }
.cruise-mass-summary table { width: 100%; border-collapse: collapse; }
.cruise-mass-summary th, .cruise-mass-summary td { padding: 6px 8px; text-align: right; border-bottom: 1px solid var(--pk-line); }
.cruise-mass-summary th:first-child, .cruise-mass-summary td:first-child { text-align: left; }
.ofp-paper .cruise-mass-summary th, .ofp-paper .cruise-mass-summary td { border-color: #cbd0ce; }
.route-profile-pending { padding: 16px; color: var(--pk-muted); font-size: var(--pk-type-caption); }
@media (max-width: 600px) {
    .route-map-svg, .route-profile-svg { min-width: 540px; }
    .ofp-app .airport-pair { grid-template-columns: max-content minmax(58px, 1fr) max-content; }
}

.route-basemap { fill: none; stroke-linejoin: round; stroke-linecap: round; }
.basemap-coastline { stroke: #577d89; stroke-width: 1.15; }
.basemap-boundary { stroke: #59615b; stroke-width: .9; stroke-dasharray: 3 3; }
.map-city-labels circle { fill: #829499; }
.map-city-labels text { fill: #94a4a8; font-size: 14px; font-weight: 400; paint-order: stroke; stroke: #0b1418; stroke-width: 3px; stroke-linejoin: round; }

.utc-date-time { width: min(100%, 296px); display: grid; grid-template-columns: minmax(150px, 184px) minmax(96px, 104px); gap: 8px; }
.utc-date-time input { min-width: 0; width: 100%; }
.utc-time-control { position: relative; min-width: 0; }
.utc-time-button { width: 100%; min-height: var(--pk-control-height); padding: 0 10px; border: 1px solid #2b3a41; border-radius: 6px; background: #0d1418; color: var(--pk-text); display: flex; align-items: center; justify-content: space-between; gap: 6px; font: inherit; cursor: pointer; }
.utc-time-button > span { width: 18px; height: 18px; display: grid; place-items: center; line-height: 1; }
.utc-clock-icon { width: 18px; height: 18px; flex: 0 0 18px; }
.utc-time-button:focus-visible { outline: 2px solid var(--pk-cyan); }
.utc-time-popover { position: absolute; z-index: 40; top: calc(100% + 6px); right: 0; width: 260px; max-width: calc(100vw - 32px); padding: 14px; border: 1px solid var(--pk-cyan); border-radius: 8px; background: #111b20; box-shadow: 0 12px 32px #0009; }
.utc-time-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 12px 0; }
.utc-time-actions { display: flex; justify-content: flex-end; gap: 8px; }
.utc-time-popover option.past-time-option { color: #59676d; }
.flight-level-picker { min-width: 0; display: grid; gap: 5px; }
.level-other-direction { color: #7b858c; background: #172027; }
.flight-level-hint, .flight-level-details { color: var(--pk-muted); font-size: var(--pk-type-micro); line-height: 1.4; }
.flight-level-details summary { color: var(--pk-cyan); cursor: pointer; }
.flight-level-details select { margin-top: 7px; }
.flight-level-details p { margin: 6px 0; }
.modal-validation { flex: 1 1 auto; max-width: 760px; max-height: 100px; overflow-y: auto; }
.modal-validation ul { margin: 0; padding-left: 16px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 28px; }
@media (max-width: 560px) {
    .modal-validation ul { grid-template-columns: 1fr; }
}
.passenger-count-select { width: 150px; margin: 8px 0; }
.form-grid.trip-loading-grid { grid-template-columns: minmax(65px,.55fr) minmax(65px,.55fr) minmax(215px,1.35fr) minmax(125px,.9fr) minmax(125px,.9fr) minmax(315px,1.8fr); align-items: end; }
.trip-loading-grid > * { min-width: 0; }
.trip-field-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 5px; }
.trip-field-heading b { color: var(--pk-cyan); white-space: nowrap; font-size: var(--pk-type-caption); }
.trip-fuel-field { font-weight: 600; }
.trip-fuel-field > .trip-field-heading { font-size: var(--pk-type-caption); margin-bottom: 4px; }
.fuel-mode-actions { display: flex; gap: 5px; align-items: baseline; white-space: nowrap; }
.fuel-mode-actions button { border: 0; background: transparent; padding: 0; color: var(--pk-cyan); font: inherit; font-size: 13px; cursor: pointer; }
.fuel-auto-value { width: 100%; min-height: var(--pk-control-height); text-align: left; padding: 8px 12px; border: 1px solid #30434a; border-radius: 7px; background: #0d1418; color: var(--pk-cyan); font: inherit; cursor: pointer; }
.trip-loading-notes { display: grid; gap: 4px; color: var(--pk-muted); margin: 8px 0 12px; }
.trip-loading-notes small { font-size: var(--pk-type-caption); }
@media (max-width: 1250px) { .form-grid.trip-loading-grid { grid-template-columns: 1fr 1fr minmax(220px,1.5fr); } }
@media (max-width: 700px) { .form-grid.trip-loading-grid { grid-template-columns: 1fr 1fr; } .trip-passengers, .trip-fuel-field { grid-column: 1 / -1; } }
.profile-phase-markers path { fill: none; stroke: #61c8d1; stroke-width: 1; stroke-dasharray: 4 4; opacity: .75; }
.profile-phase-markers text { fill: #b0d7dc; font-size: 12px; }
/* Runway-first planning and source-bound W&B overview. */
.ofp-app .runway-first-controls { display:grid; grid-template-columns:1fr 1fr; gap:14px; padding:16px; }
.runway-first-controls label { display:grid; gap:8px; font-weight:650; }
.runway-first-controls p { grid-column:1/-1; color:var(--pk-muted); margin:0; }
.ofp-app .loading-overview { display:grid; grid-template-columns:140px minmax(0,1fr); gap:14px; padding:16px; align-items:start; }
.floorplan-loading { position:relative; width:140px; height:820px; background:#10191e; border-radius:65px 65px 25px 25px; overflow:hidden; }
.floorplan-image { position:absolute; inset:0; width:140px; height:820px; opacity:.68; }
.floorplan-crew { position:absolute; left:12px; right:12px; top:210px; display:flex; gap:12px; }
.floorplan-crew span { flex:1; background:#dd941a; color:#071014; padding:8px 2px; font-size:12px; font-weight:800; text-align:center; border-radius:4px; }
.floorplan-cabinet { position:absolute; z-index:2; width:52px; min-height:19px; padding:2px 3px; border:1px solid #d5a442; border-radius:3px; background:#b57816e8; color:#071014; display:flex; align-items:center; justify-content:space-between; gap:2px; line-height:1; pointer-events:none; }
.floorplan-cabinet small { font-size:var(--pk-type-micro); font-weight:800; letter-spacing:-.04em; white-space:nowrap; }.floorplan-cabinet strong { font-size:var(--pk-type-micro); }
.floorplan-cabinet.cabinet-0 { left:9px; top:292px; }.floorplan-cabinet.cabinet-1 { right:9px; top:292px; }
.floorplan-cabinet.cabinet-2 { left:9px; top:445px; }.floorplan-cabinet.cabinet-3 { right:9px; top:445px; }
.floorplan-cabinet.cabinet-4 { left:9px; top:646px; }.floorplan-cabinet.cabinet-5 { left:9px; top:684px; }
.floorplan-seat { position:absolute; width:38px; height:42px; padding:2px; border:1px solid rgba(128,190,203,.82); border-radius:5px; display:flex; flex-direction:column; justify-content:center; align-items:center; background:rgba(16,31,43,.5); cursor:pointer; }
.floorplan-seat small { font-size:12px; }.floorplan-seat strong { font-size:14px; }
.floorplan-seat.occupied { background:rgba(155,223,101,.5); border-color:rgba(183,248,144,.82); color:#07180e; }
.floorplan-seat.empty { color:#bee9ee; }
.floorplan-seat:nth-of-type(odd) { left:17px; }.floorplan-seat:nth-of-type(even) { right:17px; }
.floorplan-seat.seat-0,.floorplan-seat.seat-1 { top:337px; }
.floorplan-seat.seat-2,.floorplan-seat.seat-3 { top:401px; }
.floorplan-seat.seat-4,.floorplan-seat.seat-5 { top:491px; }
.floorplan-seat.seat-6,.floorplan-seat.seat-7 { top:569px; }
.floorplan-seat.seat-8 { top:642px; left:auto; right:17px; }
.floorplan-baggage { position:absolute; top:725px; left:14px; right:14px; background:#318abc; color:white; padding:10px; display:grid; text-align:center; border-radius:4px; }
.floorplan-unit { position:absolute; bottom:6px; width:100%; text-align:center; font-size:12px; color:var(--pk-muted); }
.loading-ledger { min-width:0; }
.ledger-row { display:grid; grid-template-columns:1fr auto; gap:4px 12px; padding:10px; border-bottom:1px solid var(--pk-line-soft); font-size:13px; align-items:center; }
.ledger-row.subtotal { background:#273338; border-left:3px solid #5c9fad; margin-top:3px; }
.ledger-row small { grid-column:1/-1; color:var(--pk-muted); font-size:12px; }
.ledger-details { border-bottom:1px solid var(--pk-line-soft); }
.ledger-details summary { cursor:pointer; padding:10px 4px; font-size:13px; }
.ledger-details summary strong { float:right; font-weight:600; }
.ledger-editors { display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:4px 4px 12px; }
.ledger-editors label { display:grid; gap:4px; min-width:0; }.ledger-editors label span { font-size:12px; color:var(--pk-muted); }
.ledger-editors input { width:100%; min-width:0; }
.ledger-cabinets { display:grid; gap:5px; padding:0 4px 8px; }
.ledger-cabinets label { display:grid; grid-template-columns:minmax(0,1fr) 70px 20px; align-items:center; gap:5px; font-size:12px; }
.ledger-cabinets label > span { min-width:0; display:flex; justify-content:space-between; gap:6px; }.ledger-cabinets label > span small { color:var(--pk-muted); white-space:nowrap; }
.ledger-cabinets input { width:100%; min-width:0; }.ledger-cabinets label > small { color:var(--pk-muted); }
.ledger-passengers { padding:0 4px 8px; display:grid; gap:5px; }
.ledger-passengers label { display:grid; grid-template-columns:1fr 70px 20px; align-items:center; gap:5px; font-size:12px; }
.ledger-passengers input { width:100%; min-width:0; }
.ledger-passengers p { color:var(--pk-muted); font-size:12px; margin:4px 0; }
.cg-stage-legend { display:flex; flex-wrap:wrap; gap:14px; padding:14px 18px 0; font-size:12px; }
.cg-stage-legend span { display:flex; gap:5px; align-items:center; }.cg-stage-legend i { width:7px; height:7px; border-radius:50%; background:var(--stage-color); }
.cg-stage circle { fill:var(--stage-color); stroke:#071013; stroke-width:1.5; }
.cg-stage path { stroke:var(--stage-color); opacity:.6; fill:none; stroke-width:.8; stroke-dasharray:2 3; }
.cg-stage text { fill:var(--stage-color); font-size:12px; font-weight:750; paint-order:stroke; stroke:#10191e; stroke-width:3px; }
.cg-limit path { fill:none; stroke:#e49f5d; stroke-width:1; }.cg-limit text { fill:#e49f5d; font-size:12px; }
.ofp-app .cg-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
.ofp-app .cg-chart { height:auto; aspect-ratio:590/395; }
@media (max-width:640px) {
 .ofp-app .runway-first-controls { grid-template-columns:1fr; }
 .ofp-app .loading-overview { grid-template-columns:112px minmax(0,1fr); gap:8px; padding:10px; }
 .floorplan-loading { transform:scale(.8); transform-origin:top left; margin-right:-28px; margin-bottom:-164px; }
 .ledger-editors { grid-template-columns:1fr; }.ledger-row { padding:8px 5px; gap:3px; font-size:12px; }
 .ledger-details summary strong { float:none; display:block; padding-top:4px; }
 .ledger-passengers label,.ledger-cabinets label { grid-template-columns:1fr 55px; }.ledger-passengers > label > small,.ledger-cabinets > label > small { display:none; }
}

.runway-wind-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-bottom: 12px; align-items: start; }
.runway-wind-panel { padding: 12px; min-width: 0; }
.runway-wind-panel > summary { cursor: pointer; color: var(--accent, #2ed9e5); }
.runway-wind-content { margin-top: 12px; }
.runway-wind-content p { margin: 8px 0; }
.runway-wind-content table { width: 100%; border-collapse: collapse; }
.runway-wind-content th, .runway-wind-content td { padding: 6px; text-align: left; border-bottom: 1px solid #26383f; }
.runway-wind-content td small { margin-left: 8px; font-size: 12px; }
.runway-wind-content .raw-weather { overflow-wrap: anywhere; }
.runway-wind-content details { margin-top: 10px; }
@media (max-width: 800px) { .runway-wind-grid { grid-template-columns: 1fr; } }

.waypoint-table select { height: 36px; min-width: 0; width: 88px; max-width: 100%; border: 1px solid var(--pk-line); border-radius: 5px; padding: 0 3px; background: #091014; color: #dce8ea; font: inherit; font-size: 13px; }
.route-editor .main-waypoint-table, .route-editor .alternate-waypoint-table { min-width: 0; table-layout: fixed; }
.route-editor .waypoint-table td, .route-editor .waypoint-table th { padding: 5px 3px; }
.waypoint-table .journal-number { width: 52px; }
.route-editor .waypoint-table td:first-child { white-space: nowrap; padding-right: 8px; }
.waypoint-table .journal-via { width: 40px; }
.waypoint-table .journal-level { width: 94px; }
.waypoint-table .journal-track, .waypoint-table .journal-speed { width: 34px; }
.waypoint-table .journal-distance, .waypoint-table .journal-time { width: 44px; }
.waypoint-table .journal-fuel { width: 50px; }
.waypoint-table .journal-actions { width: 66px; }
.route-editor .waypoint-table td:nth-child(2) { white-space: normal; overflow-wrap: anywhere; }
.route-editor .waypoint-table .journal-coordinate { white-space: nowrap; overflow-wrap: normal; font-size: 12px; line-height: 1.3; }
.route-editor .waypoint-table .row-actions { display: table-cell; white-space: nowrap; padding-left: 0; padding-right: 4px; text-align: center; vertical-align: middle; }
.route-editor .waypoint-table .row-actions button { width: 28px; min-width: 28px; height: 36px; min-height: 36px; font-size: 20px; line-height: 1; }
.route-editor .waypoint-table .waypoint-insertion td { padding: 5px 8px; white-space: normal; background: rgba(51,212,223,.055); }
.inline-waypoint { padding: 4px 0; grid-template-columns: 14px minmax(100px,1fr) 78px auto 32px; }
.alternate-waypoint-insertion { grid-template-columns: 14px minmax(100px,1fr) auto 32px; }
.inline-waypoint .insertion-cancel { padding: 0; }
.route-missed-symbol path { fill: none; stroke: #2864d8; stroke-width: 2; stroke-dasharray: none; vector-effect: non-scaling-stroke; }
.ofp-app .route-map-section .missed-symbol-label text { font-size: 12px; font-weight: 700; fill: #33d4df; stroke: #000; stroke-width: 2; paint-order: stroke fill; }
.route-map-light .route-missed-symbol path { stroke: #005eaa; }
.ofp-app .route-map-light .missed-symbol-label text { fill: #005eaa; stroke: #fff; }

.route-controls { grid-template-columns: minmax(150px,1fr) minmax(150px,1fr) minmax(100px,.7fr) minmax(180px,1fr) minmax(220px,1.6fr); }
.route-controls > .flight-level-picker, .dispatch-fields > .flight-level-picker { grid-column: span 2; }
.flight-level-fields { display: grid; grid-template-columns: minmax(0,1fr) minmax(260px,1fr); gap: 10px; }
.form-grid.two.dispatch-fields { max-width: none; grid-template-columns: repeat(3,minmax(0,1fr)); }
.utc-date-control { min-width: 0; display: grid; grid-template-columns: minmax(0,1fr) 40px; overflow: hidden; border: 1px solid #2b3a41; border-radius: 6px; background: #0d1418; }
.utc-date-control:focus-within { border-color: var(--pk-cyan); box-shadow: 0 0 0 2px rgba(66,220,231,.12); }
.utc-date-control > input { min-height: var(--pk-control-height); border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.utc-date-control > input:focus { border-color: transparent; box-shadow: none; outline: 0; }
.utc-date-control .utc-date-text { padding-right: 4px; }
.utc-date-control .utc-calendar-picker { width: 40px; padding: 0 10px; border-left: 1px solid #2b3a41; color: transparent; }
.utc-calendar-picker::-webkit-datetime-edit { display: none; }
.utc-calendar-picker::-webkit-calendar-picker-indicator { width: 18px; height: 18px; margin: auto; padding: 0; cursor: pointer; }
.trip-weather-status { padding: 8px 24px; border-bottom: 1px solid var(--pk-line); display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 14px; }
.trip-weather-status strong { color: var(--pk-cyan); }
.runtime-status-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 6px 24px; border-bottom: 1px solid var(--pk-line); }
.ofp-app .runtime-status-row .runtime-banner { flex: 0 1 auto; width: max-content; max-width: 100%; min-height: 34px; padding: 6px 12px; border: 1px solid rgba(255,182,72,.28); border-radius: 6px; }
.ofp-app .runtime-status-row .trip-weather-status { flex: 0 1 auto; max-width: 100%; min-height: 34px; align-items: center; padding: 6px 12px; border: 1px solid var(--pk-line); border-radius: 6px; background: #0e1b20; }
@media (max-width: 700px) { .runtime-status-row { padding-inline: 14px; } }
.weather-import-shortcut { display: none; margin-left: auto; padding: 0; border: 0; background: transparent; color: var(--pk-cyan); cursor: pointer; }
.weather-import-shortcut:disabled { color: var(--pk-muted); cursor: default; }
.metavia-import-dialog { width: min(780px, 100%); }
.metavia-import-body { display: grid; gap: 13px; padding-top: 18px; }
.metavia-import-body > p { margin: 0; line-height: 1.5; }
.metavia-import-body > a { width: max-content; display: inline-flex; align-items: center; gap: 7px; color: var(--pk-cyan); }
.metavia-import-text { display: grid; gap: 7px; color: #c8d4d7; font-size: var(--pk-type-caption); }
.metavia-import-text textarea { width: 100%; min-height: 230px; resize: vertical; padding: 11px 12px; border: 1px solid #354a53; border-radius: 8px; background: #091318; color: #dce7eb; font: var(--pk-type-caption)/1.5 ui-monospace, "Cascadia Mono", monospace; outline: 0; }
.metavia-import-text textarea:focus { border-color: var(--pk-cyan); box-shadow: 0 0 0 2px rgba(66,220,231,.08); }
.metavia-import-body .notice-box { display: grid; gap: 5px; padding: 11px 13px; border: 1px solid rgba(255,183,77,.35); border-radius: 8px; background: rgba(255,183,77,.06); color: #d7e1e3; font-size: var(--pk-type-caption); line-height: 1.45; }
.metavia-import-body .notice-box strong { color: var(--pk-amber); font-size: var(--pk-type-micro); letter-spacing: .08em; }
.metavia-import-message { margin: 0; padding: 10px 12px; border-radius: 7px; font-size: var(--pk-type-caption); }
.metavia-import-message.success { background: rgba(142,229,92,.08); color: var(--pk-lime); }
.metavia-import-message.error { background: rgba(255,99,99,.08); color: var(--pk-red); }
.trip-more { position: relative; }
.trip-more summary { cursor: pointer; list-style: none; display: grid; place-items: center; min-height: 36px; }
.trip-more summary::-webkit-details-marker { display: none; }
.trip-more > div { position: absolute; right: 0; top: 100%; z-index: 50; min-width: 240px; display: grid; padding: 6px; background: #102027; border: 1px solid var(--pk-line); border-radius: 6px; }
.trip-more button { min-height: 36px; padding: 8px; text-align: left; background: transparent; color: var(--pk-text); border: 0; font: inherit; cursor: pointer; }
.trip-more button:hover { background: #20323b; }
.calculation-findings { padding: 12px; margin-bottom: 12px; }
.calculation-findings p { margin: 6px 0; }
@media (max-width: 1100px) { .route-controls { grid-template-columns: repeat(3,minmax(0,1fr)); } .route-summary-inline { grid-column: 1 / -1; } }
@media (max-width: 700px) { .route-controls, .form-grid.two.dispatch-fields { grid-template-columns: repeat(2,minmax(0,1fr)); } .route-controls > .flight-level-picker, .dispatch-fields > .flight-level-picker { grid-column: 1 / -1; } .trip-weather-status { padding-inline: 14px; } .weather-import-shortcut { display: inline-block; } .metavia-import-text textarea { min-height: 190px; } }

/* Flight controls keep their top row fixed while the guidance expands below it. */
.flight-plan-view .route-controls { grid-template-columns: minmax(170px,1.05fr) minmax(190px,1fr) minmax(260px,1.2fr) minmax(190px,1.05fr) minmax(240px,1.4fr); align-items: start; }
.route-controls > .flight-level-picker, .route-controls .flight-level-fields { display: contents; }
.route-controls .flight-level-explanation { grid-column: 1/-1; grid-row: 2; }
.route-controls .flight-level-explanation p { margin: 8px 0 0; }
.route-controls label { min-width: 0; }
.route-controls .route-summary-inline { align-items: start; min-height: 0; padding-top: 0; }
.route-summary-inline small { min-height: 20px; }
.anti-ice-panel, .terminal-planning { padding: 16px; margin-bottom: 14px; }
.anti-ice-panel h2 { margin: 0 0 12px; }
.anti-ice-fields { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); align-items: start; gap: 12px; }
.anti-ice-fields > .cruise-equipment-fields { display: contents; }
.anti-ice-fields label { display: grid; gap: 5px; }
.anti-ice-notes { margin: 12px 0; }
.terminal-selection > label { display: block; max-width: 380px; }
.terminal-selection > label select { margin-top: 5px; }
.terminal-planning .runway-first-controls { padding: 12px 0 0; }
.terminal-planning .procedure-controls { margin-top: 12px; }
.alternate-arrival-editor { margin-top: 16px; border-top: 1px solid var(--pk-line); padding-top: 16px; }
.alternate-runway { display: grid; gap: 8px; font-weight: 650; max-width: 480px; }
.alternate-runway select { width: 100%; }
.alternate-procedure-controls { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.alternate-journal { border-top: 1px solid var(--pk-line); }
.ofp-app .alternate-journal > header { min-height: 46px; padding: 5px 13px; border-bottom: 1px solid var(--pk-line-soft); display: flex; align-items: center; gap: 15px; }
.alternate-journal header small { color: var(--pk-muted); }
@media (max-width: 760px) { .alternate-procedure-controls { grid-template-columns: 1fr; } }
.waypoint-table .drag-handle { display: inline-block; width: 18px; min-width: 18px; height: 28px; min-height: 28px; margin-right: 4px; padding: 0; border: 0; background: transparent; color: var(--pk-muted); cursor: grab; }
.waypoint-table .drag-handle:disabled { opacity: .3; cursor: default; }
.waypoint-table .dragging { opacity: .5; }
.waypoint-table .drag-handle { touch-action: none; user-select: none; }
.waypoint-table .drop-target { outline: 2px solid #33d4df; outline-offset: -2px; }
@media (max-width: 1600px) {
    .flight-plan-view .route-controls { grid-template-columns: minmax(150px,1fr) minmax(190px,1fr) minmax(260px,1.2fr) minmax(190px,1fr); }
    .route-controls .route-summary-inline { grid-column: 1/-1; grid-row: 2; border: 0; }
    .route-controls .flight-level-explanation { grid-row: 3; }
}
@media (max-width: 1200px) {
    .flight-plan-view .route-controls { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .route-controls .route-summary-inline { grid-row: 3; }
    .route-controls .flight-level-explanation { grid-row: 4; }
    .route-controls > label:nth-child(3) { grid-column: auto; }
}
@media (max-width: 760px) { .anti-ice-fields { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 600px) {
    .flight-plan-view .route-controls, .flight-level-fields { grid-template-columns: minmax(0,1fr); }
    .route-controls .route-summary-inline { grid-row: 5; }
    .route-controls .flight-level-explanation { grid-row: 6; }
}
@media (max-width: 480px) { .anti-ice-fields { grid-template-columns: 1fr; } }

/* Places and coordinate entry share the compact planning controls. */
.airport-entry { position: relative; }
.airport-entry > input { padding-right: 44px; }
.airport-entry > small { right: 44px; }
.airport-add-button { position: absolute; right: 1px; top: 1px; bottom: 1px; width: 36px; padding: 0; border: 0; border-left: 1px solid var(--border); border-radius: 0 7px 7px 0; color: var(--cyan); background: #101c21; font-size: 24px; cursor: pointer; }
.airport-add-button:disabled { opacity: .4; cursor: default; }
.places-layout { display: grid; grid-template-columns: minmax(240px, 31%) minmax(0, 1fr); gap: 16px; align-items: start; }
.places-list { padding: 12px; }
.places-search { display: flex; gap: 8px; margin-bottom: 10px; }
.places-search input { min-width: 0; }
.places-items { max-height: 66vh; overflow: auto; margin-top: 12px; }
.place-item { width: 100%; display: grid; gap: 4px; text-align: left; padding: 14px 12px; border: 0; border-bottom: 1px solid #263740; background: transparent; color: #c5d1d5; cursor: pointer; }
.place-item strong { color: #33d4df; font-size: 20px; }
.place-item.selected { background: #143038; box-shadow: inset 3px 0 #33d4df; }
.place-item small { color: #8c9ea6; }
.place-detail { min-width: 0; padding: 20px; }
.place-detail header { display: flex; justify-content: space-between; align-items: start; gap: 12px; }
.place-detail h2 { margin: 6px 0 20px; font-size: 22px; }
.place-facts { display: grid; grid-template-columns: minmax(125px, 26%) minmax(0, 1fr); margin: 0; }
.place-facts dt, .place-facts dd { padding: 10px 0; margin: 0; border-bottom: 1px solid #263740; font-size: 14px; overflow-wrap: anywhere; }
.place-facts dt { color: #8c9ea6; padding-right: 12px; }
.place-facts dd a { display: block; color: #33d4df; margin-top: 5px; }
.place-runway-table { overflow-x: auto; }
.place-runway-table table { width: 100%; border-collapse: collapse; font-size: 14px; }
.place-runway-table th, .place-runway-table td { padding: 10px 7px; border-bottom: 1px solid #263740; text-align: left; }
.place-runway-table small { display: block; color: #8c9ea6; margin-top: 5px; }
.place-runway-table td:nth-child(2) { min-width: 195px; }
.place-notes { white-space: pre-wrap; color: #aebfc7; font-size: 14px; line-height: 1.6; }
.place-editor-scrim { z-index: 2200; }
.place-editor { max-width: 1100px; }
.place-editor form { min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
.place-editor .modal-body { overflow-y: auto; }
.place-editor .modal-footer { flex: 0 0 auto; gap: 12px; }
.place-editor .modal-footer [role=alert] { color: #ff6868; margin-right: auto; }
.place-editor label { font-size: 14px; }
.place-editor input, .place-editor select, .places-page input, .places-page select { font-size: 14px; height: 36px; min-height: 36px; }
.place-editor textarea { display: block; width: 100%; box-sizing: border-box; font: inherit; font-size: 14px; color: #dce7eb; background: #091318; border: 1px solid #354a53; border-radius: 8px; padding: 10px; margin-top: 6px; }
.coordinate-input input { width: 100%; }
.coordinate-input small { color: #ff6868; font-size: 14px; }
.place-favorite { display: flex; align-items: center; gap: 8px; }
.place-favorite input { width: 18px; }
.place-runway-editor { border: 1px solid #354a53; border-radius: 8px; padding: 14px; margin: 12px 0; }
.place-runway-editor .subtle-button { margin-top: 12px; }
.place-delete-confirm { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.place-waypoint-select { display: block; padding: 12px 16px; font-size: 14px; }
@media (max-width: 1100px) { .places-layout { grid-template-columns: 250px minmax(0,1fr); } .place-facts { grid-template-columns: 1fr 2fr; } }
@media (max-width: 760px) {
    .places-layout { grid-template-columns: 1fr; }
    .places-items { max-height: 240px; }
    .place-editor .form-grid.three { grid-template-columns: 1fr 1fr; }
    .rail-nav { grid-template-columns: repeat(5, minmax(0, 1fr)); }
    .place-detail { padding: 14px; }
}
@media (max-width: 480px) { .place-editor .form-grid.three { grid-template-columns: 1fr; } .place-facts { grid-template-columns: 1fr; } .place-facts dt { border-bottom: 0; padding-bottom: 0; } }

/* The rail and trip sections are the application's two primary menus. */
.ofp-app .rail-item > span:nth-child(2),
.ofp-app .trip-tabs button > span {
    font-size: calc(1em + 2px);
    font-weight: 700;
}

.draft-conflict-banner { justify-content: space-between; }
.draft-conflict-copy { min-width: 0; display: flex; align-items: center; gap: 14px; }
.draft-conflict-actions { flex: 0 0 auto; display: flex; gap: 8px; }
.draft-conflict-actions .ghost-button { min-height: 34px; }
@media (max-width: 800px) {
    .draft-conflict-banner, .draft-conflict-copy { align-items: flex-start; flex-direction: column; }
    .draft-conflict-actions { width: 100%; flex-wrap: wrap; }
    .draft-conflict-actions .ghost-button { flex: 1 1 220px; }
}
.ofp-paper .profile-labels { fill: #304c58; }
@font-face { font-family: "OFP Mono"; src: url("fonts/LiberationMono-Regular.ttf") format("truetype"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "OFP Mono"; src: url("fonts/LiberationMono-Bold.ttf") format("truetype"); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: "OFP Mono"; src: url("fonts/LiberationMono-Italic.ttf") format("truetype"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "OFP Mono"; src: url("fonts/LiberationMono-BoldItalic.ttf") format("truetype"); font-weight: 700; font-style: italic; font-display: swap; }

.route-map-geometry-notice { margin: 4px 20px 8px; color: var(--pk-text-secondary, #afc3c9); font-size: 12px; line-height: 1.35; flex: 0 0 auto; }
