:root {
  color-scheme: light;
  --ink-950: #06111d;
  --ink-900: #0b1724;
  --ink-800: #142333;
  --slate-900: #17212b;
  --slate-600: #5f6b76;
  --slate-400: #98a2ac;
  --slate-200: #dfe4e8;
  --slate-100: #f1f4f6;
  --page: #f8fafb;
  --surface: #ffffff;
  --cyan-500: #08c4d8;
  --cyan-400: #22d3e5;
  --cyan-50: #ecfbfd;
  --coral-400: #ff9478;
  --coral-500: #ef6f52;
  --success: #18794e;
  --warning: #9a5b00;
  --error: #b42318;
  --line-dark: rgba(255, 255, 255, 0.16);
  --line-light: var(--slate-200);
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;
  --space-16: 64px;
  --radius-control: 6px;
  --radius-card: 8px;
  --radius-panel: 10px;
  --motion-fast: 150ms;
  --motion-normal: 180ms;
  font-family: Inter, "Noto Sans TC", "Source Han Sans TC", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }

html { background: var(--page); }

body {
  margin: 0;
  background: var(--page);
  color: var(--slate-900);
  font-size: 16px;
  line-height: 1.62;
  line-break: auto;
  overflow-x: hidden;
}

a {
  color: #087b8a;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.18em;
}

p, li, h1, h2, h3, strong, span { overflow-wrap: break-word; }

button, input, select { font: inherit; }

:where(a, button, input, select):focus-visible {
  outline: 3px solid var(--cyan-400);
  outline-offset: 3px;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 5;
  background: var(--ink-900);
  border-bottom: 1px solid var(--line-dark);
}

.nav {
  align-items: center;
  display: flex;
  gap: var(--space-6);
  justify-content: space-between;
  margin: 0 auto;
  max-width: 1280px;
  min-height: 64px;
  padding: var(--space-2) 32px;
}

.brand {
  align-items: center;
  color: #fff;
  display: inline-flex;
  flex: 0 0 auto;
  gap: var(--space-3);
  min-width: 0;
  text-decoration: none;
}

.brand-logo { display: block; height: 38px; max-width: 210px; width: auto; }
.port-console-brand { gap: 12px; margin-right: 12px; }
.port-console-brand .brand-mark { display: block; flex: 0 0 48px; height: auto; width: 48px; }
.port-console-brand .brand-wordmark { color: #fff; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 1rem; font-weight: 500; letter-spacing: 0; line-height: 1.2; white-space: nowrap; }
.port-console-brand .brand-wordmark-product, .port-console-brand .brand-signature { color: var(--cyan-400); }

.nav-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
  justify-content: flex-end;
}

.nav-links a.nav-link {
  position: relative;
  border: 0;
  border-radius: 0;
  color: #dfe8ed;
  font-size: 0.875rem;
  font-weight: 500;
  min-height: 44px;
  padding: 9px 25px 9px 25px;
  text-decoration: none;
  transition: color var(--motion-fast) ease, box-shadow var(--motion-fast) ease;
}

.nav-links a.nav-link::before, .nav-links a.nav-link::after { position: absolute; opacity: 0; transition: opacity var(--motion-fast) ease, transform var(--motion-fast) ease; }
.nav-links a.nav-link::before { color: var(--coral-400); content: ">"; left: 10px; transform: translateX(-3px); }
.nav-links a.nav-link::after { color: var(--cyan-400); content: "_"; right: 9px; }
.nav-links a.nav-link:hover, .nav-links a.nav-link:focus-visible { background: transparent; color: var(--cyan-400); }
.nav-links a.nav-link:hover::before, .nav-links a.nav-link:hover::after, .nav-links a.nav-link:focus-visible::before, .nav-links a.nav-link:focus-visible::after { opacity: 1; }
.nav-links a.nav-link:hover::before, .nav-links a.nav-link:focus-visible::before { transform: translateX(0); }
.nav-links a.nav-link.is-active { background: transparent; color: var(--cyan-400); }
.nav-links a.nav-link.is-active::before, .nav-links a.nav-link.is-active::after { opacity: 1; }
.terminal-hover { position: relative; }
.terminal-hover::before { color: var(--coral-400); content: ">"; display: inline-block; max-width: 0; opacity: 0; overflow: hidden; transform: translateX(-4px); transition: max-width var(--motion-fast) ease, opacity var(--motion-fast) ease, transform var(--motion-fast) ease, margin-right var(--motion-fast) ease; vertical-align: baseline; }
.terminal-hover::after { color: var(--cyan-400); content: "_"; display: inline-block; max-width: 0; opacity: 0; overflow: hidden; transition: max-width var(--motion-fast) ease, opacity var(--motion-fast) ease, margin-left var(--motion-fast) ease; vertical-align: baseline; }
.terminal-hover:hover::before, .terminal-hover:focus-visible::before { margin-right: 5px; max-width: 1em; opacity: 1; transform: translateX(0); }
.terminal-hover:hover::after, .terminal-hover:focus-visible::after { margin-left: 5px; max-width: 1em; opacity: 1; }
.currency-exchange-link { align-items: center; display: inline-flex; line-height: 1.3; vertical-align: middle; }
.currency-exchange-link::before, .currency-exchange-link::after { align-self: center; line-height: 1; vertical-align: middle; }
.currency-exchange-link::after { position: relative; top: 1px; }

.hero {
  background:
    linear-gradient(90deg, rgba(6, 17, 29, 0.94), rgba(6, 17, 29, 0.78) 54%, rgba(6, 17, 29, 0.5)),
    url("/assets/ahacruise-hero-v1.png") center / cover;
  border-bottom: 1px solid var(--line-dark);
  color: #fff;
  min-height: 0;
  position: relative;
}

.hero::after { background: var(--cyan-500); bottom: 0; content: ""; height: 3px; left: 0; position: absolute; right: 0; }

.hero-inner {
  align-items: center;
  display: grid;
  gap: var(--space-8);
  grid-template-columns: minmax(0, 1fr) minmax(260px, 360px);
  margin: 0 auto;
  max-width: 1280px;
  padding: var(--space-12) 32px;
}

.hero-copy { max-width: 760px; min-width: 0; width: 100%; }

.eyebrow {
  align-items: center;
  color: var(--cyan-400);
  display: inline-flex;
  font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace;
  font-size: 0.8125rem;
  font-weight: 600;
  gap: var(--space-2);
  letter-spacing: 0.02em;
  margin: 0 0 var(--space-3);
}

.eyebrow::before { background: currentColor; content: ""; display: inline-block; height: 8px; width: 8px; }

.hero h1, .page h1 {
  font-weight: 650;
  letter-spacing: -0.02em;
  overflow-wrap: break-word;
}

.hero h1 { color: #fff; font-size: clamp(2rem, 4vw, 2.5rem); line-height: 1.12; margin: 0; max-width: 760px; }
.page h1 { color: var(--slate-900); font-size: clamp(2rem, 4vw, 2.5rem); line-height: 1.12; margin: 0; max-width: 900px; min-width: 0; }
.hero p { color: #e8f0f2; font-size: 1.0625rem; line-height: 1.65; max-width: 680px; }

.hero-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-6); }

.button {
  align-items: center;
  border-radius: var(--radius-control);
  display: inline-flex;
  font-weight: 600;
  justify-content: center;
  min-height: 44px;
  padding: 10px 16px;
  text-decoration: none;
  transition: transform var(--motion-fast) ease, border-color var(--motion-fast) ease, background-color var(--motion-fast) ease;
}

