/* ===== Nile Blue - fonts ===== */
@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('fonts/space-grotesk-700.woff2') format('woff2');
}
@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('fonts/space-grotesk-500.woff2') format('woff2');
}
@font-face{
  font-family:'Manrope';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('fonts/manrope-400.woff2') format('woff2');
}
@font-face{
  font-family:'Manrope';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('fonts/manrope-600.woff2') format('woff2');
}

/* ===== Nile Blue - tokens (override parent theme variables) ===== */
:root{
  --nch-navy:#0C2233;
  --nch-navy-2:#0A1B2A;
  --nch-gold:#C4872E;
  --nch-gold-dark:#9C6A20;
  --nch-sand:#F8F5EE;
  --nch-sand-2:#FFFFFF;
  --nch-teal:#C4872E;
  --nch-text:#0C2233;
  --nch-muted:#5C6B78;
  --nch-white:#fff;
  --nch-border:rgba(12,34,51,.12);
  --nch-shadow:0 20px 48px rgba(10,27,42,.16);
  --nch-radius:14px;
  --nch-radius-sm:10px;
}

/* ===== Typography ===== */
body{
  font-family:'Manrope',system-ui,-apple-system,sans-serif;
  color:var(--nch-text);
  line-height:1.65;
}
h1,h2,h3,h4{
  font-family:'Space Grotesk',system-ui,sans-serif;
  font-weight:700;
  line-height:1.08;
  letter-spacing:-.01em;
  color:var(--nch-navy);
}
h3{ font-weight:600; }
p{ max-width:65ch; }
.nch-hero-copy p,.nch-intro p{ max-width:52ch; }

/* ===== Buttons: pill, single accent ===== */
.nch-btn{
  border-radius:999px !important;
  font-family:'Space Grotesk',sans-serif;
  font-weight:500;
  letter-spacing:.01em;
  box-shadow:none !important;
  transition:transform .15s ease, opacity .15s ease;
}
.nch-btn:hover{ transform:translateY(-1px); opacity:.92; }
.nch-btn-primary{
  background:var(--nch-gold) !important;
  border-color:var(--nch-gold) !important;
  color:var(--nch-navy-2) !important;
}
/* Outline buttons: navy on light grounds only. On dark grounds the
   navy-on-navy version was effectively invisible, so those get gold. */
.nch-btn-outline{
  border-color:var(--nch-navy);
  color:var(--nch-navy);
}
.nch-site-footer .nch-btn-outline,
.nch-hero .nch-btn-outline,
.nch-cruise-hero .nch-btn-outline,
.nch-page-hero-dark .nch-btn-outline,
.nch-help-band .nch-btn-outline{
  border-color:var(--nch-gold);
  color:var(--nch-gold);
  background:transparent;
}
.nch-site-footer .nch-btn-outline:hover,
.nch-hero .nch-btn-outline:hover,
.nch-cruise-hero .nch-btn-outline:hover,
.nch-page-hero-dark .nch-btn-outline:hover,
.nch-help-band .nch-btn-outline:hover{
  background:var(--nch-gold);
  color:var(--nch-navy-2);
}

/* ===== Eyebrow ===== */
.nch-eyebrow{
  font-family:'Space Grotesk',sans-serif;
  font-weight:600;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--nch-gold);
  font-size:13px;
}

