/* ═══════════════════════════════════════════════════════════════
   NOE base — Blue Sky Nonstop
   Every colour resolves through a token. A palette change is one
   :root block, not a hand-edit of 23 files.
   Palette locked 2026-07-24, applied 2026-08-10.
   ═══════════════════════════════════════════════════════════════ */

:root{
  /* ── blues ── */
  --noe-c-dark:      #12456e;  /* deep sky — footer, dark bands */
  --noe-c-dark2:     #1d5f92;  /* Logan blue — hover */
  --noe-c-dark3:     #2470a8;  /* card fills */
  --noe-c-cream:     #f3fafd;  /* cloud white */
  --noe-c-cream2:    #ffffff;
  --noe-c-sand:      #e2f1fa;  /* pale blue card fill */
  --noe-c-border:    #c6e1f0;

  /* ── pink. See THE PINK RULE below. ── */
  --noe-c-accentDeep:     #a3255a;  /* deep pink — ALL pink type */
  --noe-c-accent:         #cf3f76;  /* hot pink — rules, small marks only */
  --noe-c-accentPale:     #ffe7f0;  /* pale pink — ALL pink fills */
  --noe-c-accentPaleLine: #f3b0cd;
  --noe-c-onPale:         #8b3a5e;  /* body copy on a pale pink band */
  --noe-c-accentLight:    #ffb0cb;  /* blossom — pink type on navy */
  --noe-c-accentHero:     #ffdbe8;  /* hero italic accent word */

  /* ── pop ── */
  --noe-c-pop:       #f5b431;  /* sunshine — eyebrow rules */

  /* ── scorecard overall scale: worst → middle → best (mixed per score) ── */
  --noe-c-scoreLo:   #c8372d;  /* red */
  --noe-c-scoreMid:  #e3a902;  /* yellow */
  --noe-c-scoreHi:   #2c8a4b;  /* green */

  /* ── text ── */
  --noe-c-muted:      #547084;  /* secondary text ON LIGHT  (4.5:1+) */
  --noe-c-mutedOnDark:#a9cde6;  /* secondary text ON DARK   (4.5:1+) */

  /* ── type ── */
  --noe-serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --noe-sans:  'Jost', system-ui, -apple-system, 'Segoe UI', sans-serif;

  /* ── surfaces ── */
  --noe-hero: linear-gradient(168deg,var(--noe-c-dark2) 0%,var(--noe-c-dark) 100%);  /* Logan blue to deep sky. Was #2f83bd at the top, too light for hero text (2.4:1); option (c), 2026-10-09 */
  --noe-pad:  clamp(24px, 5vw, 72px);

  /* ── legacy aliases (ported components from the pre-v2 pages;
     these two were missing, so --noe-radius fell back to 0 (square
     corners on every ported card/box) and --noe-ink was silently
     relying on inheritance) ── */
  --noe-radius: 2px;
  --noe-seam: 3px;  /* signature tight grid gap; dropped in a port, so every gap:var(--noe-seam) grid rendered at 0 until 2026-10-09 */
  --noe-navy-deep: #0d3555;  /* footer copyright strip, one step below --noe-c-dark; was only defined on 404.html */
  --noe-copy: var(--noe-c-mutedOnDark);  /* copyright text on that strip */
  --noe-ink: var(--noe-c-dark);
}

/* ═══ THE PINK RULE (locked, Kyle 2026-07-24) ═══════════════════
   Pink appears either as dark-pink TYPE, or as a pale-pink FILL
   carrying dark-pink type. NEVER light text on a hot-pink block —
   including CTAs. --noe-c-accent (#cf3f76) is for hairlines and
   small marks only, never as a fill behind text.
   ═══════════════════════════════════════════════════════════════ */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--noe-c-cream);
  color:var(--noe-c-dark);
  font-family:var(--noe-sans);
  font-size:17px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:inherit}

/* ─────────── skip link (a11y) ─────────── */
.noe-skip{
  position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--noe-c-accentPale);color:var(--noe-c-accentDeep);
  padding:12px 20px;font-size:14px;font-weight:500;text-decoration:none;
}
.noe-skip:focus{left:8px;top:8px}

/* ═══════════════ HEADER ═══════════════
   Ported from the live site (Aug 2026) so the 23 existing pages keep their
   markup: dark navy bar, serif NOE wordmark, uppercase letterspaced Jost nav,
   on-dark dropdown. Two additions in v2: the brand mark sits beside the
   wordmark, and Plan Your Trip is a pale-pink button (.noe-hdr__cta).
   ═══════════════════════════════════════ */
.noe-hdr{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding:18px var(--noe-pad);
  background:var(--noe-c-dark);
  border-bottom:1px solid rgba(198,225,240,.14);
}
.noe-hdr a{text-decoration:none}
.noe-hdr__mark{
  display:flex;align-items:center;gap:11px;flex:0 0 auto;
  font-family:var(--noe-serif);font-size:24px;font-weight:400;
  letter-spacing:.06em;line-height:1;color:var(--noe-c-cream);
}
.noe-hdr__mark svg{flex:0 0 auto;display:block}

.noe-hdr__nav{display:flex;gap:30px;align-items:center}
.noe-hdr__nav > a,.noe-hdr__dd > button{
  position:relative;
  font-family:var(--noe-sans);font-size:12px;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;
  color:var(--noe-c-mutedOnDark);
  padding:4px 0;white-space:nowrap;
  background:none;border:0;cursor:pointer;
}
.noe-hdr__nav > a:hover,.noe-hdr__dd > button:hover,
.noe-hdr__nav a[aria-current="page"]{color:var(--noe-c-accentHero)}
.noe-hdr__nav a[aria-current="page"]::after{
  content:'';position:absolute;left:0;right:0;bottom:-2px;height:1px;
  background:var(--noe-c-accent);
}

/* Plan Your Trip. Pale-pink fill, deep-pink type: the only permitted pink
   button, same as .noe-btn--p. Never light type on hot pink. */
.noe-hdr__nav > a.noe-hdr__cta{
  padding:10px 18px;
  background:var(--noe-c-accentPale);
  color:var(--noe-c-accentDeep);
  border:1px solid var(--noe-c-accentPaleLine);
}
.noe-hdr__nav > a.noe-hdr__cta:hover{background:#ffd9e8;color:var(--noe-c-accentDeep)}
.noe-hdr__nav > a.noe-hdr__cta::after{display:none}

/* dropdown */
.noe-hdr__dd{position:relative}
.noe-hdr__dd > button::after{content:' \25BE'}
.noe-hdr__menu{
  display:none;position:absolute;top:calc(100% + 14px);left:50%;
  transform:translateX(-50%);min-width:262px;padding:10px 0;
  background:var(--noe-c-dark2);border:1px solid rgba(198,225,240,.18);
  box-shadow:0 18px 40px rgba(0,0,0,.32);
}
/* bridges the 14px gap so the menu does not close as the cursor crosses it */
.noe-hdr__menu::before{content:'';position:absolute;bottom:100%;left:0;right:0;height:16px}
.noe-hdr__dd:hover .noe-hdr__menu,
.noe-hdr__dd:focus-within .noe-hdr__menu,
.noe-hdr__dd[data-open="true"] .noe-hdr__menu{display:block}
.noe-hdr__menu a{
  display:block;font-family:var(--noe-sans);font-size:13px;font-weight:400;
  letter-spacing:.02em;text-transform:none;padding:9px 22px;
  color:var(--noe-c-border);
}
.noe-hdr__menu a:hover{color:var(--noe-c-cream);background:rgba(207,63,118,.16)}
.noe-hdr__menu a small{
  display:block;font-size:11px;letter-spacing:.04em;
  color:var(--noe-c-mutedOnDark);text-transform:none;
}

/* burger */
.noe-hdr__toggle{display:none;background:none;border:0;cursor:pointer;padding:8px;margin:-8px}
.noe-hdr__toggle span{
  display:block;width:22px;height:1.5px;margin:5px 0;
  background:var(--noe-c-cream);transition:transform .25s,opacity .25s;
}
.noe-hdr[data-open="true"] .noe-hdr__toggle span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.noe-hdr[data-open="true"] .noe-hdr__toggle span:nth-child(2){opacity:0}
.noe-hdr[data-open="true"] .noe-hdr__toggle span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}

@media(max-width:1180px){
  .noe-hdr{padding:16px 24px;flex-wrap:wrap}
  .noe-hdr__toggle{display:block}
  .noe-hdr__nav{display:none;flex-direction:column;gap:0;width:100%;align-items:stretch}
  .noe-hdr[data-open="true"] .noe-hdr__nav{
    display:flex;position:fixed;left:0;right:0;bottom:0;
    top:var(--noe-hdr-h,67px);
    padding:12px 24px 24px;margin:0;
    background:var(--noe-c-dark);
    overflow-y:auto;-webkit-overflow-scrolling:touch;
  }
  .noe-hdr__nav > a,.noe-hdr__dd > button{
    padding:14px 0;width:100%;text-align:left;
    border-top:1px solid rgba(198,225,240,.12);
  }
  .noe-hdr__nav > a.noe-hdr__cta{
    margin-top:12px;padding:14px 18px;text-align:center;border:1px solid var(--noe-c-accentPaleLine);
  }
  .noe-hdr__menu{
    display:block;position:static;transform:none;min-width:0;
    background:transparent;border:0;box-shadow:none;padding:0 0 0 12px;
  }
  .noe-hdr__menu::before{display:none}
  .noe-hdr__menu a{padding:8px 0}
}