.button:hover { transform: translateY(-1px); }
.button.primary { background: var(--cyan-500); color: var(--ink-950); }
.button.primary:hover { background: var(--cyan-400); }
.button.ghost { border: 1px solid rgba(255, 255, 255, 0.5); color: #fff; }
.button.ghost:hover { background: rgba(255, 255, 255, 0.1); border-color: #fff; }

.signal-panel {
  background: rgba(11, 23, 36, 0.9);
  border: 1px solid rgba(255, 255, 255, 0.24);
  border-radius: var(--radius-panel);
  color: #fff;
  justify-self: end;
  max-width: 360px;
  padding: var(--space-6);
  width: 100%;
}

.signal-panel span, .signal-panel small { color: #b7c6ce; display: block; font-weight: 500; }
.signal-panel strong { display: block; font-size: 1.5rem; font-weight: 650; line-height: 1.2; margin: var(--space-2) 0; }
.signal-metrics { display: grid; gap: var(--space-2); margin-top: var(--space-4); }
.signal-metrics span { background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.14); border-radius: var(--radius-control); color: #dfe8ed; font-size: 0.875rem; padding: 9px 10px; }
.signal-metrics b { color: var(--cyan-400); margin-right: var(--space-1); }

.page { margin: 0 auto; max-width: 1280px; padding: var(--space-8) 32px var(--space-16); width: 100%; }
.breadcrumbs { align-items: center; color: var(--slate-600); display: flex; flex-wrap: wrap; font-size: 0.8125rem; gap: var(--space-2); margin: 0 0 var(--space-6); }
.breadcrumbs a { color: #087b8a; }
.breadcrumbs span:last-child { color: var(--slate-900); }
.section { margin: var(--space-12) 0; min-width: 0; }
.section h2 { color: var(--slate-900); font-size: 1.875rem; font-weight: 650; line-height: 1.2; margin: 0 0 var(--space-3); }
.section-head { align-items: center; display: flex; gap: var(--space-3); justify-content: space-between; margin-bottom: var(--space-3); }
.section-head h2 { margin: 0; }
.section-head span { background: var(--cyan-50); border: 1px solid #b8eaf0; border-radius: 4px; color: #087b8a; font-size: 0.8125rem; font-weight: 600; padding: 4px 8px; }
.section > p, .page > p { color: var(--slate-600); overflow-wrap: break-word; word-break: break-word; }
.muted { color: var(--slate-600); }

.editorial-lede { align-items: end; border-bottom: 1px solid var(--line-light); display: grid; gap: var(--space-6); grid-template-columns: minmax(0, 1fr) minmax(220px, 340px); padding-bottom: var(--space-8); }
.editorial-lede h2 { font-size: clamp(1.75rem, 3.5vw, 2.5rem); font-weight: 650; line-height: 1.2; max-width: 760px; }
.editorial-lede p { color: var(--slate-600); font-size: 1.0625rem; max-width: 760px; }
.editorial-lede aside { background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--radius-card); padding: var(--space-4); }
.editorial-lede aside span, .editorial-lede aside strong { display: block; }
.editorial-lede aside span { color: var(--slate-600); font-size: 0.875rem; font-weight: 500; }
.editorial-lede aside strong { color: var(--slate-900); font-size: 1.0625rem; line-height: 1.35; margin-top: var(--space-1); }

.feature-list { border-bottom: 1px solid var(--line-light); border-top: 1px solid var(--line-light); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: var(--space-6); }
.feature-item { border-right: 1px solid var(--line-light); min-width: 0; padding: var(--space-6) var(--space-4); }
.feature-item:last-child { border-right: 0; }
.feature-item > span { color: var(--slate-600); display: block; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.75rem; font-weight: 600; margin-bottom: var(--space-2); }
.feature-item h2 { font-size: 1.125rem; margin-bottom: var(--space-2); }
.feature-item p { color: var(--slate-600); margin-bottom: 0; }
.feature-item a, .page-row h3 a { color: var(--slate-900); text-decoration: none; }
.page-list { border-top: 1px solid var(--line-light); }
.page-row { align-items: center; border-bottom: 1px solid var(--line-light); display: grid; gap: var(--space-6); grid-template-columns: minmax(0, 1fr) auto; min-width: 0; padding: var(--space-4) 0; }
.page-row h3 { font-size: 1.0625rem; line-height: 1.3; margin: 0 0 var(--space-1); }
.page-row p { margin: 0; }

.grid { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(245px, 1fr)); }
.card { background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--radius-card); color: var(--slate-900); min-width: 0; padding: var(--space-6); position: relative; }
.card::before { background: var(--cyan-500); content: ""; height: 3px; left: 0; position: absolute; right: 0; top: 0; }
.card h2, .card h3 { color: var(--slate-900); line-height: 1.3; margin: 0 0 var(--space-2); }
.card h3 { font-size: 1.125rem; }
.card p, .card li { color: var(--slate-600); }
.card .muted { color: var(--slate-600); }
.tag-list { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-4); }
.tag { background: var(--cyan-50); border: 1px solid #b8eaf0; border-radius: 4px; color: #087b8a; display: inline-block; font-size: 0.8125rem; font-weight: 600; padding: 4px 8px; }

.callout { background: var(--cyan-50); border: 1px solid #b8eaf0; border-left: 4px solid var(--cyan-500); border-radius: var(--radius-card); max-width: 100%; padding: var(--space-6); }
.callout.warning { background: #fff8eb; border-color: #f2d39b; border-left-color: var(--warning); }
.ship-snapshot { background: var(--ink-900); border: 1px solid var(--ink-800); border-radius: var(--radius-panel); color: #fff; padding: var(--space-6); }
.ship-snapshot h2, .ship-snapshot h3 { color: #fff; }
.spec-grid { display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.spec-card { background: rgba(255, 255, 255, 0.07); border: 1px solid rgba(255, 255, 255, 0.14); border-radius: var(--radius-card); min-width: 0; padding: var(--space-4); }
.spec-card span { color: #b7c6ce; display: block; font-size: 0.8125rem; font-weight: 500; }
.spec-card strong { color: #fff; display: block; font-size: 1.25rem; line-height: 1.2; margin-top: var(--space-1); }
.data-warning { color: var(--warning); font-weight: 600; }
.ship-snapshot .data-warning { color: #ffd27a; }

.ship-decision-page > .section:first-child { margin-bottom: var(--space-8); }
.ship-decision-summary { border-bottom: 1px solid var(--line-light); max-width: 880px; padding-bottom: var(--space-8); }
.ship-decision-summary h2 { font-size: clamp(2rem, 3.5vw, 2.75rem); max-width: 700px; }
.ship-decision-summary > p:last-child { color: var(--slate-600); font-size: 1.125rem; line-height: 1.65; margin-bottom: 0; max-width: 760px; }
.ship-decision-kicker { color: #087b8a; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.02em; margin: 0 0 var(--space-2); text-transform: uppercase; }
.ship-decision-grid { border-bottom: 1px solid var(--line-light); border-top: 2px solid var(--ink-900); display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.ship-decision-card { border-right: 1px solid var(--line-light); min-width: 0; padding: var(--space-5) var(--space-4); }
.ship-decision-card:last-child { border-right: 0; }
.ship-decision-card h3 { color: var(--slate-900); font-size: 1.125rem; line-height: 1.3; margin: 0 0 var(--space-2); }
.ship-decision-card p { color: var(--slate-600); line-height: 1.65; margin: 0; }
.ship-decision-tradeoff { background: var(--ink-900); color: #fff; display: grid; gap: var(--space-6); grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); padding: var(--space-6); }
.ship-decision-tradeoff h2 { color: #fff; margin-bottom: 0; }
.ship-decision-tradeoff > p:last-child { color: #dfe8ed; font-size: 1.0625rem; line-height: 1.65; margin: 0; }
.ship-decision-tradeoff .ship-decision-kicker { color: var(--cyan-400); }
.ship-decision-cost { border-left: 4px solid var(--coral-400); max-width: 880px; padding: var(--space-5) var(--space-6); }
.ship-decision-cost h2 { font-size: 1.5rem; }
.ship-decision-cost > p:last-child { color: var(--slate-600); line-height: 1.65; margin-bottom: 0; }
.ship-decision-cost-action { align-items: flex-start; flex-direction: column; gap: 2px; margin-top: var(--space-4); }
.ship-decision-cost-inputs { font-size: 0.8125rem; font-weight: 500; line-height: 1.4; }
.ship-decision-handoffs { border-bottom: 1px solid var(--line-light); border-top: 2px solid var(--ink-900); display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.ship-decision-handoff { border-right: 1px solid var(--line-light); min-width: 0; padding: var(--space-5) var(--space-4); }
.ship-decision-handoff:last-child { border-right: 0; }
.ship-decision-handoff h3 { font-size: 1.0625rem; line-height: 1.35; margin: 0 0 var(--space-2); }
.ship-decision-handoff h3 a { color: var(--slate-900); display: block; min-height: 44px; padding: 10px 0; text-decoration: none; }
.ship-decision-handoff h3 a:hover, .ship-decision-handoff h3 a:focus-visible { color: #087b8a; text-decoration: underline; text-underline-offset: 4px; }
.ship-decision-handoff p { color: var(--slate-600); line-height: 1.6; margin: 0; }

/* Ship L2 pages use the same console shell as port L2 pages. */
.port-console-body .ship-decision-page { max-width: 1680px; padding: 0 40px 72px; }
.ship-decision-hero { border-bottom: 1px solid var(--console-line); }
.ship-decision-hero-copy { align-self: center; max-width: 780px; min-width: 0; padding: 28px 40px 56px 0; }
.ship-decision-identity { align-items: center; border-bottom: 1px solid var(--console-line); color: var(--coral-400); display: flex; flex-wrap: wrap; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.6875rem; gap: 12px; letter-spacing: 0.1em; margin-bottom: var(--space-6); padding-bottom: var(--space-3); text-transform: uppercase; }
.ship-decision-identity strong { color: var(--console-ink); font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.04em; }
.ship-decision-identity-label { color: var(--console-muted); margin-left: 8px; }
.port-console-body .ship-decision-kicker { color: var(--cyan-400); }
.ship-decision-hero h1 { color: var(--console-ink); font-size: clamp(2rem, 3.4vw, 2.75rem); line-height: 1.14; margin: 0; }
.ship-decision-hero-dek { color: var(--console-muted); font-size: 1.0625rem; line-height: 1.75; margin: var(--space-5) 0 0; max-width: 680px; }
.ship-decision-fact-rail { border-bottom: 1px solid var(--console-line); border-top: 1px solid var(--console-line); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ship-decision-fact-rail > div { border-right: 1px solid var(--console-line); min-height: 112px; padding: 24px 20px; }
.ship-decision-fact-rail > div:last-child { border-right: 0; }
.ship-decision-fact-rail span { color: var(--console-muted); display: block; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.75rem; }
.ship-decision-fact-rail strong { color: var(--console-ink); display: block; font-size: 0.9375rem; line-height: 1.35; margin-top: 4px; }
.ship-decision-jump { align-items: center; border-bottom: 1px solid var(--console-line); display: flex; gap: 4px; margin-top: 0; overflow-x: auto; padding: 4px 0; }
.ship-decision-jump a { align-items: center; color: var(--console-muted); display: inline-flex; flex: 0 0 auto; font-size: 0.875rem; min-height: 44px; padding: 8px 12px; text-decoration: none; }
.ship-decision-jump a:hover, .ship-decision-jump a:focus-visible { background: var(--console-surface); color: var(--console-ink); outline: none; }
.port-console-body .ship-decision-summary { border-bottom-color: var(--console-line); max-width: 880px; }
.port-console-body .ship-decision-summary h2, .port-console-body .ship-decision-fit h2, .port-console-body .ship-decision-cost h2 { color: var(--console-ink); }
.port-console-body .ship-decision-summary > p:last-child, .port-console-body .ship-decision-card p, .port-console-body .ship-decision-cost > p:last-child { color: var(--console-muted); }
.port-console-body .ship-decision-fit .section-head span { background: transparent; border: 0; color: var(--console-muted); padding: 0; }
.port-console-body .ship-decision-grid { border-bottom-color: var(--console-line); border-top-color: var(--console-ink); }
.port-console-body .ship-decision-card { border-right-color: var(--console-line); }
.port-console-body .ship-decision-card h3 { color: var(--console-ink); }
.port-console-body .ship-snapshot { background: var(--console-surface); border-color: var(--console-line); border-radius: 0; }
.port-console-body .ship-snapshot h2, .port-console-body .ship-snapshot h3, .port-console-body .spec-card strong { color: var(--console-ink); }
.port-console-body .spec-card { background: transparent; border-color: var(--console-line); border-radius: 0; }
.port-console-body .spec-card span, .port-console-body .ship-snapshot .muted { color: var(--console-muted); }
.port-console-body .ship-decision-handoff { border-right-color: var(--console-line); }
.port-console-body .ship-decision-handoffs { border-bottom-color: var(--console-line); border-top-color: var(--console-ink); }
.port-console-body .ship-decision-handoff h3 a { color: var(--console-ink); }
.port-console-body .ship-decision-handoff p { color: var(--console-muted); }
.port-console-body .ship-decision-page .source-list, .port-console-body .ship-decision-page .source-list li { border-color: var(--console-line); }
.port-console-body .ship-decision-page .source-list li { color: var(--console-muted); }

@media (max-width: 900px) {
  .port-console-body .ship-decision-page { padding-left: 24px; padding-right: 24px; }
  .ship-decision-hero-copy { max-width: none; padding: 36px 0; }
}

@media (max-width: 820px) {
  .ship-decision-fact-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ship-decision-fact-rail > div { border-bottom: 1px solid var(--console-line); }
  .ship-decision-fact-rail > div:nth-child(2) { border-right: 0; }
  .ship-decision-fact-rail > div:last-child { border-bottom: 0; }
  .ship-decision-jump { flex-wrap: wrap; overflow-x: visible; }
  .ship-decision-jump a { flex: 1 1 calc(50% - 4px); min-width: 0; padding-left: 4px; padding-right: 4px; }
}

@media (max-width: 767px) {
  .port-console-body .ship-decision-page { padding-left: 16px; padding-right: 16px; }
  .ship-decision-hero-copy { padding: 28px 0 32px; }
}

.score-row { align-items: center; display: grid; gap: var(--space-2); grid-template-columns: minmax(110px, 170px) 1fr minmax(42px, auto); margin: var(--space-3) 0; }
.bar { background: var(--slate-200); border-radius: 4px; height: 8px; overflow: hidden; }
.bar span { background: var(--cyan-500); display: block; height: 100%; }
.table-wrap { overflow-x: auto; }
table { border-collapse: collapse; min-width: 680px; width: 100%; }
th, td { border-bottom: 1px solid var(--line-light); padding: var(--space-3) 10px; text-align: left; vertical-align: top; }
th { color: var(--slate-600); font-size: 0.8125rem; font-weight: 600; }
th:not(:first-child), td:not(:first-child) { font-variant-numeric: tabular-nums; }

.medical-article-page { max-width: 960px; }
.medical-article { color: var(--console-ink); font-size: 1.0625rem; line-height: 1.8; max-width: 760px; }
.medical-article h1 { color: var(--console-ink); font-size: clamp(2rem, 4vw, 3.45rem); line-height: 1.16; margin: 0 0 var(--space-6); }
.medical-article h2 { color: var(--console-ink); font-size: clamp(1.5rem, 2.8vw, 2.125rem); line-height: 1.25; margin: var(--space-10) 0 var(--space-3); }
.medical-article h3 { color: var(--console-ink); font-size: 1.25rem; margin: var(--space-8) 0 var(--space-3); }
.medical-article p, .medical-article li { color: var(--console-muted); }
.medical-article p { margin: 0 0 var(--space-5); }
.medical-article strong { color: var(--console-ink); }
.medical-article em { color: var(--console-muted); }
.medical-article a, .medical-article-back a { color: var(--cyan-400); text-decoration-thickness: 1px; text-underline-offset: 4px; }
.medical-article a:focus-visible, .medical-article-back a:focus-visible { outline: 2px solid var(--cyan-400); outline-offset: 4px; }
.medical-article ul { margin: 0 0 var(--space-5); padding-left: 1.25rem; }
.medical-article li + li { margin-top: var(--space-2); }
.medical-article blockquote { border-left: 2px solid var(--coral-400); margin: var(--space-6) 0; padding-left: var(--space-4); }
.medical-article blockquote p { color: var(--console-ink); font-weight: 600; }
.medical-table-wrap { border-bottom: 1px solid var(--console-line); margin: var(--space-6) 0; overflow-x: auto; }
.medical-table-wrap table { min-width: 560px; }
.medical-table-wrap th, .medical-table-wrap td { border-bottom-color: var(--console-line); color: var(--console-muted); }
.medical-table-wrap th { color: var(--console-ink); }
.medical-table-wrap .is-numeric { text-align: right; }
.medical-article-back { border-top: 1px solid var(--console-line); margin-top: var(--space-12); max-width: 760px; padding-top: var(--space-5); }

@media (max-width: 700px) {
  .medical-article-page { padding-left: 20px; padding-right: 20px; }
  .medical-article { font-size: 1rem; }
  .medical-article h1 { font-size: 2rem; }
}

.calculator { background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--radius-panel); color: var(--slate-900); display: grid; gap: var(--space-6); grid-template-columns: minmax(0, 1fr) minmax(240px, 330px); padding: var(--space-6); }
.finder { align-items: start; display: grid; gap: var(--space-6); grid-template-columns: minmax(250px, 360px) 1fr; }
.finder-panel { background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--radius-panel); color: var(--slate-900); padding: var(--space-6); }
.finder-panel h2, .calculator h2 { color: var(--slate-900); }
.finder-results { display: grid; gap: var(--space-3); }
.finder-result { align-items: center; background: var(--ink-900); border: 1px solid var(--ink-800); border-radius: var(--radius-card); color: #fff; display: flex; gap: var(--space-4); justify-content: space-between; max-width: 100%; min-width: 0; padding: var(--space-4); }
.finder-result.is-active { border-color: var(--cyan-400); box-shadow: 0 0 0 2px rgba(34, 211, 229, 0.18); }
.finder-result span { color: var(--cyan-400); font-weight: 600; }
.finder-result h2 { color: #fff; margin: var(--space-1) 0; }
.finder-result h2, .finder-result p { overflow-wrap: break-word; }
.finder-result p { color: #c9d5db; }
.finder-result a { color: var(--cyan-400); flex: 0 0 auto; font-weight: 600; }
.calculator > * { min-width: 0; }
.calculator table { min-width: 0; }
.calculator th, .calculator td { border-bottom-color: var(--line-light); }
.calculator th { color: #087b8a; }
.calculator td:last-child { text-align: right; }

label { color: var(--slate-900); display: grid; font-weight: 600; gap: var(--space-1); margin-bottom: var(--space-3); }
input, select { background: #fff; border: 1px solid #b7c2c9; border-radius: var(--radius-control); color: var(--slate-900); max-width: 100%; min-height: 44px; padding: 10px 12px; width: 100%; }
input:focus, select:focus { border-color: #087b8a; outline: 3px solid rgba(8, 196, 216, 0.22); }
.total { background: var(--ink-900); border: 1px solid var(--ink-800); border-radius: var(--radius-panel); color: #fff; padding: var(--space-6); }
.total span { color: #b7c6ce; font-weight: 500; }
.total strong { color: var(--cyan-400); display: block; font-size: 2rem; font-weight: 650; line-height: 1.2; margin-top: var(--space-2); font-variant-numeric: tabular-nums; }
.planner-shell { background: var(--ink-900); border: 1px solid var(--ink-800); border-radius: var(--radius-panel); color: #dfe8ed; padding: var(--space-6); }
.planner-intro { border-bottom: 1px solid var(--line-dark); padding-bottom: var(--space-5); }
.planner-intro h2 { color: #fff; font-size: clamp(1.45rem, 2vw, 2rem); max-width: 720px; }
.planner-intro > p:not(.planner-kicker):not(.planner-status) { color: #b7c6ce; max-width: 760px; }
.planner-kicker { color: var(--cyan-400); font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.75rem; font-weight: 650; letter-spacing: 0.1em; margin: 0 0 var(--space-2); }
.planner-status { align-items: baseline; color: #a9bbb9; display: flex; flex-wrap: wrap; font-size: 0.8125rem; gap: 8px; margin: var(--space-4) 0 0; }
.planner-status span:first-child { color: var(--coral-400); font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; }
.planner-status strong { color: #fff; font-size: inherit; }
.planner-grid { align-items: start; display: grid; gap: var(--space-6); grid-template-columns: minmax(0, 1fr) minmax(270px, 360px); margin-top: var(--space-6); }
.planner-form { display: grid; gap: var(--space-4); }
.planner-form fieldset { border: 1px solid var(--line-dark); margin: 0; min-width: 0; padding: var(--space-4); }
.planner-form legend { color: #fff; font-weight: 650; padding: 0 6px; }
.planner-form label { color: #dfe8ed; font-size: 0.875rem; }
.planner-form input, .planner-form select { background: #092027; border-color: #45636a; color: #fff; }
.planner-form input::placeholder { color: #89a19e; }
.planner-form input:focus, .planner-form select:focus { border-color: var(--cyan-400); outline-color: rgba(34, 211, 229, 0.2); }
.planner-details { border: 1px solid var(--line-dark); padding: var(--space-4); }
.planner-details summary { color: #fff; cursor: pointer; font-weight: 650; }
.planner-details > .muted { color: #a9bbb9; font-size: 0.8125rem; }
.planner-cost-fields { display: grid; gap: var(--space-3); grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: var(--space-4); }
.planner-cost-fields output { color: var(--cyan-400); font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; }
.planner-mode { align-items: center; border: 0 !important; display: flex; flex-wrap: wrap; gap: 14px; padding: 0 !important; }
.planner-mode label { align-items: center; display: flex; gap: 6px; margin: 0; }
.planner-mode input { min-height: auto; width: auto; }
.planner-result { background: #06161c; border: 1px solid #45636a; padding: var(--space-5); position: sticky; top: 16px; }
.planner-result > span { color: #a9bbb9; display: block; font-size: 0.8125rem; }
.planner-result > strong { color: var(--cyan-400); display: block; font-size: clamp(1.8rem, 3vw, 2.65rem); line-height: 1.08; margin: var(--space-2) 0; overflow-wrap: anywhere; }
.planner-result > p { color: #b7c6ce; font-size: 0.875rem; }
.planner-result-list { border-top: 1px solid var(--line-dark); display: grid; margin: var(--space-5) 0 0; }
.planner-result-list div { align-items: baseline; border-bottom: 1px solid var(--line-dark); display: flex; gap: var(--space-3); justify-content: space-between; padding: 10px 0; }
.planner-result-list dt { color: #a9bbb9; font-size: 0.8125rem; }
.planner-result-list dd { color: #fff; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.8125rem; margin: 0; text-align: right; }
.planner-unknown { border-left: 2px solid var(--coral-400); padding-left: 10px; }
.planner-quote { color: var(--cyan-400) !important; font-weight: 650; }
.planner-formula { border-top: 1px solid var(--line-dark); color: #a9bbb9; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.75rem; line-height: 1.6; margin: var(--space-6) 0 0; padding-top: var(--space-4); }
.credit-categories { display: grid; gap: 10px; margin-top: var(--space-4); }
.credit-row { display: grid; gap: var(--space-3); grid-template-columns: minmax(0, 1fr) minmax(130px, 0.45fr); }
.source-list { background: var(--surface); border: 1px solid var(--line-light); border-radius: var(--radius-card); color: var(--slate-600); font-size: 0.875rem; list-style-position: inside; padding: var(--space-4); }
.source-list a { color: #087b8a; overflow-wrap: break-word; }

.footer { background: var(--ink-900); border-top: 1px solid var(--line-dark); color: #b7c6ce; margin: var(--space-12) auto 0; max-width: 1280px; padding: var(--space-8) 32px var(--space-12); }
.footer-grid { display: grid; gap: var(--space-8); grid-template-columns: repeat(3, minmax(180px, 1fr)); max-width: 920px; }
.footer-grid nav { display: grid; align-content: start; gap: 4px; }
.footer-grid h2 { color: var(--cyan-400); font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.6875rem; letter-spacing: 0.12em; margin: 0 0 8px; }
.footer-terminal-link { color: #dfe8ed; display: inline-block; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.8125rem; line-height: 1.65; position: relative; text-decoration: none; width: fit-content; }
.footer-terminal-link::before { color: var(--coral-400); content: ">"; left: -14px; opacity: 0; position: absolute; transform: translateX(-4px); transition: opacity var(--motion-fast) ease, transform var(--motion-fast) ease; }
.footer-terminal-link::after { color: var(--cyan-400); content: "_"; opacity: 0; transition: opacity var(--motion-fast) ease; }
.footer-terminal-link:hover, .footer-terminal-link:focus-visible { color: #fff; }
.footer-terminal-link:hover::before, .footer-terminal-link:focus-visible::before, .footer-terminal-link:hover::after, .footer-terminal-link:focus-visible::after { opacity: 1; }
.footer-terminal-link:hover::before, .footer-terminal-link:focus-visible::before { transform: translateX(0); }
.footer-rule { border-top: 1px solid var(--line-dark); margin: var(--space-8) 0 var(--space-6); max-width: 920px; }
.footer-locale, .footer-legal { align-items: center; display: flex; flex-wrap: wrap; gap: 12px; }
.footer-prompt { color: var(--cyan-400); font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.8125rem; }
.footer-legal { color: #9db2ac; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.75rem; }
.footer-legal a { color: #dfe8ed; }
.footer-terminal { border-top: 1px solid var(--line-dark); font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; margin-top: var(--space-6); padding-top: var(--space-6); }
.footer-terminal-line { color: #dfe8ed; font-size: 0.8125rem; line-height: 1.8; }
.footer-terminal-prompt { color: var(--coral-400); }
.footer-terminal-url { color: #fff; }
.footer-terminal-bottomline { align-items: flex-end; display: flex; flex-wrap: wrap; gap: 16px 32px; justify-content: space-between; margin-top: 4px; }
.footer-system { align-items: end; display: grid; gap: var(--space-6); grid-template-columns: minmax(0, 1fr) minmax(260px, auto); }
.footer-system-meta { display: grid; gap: var(--space-3); justify-items: start; }
.footer-terminal-cursor { animation: footer-cursor-blink 1s steps(1, end) infinite; background: var(--cyan-400); display: inline-block; height: 1em; margin-left: 2px; vertical-align: -0.12em; width: 0.55em; }
@keyframes footer-cursor-blink {
  0%, 45% { opacity: 1; }
  46%, 100% { opacity: 0; }
}
.footer-notice { color: #7f9693; font-size: 0.75rem; margin: var(--space-6) 0 0; max-width: 760px; }

/* The Keelung console footer is the shared contract for every internal route. */
.internal-footer {
  background: #0d2428;
  border-top: 0;
  color: #9db2ac;
  max-width: none;
  padding-left: 40px;
  padding-right: 40px;
}
.internal-footer strong { color: #f3eee5; }
.internal-footer .footer-rule {
  border-color: rgba(223, 228, 232, 0.24);
  margin-left: -40px;
  margin-right: -40px;
  max-width: none;
}
.internal-footer .footer-terminal { border-top: 0; margin-top: 0; padding-top: 0; }

@media (max-width: 820px) {
  .brand-logo { height: 32px; max-width: 174px; }
  .port-console-brand { gap: 10px; margin-right: 0; }
  .port-console-brand .brand-mark { flex-basis: 48px; width: 48px; }
  .nav { align-items: stretch; flex-direction: column; gap: var(--space-2); padding: var(--space-2) 24px; }
  .nav-links { flex-wrap: nowrap; justify-content: flex-start; margin: 0 -20px; overflow-x: auto; padding: 0 20px 2px; scrollbar-width: none; white-space: nowrap; }
  .nav-links::-webkit-scrollbar { display: none; }
  .hero-inner { grid-template-columns: 1fr; padding: var(--space-8) 24px var(--space-12); }
  .signal-panel { justify-self: stretch; max-width: none; }
  .editorial-lede { grid-template-columns: 1fr; }
  .feature-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .feature-item:nth-child(2n) { border-right: 0; }
  .page-row { align-items: start; grid-template-columns: 1fr; }
  .calculator, .finder, .planner-grid { grid-template-columns: 1fr; }
  .planner-result { position: static; }
  .finder-result { align-items: flex-start; flex-direction: column; }
  .score-row { grid-template-columns: minmax(90px, 130px) 1fr 38px; }
  .section-head { align-items: flex-start; flex-direction: column; }
  .spec-grid { grid-template-columns: 1fr; }
  .ship-decision-grid { grid-template-columns: 1fr; }
  .ship-decision-card { border-bottom: 1px solid var(--line-light); border-right: 0; }
  .ship-decision-card:last-child { border-bottom: 0; }
  .ship-decision-tradeoff { grid-template-columns: 1fr; }
  .ship-decision-handoffs { grid-template-columns: 1fr; }
  .ship-decision-handoff { border-bottom: 1px solid var(--line-light); border-right: 0; }
  .ship-decision-handoff:last-child { border-bottom: 0; }
  .internal-footer { padding-left: 24px; padding-right: 24px; }
  .internal-footer .footer-rule { margin-left: -24px; margin-right: -24px; }
}

@media (max-width: 460px) {
  .page { padding-left: 16px; padding-right: 16px; }
  .nav { padding-left: 16px; padding-right: 16px; }
  .hero-inner { padding: var(--space-8) 16px var(--space-12); }
  .hero h1 { font-size: 2rem; }
  .hero p { font-size: 1rem; }
  .feature-list { grid-template-columns: 1fr; }
  .feature-item { border-right: 0; }
  .page h1 { font-size: 2rem; }
  .section { margin: var(--space-8) 0; }
  .hero-actions .button { width: 100%; }
  .score-row { grid-template-columns: 1fr; }
  .footer { padding-left: 16px; padding-right: 16px; }
  .internal-footer { padding-left: 16px; padding-right: 16px; }
  .internal-footer .footer-rule { margin-left: -16px; margin-right: -16px; }
  .footer-grid { gap: var(--space-6); grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .footer-system { grid-template-columns: 1fr; }
  .footer-terminal-link::before, .footer-terminal-link::after { display: none; }
  .terminal-hover::before, .terminal-hover::after { display: none; }
  .footer-terminal-bottomline { align-items: flex-start; flex-direction: column; }
  .planner-shell { padding: var(--space-4); }
  .planner-cost-fields, .credit-row { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
  .button:hover { transform: none; }
  .port-command-cursor { animation: none; }
  .footer-terminal-cursor { animation: none; }
}

/* Port reference pages: editorial composition with a data-first reading order. */
.port-page { padding-top: 0; }
.port-masthead {
  background: var(--ink-950);
  border-bottom: 1px solid var(--line-dark);
  color: #fff;
  display: grid;
  grid-template-columns: minmax(220px, 0.82fr) minmax(0, 1.4fr);
  margin: 0 -32px;
  min-height: 360px;
  overflow: hidden;
  position: relative;
}
.port-masthead-media {
  background: var(--ink-950);
  min-height: 300px;
  order: 2;
  overflow: hidden;
  position: relative;
}
.port-masthead-figure { height: 100%; margin: 0; position: relative; }
.port-masthead-media img { display: block; height: 100%; object-fit: cover; object-position: var(--port-hero-position, 50% 50%); width: 100%; }
.port-masthead-media::before { background: linear-gradient(90deg, rgba(6, 17, 29, 0.04), rgba(6, 17, 29, 0.58)); content: ""; inset: 0; position: absolute; z-index: 1; }
.port-masthead-media::after { border: 1px solid rgba(255, 255, 255, 0.22); content: ""; inset: 16px; position: absolute; }
.port-masthead-media-empty { align-items: center; display: flex; justify-content: center; }
.port-masthead-media-empty::before { background: radial-gradient(circle at 50% 40%, rgba(20, 194, 218, 0.18), transparent 52%), linear-gradient(135deg, #06111d, #0b2d43); }
.port-masthead-fallback { align-items: center; color: var(--cyan-400); display: flex; flex-direction: column; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; gap: 8px; letter-spacing: 0.12em; position: relative; text-align: center; text-transform: uppercase; z-index: 2; }
.port-masthead-fallback strong { color: #fff; font-size: clamp(2rem, 5vw, 4rem); letter-spacing: 0.04em; }
.port-masthead-fallback small { color: #b7c6ce; font-size: 0.6875rem; letter-spacing: 0.08em; }
.port-masthead-content { align-self: center; max-width: 760px; min-width: 0; padding: var(--space-12) 32px; width: 100%; }
.port-masthead-code { align-items: center; border-bottom: 1px solid rgba(255, 255, 255, 0.2); color: var(--coral-400); display: flex; flex-wrap: wrap; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.6875rem; gap: 12px; letter-spacing: 0.1em; margin-bottom: var(--space-6); padding-bottom: var(--space-3); text-transform: uppercase; }
.port-masthead-code strong { color: #fff; font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.04em; }
.port-masthead-code .port-masthead-local-label { color: var(--console-muted); margin-left: 8px; }
.port-masthead-code .port-masthead-local-name { letter-spacing: 0; text-transform: none; }
.port-command-bar { align-items: center; background: rgba(6, 17, 29, 0.58); border: 1px solid rgba(223, 228, 232, 0.22); color: #e8f0f2; display: flex; flex-wrap: wrap; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.75rem; gap: 8px; line-height: 1.45; margin: 0 0 var(--space-6); min-height: 44px; padding: 10px 12px; }
.port-command-prompt { color: var(--coral-400); }
.port-command-bar code { color: #fff; flex: 1 1 12rem; font: inherit; min-width: 0; overflow-wrap: anywhere; }
@keyframes port-console-cursor-blink {
  0%, 45% { opacity: 1; }
  46%, 100% { opacity: 0; }
}
.port-command-cursor { animation: port-console-cursor-blink 1s steps(1, end) infinite; background: var(--cyan-400); display: inline-block; height: 14px; width: 7px; }
.port-masthead .breadcrumbs { color: #b7c6ce; margin-bottom: var(--space-8); }
.port-masthead .breadcrumbs a { color: var(--cyan-400); }
.port-masthead .breadcrumbs span:last-child { color: #fff; }
.port-masthead .eyebrow { color: var(--cyan-400); }
.port-masthead h1 { color: #fff; font-family: Inter, "Noto Sans TC", "Source Han Sans TC", ui-sans-serif, system-ui, sans-serif; font-size: clamp(2rem, 3.4vw, 2.75rem); font-weight: 650; letter-spacing: 0; line-height: 1.14; margin: 0; max-width: 680px; overflow-wrap: anywhere; }
.port-dek { color: #e8f0f2; font-size: 1.0625rem; line-height: 1.65; margin: var(--space-4) 0 0; max-width: 680px; overflow-wrap: anywhere; }
.port-actions { display: flex; flex-wrap: wrap; gap: var(--space-4); margin-top: var(--space-6); }
.text-action { color: var(--cyan-400); font-weight: 600; min-height: 44px; padding: 10px 0; }
.port-fact-rail { border-top: 1px solid rgba(255, 255, 255, 0.22); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: var(--space-8); padding-top: var(--space-4); }
.port-fact-rail > div { border-right: 1px solid rgba(255, 255, 255, 0.18); min-width: 0; padding-right: var(--space-3); }
.port-fact-rail > div + div { padding-left: var(--space-3); }
.port-fact-rail > div:nth-child(2n) { border-right: 0; }
.port-fact-rail > div:nth-child(n + 3) { border-top: 1px solid rgba(255, 255, 255, 0.18); margin-top: var(--space-4); padding-top: var(--space-4); }
.port-fact-rail > div:nth-child(3) { padding-left: 0; }
.port-fact-rail > div > span, .port-status { color: #b7c6ce; display: block; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.75rem; letter-spacing: 0.02em; }
.port-fact-rail strong { color: #fff; display: block; font-size: 0.9375rem; line-height: 1.35; margin-top: 4px; overflow-wrap: anywhere; }
.port-role-list { display: grid; gap: 4px; list-style: none; margin: 6px 0 0; padding: 0; }
.port-role-list li { align-items: flex-start; color: #8ea3ac; display: flex; font-size: 0.875rem; gap: 8px; line-height: 1.3; }
.port-role-list li.is-qualified { color: #fff; font-weight: 650; }
.port-role-copy { display: block; min-width: 0; }
.port-role-name { align-items: center; display: flex; flex-wrap: nowrap; gap: 6px; min-width: 0; }
.port-role-copy strong { color: inherit; font-size: 0.9375rem; line-height: 1.3; margin-top: 0; }
.port-role-tip { display: inline-flex; flex: 0 0 auto; position: relative; }
.port-role-tip summary { align-items: center; border: 1px solid rgba(183, 198, 206, 0.55); border-radius: 50%; color: #8ea3ac; cursor: help; display: inline-flex; font-family: Inter, "Noto Sans TC", "Source Han Sans TC", ui-sans-serif, system-ui, sans-serif; font-size: 0.6875rem; font-weight: 700; height: 16px; justify-content: center; line-height: 1; list-style: none; width: 16px; }
.port-role-tip summary::-webkit-details-marker { display: none; }
.port-role-tip summary:hover, .port-role-tip summary:focus-visible { border-color: var(--cyan-400); color: var(--cyan-400); }
.port-role-tip summary:focus-visible { outline: 2px solid var(--cyan-400); outline-offset: 3px; }
.port-role-tooltip { background: var(--console-surface); border: 1px solid var(--console-line); color: var(--console-ink); display: none; font-size: 0.75rem; font-weight: 400; left: 0; line-height: 1.45; padding: 8px 10px; position: absolute; top: calc(100% + 8px); width: 260px; z-index: 4; }
.port-role-tip:hover .port-role-tooltip, .port-role-tip[open] .port-role-tooltip { display: block; }
.port-role-mark { align-items: center; border: 1px solid rgba(183, 198, 206, 0.55); color: var(--cyan-400) !important; display: inline-flex !important; flex: 0 0 16px; font-family: Inter, "Noto Sans TC", "Source Han Sans TC", ui-sans-serif, system-ui, sans-serif !important; font-size: 0.75rem !important; height: 16px; justify-content: center; line-height: 1 !important; margin: 0 !important; width: 16px; }
.port-role-list li.is-qualified .port-role-mark { background: var(--cyan-400); border-color: var(--cyan-400); color: var(--console-bg) !important; }
.port-status { align-items: center; display: flex; gap: 6px; margin: var(--space-4) 0 0; }
.port-status { flex-wrap: wrap; max-width: 680px; }
.status-dot { background: var(--cyan-400); border-radius: 50%; display: inline-block; height: 7px; width: 7px; }
.port-masthead-guide { background: var(--ink-900); }
.port-masthead-guide .port-masthead-media { filter: saturate(0.7); }
.section-intro { color: var(--slate-600); max-width: 760px; }
.port-jump { align-items: center; border-bottom: 1px solid var(--line-light); border-top: 1px solid var(--line-light); display: flex; gap: 4px; margin: var(--space-8) 0 0; max-width: 100%; min-width: 0; overflow-x: auto; overscroll-behavior-inline: contain; padding: 4px 0; scrollbar-width: thin; }
.port-jump-label { color: var(--slate-600); flex: 0 0 auto; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.6875rem; letter-spacing: 0.1em; margin-right: var(--space-3); padding: 0 8px; }
.port-jump a { align-items: center; color: var(--slate-900); display: inline-flex; flex: 0 0 auto; gap: 8px; min-height: 44px; padding: 8px 12px; text-decoration: none; transition: background-color var(--motion-fast) ease, color var(--motion-fast) ease; }
.port-jump a:hover { background: var(--cyan-50); color: #087b8a; }
.port-jump a span { color: var(--coral-500); font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.6875rem; }
.port-overview { align-items: center; border-bottom: 1px solid var(--line-light); border-top: 1px solid var(--line-light); padding: var(--space-8) 0; }
.port-overview aside { background: var(--surface); border-left: 3px solid var(--cyan-500); border-radius: 0; padding: var(--space-4) var(--space-6); }
.port-overview aside span, .port-overview aside strong { display: block; }
.port-overview aside span { color: var(--slate-600); font-size: 0.875rem; }
.port-overview aside strong { line-height: 1.4; margin-top: var(--space-1); }
.port-overview aside a { color: var(--slate-900); text-decoration: none; }
.port-terminals .section-head, .port-transport .section-head { align-items: end; }
.port-terminals .section-head .eyebrow, .port-transport .section-head .eyebrow { margin-bottom: var(--space-2); }
.port-terminals .section-head > span, .port-transport .section-head > span { background: transparent; border: 0; border-bottom: 1px solid var(--cyan-500); border-radius: 0; color: var(--slate-600); padding: 4px 0; }
.port-terminals table, .port-transport table, .port-airports table { background: var(--surface); border-top: 2px solid var(--ink-900); margin-top: var(--space-6); min-width: 760px; }
.port-terminals th, .port-transport th { background: var(--slate-100); color: var(--slate-900); }
.port-terminals tbody tr:hover, .port-transport tbody tr:hover { background: var(--cyan-50); }
.port-terminals td:first-child { min-width: 190px; }
.port-terminals .tag { margin: 0 4px 4px 0; }
.terminal-code { color: var(--coral-500); display: block; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.08em; margin-bottom: 4px; }
.facility-disclosure summary { color: #087b8a; cursor: pointer; font-weight: 600; line-height: 1.4; min-height: 44px; padding: 10px 0; }
.facility-disclosure[open] summary { color: var(--slate-900); }
.facility-disclosure .tag-list { margin-top: 4px; }
.port-transport td:last-child { color: var(--slate-600); font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.8125rem; }
.port-terminals .table-wrap, .port-transport .table-wrap, .port-airports .table-wrap { border-bottom: 1px solid var(--line-light); }
.port-terminals .table-wrap::after, .port-transport .table-wrap::after, .port-airports .table-wrap::after { color: var(--slate-600); content: "左右滑動查看完整資料"; display: block; font-size: 0.8125rem; padding: var(--space-2) 0; }
.terminal-choice { border-bottom: 1px solid var(--line-light); border-top: 1px solid var(--line-light); }
.terminal-choice-list { border-bottom: 1px solid var(--line-light); border-top: 2px solid var(--ink-900); display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); margin-top: var(--space-6); }
.terminal-choice-list article { align-items: start; border-right: 1px solid var(--line-light); display: flex; gap: var(--space-4); min-width: 0; padding: var(--space-5) var(--space-4); }
.terminal-choice-list article:last-child { border-right: 0; }
.terminal-choice-list h3 { font-size: 1.125rem; margin: 0; }
.terminal-choice-list p { margin: 6px 0 0; }
.terminal-choice-note { margin-bottom: 0; padding-top: var(--space-4); }
.port-stats { border-top: 1px solid var(--line-light); padding-top: var(--space-6); }
.stat-rail { border-bottom: 1px solid var(--line-light); border-top: 1px solid var(--line-light); display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.stat-item { border-right: 1px solid var(--line-light); min-width: 0; padding: var(--space-6) var(--space-4); }
.stat-item:last-child { border-right: 0; }
.stat-item > span { color: var(--slate-600); font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.8125rem; }
.stat-item strong { color: var(--slate-900); display: block; font-size: 2rem; font-weight: 650; line-height: 1.15; margin-top: var(--space-2); }
.stat-item h2 { font-size: 1.125rem; margin: var(--space-2) 0 0; }
.stat-item p { margin-bottom: 0; }
.port-note { border-top: 2px solid var(--ink-900); min-width: 0; padding: var(--space-6) 0; }
.port-note h2 { font-size: 1.5rem; }
.port-note ul { margin-bottom: 0; }
.related-exploration { border-top: 1px solid var(--line-light); padding-top: var(--space-8); }
.related-links { border-bottom: 1px solid var(--line-light); border-top: 1px solid var(--line-light); display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.related-links div { border-right: 1px solid var(--line-light); min-width: 0; padding: var(--space-4); }
.related-links div:last-child { border-right: 0; }
.related-links a { color: var(--slate-900); font-weight: 600; text-decoration: none; }
.port-sources { border-top: 1px solid var(--line-light); padding-top: var(--space-8); }
.port-sources h2 { font-size: 1.5rem; }
.port-atlas { border-top: 2px solid var(--ink-900); }
.port-atlas table { background: var(--surface); border-top: 1px solid var(--line-light); margin-top: var(--space-6); min-width: 680px; }
.port-atlas th { background: var(--slate-100); color: var(--slate-900); }
.port-atlas tbody tr:hover { background: var(--cyan-50); }
.port-atlas td:first-child { width: 120px; }
.port-atlas a { color: var(--slate-900); font-weight: 650; text-decoration: none; }
.atlas-code { color: var(--coral-500); font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.8125rem; font-weight: 700; letter-spacing: 0.04em; }
.atlas-status { border: 1px solid currentColor; display: inline-block; font-family: "Geist Mono", "IBM Plex Mono", ui-monospace, monospace; font-size: 0.6875rem; letter-spacing: 0.06em; padding: 3px 6px; }
.atlas-status.is-live { color: var(--success); }
.atlas-status.is-draft { color: var(--slate-600); }
.embarkation-page .port-terminals { background: var(--slate-100); margin-left: -32px; margin-right: -32px; padding: var(--space-8) 32px; }
.embarkation-page .port-transport { border-top: 1px solid var(--line-light); }

@media (max-width: 820px) {
  .port-masthead { grid-template-columns: 1fr; margin-left: -24px; margin-right: -24px; }
  .port-masthead-media { height: clamp(170px, 48vw, 220px); min-height: 0; order: 0; }
  .port-masthead-media::after { inset: 12px; }
  .port-masthead-content { padding: var(--space-8) 24px var(--space-12); }
  .port-fact-rail { row-gap: var(--space-4); }
  .embarkation-page .port-terminals { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }
}

@media (max-width: 460px) {
  .nav { gap: var(--space-2); padding-left: 16px; padding-right: 16px; }
  .port-console-nav { align-items: center; display: grid; grid-template-columns: 1fr; }
  .port-console-brand { grid-column: 1; grid-row: 1; margin-right: 0; }
  .port-console-hierarchy { grid-column: 1; grid-row: 2; min-width: 0; }
  .nav-links, .port-console-nav .nav-links { flex: 1 1 auto; flex-wrap: wrap; grid-column: 1; grid-row: 3; justify-content: flex-start; margin: 0; overflow: visible; padding: 0; white-space: normal; }
  .nav-links a.nav-link, .port-console-nav .nav-links a.nav-link { padding-left: 14px; padding-right: 14px; }
  .port-masthead { margin-left: -16px; margin-right: -16px; }
  .port-masthead-content { padding-left: 16px; padding-right: 16px; }
  .port-masthead .breadcrumbs { margin-bottom: var(--space-6); }
  .port-masthead-code { margin-bottom: var(--space-5); }
  .port-command-bar { font-size: 0.6875rem; }
  .port-fact-rail strong { font-size: 0.875rem; }
  .port-overview { display: block; }
  .port-overview aside { margin-top: var(--space-6); }
  .port-terminals .section-head, .port-transport .section-head { align-items: start; }
  .port-terminals .section-head > span, .port-transport .section-head > span { align-self: start; }
  .stat-rail { grid-template-columns: 1fr; }
  .stat-item { border-bottom: 1px solid var(--line-light); border-right: 0; }
  .stat-item:last-child { border-bottom: 0; }
  .related-links { grid-template-columns: 1fr; }
  .related-links div { border-bottom: 1px solid var(--line-light); border-right: 0; }
  .related-links div:last-child { border-bottom: 0; }
  .embarkation-page .port-terminals { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; }
  .terminal-choice-list { grid-template-columns: 1fr; }
  .terminal-choice-list article { border-bottom: 1px solid var(--line-light); border-right: 0; }
  .terminal-choice-list article:last-child { border-bottom: 0; }
}

@media (max-width: 600px) {
  .port-atlas table { display: block; min-width: 0; }
  .port-atlas thead { display: none; }
  .port-atlas tbody, .port-atlas tr { display: block; width: 100%; }
  .port-atlas tr { border-bottom: 1px solid var(--line-light); padding: var(--space-4) 0; }
  .port-atlas td { border-bottom: 0; box-sizing: border-box; display: block; min-width: 0; overflow-wrap: anywhere; padding: 5px 0 5px 8.5rem; position: relative; white-space: normal; width: 100%; }
  .port-atlas td::before { color: var(--slate-600); content: attr(data-label); font-size: 0.75rem; font-weight: 600; left: 0; position: absolute; top: 7px; width: 7.5rem; }
  .port-terminals .table-wrap::after, .port-transport .table-wrap::after, .port-airports .table-wrap::after { display: none; }
  .port-terminals table, .port-transport table, .port-airports table { display: block; min-width: 0; }
  .port-terminals thead, .port-transport thead, .port-airports thead { display: none; }
  .port-terminals tbody, .port-transport tbody, .port-airports tbody, .port-terminals tr, .port-transport tr, .port-airports tr { display: block; width: 100%; }
  .port-terminals tr, .port-transport tr, .port-airports tr { border-bottom: 1px solid var(--line-light); padding: var(--space-4) 0; }
  .port-terminals td, .port-transport td, .port-airports td { border-bottom: 0; box-sizing: border-box; display: block; min-width: 0; overflow-wrap: anywhere; padding: 5px 0 5px 8.5rem; position: relative; white-space: normal; width: 100%; }
  .port-terminals td::before, .port-transport td::before, .port-airports td::before { color: var(--slate-600); content: attr(data-label); font-size: 0.75rem; font-weight: 600; left: 0; position: absolute; top: 7px; width: 7.5rem; }
  .port-terminals td:first-child { min-width: 0; }
}

/* Coastal Console production treatment: public facts in a dark editorial frame. */
.port-console-body {
  --console-bg: #0d2428;
  --console-surface: #122f33;
  --console-ink: #f3eee5;
  --console-muted: #9db2ac;
  --console-line: rgba(223, 228, 232, 0.24);
  background: var(--console-bg);
  color: var(--console-ink);
}
.port-console-site-header { background: var(--console-bg, #0d2428); border-bottom-color: var(--console-line, rgba(223, 228, 232, 0.24)); }
.port-console-nav { gap: 16px; max-width: 1680px; min-height: 88px; padding: 16px 40px; }
.port-console-nav .brand, .port-console-hierarchy { align-self: center; }
.port-console-hierarchy { flex: 1 1 220px; min-width: 180px; }
.port-console-nav .nav-links { flex: 0 1 auto; flex-wrap: nowrap; min-width: 0; white-space: nowrap; }
.port-console-nav .nav-links a.nav-link { padding-left: 18px; padding-right: 18px; }
.port-console-hierarchy .breadcrumbs { color: var(--console-muted); line-height: 1.2; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.port-console-hierarchy .breadcrumbs a { color: var(--cyan-400); }
.port-console-hierarchy .breadcrumbs span:last-child { color: var(--console-ink); }
.port-console-body .page { color: var(--console-ink); max-width: 1680px; padding: 0 40px var(--space-16); }
.port-console-body .port-masthead { background: transparent; border-bottom: 0; grid-template-columns: minmax(0, 1fr) minmax(0, 1.08fr); margin: 0; min-height: 0; overflow: visible; }
.port-console-body .port-masthead-media { aspect-ratio: 4 / 3; height: auto; margin-top: 24px; min-height: 0; }
.port-console-body .port-masthead-content { max-width: 780px; padding: 28px 40px 56px 0; }
.port-console-body .port-masthead-code { border-bottom-color: var(--console-line); }
.port-console-body .port-masthead .breadcrumbs { color: var(--console-muted); }
.port-console-body .port-masthead .breadcrumbs a { color: var(--cyan-400); }
.port-console-body .port-masthead .breadcrumbs span:last-child { color: var(--console-ink); }
.port-console-body .port-masthead h1 { color: var(--console-ink); }
.port-console-body .section h2, .port-console-body .section h3 { color: var(--console-ink); }
.port-console-body .port-dek { color: var(--console-muted); }
.port-console-body .port-airports { border-bottom: 1px solid var(--console-line); border-top: 1px solid var(--console-line); margin-bottom: 32px; margin-top: 32px; padding-bottom: 24px; padding-top: 24px; }
.port-console-body .port-airport-query { margin-bottom: 12px; max-width: 760px; }
.port-console-body .port-airports .section-intro { margin-bottom: 0; max-width: 760px; }
.port-console-body .port-airports table { margin-top: 16px; }
.port-console-body .port-fact-rail { border-bottom: 1px solid var(--console-line); border-top-color: var(--console-line); grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; padding-top: 0; }
.port-console-body .port-fact-rail > div { border-right: 1px solid var(--console-line); min-height: 112px; padding: 24px 20px; }
.port-console-body .port-fact-rail > div + div { padding-left: 20px; }
.port-console-body .port-fact-rail > div:nth-child(2n) { border-right: 1px solid var(--console-line); }
.port-console-body .port-fact-rail > div:nth-child(3n) { border-right: 0; }
.port-console-body .port-fact-rail > div:nth-child(n + 3) { border-top: 0; margin-top: 0; padding-top: 24px; }
.port-console-body .port-fact-rail > div > span { color: var(--console-muted); }
.port-console-body .port-fact-rail strong { color: var(--console-ink); }
.port-console-body .port-status { color: var(--console-muted); }
.port-console-body .port-jump { border-bottom-color: var(--console-line); border-top-color: var(--console-line); margin-top: 40px; }
.port-console-body .port-jump-label, .port-console-body .port-jump a { color: var(--console-muted); }
.port-console-body .port-jump a:hover { background: var(--console-surface); color: var(--console-ink); }
.port-console-body .port-overview { border-bottom-color: var(--console-line); border-top-color: var(--console-line); }
.port-console-body .port-overview aside { background: var(--console-surface); border-left-color: var(--cyan-500); }
.port-console-body .port-overview aside span, .port-console-body .port-overview aside a { color: var(--console-ink); }
.port-console-body .section-intro, .port-console-body .muted, .port-console-body .port-overview p, .port-console-body .port-note p { color: var(--console-muted); }
.port-console-body .port-terminals table, .port-console-body .port-transport table { background: transparent; border-top-color: var(--console-line); }
.port-console-body .port-terminals th, .port-console-body .port-transport th { background: transparent; color: var(--console-muted); }
.port-console-body .port-terminals td, .port-console-body .port-transport td { border-bottom-color: var(--console-line); color: var(--console-ink); }
.port-console-body .port-terminals tbody tr:hover, .port-console-body .port-transport tbody tr:hover { background: rgba(18, 47, 51, 0.72); }
.port-console-body .port-terminals .table-wrap, .port-console-body .port-transport .table-wrap { border-bottom-color: var(--console-line); }
.port-console-body .port-airports table { background: transparent; border-top-color: var(--console-line); }
.port-console-body .port-airports th { background: transparent; color: var(--console-muted); }
.port-console-body .port-airports td { border-bottom-color: var(--console-line); color: var(--console-ink); }
.port-console-body .port-airports tbody tr:hover { background: rgba(18, 47, 51, 0.72); }
.port-console-body .port-airports .table-wrap { border-bottom-color: var(--console-line); }
.port-console-body .port-terminals .table-wrap::after, .port-console-body .port-transport .table-wrap::after { color: var(--console-muted); }
.port-console-body .port-terminals .section-head > span, .port-console-body .port-transport .section-head > span { border-bottom-color: var(--cyan-500); color: var(--console-muted); }
.port-console-body .nearest-airports { border-bottom: 1px solid var(--console-line); margin: 32px 0; padding: 40px 0 36px; }
.nearest-airports-kicker { align-items: center; color: var(--cyan-400); display: flex; font: 0.75rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; letter-spacing: 0.08em; margin: 0 0 16px; text-transform: uppercase; }
.nearest-airports-kicker::before { background: var(--cyan-400); content: ""; display: block; height: 9px; margin-right: 10px; width: 9px; }
.nearest-airports-grid { align-content: start; display: grid; gap: 28px 40px; grid-template-columns: minmax(0, 1fr) minmax(480px, 0.82fr); grid-template-rows: min-content 1fr; }
.nearest-airports-grid--no-map { grid-template-columns: minmax(0, 1fr); }
.nearest-airports-grid--no-map .nearest-airports-list { grid-column: 1; grid-row: 2; max-width: 660px; }
.nearest-airports-copy { grid-column: 1; min-width: 0; }
.nearest-airports-copy h2 { font-size: clamp(1.75rem, 2.2vw, 2.4rem); line-height: 1.16; margin: 0; }
.port-command-bar.nearest-airports-query { margin: 20px 0 0; max-width: 660px; }
.nearest-airports-query code, .nearest-airports-locode code, .nearest-airports-row code { color: inherit; font: inherit; }
.nearest-airports-map-wrap { grid-column: 2; grid-row: 1 / span 2; justify-self: end; max-width: 560px; min-width: 0; width: 100%; }
.nearest-airport-map-frame { aspect-ratio: 4 / 3; border: 1px solid var(--console-line); overflow: hidden; width: 100%; }
.nearest-airport-map-frame img { display: block; height: 100%; object-fit: contain; width: 100%; }
.nearest-airport-map-unavailable { align-items: center; aspect-ratio: 4 / 3; border: 1px solid var(--console-line); color: var(--console-muted); display: flex; justify-content: center; padding: 24px; }
.nearest-airports-list { align-self: start; border-bottom: 1px solid var(--console-line); border-top: 1px solid var(--console-line); grid-column: 1; grid-row: 2; }
.nearest-airports-list-head, .nearest-airports-row { display: grid; grid-template-columns: minmax(0, 1fr) 132px; }
.nearest-airports-list-head { color: var(--console-muted); font-size: 0.75rem; font-weight: 700; padding: 12px 0; }
.nearest-airports-list-head > :last-child, .nearest-airports-distance { text-align: right; }
.nearest-airports-row { align-items: center; border-top: 1px solid var(--console-line); gap: 16px; min-height: 72px; padding: 12px 0; }
.nearest-airports-row > :first-child { min-width: 0; }
.nearest-airports-row strong { color: var(--console-ink); display: block; font-size: 1rem; overflow-wrap: anywhere; }
.nearest-airports-row code { color: var(--console-muted); display: block; font-size: 0.75rem; margin-top: 3px; }
.nearest-airports-distance { font-family: "Geist Mono", "SFMono-Regular", Consolas, monospace; white-space: nowrap; }
.nearest-airports-empty { color: var(--console-muted); padding: 20px 0; }
.port-console-body .facility-disclosure summary { color: var(--cyan-400); }
.port-console-body .facility-disclosure[open] summary { color: var(--console-ink); }
.port-console-body .tag { background: var(--console-surface); border-color: var(--console-line); color: var(--console-ink); }
.port-console-body .port-stats, .port-console-body .port-note, .port-console-body .related-exploration, .port-console-body .port-sources { border-color: var(--console-line); }
.port-console-body .stat-rail, .port-console-body .related-links { border-color: var(--console-line); }
.port-console-body .stat-item, .port-console-body .related-links div { border-color: var(--console-line); }
.port-console-body .stat-item strong, .port-console-body .stat-item h2, .port-console-body .related-links a, .port-console-body .port-note h2 { color: var(--console-ink); }
.port-console-body .stat-item > span, .port-console-body .stat-item p, .port-console-body .related-links a::after { color: var(--console-muted); }
.port-console-body .source-list { background: var(--console-surface); border-color: var(--console-line); color: var(--console-muted); }
.port-console-body .source-list a { color: var(--cyan-400); }
.port-console-body .embarkation-page .port-terminals { background: transparent; }

/* Port Atlas L1: a locale-aware directory, distinct from the individual port reference pages. */
.port-index-page { padding-top: 0; }
.port-index-hero { border-bottom: 1px solid var(--console-line); padding: 52px 0 40px; }
.port-index-kicker { color: var(--cyan-400); font: 0.75rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; letter-spacing: 0.08em; margin: 0 0 14px; text-transform: uppercase; }
.port-index-hero h1 { color: var(--console-ink); font-size: clamp(2.25rem, 4vw, 4rem); line-height: 1.08; margin: 0; }
.port-index-hero > p:not(.port-index-kicker) { color: var(--console-muted); font-size: 1rem; line-height: 1.75; margin: 20px 0 0; max-width: 780px; }
.port-index-search { margin-top: 32px; max-width: 1180px; }
.port-index-search > label { color: var(--console-ink); font-size: 0.875rem; margin: 0 0 10px; }
.port-index-search-fields { align-items: end; display: grid; gap: 12px; grid-template-columns: minmax(260px, 1.45fr) minmax(180px, 0.8fr) minmax(180px, 0.8fr) auto; }
.port-index-search input, .port-index-search select { background: #091a22; border-color: var(--console-line); color: var(--console-ink); min-height: 48px; }
.port-index-search input::placeholder { color: var(--console-muted); }
.port-index-search input:focus, .port-index-search select:focus { border-color: var(--cyan-400); outline-color: rgba(34, 211, 229, 0.22); }
.port-index-select-label { color: var(--console-muted); font-size: 0.75rem; font-weight: 600; gap: 6px; margin: 0; }
.port-index-search button { background: transparent; border: 1px solid var(--console-line); border-radius: var(--radius-control); color: var(--console-ink); cursor: pointer; font: 0.8125rem/1.2 "Geist Mono", "SFMono-Regular", Consolas, monospace; min-height: 48px; padding: 10px 14px; white-space: nowrap; }
.port-index-search button:hover, .port-index-search button:focus-visible { border-color: var(--cyan-400); color: var(--cyan-400); outline: none; }
.port-index-metrics { border-bottom: 1px solid var(--console-line); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.port-index-metrics div { border-right: 1px solid var(--console-line); min-height: 112px; padding: 24px 20px; }
.port-index-metrics div:last-child { border-right: 0; }
.port-index-metrics strong { color: var(--cyan-400); display: block; font: 1.6rem/1.1 "Geist Mono", "SFMono-Regular", Consolas, monospace; overflow-wrap: anywhere; }
.port-index-metrics span { color: var(--console-muted); display: block; font-size: 0.8125rem; margin-top: 8px; }
.port-index-directory { border-bottom: 1px solid var(--console-line); padding: 48px 0; }
.port-index-heading { align-items: end; display: flex; gap: 24px; justify-content: space-between; }
.port-index-heading h2, .port-index-method h2 { font-size: clamp(1.6rem, 2.6vw, 2.35rem); line-height: 1.18; margin: 0; }
.port-index-heading > p { color: var(--console-muted); font: 0.8125rem/1.4 "Geist Mono", "SFMono-Regular", Consolas, monospace; margin: 0; text-align: right; }
.port-index-intro { color: var(--console-muted); line-height: 1.65; margin: 16px 0 28px; max-width: 760px; }
.port-index-groups { display: grid; gap: 28px; }
.port-index-tier { border: 1px solid var(--console-line); }
.port-index-tier > header { align-items: start; border-bottom: 1px solid var(--console-line); display: flex; gap: 24px; justify-content: space-between; padding: 20px 24px; }
.port-index-tier h3 { color: var(--console-ink); font-size: 1.125rem; margin: 0; }
.port-index-tier header p { color: var(--console-muted); font-size: 0.875rem; line-height: 1.55; margin: 7px 0 0; max-width: 700px; }
.port-index-tier header > span { color: var(--cyan-400); font: 0.75rem/1.4 "Geist Mono", "SFMono-Regular", Consolas, monospace; padding-top: 3px; white-space: nowrap; }
.port-index-list { display: grid; }
.port-index-row { align-items: center; border-bottom: 1px solid var(--console-line); color: var(--console-ink); display: grid; gap: 16px; grid-template-columns: minmax(210px, 1.15fr) minmax(122px, 0.65fr) minmax(175px, 0.95fr) minmax(178px, 0.85fr) 22px; min-height: 92px; padding: 14px 24px; text-decoration: none; }
.port-index-row:last-child { border-bottom: 0; }
.port-index-row:hover { background: rgba(18, 47, 51, 0.72); }
.port-index-row:focus-visible { background: rgba(18, 47, 51, 0.72); outline: 2px solid var(--cyan-400); outline-offset: -2px; }
.port-index-primary strong { color: var(--console-ink); display: block; font-size: 1rem; }
.port-index-primary span { color: var(--console-muted); display: block; font-size: 0.8125rem; margin-top: 4px; }
.port-index-code, .port-index-details { color: var(--console-muted); font: 0.75rem/1.5 "Geist Mono", "SFMono-Regular", Consolas, monospace; }
.port-index-roles { display: flex; flex-wrap: wrap; gap: 6px; }
.port-index-role { border: 1px solid var(--console-line); color: var(--console-muted); font-size: 0.75rem; padding: 3px 7px; white-space: nowrap; }
.port-index-role.is-embarkation { border-color: rgba(82, 212, 145, 0.54); color: #82ddb0; }
.port-index-role.is-disembarkation { border-color: rgba(129, 186, 245, 0.52); color: #9bc9ff; }
.port-index-role.is-port_of_call { border-color: rgba(34, 211, 229, 0.5); color: var(--cyan-400); }
.port-index-details { display: grid; gap: 3px; }
.port-index-arrow { color: var(--cyan-400); font: 1.15rem/1 "Geist Mono", "SFMono-Regular", Consolas, monospace; text-align: right; }
.port-index-method { border-bottom: 1px solid var(--console-line); padding: 48px 0; }
.port-index-method-grid { display: grid; gap: 0; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 24px; }
.port-index-method-grid p { border-right: 1px solid var(--console-line); color: var(--console-muted); font-size: 0.9375rem; line-height: 1.7; margin: 0; padding: 0 24px; }
.port-index-method-grid p:first-child { padding-left: 0; }
.port-index-method-grid p:last-child { border-right: 0; padding-right: 0; }
.port-index-method-grid strong { color: var(--console-ink); }
.port-index-method-link { margin: 24px 0 0; }
.port-index-method-link a { color: var(--cyan-400); font-weight: 650; text-underline-offset: 4px; }

.ship-index-hero { border-bottom: 1px solid var(--console-line); padding: 56px 0 40px; }
.ship-index-hero h1 { color: var(--console-ink); font-size: clamp(2.25rem, 4vw, 4rem); line-height: 1.08; margin: 0; max-width: 840px; }
.ship-index-hero > p:not(.port-index-kicker) { color: var(--console-muted); font-size: 1rem; line-height: 1.75; margin: 20px 0 0; max-width: 760px; }
.ship-index-guide, .ship-index-directory, .ship-index-method { border-bottom: 1px solid var(--console-line); padding: 48px 0; }
.ship-index-guide > div:first-child, .ship-index-method > div { max-width: 640px; }
.ship-index-guide h2, .ship-index-method h2 { color: var(--console-ink); font-size: clamp(1.6rem, 2.6vw, 2.35rem); line-height: 1.18; margin: 0; }
.ship-index-guide-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 28px; }
.ship-index-guide-grid p { border-right: 1px solid var(--console-line); color: var(--console-muted); font-size: .9375rem; line-height: 1.7; margin: 0; padding: 0 24px; }
.ship-index-guide-grid p:first-child { padding-left: 0; }
.ship-index-guide-grid p:last-child { border-right: 0; padding-right: 0; }
.ship-index-guide-grid strong { color: var(--console-ink); }
.ship-index-grid { border-top: 1px solid var(--console-line); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ship-index-card { border-bottom: 1px solid var(--console-line); padding: 28px; }
.ship-index-card:nth-child(odd) { border-right: 1px solid var(--console-line); }
.ship-index-card-top { align-items: baseline; display: flex; gap: 12px; justify-content: space-between; }
.ship-index-card-top p, .ship-index-card-top span { color: var(--console-muted); font: .75rem/1.35 "Geist Mono", "SFMono-Regular", Consolas, monospace; margin: 0; }
.ship-index-card h3 { margin: 16px 0 12px; }
.ship-index-card h3 a { color: var(--console-ink); text-decoration: none; }
.ship-index-card > p { color: var(--console-muted); font-size: .9375rem; line-height: 1.7; margin: 0; }
.ship-index-card dl { display: flex; flex-wrap: wrap; gap: 14px 24px; margin: 24px 0; }
.ship-index-card dl div { display: grid; gap: 3px; }
.ship-index-card dt { color: var(--console-muted); font-size: .75rem; }
.ship-index-card dd { color: var(--console-ink); font: .82rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; margin: 0; }
.ship-index-link { color: var(--cyan-400); font-weight: 650; text-underline-offset: 4px; }
.ship-catalog-directory-list { border-top: 1px solid var(--console-line); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); list-style: none; margin: 24px 0 0; padding: 0; }
.ship-catalog-directory-list li { border-bottom: 1px solid var(--console-line); border-right: 1px solid var(--console-line); min-width: 0; }
.ship-catalog-directory-list li:nth-child(3n) { border-right: 0; }
.ship-catalog-directory-list a { display: grid; gap: 5px; min-height: 78px; padding: 16px 18px; text-decoration: none; }
.ship-catalog-directory-list a:hover { background: rgba(33, 213, 234, 0.08); }
.ship-catalog-directory-list span { color: var(--console-ink); font-weight: 650; overflow-wrap: anywhere; }
.ship-catalog-directory-list small { color: var(--console-muted); font: .72rem/1.35 "Geist Mono", "SFMono-Regular", Consolas, monospace; }
.ship-index-method > p { color: var(--console-muted); line-height: 1.75; margin: 20px 0 0; max-width: 800px; }
.port-console-body .ship-profile-summary, .port-console-body .ship-profile-caveat { border-bottom-color: var(--console-line); max-width: 880px; }
.port-console-body .ship-profile-summary h2, .port-console-body .ship-profile-caveat h2 { color: var(--console-ink); }
.port-console-body .ship-profile-summary p, .port-console-body .ship-profile-caveat li { color: var(--console-muted); }
.ship-catalog-hero { border-bottom: 1px solid var(--console-line); max-width: 900px; padding-bottom: 40px; padding-top: 56px; }
.ship-catalog-hero h1 { color: var(--console-ink); font-size: clamp(2.15rem, 3.6vw, 3.5rem); line-height: 1.1; margin: 0; }
.ship-catalog-hero > p:last-child { color: var(--console-muted); font-size: 1rem; line-height: 1.75; margin: 20px 0 0; }
.ship-catalog-specs, .ship-catalog-source { border-bottom: 1px solid var(--console-line); max-width: 900px; padding-bottom: 42px; padding-top: 42px; }
.ship-catalog-specs h2, .ship-catalog-source h2 { color: var(--console-ink); margin: 0; }
.port-console-body .ship-catalog-specs .section-head > span { background: transparent; border: 0; color: var(--console-muted); font-size: .78rem; padding: 0; }
.ship-catalog-facts { border-top: 1px solid var(--console-line); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 26px 0 0; }
.ship-catalog-facts > div { border-bottom: 1px solid var(--console-line); border-right: 1px solid var(--console-line); min-height: 108px; padding: 18px 20px; }
.ship-catalog-facts > div:nth-child(3n) { border-right: 0; }
.ship-catalog-facts dt { color: var(--console-muted); font: .72rem/1.35 "Geist Mono", "SFMono-Regular", Consolas, monospace; }
.ship-catalog-facts dd { color: var(--console-ink); font: 600 1rem/1.35 "Geist Mono", "SFMono-Regular", Consolas, monospace; margin: 8px 0 0; }
.ship-catalog-source p { color: var(--console-muted); line-height: 1.75; max-width: 780px; }
.ship-catalog-source p:first-of-type a { color: var(--cyan-400); text-decoration-thickness: 1px; text-underline-offset: 4px; }
.ship-catalog-source p:last-child a { color: var(--cyan-400); font-weight: 650; text-underline-offset: 4px; }

@media (max-width: 1050px) {
  .port-index-search-fields { grid-template-columns: minmax(0, 1fr) minmax(190px, 0.7fr) minmax(190px, 0.7fr); }
  .port-index-search button { grid-column: 1 / -1; justify-self: start; }
  .port-index-row { grid-template-columns: minmax(190px, 1fr) minmax(150px, 0.85fr) minmax(165px, 0.9fr) 22px; }
  .port-index-details { grid-column: 1 / 2; }
  .port-index-arrow { grid-column: 4; grid-row: 1 / span 2; }
}

@media (max-width: 820px) {
  .port-index-hero { padding-top: 36px; }
  .port-index-search-fields { grid-template-columns: 1fr 1fr; }
  .port-index-search-fields > input { grid-column: 1 / -1; }
  .port-index-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .port-index-metrics div:nth-child(2n) { border-right: 0; }
  .port-index-metrics div:nth-child(n + 3) { border-top: 1px solid var(--console-line); }
  .port-index-heading { align-items: start; flex-direction: column; }
  .port-index-heading > p { text-align: left; }
  .port-index-row { grid-template-columns: minmax(0, 1fr) 22px; padding: 18px 20px; }
  .port-index-code, .port-index-roles, .port-index-details { grid-column: 1; }
  .port-index-arrow { grid-column: 2; grid-row: 1 / span 4; }
  .port-index-method-grid { grid-template-columns: 1fr; }
  .port-index-method-grid p, .port-index-method-grid p:first-child, .port-index-method-grid p:last-child { border-bottom: 1px solid var(--console-line); border-right: 0; padding: 18px 0; }
  .port-index-method-grid p:last-child { border-bottom: 0; }
  .ship-index-guide-grid { grid-template-columns: 1fr; }
  .ship-index-guide-grid p, .ship-index-guide-grid p:first-child, .ship-index-guide-grid p:last-child { border-bottom: 1px solid var(--console-line); border-right: 0; padding: 18px 0; }
  .ship-index-guide-grid p:last-child { border-bottom: 0; }
  .ship-index-grid { grid-template-columns: 1fr; }
  .ship-index-card:nth-child(odd) { border-right: 0; }
  .ship-catalog-directory-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ship-catalog-directory-list li:nth-child(3n) { border-right: 1px solid var(--console-line); }
  .ship-catalog-directory-list li:nth-child(2n) { border-right: 0; }
  .port-console-nav { align-items: stretch; padding: 12px 16px; }
  .port-console-hierarchy { flex: 0 1 auto; min-width: 0; width: 100%; }
  .port-console-nav .nav-links { flex: 0 0 auto; flex-wrap: wrap; justify-content: flex-start; margin: 0; overflow: visible; padding: 0; white-space: normal; width: 100%; }
  .port-console-nav .nav-links a.nav-link { align-items: center; display: inline-flex; flex: 0 0 auto; min-height: 44px; padding-left: 14px; padding-right: 14px; }
  .port-console-hierarchy .breadcrumbs a, .internal-footer .footer-terminal-link { align-items: center; display: inline-flex; min-height: 36px; }
  .ship-catalog-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ship-catalog-facts > div:nth-child(3n) { border-right: 1px solid var(--console-line); }
  .ship-catalog-facts > div:nth-child(2n) { border-right: 0; }
}

@media (max-width: 460px) {
  .port-index-hero, .port-index-directory, .port-index-method, .ship-index-hero, .ship-index-guide, .ship-index-directory, .ship-index-method { padding-bottom: 32px; padding-top: 32px; }
  .ship-catalog-hero { padding-bottom: 32px; padding-top: 36px; }
  .ship-catalog-specs, .ship-catalog-source { padding-bottom: 32px; padding-top: 32px; }
  .port-index-search { margin-top: 24px; }
  .port-index-search-fields { grid-template-columns: 1fr; }
  .port-index-search-fields > input, .port-index-search button { grid-column: 1; width: 100%; }
  .port-index-search button { justify-self: stretch; }
  .port-index-metrics div { min-height: 96px; padding: 18px 16px; }
  .port-index-metrics strong { font-size: 1.2rem; }
  .port-index-tier > header { flex-direction: column; gap: 8px; padding: 18px 16px; }
  .port-index-tier header > span { padding-top: 0; }
  .port-index-row { padding: 18px 16px; }
}
/* Port Atlas directory refinement: featured local departures, region groups, then the full index. */
.port-index-hero { padding: 56px 0 36px; }
.port-index-hero h1 { max-width: 760px; }
.port-index-hero > p:not(.port-index-kicker) { max-width: 720px; }
.port-index-search { margin-top: 30px; max-width: 760px; }
.port-index-search > label { display: block; }
.port-index-search-fields { align-items: start; display: flex; flex-wrap: wrap; gap: 10px; }
.port-index-search input { flex: 1 1 360px; min-width: 0; }
.port-index-search-submit { background: var(--cyan-400) !important; border-color: var(--cyan-400) !important; color: #03151a !important; font-weight: 700 !important; }
.port-index-filter-panel { flex: 0 0 auto; position: relative; }
.port-index-filter-panel summary { align-items: center; border: 1px solid var(--console-line); color: var(--console-ink); cursor: pointer; display: flex; font: 0.8125rem/1.2 "Geist Mono", "SFMono-Regular", Consolas, monospace; min-height: 48px; padding: 10px 14px; }
.port-index-filter-panel[open] summary { border-color: var(--cyan-400); color: var(--cyan-400); }
.port-index-filter-panel > div { background: #091a22; border: 1px solid var(--console-line); display: grid; gap: 12px; min-width: 280px; padding: 16px; position: absolute; right: 0; top: calc(100% + 8px); z-index: 2; }
.port-index-select-label { display: grid; }
.port-index-select-label select { width: 100%; }
.port-index-quick-links { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.port-index-quick-links a { border-bottom: 1px solid var(--console-line); color: var(--console-muted); font-size: 0.875rem; padding: 0 0 5px; text-decoration: none; }
.port-index-quick-links a:hover, .port-index-quick-links a:focus-visible { border-color: var(--cyan-400); color: var(--cyan-400); outline: none; }
.port-index-featured, .port-index-regions { border-bottom: 1px solid var(--console-line); padding: 48px 0; }
.port-index-section-heading { align-items: end; display: flex; gap: 28px; justify-content: space-between; }
.port-index-section-heading h2 { color: var(--console-ink); font-size: clamp(1.6rem, 2.6vw, 2.35rem); line-height: 1.18; margin: 0; }
.port-index-section-heading > p { color: var(--console-muted); line-height: 1.65; margin: 0; max-width: 440px; }
.port-index-featured-grid { display: grid; gap: 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 24px; }
.port-index-feature-card { background: var(--console-surface); border: 1px solid var(--console-line); display: grid; grid-template-columns: minmax(160px, 0.72fr) minmax(0, 1fr); min-height: 230px; overflow: hidden; }
.port-index-feature-card > img { height: 100%; min-height: 230px; object-fit: cover; width: 100%; }
.port-index-feature-card > div { display: flex; flex-direction: column; padding: 24px; }
.port-index-feature-location { color: var(--console-muted); font: 0.75rem/1.45 "Geist Mono", "SFMono-Regular", Consolas, monospace; margin: 0; }
.port-index-feature-card h3 { font-size: 1.35rem; line-height: 1.25; margin: 16px 0; }
.port-index-feature-card h3 a { color: var(--console-ink); text-decoration: none; }
.port-index-feature-card h3 a:hover, .port-index-feature-card h3 a:focus-visible { color: var(--cyan-400); outline: none; }
.port-index-regions { background: rgba(6, 16, 24, 0.32); }
.port-index-region-grid { display: grid; gap: 16px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 24px; }
.port-index-cluster { border-top: 2px solid var(--cyan-400); padding-top: 16px; }
.port-index-cluster h3 { color: var(--console-ink); font-size: 1.0625rem; margin: 0; }
.port-index-cluster > p { color: var(--console-muted); font-size: 0.8125rem; line-height: 1.55; margin: 8px 0 12px; }
.port-index-cluster ul { list-style: none; margin: 0; padding: 0; }
.port-index-cluster li { border-top: 1px solid var(--console-line); }
.port-index-cluster li a { color: var(--console-ink); display: block; padding: 11px 0; text-decoration: none; }
.port-index-cluster li a:hover strong, .port-index-cluster li a:focus-visible strong { color: var(--cyan-400); }
.port-index-cluster li a:focus-visible { outline: 2px solid var(--cyan-400); outline-offset: 2px; }
.port-index-cluster li strong, .port-index-cluster li span { display: block; }
.port-index-cluster li strong { font-size: 0.9375rem; }
.port-index-cluster li span { color: var(--console-muted); font-size: 0.75rem; margin-top: 3px; }
.port-index-empty { border: 1px solid var(--console-line); color: var(--console-ink); margin: 0 0 16px; padding: 16px; }
.port-index-table { border: 1px solid var(--console-line); display: grid; }
.port-index-table-head, .port-index-row { grid-template-columns: 72px minmax(220px, 1.45fr) minmax(100px, 0.6fr) minmax(190px, 1fr) 22px; padding-left: 20px; padding-right: 20px; }
.port-index-table-head { align-items: center; border-bottom: 1px solid var(--console-line); color: var(--console-muted); font: 0.6875rem/1.25 "Geist Mono", "SFMono-Regular", Consolas, monospace; min-height: 42px; text-transform: uppercase; }
.port-index-row { min-height: 92px; padding-bottom: 12px; padding-top: 12px; }
.port-index-row > img, .port-index-thumb-fallback { aspect-ratio: 4 / 3; display: block; height: auto; object-fit: cover; width: 72px; }
.port-index-thumb-fallback { align-items: center; background: #091a22; border: 1px solid var(--console-line); color: var(--console-muted); display: flex; font: 0.6875rem/1 "Geist Mono", "SFMono-Regular", Consolas, monospace; justify-content: center; padding: 8px; text-align: center; }
.port-index-reference { border: 1px solid rgba(34, 211, 229, 0.45); color: var(--cyan-400); display: inline-block; font: 0.625rem/1.2 "Geist Mono", "SFMono-Regular", Consolas, monospace; margin-left: 8px; padding: 3px 5px; vertical-align: middle; white-space: nowrap; }

@media (max-width: 1050px) {
  .port-index-table-head, .port-index-row { grid-template-columns: 64px minmax(180px, 1fr) minmax(160px, 0.95fr) 22px; }
  .port-index-table-head span:nth-child(3), .port-index-code { display: none; }
  .port-index-row > img, .port-index-thumb-fallback { width: 64px; }
}

@media (max-width: 820px) {
  .port-index-section-heading { align-items: start; flex-direction: column; }
  .port-index-section-heading > p { text-align: left; }
  .port-index-featured-grid, .port-index-region-grid { grid-template-columns: 1fr; }
  .port-index-table-head { display: none; }
  .port-index-row { grid-template-columns: 56px minmax(0, 1fr) 22px; min-height: 86px; padding: 14px 16px; }
  .port-index-row > img, .port-index-thumb-fallback { grid-column: 1; grid-row: 1 / span 3; width: 56px; }
  .port-index-primary, .port-index-roles { grid-column: 2; }
  .port-index-roles { margin-top: -4px; }
  .port-index-arrow { grid-column: 3; grid-row: 1 / span 3; }
}

@media (max-width: 460px) {
  .port-index-search-fields { display: grid; grid-template-columns: 1fr 1fr; }
  .port-index-search input { grid-column: 1 / -1; width: 100%; }
  .port-index-search-submit, .port-index-filter-panel { width: 100%; }
  .port-index-filter-panel > div { left: 0; min-width: 0; right: auto; width: 100%; }
  .port-index-feature-card { grid-template-columns: 132px minmax(0, 1fr); min-height: 188px; }
  .port-index-feature-card > img { min-height: 188px; }
  .port-index-feature-card > div { padding: 18px; }
  .port-index-feature-card h3 { font-size: 1.125rem; margin: 12px 0; }
}

@media (max-width: 1199px) {
  .nearest-airports-grid { grid-template-columns: 1fr; }
  .nearest-airports-map-wrap, .nearest-airports-list { grid-column: 1; grid-row: auto; }
  .nearest-airports-map-wrap { max-width: none; order: 2; }
  .nearest-airports-list { order: 3; }
}
@media (max-width: 1100px) {
  .port-console-nav { row-gap: 12px; }
  .port-console-nav .brand { order: 1; }
  .port-console-hierarchy { flex: 0 0 auto; min-width: 0; order: 2; width: 100%; }
  .port-console-nav .nav-links { order: 3; }
}

@media (max-width: 820px) {
  .port-console-nav { padding-left: 24px; padding-right: 24px; }
  .port-console-nav { row-gap: 12px; }
  .port-console-nav .brand { order: 1; }
  .port-console-hierarchy { flex: 0 0 auto; order: 2; width: 100%; }
  .port-console-nav .nav-links { order: 3; }
  .port-console-body .page { padding-left: 24px; padding-right: 24px; }
  .port-console-body .port-masthead { grid-template-columns: 1fr; }
  .port-console-body .port-masthead-media { margin-top: 0; order: 2; }
  .port-console-body .port-masthead-content { max-width: none; min-width: 0; order: 1; overflow: hidden; padding: 36px 0 48px; }
  .port-console-body .port-masthead h1 { max-width: 100%; overflow-wrap: anywhere; word-break: break-all; }
  .port-console-body .port-dek, .port-console-body .port-status { overflow-wrap: anywhere; word-break: break-word; }
  .port-console-body .port-command-bar { max-width: 100%; overflow: hidden; }
  .port-console-body .port-jump { flex-wrap: wrap; overflow-x: visible; padding-bottom: 8px; }
  .port-console-body .port-jump-label { margin-right: 0; padding-left: 0; width: 100%; }
  .port-console-body .port-jump a { flex: 1 1 calc(50% - 4px); min-width: 0; padding-left: 4px; padding-right: 4px; }
  .port-console-body .port-fact-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .port-console-body .port-fact-rail > div:nth-child(2n) { border-right: 0; }
  .port-console-body .port-fact-rail > div:nth-child(n + 3) { border-top: 1px solid var(--console-line); }
  .port-console-body .port-fact-rail > div:nth-child(3) { padding-left: 20px; }
}

@media (max-width: 767px) {
  .port-console-nav { padding-left: 16px; padding-right: 16px; }
  .port-console-body .page { padding-left: 16px; padding-right: 16px; }
}

@media (max-width: 460px) {
  .port-console-nav { padding-left: 16px; padding-right: 16px; }
  .port-console-body .page { padding-left: 16px; padding-right: 16px; }
  .port-console-body .port-masthead-content { padding-top: 28px; }
  .port-console-body .port-fact-rail strong { font-size: 0.875rem; }
  .port-role-tooltip { left: auto; right: 0; width: min(260px, calc(100vw - 48px)); }
  .port-console-body .nearest-airports { margin-bottom: 24px; margin-top: 24px; padding-bottom: 28px; padding-top: 32px; }
  .nearest-airports-grid { gap: 24px; }
  .nearest-airports-list-head, .nearest-airports-row { grid-template-columns: minmax(0, 1fr) 104px; }
  .nearest-airports-row { gap: 12px; }
}

/* Ranking Atlas: the rankings surface has its own editorial/data rhythm. */
.ranking-atlas-body {
  --ranking-bg: #061018;
  --ranking-surface: #091722;
  --ranking-line: rgba(223, 228, 232, 0.22);
  --ranking-ink: #f3eee5;
  --ranking-muted: #9db2ac;
  background: var(--ranking-bg);
  color: var(--ranking-ink);
}

.ranking-atlas-body .port-console-site-header {
  background: #0d2428;
  border-bottom-color: rgba(223, 228, 232, 0.24);
}

.ranking-atlas-page {
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 40px 72px;
}

.ranking-hero {
  align-items: center;
  border-bottom: 1px solid var(--ranking-line);
  display: grid;
  gap: 48px;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 0.92fr);
  padding: 64px 0 56px;
}

.ranking-hero-copy {
  max-width: 700px;
  min-width: 0;
}

.ranking-eyebrow {
  color: var(--cyan-400);
  font: 0.75rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  letter-spacing: 0.08em;
  margin: 0 0 16px;
  text-transform: uppercase;
}

.ranking-query {
  align-items: center;
  border-bottom: 1px solid var(--ranking-line);
  border-top: 1px solid var(--ranking-line);
  display: flex;
  gap: 10px;
  margin: 0 0 24px;
  max-width: 700px;
  min-height: 46px;
  padding: 10px 0;
}

.ranking-query-prompt {
  color: var(--coral-400);
  flex: 0 0 auto;
  font: inherit;
}

.ranking-query code {
  color: var(--cyan-400);
  font: inherit;
  overflow-wrap: anywhere;
}

.ranking-query-cursor {
  animation: ranking-cursor-blink 1s steps(1, end) infinite;
  background: var(--cyan-400);
  flex: 0 0 auto;
  height: 18px;
  width: 8px;
}

@keyframes ranking-cursor-blink {
  50% { opacity: 0; }
}

.ranking-hero h1 {
  color: var(--ranking-ink);
  font: clamp(2.8rem, 6vw, 5.8rem)/1.02 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  letter-spacing: -0.04em;
  margin: 0;
  max-width: 700px;
}

.ranking-hero h1 span,
.ranking-hero h1 em {
  display: block;
}

.ranking-hero h1 em {
  color: var(--cyan-400);
  font-style: normal;
}

.ranking-hero-description {
  color: var(--ranking-muted);
  font: 1rem/1.7 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  margin: 24px 0;
  max-width: 640px;
}

.ranking-metrics {
  border-bottom: 1px solid var(--ranking-line);
  border-top: 1px solid var(--ranking-line);
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 32px 0 24px;
}

.ranking-metrics div {
  border-right: 1px solid var(--ranking-line);
  min-width: 0;
  padding: 14px 16px 14px 0;
}

.ranking-metrics div + div { padding-left: 16px; }
.ranking-metrics div:last-child { border-right: 0; }

.ranking-metrics strong {
  color: var(--cyan-400);
  display: block;
  font: 1.35rem/1.1 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  overflow-wrap: anywhere;
}

.ranking-metrics span {
  color: var(--ranking-muted);
  display: block;
  font: 0.65rem/1.4 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  margin-top: 8px;
  text-transform: uppercase;
}

.ranking-method-cta {
  color: var(--cyan-400);
  display: inline-flex;
  font: 0.78rem/1.4 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  gap: 10px;
  text-decoration: none;
}

.ranking-method-cta span:first-child { color: var(--coral-400); }
.ranking-method-cta:hover,
.ranking-method-cta:focus-visible { color: var(--ranking-ink); }

.ranking-map {
  background: radial-gradient(circle at center, rgba(8, 196, 216, 0.09), transparent 68%);
  border: 1px solid var(--ranking-line);
  min-height: 280px;
  overflow: hidden;
  position: relative;
}

.ranking-map-grid {
  background-image: radial-gradient(circle, rgba(157, 178, 172, 0.62) 1px, transparent 1.5px);
  background-size: 10px 10px;
  inset: 18% 6%;
  mask-image: radial-gradient(ellipse at center, #000 35%, transparent 78%);
  opacity: 0.8;
  position: absolute;
}

.ranking-map i {
  background: var(--cyan-400);
  box-shadow: 0 0 12px var(--cyan-400);
  height: 5px;
  position: absolute;
  width: 5px;
}

.ranking-map i.is-hot {
  background: var(--coral-400);
  box-shadow: 0 0 14px var(--coral-400);
  height: 8px;
  width: 8px;
}

.ranking-map-label {
  bottom: 14px;
  color: var(--ranking-muted);
  font: 0.65rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  left: 16px;
  letter-spacing: 0.08em;
  position: absolute;
}

.ranking-sample-notice {
  align-items: flex-start;
  border-bottom: 1px solid var(--ranking-line);
  display: flex;
  gap: 16px;
  padding: 18px 0;
}

.ranking-sample-mark {
  color: var(--coral-400);
  flex: 0 0 auto;
  font: 0.7rem/1.4 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  letter-spacing: 0.1em;
}

.ranking-sample-notice p {
  color: var(--ranking-muted);
  font-size: 0.88rem;
  margin: 0;
  max-width: 920px;
}

.ranking-section {
  border: 1px solid var(--ranking-line);
  margin-top: 40px;
}

.ranking-section-head {
  align-items: end;
  display: flex;
  gap: 24px;
  justify-content: space-between;
  padding: 24px;
}

.ranking-section-head h2 {
  color: var(--ranking-ink);
  font: 1.25rem/1.2 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  margin: 4px 0 8px;
}

.ranking-section-head p:not(.ranking-eyebrow) {
  color: var(--ranking-muted);
  font-size: 0.86rem;
  margin: 0;
  max-width: 680px;
}

.ranking-section-head > span {
  color: var(--cyan-400);
  font: 0.7rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  white-space: nowrap;
}

.ranking-featured-grid {
  border-top: 1px solid var(--ranking-line);
  display: grid;
  gap: 0;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ranking-featured-card {
  color: var(--ranking-ink);
  display: flex;
  flex-direction: column;
  min-height: 360px;
  min-width: 0;
  padding: 24px;
  text-decoration: none;
  transition: background 180ms ease, color 180ms ease;
}

.ranking-featured-card + .ranking-featured-card { border-left: 1px solid var(--ranking-line); }

.ranking-featured-card:hover,
.ranking-featured-card:focus-visible,
.ranking-index-row:hover,
.ranking-index-row:focus-visible {
  background: rgba(8, 196, 216, 0.06);
  color: var(--ranking-ink);
}

.ranking-card-top {
  color: var(--cyan-400);
  display: flex;
  font: 1.5rem/1 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  justify-content: space-between;
}

.ranking-card-icon { color: var(--cyan-400); font-size: 1.3rem; }

.ranking-featured-card h3 {
  font: 1.05rem/1.35 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  margin: 22px 0 0;
}

.ranking-featured-card h3 span {
  color: var(--ranking-muted);
  display: block;
  font-size: 0.9rem;
}

.ranking-card-period,
.ranking-card-metric-label,
.ranking-card-entity small {
  color: var(--ranking-muted);
  font: 0.7rem/1.4 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  margin: 12px 0 0;
}

.ranking-card-rule { border-top: 1px dashed var(--ranking-line); margin: 18px 0 0; }
.ranking-card-metric { align-items: baseline; display: flex; gap: 8px; margin: 0; }

.ranking-card-metric strong {
  color: var(--cyan-400);
  font: 2.6rem/1.1 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  letter-spacing: -0.04em;
}

.ranking-card-metric span { color: var(--cyan-400); font: 0.7rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; }

.ranking-card-entity {
  display: grid;
  grid-template-columns: auto 1fr;
  margin: 22px 0 0;
  column-gap: 10px;
}

.ranking-card-entity > span { color: var(--ranking-muted); font: 0.8rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; }
.ranking-card-entity strong { font: 0.9rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; }
.ranking-card-entity small { grid-column: 2; margin: 4px 0 0; }

.ranking-card-cta {
  border-top: 1px solid var(--ranking-line);
  color: var(--cyan-400);
  display: flex;
  font: 0.7rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  justify-content: space-between;
  margin-top: auto;
  padding-top: 16px;
}

.ranking-index-list { list-style: none; margin: 0; padding: 0; }
.ranking-index-list li + li { border-top: 1px solid var(--ranking-line); }

.ranking-index-row {
  align-items: center;
  color: var(--ranking-ink);
  display: grid;
  gap: 20px;
  grid-template-columns: 64px minmax(150px, 0.7fr) minmax(220px, 1.6fr) 140px 28px;
  min-height: 82px;
  padding: 16px 24px;
  text-decoration: none;
  transition: background 180ms ease, color 180ms ease;
}

.ranking-index-number { color: var(--cyan-400); font: 1.5rem/1 "Geist Mono", "SFMono-Regular", Consolas, monospace; }
.ranking-index-row strong { font: 1.05rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; letter-spacing: 0.03em; }
.ranking-index-keywords,
.ranking-index-count { color: var(--ranking-muted); font: 0.72rem/1.4 "Geist Mono", "SFMono-Regular", Consolas, monospace; overflow-wrap: anywhere; }
.ranking-index-count { color: var(--cyan-400); text-align: right; }
.ranking-index-arrow { color: var(--cyan-400); font-size: 1.4rem; text-align: right; }

.ranking-subhero { border-bottom: 1px solid var(--ranking-line); max-width: 900px; padding: 56px 0 48px; }

.ranking-subhero h1 {
  color: var(--ranking-ink);
  font: clamp(2.2rem, 5vw, 4.5rem)/1.05 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  margin: 0 0 20px;
}

.ranking-subhero p:not(.ranking-eyebrow) { color: var(--ranking-muted); margin: 0; max-width: 720px; }
.ranking-group-list { border-top: 1px solid var(--ranking-line); }

.ranking-group-list > div {
  display: grid;
  gap: 20px;
  grid-template-columns: 56px 220px 1fr;
  padding: 20px 24px;
}

.ranking-group-list > div + div { border-top: 1px solid var(--ranking-line); }
.ranking-group-list span,
.ranking-group-list strong { color: var(--cyan-400); font: 0.9rem/1.4 "Geist Mono", "SFMono-Regular", Consolas, monospace; }
.ranking-group-list p { color: var(--ranking-muted); font-size: 0.85rem; margin: 0; }

.ranking-meta-strip {
  border-bottom: 1px solid var(--ranking-line);
  border-top: 1px solid var(--ranking-line);
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: 32px;
}

.ranking-meta-strip div { border-right: 1px solid var(--ranking-line); padding: 16px 20px; }
.ranking-meta-strip div:last-child { border-right: 0; }
.ranking-meta-strip span { color: var(--ranking-muted); display: block; font: 0.65rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; }
.ranking-meta-strip strong { color: var(--ranking-ink); display: block; font: 0.9rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; margin-top: 8px; }

.ranking-result-row {
  align-items: center;
  display: grid;
  gap: 20px;
  grid-template-columns: 72px 1fr auto;
  padding: 24px;
}

.ranking-result-row + .ranking-result-row { border-top: 1px solid var(--ranking-line); }
.ranking-result-rank { color: var(--cyan-400); font: 1.5rem/1 "Geist Mono", "SFMono-Regular", Consolas, monospace; }
.ranking-result-row h3 { font: 1rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; margin: 0; }
.ranking-result-row p { color: var(--ranking-muted); font: 0.8rem/1.4 "Geist Mono", "SFMono-Regular", Consolas, monospace; margin: 4px 0 0; }
.ranking-result-row > strong { color: var(--cyan-400); font: 1.7rem/1.1 "Geist Mono", "SFMono-Regular", Consolas, monospace; }
.ranking-result-row > strong small { font-size: 0.7rem; }

.ranking-empty { border-left: 2px solid var(--cyan-400); padding: 24px; }
.ranking-empty h2 { color: var(--ranking-ink); font: 1.1rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace; margin: 0 0 10px; }
.ranking-empty p { color: var(--ranking-muted); margin: 0 0 16px; }
.ranking-inline-link { color: var(--cyan-400); font: 0.8rem/1.4 "Geist Mono", "SFMono-Regular", Consolas, monospace; text-decoration: none; }

@media (max-width: 820px) {
  .ranking-atlas-page { padding-left: 24px; padding-right: 24px; }
  .ranking-hero { grid-template-columns: 1fr; padding-top: 40px; }
  .ranking-map { min-height: 220px; order: 2; }
  .ranking-featured-grid { grid-template-columns: 1fr; }
  .ranking-featured-card { min-height: 0; }
  .ranking-featured-card + .ranking-featured-card { border-left: 0; border-top: 1px solid var(--ranking-line); }
  .ranking-index-row { gap: 12px; grid-template-columns: 52px 1fr 28px; min-height: 70px; padding-left: 16px; padding-right: 16px; }
  .ranking-index-keywords,
  .ranking-index-count { grid-column: 2; text-align: left; }
  .ranking-index-arrow { align-self: center; grid-column: 3; grid-row: 1 / span 2; }
  .ranking-index-row strong { font-size: 0.95rem; }
  .ranking-group-list > div { gap: 10px; grid-template-columns: 42px 1fr; }
  .ranking-group-list p { grid-column: 2; }
  .ranking-meta-strip { grid-template-columns: repeat(2, 1fr); }
  .ranking-meta-strip div:nth-child(2n) { border-right: 0; }
  .ranking-meta-strip div:nth-child(n + 3) { border-top: 1px solid var(--ranking-line); }
}

@media (max-width: 460px) {
  .ranking-atlas-page { padding-left: 16px; padding-right: 16px; }
  .ranking-hero { gap: 28px; padding: 32px 0 36px; }
  .ranking-hero h1 { font-size: 2.55rem; }
  .ranking-hero-description { font-size: 0.9rem; }
  .ranking-metrics { grid-template-columns: repeat(2, 1fr); }
  .ranking-metrics div:nth-child(2n) { border-right: 0; }
  .ranking-metrics div:nth-child(n + 3) { border-top: 1px solid var(--ranking-line); }
  .ranking-metrics div:nth-child(3) { padding-left: 0; }
  .ranking-metrics div:nth-child(4) { padding-left: 16px; }
  .ranking-section { margin-top: 28px; }
  .ranking-section-head { align-items: start; flex-direction: column; padding: 18px 16px; }
  .ranking-featured-card { padding: 20px 16px; }
  .ranking-sample-notice { display: block; }
  .ranking-sample-mark { display: block; margin-bottom: 8px; }
  .ranking-result-row { gap: 12px; grid-template-columns: 48px 1fr; padding: 18px 16px; }
  .ranking-result-row > strong { grid-column: 2; }
}

@media (prefers-reduced-motion: reduce) {
  .ranking-query-cursor { animation: none; }
  .ranking-featured-card,
  .ranking-index-row { transition: none; }
}

/* Approved Rankings Hub composition from the v1.1 handoff. */
.ranking-atlas-body {
  --ranking-bg: #030a10;
  --ranking-surface: #061018;
  --ranking-line: rgba(223, 228, 232, 0.2);
  --ranking-ink: #f3eee5;
  --ranking-muted: #a8b6b6;
}

.ranking-site-header {
  background: var(--ranking-bg);
  border-bottom-color: var(--ranking-line);
}

.ranking-site-nav {
  align-items: center;
  display: flex;
  gap: 32px;
  justify-content: space-between;
  margin: 0 auto;
  max-width: 1280px;
  min-height: 64px;
  padding: 14px 32px;
}

.ranking-site-brand {
  color: var(--ranking-ink);
  font: 1.25rem/1 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  letter-spacing: -0.05em;
  text-decoration: none;
  white-space: nowrap;
}

.ranking-site-brand span { color: var(--cyan-400); }

.ranking-site-links {
  align-items: center;
  flex-wrap: nowrap;
  gap: 4px;
  overflow-x: auto;
  white-space: nowrap;
}

.ranking-site-links .nav-link {
  color: var(--ranking-muted);
  font: 0.66rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  letter-spacing: 0.02em;
  min-height: 32px;
  padding: 8px 10px;
}

.ranking-site-links .nav-link::before,
.ranking-site-links .nav-link::after { display: none; }
.ranking-site-links .nav-link:hover,
.ranking-site-links .nav-link:focus-visible,
.ranking-site-links .nav-link.is-active { color: var(--cyan-400); }

.ranking-site-locale {
  color: var(--ranking-muted);
  font: 0.66rem/1.3 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  padding: 8px 0 8px 10px;
}

.ranking-atlas-page {
  max-width: 1280px;
  padding: 0 32px 48px;
}

.ranking-hero {
  border-bottom: 0;
  gap: 40px;
  grid-template-columns: minmax(0, 0.94fr) minmax(0, 1.06fr);
  padding: 52px 0 44px;
}

.ranking-hero h1 {
  font-size: clamp(2.55rem, 3.8vw, 3.75rem);
  letter-spacing: 0;
  line-height: 1;
  white-space: nowrap;
}

.ranking-hero-description {
  font-size: 0.9rem;
  line-height: 1.65;
  max-width: 560px;
}

.ranking-map {
  background: transparent;
  border: 0;
  min-height: 340px;
}

.ranking-map-grid {
  background: transparent;
  inset: 4% 0;
  mask-image: none;
  opacity: 1;
}

.ranking-map-grid i {
  background: rgba(157, 178, 172, 0.28);
  box-shadow: none;
  height: 3px;
  width: 3px;
}

.ranking-map > i.is-hot {
  background: var(--cyan-400);
  box-shadow: 0 0 10px rgba(34, 211, 229, 0.75);
  height: 5px;
  width: 5px;
}

.ranking-featured,
.ranking-index { margin-top: 18px; }

.ranking-section-head {
  padding: 18px 20px;
}

.ranking-section-head h2 {
  color: var(--ranking-muted);
  font: 0.78rem/1.45 "Geist Mono", "SFMono-Regular", Consolas, monospace;
  letter-spacing: 0;
  margin: 4px 0 0;
}

.ranking-featured-grid {
  border-top: 1px solid var(--ranking-line);
  gap: 12px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  padding: 12px;
}

.ranking-featured-card {
  border: 1px solid var(--ranking-line);
  min-height: 340px;
  padding: 18px;
}

.ranking-featured-card + .ranking-featured-card { border-left: 1px solid var(--ranking-line); }
.ranking-featured-card h3 { font-size: 0.9rem; margin-top: 20px; }
.ranking-featured-card h3 span { font-size: 0.82rem; }
.ranking-card-period { margin-top: 18px; }
.ranking-card-rule { margin-top: 16px; }
.ranking-card-metric-label { font-size: 0.63rem; letter-spacing: 0.04em; }
.ranking-card-metric strong { font-size: 2.55rem; }
.ranking-card-cta { font-size: 0.65rem; }

.ranking-index .ranking-section-head { border-bottom: 0; }
.ranking-index-row { min-height: 64px; padding: 12px 20px; }
.ranking-index-row strong { font-size: 0.94rem; }
.ranking-index-number { font-size: 1.35rem; }
.ranking-index-keywords,
.ranking-index-count { font-size: 0.66rem; }

@media (max-width: 820px) {
  .ranking-site-nav { align-items: flex-start; flex-direction: column; gap: 12px; padding: 14px 24px; }
  .ranking-site-links { justify-content: flex-start; width: 100%; }
  .ranking-hero { grid-template-columns: 1fr; }
  .ranking-hero h1 { white-space: normal; }
  .ranking-map { min-height: 230px; }
}

@media (max-width: 460px) {
  .ranking-site-nav { padding-left: 16px; padding-right: 16px; }
  .ranking-atlas-page { padding-left: 16px; padding-right: 16px; }
  .ranking-hero { padding-top: 36px; }
  .ranking-hero h1 { font-size: 2.8rem; }
  .ranking-featured-grid { grid-template-columns: 1fr; }
  .ranking-featured-card + .ranking-featured-card { border-left: 1px solid var(--ranking-line); }
}
