/* ============================================================================
   Dear Costa Rica — reusable component CSS
   Ported and cleaned from the prototype (app/globals.css).

   HOW THIS IS USED IN ELEMENTOR
   - Simple pieces (headings, text, buttons, images, tabs, accordions) are
     built with native Elementor widgets that inherit the Global Kit.
   - Complex pieces (hub hero overlay, 4-cell decision grid, area explorer,
     planning grid, prose+facts table, "where to next" grid) are built with
     an HTML widget or a shortcode whose markup carries the classes below.
   - Put each section in an Elementor Container. Add the section class
     (e.g. `hub-feel`) to the Container's CSS Classes field so the background
     and padding rules apply.

   All rules are namespaced under `.dcr` — add the class `dcr` to the page's
   outer Elementor Container (or the <body> via Elementor > Site Settings >
   Custom CSS: `body { }` won't take a class, so wrap page content instead).
   For global header/footer, the theme adds `.dcr` to <body> is NOT done;
   instead the header/footer templates get a top-level container with `.dcr`.
   ========================================================================== */

.dcr,
.dcr * { box-sizing: border-box; }

.dcr {
  font-family: var(--dcr-sans);
  color: var(--dcr-ink);
  background: var(--dcr-paper);
  overflow-x: clip;
}

/* --- Kicker / eyebrow ---------------------------------------------------- */
.dcr .kicker {
  margin: 0;
  font: 600 var(--dcr-kicker)/1.3 var(--dcr-sans);
  text-transform: uppercase;
  letter-spacing: .16em;
  color: var(--dcr-coral);
}
.dcr .kicker.light { color: rgba(255,255,255,.82); }

/* --- Section wrapper --------------------------------------------------- */
.dcr .hub-section {
  padding: var(--dcr-section-y) var(--dcr-gutter);
  scroll-margin-top: 100px;
}
.dcr .hub-section > * { max-width: var(--dcr-content-max); margin-inline: auto; }