/* ═══════════════ SECTIONS ═══════════════ */
.noe-section{padding:clamp(52px,7vw,88px) var(--noe-pad)}
.noe-section--cream{background:var(--noe-c-cream)}
.noe-section--white{background:var(--noe-c-cream2)}
.noe-section--sand {background:var(--noe-c-sand)}
.noe-section--navy {background:var(--noe-c-dark);color:var(--noe-c-cream)}
.noe-section--pale {background:var(--noe-c-accentPale);color:var(--noe-c-onPale)}
.noe-inner{max-width:1180px;margin:0 auto}
.noe-article{max-width:74ch;margin:0 auto}

/* ── eyebrow ── */
.noe-eyebrow{
  display:flex;align-items:center;gap:12px;
  font-size:11px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;
  color:var(--noe-c-muted);margin-bottom:18px;
}
.noe-eyebrow::before{content:'';width:30px;height:1px;background:var(--noe-c-pop);flex:0 0 auto}
.noe-eyebrow--onDark{color:var(--noe-c-accentLight)}
.noe-eyebrow--onPale{color:var(--noe-c-accentDeep)}

/* ── headings ── */
.noe-h1{font-family:var(--noe-serif);font-weight:300;font-size:clamp(40px,6.2vw,72px);
  line-height:1.15;letter-spacing:-.012em;margin:0 0 20px}
.noe-h2{font-family:var(--noe-serif);font-weight:300;font-size:clamp(30px,3.9vw,44px);
  line-height:1.25;margin:0 0 16px}
.noe-h3{font-family:var(--noe-serif);font-weight:400;font-size:clamp(21px,2.2vw,27px);
  line-height:1.3;margin:0 0 10px}
.noe-h1 em,.noe-h2 em{font-style:italic}
.noe-section--navy .noe-h1 em,.noe-section--navy .noe-h2 em{color:var(--noe-c-accentHero)}
.noe-lead{font-size:clamp(17px,1.6vw,19px);line-height:1.8;color:var(--noe-c-muted);
  max-width:62ch;margin:0 0 26px}
.noe-section--navy .noe-lead{color:var(--noe-c-mutedOnDark)}
.noe-section--pale .noe-lead{color:var(--noe-c-onPale)}

/* ═══════════════ BUTTONS ═══════════════
   Primary is a PALE PINK fill with DEEP PINK type. This is the
   feed pill, and it is the only permitted pink button. */
.noe-btn{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--noe-sans);font-size:15px;font-weight:500;letter-spacing:.01em;
  padding:14px 26px;text-decoration:none;border:1px solid transparent;cursor:pointer;
  transition:background .18s,border-color .18s,transform .18s;
}
.noe-btn:hover{transform:translateY(-1px)}
.noe-btn--p{background:var(--noe-c-accentPale);color:var(--noe-c-accentDeep);
  border-color:var(--noe-c-accentPaleLine)}
.noe-btn--p:hover{background:#ffd9e8}
.noe-btn--dark{background:var(--noe-c-dark);color:var(--noe-c-cream);border-color:var(--noe-c-dark)}
.noe-btn--dark:hover{background:var(--noe-c-dark2);border-color:var(--noe-c-dark2)}
.noe-btn--ghost{background:transparent;color:var(--noe-c-cream);border-color:rgba(255,255,255,.45)}
.noe-btn--ghost:hover{background:rgba(255,255,255,.10);border-color:#fff}
.noe-btn--ghostDark{background:transparent;color:var(--noe-c-dark);border-color:var(--noe-c-border)}
.noe-btn--ghostDark:hover{background:var(--noe-c-sand)}
.noe-btn__arrow{font-size:15px;line-height:1}

/* ═══════════════ HERO ═══════════════ */
.noe-hero{background:var(--noe-hero);color:#fff;position:relative;overflow:hidden}
.noe-hero__grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(32px,5vw,64px);
  align-items:center;max-width:1180px;margin:0 auto;
  padding:clamp(56px,7vw,92px) var(--noe-pad)}
.noe-hero .noe-h1{color:#fff}
/* the hero is a gradient, not .noe-section--navy — it needs the on-dark muted token
   explicitly or the lead paragraph renders slate-on-blue and is unreadable */
.noe-hero .noe-lead{color:var(--noe-c-cream)}
.noe-hero .noe-h1 em{color:var(--noe-c-accentHero)}
.noe-hero__actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px}
.noe-hero__note{margin:26px 0 0;font-size:13.5px;color:var(--noe-c-cream);line-height:1.7}
.noe-hero__media{position:relative}
.noe-hero__ph{
  aspect-ratio:4/5;width:100%;
  background:linear-gradient(150deg,#3f92c8,#1d5f92 60%,#0f3a5e);
  border:1px solid rgba(255,255,255,.16);
  display:flex;align-items:flex-end;padding:22px;
}
.noe-hero__cap{font-size:12px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--noe-c-mutedOnDark)}
@media(max-width:880px){
  .noe-hero__grid{grid-template-columns:1fr}
  .noe-hero__media{display:none}
}

/* ── split hero (home page). Matches the production layout: copy on a navy
   gradient at left, photograph bleeding to the right edge at full height,
   caption over the bottom-left of the image. ── */
/* column split and aspect are tuned together: the media column is held at 4/3,
   the native ratio of the hero photography, so object-fit crops nothing and the
   browser downsamples rather than upscaling. A squarer column was cropping ~25%
   off the sides and then enlarging what was left, which read as grain. */
.noe-hero--split{
  display:grid;grid-template-columns:.93fr 1.07fr;align-items:stretch;padding:0;
  /* The hero height is fixed rather than driven by the copy. At these
     proportions the media column lands near 1.28:1 against 4:3 source
     photography, so under 5% is cropped and the browser never enlarges. */
  min-height:clamp(480px,41vw,600px);
}
.noe-hero--split .noe-h1{font-size:clamp(34px,4.5vw,58px)}
.noe-hero--split .noe-lead{font-size:16.5px;line-height:1.7;margin-bottom:22px}
.noe-hero--split .noe-hero__copy{max-width:none;
  display:flex;flex-direction:column;justify-content:center;
  padding:clamp(36px,3.6vw,50px) clamp(24px,4.4vw,64px);
}
.noe-hero--split .noe-hero__media{position:relative;min-height:280px}
.noe-hero--split .noe-hero__media img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;object-position:center center;display:block;
}
.noe-hero--split .noe-hero__cap{
  position:absolute;left:24px;right:24px;bottom:18px;z-index:2;
  font-family:var(--noe-serif);font-style:italic;font-size:15px;letter-spacing:.01em;
  text-transform:none;color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.55);
}
/* keeps the caption legible over a bright sky without tinting the whole photo */
.noe-hero--split .noe-hero__media::after{
  content:'';position:absolute;inset:auto 0 0 0;height:34%;z-index:1;
  background:linear-gradient(to top,rgba(10,38,62,.62),rgba(10,38,62,0));
}
/* stack early: below ~1120px the copy column forces the media tall and narrow,
   which crops a third off the photo and enlarges what is left */
@media(max-width:1200px){
  .noe-hero--split{grid-template-columns:1fr;min-height:0}
  /* stacked: let the photo run at its natural ratio. Nothing is cropped and
     there is no letterbox from the desktop min-height. */
  .noe-hero--split .noe-hero__media{display:block;order:2;min-height:0}
  .noe-hero--split .noe-hero__media img{position:static;width:100%;height:auto}
  .noe-hero--split .noe-hero__media::after{height:26%}
}

/* ═══════════════ STAT STRIP ═══════════════ */
.noe-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:var(--noe-c-border);border-block:1px solid var(--noe-c-border)}
.noe-stat{background:var(--noe-c-cream2);padding:26px 22px;text-align:center}
.noe-stat__n{font-family:var(--noe-serif);font-size:clamp(30px,3.4vw,40px);
  font-weight:300;line-height:1;color:var(--noe-c-dark);display:block}
.noe-stat__l{font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--noe-c-muted);margin-top:9px;display:block;line-height:1.5}
@media(max-width:700px){.noe-stats{grid-template-columns:repeat(2,1fr)}}

/* ═══════════════ CARDS ═══════════════ */
.noe-grid{display:grid;gap:3px}
.noe-grid--2{grid-template-columns:repeat(2,1fr)}
.noe-grid--3{grid-template-columns:repeat(3,1fr)}
.noe-grid--4{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.noe-grid--3,.noe-grid--4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.noe-grid--2,.noe-grid--3,.noe-grid--4{grid-template-columns:1fr}}

.noe-card{
  position:relative;display:block;text-decoration:none;
  background:var(--noe-c-cream2);border:1px solid var(--noe-c-border);
  padding:30px 30px 34px;transition:border-color .18s,transform .18s;
}
.noe-card:hover{border-color:var(--noe-c-dark3);transform:translateY(-2px)}
.noe-card__cat{font-size:10.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  color:var(--noe-c-accentDeep);margin-bottom:11px}
.noe-card__t{font-family:var(--noe-serif);font-size:25px;font-weight:400;line-height:1.3;
  color:var(--noe-c-dark);margin-bottom:9px}
.noe-card__d{font-size:14.5px;line-height:1.75;color:var(--noe-c-muted);margin:0}
.noe-card__arrow{position:absolute;top:28px;right:28px;color:var(--noe-c-muted);
  font-size:17px;transition:color .18s,transform .18s}
