/* ==========================================================================
   Naturalia Cruise — Content Page Design System
   Hand-authored (no Tailwind build step required on this server).
   Scope: every `page-{slug}.php` template + the generic page.php fallback.
   Prefix: .nc-   ·   Content prose: .nc-prose
   ========================================================================== */

:root {
  --nc-ink: #0b1420;
  --nc-ink-2: #14243a;
  --nc-ink-3: #1d3350;
  --nc-body: #2c3743;
  --nc-muted: #62707f;
  --nc-faint: #8a97a5;

  --nc-gold: #c9a24b;
  --nc-gold-dk: #a8843a;
  --nc-gold-lt: #e0c179;
  --nc-gold-soft: #f4ead4;
  --nc-gold-line: rgba(201, 162, 75, 0.32);
  --nc-gold-wash: rgba(201, 162, 75, 0.08);

  --nc-sand: #faf7f1;
  --nc-mist: #eef6fb;
  --nc-line: rgba(11, 20, 32, 0.1);
  --nc-line-2: rgba(11, 20, 32, 0.16);

  --nc-shadow-sm: 0 1px 2px rgba(11, 20, 32, 0.06), 0 4px 14px rgba(11, 20, 32, 0.05);
  --nc-shadow: 0 2px 6px rgba(11, 20, 32, 0.06), 0 18px 40px -18px rgba(11, 20, 32, 0.28);
  --nc-shadow-lg: 0 4px 10px rgba(11, 20, 32, 0.07), 0 34px 70px -28px rgba(11, 20, 32, 0.4);

  --nc-r-sm: 10px;
  --nc-r: 16px;
  --nc-r-lg: 24px;

  --nc-serif: "Playfair Display", Georgia, "Times New Roman", serif;
  --nc-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;

  --nc-header-h: 84px;
  --nc-container: 1200px;
}

/* ---------- Page shell ------------------------------------------------- */

.nc-page {
  background: #fff;
  color: var(--nc-body);
  font-family: var(--nc-sans);
  overflow-x: clip;
}

.nc-container {
  width: 100%;
  max-width: var(--nc-container);
  margin-inline: auto;
  padding-inline: 20px;
}
@media (min-width: 768px) { .nc-container { padding-inline: 32px; } }

.nc-section { padding-block: clamp(2.75rem, 6vw, 5.25rem); }
.nc-section--tight { padding-block: clamp(2rem, 4vw, 3.25rem); }
.nc-section--sand { background: var(--nc-sand); }
.nc-section--mist { background: var(--nc-mist); }
.nc-section--ink { background: var(--nc-ink); color: rgba(255, 255, 255, 0.86); }

/* ---------- Section headers -------------------------------------------- */

.nc-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  font-family: var(--nc-sans);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--nc-gold-dk);
  margin: 0 0 0.85rem;
}
.nc-eyebrow::before {
  content: "";
  width: 28px;
  height: 1px;
  background: var(--nc-gold);
  flex: none;
}
.nc-eyebrow--light { color: var(--nc-gold-lt); }
.nc-eyebrow--center { justify-content: center; }

.nc-shead { margin-bottom: clamp(1.6rem, 3vw, 2.6rem); }
.nc-shead--center { text-align: center; max-width: 780px; margin-inline: auto; }
.nc-shead--center .nc-eyebrow { justify-content: center; }

.nc-h2 {
  font-family: var(--nc-serif);
  font-weight: 700;
  font-size: clamp(1.7rem, 1.15rem + 2.2vw, 2.75rem);
  line-height: 1.16;
  letter-spacing: -0.01em;
  color: var(--nc-ink);
  margin: 0 0 0.7rem;
}
.nc-h3 {
  font-family: var(--nc-serif);
  font-weight: 700;
  font-size: clamp(1.2rem, 1rem + 0.8vw, 1.55rem);
  line-height: 1.25;
  color: var(--nc-ink);
  margin: 0 0 0.55rem;
}
.nc-lead {
  font-size: clamp(1rem, 0.95rem + 0.25vw, 1.14rem);
  line-height: 1.75;
  color: var(--nc-muted);
  margin: 0;
}
.nc-section--ink .nc-h2,
.nc-section--ink .nc-h3 { color: #fff; }
.nc-section--ink .nc-lead { color: rgba(255, 255, 255, 0.75); }

/* ---------- Buttons ----------------------------------------------------- */

.nc-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  padding: 0.95em 1.7em;
  border-radius: 999px;
  font-family: var(--nc-sans);
  font-size: 0.86rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  line-height: 1;
  border: 1px solid transparent;
  cursor: pointer;
  transition: transform 0.25s ease, box-shadow 0.25s ease, background-color 0.25s ease,
    color 0.25s ease, border-color 0.25s ease;
}
.nc-btn i { font-size: 1.15em; color: currentColor; transition: transform 0.25s ease; }
.nc-btn:hover { transform: translateY(-2px); }
.nc-btn:hover i { transform: translate(2px, -2px); }