/* --- Section head (2-col: heading / intro) --------------------------- */
.dcr .section-head {
  display: grid;
  grid-template-columns: 1.5fr .8fr;
  gap: 6vw;
  align-items: end;
  max-width: var(--dcr-content-max);
  margin: 0 auto clamp(40px, 4.6vw, 64px);
}
.dcr .section-head > div { max-width: 760px; }
.dcr .section-head h2 {
  margin: 14px 0 0;
  font: 400 var(--dcr-h2)/.94 var(--dcr-serif);
  letter-spacing: -.04em;
}
.dcr .section-head h2 em { font-style: italic; color: var(--dcr-coral); }
.dcr .section-head > p {
  max-width: 400px;
  margin: 0 0 6px;
  font-size: var(--dcr-body-size);
  line-height: 1.62;
  color: var(--dcr-body);
}
.dcr .section-head.stacked { display: block; }
.dcr .section-head.stacked > div { margin-bottom: 14px; }
.dcr .section-head.stacked > p { max-width: 640px; }
.dcr .section-head.on-dark h2 { color: #fff; }
.dcr .section-head.on-dark h2 em { color: #F2B6A4; }
.dcr .section-head.on-dark > p { color: rgba(255,255,255,.72); }

/* --- 1. HUB HERO ---------------------------------------------------------
   Container class: hub-hero. Inside: <picture>/<img>, .hub-hero-shade,
   .hub-breadcrumbs, .hub-hero-copy (kicker + h1 + p + .hub-hero-context),
   .hub-scroll. */
.dcr .hub-hero {
  position: relative;
  min-height: 100svh;
  max-height: 920px;
  color: #fff;
  overflow: hidden;
  background: var(--dcr-forest);
}
.dcr .hub-hero > picture,
.dcr .hub-hero > picture img,
.dcr .hub-hero > img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: 50% 40%;
}
.dcr .hub-hero-shade {
  position: absolute; inset: 0;
  background:
    linear-gradient(88deg, rgba(6,26,21,.72), rgba(6,26,21,.18) 60%, rgba(6,26,21,.04)),
    linear-gradient(0deg, rgba(5,22,18,.55), transparent 44%);
}
.dcr .hub-breadcrumbs {
  position: absolute; z-index: 1; left: var(--dcr-gutter); top: 116px;
  display: flex; gap: 9px;
  font-size: 10px; text-transform: uppercase; letter-spacing: .14em;
  color: rgba(255,255,255,.72);
}
.dcr .hub-breadcrumbs a:hover { color: #fff; }
.dcr .hub-hero-copy {
  position: absolute; z-index: 1;
  left: max(var(--dcr-gutter), calc((100vw - var(--dcr-content-max)) / 2));
  bottom: clamp(48px, 9vh, 104px);
  width: min(880px, calc(100% - 2 * var(--dcr-gutter)));
}
.dcr .hub-hero-copy h1 {
  margin: 16px 0 20px;
  font: 400 var(--dcr-h1-hero)/.88 var(--dcr-serif);
  letter-spacing: -.045em;
}
.dcr .hub-hero-copy h1 em { font-style: normal; color: var(--dcr-coral); }
.dcr .hub-hero-copy > p {
  max-width: 520px; margin: 0;
  font-size: var(--dcr-lede); line-height: 1.5;
  color: rgba(255,255,255,.92);
}
.dcr .hub-hero-context {
  display: flex; flex-wrap: wrap; gap: 10px 22px;
  margin-top: 26px; padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,.4);
  font-size: 11px; text-transform: uppercase; letter-spacing: .12em;
  color: rgba(255,255,255,.85);
}
.dcr .hub-scroll {
  position: absolute; z-index: 1; left: 50%; bottom: 24px;
  display: grid; place-items: center; width: 42px; height: 42px;
  border: 1px solid rgba(255,255,255,.5); border-radius: 50%;
  transform: translateX(-50%);
}

/* --- Sticky sub-nav --------------------------------------------------- */
.dcr .hub-subnav {
  position: sticky; z-index: 8; top: 72px;
  display: flex; justify-content: center; gap: clamp(18px, 3vw, 48px);
  padding: 16px var(--dcr-gutter);
  background: rgba(243,239,232,.94);
  border-bottom: 1px solid var(--dcr-line);
  backdrop-filter: blur(12px);
  font: 600 11px/1 var(--dcr-sans);
  text-transform: uppercase; letter-spacing: .13em;
}
.dcr .hub-subnav a { position: relative; padding: 4px 0; }
.dcr .hub-subnav a::after {
  content: ""; position: absolute; left: 0; right: 100%; bottom: 0;
  height: 1px; background: var(--dcr-coral); transition: right .3s;
}
.dcr .hub-subnav a:hover::after { right: 0; }

/* --- 2. FEEL FIGURES (image pair) ----------------------------------- */
.dcr .hub-feel { background: var(--dcr-paper-2); }
.dcr .hub-feel-figs {
  display: grid; grid-template-columns: 1.5fr 1fr;
  gap: clamp(14px, 2vw, 24px);
  max-width: var(--dcr-content-max); margin: 0 auto;
}
.dcr .hub-feel-figs figure { margin: 0; overflow: hidden; }
.dcr .hub-feel-figs figure > img {
  display: block; width: 100%;
  height: clamp(340px, 40vw, 500px); object-fit: cover;
}
.dcr .hub-feel-figs figure:last-child > img { object-position: center 60%; }
.dcr .hub-feel-figs figcaption {
  margin-top: 10px; font-size: 10px;
  text-transform: uppercase; letter-spacing: .13em; color: var(--dcr-muted);
}

/* --- 3. DECISION SUMMARY ("know it in seconds") -------------------- */
.dcr .hub-overview { background: var(--dcr-paper); }
.dcr .hub-decision-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  max-width: var(--dcr-content-max); margin: 0 auto;
  border-top: 1px solid var(--dcr-ink);
  border-bottom: 1px solid var(--dcr-line);
}
.dcr .hub-decision-grid > div { padding: 28px clamp(18px, 2vw, 32px) 34px 0; }
.dcr .hub-decision-grid > div + div {
  padding-left: clamp(18px, 2vw, 32px);
  border-left: 1px solid var(--dcr-line);
}
.dcr .hub-decision-grid svg { width: 24px; height: 24px; stroke-width: 1.4; color: var(--dcr-coral); }
.dcr .hub-decision-grid span {
  display: block; margin: 22px 0 10px;
  font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .13em;
  color: var(--dcr-muted);
}
.dcr .hub-decision-grid p { margin: 0; font: 400 20px/1.35 var(--dcr-serif); }
.dcr .hub-editor-note {
  display: grid; grid-template-columns: .4fr 1.2fr; gap: 4vw;
  max-width: 960px; margin: 44px auto 0;
  padding-top: 24px; border-top: 2px solid var(--dcr-coral);
}
.dcr .hub-editor-note span {
  font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .14em;
  color: var(--dcr-coral);
}
.dcr .hub-editor-note p { margin: 0; font: italic 21px/1.4 var(--dcr-serif); }