/* ===== Hero: asymmetric, image-led, dark ground ===== */
.nch-hero{
  position:relative;
  background:var(--nch-navy-2);
  overflow:hidden;
  padding-block:0;
}
.nch-hero-bg{
  position:absolute;
  inset:0;
  background-size:cover;
  background-position:center;
  opacity:.9;
}
.nch-hero-bg::after{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(100deg, rgba(10,27,42,.88) 0%, rgba(10,27,42,.62) 42%, rgba(10,27,42,.22) 74%, rgba(10,27,42,.05) 100%);
}
.nch-hero-inner{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:1.15fr .85fr;
  gap:56px;
  align-items:center;
  padding-block:96px 72px;
}
.nch-hero-copy h1{
  color:#fff;
  font-size:clamp(40px,5vw,64px);
  margin-bottom:20px;
}
.nch-hero-copy p{
  color:#D9E2E8;
  font-size:18px;
}
.nch-hero-trust{
  margin-top:28px;
  display:flex;
  gap:14px;
  flex-wrap:wrap;
}
.nch-hero-trust span{
  font-size:13px;
  color:#fff;
  background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.22);
  padding:8px 16px;
  border-radius:999px;
}
.nch-hero-form-card{
  background:var(--nch-sand-2);
  border-radius:var(--nch-radius);
  padding:32px;
  box-shadow:var(--nch-shadow);
  transform:translateY(8px);
}
.nch-hero-form-card h2{
  font-size:19px;
  margin-bottom:16px;
}
@media (max-width:900px){
  .nch-hero-inner{ grid-template-columns:1fr; padding-block:56px 40px; }
  .nch-hero-form-card{ transform:none; }
}

/* ===== Intro split ===== */
.nch-intro{ background:var(--nch-sand); padding-block:72px; }

/* ===== Why grid: hairline dividers, not boxed cards ===== */
.nch-why-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:0;
  border-top:1px solid var(--nch-border);
}
.nch-why-grid article{
  padding:32px 28px;
  border-right:1px solid var(--nch-border);
}
.nch-why-grid article:last-child{ border-right:none; }
@media (max-width:820px){
  .nch-why-grid{ grid-template-columns:1fr; }
  .nch-why-grid article{ border-right:none; border-bottom:1px solid var(--nch-border); }
}

/* ===== Dark band rhythm ===== */
.nch-help-band{ background:var(--nch-navy-2); }
.nch-help-band h2,.nch-help-band p{ color:#fff; }
.nch-help-band .nch-eyebrow{ color:var(--nch-gold); }
.nch-help-img{ border-radius:var(--nch-radius); }

/* ===== Cruise cards ===== */
.nch-card-grid > *{
  border-radius:var(--nch-radius);
  overflow:hidden;
  border:1px solid var(--nch-border);
}

/* ===== FAQ ===== */
.nch-faq-item summary{
  font-family:'Space Grotesk',sans-serif;
  font-weight:600;
}

/* ===== Eyebrow rationing: keep on hero, cruise showcase, and guides only ===== */
.nch-intro .nch-eyebrow,
.nch-help-band .nch-eyebrow,
.nch-categories .nch-eyebrow,
.nch-deals-preview .nch-eyebrow,
.nch-why .nch-eyebrow,
.nch-faq .nch-eyebrow{
  display:none;
}

/* ===== On-brand placeholder for cruises without a photo yet ===== */
.nch-img-placeholder{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:220px;
  background:linear-gradient(135deg, var(--nch-navy-2) 0%, var(--nch-navy) 60%, var(--nch-gold-dark) 140%);
  color:#fff;
  font-family:'Space Grotesk',sans-serif;
  font-weight:600;
  font-size:15px;
  text-align:center;
  padding:20px;
  letter-spacing:.02em;
}

/* ===== Stat band ===== */
.nch-stat-band{ background:var(--nch-sand-2); border-bottom:1px solid var(--nch-border); }
.nch-stat-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:0;
  padding-block:28px;
}
.nch-stat-grid > div{
  text-align:center;
  padding:0 20px;
  border-left:1px solid var(--nch-border);
}
.nch-stat-grid > div:first-child{ border-left:none; }
.nch-stat-grid strong{
  display:block;
  font-family:'Space Grotesk',sans-serif;
  font-size:clamp(24px,3vw,34px);
  color:var(--nch-navy);
  line-height:1;
  margin-bottom:8px;
}
.nch-stat-grid span{
  font-size:13px;
  color:var(--nch-muted);
}
@media (max-width:820px){
  .nch-stat-grid{ grid-template-columns:repeat(2,1fr); gap:24px 0; }
  .nch-stat-grid > div:nth-child(2n+1){ border-left:none; }
}