.noe-card:hover .noe-card__arrow{color:var(--noe-c-accentDeep);transform:translate(2px,-2px)}
.noe-card--full{grid-column:1/-1}

/* Flight search card — the affiliate blurb and the live Skyscanner widget
   share one surface, so the widget reads as part of the card's content
   rather than a second box bolted on underneath. No hover-lift on the
   outer card since it holds a form, not a single link.
   .noe-tours-card is the same treatment for the GetYourGuide city widget —
   both share these rules so the two live-widget cards read as one family. */
.noe-flight-card,.noe-tours-card{
  grid-column:1/-1;background:var(--noe-c-cream2);border:1px solid var(--noe-c-border);
  padding:36px 38px 40px;
}
.noe-flight-card__top,.noe-tours-card__top{display:block;text-decoration:none;color:inherit}
.noe-flight-card__widget,.noe-tours-card__widget{margin-top:32px;padding-top:30px;border-top:1px solid var(--noe-c-border)}
.noe-flight-card__eyebrow,.noe-tours-card__eyebrow{font-size:10.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  color:var(--noe-c-accentDeep);margin-bottom:18px}
/* The GYG widget is a fixed-chrome iframe (its own font/colors/pill button) —
   cap its width so it never outgrows the card's own generous padding rhythm
   on very wide screens, the same restraint as the rest of the grid. */
.noe-tours-card__widget [data-gyg-widget]{max-width:760px}
/* De-badge the icon inside these two cards only — .noe-card__icon's pink-tinted
   square (below) reads as an ad unit at this frequency (one per guide, right next
   to a live search tool). A plain small glyph is calmer. Scoped so every other
   .noe-card__icon on the site is untouched. */
.noe-flight-card .noe-card__icon,.noe-tours-card .noe-card__icon{
  width:auto;height:auto;background:none;border:0;border-radius:0;margin-bottom:10px;color:var(--noe-c-dark3);
}

.noe-pill{display:inline-block;font-size:10.5px;letter-spacing:.08em;
  color:var(--noe-c-dark);background:var(--noe-c-sand);
  border:1px solid var(--noe-c-border);padding:4px 11px;margin:14px 5px 0 0}

/* ═══════════ TRIP KIT — plain resource list ═══════════
   Replaces the boxed-card treatment for simple affiliate links (Booking.com,
   Airbnb, Airalo, SafetyWing, etc.) — the ones that are just a link, not a
   live tool. Modelled on how the most-trusted travel-affiliate publishers
   (e.g. Nomadic Matt's Travel Resources page) present recommendations: a
   name you can click, one honest line of why, no boxes, no icon badges, no
   coupon-style chips. A discount code reads as a normal word in the
   sentence, colored like any other emphasis. */
.noe-kit{border-top:1px solid var(--noe-c-border);margin-top:28px}
.noe-kit__row{
  display:flex;gap:20px;align-items:flex-start;text-decoration:none;
  padding:26px 4px;border-bottom:1px solid var(--noe-c-border);
  transition:background-color .18s;
}
.noe-kit__row:hover{background:var(--noe-c-cream)}
.noe-kit__icon{flex:0 0 auto;width:22px;height:22px;margin-top:5px;color:var(--noe-c-dark3)}
.noe-kit__body{flex:1;min-width:0}
.noe-kit__head{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 10px;margin-bottom:6px}
.noe-kit__link{font-family:var(--noe-serif);font-size:21px;font-weight:500;color:var(--noe-c-dark)}
.noe-kit__row:hover .noe-kit__link{color:var(--noe-c-dark2)}
.noe-kit__via{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--noe-c-muted);white-space:nowrap}
.noe-kit__desc{font-size:15.5px;line-height:1.7;color:var(--noe-c-muted);margin:0;max-width:640px}
.noe-kit__code{color:var(--noe-c-accentDeep);font-weight:500}
.noe-kit__go{flex:0 0 auto;align-self:center;color:var(--noe-c-border);font-size:18px;transition:color .18s,transform .18s}
.noe-kit__row:hover .noe-kit__go{color:var(--noe-c-accentDeep);transform:translateX(3px)}
@media(max-width:560px){.noe-kit__row{gap:14px}.noe-kit__go{display:none}}

/* Travel-insurance quote — SafetyWing's price widget, sitting inside the kit
   row that recommends it. The row holds form controls, so it's a <div> with
   the name as the link, and no hover wash. The widget's own teal/yellow chrome
   lives in a shadow root and is re-themed by /assets/noe-quote.js; these rules
   only frame it. Light-DOM children of the host are the no-JS fallback — the
   shadow root hides them once the widget renders. */
.noe-kit__row--quote:hover{background:none}
a.noe-kit__link{text-decoration:none;transition:color .18s}
a.noe-kit__link:hover{color:var(--noe-c-accentDeep)}
.noe-quote{margin-top:20px;max-width:640px}
.noe-quote__label{font-size:10.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  color:var(--noe-c-accentDeep);margin-bottom:12px}
.noe-quote__widget{min-height:246px;transition:opacity .25s}
.noe-quote__widget.is-loading{opacity:0}
.noe-quote__fallback{font-size:15px;color:var(--noe-c-dark2)}
.noe-quote__note{font-size:12.5px;line-height:1.6;color:var(--noe-c-muted);margin:10px 0 0}
@media(max-width:600px){.noe-quote__widget{min-height:388px}}
/* Plan-your-trip: the same quote as a full-width card with copy beside it. */
.noe-quote-card{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:40px;
  align-items:start;background:var(--noe-c-cream2);border:1px solid var(--noe-c-border);padding:36px 38px 38px}
.noe-quote-card .noe-quote{margin-top:4px;max-width:none}
@media(max-width:860px){.noe-quote-card{grid-template-columns:1fr;gap:18px;padding:30px 26px 32px}}