/* --- 4. AREA EXPLORER ------------------------------------------------ */
.dcr .hub-areas { background: var(--dcr-forest); color: #fff; }
.dcr .area-explorer { max-width: var(--dcr-content-max); margin: 0 auto; }
.dcr .coastline-cue {
  display: grid; grid-template-columns: repeat(5, 1fr);
  margin: 0 0 22px; padding: 0; list-style: none; position: relative;
}
.dcr .coastline-cue::before {
  content: ""; position: absolute; top: 11px; left: 10%; right: 10%;
  height: 1px; background: rgba(255,255,255,.32);
}
.dcr .coastline-cue li { position: relative; z-index: 1; }
.dcr .coastline-cue button {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  width: 100%; padding: 0 6px; border: 0; background: none;
  color: rgba(255,255,255,.6);
  font: 600 11px/1.25 var(--dcr-sans); letter-spacing: .06em; text-transform: uppercase;
  cursor: pointer; transition: color .25s;
}
.dcr .coastline-cue i {
  width: 12px; height: 12px; border-radius: 50%;
  background: rgba(255,255,255,.4);
  box-shadow: 0 0 0 4px var(--dcr-forest);
  transition: background .25s, transform .25s;
}
.dcr .coastline-cue li.is-active button { color: #fff; }
.dcr .coastline-cue li.is-active i { background: var(--dcr-coral); transform: scale(1.3); }
.dcr .area-stage {
  position: relative; overflow: hidden; background: var(--dcr-forest-3);
  min-height: clamp(440px, 56vw, 640px);
}
.dcr .area-stage > img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: center 74%;
}
.dcr .area-stage::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(0deg, rgba(4,20,16,.92), rgba(4,20,16,.12) 58%, transparent);
}
.dcr .area-stage-copy {
  position: absolute; z-index: 1;
  left: clamp(24px, 4vw, 56px); right: clamp(24px, 4vw, 56px);
  bottom: clamp(28px, 4vw, 52px);
}
.dcr .area-count { font-size: 11px; font-weight: 700; letter-spacing: .14em; color: #F2B6A4; }
.dcr .area-stage-copy h3 {
  margin: 10px 0 12px;
  font: 400 clamp(38px, 5vw, 72px)/.95 var(--dcr-serif); letter-spacing: -.03em;
}
.dcr .area-bestfor { max-width: 600px; margin: 0 0 6px; font-size: 15px; line-height: 1.5; color: rgba(255,255,255,.88); }
.dcr .area-bestfor strong { color: #F2B6A4; font-weight: 600; }
.dcr .area-stage-copy > p { max-width: 600px; margin: 0 0 16px; font-size: 16px; line-height: 1.55; color: rgba(255,255,255,.78); }
.dcr .visual-tags { display: flex; flex-wrap: wrap; gap: 7px; }
.dcr .visual-tags span {
  padding: 6px 11px; border: 1px solid rgba(255,255,255,.35); border-radius: 20px;
  font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em;
  color: rgba(255,255,255,.9);
}

/* --- 5. STAY EDIT (three cards; photo + photo-less) ---------------- */
.dcr .hub-stay { background: var(--dcr-paper-4); }
.dcr .stay-edit {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(18px, 2.6vw, 40px);
  max-width: var(--dcr-content-max); margin: 0 auto; align-items: start;
}
.dcr .stay-card { display: flex; flex-direction: column; color: var(--dcr-ink); }
.dcr .stay-card-image { position: relative; overflow: hidden; background: #D3D8CF; }
.dcr .stay-card-image img { display: block; width: 100%; height: clamp(300px, 29vw, 420px); object-fit: cover; }
.dcr .stay-badge {
  position: absolute; left: 14px; top: 14px; padding: 6px 11px;
  background: var(--dcr-coral); color: #fff;
  font: 700 10px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .1em;
}
.dcr .stay-card h3 { margin: 18px 0 12px; font: 400 clamp(28px, 2.8vw, 40px)/1 var(--dcr-serif); }
.dcr .stay-card dl { margin: 0; border-top: 1px solid var(--dcr-line); }
.dcr .stay-card dl > div { padding: 12px 0; border-bottom: 1px solid var(--dcr-line); }
.dcr .stay-card dt { margin-bottom: 4px; font: 700 9px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .1em; color: var(--dcr-muted); }
.dcr .stay-card dd { margin: 0; font-size: 14px; line-height: 1.5; }
/* photo-less variant (hotel imagery pending rights) */
.dcr .stay-card--flat { padding: 26px 24px 8px; background: var(--dcr-paper); border: 1px solid var(--dcr-line); transition: border-color .3s var(--dcr-ease); }
.dcr .stay-card--flat:hover { border-color: var(--dcr-ink); }
.dcr .stay-card--flat .stay-tag { align-self: flex-start; padding: 6px 11px; background: var(--dcr-coral); color: #fff; font: 700 10px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .1em; }
.dcr .stay-card--flat h3 { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; margin: 16px 0 14px; }

/* --- 6/7. CARD GRID (experiences / beaches) ----------------------- */
.dcr .hub-do { background: var(--dcr-forest-2); color: #fff; }
.dcr .hub-beaches { background: var(--dcr-paper); }
.dcr .pv-card-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(28px, 3.6vw, 56px); max-width: var(--dcr-content-max); margin: 0 auto; }
.dcr .pv-card-grid.three { grid-template-columns: repeat(3, 1fr); }
.dcr .pv-card { display: flex; flex-direction: column; }
.dcr .pv-card-img { position: relative; overflow: hidden; background: #0E2A23; margin-bottom: 20px; }
.dcr .pv-card-img img { display: block; width: 100%; height: clamp(320px, 32vw, 440px); object-fit: cover; filter: saturate(.9); }
.dcr .pv-card-n {
  position: absolute; top: 15px; left: 15px;
  display: grid; place-items: center; width: 34px; height: 34px;
  background: var(--dcr-paper); color: var(--dcr-coral);
  font: 700 11px/1 var(--dcr-sans); border-radius: 50%;
}
.dcr .pv-card-tag { margin: 0 0 10px; font: 700 10px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .12em; color: var(--dcr-coral); }
.dcr .hub-do .pv-card-tag { color: #F2B6A4; }
.dcr .pv-card h3 { margin: 0 0 12px; font: 400 clamp(28px, 2.9vw, 42px)/1.02 var(--dcr-serif); }
.dcr .pv-card > p { margin: 0; max-width: 460px; font-size: 15px; line-height: 1.6; }
.dcr .hub-do .pv-card > p { color: rgba(255,255,255,.74); }

/* --- 8. FULL-BLEED BAND ------------------------------------------- */
.dcr .hub-band { position: relative; height: min(70vh, 600px); min-height: 360px; overflow: hidden; color: #fff; background: var(--dcr-forest); }
.dcr .hub-band > img { width: 100%; height: 100%; object-fit: cover; object-position: center 66%; }
.dcr .hub-band::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(5,22,18,.7), rgba(5,22,18,.08)); }
.dcr .hub-band-copy { position: absolute; z-index: 1; left: 0; right: 0; bottom: clamp(34px, 5vw, 60px); padding: 0 var(--dcr-gutter); text-align: center; }
.dcr .hub-band-copy p { max-width: 540px; margin: 0 auto; font: italic 21px/1.45 var(--dcr-serif); }

/* --- 9. FOOD & CULTURE SPLIT ------------------------------------- */
.dcr .hub-culture { display: grid; grid-template-columns: 1fr 1fr; min-height: 620px; background: var(--dcr-paper-3); }
.dcr .culture-photo { position: relative; overflow: hidden; min-height: 440px; }
.dcr .culture-photo img { width: 100%; height: 100%; object-fit: cover; }
.dcr .culture-photo span { position: absolute; left: 24px; bottom: 20px; font: 600 10px/1 var(--dcr-sans); letter-spacing: .15em; color: #fff; }
.dcr .culture-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(48px, 6vw, 100px); }
.dcr .culture-copy h2 { margin: 14px 0 18px; font: 400 var(--dcr-h2-sm)/.96 var(--dcr-serif); letter-spacing: -.03em; }
.dcr .culture-copy h2 em { font-style: italic; color: var(--dcr-coral); }
.dcr .culture-copy > p { max-width: 460px; margin: 0; font-size: 16px; line-height: 1.66; }
.dcr .culture-copy dl { margin: 34px 0 0; max-width: 520px; }
.dcr .culture-copy dl > div { display: grid; grid-template-columns: 120px 1fr; gap: 18px; padding: 14px 0; border-top: 1px solid rgba(15,42,38,.18); }
.dcr .culture-copy dt { font: 400 17px/1.3 var(--dcr-serif); color: var(--dcr-coral); }
.dcr .culture-copy dd { margin: 0; font-size: 14px; line-height: 1.55; color: var(--dcr-body); }

/* --- 10. PLANNING GRID (expandable decisions) ------------------ */
.dcr .hub-practical { background: var(--dcr-forest); color: #fff; }
.dcr .planning-decisions { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; max-width: var(--dcr-content-max); margin: 0 auto; }
.dcr .planning-decisions article { position: relative; display: flex; flex-direction: column; padding: clamp(26px, 3vw, 40px); background: var(--dcr-paper); color: var(--dcr-ink); }
.dcr .planning-decisions > article > svg { width: 26px; height: 26px; stroke-width: 1.4; color: var(--dcr-coral); }
.dcr .planning-decisions article > span { margin: 22px 0 8px; font: 700 10px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .12em; color: var(--dcr-muted); }
.dcr .planning-decisions h3 { margin: 0; font: 400 clamp(26px, 2.6vw, 38px)/1.06 var(--dcr-serif); }
.dcr .planning-decisions ul { margin: 16px 0 0; padding-left: 18px; font: 400 15px/1.6 var(--dcr-sans); color: #454F47; }
.dcr .planning-detail { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--dcr-line); }
.dcr .planning-detail p { margin: 0 0 12px; font-size: 14px; line-height: 1.6; color: var(--dcr-body); }

/* --- 11. PROSE + FACTS (utility pages) ------------------------- */
.dcr .hub-prose { max-width: min(720px, 100%); margin: 0; }
.dcr .hub-section > .hub-prose,
.dcr .hub-section > .hub-facts { margin-left: max(0px, calc((100% - var(--dcr-content-max)) / 2)); }
.dcr .hub-prose > p { margin: 0 0 18px; font-size: 17px; line-height: 1.68; color: var(--dcr-body); }
.dcr .hub-prose > p:last-child { margin-bottom: 0; }
.dcr .hub-prose.on-dark > p { color: rgba(255,255,255,.82); }
.dcr .hub-facts { display: grid; grid-template-columns: 1fr; max-width: min(720px, 100%); margin: 28px 0 0; border-top: 1px solid var(--dcr-line); }
.dcr .hub-facts > div { display: grid; grid-template-columns: 150px 1fr; gap: 20px; padding: 14px 0; border-bottom: 1px solid var(--dcr-line); }
.dcr .hub-facts dt { margin: 0; font: 700 10px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .13em; color: var(--dcr-muted); }
.dcr .hub-facts dd { margin: 0; font: 400 16px/1.5 var(--dcr-serif); }
.dcr .hub-facts.on-dark, .dcr .hub-facts.on-dark > div { border-color: var(--dcr-line-dark); }
.dcr .hub-facts.on-dark dd { color: #fff; }
.dcr .hub-facts.on-dark dt { color: rgba(255,255,255,.6); }
.dcr .hub-note-line { max-width: var(--dcr-content-max); margin: clamp(28px, 3vw, 40px) auto 0; font-size: 13px; line-height: 1.6; color: var(--dcr-muted); }
.dcr .hub-text-links { display: flex; flex-wrap: wrap; gap: 16px 34px; max-width: var(--dcr-content-max); margin: clamp(34px, 4vw, 50px) auto 0; }
.dcr .hub-text-links a { padding-bottom: 4px; border-bottom: 1px solid var(--dcr-line); font: 600 12px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .1em; }
.dcr .hub-text-links a:hover { border-color: var(--dcr-coral); }

/* --- 12. HUB CTA (inline underlined link) --------------------- */
.dcr .hub-cta {
  display: inline-flex; align-items: center; gap: 9px;
  margin: clamp(36px, 4vw, 54px) auto 0; max-width: var(--dcr-content-max);
  padding-bottom: 6px; border-bottom: 1px solid currentColor;
  font: 700 11px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .12em;
}
.dcr .hub-cta.on-dark { color: #fff; }

/* --- 13. WHERE TO NEXT (coral closing grid) ------------------ */
.dcr .hub-next { padding: clamp(64px, 7vw, 110px) var(--dcr-gutter); background: var(--dcr-coral); color: #fff; }
.dcr .hub-next-head { max-width: var(--dcr-content-max); margin: 0 auto clamp(30px, 3.4vw, 46px); }
.dcr .hub-next-head .kicker { color: rgba(255,255,255,.8); }
.dcr .hub-next-head h2 { margin: 12px 0 10px; font: 400 var(--dcr-h2)/.94 var(--dcr-serif); letter-spacing: -.04em; }
.dcr .hub-next-head p { margin: 0; font-size: 16px; color: rgba(255,255,255,.85); }
.dcr .hub-next-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); max-width: var(--dcr-content-max); margin: 0 auto; border-top: 1px solid rgba(255,255,255,.42); }
.dcr .hub-next-grid a { position: relative; display: flex; flex-direction: column; min-height: 230px; padding: 24px 38px 28px 0; border-bottom: 1px solid rgba(255,255,255,.28); }
.dcr .hub-next-grid a + a { padding-left: 24px; border-left: 1px solid rgba(255,255,255,.28); }
.dcr .hub-next-grid span { font: 700 10px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .12em; color: rgba(255,255,255,.78); }
.dcr .hub-next-grid h3 { margin: auto 0 0; font: 400 var(--dcr-h3-sm)/1.15 var(--dcr-serif); }

/* --- 14. NEWSLETTER (honest "coming soon", no form) --------- */
.dcr .dcr-newsletter { padding: 95px var(--dcr-gutter); background: var(--dcr-forest); color: #fff; text-align: center; }
.dcr .dcr-newsletter h2 { margin: 12px 0 0; font: 400 clamp(60px, 6vw, 90px)/.92 var(--dcr-serif); }
.dcr .dcr-newsletter h2 em { font-style: italic; color: #F1B196; }
.dcr .dcr-newsletter > p { max-width: 480px; margin: 22px auto 0; font-size: 16px; color: rgba(255,255,255,.72); }
.dcr .dcr-newsletter .status { margin: 32px 0 0; font: 600 12px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .15em; color: rgba(255,255,255,.58); }

/* --- Buttons (coral solid + text link) --------------------- */
.dcr .btn-coral,
.dcr a.btn-coral {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  min-height: 51px; padding: 0 22px;
  background: var(--dcr-coral); border: 1px solid var(--dcr-coral); color: #fff;
  font: 600 12px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .14em;
  transition: background .25s, transform .25s;
}
.dcr .btn-coral:hover { background: var(--dcr-coral-ink); border-color: var(--dcr-coral-ink); transform: translateY(-2px); }
.dcr .btn-text {
  display: inline-flex; align-items: center; gap: 12px;
  padding-bottom: 6px; border-bottom: 1px solid currentColor;
  font: 600 12px/1 var(--dcr-sans); text-transform: uppercase; letter-spacing: .16em;
}

/* --- Responsive: tablet ----------------------------------- */
@media (max-width: 1000px) {
  .dcr .section-head { display: block; }
  .dcr .section-head > div { max-width: 640px; margin-bottom: 14px; }
  .dcr .section-head > p { max-width: 600px; }
  .dcr .hub-feel-figs { grid-template-columns: 1fr; gap: 14px; }
  .dcr .hub-decision-grid { grid-template-columns: repeat(2, 1fr); }
  .dcr .hub-decision-grid > div:nth-child(3) { border-left: 0; }
  .dcr .hub-editor-note { grid-template-columns: 1fr; gap: 12px; }
  .dcr .stay-edit { grid-template-columns: 1fr 1fr; }
  .dcr .stay-card:last-child { grid-column: 1 / -1; }
  .dcr .hub-culture { grid-template-columns: 1fr; }
  .dcr .planning-decisions { grid-template-columns: 1fr; }
  .dcr .hub-next-grid { grid-template-columns: repeat(2, 1fr); }
  .dcr .hub-next-grid a, .dcr .hub-next-grid a + a { border-left: 0; padding-left: 0; min-height: 180px; }
  .dcr .hub-next-grid a:nth-child(even) { padding-left: 24px; border-left: 1px solid rgba(255,255,255,.28); }
}

/* --- Responsive: phone (390 / 430) ---------------------- */
@media (max-width: 620px) {
  .dcr .hub-hero { min-height: 600px; }
  .dcr .hub-breadcrumbs { top: 92px; left: 22px; font-size: 9px; gap: 6px; }
  .dcr .hub-hero-copy { left: 22px; width: calc(100% - 44px); bottom: 40px; }
  .dcr .hub-hero-copy h1 { font-size: clamp(52px, 15vw, 66px); line-height: .92; }
  .dcr .hub-hero-copy > p { font-size: 16px; }
  .dcr .hub-hero-context { gap: 8px 16px; font-size: 10px; }
  .dcr .hub-scroll { display: none; }
  .dcr .hub-subnav { top: 64px; justify-content: flex-start; gap: 22px; overflow-x: auto; padding: 13px 22px; }
  .dcr .hub-subnav::-webkit-scrollbar { display: none; }
  .dcr .hub-subnav a { flex: 0 0 auto; white-space: nowrap; }
  .dcr .section-head h2, .dcr .culture-copy h2, .dcr .hub-next-head h2 { font-size: clamp(36px, 10vw, 46px); }
  .dcr .hub-decision-grid { grid-template-columns: 1fr; }
  .dcr .hub-decision-grid > div, .dcr .hub-decision-grid > div + div { padding: 22px 0; border-left: 0; border-bottom: 1px solid var(--dcr-line); }
  .dcr .coastline-cue { display: flex; gap: 0; overflow-x: auto; margin: 0 -22px 20px; padding: 0 22px 8px; }
  .dcr .coastline-cue::before { display: none; }
  .dcr .coastline-cue li { flex: 0 0 108px; }
  .dcr .area-stage { min-height: clamp(420px, 118vw, 560px); }
  .dcr .area-stage-copy h3 { font-size: clamp(38px, 11vw, 52px); }
  .dcr .stay-edit { grid-template-columns: 1fr; gap: 26px; }
  .dcr .pv-card-grid, .dcr .pv-card-grid.three { grid-template-columns: 1fr; gap: 32px; }
  .dcr .culture-copy { padding: 56px 24px; }
  .dcr .hub-band-copy p { font-size: 19px; }
  .dcr .hub-next-grid { grid-template-columns: 1fr; }
  .dcr .hub-next-grid a, .dcr .hub-next-grid a + a, .dcr .hub-next-grid a:nth-child(even) { padding: 22px 38px 24px 0; border-left: 0; min-height: 0; }
  .dcr .hub-next-grid h3 { margin: 12px 0 0; }
  .dcr .hub-facts > div { grid-template-columns: 1fr; gap: 4px; }
}

/* --- Focus (accessibility) ----------------------------- */
.dcr a:focus-visible, .dcr button:focus-visible {
  outline: 3px solid var(--dcr-coral); outline-offset: 3px; border-radius: 2px;
}
.dcr .hub-hero a:focus-visible,
.dcr .hub-subnav a:focus-visible,
.dcr .hub-next a:focus-visible { outline-color: #F6D9CF; }

@media (prefers-reduced-motion: reduce) {
  .dcr * { animation: none !important; transition: none !important; }
}

/* ============================================================================
   SITE CHROME — Elementor Header / Footer / 404 location templates.

   These live OUTSIDE the `.dcr` page wrapper, so the rules below are NOT
   namespaced under `.dcr`. They target the CSS classes set on the Elementor
   containers/widgets in the DCR Header, DCR Footer and DCR 404 templates.

   HEADER HAS THREE VISUAL STATES
     1. Overlay (default) ...... transparent, white, thin white rule. For pages
                                 that open with a full-bleed dark hero (home +
                                 the 11 editorial pages). The hero must start at
                                 y=0 and sit *behind* the header.
     2. Scrolled ............... cream, ink, blur + shadow, shorter. Added by
                                 Elementor's sticky "scroll effects"
                                 (.elementor-sticky--effects) once the page is
                                 scrolled past the offset.
     3. Solid ................. same look as Scrolled but permanent and in normal
                                 flow. For any page that does NOT open with a
                                 dark hero: the 4 trust pages + the 404.
                                 Opt in by adding the class `dcr-page-solid` to
                                 the page's FIRST Elementor container.
   ========================================================================== */

/* ---- Header : overlay (default) ------------------------------------------ */
.dcr-header {
  position: absolute;
  inset: 0 0 auto 0;
  z-index: 100;
  width: 100%;
  color: #fff;
  background: transparent;
  border-bottom: 1px solid rgba(255, 255, 255, .42);
  transition: background-color .4s var(--dcr-ease), color .4s var(--dcr-ease),
              border-color .4s var(--dcr-ease), box-shadow .4s var(--dcr-ease);
}
.dcr-header * { box-sizing: border-box; }

.dcr-header-inner { min-height: 94px; transition: min-height .4s var(--dcr-ease); }
.dcr-header-inner > .e-con-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  width: 100%;
  max-width: var(--dcr-content-max);
  margin-inline: auto;
}

/* logo — ONE image widget holding the dark wordmark (dear-costa-rica-dark.png).
   In the overlay state it is knocked out to white with a filter; in the
   scrolled / solid states the filter is removed so the real dark mark shows. */
.dcr-logo { flex: 0 0 auto; line-height: 0; }
.dcr-logo img {
  display: block;
  width: 150px;
  height: auto;
  filter: brightness(0) invert(1);
  transition: filter .35s var(--dcr-ease);
}

/* primary nav (Elementor Nav Menu widget, class .dcr-nav) */
.dcr-nav .elementor-nav-menu { display: flex; align-items: center; }
.dcr-nav .elementor-nav-menu > li { margin: 0 0 0 clamp(18px, 2.4vw, 40px); }
.dcr-nav .elementor-nav-menu > li:first-child { margin-left: 0; }
.dcr-nav a.elementor-item {
  padding: 14px 0 !important;
  font: 500 12px/1 var(--dcr-sans) !important;
  text-transform: uppercase;
  letter-spacing: .14em;
  color: currentColor !important;
  fill: currentColor;
  opacity: .9;
  transition: opacity .2s;
}
.dcr-nav a.elementor-item:hover,
.dcr-nav a.elementor-item.elementor-item-active { opacity: 1; background: transparent !important; }
.dcr-nav .elementor-item::after,
.dcr-nav .elementor-item::before { background-color: currentColor !important; height: 1px; }
.dcr-nav .elementor-menu-toggle { color: currentColor !important; }
.dcr-nav .elementor-menu-toggle svg { fill: currentColor; width: 26px; height: 26px; }

/* ---- Header : scrolled + solid --------------------------------------------- */
.dcr-header.elementor-sticky--effects,
body:has(.dcr-page-solid) .dcr-header,
body:has(.dcr-404) .dcr-header {
  color: var(--dcr-ink);
  background: rgba(243, 239, 232, .96);
  border-bottom-color: var(--dcr-line);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}
.dcr-header.elementor-sticky--effects { box-shadow: 0 6px 30px rgba(13, 35, 28, .07); }
.dcr-header.elementor-sticky--effects .dcr-header-inner { min-height: 72px; }

/* real dark wordmark in the scrolled / solid states */
.dcr-header.elementor-sticky--effects .dcr-logo img,
body:has(.dcr-page-solid) .dcr-header .dcr-logo img,
body:has(.dcr-404) .dcr-header .dcr-logo img { filter: none; }

/* The header sits in `position:absolute` even on solid pages, so a hero-less
   page must reserve the header's height at the top. Add `dcr-page-solid` to the
   page's first container (the 404 template clears the header via its own top
   padding, so it does not need the class). */
body:has(.dcr-page-solid) .dcr-page-solid { padding-top: 94px; }
@media (max-width: 600px) {
  body:has(.dcr-page-solid) .dcr-page-solid { padding-top: 78px; }
}

/* ---- Header : mobile ---------------------------------------------------- */
@media (max-width: 1024px) {
  .dcr-nav .elementor-nav-menu--dropdown,
  .dcr-nav nav.elementor-nav-menu--dropdown {
    background: var(--dcr-paper) !important;
    border-top: 1px solid var(--dcr-line);
  }
  .dcr-nav .elementor-nav-menu--dropdown a.elementor-item {
    color: var(--dcr-ink) !important;
    font-size: 14px !important;
    letter-spacing: .12em;
    padding: 16px 0 !important;
    border-bottom: 1px solid var(--dcr-line);
  }
}
@media (max-width: 600px) {
  .dcr-header-inner { min-height: 78px; }
  .dcr-header.elementor-sticky--effects .dcr-header-inner { min-height: 64px; }
  .dcr-logo img { width: 132px; }
}

/* ============================================================================
   FOOTER  (Elementor Footer template, root class .dcr-footer)
   ========================================================================== */
.dcr-footer {
  background: var(--dcr-forest);
  color: #fff;
  font-family: var(--dcr-sans);
}
.dcr-footer * { box-sizing: border-box; }

.dcr-footer-top,
.dcr-footer-top > .e-con-inner {
  max-width: var(--dcr-content-max);
  margin-inline: auto;
}
.dcr-footer-top > .e-con-inner {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 40px 80px;
}

/* Elementor drives container flex/size through CSS vars (.e-con.e-flex wins on
   specificity), so set those rather than the `flex` shorthand. */
.dcr-footer-brand {
  --flex-grow: 0; --flex-shrink: 1; --flex-basis: 300px; --width: auto;
  flex: 0 1 300px;
}
.dcr-footer-brand > .e-con-inner { align-items: flex-start; }
.dcr-footer-logo { text-align: left; }
.dcr-footer-logo img { width: 190px; height: auto; margin: 0; }
.dcr-footer-tag,
.dcr-footer-tag p,
.dcr-footer-tag .elementor-heading-title {
  margin: 16px 0 0;
  font: italic 400 22px/1.35 var(--dcr-serif);
  color: var(--dcr-coral);
}

.dcr-footer-cols {
  --flex-grow: 1; --flex-shrink: 1; --flex-basis: 420px; --width: auto;
  flex: 1 1 420px;
}
.dcr-footer-cols > .e-con-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 32px 64px;
}
.dcr-footer-col { flex: 0 1 auto; }

.dcr-footer-col { display: flex; flex-direction: column; gap: 12px; font-size: 14px; line-height: 1.5; }
.dcr-footer-col b,
.dcr-footer-col-h,
.dcr-footer-col-h .elementor-heading-title {
  margin: 0 0 8px;
  font: 600 9px/1.4 var(--dcr-sans);
  text-transform: uppercase;
  letter-spacing: .18em;
  color: var(--dcr-coral);
}
.dcr-footer-col a {
  color: rgba(255, 255, 255, .82);
  text-decoration: none;
  transition: color .2s;
}
.dcr-footer-col a:hover { color: #fff; }

.dcr-footer-menu .elementor-nav-menu { display: flex; flex-direction: column; gap: 12px; }
.dcr-footer-menu a.elementor-item {
  padding: 0 !important;
  font-size: 14px !important;
  color: rgba(255, 255, 255, .82) !important;
  background: transparent !important;
}
.dcr-footer-menu a.elementor-item:hover { color: #fff !important; }

.dcr-footer-signoff {
  max-width: var(--dcr-content-max);
  margin: 48px auto 0;
  padding-top: 28px;
  border-top: 1px solid rgba(255, 255, 255, .25);
  display: flex;
  justify-content: space-between;
  gap: 14px 40px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .13em;
  color: rgba(255, 255, 255, .55);
}
.dcr-footer-signoff p { margin: 0; }
.dcr-footer-signoff span { display: block; }
.dcr-footer-signoff a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.dcr-footer-signoff a:hover { color: rgba(255, 255, 255, .9); }

@media (max-width: 700px) {
  .dcr-footer-signoff { flex-direction: column; gap: 8px; }
}

/* ============================================================================
   404  (Elementor Error 404 template, root class .dcr-404)
   Also triggers the header's solid state (see body:has(.dcr-404) above).
   ========================================================================== */
.dcr-404 {
  max-width: var(--dcr-content-max);
  margin-inline: auto;
  min-height: 70vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  padding: clamp(120px, 18vh, 180px) var(--dcr-gutter) clamp(80px, 12vh, 120px);
  font-family: var(--dcr-sans);
  color: var(--dcr-ink);
}
.dcr-404 .kicker,
.dcr-404 .kicker p,
.dcr-404 .kicker .elementor-heading-title {
  margin: 0;
  font: 600 11px/1.3 var(--dcr-sans);
  text-transform: uppercase;
  letter-spacing: .22em;
  color: var(--dcr-coral);
}
.dcr-404-h,
.dcr-404-h .elementor-heading-title {
  margin: 16px 0 0;
  font: 400 clamp(44px, 6vw, 82px)/1 var(--dcr-serif);
  letter-spacing: -.03em;
  color: var(--dcr-forest);
}
.dcr-404-h em { font-style: italic; color: var(--dcr-coral); }
.dcr-404-p,
.dcr-404-p p {
  margin: 22px 0 0;
  max-width: 46ch;
  font-size: 15px;
  line-height: 1.7;
  color: var(--dcr-body);
}
.dcr-404-links { margin-top: 38px; display: flex; flex-wrap: wrap; gap: 12px 26px; }
.dcr-404-links a {
  font: 600 11px/1 var(--dcr-sans);
  text-transform: uppercase;
  letter-spacing: .16em;
  color: var(--dcr-ink);
  text-decoration: none;
  padding-bottom: 7px;
  border-bottom: 1px solid currentColor;
  transition: color .2s;
}
.dcr-404-links a:hover { color: var(--dcr-coral); }