/* ===== Seasonal rates table ===== */
.nch-rates{ margin-top:36px; }
.nch-rates-table{ width:100%; border-collapse:collapse; margin-top:14px; }
.nch-rates-table th,.nch-rates-table td{
  text-align:left;
  padding:12px 14px;
  border-bottom:1px solid var(--nch-border);
  font-size:15px;
}
.nch-rates-table th{ font-family:'Manrope',sans-serif; font-weight:600; color:var(--nch-text); }
.nch-rates-table td{
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;
  color:var(--nch-gold-dark);
  text-align:right;
  white-space:nowrap;
}
.nch-rates-note{ font-size:13px; color:var(--nch-muted); margin-top:12px; }

/* ===== Itinerary: folding accordion (3/4/7 nights) + day timeline =====
   Uses native <details>/<summary> - same pattern as the FAQ panel on this
   page - so it needs no JS and can't conflict with the shared [data-tabs]
   click handler, which broke when a second tab set was nested inside it. */
@keyframes nch-itin-reveal{
  from{ opacity:0; transform:translateY(-4px); }
  to{ opacity:1; transform:translateY(0); }
}
.nch-itin-accordion{ margin-top:16px; }
.nch-itin-item{
  border:1px solid var(--nch-border);
  border-radius:var(--nch-radius-sm);
  margin-bottom:12px;
  overflow:hidden;
  background:var(--nch-sand-2);
  transition:border-color .2s ease, box-shadow .2s ease;
}
.nch-itin-item:last-child{ margin-bottom:0; }
.nch-itin-item[open]{
  border-color:var(--nch-gold);
  box-shadow:0 10px 28px rgba(16,43,60,.10);
}
.nch-itin-summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  gap:16px;
  padding:16px 18px;
  background:var(--nch-sand);
  user-select:none;
  transition:background .15s ease;
}
.nch-itin-summary:hover{ background:#f1e9da; }
/* a11y fix: this row's open state put white label/sub text over a
   gold-to-gold-dark gradient. The lighter end of that gradient (final
   cascaded value, after nextgen.css's palette overrides) measured only
   2.27:1 for the label -- the same white-on-gold anti-pattern already
   fixed on the mobile CTA and tab buttons, missed here. Solid navy keeps
   the existing white text at 13-19:1 with no text-color changes needed. */
.nch-itin-item[open] > .nch-itin-summary{
  background:linear-gradient(120deg, var(--nch-navy) 0%, var(--nch-navy-2) 130%);
}
.nch-itin-item[open] > .nch-itin-summary:hover{ background:var(--nch-navy-2); }
.nch-itin-summary::-webkit-details-marker{ display:none; }
.nch-itin-summary::marker{ content:''; }
.nch-itin-summary-badge{
  flex:0 0 auto;
  width:38px;
  height:38px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--nch-navy);
  color:#fff;
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;
  font-size:15px;
  transition:background .2s ease, color .2s ease;
}
.nch-itin-item[open] .nch-itin-summary-badge{
  background:#fff;
  color:var(--nch-gold-dark);
}
.nch-itin-summary-main{
  display:flex;
  flex-direction:column;
  gap:3px;
  min-width:0;
  flex:1 1 auto;
}
.nch-itin-summary-label{
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;
  font-size:16px;
  color:var(--nch-navy);
}
.nch-itin-item[open] .nch-itin-summary-label{ color:#fff; }
.nch-itin-summary-sub{
  font-size:12.5px;
  color:var(--nch-muted);
}
.nch-itin-item[open] .nch-itin-summary-sub{ color:rgba(255,255,255,.88); }
.nch-itin-chevron{
  flex:0 0 auto;
  width:11px;
  height:11px;
  border-right:2px solid var(--nch-navy);
  border-bottom:2px solid var(--nch-navy);
  transform:rotate(45deg);
  transition:transform .25s ease, border-color .2s ease;
  margin-top:-3px;
}
.nch-itin-item[open] .nch-itin-chevron{
  border-color:#fff;
  transform:rotate(-135deg);
  margin-top:3px;
}
.nch-itin-content{
  padding:22px 20px 8px;
  animation:nch-itin-reveal .22s ease;
}

.nch-itin-panel-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  flex-wrap:wrap;
  column-gap:14px;
  row-gap:2px;
  margin:22px 0 4px;
}
.nch-itin-panel-head h3{
  margin:0;
  font-size:20px;
}
.nch-itin-panel-sub{
  font-family:'Space Grotesk',sans-serif;
  font-weight:600;
  font-size:13px;
  letter-spacing:.02em;
  color:var(--nch-gold-dark);
}
.nch-itin-note{
  background:var(--nch-sand);
  border:1px solid var(--nch-border);
  border-radius:var(--nch-radius-sm);
  padding:12px 16px;
  font-size:13px;
  line-height:1.55;
  color:var(--nch-muted);
  margin:0 0 18px;
}