/* ═══════════════ ROUTE TABLE ═══════════════ */
.noe-routes{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}
@media(max-width:980px){.noe-routes{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.noe-routes{grid-template-columns:1fr}}
.noe-routes__col{background:var(--noe-c-cream2);border:1px solid var(--noe-c-border);padding:24px 26px}
.noe-routes__h{font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  color:var(--noe-c-accentDeep);margin-bottom:14px}
.noe-routes__list{list-style:none;margin:0;padding:0}
.noe-routes__list li{padding:9px 0;border-top:1px solid var(--noe-c-cream)}
.noe-routes__list li:first-child{border-top:0}
.noe-routes__list b{display:block;font-family:var(--noe-serif);font-size:19px;font-weight:400;
  color:var(--noe-c-dark);line-height:1.2}
.noe-routes__list span{display:block;font-size:12px;color:var(--noe-c-muted);
  line-height:1.5;margin-top:2px}
.noe-verified{font-size:12.5px;color:var(--noe-c-muted);font-style:italic;margin:20px 0 0}

/* ═══════════════ EMAIL CAPTURE ═══════════════ */
.noe-capture{background:var(--noe-c-accentPale);border:1px solid var(--noe-c-accentPaleLine);
  padding:clamp(32px,4.5vw,52px)}
.noe-capture .noe-h2{color:var(--noe-c-accentDeep)}
.noe-capture p{color:var(--noe-c-onPale);max-width:60ch}
.noe-form{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px;max-width:520px}
.noe-form input[type=email]{
  flex:1 1 240px;font-family:var(--noe-sans);font-size:15px;padding:14px 16px;
  border:1px solid var(--noe-c-accentPaleLine);background:#fff;color:var(--noe-c-dark);
}
.noe-form input[type=email]::placeholder{color:#b08099}
.noe-form input[type=email]:focus{outline:2px solid var(--noe-c-accentDeep);outline-offset:1px}
.noe-form__note{font-size:12.5px;color:var(--noe-c-onPale);margin:12px 0 0}

/* ═══════════════ DISCLOSURE ═══════════════ */
.noe-disclosure{
  font-size:13px;line-height:1.7;color:var(--noe-c-onPale);
  background:var(--noe-c-accentPale);border-left:2px solid var(--noe-c-accentPaleLine);
  padding:14px 20px;margin:24px 0 32px;max-width:78ch;
}
.noe-disclosure:first-child{margin-top:0}

/* ═══════════════ PRICING ═══════════════ */
.noe-tiers{display:grid;grid-template-columns:repeat(2,1fr);gap:3px}
@media(max-width:820px){.noe-tiers{grid-template-columns:1fr}}
.noe-tier{background:var(--noe-c-cream2);border:1px solid var(--noe-c-border);padding:36px 34px 40px;
  display:flex;flex-direction:column}
.noe-tier--feature{border-color:var(--noe-c-accentPaleLine);background:#fffdfe}
.noe-tier__n{font-family:var(--noe-serif);font-size:27px;font-weight:400;margin-bottom:6px}
.noe-tier__p{font-family:var(--noe-serif);font-size:52px;font-weight:300;line-height:1;
  color:var(--noe-c-dark);margin:10px 0 4px}
.noe-tier__p small{font-family:var(--noe-sans);font-size:13px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--noe-c-muted);display:block;margin-top:10px}
.noe-tier ul{list-style:none;margin:22px 0 28px;padding:0}
.noe-tier li{position:relative;padding:9px 0 9px 26px;font-size:15px;line-height:1.65;
  border-top:1px solid var(--noe-c-cream)}
.noe-tier li:first-child{border-top:0}
.noe-tier li::before{content:'';position:absolute;left:2px;top:17px;width:9px;height:9px;
  border-radius:50%;background:var(--noe-c-accentLight)}
.noe-tier .noe-btn{margin-top:auto;justify-content:center}

/* ═══════════════ FAQ ═══════════════ */
.noe-faq{border-top:1px solid var(--noe-c-border);max-width:78ch}
.noe-faq__q{border-bottom:1px solid var(--noe-c-border);padding:22px 0}
.noe-faq__q h3{font-family:var(--noe-serif);font-size:22px;font-weight:400;margin:0 0 8px;
  color:var(--noe-c-dark)}
.noe-faq__q p{margin:0;font-size:15.5px;line-height:1.8;color:var(--noe-c-muted)}

/* ═══════════════ SCORECARD (direct-from-boston-*-scorecard) ═══════════════
   One row per category: name + score on top, a bar, then our reasoning.
   Set the bar with style="--s:9.5" (score out of 10). */
.noe-score{border-top:1px solid var(--noe-c-border);max-width:78ch;margin-top:28px}
.noe-score__row{border-bottom:1px solid var(--noe-c-border);padding:22px 0}
.noe-score__head{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.noe-score__head h3{font-family:var(--noe-serif);font-size:24px;font-weight:400;margin:0;
  color:var(--noe-c-dark)}
.noe-score__num{font-family:var(--noe-serif);font-size:30px;font-weight:500;line-height:1;
  color:var(--noe-c-dark);white-space:nowrap;font-variant-numeric:lining-nums}
.noe-score__num small{font-family:var(--noe-sans);font-size:14px;font-weight:400;
  color:var(--noe-c-muted);margin-left:2px}
.noe-score__bar{height:6px;border-radius:3px;background:var(--noe-c-sand);margin:12px 0 12px;
  overflow:hidden}
.noe-score__bar span{display:block;height:100%;width:calc(var(--s,0) * 10%);
  background:var(--noe-c-dark2);border-radius:3px}
.noe-score__row p{margin:0;font-size:15.5px;line-height:1.8;color:var(--noe-c-muted)}
/* Overall: --sc is set per page from the red-yellow-green scale (scripts/scorecards.js). */
.noe-score__row--verdict{--sc:var(--noe-c-scoreMid);border-bottom:0;padding:22px 22px 24px;margin-top:-1px;
  background:color-mix(in srgb,var(--sc) 14%,#fff);border-left:4px solid var(--sc)}
.noe-score__row--verdict h3,.noe-score__row--verdict .noe-score__num{color:color-mix(in srgb,var(--sc),#000 55%)}
.noe-score__row--verdict .noe-score__num small,.noe-score__row--verdict p{color:color-mix(in srgb,var(--sc),#000 62%)}
.noe-score__row--verdict .noe-score__bar{background:var(--noe-c-cream2)}
.noe-score__row--verdict .noe-score__bar span{background:var(--sc)}
.noe-score__photos{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:34px}
.noe-score__photos figure{margin:0}
.noe-score__photos img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--noe-radius)}
.noe-score__photos figcaption{font-family:var(--noe-serif);font-style:italic;font-size:15px;
  color:var(--noe-c-muted);margin-top:8px}
@media(max-width:700px){.noe-score__photos{grid-template-columns:1fr 1fr}.noe-score__photos figure:last-child{display:none}}
.dx-card__ov{--sc:var(--noe-c-scoreMid);color:color-mix(in srgb,var(--sc) 45%,#fff);font-weight:500} /* 45% keeps every score tint at 4.5:1+ on the dark card (70% fell to 3.2:1 for red) */
.noe-score__story,.noe-score__note{max-width:78ch;margin:22px 0 0;padding:18px 22px;
  font-size:16px;line-height:1.8}
.noe-score__story{background:var(--noe-c-sand);border-left:3px solid var(--noe-c-pop);color:var(--noe-c-dark)}
.noe-score__note{background:var(--noe-c-accentPale);color:var(--noe-c-accentDeep);font-weight:500}

/* ═══════════════ FOOTER ═══════════════ */
.noe-ftr{background:var(--noe-c-dark);color:var(--noe-c-mutedOnDark);
  padding:clamp(44px,5vw,64px) var(--noe-pad) 30px}
.noe-ftr__grid{max-width:1180px;margin:0 auto;display:grid;
  grid-template-columns:2fr 1fr 1fr 1fr;gap:36px}
@media(max-width:860px){.noe-ftr__grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.noe-ftr__grid{grid-template-columns:1fr}}
.noe-ftr__mark{font-family:var(--noe-serif);font-size:23px;color:#fff;margin:0 0 12px;display:block}
.noe-ftr p{font-size:14px;line-height:1.8;max-width:42ch;margin:0}
.noe-ftr h3,.noe-ftr h4{font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--noe-c-accentLight);margin:0 0 14px;font-weight:500}
.noe-ftr a{display:block;font-size:14px;color:var(--noe-c-mutedOnDark);
  text-decoration:none;margin-bottom:8px}
.noe-ftr a:hover{color:#fff}
.noe-ftr__base{max-width:1180px;margin:34px auto 0;padding-top:22px;
  border-top:1px solid rgba(169,205,230,.22);
  display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;
  font-size:12px;letter-spacing:.03em}

/* ═══════════════ UTIL ═══════════════ */
.noe-mt0{margin-top:0}.noe-mb0{margin-bottom:0}
.noe-center{text-align:center}
.noe-narrow{max-width:70ch}
:focus-visible{outline:2px solid var(--noe-c-accentDeep);outline-offset:2px}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .noe-btn:hover,.noe-card:hover{transform:none}
}


/* ═══════════════ LEGACY COMPONENT LAYER ═══════════════
   Carried over from the 21 pre-v2 pages when their inline CSS was
   consolidated here (370 KB of duplicated <style> across 21 files, now
   one 22 KB cached stylesheet). The old palette used different token
   NAMES for identical hex VALUES, so those names are aliased to the v2
   tokens below and the component CSS is carried verbatim. A palette
   change is still one :root block.
   Rules that collide with a v2 component were dropped: v2 wins.
   ═══════════════════════════════════════════════════════ */
:root{
  --noe-navy:var(--noe-c-dark);
  --noe-navy-2:var(--noe-c-dark2);
  --noe-dark3:var(--noe-c-dark3);
  --noe-cream:var(--noe-c-cream);
  --noe-cream-2:var(--noe-c-cream2);
  --noe-taupe:var(--noe-c-sand);
  --noe-border:var(--noe-c-border);
  --noe-accentDeep:var(--noe-c-accentDeep);
  --noe-accent:var(--noe-c-accent);
  --noe-accentPale:var(--noe-c-accentPale);
  --noe-accentPaleLine:var(--noe-c-accentPaleLine);
  --noe-onPale:var(--noe-c-onPale);
  --noe-mutedOnDark:var(--noe-c-mutedOnDark);
  --noe-accentSoft:var(--noe-c-accentHero);
  --noe-muted:var(--noe-c-muted);
  --noe-pop:var(--noe-c-pop);
  --noe-sage:var(--noe-c-accentDeep);
  --noe-sage-light:var(--noe-c-accentHero);
}

.noe-block{display:block;width:100%;margin:0;padding:0;font-family:var(--noe-sans);line-height:1;}
.noe-eyebrow--on-dark{color:var(--noe-sage-light);}
.noe-body{font-family:var(--noe-sans);font-size:16px;font-weight:400;color:var(--noe-ink);line-height:1.85;}

/* ═══════════════ TYPE SCALE — guide/article prose ═══════════════
   Exactly three prose sizes on this site. Don't add a fourth, and never
   hand-write font-size/line-height on a one-off <p style="...">.
     1. Body copy   — plain <p> inside .noe-article/.dg-*, inherits body{}
                       (17px/1.75). No class, no override, ever.
     2. .noe-text-sm — supporting detail inside a card or aside (15px).
     3. .noe-text-xs — fine print: source notes, costnotes, link lines,
                        the FTC disclosure (13px).
   Full rationale: 01-process-skills/noe-web-builder/references/design-system.md
   ═══════════════════════════════════════════════════════════════ */
.noe-text-sm{font-size:15px;line-height:1.75;}
.noe-text-xs{font-size:13px;line-height:1.65;}
.noe-muted{color:var(--noe-muted);}
.noe-ink{color:var(--noe-ink);}

/* Editorial aside, same reading size as body copy — NOT .noe-disclosure,
   which is reserved for the small-print FTC affiliate notice. Use this
   for "honest note in our own voice" callouts and similar asides. */
.noe-callout{
  font-family:var(--noe-sans);font-size:16px;line-height:1.8;color:var(--noe-ink);
  background:#fff;border-left:2px solid var(--noe-muted);
  padding:20px 24px;margin:24px 0 32px;max-width:78ch;
}
.noe-callout strong{color:var(--noe-navy);}

/* Prose inside a bordered .dg-base card: one consistent small size,
   no per-paragraph inline font-size. */
.dg-base p{font-family:var(--noe-sans);font-size:15px;color:var(--noe-ink);line-height:1.75;margin:0;}
.dg-base p+p{margin-top:14px;}

.noe-inlinks{font-family:var(--noe-sans);font-size:15px;color:var(--noe-muted);}
.noe-inlinks a{color:var(--noe-sage);}
.noe-btn--primary{color:#fff;background:var(--noe-sage);}
.noe-btn--primary:hover{opacity:.85;}
.noe-section--cream2{background:var(--noe-cream-2);}
.noe-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--noe-seam);width:100%;}
.noe-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--noe-seam);width:100%;}
.noe-card__icon{width:54px;height:54px;border:1px solid var(--noe-sage-light);background:rgba(207,63,118,.08);border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;color:var(--noe-sage);}
.noe-card__title{font-family:var(--noe-serif);font-size:26px;font-weight:400;color:var(--noe-navy);margin-bottom:10px;line-height:1.3;}
.noe-card__desc{font-family:var(--noe-sans);font-size:15px;color:var(--noe-muted);line-height:1.7;margin-bottom:20px;}
@media (max-width:768px){.noe-grid-2,.noe-grid-3{grid-template-columns:1fr;}}
.noe-ftr-copy{padding:18px 72px;background:var(--noe-navy-deep);font-family:'Jost',system-ui,sans-serif;font-size:11px;letter-spacing:.04em;color:var(--noe-copy);}
@media (max-width:768px){.noe-ftr-copy{padding:18px 24px;}}
/* full-width handled natively on Cloudflare */
.noe-block{width:100%;max-width:none;margin:0;}
/* ── destination guide page ── */
.dg-crumb{font-family:var(--noe-sans);font-size:11px;letter-spacing:0.14em;text-transform:uppercase;color:var(--noe-muted);margin-bottom:22px;}
.dg-crumb a{color:var(--noe-muted);text-decoration:none;}
.dg-byline{font-family:var(--noe-sans);font-size:13px;color:var(--noe-muted);margin-top:24px;}
.dg-facts{display:flex;flex-wrap:wrap;border:1px solid var(--noe-border);border-radius:var(--noe-radius);background:#fff;max-width:820px;margin:30px 0 8px;}
.dg-facts__item{flex:1;min-width:130px;text-align:center;padding:20px 14px;border-right:1px solid var(--noe-border);}
.dg-facts__item:last-child{border-right:none;}
.dg-facts__v{font-family:var(--noe-serif);font-size:23px;color:var(--noe-navy);display:block;line-height:1.1;}
.dg-facts__k{font-family:var(--noe-sans);font-size:10px;letter-spacing:0.16em;text-transform:uppercase;color:var(--noe-muted);margin-top:6px;display:block;}
/* home-base + spokes */
.dg-base{background:#fff;border:1px solid var(--noe-border);border-radius:var(--noe-radius);padding:32px 36px;margin:28px 0 0;max-width:820px;}
.dg-base__label{font-family:var(--noe-sans);font-size:10px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--noe-sage);margin-bottom:8px;}
.dg-spokes{list-style:none;padding:0;margin:18px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:14px 28px;}
.dg-spokes li{font-family:var(--noe-sans);font-size:15px;color:var(--noe-ink);line-height:1.5;padding-left:18px;position:relative;}
.dg-spokes li::before{content:'→';position:absolute;left:0;color:var(--noe-sage);}
.dg-spokes strong{color:var(--noe-navy);font-weight:500;}
/* day-trip cards */
.dg-trips{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--noe-seam);margin-top:36px;}
.dg-trip{background:#fff;border:1px solid var(--noe-border);padding:28px 30px;}
.dg-trip__d{font-family:var(--noe-sans);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--noe-sage);margin-bottom:8px;}
.dg-trip__t{font-family:var(--noe-serif);font-size:24px;color:var(--noe-navy);line-height:1.3;margin-bottom:10px;}
.dg-trip__x{font-family:var(--noe-sans);font-size:14px;color:var(--noe-muted);line-height:1.7;}
/* cost module */
.dg-cost{max-width:820px;}
.dg-cost__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--noe-seam);margin-top:28px;}
.dg-cost__card{background:#fff;border:1px solid var(--noe-border);padding:30px 32px;}
.dg-cost__tag{font-family:var(--noe-sans);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--noe-sage);margin-bottom:6px;}
.dg-cost__big{font-family:var(--noe-serif);font-size:34px;color:var(--noe-navy);line-height:1;margin-bottom:4px;}
.dg-cost__sub{font-family:var(--noe-sans);font-size:13px;color:var(--noe-muted);margin-bottom:18px;}
.dg-cost__row{display:flex;justify-content:space-between;gap:12px;font-family:var(--noe-sans);font-size:14px;color:var(--noe-ink);padding:7px 0;border-top:1px solid #ece6db;}
.dg-cost__row span:last-child{color:var(--noe-navy);white-space:nowrap;}
.dg-scale{background:var(--noe-taupe);border:1px solid var(--noe-border);border-radius:var(--noe-radius);padding:26px 30px;margin-top:var(--noe-seam);}
.dg-scale h3{font-family:var(--noe-serif);font-weight:400;font-size:22px;color:var(--noe-navy);margin:0 0 8px;}
.dg-scale p{font-family:var(--noe-sans);font-size:15px;color:var(--noe-ink);line-height:1.75;margin:0 0 10px;}
.dg-scale p:last-child{margin-bottom:0;}
.dg-costnote{font-family:var(--noe-sans);font-size:12px;color:var(--noe-muted);line-height:1.6;margin-top:14px;max-width:820px;font-style:italic;}
/* gear banner */
.dg-gear{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:center;background:var(--noe-navy);border-radius:var(--noe-radius);padding:40px 48px;}
.dg-gear__t{font-family:var(--noe-serif);font-weight:300;font-size:32px;color:var(--noe-cream);line-height:1.25;margin:0 0 8px;}
.dg-gear__d{font-family:var(--noe-sans);font-size:15px;color:var(--noe-border);line-height:1.7;margin:0;max-width:60ch;}
/* book cross-link */
.dg-bookcta{display:grid;grid-template-columns:120px 1fr auto;gap:28px;align-items:center;background:var(--noe-taupe);border:1px solid var(--noe-border);border-radius:var(--noe-radius);padding:26px 32px;}
.dg-bookcta__t{font-family:var(--noe-serif);font-size:24px;color:var(--noe-navy);line-height:1.25;}
.dg-bookcta__d{font-family:var(--noe-sans);font-size:14px;color:var(--noe-muted);line-height:1.6;margin-top:6px;}

/* ── destination-page split hero: copy left, framed photo right, above the
   fold, nothing cropped. Photo is capped by max-height so a tall portrait
   original never forces a scroll before the reader sees the headline. ── */
.dg-hero-split{
  display:grid;grid-template-columns:1.05fr .95fr;align-items:center;
  gap:clamp(28px,4.5vw,64px);
  padding:clamp(40px,6vw,72px) var(--noe-pad);
}
.dg-hero-split__copy{max-width:560px;}
.dg-hero-split__media{display:flex;align-items:center;justify-content:center;min-width:0;}
.dg-hero-split__media img{
  width:auto;max-width:100%;height:auto;
  max-height:clamp(300px,36vw,440px);
  object-fit:contain;display:block;
  border:1px solid var(--noe-border);border-radius:var(--noe-radius);
  background:linear-gradient(150deg,var(--noe-navy-2),var(--noe-navy));
}
@media(max-width:900px){
  .dg-hero-split{grid-template-columns:1fr;padding:clamp(32px,7vw,48px) var(--noe-pad);}
  .dg-hero-split__media{order:2;margin-top:20px;}
  .dg-hero-split__media img{max-height:320px;}
  .dg-hero-split__copy{max-width:none;}
}

.dg-ph{position:relative;background:linear-gradient(150deg,var(--noe-navy-2),var(--noe-navy));border:1px solid var(--noe-border);border-radius:var(--noe-radius);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.dg-ph::after{content:attr(data-label);font-family:var(--noe-sans);font-size:11px;letter-spacing:0.16em;text-transform:uppercase;color:var(--noe-sage-light);padding:0 16px;text-align:center;line-height:1.5;}
.dg-ph.is-ph::before{content:'Add photo';position:absolute;top:12px;right:12px;z-index:2;font-family:var(--noe-sans);font-size:8px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--noe-sage);border:1px solid rgba(207,63,118,.4);border-radius:1px;padding:2px 7px;}
.dg-hero-img{aspect-ratio:21/9;margin:0;}
.dg-spread{aspect-ratio:3/4;}
@media (max-width:768px){.dg-spokes,.dg-trips,.dg-cost__grid{grid-template-columns:1fr;}.dg-gear{grid-template-columns:1fr;text-align:center;padding:32px 24px;}.dg-bookcta{grid-template-columns:1fr;text-align:center;}}
.dg-crumb,.dg-crumb a,.dg-byline{color:var(--noe-mutedOnDark) !important;}
.noe-ftr-copy{color:var(--noe-copy);}
.noe-eyebrow--on-dark{color:var(--noe-accentSoft);}
/* Pink rule (locked): primary buttons are a pale-pink fill with deep-pink type and a
   hairline edge. The opening of this comment was lost in 224730e, which voided the rule
   below until 2026-10-09 (buttons fell back to white type on solid pink). */
  .noe-btn--primary{background:var(--noe-accentPale) !important;color:var(--noe-accentDeep,#a3255a) !important;
    border:1px solid var(--noe-accentPaleLine) !important;}
.noe-btn--primary:hover{background:#fff !important;opacity:1;}
.noe-card__icon{border-color:var(--noe-accentPaleLine);background:var(--noe-accentPale);color:var(--noe-sage);}
.noe-input:focus{border-color:var(--noe-accent);box-shadow:0 0 0 2px rgba(207,63,118,.25);}
/* --- contrast pass 2 (render-audit findings) --- */
  .noe-hero-sub,.noe-bookf-meta,.dg-bound__note{color:var(--noe-mutedOnDark) !important;}
.noe-dest-meta,.noe-dest-meta span,.dx-card__meta,.dx-card__meta span{color:var(--noe-border) !important;}
.noe-dest-tag,.dx-card__tag,.noe-dest-pill,.dx-pill{color:var(--noe-accentSoft) !important;}
.noe-hero-btn-p,.noe-bookf-btn-p,.noe-boundless .noe-social__btn{background:var(--noe-accentPale) !important;color:var(--noe-accentDeep) !important;
    border:1px solid var(--noe-accentPaleLine) !important;}
.noe-hero-btn-p:hover,.noe-bookf-btn-p:hover,.noe-boundless .noe-social__btn:hover{background:#fff !important;opacity:1 !important;}
.noe-social__btn{color:var(--noe-navy);background:var(--noe-cream);}
/* pink rule applied to the page-specific button variants too */
  .noe-hero-btn-p,.noe-bookf-btn-p,.noe-boundless .noe-social__btn{background:var(--noe-accentPale) !important;color:var(--noe-accentDeep) !important;
    border:1px solid var(--noe-accentPaleLine) !important;}
/* ── destinations index page ── */
.dx-region{margin-top:8px;}
.dx-region__head{display:flex; align-items:baseline; gap:14px; margin:48px 0 18px;}
.dx-region__t{font-family:var(--noe-serif); font-weight:300; font-size:32px; color:var(--noe-navy); line-height:1;}
.dx-region__c{font-family:var(--noe-sans); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--noe-muted);}
.dx-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:3px;} /* wider screens add columns instead of stretching tiles */
.dx-card{position:relative; overflow:hidden; background:var(--noe-navy-2); text-decoration:none; display:block; aspect-ratio:4/5;}
.dx-card.is-ph{background:linear-gradient(150deg,#2c4054,var(--noe-navy));}
.dx-card.is-ph::before{content:'Add photo'; position:absolute; top:14px; right:14px; z-index:2; font-family:var(--noe-sans); font-size:8px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--noe-sage); border:1px solid rgba(207,63,118,.4); border-radius:1px; padding:2px 7px;}
.dx-card img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .6s ease;}
.dx-card:hover img{transform:scale(1.04);}
.dx-card__shade{position:absolute; left:0; right:0; bottom:0; height:70%; background:linear-gradient(to top, rgba(27,42,59,.94), transparent); z-index:1; pointer-events:none;}
.dx-card__info{position:absolute; left:22px; right:22px; bottom:22px; z-index:2;}
.dx-card__tag{font-family:var(--noe-sans); font-size:9px; font-weight:500; letter-spacing:.18em; text-transform:uppercase; color:var(--noe-sage-light); display:block; margin-bottom:6px;}
.dx-card__name{font-family:var(--noe-serif); font-size:26px; font-weight:300; color:var(--noe-cream); line-height:1.25; margin-bottom:9px;}
.dx-card__meta{display:flex; align-items:center; gap:8px; flex-wrap:wrap;}
.dx-pill{font-family:var(--noe-sans); font-size:9px; font-weight:500; letter-spacing:.08em; text-transform:uppercase; background:rgba(207,63,118,.22); color:var(--noe-sage-light); padding:2px 9px; border:1px solid rgba(207,63,118,.4); border-radius:1px;}
.dx-pill--soon{background:rgba(143,163,168,.18); color:#b8c4c7; border-color:rgba(143,163,168,.4);}
.dx-card--soon{pointer-events:none;}
.dx-card--soon .dx-card__name{color:#c9d2d4;}
@media (max-width:768px){.dx-grid{ grid-template-columns:1fr 1fr; }.dx-region__t{ font-size:26px; }}

/* Article/roundup cards mixed into a photo grid (no destination photo to show).
   Unlike the photo dx-card, this one can't rely on a fixed aspect-ratio box with
   absolutely-positioned text over an image — there's more copy (a description) and
   no photo to crop to, so it lays out as a normal flex column instead. */
.dx-card--article{
  aspect-ratio:auto;display:flex;flex-direction:column;
  background:linear-gradient(155deg,#274259,var(--noe-navy) 75%);
  padding:22px 24px 26px;
}
.dx-card--article .dx-card__shade{display:none}
.dx-card--article .dx-card__kind{
  position:static;display:inline-block;align-self:flex-start;
  font-family:var(--noe-sans);font-size:8.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--noe-sage-light);border:1px solid rgba(207,63,118,.4);background:rgba(15,30,45,.4);
  padding:3px 8px;margin-bottom:16px;
}
.dx-card--article .dx-card__info{position:static;left:auto;right:auto;bottom:auto;flex:1;display:flex;flex-direction:column;}
.dx-card--article .dx-card__desc{
  font-family:var(--noe-sans);font-size:12.5px;line-height:1.6;color:var(--noe-border);
  margin:0 0 14px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.dx-card--article .dx-card__meta{margin-top:auto}
/* Article card with a location photo across the top (added 2026-09-23). */
/* Compact row card: details left, photo right, about half the height of a stacked card. */
.dx-card--article.dx-card--thumb{display:grid;grid-template-columns:minmax(0,1fr) 40%;grid-template-rows:auto 1fr;column-gap:18px;padding:16px 0 16px 20px;}
.dx-card--thumb .dx-card__thumb{position:static;inset:auto;grid-column:2;grid-row:1 / span 2;width:100%;height:calc(100% + 32px);max-width:none;min-height:0;margin:-16px 0;object-fit:cover;object-position:center;}
.dx-card--thumb .dx-card__kind{grid-column:1;justify-self:start;}
.dx-card--thumb .dx-card__info{grid-column:1;min-width:0;}
.dx-card--article{min-height:210px;padding:16px 20px;}
.dx-card--article .dx-card__kind{margin-bottom:10px;}
.dx-card--article .dx-card__name{font-size:20px;line-height:1.2;margin-bottom:6px;}
.dx-card--article .dx-card__tag{margin-bottom:4px;}
.dx-card--article .dx-card__desc{-webkit-line-clamp:2;font-size:12px;margin-bottom:10px;}
@media (max-width:768px){.dx-card--article{grid-column:span 2;min-height:170px}}
.dg-ph::after{content:attr(data-label);font-family:var(--noe-sans);font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:var(--noe-sage-light);padding:0 16px;text-align:center;}
.noe-form--center{margin:0 auto;justify-content:center;}
.noe-input{flex:1;min-width:200px;padding:16px 18px;border:1px solid var(--noe-border);background:var(--noe-cream);font-family:var(--noe-sans);font-size:15px;color:var(--noe-navy);border-radius:var(--noe-radius);}
.noe-input::placeholder{color:#9aa9ae;}
.noe-input:focus{outline:none;border-color:var(--noe-sage);box-shadow:0 0 0 2px rgba(207,63,118,.25);}
.noe-form__btn{flex:0 0 auto;cursor:pointer;}
@media (max-width:768px){.noe-input,.noe-form__btn{width:100%;flex:1 1 100%;}}
.noe-h2--on-dark{color:var(--noe-cream);}
/* ── packing components ── */
.pk-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--noe-seam);margin-top:32px;}
.pk-cat{background:#fff;border:1px solid var(--noe-border);border-radius:var(--noe-radius);padding:28px 32px;}
.pk-cat__label{font-family:var(--noe-sans);font-size:10px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--noe-sage);margin-bottom:6px;display:flex;align-items:center;gap:10px;}
.pk-cat__label::before{content:'';width:18px;height:1px;background:var(--noe-sage);}
.pk-cat h3{font-family:var(--noe-serif);font-weight:400;font-size:23px;color:var(--noe-navy);margin:0 0 12px;line-height:1.3;}
.pk-list{list-style:none;margin:0;padding:0;}
.pk-list li{font-family:var(--noe-sans);font-size:15px;color:var(--noe-ink);line-height:1.55;padding:10px 0 10px 28px;position:relative;border-top:1px solid #efeae0;}
.pk-list li:first-child{border-top:none;}
.pk-list li::before{content:'';position:absolute;left:0;top:12px;width:13px;height:13px;border:1.5px solid var(--noe-sage);border-radius:2px;}
.pk-list strong{color:var(--noe-navy);font-weight:500;}
.pk-list em{color:var(--noe-muted);font-style:normal;}
.pk-list a{color:var(--noe-sage);text-decoration:underline;text-underline-offset:2px;}
.pk-tip{background:var(--noe-taupe);border:1px solid var(--noe-border);border-left:2px solid var(--noe-sage);border-radius:var(--noe-radius);padding:22px 26px;}
.pk-tip__k{font-family:var(--noe-sans);font-size:10px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--noe-sage);margin-bottom:8px;}
.pk-tip p{font-family:var(--noe-sans);font-size:15px;color:var(--noe-ink);line-height:1.7;margin:0;}
.pk-tip strong{color:var(--noe-navy);font-weight:500;}
.pk-tips-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--noe-seam);margin-top:32px;}
.pk-secthead{max-width:760px;}
.pk-secthead .noe-h2{margin-bottom:10px;}
@media (max-width:768px){.pk-grid,.pk-tips-grid,.noe-grid-2{grid-template-columns:1fr;}}
.noe-btn--outline{background:transparent;border:1px solid #41566a;color:var(--noe-cream);}
.noe-btn--outline:hover{background:var(--noe-navy-2);}
.dg-crumb{font-family:var(--noe-sans);font-size:11px;letter-spacing:0.14em;text-transform:uppercase;color:var(--noe-muted);margin-bottom:22px;}
.dg-base{background:#fff;border:1px solid var(--noe-border);border-radius:var(--noe-radius);padding:32px 36px;margin:28px 0 0;max-width:820px;}
.dg-base a{color:var(--noe-sage);}
.dg-spokes li::before{content:'\2192';position:absolute;left:0;color:var(--noe-sage);}
.dg-spokes a{color:var(--noe-sage);}
.dg-trips{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--noe-seam);margin-top:36px;}
.dg-trip__x a{color:var(--noe-sage);}
.dg-cost{max-width:820px;}
.dg-bound{max-width:980px;margin:0 auto;}
.dg-bound__pills{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 30px;}
.dg-bound__pill{font-family:var(--noe-sans);font-size:11px;letter-spacing:.05em;color:var(--noe-border);background:var(--noe-navy-2);border:1px solid #33485c;border-radius:1px;padding:6px 13px;}
.dg-bound__cta{display:flex;gap:16px;flex-wrap:wrap;align-items:center;}
.dg-bound__note{font-family:var(--noe-sans);font-size:12px;color:var(--noe-muted);line-height:1.7;margin:18px 0 0;max-width:60ch;}
.dg-bound__note a{color:var(--noe-sage-light);}
.dg-gear{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:center;background:var(--noe-navy);border-radius:var(--noe-radius);padding:40px 48px;}
.dg-bookcta{display:grid;grid-template-columns:120px 1fr auto;gap:28px;align-items:center;background:var(--noe-taupe);border:1px solid var(--noe-border);border-radius:var(--noe-radius);padding:26px 32px;}
@media (max-width:768px){.dg-spokes,.dg-trips,.dg-cost__grid{grid-template-columns:1fr;}.dg-gear{grid-template-columns:1fr;text-align:center;padding:32px 24px;}.dg-bookcta{grid-template-columns:1fr;text-align:center;}.noe-ftr-copy{padding:18px 24px;}}
.noe-block{display:block;font-family:var(--noe-sans);line-height:1;}
/* ── page-specific (book sales) ── */
.bk-hero{display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center;}
.bk-price{font-family:var(--noe-serif); font-size:30px; color:var(--noe-navy); margin:18px 0 22px;}
.bk-price small{font-family:var(--noe-sans); font-size:13px; color:var(--noe-muted); letter-spacing:.02em;}
.bk-micro{font-family:var(--noe-sans); font-size:12px; color:var(--noe-muted); margin-top:14px; letter-spacing:0.02em;}
.bk-cover-img{width:100%; aspect-ratio:3/4; object-fit:cover; border:1px solid var(--noe-border); border-radius:var(--noe-radius); box-shadow:0 24px 60px -28px rgba(27,42,59,.5);}
.bk-spec{display:flex; flex-wrap:wrap; gap:0; border:1px solid var(--noe-border); border-radius:var(--noe-radius); margin-top:36px; max-width:760px; background:#fff;}
.bk-spec__item{flex:1; min-width:120px; text-align:center; padding:20px 16px; border-right:1px solid var(--noe-border);}
.bk-spec__item:last-child{border-right:none;}
.bk-spec__v{font-family:var(--noe-serif); font-size:24px; color:var(--noe-navy); display:block; line-height:1;}
.bk-spec__k{font-family:var(--noe-sans); font-size:10px; letter-spacing:0.16em; text-transform:uppercase; color:var(--noe-muted); margin-top:6px; display:block;}
.bk-spread-img{width:100%; aspect-ratio:3/4; object-fit:cover; border:1px solid var(--noe-border); border-radius:var(--noe-radius); display:block; background:var(--noe-cream-2);}
.bk-ph{position:relative; background:linear-gradient(150deg,var(--noe-navy-2),var(--noe-navy)); border:1px solid var(--noe-border); border-radius:var(--noe-radius); display:flex; align-items:center; justify-content:center; text-align:center; overflow:hidden; aspect-ratio:3/4;}
.bk-ph::after{content:attr(data-label); font-family:var(--noe-sans); font-size:11px; letter-spacing:0.16em; text-transform:uppercase; color:var(--noe-sage-light); padding:0 16px; line-height:1.5;}
.bk-quote{max-width:720px; margin:0 auto; text-align:center;}
.bk-quote p{font-family:var(--noe-serif); font-weight:300; font-style:italic; font-size:30px; line-height:1.4; color:var(--noe-cream);}
.bk-quote cite{font-family:var(--noe-sans); font-style:normal; font-size:12px; letter-spacing:0.16em; text-transform:uppercase; color:var(--noe-sage-light); display:block; margin-top:20px;}
.bk-author{display:grid; grid-template-columns:280px 1fr; gap:44px; align-items:start; max-width:880px;}
.bk-author__frame{width:280px; height:280px; border:1px solid var(--noe-border); border-radius:var(--noe-radius); overflow:hidden;}
.bk-author__photo{width:100% !important; height:100% !important; max-width:none !important; object-fit:cover !important; object-position:center 25%; display:block; margin:0 !important;}
.bk-author__ph{width:100%; aspect-ratio:1; border-radius:50%; border:1px solid var(--noe-border); background:linear-gradient(150deg,var(--noe-navy-2),var(--noe-navy)); display:flex;align-items:center;justify-content:center;text-align:center;}
.bk-author__ph::after{content:attr(data-label); font-family:var(--noe-sans);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--noe-sage-light);padding:0 12px;line-height:1.5;}
.bk-faq h3{font-family:var(--noe-serif); font-weight:400; font-size:22px; color:var(--noe-navy); margin:28px 0 8px;}
.bk-faq p{font-family:var(--noe-sans); font-size:16px; color:var(--noe-ink); line-height:1.8; margin:0;}
.bk-words{display:grid; grid-template-columns:repeat(4,1fr); gap:3px; margin-top:36px;}
.bk-word{background:#fff; border:1px solid var(--noe-border); padding:22px 24px;}
.bk-word__fr{font-family:var(--noe-serif); font-size:24px; color:var(--noe-sage); line-height:1;}
.bk-word__say{font-family:var(--noe-sans); font-size:12px; color:var(--noe-muted); margin:6px 0 4px; font-style:italic;}
.bk-word__en{font-family:var(--noe-sans); font-size:14px; color:var(--noe-navy);}
@media (max-width:768px){.bk-hero{ grid-template-columns:1fr; gap:36px; }.bk-hero .bk-cover-img{ order:-1; max-width:320px; margin:0 auto; }.bk-quote p{ font-size:23px; }.bk-author{ grid-template-columns:1fr; gap:24px; }.bk-author__frame{ width:240px; height:240px; }.bk-author__ph{ max-width:240px; }.bk-words{ grid-template-columns:1fr 1fr; }}

/* ═══════════════ INDEX / FILTER BAR (Northern New England + And Beyond hubs) ═══════════════
   Rebrand 2026-09. Search + type pills + topic + sort, sticky under the
   header so it stays reachable while scrolling a long index. */
.noe-idx__bar{
  position:sticky;top:var(--noe-hdr-h,67px);z-index:20;
  display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;
  background:var(--noe-c-cream2);border-bottom:1px solid var(--noe-c-border);
  padding:18px var(--noe-pad);
}
.noe-idx__search{
  flex:1 1 220px;position:relative;
}
.noe-idx__search input{
  width:100%;font-family:var(--noe-sans);font-size:15px;padding:11px 14px 11px 38px;
  border:1px solid var(--noe-c-border);background:var(--noe-c-cream) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23547084' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat 13px center;
  color:var(--noe-c-dark);
}
.noe-idx__search input::placeholder{color:var(--noe-c-muted)}
.noe-idx__search input:focus{outline:2px solid var(--noe-c-accentDeep);outline-offset:1px}
.noe-idx__pills{display:flex;flex-wrap:wrap;gap:8px}
.noe-idx__pill{
  font-family:var(--noe-sans);font-size:12.5px;letter-spacing:.04em;font-weight:500;
  color:var(--noe-c-dark);background:var(--noe-c-cream2);border:1px solid var(--noe-c-border);
  padding:8px 15px;cursor:pointer;transition:background .15s,border-color .15s,color .15s;
}
.noe-idx__pill:hover{border-color:var(--noe-c-dark3)}
.noe-idx__pill[aria-pressed="true"]{
  background:var(--noe-c-accentPale);border-color:var(--noe-c-accentPaleLine);color:var(--noe-c-accentDeep);
}
.noe-idx__topic,.noe-idx__sort{
  font-family:var(--noe-sans);font-size:13.5px;color:var(--noe-c-dark);
  background:var(--noe-c-cream2);border:1px solid var(--noe-c-border);padding:10px 12px;
}
.noe-idx__meta{
  padding:14px var(--noe-pad) 0;font-size:12.5px;letter-spacing:.04em;color:var(--noe-c-muted);
}
.noe-idx__empty{
  display:none;padding:60px var(--noe-pad);text-align:center;
  font-family:var(--noe-serif);font-size:22px;color:var(--noe-c-muted);
}
.noe-idx__empty--show{display:block}
.noe-idx__item[hidden]{display:none !important}
.noe-idx__kind{
  display:inline-block;font-size:9.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  padding:3px 8px;margin-bottom:10px;border:1px solid var(--noe-c-border);color:var(--noe-c-muted);
}
.noe-idx__item[data-kind="article"] .noe-idx__kind{
  color:var(--noe-c-accentDeep);background:var(--noe-c-accentPale);border-color:var(--noe-c-accentPaleLine);
}
@media(max-width:640px){
  .noe-idx__bar{position:static;padding:16px 20px}
  .noe-idx__meta{padding:12px 20px 0}
}

/* ═══════════════ DATA TABLE (cost comparisons etc) ═══════════════ */
.noe-table-wrap{overflow-x:auto;margin-top:26px;border:1px solid var(--noe-c-border);max-width:820px}
.noe-table{width:100%;border-collapse:collapse;background:var(--noe-c-cream2);font-family:var(--noe-sans);font-size:14.5px}
.noe-table caption{caption-side:top;text-align:left;font-size:11px;font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;color:var(--noe-c-accentDeep);padding:14px 18px 0}
.noe-table th,.noe-table td{padding:13px 18px;text-align:left;border-top:1px solid var(--noe-c-border);white-space:nowrap}
.noe-table thead th{
  font-size:10.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--noe-c-muted);
  border-top:0;white-space:normal;
}
.noe-table tbody th{font-weight:500;color:var(--noe-c-dark);white-space:normal}
.noe-table td{color:var(--noe-c-dark)}
.noe-table tr.noe-table__total th,.noe-table tr.noe-table__total td{
  border-top:2px solid var(--noe-c-dark3);font-weight:600;color:var(--noe-c-dark);
}
.noe-table tr.noe-table__highlight td,.noe-table tr.noe-table__highlight th{background:var(--noe-c-accentPale)}
.noe-table__source{font-family:var(--noe-sans);font-size:12px;color:var(--noe-c-muted);line-height:1.6;
  margin-top:10px;max-width:820px;font-style:italic}

/* ═══════════════ HERO "LATEST" PANEL (Northern New England / And Beyond) ═══════════════
   Fills the empty right-hand column of the one-column hubs with a real,
   dated highlight instead of blank gradient. */
.noe-hero__latest{
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.22);
  align-self:stretch;display:flex;flex-direction:column;justify-content:flex-start;overflow:hidden;
}
.noe-hero__latest-img{width:100%;aspect-ratio:3/2;object-fit:cover;display:block}
.noe-hero__latest-body{padding:26px 32px 30px}
.noe-hero__latest-k{font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  color:var(--noe-c-accentHero);margin-bottom:14px}
.noe-hero__latest-t{font-family:var(--noe-serif);font-size:26px;line-height:1.25;color:#fff;margin-bottom:12px}
.noe-hero__latest-d{font-size:14.5px;line-height:1.7;color:var(--noe-c-cream);margin:0 0 18px}
.noe-hero__latest-link{font-size:13.5px;font-weight:500;color:#fff;text-decoration:underline}
@media(max-width:880px){.noe-hero__latest{margin-top:8px}}

/* ═══════════════ STAYS CARD + SEARCH WIDGET (Vrbo / Expedia affiliate) ═══════════════
   Named rentals that pass the NOE filters (07-content-ops/knowledge/rental-criteria.md),
   a pre-filtered search button, and a quiet "have us book it" link. Scripted by
   /assets/noe-stays.js. */
.noe-stays{background:#fff;border:1px solid var(--noe-c-border);border-radius:var(--noe-radius);
  padding:30px 34px 26px;margin:28px 0 0;max-width:820px}
.noe-stays__label{font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  color:var(--noe-c-accentDeep);margin-bottom:10px}
.noe-stays__title{font-family:var(--noe-serif);font-size:28px;line-height:1.2;color:var(--noe-c-dark);margin:0 0 10px}
.noe-stays__intro{font-size:15px;line-height:1.75;color:var(--noe-c-muted);margin:0 0 6px;max-width:640px}
.noe-stays__list{border-top:1px solid var(--noe-c-border);margin-top:18px}
.noe-stays__row{display:flex;gap:18px;align-items:flex-start;padding:18px 4px;
  border-bottom:1px solid var(--noe-c-border);text-decoration:none;color:inherit;transition:background .18s}
.noe-stays__row:hover{background:var(--noe-c-cream)}
.noe-stays__body{flex:1;min-width:0}
.noe-stays__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:5px}
.noe-stays__name{font-family:var(--noe-serif);font-size:21px;font-weight:500;color:var(--noe-c-dark)}
.noe-stays__row:hover .noe-stays__name{color:var(--noe-c-dark2)}
.noe-stays__tag{font-size:10.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;
  padding:3px 8px;background:var(--noe-c-sand);color:var(--noe-c-dark)}
.noe-stays__tag--ours{background:var(--noe-c-accentPale);color:var(--noe-c-accentDeep)}
.noe-stays__meta{font-size:13.5px;line-height:1.6;color:var(--noe-c-dark3);margin:0 0 4px}
.noe-stays__why{font-size:15px;line-height:1.7;color:var(--noe-c-muted);margin:0}
.noe-stays__go{flex:0 0 auto;align-self:center;font-size:13px;font-weight:500;color:var(--noe-c-accentDeep);white-space:nowrap}
.noe-stays__actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin-top:22px}
.noe-stays__alt{font-size:14px;font-weight:500;color:var(--noe-c-dark);text-decoration:underline;text-underline-offset:3px}
.noe-stays__alt:hover{color:var(--noe-c-accentDeep)}
.noe-stays__fine{font-size:12.5px;line-height:1.6;color:var(--noe-c-muted);margin:16px 0 0}
@media(max-width:560px){
  .noe-stays{padding:24px 20px 20px}
  .noe-stays__row{flex-direction:column;gap:8px}
  .noe-stays__go{align-self:flex-start}
  .noe-stays__actions .noe-btn{width:100%;justify-content:center}
}
.noe-stay-search{margin:16px 0 0}
.noe-stay-search__label{font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  color:var(--noe-c-accentDeep);margin-bottom:8px}
.noe-stay-search__note{font-size:14px;line-height:1.7;color:var(--noe-c-muted);margin:0 0 12px}
.noe-stay-widget{min-height:190px;background:#fff;border:1px solid var(--noe-c-border)}

/* Stays visuals (2026-10-08): amenity chips, numbered picks, destination photo + map blocks on
   /where-we-stayed/. Map tiles: OpenStreetMap via Leaflet, lazy-loaded by /assets/noe-staymap.js. */
.noe-stays__chips{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:6px 0 9px;padding:0}
.noe-stays__chips li{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;line-height:1;padding:6px 9px;
  border:1px solid var(--noe-c-border);border-radius:999px;background:var(--noe-c-cream);color:var(--noe-c-dark)}
.noe-stays__chips svg{width:14px;height:14px;flex:0 0 14px;fill:none;stroke:var(--noe-c-dark3);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.noe-stays__chips li.is-walk{background:var(--noe-c-accentPale);border-color:var(--noe-c-accentPaleLine);color:var(--noe-c-accentDeep)}
.noe-stays__chips li.is-walk svg{stroke:var(--noe-c-accentDeep)}
.noe-stays__num{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;flex:0 0 24px;
  background:var(--noe-c-dark);color:#fff;font-size:12px;font-weight:500;line-height:1;align-self:flex-start;margin-top:2px}
.noe-dest{display:grid;grid-template-columns:230px 1fr;gap:24px;align-items:start}
.noe-dest__photo{margin:0}
.noe-dest__photo img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;border-radius:var(--noe-radius);
  border:1px solid var(--noe-c-border);background:var(--noe-c-sand)}
.noe-dest__photo figcaption{font-size:12px;line-height:1.45;color:var(--noe-c-muted);margin-top:7px}
.noe-dest__photo figcaption a{color:inherit}
.noe-staymap{height:250px;margin-top:14px;border:1px solid var(--noe-c-border);border-radius:var(--noe-radius);
  background:var(--noe-c-sand);position:relative;z-index:0;overflow:hidden;font-size:13px;color:var(--noe-c-muted)}
.noe-staymap__wait{position:absolute;inset:0;display:grid;place-items:center}
.noe-staymap__key{font-size:12px;line-height:1.5;color:var(--noe-c-muted);margin:7px 0 0}
.noe-pin{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--noe-c-dark);color:#fff;
  font:500 12px/1 var(--noe-sans);border:2px solid #fff;box-shadow:0 1px 4px rgba(18,69,110,.45)}
.noe-pin--land{width:auto;height:auto;border-radius:999px;padding:4px 8px;white-space:nowrap;font-size:11px;
  background:var(--noe-c-accentPale);color:var(--noe-c-accentDeep);border:1px solid var(--noe-c-accentPaleLine);box-shadow:none}
@media (max-width:760px){
  .noe-dest{grid-template-columns:1fr;gap:16px}
  .noe-dest__photo img{aspect-ratio:4/3;object-position:center 35%}
  .noe-staymap{height:220px}
}
.noe-mosaic{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.noe-mosaic img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;border-radius:var(--noe-radius);border:1px solid rgba(255,255,255,.18)}
.noe-mosaic img:nth-child(2n){transform:translateY(18px)}

/* --- hero text contrast, option (c), 2026-10-09 ---
   Hero copy sits on the gradient's Logan-blue top, so it uses cloud white (6.4:1) and the
   eyebrow uses the pale hero pink (5.3:1): still pink type, so the pink rule holds. */
.noe-hero .dg-byline,.noe-hero .dg-byline a,.noe-hero .dg-crumb,.noe-hero .dg-crumb a,
.noe-hero .noe-hero-sub{color:var(--noe-c-cream) !important;}
.noe-hero .noe-eyebrow--onDark,.noe-hero .noe-eyebrow--on-dark{color:var(--noe-c-accentHero);}