.nc-btn--gold {
  background: linear-gradient(135deg, var(--nc-gold) 0%, var(--nc-gold-dk) 100%);
  color: #fff;
  box-shadow: 0 10px 26px -12px rgba(168, 132, 58, 0.85);
}
.nc-btn--gold:hover { color: #fff; box-shadow: 0 16px 34px -12px rgba(168, 132, 58, 0.95); }

.nc-btn--wa { background: #25d366; color: #fff; box-shadow: 0 10px 26px -12px rgba(37, 211, 102, 0.9); }
.nc-btn--wa:hover { color: #fff; }
.nc-btn--wa i { color: #fff !important; }

.nc-btn--ghost { background: rgba(255, 255, 255, 0.08); color: #fff; border-color: rgba(255, 255, 255, 0.5); }
.nc-btn--ghost:hover { background: #fff; color: var(--nc-ink); border-color: #fff; }
.nc-btn--ghost i { color: currentColor !important; }

.nc-btn--outline { background: transparent; color: var(--nc-ink); border-color: var(--nc-line-2); }
.nc-btn--outline:hover { border-color: var(--nc-gold); color: var(--nc-gold-dk); }

.nc-btn-row { display: flex; flex-wrap: wrap; gap: 0.75rem; }

/* ---------- Hero -------------------------------------------------------- */

.nc-hero {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: flex-end;
  min-height: clamp(430px, 62vh, 640px);
  padding-top: calc(var(--nc-header-h) + 40px);
  padding-bottom: clamp(2.25rem, 5vw, 4rem);
  overflow: hidden;
  background: var(--nc-ink);
}
.nc-hero__media { position: absolute; inset: 0; z-index: -2; }
.nc-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  transform: scale(1.02);
}
.nc-hero__scrim {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(180deg, rgba(11, 20, 32, 0.78) 0%, rgba(11, 20, 32, 0.28) 32%, rgba(11, 20, 32, 0.5) 68%, rgba(11, 20, 32, 0.88) 100%),
    linear-gradient(90deg, rgba(11, 20, 32, 0.66) 0%, rgba(11, 20, 32, 0.18) 62%, rgba(11, 20, 32, 0.05) 100%);
}
.nc-hero__inner { position: relative; width: 100%; }
.nc-hero__content { max-width: 860px; }

.nc-hero h1 {
  font-family: var(--nc-serif);
  font-weight: 700;
  font-size: clamp(1.95rem, 1.1rem + 3.4vw, 3.6rem);
  line-height: 1.1;
  letter-spacing: -0.015em;
  color: #fff;
  margin: 0 0 0.85rem;
  text-shadow: 0 2px 24px rgba(0, 0, 0, 0.4);
}
.nc-hero__sub {
  font-size: clamp(0.97rem, 0.92rem + 0.3vw, 1.16rem);
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.9);
  max-width: 62ch;
  margin: 0 0 1.5rem;
  text-shadow: 0 1px 14px rgba(0, 0, 0, 0.45);
}
.nc-hero .nc-eyebrow { color: var(--nc-gold-lt); }
.nc-hero .nc-eyebrow::before { background: var(--nc-gold-lt); }

/* breadcrumb */
.nc-crumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.55rem;
  list-style: none;
  margin: 0 0 1.15rem;
  padding: 0;
  font-size: 0.78rem;
  color: rgba(255, 255, 255, 0.66);
}
.nc-crumbs li { display: inline-flex; align-items: center; gap: 0.55rem; }
.nc-crumbs li + li::before { content: "/"; color: rgba(255, 255, 255, 0.35); }
.nc-crumbs a { color: rgba(255, 255, 255, 0.82); text-decoration: none; transition: color 0.2s ease; }
.nc-crumbs a:hover { color: var(--nc-gold-lt); }
.nc-crumbs [aria-current] { color: #fff; }

/* hero meta chips */
.nc-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 1.35rem; padding: 0; list-style: none; }
.nc-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
  padding: 0.5em 0.95em;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: #fff;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.24);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.nc-chip i { color: var(--nc-gold-lt) !important; font-size: 1.05em; }

/* ---------- Fact strip -------------------------------------------------- */

.nc-facts {
  position: relative;
  z-index: 3;
  margin-top: clamp(-3.5rem, -4vw, -2rem);   /* min/max ordered so the overlap grows with the viewport */
  background: #fff;
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r-lg);
  box-shadow: var(--nc-shadow);
  padding: clamp(1.25rem, 3vw, 2rem);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
}
@media (min-width: 900px) { .nc-facts { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.nc-fact { padding: 0.65rem 0.9rem; position: relative; text-align: center; }
.nc-fact + .nc-fact::before {
  content: "";
  position: absolute;
  left: 0;
  top: 12%;
  bottom: 12%;
  width: 1px;
  background: var(--nc-line);
}
@media (max-width: 899px) { .nc-fact:nth-child(odd)::before { display: none; } }
.nc-fact__v {
  font-family: var(--nc-serif);
  font-weight: 700;
  font-size: clamp(1.3rem, 1rem + 1.2vw, 1.9rem);
  line-height: 1.1;
  color: var(--nc-ink);
  display: block;
}
.nc-fact__v small { font-size: 0.62em; font-weight: 600; color: var(--nc-gold-dk); }
.nc-fact__l {
  display: block;
  margin-top: 0.35rem;
  font-size: 0.74rem;
  font-weight: 500;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--nc-faint);
}

/* ---------- Two-column layout with sticky rail -------------------------- */

/* Single column by default — the article gets the full container width, which
   is what the forty data tables on these pages actually need. The two-column
   variant is opt-in via nc_article(['rail' => true]). */
.nc-layout { display: grid; gap: clamp(2rem, 4vw, 3.5rem); align-items: start; }
/* Grid items default to min-width:auto, so a wide table's own min-width (below)
   would otherwise push the whole column — and the page — wider than the
   viewport instead of scrolling inside .nc-tw__scroll. This lets it shrink. */
.nc-layout > * { min-width: 0; }
@media (min-width: 1024px) { .nc-layout--rail { grid-template-columns: minmax(0, 1fr) 320px; } }

.nc-rail { display: none; }
@media (min-width: 1024px) {
  /* A flex column rather than a plain block: the rail is capped at the
     viewport, so something has to give when a page carries a thirteen-entry
     contents list. The enquiry card must never be the thing that gives — it
     keeps its natural height and the contents list scrolls inside itself. */
  .nc-rail {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    position: sticky;
    top: calc(var(--nc-header-h) + 18px);
    max-height: calc(100vh - var(--nc-header-h) - 36px);
  }
  .nc-rail > .nc-toc {
    flex: 0 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }
  .nc-rail > .nc-toc .nc-toc__t { flex: none; }
  .nc-rail > .nc-toc ol {
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    scrollbar-color: rgba(201, 162, 75, 0.55) transparent;
    /* room for the scrollbar without shifting the text */
    padding-right: 0.5rem;
    margin-right: -0.5rem;
  }
  .nc-rail > .nc-toc ol::-webkit-scrollbar { width: 5px; }
  .nc-rail > .nc-toc ol::-webkit-scrollbar-track { background: transparent; }
  .nc-rail > .nc-toc ol::-webkit-scrollbar-thumb {
    background: rgba(201, 162, 75, 0.45);
    border-radius: 99px;
  }
  .nc-rail > .nc-toc ol:hover::-webkit-scrollbar-thumb { background: rgba(201, 162, 75, 0.75); }

  .nc-rail > .nc-book { flex: 0 0 auto; }
}

/* On a short desktop window there is not enough height for a sticky rail to
   hold both blocks, so drop the sticky behaviour entirely and let the rail
   flow with the page. Nothing is capped, so nothing can be cut off. */
@media (min-width: 1024px) and (max-height: 640px) {
  .nc-rail {
    position: static;
    max-height: none;
  }
  .nc-rail > .nc-toc ol { overflow-y: visible; }
}

/* ---------- Table of contents ------------------------------------------ */

.nc-toc {
  background: var(--nc-sand);
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r);
  padding: 1.15rem 1.25rem;
}
.nc-toc__t {
  font-family: var(--nc-sans);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--nc-gold-dk);
  margin: 0 0 0.85rem;
}
.nc-toc ol { list-style: none; margin: 0; padding: 0; counter-reset: nctoc; }
.nc-toc li { counter-increment: nctoc; }
.nc-toc a {
  display: flex;
  gap: 0.6rem;
  padding: 0.44rem 0;
  font-size: 0.86rem;
  line-height: 1.45;
  color: var(--nc-muted);
  text-decoration: none;
  border-left: 2px solid transparent;
  padding-left: 0.7rem;
  margin-left: -0.7rem;
  transition: color 0.2s ease, border-color 0.2s ease;
}
.nc-toc a::before {
  content: counter(nctoc, decimal-leading-zero);
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--nc-gold);
  flex: none;
  padding-top: 0.15em;
}
.nc-toc a:hover { color: var(--nc-ink); }
.nc-toc a.is-active { color: var(--nc-ink); font-weight: 600; border-left-color: var(--nc-gold); }

/* Contents = a <details> disclosure above the article, at every width now
   that there is no sidebar to hold it. */
.nc-toc-m { margin-bottom: clamp(1.75rem, 3vw, 2.5rem); }
.nc-layout--rail .nc-toc-m { margin-bottom: 1.75rem; }
@media (min-width: 1024px) { .nc-layout--rail .nc-toc-m { display: none; } }
.nc-toc-m > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.95rem 1.15rem;
  background: var(--nc-sand);
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--nc-ink);
}
.nc-toc-m > summary::-webkit-details-marker { display: none; }
.nc-toc-m > summary::after { content: "\2039"; transform: rotate(-90deg); font-size: 1.35rem; line-height: 0.6; color: var(--nc-gold-dk); transition: transform 0.25s ease; }
.nc-toc-m[open] > summary::after { transform: rotate(90deg); }
.nc-toc-m[open] > summary { border-radius: var(--nc-r) var(--nc-r) 0 0; border-bottom-color: transparent; }
.nc-toc-m .nc-toc { border-radius: 0 0 var(--nc-r) var(--nc-r); border-top: 0; }
.nc-toc-m .nc-toc__t { display: none; }
/* Across the full width a thirteen-entry list would be a tall thin ladder,
   so it runs in columns instead and stays a compact band. */
@media (min-width: 720px) { .nc-toc-m .nc-toc ol { columns: 2; column-gap: 2.75rem; } }
@media (min-width: 1040px) { .nc-toc-m .nc-toc ol { columns: 3; column-gap: 2.75rem; } }
.nc-toc-m .nc-toc li { break-inside: avoid; }

/* ---------- Booking / enquiry card ------------------------------------- */

.nc-book {
  position: relative;
  overflow: hidden;
  background: linear-gradient(165deg, var(--nc-ink) 0%, var(--nc-ink-3) 100%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: var(--nc-r);
  padding: 1.25rem 1.3rem 1.3rem;
  color: #fff;
  box-shadow: var(--nc-shadow);
}
.nc-book::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 2px;
  background: linear-gradient(90deg, var(--nc-gold) 0%, rgba(201, 162, 75, 0) 72%);
}
.nc-book__t {
  font-family: var(--nc-serif);
  font-size: 1.15rem;
  font-weight: 700;
  line-height: 1.25;
  color: #fff;
  margin: 0 0 0.4rem;
}
.nc-book p {
  font-size: 0.845rem;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.7);
  margin: 0 0 1rem;
}
.nc-book dl {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0;
  margin: 0 0 1.1rem;
  font-size: 0.8rem;
  border-top: 1px solid rgba(255, 255, 255, 0.12);
}
.nc-book dt,
.nc-book dd {
  padding: 0.48rem 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  line-height: 1.45;
}
.nc-book dt { color: rgba(255, 255, 255, 0.55); }
.nc-book dd { margin: 0; color: #fff; font-weight: 600; text-align: right; }
.nc-book .nc-btn { width: 100%; font-size: 0.775rem; padding: 0.88em 1.1em; }
.nc-book .nc-btn + .nc-btn { margin-top: 0.5rem; }
.nc-book .nc-btn--ghost { background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.28); }
.nc-book .nc-btn--ghost:hover { background: #fff; border-color: #fff; color: var(--nc-ink); }

/* ==========================================================================
   Prose — styles the raw editor HTML of each page
   ========================================================================== */

.nc-prose { font-size: clamp(1rem, 0.97rem + 0.16vw, 1.06rem); line-height: 1.78; color: var(--nc-body); max-width: 74ch; }
.nc-layout .nc-prose { max-width: none; }
/* Running text across the full container needs a slightly larger size and a
   little more leading to stay comfortable. */
@media (min-width: 1100px) {
  .nc-layout:not(.nc-layout--rail) .nc-prose { font-size: 1.1rem; line-height: 1.82; }
}

.nc-prose > * + * { margin-top: 1.1em; }

.nc-prose h2 {
  font-family: var(--nc-serif);
  font-weight: 700;
  font-size: clamp(1.5rem, 1.15rem + 1.5vw, 2.15rem);
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--nc-ink);
  margin-top: 2.6em;
  margin-bottom: 0.6em;
  padding-top: 1.1rem;
  border-top: 1px solid var(--nc-line);
  scroll-margin-top: calc(var(--nc-header-h) + 20px);
  position: relative;
}
.nc-prose h2::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 56px;
  height: 2px;
  background: var(--nc-gold);
}
.nc-prose > h2:first-child { margin-top: 0; border-top: 0; padding-top: 0; }
.nc-prose > h2:first-child::before { display: none; }

