.public-flights-page {
  background:#f4f7f5;
  color:#17231f;
}
.skip-link {
  position:fixed;
  top:8px;
  left:8px;
  z-index:1000;
  padding:10px 14px;
  border-radius:8px;
  color:#084b3b;
  background:#fff;
  box-shadow:0 8px 24px rgba(7,55,43,.16);
  transform:translateY(-160%);
  transition:transform .16s ease;
}
.skip-link:focus { transform:translateY(0); }
.public-flights-page .site-header { position:fixed; }
.flights-main {
  width:min(1180px,calc(100% - 32px));
  margin:0 auto;
  padding:84px 0 56px;
}
.flight-intro { padding:0 2px; }
.flight-intro .eyebrow {
  margin:0 0 2px;
  color:#a56813;
  font-size:10px;
  font-weight:900;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.flight-intro h1 {
  margin:0;
  color:#003f34;
  font-family:inherit;
  font-size:clamp(25px,2.6vw,34px);
  line-height:1.12;
  letter-spacing:-.025em;
}
.flight-intro > p:last-child {
  margin:3px 0 0;
  color:#5b6d66;
  font-size:13px;
}
.search-panel {
  margin-top:10px;
  padding:16px;
  border:1px solid #d6e1dc;
  border-radius:18px;
  background:#fff;
  box-shadow:0 12px 32px rgba(8,47,39,.07);
}
.trip-type {
  display:flex;
  width:fit-content;
  gap:4px;
  margin:0 0 12px;
  padding:3px;
  border:0;
  border-radius:12px;
  background:#edf3f0;
}
.trip-type label { position:relative; cursor:pointer; }
.trip-type input {
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.trip-type span {
  display:flex;
  min-height:44px;
  align-items:center;
  justify-content:center;
  padding:6px 14px;
  border-radius:9px;
  color:#40534c;
  font-size:12px;
  font-weight:800;
}
.trip-type input:checked + span {
  background:#0b4b3c;
  color:#fff;
  box-shadow:0 4px 12px rgba(8,47,39,.16);
}
.trip-type input:focus-visible + span {
  outline:3px solid rgba(23,107,77,.28);
  outline-offset:2px;
}
.search-grid {
  display:grid;
  grid-template-columns:minmax(180px,1.35fr) 38px minmax(180px,1.35fr) minmax(132px,.68fr) minmax(132px,.68fr) minmax(180px,.9fr);
  grid-template-areas:"origin swap destination departure return travellers";
  gap:8px;
  align-items:end;
}
.search-grid[data-round-trip="false"] {
  grid-template-columns:minmax(190px,1.35fr) 38px minmax(190px,1.35fr) minmax(145px,.72fr) minmax(180px,.9fr);
  grid-template-areas:"origin swap destination departure travellers";
}
.origin-field { grid-area:origin; }
.destination-field { grid-area:destination; }
.departure-field { grid-area:departure; }
.return-field { grid-area:return; }
.traveller-field { grid-area:travellers; }
.field {
  display:grid;
  position:relative;
  gap:4px;
  min-width:0;
  color:#273a34;
  font-size:12px;
  font-weight:800;
}
.field small {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
.field input,
.field select,
.passenger-row input,
.passenger-row select,
.filter-panel input,
.filter-panel select {
  width:100%;
  min-width:0;
  min-height:46px;
  padding:8px 10px;
  border:1px solid #c8d6d0;
  border-radius:10px;
  background:#fff;
  color:#14201d;
  font:inherit;
  outline:none;
}
.filter-panel input,
.filter-panel select {
  min-height:48px;
  padding:10px 12px;
  border-radius:11px;
}
.field input:focus,
.field select:focus,
.passenger-row input:focus,
.passenger-row select:focus,
.filter-panel input:focus,
.filter-panel select:focus {
  border-color:#176b4d;
  box-shadow:0 0 0 3px rgba(23,107,77,.13);
}
.swap-button {
  grid-area:swap;
  width:38px;
  min-height:46px;
  padding:0;
  border:1px solid #c8d6d0;
  border-radius:10px;
  background:#f7faf8;
  color:#0b3d32;
  font-size:19px;
  cursor:pointer;
}
.swap-button:hover { background:#e8f1ed; }
.traveller-field {
  position:relative;
  display:grid;
  gap:4px;
  min-width:0;
}
.traveller-field-label {
  color:#273a34;
  font-size:12px;
  font-weight:800;
}
.traveller-picker {
  min-width:0;
}
.traveller-picker summary {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  height:46px;
  min-height:46px;
  box-sizing:border-box;
  align-items:center;
  padding:8px 10px;
  border:1px solid #c8d6d0;
  border-radius:10px;
  background:#fff;
  color:#344841;
  cursor:pointer;
  list-style:none;
}
.traveller-picker summary::-webkit-details-marker { display:none; }
.traveller-picker summary strong {
  min-width:0;
  color:#0b3d32;
  overflow:hidden;
  font-size:13px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.summary-chevron {
  font-size:20px;
  transition:transform .16s ease;
}
.traveller-picker[open] .summary-chevron { transform:rotate(180deg); }
.traveller-picker summary:focus-visible {
  outline:3px solid rgba(23,107,77,.22);
  outline-offset:2px;
  border-radius:10px;
}
.passenger-row {
  position:absolute;
  top:calc(100% + 8px);
  right:0;
  z-index:20;
  display:grid;
  width:min(640px,calc(100vw - 32px));
  grid-template-columns:repeat(4,minmax(110px,1fr));
  gap:10px;
  align-items:end;
  padding:12px;
  border:1px solid #d9e3df;
  border-radius:12px;
  background:#fff;
  box-shadow:0 16px 36px rgba(8,47,39,.16);
}
.passenger-row > div {
  grid-column:1 / -1;
  display:grid;
  gap:2px;
  align-self:center;
}
.passenger-row small,
.passenger-row label span {
  display:block;
  color:#687a73;
  font-size:11px;
  font-weight:600;
}
.passenger-row label {
  display:grid;
  gap:4px;
  color:#273a34;
  font-size:12px;
  font-weight:800;
}
.passenger-row input,
.passenger-row select { min-height:44px; }
.form-feedback {
  margin-top:8px;
  padding:11px 13px;
  border:1px solid #e4b5b0;
  border-radius:10px;
  background:#fff3f2;
  color:#8a2e28;
  font-weight:700;
}
.search-button {
  display:flex;
  width:auto;
  min-width:194px;
  height:46px;
  min-height:46px;
  align-items:center;
  justify-content:center;
  gap:8px;
  margin:10px 0 0 auto;
  border:0;
  border-radius:11px;
  background:#003f34;
  color:#fff;
  font-weight:900;
  cursor:pointer;
  box-shadow:0 9px 18px rgba(11,75,60,.17);
}
.form-actions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  margin-top:10px;
}
.form-actions .search-button { margin:0; }
.demo-search-button {
  min-height:46px;
  padding:7px 13px;
  border:1px solid #c59a45;
  border-radius:11px;
  background:#fffaf0;
  color:#654007;
  font-weight:900;
  cursor:pointer;
}
.demo-search-button:hover { background:#fff3d7; }
.demo-button-label {
  display:inline-flex;
  margin-right:6px;
  padding:3px 6px;
  border-radius:999px;
  background:#bd8423;
  color:#fff;
  font-size:9px;
  letter-spacing:.08em;
}
.search-button:hover { background:#073d31; }
.search-button:disabled { cursor:wait; opacity:.72; }
.search-icon {
  display:block;
  flex:0 0 19px;
  width:19px;
  max-width:19px;
  height:19px;
  max-height:19px;
  fill:none;
  stroke:currentColor;
  stroke-width:2;
  stroke-linecap:round;
}
.search-disclaimer {
  margin:6px 0 0;
  color:#687a73;
  font-size:11px;
  line-height:1.4;
  text-align:center;
}
.results-area { margin-top:30px; }
.results-heading,
.group-heading,
.filter-title-row {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
}
.results-heading { margin-bottom:16px; }
.results-heading h2 {
  margin:0;
  color:#0b3d32;
  font-family:inherit;
  font-size:clamp(24px,3vw,32px);
}
.results-heading p {
  margin:4px 0 0;
  color:#5a6b65;
}
.section-kicker {
  margin:0 0 3px;
  color:#a56813;
  font-size:10px;
  font-weight:900;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.results-mode-pill {
  display:inline-flex;
  min-height:32px;
  align-items:center;
  padding:5px 10px;
  border-radius:999px;
  background:#f3e5c6;
  color:#744807;
  font-size:11px;
  font-weight:800;
  text-align:center;
}
.results-mode-pill.is-demo {
  background:#bd8423;
  color:#fff;
  letter-spacing:.04em;
}
.demo-mode-notice {
  display:flex;
  align-items:flex-start;
  gap:10px;
  margin:-4px 0 16px;
  padding:11px 13px;
  border:1px solid #e4c47e;
  border-radius:11px;
  background:#fff8e8;
  color:#68440a;
  font-size:12px;
  line-height:1.45;
}
.demo-mode-notice strong {
  flex:none;
  padding:3px 7px;
  border-radius:999px;
  background:#bd8423;
  color:#fff;
  font-size:10px;
  letter-spacing:.08em;
}
.mobile-filter-bar { display:none; }
.results-layout {
  display:grid;
  grid-template-columns:220px minmax(0,1fr);
  gap:18px;
  align-items:start;
}
.filter-panel {
  position:sticky;
  top:88px;
  display:grid;
  gap:12px;
  padding:16px;
  border:1px solid #d8e4df;
  border-radius:14px;
  background:#fff;
  box-shadow:0 7px 20px rgba(8,47,39,.04);
}
.filter-title-row { align-items:center; }
.filter-title-row h3 {
  margin:0;
  color:#0b3d32;
  font-size:16px;
}
.filter-panel label {
  display:grid;
  gap:5px;
  color:#344841;
  font-size:12px;
  font-weight:800;
}
.filter-note {
  margin:0;
  padding:9px;
  border-radius:8px;
  background:#f7faf8;
  color:#687a73;
  font-size:11px;
  line-height:1.4;
}
.text-button {
  min-height:44px;
  padding:5px 8px;
  border:0;
  background:transparent;
  color:#176b4d;
  font-weight:800;
  cursor:pointer;
}
.result-groups {
  display:grid;
  gap:18px;
  min-width:0;
}
.result-group { min-width:0; }
.group-heading {
  align-items:end;
  margin-bottom:10px;
}
.group-heading h2 {
  margin:0;
  color:#0b3d32;
  font-size:20px;
}
.group-heading p {
  margin:2px 0 0;
  color:#687a73;
  font-size:12px;
}
.group-heading > span,
.mobile-filter-bar > span {
  flex:none;
  color:#176b4d;
  font-size:12px;
  font-weight:900;
}
.flight-card-list {
  display:grid;
  gap:10px;
}
.flight-card {
  overflow:hidden;
  border:1px solid #d8e4df;
  border-radius:14px;
  background:#fff;
  box-shadow:0 6px 18px rgba(8,47,39,.045);
}
.flight-card-top {
  display:grid;
  grid-template-columns:170px minmax(0,1fr) 210px;
  gap:16px;
  padding:16px;
}
.airline-block {
  display:flex;
  gap:10px;
  align-items:flex-start;
}
.airline-mark,
.airline-logo {
  width:42px;
  height:42px;
  flex:none;
  border-radius:10px;
}
.airline-mark {
  display:grid;
  place-items:center;
  background:#e8f1ed;
  color:#0b4b3c;
  font-size:12px;
  font-weight:900;
}
.airline-logo {
  object-fit:contain;
  border:1px solid #e1e9e5;
  background:#fff;
}
.airline-block > div > strong,
.airline-block > div > span { display:block; }
.airline-block > div > span {
  margin-top:2px;
  color:#687a73;
  font-size:11px;
  line-height:1.35;
}
.airline-block em {
  display:inline-flex;
  margin-top:6px;
  padding:3px 7px;
  border-radius:999px;
  background:#fff1cd;
  color:#815407;
  font-size:9px;
  font-style:normal;
  font-weight:900;
  letter-spacing:.08em;
}
.segment-stack {
  display:grid;
  gap:10px;
  min-width:0;
}
.segment {
  display:grid;
  grid-template-columns:minmax(72px,1fr) minmax(120px,1.35fr) minmax(72px,1fr);
  gap:9px;
  align-items:center;
}
.airport-time strong,
.airport-time span { display:block; }
.airport-time strong {
  color:#0b3d32;
  font-size:18px;
}
.airport-time span {
  color:#53665f;
  font-size:11px;
}
.airport-time:last-child { text-align:right; }
.route-line {
  position:relative;
  text-align:center;
  color:#687a73;
  font-size:10px;
}
.route-line::before {
  content:"";
  position:absolute;
  right:0;
  bottom:-7px;
  left:0;
  height:1px;
  background:#b9c9c2;
}
.route-line::after {
  content:"";
  position:absolute;
  right:0;
  bottom:-10px;
  width:7px;
  height:7px;
  border-top:1px solid #81968d;
  border-right:1px solid #81968d;
  transform:rotate(45deg);
}
.fare-block {
  display:grid;
  align-content:start;
  gap:4px;
  padding-left:14px;
  border-left:1px solid #e1e9e5;
}
.fare-block small { color:#687a73; }
.fare-total {
  display:flex;
  justify-content:space-between;
  gap:10px;
  margin-top:4px;
  padding-top:7px;
  border-top:1px solid #e1e9e5;
  color:#0b3d32;
  font-weight:900;
}
.fare-total strong { font-size:19px; }
.flight-details {
  border-top:1px solid #edf2ef;
  background:#f8fbf9;
}
.flight-details summary {
  display:flex;
  min-height:44px;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:8px 16px;
  color:#0b4b3c;
  font-size:12px;
  font-weight:900;
  cursor:pointer;
}
.flight-details summary span {
  color:#60726b;
  font-size:11px;
  font-weight:700;
  text-align:right;
}
.flight-details summary:focus-visible {
  outline:3px solid rgba(23,107,77,.22);
  outline-offset:-3px;
}
.flight-detail-grid {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:1px;
  border-top:1px solid #e5ede9;
  background:#e5ede9;
}
.flight-detail-grid > div {
  display:grid;
  gap:3px;
  padding:10px 12px;
  background:#fff;
}
.flight-detail-grid span {
  color:#687a73;
  font-size:10px;
}
.flight-detail-grid strong {
  color:#24372f;
  font-size:11px;
}
.fare-options {
  padding:12px;
  border-top:1px solid #e5ede9;
  background:#f8fbfa;
}
.fare-options h4 {
  margin:0 0 8px;
  color:#173d2e;
  font-size:12px;
}
.fare-option-list { display:grid; gap:7px; }
.fare-option {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:9px 10px;
  border:1px solid #dce8e3;
  border-radius:8px;
  background:#fff;
}
.fare-option > div { display:grid; gap:2px; min-width:0; }
.fare-option strong { color:#173d2e; font-size:12px; }
.fare-option span,
.fare-option small { color:#60726b; font-size:10px; line-height:1.35; }
.fare-option b { color:#176b4d; font-size:12px; white-space:nowrap; }
.demo-flight-card { border-color:#dfc27e; }
.flight-card-actions {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:11px 16px 14px;
}
.flight-card-actions p {
  margin:0;
  color:#687a73;
  font-size:11px;
}
.select-flight {
  min-width:150px;
  min-height:44px;
  border:0;
  border-radius:9px;
  background:#176b4d;
  color:#fff;
  font-weight:900;
  cursor:pointer;
}
.select-flight:hover { background:#0f5b40; }
.empty-results {
  display:grid;
  gap:5px;
  padding:24px;
  border:1px dashed #b9c9c2;
  border-radius:14px;
  background:#fff;
  color:#53665f;
  text-align:center;
}
.empty-results strong { color:#0b3d32; }
.selection-message {
  position:sticky;
  bottom:14px;
  z-index:5;
  padding:13px 15px;
  border:1px solid #d7bd7e;
  border-radius:11px;
  background:#fff8e8;
  color:#5d3b09;
  box-shadow:0 10px 26px rgba(71,46,6,.12);
  font-weight:800;
}
.selection-message a { color:#0b5f46; }
.skeleton-card { padding:16px; }
.skeleton-row {
  display:flex;
  gap:10px;
  align-items:center;
}
.skeleton-avatar,
.skeleton-line,
.skeleton-route span {
  display:block;
  border-radius:8px;
  background:linear-gradient(90deg,#edf2ef 25%,#f8faf9 50%,#edf2ef 75%);
  background-size:200% 100%;
  animation:skeleton-shimmer 1.2s ease-in-out infinite;
}
.skeleton-avatar {
  width:42px;
  height:42px;
  border-radius:10px;
}
.skeleton-line {
  width:100%;
  height:12px;
  margin-top:16px;
}
.skeleton-line-short {
  width:140px;
  margin:0;
}
.skeleton-route {
  display:grid;
  grid-template-columns:70px 1fr 70px;
  gap:10px;
  margin-top:18px;
}
.skeleton-route span { height:30px; }
@keyframes skeleton-shimmer { to { background-position:-200% 0; } }
.flights-footer {
  background:#082f27;
  color:#fff;
}
.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
[hidden] { display:none !important; }

@media (max-width:1024px) {
  .flight-card-top { grid-template-columns:150px minmax(0,1fr); }
  .fare-block {
    grid-column:1 / -1;
    padding:10px 0 0;
    border-top:1px solid #e1e9e5;
    border-left:0;
  }
}

@media (max-width:800px) {
  .flights-main {
    width:min(100% - 24px,720px);
    padding-top:82px;
  }
  .flight-intro { padding-inline:2px; }
  .search-panel { padding:14px; }
  .search-grid {
    grid-template-columns:repeat(7,minmax(0,1fr));
    grid-template-areas:
      "origin origin origin swap destination destination destination"
      "departure departure return return travellers travellers travellers";
  }
  .search-grid[data-round-trip="false"] {
    grid-template-columns:repeat(7,minmax(0,1fr));
    grid-template-areas:
      "origin origin origin swap destination destination destination"
      "departure departure departure travellers travellers travellers travellers";
  }
  .swap-button { justify-self:center; }
  .passenger-row { width:min(620px,calc(100vw - 48px)); }
  .passenger-row {
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
  .passenger-row > div { grid-column:1 / -1; }
  .results-layout { grid-template-columns:1fr; }
  .mobile-filter-bar {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:9px 0;
  }
  .filter-toggle {
    min-height:44px;
    padding:8px 14px;
    border:1px solid #c8d6d0;
    border-radius:10px;
    background:#fff;
    color:#0b4b3c;
    font-weight:900;
    cursor:pointer;
  }
  .filter-panel {
    position:static;
    grid-template-columns:repeat(2,minmax(0,1fr));
    order:2;
  }
  .filter-panel[data-mobile-collapsed="true"] { display:none; }
  .filter-title-row,
  .filter-note { grid-column:1 / -1; }
  .result-groups { order:1; }
}

@media (max-width:600px) {
  .flights-main {
    width:min(100% - 20px,560px);
    padding-top:74px;
    padding-bottom:42px;
  }
  .flight-intro h1 { font-size:25px; }
  .flight-intro > p:last-child {
    margin-top:2px;
    font-size:12px;
  }
  .search-panel {
    margin-top:8px;
    padding:12px;
    border-radius:15px;
  }
  .trip-type {
    width:fit-content;
    margin-bottom:10px;
  }
  .trip-type span {
    min-height:44px;
    padding-inline:11px;
  }
  .search-grid {
    grid-template-columns:repeat(2,minmax(0,1fr));
    grid-template-areas:
      "origin origin"
      "swap swap"
      "destination destination"
      "departure return"
      "travellers travellers";
    gap:8px;
  }
  .search-grid[data-round-trip="false"] {
    grid-template-columns:repeat(2,minmax(0,1fr));
    grid-template-areas:
      "origin origin"
      "swap swap"
      "destination destination"
      "departure departure"
      "travellers travellers";
  }
  .swap-button {
    justify-self:center;
    min-height:44px;
    margin-block:-2px;
  }
  .traveller-picker summary {
    grid-template-columns:1fr auto;
    height:46px;
    min-height:46px;
  }
  .passenger-row {
    position:static;
    width:auto;
    margin-top:6px;
    grid-template-columns:repeat(2,minmax(0,1fr));
    box-shadow:0 10px 24px rgba(8,47,39,.11);
  }
  .passenger-row > div,
  .passenger-row label:last-child { grid-column:1 / -1; }
  .search-button {
    width:100%;
    min-width:0;
    margin-top:0;
  }
  .results-area { margin-top:24px; }
  .results-heading { display:grid; }
  .results-mode-pill { width:fit-content; }
  .filter-panel { grid-template-columns:1fr; }
  .filter-title-row,
  .filter-note { grid-column:auto; }
  .group-heading {
    display:grid;
    align-items:start;
  }
  .flight-card-top {
    grid-template-columns:1fr;
    gap:13px;
    padding:14px;
  }
  .segment {
    grid-template-columns:minmax(66px,1fr) minmax(92px,1.25fr) minmax(66px,1fr);
    gap:6px;
  }
  .fare-block {
    padding-top:10px;
    border-top:1px solid #e1e9e5;
  }
  .flight-detail-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .fare-option { align-items:flex-start; flex-direction:column; gap:6px; }
  .fare-option b { align-self:flex-end; }
  .flight-card-actions {
    align-items:stretch;
    flex-direction:column;
    padding-inline:14px;
  }
  .select-flight { width:100%; }
  .form-actions {
    display:grid;
    grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
    gap:8px;
  }
  .form-actions .search-button,
  .demo-search-button {
    width:100%;
    min-width:0;
    font-size:11px;
  }
}

@media (max-width:360px) {
  .flights-main { width:min(100% - 16px,560px); }
  .flight-intro h1 { font-size:25px; }
  .search-panel { padding:12px; }
  .field input,
  .field select { padding-inline:9px; }
  .segment { gap:4px; }
  .airport-time strong { font-size:16px; }
}

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