.nch-itinerary{
  list-style:none;
  margin:0;
  padding:0;
}
.nch-itin-day-row{
  position:relative;
  display:flex;
  gap:18px;
  padding:0 0 26px;
}
.nch-itin-day-row:last-child{ padding-bottom:4px; }
.nch-itin-day-row::before{
  content:'';
  position:absolute;
  left:17px;
  top:36px;
  bottom:2px;
  width:2px;
  background:var(--nch-border);
}
.nch-itin-day-row:last-child::before{ display:none; }
.nch-itin-badge{
  flex:0 0 auto;
  width:36px;
  height:36px;
  border-radius:50%;
  background:var(--nch-navy);
  color:#fff;
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;
  font-size:14px;
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
  z-index:1;
}
.nch-itin-body{ padding-top:5px; min-width:0; }
.nch-itin-day{
  display:block;
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;
  font-size:12px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--nch-gold-dark);
  margin-bottom:4px;
}
.nch-itin-text{ font-size:15px; line-height:1.6; }

/* ===== Related links section ===== */
.nch-links-section{ background:var(--nch-sand); border-top:1px solid var(--nch-border); }
.nch-related-links{ margin-top:0; }
.nch-related-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:1px;
  background:var(--nch-border);
  border:1px solid var(--nch-border);
  border-radius:var(--nch-radius);
  overflow:hidden;
  margin-top:18px;
}
.nch-related-grid a{
  display:block;
  padding:18px 20px;
  background:var(--nch-sand-2);
  text-decoration:none;
  transition:background .15s ease;
}
.nch-related-grid a:hover{ background:#FFFDF8; }
.nch-related-grid strong{
  display:block;
  font-family:'Space Grotesk',sans-serif;
  font-size:15px;
  color:var(--nch-navy);
  margin-bottom:6px;
}
.nch-related-grid span{ font-size:13px; color:var(--nch-muted); line-height:1.5; }


/* =====================================================
   Responsive corrections.
   nile-blue.css loads after theme.css, so its desktop
   rules were overriding the theme's own breakpoints.
   These re-assert mobile layout at the theme's widths.
   ===================================================== */

/* Guard against horizontal overflow without breaking position:sticky
   (overflow-x:hidden on html/body would disable the sticky sidebar) */
img,table,iframe{ max-width:100%; }
.nch-container{ max-width:100%; }

@media (max-width:1060px){
  .nch-hero-inner{ grid-template-columns:1fr; gap:32px; padding-block:72px 56px; }
  .nch-hero-form-card{ transform:none; }
  .nch-why-grid{ grid-template-columns:repeat(2,1fr); }
  .nch-why-grid article:nth-child(2n){ border-right:none; }
  .nch-stat-grid{ grid-template-columns:repeat(2,1fr); gap:22px 0; }
  .nch-stat-grid > div:nth-child(2n+1){ border-left:none; }
}

@media (max-width:720px){
  .nch-hero-inner{ padding-block:56px 44px; gap:26px; }
  .nch-hero-copy h1{ font-size:clamp(30px,8vw,40px); }
  .nch-hero-copy p{ font-size:16px; }
  .nch-hero-form-card{ padding:20px; }
  .nch-hero-trust{ gap:8px; margin-top:20px; }
  .nch-hero-trust span{ font-size:12px; padding:6px 12px; }
  .nch-intro{ padding-block:52px; }
  .nch-why-grid{ grid-template-columns:1fr; }
  .nch-why-grid article{ border-right:none; border-bottom:1px solid var(--nch-border); padding:24px 0; }
  .nch-why-grid article:last-child{ border-bottom:none; }
  .nch-stat-grid{ padding-block:22px; }
  .nch-stat-grid > div{ padding:0 10px; }
  .nch-stat-grid span{ font-size:12px; }
  /* Seasonal rates: stack label above price so long labels never overflow */
  .nch-rates-table,.nch-rates-table tbody,.nch-rates-table tr,.nch-rates-table th,.nch-rates-table td{ display:block; width:100%; }
  .nch-rates-table tr{ padding:12px 0; border-bottom:1px solid var(--nch-border); }
  .nch-rates-table th,.nch-rates-table td{ padding:0; border-bottom:none; }
  .nch-rates-table th{ font-size:14px; margin-bottom:4px; }
  .nch-rates-table td{ text-align:left; font-size:18px; white-space:normal; }
  .nch-related-grid{ grid-template-columns:1fr; }
  .nch-img-placeholder{ min-height:180px; font-size:14px; }
}

@media (max-width:480px){
  .nch-stat-grid{ grid-template-columns:1fr; gap:18px 0; }
  .nch-stat-grid > div{ border-left:none; }
  .nch-itin-day-row{ gap:14px; }
  .nch-hero-copy h1{ font-size:clamp(26px,8.5vw,34px); }
}


/* =====================================================
   Overflow fixes.
   Grid and flex children default to min-width:auto, so a
   wide child (the no-wrap tab row, a long price, a URL)
   stretches its track past the viewport and the whole
   page scrolls sideways. min-width:0 lets them shrink.
   ===================================================== */
.nch-cruise-layout > *,
.nch-cruise-hero-grid > *,
.nch-card-grid > *,
.nch-card-grid-compact > *,
.nch-post-grid > *,
.nch-category-grid > *,
.nch-why-grid > *,
.nch-stat-grid > *,
.nch-related-grid > *,
.nch-split > *,
.nch-help-inner > *,
.nch-request-grid > *,
.nch-hero-inner > *,
.nch-footer-grid > *,
.nch-itin-day-row > *,
.nch-tabs,
.nch-cruise-main,
.nch-cruise-sidebar{
  min-width:0;
}

/* Long unbroken strings (prices, emails, URLs) must not push the page wide */
.nch-cruise-main,
.nch-readable,
.nch-itin-text,
.nch-related-grid a{
  overflow-wrap:break-word;
  word-wrap:break-word;
}

/* Tab row: scroll inside its own container, never the page */
.nch-tab-buttons{
  max-width:100%;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
.nch-tab-buttons::-webkit-scrollbar{ display:none; }
@media (max-width:720px){
  .nch-tab-buttons{ overflow-x:auto; flex-wrap:nowrap; }
  .nch-tab-buttons button{ flex:0 0 auto; white-space:nowrap; padding:10px 14px; font-size:14px; }
}

/* =====================================================
   Sticky mobile bar: Call / WhatsApp / Quote / Menu
   ===================================================== */
@media (max-width:720px){
  .nch-mobile-cta{
    height:auto;
    min-height:56px;
    padding-bottom:env(safe-area-inset-bottom);
  }
  .nch-mobile-cta a,
  .nch-mobile-cta button{
    min-width:0;
    padding:10px 4px;
    font-size:12px;
    line-height:1.2;
    text-align:center;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  /* clear the fixed bar, including the iPhone home indicator */
  body{ padding-bottom:calc(58px + env(safe-area-inset-bottom)); }
}
@media (max-width:360px){
  .nch-mobile-cta a,
  .nch-mobile-cta button{ font-size:11px; padding:10px 2px; }
}


/* =====================================================
   Dark-ground contrast.
   The global heading colour above is navy, which is
   unreadable on the navy footer and dark hero bands.
   Restore light text wherever the ground is dark.
   ===================================================== */
.nch-site-footer h1,
.nch-site-footer h2,
.nch-site-footer h3,
.nch-site-footer h4,
.nch-hero h1,
.nch-hero h2,
.nch-hero h3,
.nch-cruise-hero h1,
.nch-cruise-hero h2,
.nch-cruise-hero h3,
.nch-page-hero-dark h1,
.nch-page-hero-dark h2,
.nch-page-hero-dark h3,
.nch-help-band h1,
.nch-help-band h2,
.nch-help-band h3,
.nch-footer-cta h1,
.nch-footer-cta h2,
.nch-footer-cta h3{
  color:#fff;
}

/* Footer body text and links */
.nch-site-footer p,
.nch-site-footer li,
.nch-site-footer span{
  color:#C9D9DF;
}
.nch-site-footer a:not(.nch-btn){
  color:#E3EDF1;
  text-decoration:none;
}
.nch-site-footer a:not(.nch-btn):hover{
  color:var(--nch-gold);
}


/* Hero readability: keep the photo visible but guarantee text contrast
   with a soft scrim behind the copy rather than dimming the whole image. */
.nch-hero-copy{ position:relative; z-index:2; }
.nch-hero-copy h1{ text-shadow:0 2px 18px rgba(10,27,42,.55); }
.nch-hero-copy p{ text-shadow:0 1px 10px rgba(10,27,42,.5); }
@media (max-width:1060px){
  /* stacked layout: image sits behind everything, so darken a little more */
  .nch-hero-bg::after{
    background:linear-gradient(180deg, rgba(10,27,42,.82) 0%, rgba(10,27,42,.72) 55%, rgba(10,27,42,.85) 100%);
  }
}


/* ===== Mobile primary-nav: sit above the sticky bottom bar when open =====
   .nch-primary-nav had no explicit z-index, so once opened it could end up
   below .nch-mobile-cta (z-index:999) in the stacking order on some pages. */
.nch-primary-nav.is-open{
  z-index:1000;
}

/* ===== Accessibility fixes tried on staging (see nilecruisehub.com audit) ===== */
/* Mobile sticky bar: Quote (white-on-gold, 3.06:1) and WhatsApp (white-on-green, 2.80:1) both failed 4.5:1 */
.nch-mobile-cta a:nth-child(2){ background:#15803D; color:#fff; }
.nch-mobile-cta a:nth-child(3){ background:var(--nch-gold); color:var(--nch-navy-2); }
/* Active cruise-page tab reused the same white-on-gold pattern (5.70:1 after fix) */
.nch-tab-buttons button.active{ background:var(--nch-gold); color:var(--nch-navy-2); }
/* Small gold-dark text on sand (eyebrows, nav hover, pill labels) measured 4.29:1; darkened slightly to clear 4.5:1 while staying gold */
.nch-eyebrow{ color:#94641E; }
/* Two more plain-gold-on-light-background text spots found the same way:
   the homepage '1/2/3' step numbers (24px bold -- large text, needs only
   3:1) and every blog/travel-guide card's publish date (13px -- needs
   4.5:1). Both measured ~2.2:1 with the redesign's lighter gold token.
   gold-dark clears both (4.29:1 large-text threshold, 4.67:1 normal-text). */
.nch-feature-stack strong{ color:var(--nch-gold-dark); }
.nch-post-body span{ color:var(--nch-gold-dark); }
/* The sitewide 'a:hover turns gold' default is also 2.27:1 -- fine as a
   transient hover state on dark sections (footer/hero already have their
   own darker/lighter overrides where needed), but .nch-readable wraps
   ordinary post/page body copy on a white background, so any in-content
   link a writer adds would fail contrast the moment someone hovers it.
   Scoped fix, not a global change to a:hover -- that default still serves
   dark-ground contexts correctly. */
.nch-readable a:hover{ color:var(--nch-gold-dark); }
/* Pre-existing base-theme bug, not from this layer: theme.css defines
   .nch-check-list li:before (the benefit-list checkmark bullet) TWICE.
   The second declaration overrides only color+font-weight (to a brown,
   #b8752e) while leaving the first rule's background:var(--nch-gold) in
   place -- brown-on-gold measured 1.65:1, so the checkmark glyph is
   effectively invisible on its own circle. Used on the quote page and via
   a shared template helper (inc/template-tags.php), so this affects more
   than one page. Restore a working, high-contrast pairing. */
.nch-check-list li:before{
  background:var(--nch-gold-dark);
  color:#fff;
}
/* Pre-existing base-theme bug, not from this layer: theme.css sets the
   struck-through old-price text (.nch-card-footer del, used on every cruise
   card across deals/archive/taxonomy/homepage/related-cruises) to a flat
   grey (#9ca3af) on the card's white background -- measured 2.54:1, fails
   WCAG AA for real text content. Swap to the existing muted-text token,
   which passes at 5.5:1 on white and still reads as de-emphasized/struck. */
.nch-card-footer del{ color:var(--nch-muted); }
.nch-primary-nav a:hover,.nch-primary-nav .current-menu-item>a{ color:#94641E; }
.nch-pill{ color:#94641E; }
/* Pre-existing base-theme bug, not from this layer: theme.css's shared
   gold-gradient button rule (background:linear-gradient(gold,#e7bd61);
   color:#fff) is written on two selectors, .nch-header-quote and
   .nch-btn-primary. Only .nch-btn-primary ever got a contrast fix
   (color:navy-2 below); .nch-header-quote is a separate class that never
   carries .nch-btn-primary in the markup, so the desktop header's
   'Request Cruise' button was left at white-on-gold, ~2.27:1 / ~1.77:1
   against the two gradient stops. Apply the same fix here. */
.nch-header-quote{ color:var(--nch-navy-2) !important; }
/* Pre-existing base-theme bug, not from this layer: this layer's own
   dark-ground fix for .nch-btn-outline (further up this file) assumes
   any outline button inside .nch-cruise-hero sits directly on the navy
   hero background, so it repaints the border/text gold. The booking
   card's 'Ask on WhatsApp' button is an outline button inside
   .nch-cruise-hero too, but it's nested inside .nch-booking-card, a
   solid white card floating on that hero -- so the gold text actually
   lands on white, ~2.27:1. Re-scope to the darker, already-established
   safe token for light backgrounds. */
.nch-cruise-hero .nch-booking-card .nch-btn-outline{ border-color:var(--nch-gold-dark); color:var(--nch-gold-dark); }
/* Keyboard-access gap, not a color/contrast issue: desktop submenus
   (.nch-primary-nav .sub-menu) only ever reveal on :hover. A keyboard
   user tabbing through the nav has no way to open a parent item's
   dropdown -- the children are unreachable. Add a focus-within fallback
   alongside the existing hover rule; no JS involved, native browser
   focus handling is enough since the sub-menu links are real anchors. */
.nch-primary-nav li:focus-within>.sub-menu{ display:block; }