.nc-prose h3 {
  font-family: var(--nc-serif);
  font-weight: 700;
  font-size: clamp(1.13rem, 1.02rem + 0.5vw, 1.4rem);
  line-height: 1.35;
  color: var(--nc-ink-2);
  margin-top: 1.9em;
  margin-bottom: 0.45em;
  scroll-margin-top: calc(var(--nc-header-h) + 20px);
}
.nc-prose h4 {
  font-family: var(--nc-sans);
  font-weight: 700;
  font-size: 1.02rem;
  color: var(--nc-ink-2);
  margin-top: 1.6em;
  margin-bottom: 0.4em;
}

.nc-prose p { color: var(--nc-body); margin: 0; }
.nc-prose strong { color: var(--nc-ink); font-weight: 650; }
.nc-prose em { font-style: italic; }

.nc-prose a {
  color: var(--nc-gold-dk);
  font-weight: 500;
  text-decoration: none;
  background-image: linear-gradient(var(--nc-gold-line), var(--nc-gold-line));
  background-size: 100% 1px;
  background-repeat: no-repeat;
  background-position: 0 100%;
  transition: background-size 0.25s ease, color 0.2s ease;
  padding-bottom: 1px;
}
.nc-prose a:hover { color: var(--nc-ink); background-image: linear-gradient(var(--nc-gold), var(--nc-gold)); }

.nc-prose ul, .nc-prose ol { margin: 1.1em 0; padding-left: 0; list-style: none; }
.nc-prose ol { counter-reset: ncol; }
.nc-prose li { position: relative; padding-left: 1.75rem; margin-top: 0.55em; color: var(--nc-body); }
.nc-prose ul > li::before {
  content: "";
  position: absolute;
  left: 0.25rem;
  top: 0.72em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--nc-gold);
}
.nc-prose ol > li { counter-increment: ncol; }
.nc-prose ol > li::before {
  content: counter(ncol) ".";
  position: absolute;
  left: 0;
  top: 0;
  font-weight: 700;
  font-size: 0.9em;
  color: var(--nc-gold-dk);
}
.nc-prose li > ul, .nc-prose li > ol { margin: 0.4em 0 0; }

.nc-prose blockquote {
  margin: 1.6em 0;
  padding: 0.2rem 0 0.2rem 1.4rem;
  border-left: 3px solid var(--nc-gold);
  font-family: var(--nc-serif);
  font-size: 1.15em;
  font-style: italic;
  line-height: 1.6;
  color: var(--nc-ink-2);
}

.nc-prose hr { border: 0; height: 1px; background: var(--nc-line); margin: 2.4em 0; }

.nc-prose img { border-radius: var(--nc-r); max-width: 100%; height: auto; }
.nc-prose figure { margin: 1.8em 0; }
.nc-prose figcaption { margin-top: 0.7rem; font-size: 0.83rem; color: var(--nc-faint); line-height: 1.55; }

/* ---------- Tables ------------------------------------------------------ */

.nc-tw {
  margin: 1.9em 0;
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r);
  background: #fff;
  box-shadow: var(--nc-shadow-sm);
  position: relative;
}
.nc-tw__scroll { overflow-x: auto; border-radius: var(--nc-r); -webkit-overflow-scrolling: touch; }
.nc-tw::after {
  content: "";
  position: absolute;
  top: 1px;
  right: 1px;
  bottom: 1px;
  width: 42px;
  border-radius: 0 var(--nc-r) var(--nc-r) 0;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #fff 78%);
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.25s ease;
}
.nc-tw.is-scrollable::after { opacity: 1; }
.nc-tw.is-end::after { opacity: 0; }

.nc-prose table, .nc-tw table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9rem;
  line-height: 1.55;
  margin: 0;
  min-width: 520px;
}
.nc-prose thead th, .nc-tw thead th {
  background: var(--nc-ink);
  color: #fff;
  font-family: var(--nc-sans);
  font-weight: 600;
  font-size: 0.74rem;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  text-align: left;
  padding: 0.95rem 1.05rem;
  white-space: nowrap;
  border: 0;
  vertical-align: middle;
}
.nc-prose thead th:first-child, .nc-tw thead th:first-child { border-radius: 0; }
.nc-prose tbody th, .nc-tw tbody th {
  text-align: left;
  font-weight: 650;
  color: var(--nc-ink);
  background: var(--nc-gold-wash);
  padding: 0.85rem 1.05rem;
  border-bottom: 1px solid var(--nc-line);
  vertical-align: top;
}
.nc-prose td, .nc-tw td {
  padding: 0.85rem 1.05rem;
  border-bottom: 1px solid var(--nc-line);
  color: var(--nc-body);
  vertical-align: top;
  white-space: nowrap;
}
.nc-prose tbody th, .nc-tw tbody th { white-space: nowrap; }
.nc-prose tbody tr:last-child td, .nc-tw tbody tr:last-child td,
.nc-prose tbody tr:last-child th, .nc-tw tbody tr:last-child th { border-bottom: 0; }
.nc-prose tbody tr:nth-child(even) td, .nc-tw tbody tr:nth-child(even) td { background: rgba(11, 20, 32, 0.022); }
.nc-prose tbody tr:hover td, .nc-tw tbody tr:hover td { background: var(--nc-gold-wash); }
.nc-prose td:first-child, .nc-tw td:first-child { font-weight: 600; color: var(--nc-ink); }
.nc-prose table strong, .nc-tw table strong { color: var(--nc-ink); }

/* table with no thead: treat first row as head */
.nc-tw--headless tbody tr:first-child td {
  background: var(--nc-ink);
  color: #fff;
  font-weight: 600;
  font-size: 0.74rem;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}
.nc-tw--headless tbody tr:first-child:hover td { background: var(--nc-ink); }

/* ---------- Callouts ---------------------------------------------------- */

/* .x-aeo = the "answer engine" summary paragraph at the top of each page */
.nc-prose .x-aeo,
.nc-aeo {
  position: relative;
  margin: 0 0 2.2em;
  padding: 1.35rem 1.5rem 1.35rem 1.75rem;
  background: linear-gradient(135deg, var(--nc-gold-wash) 0%, rgba(201, 162, 75, 0.03) 100%);
  border: 1px solid var(--nc-gold-line);
  border-radius: var(--nc-r);
}
.nc-prose .x-aeo::before,
.nc-aeo::before {
  content: "";
  position: absolute;
  left: 0;
  top: 12px;
  bottom: 12px;
  width: 3px;
  border-radius: 3px;
  background: var(--nc-gold);
}
.nc-prose .x-aeo p, .nc-aeo p {
  margin: 0;
  font-size: 1.04em;
  line-height: 1.72;
  color: var(--nc-ink-2);
  font-weight: 450;
}
.nc-prose .x-aeo p + p, .nc-aeo p + p { margin-top: 0.7em; }

/* .x-note = small caption under a table */
.nc-prose .x-note {
  display: block;
  margin-top: -1.2em;
  padding: 0.85rem 1.05rem;
  background: var(--nc-sand);
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r-sm);
  font-size: 0.855rem;
  line-height: 1.6;
  color: var(--nc-muted);
}
.nc-prose .x-note::before {
  content: "\eac5";
  font-family: "tabler-icons" !important;
  margin-right: 0.55em;
  color: var(--nc-gold-dk);
  font-size: 1.05em;
  vertical-align: -0.1em;
}

/* ---------- FAQ disclosure --------------------------------------------- */

.nc-prose details,
.nc-faq details {
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r-sm);
  background: #fff;
  padding: 0 1.15rem;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
  break-inside: avoid;
}
.nc-prose details + details, .nc-faq details + details { margin-top: 0.7rem; }
.nc-prose details[open], .nc-faq details[open] {
  border-color: var(--nc-gold-line);
  background: var(--nc-gold-wash);
  box-shadow: var(--nc-shadow-sm);
}
.nc-prose summary, .nc-faq summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.1rem;
  padding: 1.05rem 0;
  font-family: var(--nc-sans);
  font-size: 0.97rem;
  font-weight: 600;
  line-height: 1.5;
  color: var(--nc-ink);
}
.nc-prose summary::-webkit-details-marker, .nc-faq summary::-webkit-details-marker { display: none; }
.nc-prose summary::after, .nc-faq summary::after {
  content: "+";
  flex: none;
  width: 24px;
  height: 24px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 1px solid var(--nc-gold-line);
  color: var(--nc-gold-dk);
  font-size: 1.05rem;
  font-weight: 400;
  line-height: 1;
  transition: transform 0.25s ease, background-color 0.25s ease, color 0.25s ease;
}
.nc-prose details[open] summary::after, .nc-faq details[open] summary::after {
  content: "\2212";
  background: var(--nc-gold);
  border-color: var(--nc-gold);
  color: #fff;
  transform: rotate(180deg);
}
.nc-prose summary:hover, .nc-faq summary:hover { color: var(--nc-gold-dk); }
.nc-prose details > *:not(summary), .nc-faq details > *:not(summary) {
  padding-bottom: 1.1rem;
  font-size: 0.94rem;
  line-height: 1.72;
  color: var(--nc-muted);
  margin-top: 0;
}
.nc-prose .klf-a, .nc-faq .klf-a { padding-bottom: 1.1rem; }
.nc-prose .klf-a p:first-child { margin-top: 0; }

/* ==========================================================================
   Editorial components used inside the templates
   ========================================================================== */

/* ---------- Figure / inline image -------------------------------------- */

.nc-fig { margin: clamp(1.9rem, 4vw, 2.6rem) 0; }
.nc-fig__media {
  position: relative;
  overflow: hidden;
  border-radius: var(--nc-r-lg);
  background: var(--nc-sand);
  box-shadow: var(--nc-shadow);
}
.nc-fig__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.7s cubic-bezier(0.2, 0.7, 0.3, 1); }
.nc-fig__media:hover img { transform: scale(1.035); }
.nc-fig--wide .nc-fig__media { aspect-ratio: 16 / 9; }
.nc-fig--tall .nc-fig__media { aspect-ratio: 4 / 5; }
.nc-fig--square .nc-fig__media { aspect-ratio: 1 / 1; }
.nc-fig figcaption {
  display: flex;
  gap: 0.6rem;
  margin-top: 0.85rem;
  font-size: 0.83rem;
  line-height: 1.6;
  color: var(--nc-faint);
}
.nc-fig figcaption::before {
  content: "";
  flex: none;
  width: 22px;
  height: 1px;
  background: var(--nc-gold);
  margin-top: 0.72em;
}

/* ---------- Split (image + text) --------------------------------------- */

.nc-split { display: grid; gap: clamp(1.75rem, 4vw, 3.5rem); align-items: center; }
@media (min-width: 900px) { .nc-split { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 900px) { .nc-split--flip .nc-split__media { order: 2; } }
.nc-split__media {
  position: relative;
  overflow: hidden;
  border-radius: var(--nc-r-lg);
  aspect-ratio: 4 / 3;
  box-shadow: var(--nc-shadow);
}
.nc-split--portrait .nc-split__media { aspect-ratio: 4 / 5; }
.nc-split__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.8s cubic-bezier(0.2, 0.7, 0.3, 1); }
.nc-split__media:hover img { transform: scale(1.04); }
.nc-split__media--stack { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; aspect-ratio: auto; background: none; box-shadow: none; border-radius: 0; overflow: visible; }
.nc-split__media--stack > span { display: block; overflow: hidden; border-radius: var(--nc-r); box-shadow: var(--nc-shadow); aspect-ratio: 3 / 4; }
.nc-split__media--stack > span:first-child { margin-top: 2rem; }
.nc-split__media--stack img { width: 100%; height: 100%; object-fit: cover; }
.nc-split__body > * + * { margin-top: 1.05rem; }
.nc-split__body p { font-size: clamp(0.98rem, 0.95rem + 0.15vw, 1.05rem); line-height: 1.78; color: var(--nc-muted); margin: 0; }

/* badge over image */
.nc-badge {
  position: absolute;
  left: 18px;
  bottom: 18px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
  padding: 0.6em 1.05em;
  border-radius: 999px;
  background: rgba(11, 20, 32, 0.72);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: #fff;
  font-size: 0.76rem;
  font-weight: 600;
  letter-spacing: 0.05em;
}
.nc-badge i { color: var(--nc-gold-lt) !important; }

/* ---------- Feature / value list --------------------------------------- */

.nc-feats { display: grid; gap: 1rem; list-style: none; margin: 0; padding: 0; }
@media (min-width: 640px) { .nc-feats--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 900px) { .nc-feats--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 640px) { .nc-feats--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .nc-feats--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.nc-feat {
  background: #fff;
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r);
  padding: 1.4rem 1.4rem 1.5rem;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
.nc-feat:hover { transform: translateY(-4px); box-shadow: var(--nc-shadow); border-color: var(--nc-gold-line); }
.nc-feat__i {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  background: var(--nc-gold-wash);
  border: 1px solid var(--nc-gold-line);
  margin-bottom: 0.95rem;
}
.nc-feat__i i { font-size: 1.35rem; color: var(--nc-gold-dk) !important; }
.nc-feat h3 {
  font-family: var(--nc-serif);
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--nc-ink);
  margin: 0 0 0.4rem;
  line-height: 1.3;
}
.nc-feat p { font-size: 0.9rem; line-height: 1.7; color: var(--nc-muted); margin: 0; }
.nc-section--sand .nc-feat { background: #fff; }
.nc-section--ink .nc-feat { background: rgba(255, 255, 255, 0.04); border-color: rgba(255, 255, 255, 0.12); }
.nc-section--ink .nc-feat h3 { color: #fff; }
.nc-section--ink .nc-feat p { color: rgba(255, 255, 255, 0.68); }
.nc-section--ink .nc-feat__i { background: rgba(201, 162, 75, 0.16); border-color: rgba(201, 162, 75, 0.4); }
.nc-section--ink .nc-feat__i i { color: var(--nc-gold-lt) !important; }

/* ---------- Photo cards (destinations, packages, related) --------------- */

.nc-cards { display: grid; gap: clamp(1rem, 2vw, 1.6rem); list-style: none; margin: 0; padding: 0; }
@media (min-width: 620px) { .nc-cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 620px) { .nc-cards--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 960px) { .nc-cards--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 620px) { .nc-cards--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .nc-cards--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.nc-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r-lg);
  overflow: hidden;
  transition: transform 0.35s cubic-bezier(0.2, 0.7, 0.3, 1), box-shadow 0.35s ease, border-color 0.35s ease;
  height: 100%;
}
.nc-card:hover { transform: translateY(-6px); box-shadow: var(--nc-shadow-lg); border-color: var(--nc-gold-line); }
.nc-card__media { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: var(--nc-sand); }
.nc-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.7s cubic-bezier(0.2, 0.7, 0.3, 1); }
.nc-card:hover .nc-card__media img { transform: scale(1.07); }
.nc-card__tag {
  position: absolute;
  top: 12px;
  left: 12px;
  padding: 0.42em 0.85em;
  border-radius: 999px;
  background: rgba(11, 20, 32, 0.72);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: #fff;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}
.nc-card__body { padding: 1.15rem 1.25rem 1.35rem; display: flex; flex-direction: column; flex: 1; }
.nc-card__t {
  font-family: var(--nc-serif);
  font-size: 1.12rem;
  font-weight: 700;
  line-height: 1.32;
  color: var(--nc-ink);
  margin: 0 0 0.45rem;
}
.nc-card__t a { color: inherit; text-decoration: none; }
.nc-card__t a::after { content: ""; position: absolute; inset: 0; }
.nc-card p { font-size: 0.885rem; line-height: 1.68; color: var(--nc-muted); margin: 0 0 0.95rem; }
.nc-card__more {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--nc-gold-dk);
}
.nc-card__more i { color: currentColor; transition: transform 0.25s ease; }
.nc-card:hover .nc-card__more i { transform: translateX(3px); }

/* overlay variant — image with text on top */
.nc-card--overlay { border: 0; }
.nc-card--overlay .nc-card__media { aspect-ratio: 4 / 5; }
.nc-card--overlay .nc-card__body {
  position: absolute;
  inset: auto 0 0 0;
  padding: 1.5rem 1.35rem 1.35rem;
  background: linear-gradient(180deg, rgba(11, 20, 32, 0) 0%, rgba(11, 20, 32, 0.55) 42%, rgba(11, 20, 32, 0.92) 100%);
}
.nc-card--overlay .nc-card__t { color: #fff; }
.nc-card--overlay p { color: rgba(255, 255, 255, 0.82); margin-bottom: 0; }
.nc-card--overlay .nc-card__more { color: var(--nc-gold-lt); }

/* ---------- Gallery ----------------------------------------------------- */

.nc-gal { display: grid; gap: 12px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 900px) { .nc-gal { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.nc-gal figure { margin: 0; position: relative; overflow: hidden; border-radius: var(--nc-r); aspect-ratio: 1 / 1; background: var(--nc-sand); }
.nc-gal img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.7s cubic-bezier(0.2, 0.7, 0.3, 1); }
.nc-gal figure:hover img { transform: scale(1.07); }
.nc-gal figcaption {
  position: absolute;
  inset: auto 0 0 0;
  padding: 1.9rem 0.9rem 0.8rem;
  background: linear-gradient(180deg, rgba(11, 20, 32, 0) 0%, rgba(11, 20, 32, 0.82) 100%);
  color: #fff;
  font-size: 0.78rem;
  font-weight: 500;
  line-height: 1.4;
}
@media (min-width: 900px) {
  .nc-gal--feature figure:first-child { grid-column: span 2; grid-row: span 2; aspect-ratio: 1 / 1; }
}

/* ---------- Itinerary timeline ------------------------------------------ */

.nc-tl { position: relative; margin: 0; padding: 0; list-style: none; }
.nc-tl::before {
  content: "";
  position: absolute;
  left: 21px;
  top: 12px;
  bottom: 12px;
  width: 2px;
  background: linear-gradient(180deg, var(--nc-gold) 0%, var(--nc-gold-line) 100%);
}
@media (min-width: 768px) { .nc-tl::before { left: 27px; } }
.nc-tl > li { position: relative; padding-left: 60px; padding-bottom: 1.6rem; }
@media (min-width: 768px) { .nc-tl > li { padding-left: 76px; } }
.nc-tl > li:last-child { padding-bottom: 0; }
.nc-tl__n {
  position: absolute;
  left: 0;
  top: 0;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #fff;
  border: 2px solid var(--nc-gold);
  color: var(--nc-gold-dk);
  font-family: var(--nc-serif);
  font-weight: 700;
  font-size: 0.95rem;
  box-shadow: 0 0 0 6px #fff;
}
@media (min-width: 768px) { .nc-tl__n { width: 56px; height: 56px; font-size: 1.1rem; } }
.nc-section--sand .nc-tl__n { box-shadow: 0 0 0 6px var(--nc-sand); }
.nc-tl__card {
  background: #fff;
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r);
  padding: 1.2rem 1.3rem 1.3rem;
  box-shadow: var(--nc-shadow-sm);
}
.nc-tl__k {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--nc-gold-dk);
  margin-bottom: 0.45rem;
}
.nc-tl__k i { color: currentColor; }
.nc-tl__t { font-family: var(--nc-serif); font-size: 1.14rem; font-weight: 700; color: var(--nc-ink); margin: 0 0 0.5rem; line-height: 1.3; }
.nc-tl__card p { font-size: 0.91rem; line-height: 1.72; color: var(--nc-muted); margin: 0; }
.nc-tl__stops { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.9rem; padding: 0; list-style: none; }
.nc-tl__stops li {
  padding: 0.36em 0.8em;
  border-radius: 999px;
  background: var(--nc-gold-wash);
  border: 1px solid var(--nc-gold-line);
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--nc-ink-2);
}

/* ---------- Rate cards --------------------------------------------------- */

.nc-rates { display: grid; gap: 1.1rem; }
@media (min-width: 700px) { .nc-rates { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.nc-rate {
  background: #fff;
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r-lg);
  padding: 1.6rem 1.5rem;
  text-align: center;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
.nc-rate:hover { transform: translateY(-5px); box-shadow: var(--nc-shadow); border-color: var(--nc-gold-line); }
.nc-rate--feature { border-color: var(--nc-gold); box-shadow: var(--nc-shadow); position: relative; }
.nc-rate--feature::before {
  content: "Most booked";
  position: absolute;
  top: -11px;
  left: 50%;
  transform: translateX(-50%);
  padding: 0.32em 0.9em;
  border-radius: 999px;
  background: var(--nc-gold);
  color: #fff;
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  white-space: nowrap;
}
.nc-rate__k { font-size: 0.72rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--nc-gold-dk); margin: 0 0 0.6rem; }
.nc-rate__v { font-family: var(--nc-serif); font-size: clamp(1.7rem, 1.3rem + 1.5vw, 2.3rem); font-weight: 700; color: var(--nc-ink); line-height: 1.05; margin: 0; }
.nc-rate__v sup { font-size: 0.46em; font-weight: 600; vertical-align: super; color: var(--nc-muted); margin-right: 0.12em; }
.nc-rate__u { display: block; margin-top: 0.4rem; font-size: 0.78rem; color: var(--nc-faint); }
.nc-rate ul { list-style: none; margin: 1.15rem 0 0; padding: 1.15rem 0 0; border-top: 1px solid var(--nc-line); text-align: left; }
.nc-rate li { position: relative; padding-left: 1.5rem; font-size: 0.875rem; line-height: 1.6; color: var(--nc-muted); }
.nc-rate li + li { margin-top: 0.5rem; }
.nc-rate li::before {
  content: "\ea5e";
  font-family: "tabler-icons" !important;
  position: absolute;
  left: 0;
  top: 0.02em;
  color: var(--nc-gold);
  font-size: 1rem;
}

/* ---------- Included / not included ------------------------------------- */

.nc-incl { display: grid; gap: 1.1rem; }
@media (min-width: 800px) { .nc-incl { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.nc-incl__col { background: #fff; border: 1px solid var(--nc-line); border-radius: var(--nc-r); padding: 1.4rem 1.45rem 1.5rem; }
.nc-incl__t { display: flex; align-items: center; gap: 0.55rem; font-family: var(--nc-serif); font-size: 1.15rem; font-weight: 700; color: var(--nc-ink); margin: 0 0 1rem; }
.nc-incl__t i { font-size: 1.3rem; }
.nc-incl__col ul { list-style: none; margin: 0; padding: 0; }
.nc-incl__col li { position: relative; padding-left: 1.7rem; font-size: 0.9rem; line-height: 1.65; color: var(--nc-muted); }
.nc-incl__col li + li { margin-top: 0.6rem; }
.nc-incl__col li::before { font-family: "tabler-icons" !important; position: absolute; left: 0; top: 0; font-size: 1.05rem; }
.nc-incl--yes .nc-incl__t i, .nc-incl--yes li::before { color: #2e9e6b; }
.nc-incl--yes li::before { content: "\ea5e"; }
.nc-incl--no .nc-incl__t i, .nc-incl--no li::before { color: #c2564f; }
.nc-incl--no li::before { content: "\eb55"; }

/* ---------- Quote / pull ------------------------------------------------- */

.nc-quote {
  position: relative;
  padding: clamp(1.6rem, 3vw, 2.4rem) clamp(1.4rem, 3vw, 2.6rem);
  background: var(--nc-sand);
  border-radius: var(--nc-r-lg);
  border: 1px solid var(--nc-gold-line);
}
.nc-quote p {
  font-family: var(--nc-serif);
  font-size: clamp(1.1rem, 1rem + 0.7vw, 1.4rem);
  font-style: italic;
  line-height: 1.6;
  color: var(--nc-ink-2);
  margin: 0;
}
.nc-quote cite { display: block; margin-top: 1rem; font-family: var(--nc-sans); font-size: 0.8rem; font-style: normal; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--nc-gold-dk); }

/* ---------- Person card -------------------------------------------------- */

.nc-person { display: grid; gap: clamp(1.5rem, 4vw, 3rem); align-items: center; }
@media (min-width: 800px) { .nc-person { grid-template-columns: 300px minmax(0, 1fr); } }
.nc-person__media { position: relative; border-radius: var(--nc-r-lg); overflow: hidden; aspect-ratio: 4 / 5; box-shadow: var(--nc-shadow); }
.nc-person__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nc-person__n { font-family: var(--nc-serif); font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem); font-weight: 700; color: var(--nc-ink); margin: 0 0 0.3rem; }
.nc-person__r { font-size: 0.78rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--nc-gold-dk); margin: 0 0 1.1rem; }
.nc-person__meta { display: flex; flex-wrap: wrap; gap: 0.55rem; margin: 1.2rem 0 0; padding: 0; list-style: none; }
.nc-person__meta li {
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
  padding: 0.5em 0.95em;
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--nc-line);
  font-size: 0.8rem;
  color: var(--nc-body);
}
.nc-person__meta i { color: var(--nc-gold-dk) !important; }

/* ---------- CTA band ----------------------------------------------------- */

.nc-cta { position: relative; isolation: isolate; overflow: hidden; background: var(--nc-ink); }
.nc-cta__media { position: absolute; inset: 0; z-index: -2; }
.nc-cta__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nc-cta__scrim {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(105deg, rgba(11, 20, 32, 0.94) 0%, rgba(11, 20, 32, 0.82) 45%, rgba(11, 20, 32, 0.55) 100%);
}
.nc-cta__inner { padding-block: clamp(3rem, 7vw, 5.5rem); display: grid; gap: clamp(1.5rem, 3vw, 3rem); align-items: center; }
@media (min-width: 900px) { .nc-cta__inner { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); } }
.nc-cta h2 {
  font-family: var(--nc-serif);
  font-weight: 700;
  font-size: clamp(1.6rem, 1.15rem + 2vw, 2.5rem);
  line-height: 1.18;
  color: #fff;
  margin: 0 0 0.75rem;
}
.nc-cta p { font-size: clamp(0.95rem, 0.92rem + 0.2vw, 1.06rem); line-height: 1.75; color: rgba(255, 255, 255, 0.78); margin: 0; max-width: 58ch; }
.nc-cta .nc-btn-row { justify-content: flex-start; }
@media (min-width: 900px) { .nc-cta .nc-btn-row { justify-content: flex-end; } }

/* ---------- Contact tiles ------------------------------------------------ */

.nc-contact { display: grid; gap: 1rem; }
@media (min-width: 640px) { .nc-contact { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .nc-contact { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.nc-ctile {
  display: flex;
  gap: 1rem;
  padding: 1.35rem 1.4rem;
  background: #fff;
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r);
  text-decoration: none;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
.nc-ctile:hover { transform: translateY(-4px); box-shadow: var(--nc-shadow); border-color: var(--nc-gold-line); }
.nc-ctile__i { flex: none; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--nc-gold-wash); border: 1px solid var(--nc-gold-line); }
.nc-ctile__i i { font-size: 1.3rem; color: var(--nc-gold-dk) !important; }
.nc-ctile__k { display: block; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.13em; text-transform: uppercase; color: var(--nc-faint); margin-bottom: 0.3rem; }
.nc-ctile__v { display: block; font-size: 1rem; font-weight: 600; color: var(--nc-ink); line-height: 1.4; word-break: break-word; }
.nc-ctile__s { display: block; margin-top: 0.25rem; font-size: 0.82rem; color: var(--nc-muted); line-height: 1.5; }

/* ---------- Index / directory list -------------------------------------- */

.nc-dir { display: grid; gap: 1rem; }
@media (min-width: 700px) { .nc-dir { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.nc-dir__g { background: #fff; border: 1px solid var(--nc-line); border-radius: var(--nc-r); padding: 1.35rem 1.4rem 1.5rem; }
.nc-dir__t { display: flex; align-items: center; gap: 0.6rem; font-family: var(--nc-serif); font-size: 1.12rem; font-weight: 700; color: var(--nc-ink); margin: 0 0 0.95rem; padding-bottom: 0.8rem; border-bottom: 1px solid var(--nc-line); }
.nc-dir__t i { color: var(--nc-gold-dk) !important; font-size: 1.2rem; }
.nc-dir__g ul { list-style: none; margin: 0; padding: 0; }
.nc-dir__g li + li { margin-top: 0.15rem; }
.nc-dir__g a {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  padding: 0.5rem 0;
  font-size: 0.9rem;
  line-height: 1.55;
  color: var(--nc-body);
  text-decoration: none;
  transition: color 0.2s ease, padding-left 0.2s ease;
}
.nc-dir__g a::before { content: "\ea61"; font-family: "tabler-icons" !important; color: var(--nc-gold); flex: none; font-size: 1rem; padding-top: 0.08em; }
.nc-dir__g a:hover { color: var(--nc-gold-dk); padding-left: 0.25rem; }

/* ---------- Pill nav (FAQ categories) ------------------------------------ */

.nc-pills { display: flex; flex-wrap: wrap; gap: 0.55rem; margin: 0 0 clamp(1.75rem, 3vw, 2.5rem); padding: 0; list-style: none; }
.nc-pills a, .nc-prose .klf-nav a {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  padding: 0.6em 1.15em;
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--nc-line);
  font-size: 0.83rem;
  font-weight: 500;
  color: var(--nc-body);
  text-decoration: none;
  transition: all 0.25s ease;
}
.nc-pills a:hover, .nc-prose .klf-nav a:hover {
  background: var(--nc-gold);
  border-color: var(--nc-gold);
  color: #fff;
  transform: translateY(-2px);
  box-shadow: 0 8px 18px -8px rgba(168, 132, 58, 0.9);
}

/* ---------- klf (FAQ hub markup already in page content) ----------------- */

.nc-prose .klf { max-width: none; }
.nc-prose .klf-nav { display: flex; flex-wrap: wrap; gap: 0.55rem; margin: 0 0 2rem; }
.nc-prose h2.klf-cat,
.nc-prose .klf-cat {
  font-family: var(--nc-serif);
  font-size: clamp(1.3rem, 1.1rem + 0.8vw, 1.7rem);
  font-weight: 700;
  color: var(--nc-ink);
  border-left: 0;
  border-top: 1px solid var(--nc-line);
  padding: 1.1rem 0 0;
  margin: 2.8rem 0 1.2rem;
  scroll-margin-top: calc(var(--nc-header-h) + 20px);
  position: relative;
}
.nc-prose h2.klf-cat::before { content: ""; position: absolute; top: -1px; left: 0; width: 56px; height: 2px; background: var(--nc-gold); }
.nc-prose .klf-grid { display: grid; grid-template-columns: 1fr; gap: 0.7rem; align-items: start; }
@media (min-width: 900px) { .nc-prose .klf-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.7rem 1.1rem; } }
.nc-prose .klf-grid details { margin-top: 0 !important; }

/* ---------- Author / review meta ---------------------------------------- */

.nc-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 1.35rem;
  padding: 1rem 1.2rem;
  background: var(--nc-sand);
  border: 1px solid var(--nc-line);
  border-radius: var(--nc-r-sm);
  font-size: 0.82rem;
  color: var(--nc-muted);
  margin-bottom: 2rem;
}
.nc-meta span { display: inline-flex; align-items: center; gap: 0.45em; }
.nc-meta i { color: var(--nc-gold-dk) !important; font-size: 1.05em; }
.nc-meta strong { color: var(--nc-ink); font-weight: 600; }

/* ---------- Misc --------------------------------------------------------- */

.nc-hide { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.nc-center { text-align: center; }
.nc-mt { margin-top: clamp(1.75rem, 3vw, 2.6rem); }
.nc-mt-sm { margin-top: 1.1rem; }

.nc-page ::selection { background: var(--nc-gold); color: #fff; }
.nc-page :focus-visible { outline: 2px solid var(--nc-gold); outline-offset: 3px; border-radius: 4px; }

@media (prefers-reduced-motion: reduce) {
  .nc-page *, .nc-page *::before, .nc-page *::after {
    animation-duration: 0.001ms !important;
    transition-duration: 0.001ms !important;
  }
}

/* ---------- Monogram avatar (used where we have no real portrait) -------- */

.nc-person__mono {
  aspect-ratio: 4 / 5;
  border-radius: var(--nc-r-lg);
  display: grid;
  place-items: center;
  gap: 0.6rem;
  padding: 2rem 1.5rem;
  text-align: center;
  background: linear-gradient(165deg, var(--nc-ink) 0%, var(--nc-ink-3) 100%);
  box-shadow: var(--nc-shadow);
}
.nc-person__mono span {
  width: 96px;
  height: 96px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  border: 2px solid var(--nc-gold);
  color: var(--nc-gold-lt);
  font-family: var(--nc-serif);
  font-size: 2.1rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.nc-person__mono small {
  display: block;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.6);
}

/* ---------- Pagination --------------------------------------------------- */

.nc-pag { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem; }
.nc-pag .page-numbers {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  min-width: 42px;
  height: 42px;
  padding: 0 0.9rem;
  justify-content: center;
  border-radius: 999px;
  border: 1px solid var(--nc-line);
  background: #fff;
  font-size: 0.87rem;
  font-weight: 500;
  color: var(--nc-body);
  text-decoration: none;
  transition: all 0.25s ease;
}
.nc-pag .page-numbers:hover { border-color: var(--nc-gold); color: var(--nc-gold-dk); transform: translateY(-2px); }
.nc-pag .page-numbers.current {
  background: var(--nc-gold);
  border-color: var(--nc-gold);
  color: #fff;
  font-weight: 600;
}
.nc-pag .page-numbers.dots { border-color: transparent; background: none; }

/* ---------- Search form (404 page) --------------------------------------- */

.nc-search {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  max-width: 620px;
  margin-inline: auto;
}
.nc-search input[type="search"] {
  flex: 1 1 260px;
  min-width: 0;
  padding: 0.95em 1.2em;
  border-radius: 999px;
  border: 1px solid var(--nc-line-2);
  background: #fff;
  font-family: var(--nc-sans);
  font-size: 0.95rem;
  color: var(--nc-ink);
}
.nc-search input[type="search"]::placeholder { color: var(--nc-faint); }
.nc-search input[type="search"]:focus { outline: none; border-color: var(--nc-gold); box-shadow: 0 0 0 3px var(--nc-gold-wash); }

/* ==========================================================================
   Site footer
   Loaded on every page, including the homepage. Tiers: brand + navigation,
   the cruise-page index, partner logos, fine print. The index, the operator
   disclosure and the "last updated" lines are wording contributed by the
   mu-plugins (see inc/footer-extras.php) — their inline styles are stripped
   so the rules below own the layout.
   ========================================================================== */

.nc-foot {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: var(--nc-ink);
  color: rgba(255, 255, 255, 0.72);
  font-family: var(--nc-sans);
  font-size: 0.92rem;
  line-height: 1.7;
}
.nc-foot__bg { position: absolute; inset: 0; z-index: -2; }
.nc-foot__bg img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nc-foot__scrim {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(180deg, rgba(11, 20, 32, 0.87) 0%, rgba(11, 20, 32, 0.94) 52%, rgba(11, 20, 32, 0.975) 100%),
    linear-gradient(105deg, rgba(29, 51, 80, 0.5) 0%, rgba(11, 20, 32, 0) 68%);
}

.nc-foot__inner {
  position: relative;
  width: 100%;
  max-width: var(--nc-container);
  margin-inline: auto;
  padding: clamp(2.25rem, 4vw, 3.25rem) 20px clamp(1.25rem, 2.5vw, 1.75rem);
}
@media (min-width: 768px) { .nc-foot__inner { padding-inline: 32px; } }

/* --- colour reset: the theme's Tailwind base forces #000 on p/li/span/i --- */

.nc-foot p,
.nc-foot li,
.nc-foot span,
.nc-foot div,
.nc-foot strong { color: inherit; }
.nc-foot strong { color: #fff; font-weight: 600; }
.nc-foot i { color: var(--nc-gold-lt); }
.nc-foot h2, .nc-foot h3, .nc-foot h4 { color: #fff; }
.nc-foot a {
  color: rgba(255, 255, 255, 0.86);
  text-decoration: none;
  transition: color 0.22s ease;
}
.nc-foot a:hover { color: var(--nc-gold-lt); }
.nc-foot a.nc-btn { color: #fff; }
.nc-foot a.nc-btn:hover { color: #fff; }
.nc-foot ul { list-style: none; margin: 0; padding: 0; }

/* --- shared column label --- */

.nc-foot .nc-foot__lbl {
  font-family: var(--nc-sans);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--nc-gold-lt);
  margin: 0 0 0.9rem;
  padding-bottom: 0.6rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

/* --- Tier 1: brand, page index and contact, all on one row ---------------
   The index arrives as <nav><div><div×3>. Setting display:contents on the two
   wrappers promotes those three column divs to grid items of this row, so the
   footer reads as five columns instead of two stacked blocks — which is where
   most of its height was going. */

.nc-foot__top {
  display: grid;
  gap: clamp(1.75rem, 3vw, 2.5rem);
}
@media (min-width: 700px) {
  .nc-foot__top { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nc-foot__top .nc-foot__brand { grid-column: 1; grid-row: 1; }
  .nc-foot__top .nc-foot__col--contact { grid-column: 2; grid-row: 1; }
  .nc-foot__top .nc-foot__index { grid-column: 1 / -1; grid-row: 2; }
}
@media (min-width: 1080px) {
  .nc-foot__top.has-index {
    grid-template-columns: 1.45fr repeat(3, minmax(0, 1fr)) 1.05fr;
    gap: clamp(1.75rem, 2.6vw, 2.75rem);
  }
  .nc-foot__top.has-index .nc-foot__brand,
  .nc-foot__top.has-index .nc-foot__col--contact,
  .nc-foot__top.has-index .nc-foot__index { grid-column: auto; grid-row: auto; }

  /* unwrap the index so its columns join this grid */
  .nc-foot__top.has-index .nc-foot__index,
  .nc-foot__top.has-index .jhg-armada-index,
  .nc-foot__top.has-index .jhg-armada-index > div { display: contents; }
}

.nc-foot__brand { max-width: 44ch; }
@media (min-width: 700px) and (max-width: 1079px) { .nc-foot__brand { max-width: none; } }

.nc-foot__logo { display: inline-block; margin-bottom: 1rem; }
.nc-foot__logo img { height: 42px; width: auto; display: block; }

.nc-foot__h {
  font-family: var(--nc-serif);
  font-weight: 700;
  font-size: clamp(1.2rem, 1rem + 0.8vw, 1.55rem);
  line-height: 1.22;
  color: #fff;
  margin: 0 0 0.55rem;
}
.nc-foot .nc-foot__p {
  font-size: 0.865rem;
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.66);
  margin: 0 0 1.1rem;
}
.nc-foot__brand .nc-btn { font-size: 0.74rem; padding: 0.8em 1.25em; }

.nc-foot__contact li {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  padding: 0.3rem 0;
  font-size: 0.865rem;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.74);
}
.nc-foot__contact i { font-size: 1.02rem; flex: none; margin-top: 0.08em; }
.nc-foot__contact a { color: rgba(255, 255, 255, 0.86); word-break: break-word; }
.nc-foot__contact em {
  flex: none;
  margin-top: 0.12em;
  padding: 0.1em 0.42em;
  border-radius: 4px;
  background: rgba(201, 162, 75, 0.16);
  font-style: normal;
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--nc-gold-lt);
}

/* --- Tier 1 continued: the index columns ------------------------------- */

.nc-foot__index .jhg-armada-index { margin: 0; padding: 0; font-size: inherit; }
.nc-foot__index .jhg-armada-index > div {
  display: grid;
  gap: 1.5rem 2.25rem;
  grid-template-columns: minmax(0, 1fr);
}
@media (min-width: 640px) and (max-width: 1079px) {
  .nc-foot__index .jhg-armada-index > div { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* each column's first <div> is its heading — matched to the Contact label */
.nc-foot__index .jhg-armada-index > div > div > div:first-child {
  font-family: var(--nc-sans);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--nc-gold-lt);
  margin: 0 0 0.9rem;
  padding-bottom: 0.6rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.nc-foot__index .jhg-armada-index a {
  display: block;
  padding: 0.26rem 0;
  font-size: 0.855rem;
  line-height: 1.45;
  color: rgba(255, 255, 255, 0.68);
}
.nc-foot__index .jhg-armada-index a:hover { color: var(--nc-gold-lt); }

/* --- Tier 2: partners, label sitting beside the logos ------------------- */

.nc-foot__partners {
  margin-top: clamp(1.25rem, 2vw, 1.75rem);
  padding-top: clamp(1rem, 2vw, 1.35rem);
  border-top: 1px solid rgba(255, 255, 255, 0.12);
}
@media (min-width: 940px) {
  .nc-foot__partners { display: flex; align-items: center; gap: 1.75rem; }
  .nc-foot .nc-foot__partners .nc-foot__lbl {
    flex: none;
    width: 7.5rem;
    margin: 0;
    padding: 0;
    border: 0;
    line-height: 1.4;
  }
  .nc-foot__partners .nc-foot__logos { flex: 1; }
}

.nc-foot__logos {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.6rem;
}
@media (min-width: 560px)  { .nc-foot__logos { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 940px)  { .nc-foot__logos { grid-template-columns: repeat(7, minmax(0, 1fr)); } }
.nc-foot__logos li { display: flex; }

/* Every partner logo is dark ink drawn for a light background, so on the dark
   footer it needs either a light tile or a colour treatment. Tiles read as
   seven white boxes punched through the footer, so the marks are rendered as
   white silhouettes instead — the usual treatment for a partner strip, and it
   makes the row read as one set rather than seven pasted images. */
.nc-foot__logos a {
  flex: 1;
  display: grid;
  place-items: center;
  padding: 0.45rem 0.6rem;
  min-height: 46px;
  border: 1px solid rgba(255, 255, 255, 0.09);
  border-radius: var(--nc-r-sm);
  background: rgba(255, 255, 255, 0.035);
  transition: background-color 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
}
.nc-foot__logos a:hover {
  background: rgba(255, 255, 255, 0.09);
  border-color: rgba(201, 162, 75, 0.45);
  transform: translateY(-2px);
}
.nc-foot__logos img {
  max-height: 25px;
  width: auto;
  max-width: 100%;
  object-fit: contain;
  /* brightness(0) flattens the mark to black, invert(1) lifts it to white;
     the alpha channel is untouched, so only the ink is affected */
  filter: brightness(0) invert(1);
  opacity: 0.72;
  transition: opacity 0.25s ease;
}
.nc-foot__logos a:hover img { opacity: 1; }

/* --- Homepage sections, as one inline row rather than a column ---------- */

.nc-foot__quick {
  display: flex;
  flex-wrap: wrap;
  gap: 0.28rem 1.25rem;
  margin-bottom: 0.85rem;
  font-size: 0.8rem;
}
.nc-foot__quick a { color: rgba(255, 255, 255, 0.62); }
.nc-foot__quick a:hover { color: var(--nc-gold-lt); }

/* --- Tier 4: operator & ownership, then the bottom bar --- */

.nc-foot__fine {
  margin-top: clamp(1.25rem, 2vw, 1.75rem);
  padding-top: clamp(1rem, 2vw, 1.35rem);
  border-top: 1px solid rgba(255, 255, 255, 0.12);
}

/* The ownership paragraphs are the longest text in the footer — roughly a
   thousand characters of company registry detail that almost nobody reads.
   They stay in the footer and in the DOM, as asked, but folded into a
   disclosure so they cost one row instead of a block. Their inline styles are
   stripped upstream, so these rules need no !important. */
.nc-foot__op {
  margin-bottom: 0.9rem;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: var(--nc-r-sm);
  background: rgba(255, 255, 255, 0.025);
}
.nc-foot__op > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.62rem 0.95rem;
  font-family: var(--nc-sans);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--nc-gold-lt);
}
.nc-foot__op > summary::-webkit-details-marker { display: none; }
.nc-foot__op > summary::after {
  content: "+";
  flex: none;
  width: 19px;
  height: 19px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 1px solid rgba(201, 162, 75, 0.45);
  font-size: 0.85rem;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0;
}
.nc-foot__op[open] > summary::after {
  content: "\2212";
  background: var(--nc-gold);
  border-color: var(--nc-gold);
  color: var(--nc-ink);
}
.nc-foot__opgrid {
  display: grid;
  gap: 0.8rem 1.75rem;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  align-items: start;
  padding: 0 0.95rem 0.9rem;
}
.nc-foot__opgrid > * {
  margin: 0;
  max-width: none;
  padding: 0;
  border: 0;
  background: none;
  font-size: 0.76rem;
  line-height: 1.62;
  color: rgba(255, 255, 255, 0.58);
  text-align: left;
}
/* Two paragraphs share the row; a lone one would otherwise stretch to the
   full 1160px and run to ~180 characters a line. */
.nc-foot__opgrid > :only-child { max-width: 82ch; }
.nc-foot__opgrid p {
  margin: 0;
  color: inherit;
  font-size: inherit;
  line-height: inherit;
}
.nc-foot__opgrid p + p { margin-top: 0.6rem; }
.nc-foot__opgrid strong { color: rgba(255, 255, 255, 0.92); }
.nc-foot__opgrid a {
  color: rgba(255, 255, 255, 0.78);
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-color: rgba(201, 162, 75, 0.5);
}
.nc-foot__opgrid a:hover { color: var(--nc-gold-lt); text-decoration-color: var(--nc-gold-lt); }

/* "Last updated" lines sit in the bottom bar rather than as paragraphs of
   their own. */
.nc-foot__meta:empty { display: none; }
.nc-foot__meta > * {
  margin: 0;
  padding: 0;
  max-width: none;
  font-size: inherit;
  line-height: inherit;
  color: inherit;
  text-align: inherit;
}
.nc-foot__meta a {
  color: rgba(255, 255, 255, 0.7);
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* Safety net: if the relocation ever does not run, these keep their container
   width and stay legible instead of going full-bleed under the footer. */
.nc-foot > #klba-entity,
.nc-foot > #klba-contact,
.nc-foot > .jhg-updated {
  position: relative;
  width: 100%;
  max-width: var(--nc-container);
  margin-inline: auto;
  padding: 0 20px clamp(1rem, 2vw, 1.6rem);
  font-size: 0.79rem;
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.58);
  text-align: center;
  border-top: 0;
  opacity: 1 !important;
}
@media (min-width: 768px) {
  .nc-foot > #klba-entity,
  .nc-foot > #klba-contact,
  .nc-foot > .jhg-updated { padding-inline: 32px; }
}

.nc-foot .nc-foot__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.5rem 1.75rem;
  font-size: 0.8rem;
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.45);
  margin: 0;
  text-align: center;
}
.nc-foot .nc-foot__bottom > * { flex: 0 1 auto; }
@media (min-width: 900px) {
  .nc-foot .nc-foot__bottom { justify-content: space-between; text-align: left; }
}
.nc-foot__bottom a { color: rgba(255, 255, 255, 0.7); text-decoration: underline; text-underline-offset: 2px; }

/* --- back to top --- */

.nc-totop {
  position: fixed;
  left: 24px;
  bottom: 28px;
  z-index: 50;
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 50%;
  background: var(--nc-ink);
  color: #fff;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  box-shadow: 0 12px 30px -12px rgba(0, 0, 0, 0.7);
  transition: opacity 0.35s ease, transform 0.35s ease, visibility 0.35s, background-color 0.25s ease;
}
.nc-totop.is-visible { opacity: 1; visibility: visible; transform: none; }
.nc-totop:hover { background: var(--nc-gold-dk); border-color: var(--nc-gold); }
.nc-totop i { font-size: 1.3rem; color: #fff; }
@media (min-width: 768px) { .nc-totop { left: 32px; bottom: 32px; } }

/* ==========================================================================
   Primary navigation — desktop mega menu
   Laid out after neptunecruisekomodo.com: logo left, six top-level entries,
   each opening a panel whose links carry a one-line description. Below
   1024px this is hidden and the existing off-canvas menu takes over.
   ========================================================================== */

.nc-nav { display: none; }

@media (min-width: 1024px) {
  /* Center the nav between the logo and the reserve button: a 3-column
     grid (logo | nav | button) with the outer columns sized to their own
     content and the middle column taking whatever space is left, so the
     nav is centered in that leftover space no matter how wide the logo or
     the button are. justify-content on the row alone can't do this — it
     only centers the row as a block, not the nav within its own slot. */
  .site-header .container {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
  }

  .nc-nav {
    display: flex;
    justify-content: center;
    grid-column: 2;
  }
  /* the hamburger is only for the off-canvas menu, which mobile uses */
  .site-header .left-section { display: none; }

  /* header.css pulls the logo out of the flex flow from 769px up
     (position:absolute; left:40px), which left the nav starting at the
     container's left edge and sitting on top of it. Put it back in flow so
     the row lays out as logo → nav → button. The 80px of right padding was
     only there to clear the hamburger, which is hidden at this width. */
  .site-header .logo {
    position: static;
    left: auto;
    top: auto;
    transform: none;
    grid-column: 1;
  }
  .site-header .right-section { padding-right: 0; grid-column: 3; }

  .nc-nav__list {
    display: flex;
    align-items: center;
    gap: clamp(0.25rem, 1vw, 1rem);
    list-style: none;
    margin: 0;
    padding: 0;
  }
  .nc-nav__item { position: relative; }

  .nc-nav__link {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.7rem 0.85rem;
    border-radius: 8px;
    font-family: var(--nc-sans);
    font-size: 0.875rem;
    font-weight: 500;
    letter-spacing: 0.01em;
    line-height: 1;
    color: #fff;
    text-decoration: none;
    white-space: nowrap;
    transition: color 0.2s ease, background-color 0.2s ease;
  }
  .nc-nav__link span { color: inherit; font-family: inherit; }
  .nc-nav__link:hover,
  .nc-nav__item.is-open > .nc-nav__link { color: var(--nc-gold-lt); background: rgba(255, 255, 255, 0.1); }
  .nc-nav__item.is-current > .nc-nav__link { color: var(--nc-gold-lt); }

  /* a hairline under the current section, drawn only when it is current */
  .nc-nav__item.is-current > .nc-nav__link::after {
    content: "";
    position: absolute;
    left: 0.85rem;
    right: 0.85rem;
    bottom: 0.34rem;
    height: 1.5px;
    border-radius: 2px;
    background: var(--nc-gold);
  }

  .nc-nav__caret {
    font-size: 0.9rem;
    color: currentColor;
    opacity: 0.7;
    transition: transform 0.25s ease;
  }
  .nc-nav__item.is-open .nc-nav__caret { transform: rotate(180deg); opacity: 1; }

  /* --- panel --- */

  .nc-nav__panel {
    position: absolute;
    top: calc(100% + 12px);
    left: -0.5rem;
    z-index: 60;
    min-width: 360px;
    padding: 0.6rem;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 14px;
    background: rgba(11, 20, 32, 0.97);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    box-shadow: 0 24px 60px -20px rgba(0, 0, 0, 0.85);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.22s ease, transform 0.22s ease, visibility 0.22s;
  }
  /* a transparent bridge so the pointer can travel from link to panel */
  .nc-nav__panel::before {
    content: "";
    position: absolute;
    inset: -14px 0 auto 0;
    height: 14px;
  }
  .nc-nav__item.is-open > .nc-nav__panel {
    opacity: 1;
    visibility: visible;
    transform: none;
  }
  /* keep the last panels from running off the right edge */
  .nc-nav__item:nth-last-child(-n + 3) > .nc-nav__panel { left: auto; right: -0.5rem; }

  .nc-nav__panel-list { list-style: none; margin: 0; padding: 0; }

  .nc-nav__panel-link {
    display: block;
    padding: 0.62rem 0.8rem;
    border-radius: 9px;
    text-decoration: none;
    transition: background-color 0.18s ease;
  }
  .nc-nav__panel-link:hover,
  .nc-nav__panel-link:focus-visible { background: rgba(201, 162, 75, 0.14); }

  .nc-nav__panel-title {
    display: block;
    font-family: var(--nc-sans);
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.35;
    color: #fff;
  }
  .nc-nav__panel-link:hover .nc-nav__panel-title { color: var(--nc-gold-lt); }
  .nc-nav__panel-link[aria-current] .nc-nav__panel-title { color: var(--nc-gold-lt); }

  .nc-nav__panel-desc {
    display: block;
    margin-top: 0.16rem;
    font-family: var(--nc-sans);
    font-size: 0.78rem;
    line-height: 1.5;
    color: rgba(255, 255, 255, 0.58);
  }

  /* the reserve button sits at the far right, as on the reference site */
  .site-header .right-section { flex: none; }
}

/* Tailwind caps .container at 1024px right up to the 1280px breakpoint, so the
   bar has the same ~992px of room across that whole range. Six entries plus the
   logo and the button do not fit there at full size, so tighten the spacing
   until there is real width to spend. */
@media (min-width: 1024px) and (max-width: 1279px) {
  .nc-nav__list { gap: 0.1rem; }
  .nc-nav__link { padding: 0.65rem 0.55rem; font-size: 0.82rem; }
  .nc-nav__caret { font-size: 0.8rem; }
  .nc-nav__item.is-current > .nc-nav__link::after { left: 0.55rem; right: 0.55rem; }
}

@media (min-width: 1024px) and (prefers-reduced-motion: reduce) {
  .nc-nav__panel { transition: none; }
}

/* --- Off-canvas menu: the parent row is now a link plus a toggle button.
       header.css styles .menu-item-wrapper and .dropdown-toggle already; these
       two rules replace the ones that assumed the link was a direct child of
       the <li>, which it no longer is. --- */

.nav-menu .menu-item-wrapper > a.has-dropdown-button { flex: 1; }
.nav-menu .menu-item-wrapper > a.has-dropdown-button::after { display: none; }
