  .skip-link{position:absolute;left:-9999px;top:0;z-index:1000;background:#17303F;color:#fff;padding:12px 20px;border-radius:0 0 4px 0;text-decoration:none;font-size:14px;}
  .skip-link:focus{left:0;}

  /* The two tarteaucitron rules that used to sit here were removed on
     2026-09-07: the consent script is no longer loaded on any page, so there
     is nothing left to hide or to un-stick. See the comment in each page's
     <head> and NOTES.md.

     If it is ever reinstated, the workaround it needed is worth remembering:
     tarteaucitron sets overflow:hidden on <html> while its banner is
     unanswered, which locked the whole site. The fix was
     `html.tarteaucitron-modal-open-noscroll{overflow:visible !important;}` —
     and it must be `visible`, not `auto`, because the viewport only takes its
     overflow from <body> while <html> is `visible`. Any other value silently
     breaks the photo lightbox's own scroll lock. */
  :root{
    --bg:#EEF2F0;
    --bg-alt:#E4EAE6;
    --panel:#FBFCFA;
    --ink:#1C2B2E;
    --ink-soft:#4B5B5B;
    --marine:#2C4A5E;
    --marine-deep:#17303F;
    --sand:#C9A876;
    --sand-contrast:#7C5E34; /* darker variant of --sand for text on light backgrounds (WCAG AA) */
    --seafoam:#7C9A92;
    --hairline:#D2D9D2;
    --radius:2px;
    --maxw:1120px;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}

  /* Keyboard users need to see where they are. :focus-visible means mouse
     clicks don't get an outline, only keyboard navigation. */
  :focus-visible{outline:3px solid var(--marine);outline-offset:2px;}

  @media (prefers-reduced-motion:reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;}
  }
  body{
    margin:0;
    background:var(--bg);
    color:var(--ink);
    font-family:'Inter',sans-serif;
    font-size:16px;
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  /* Metric-matched fallback: without this the Fraunces headings visibly jump
     when the web font finishes loading. Numbers tuned to Fraunces' metrics. */
  @font-face{
    font-family:'Fraunces fallback';
    src:local('Georgia'),local('Times New Roman'),local('serif');
    size-adjust:96%;
    ascent-override:95%;
    descent-override:24%;
    line-gap-override:0%;
  }

  h1,h2,h3{
    font-family:'Fraunces','Fraunces fallback',Georgia,serif;
    font-weight:500;
    letter-spacing:-0.01em;
    margin:0;
    color:var(--marine-deep);
  }
  .eyebrow{
    font-family:'Space Mono',monospace;
    font-size:11px;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--marine);
  }
  a{color:inherit;}
  img{max-width:100%;display:block;}
  .wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px;}
  .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);}

  /* ---------- header ---------- */
  header{
    position:sticky;top:0;z-index:50;
    background:rgba(238,242,240,0.92);
    backdrop-filter:blur(6px);
    border-bottom:1px solid var(--hairline);
  }
  .nav{
    display:flex;align-items:center;justify-content:space-between;
    padding:18px 28px;max-width:1200px;margin:0 auto;
    position:relative;
  }
  .brand{
    font-family:'Fraunces','Fraunces fallback',Georgia,serif;font-size:19px;font-weight:600;
    display:flex;flex-direction:column;line-height:1.1;
  }
  .brand span{
    font-family:'Space Mono',monospace;font-size:10px;letter-spacing:0.12em;
    color:var(--ink-soft);text-transform:uppercase;font-weight:400;margin-top:3px;
  }
  .nav-collapse{display:flex;align-items:center;gap:22px;}
  .nav-links{display:flex;gap:16px;list-style:none;margin:0;padding:0;font-size:13px;}
  .nav-links a{text-decoration:none;color:var(--ink);position:relative;padding-bottom:3px;white-space:nowrap;}
  .nav-links a:hover{color:var(--marine);}
  .nav-cta{
    font-family:'Space Mono',monospace;font-size:11.5px;letter-spacing:0.04em;
    background:var(--marine);color:#fff;padding:10px 14px;border-radius:var(--radius);
    text-decoration:none;white-space:nowrap;
  }
  .nav-cta:hover{background:var(--marine-deep);}
  .nav-actions{display:flex;align-items:center;gap:10px;}
  .lang-switch{position:relative;font-family:'Space Mono',monospace;font-size:11px;}
  .lang-toggle-btn{
    display:flex;align-items:center;gap:5px;padding:7px 9px;
    border:1px solid var(--hairline);border-radius:var(--radius);
    background:var(--panel);color:var(--ink-soft);cursor:pointer;
    font-family:inherit;font-size:inherit;letter-spacing:0.02em;
  }
  .lang-toggle-btn:hover{background:var(--bg-alt);color:var(--ink);}
  .lang-caret{font-size:9px;line-height:1;}
  .lang-menu{
    display:none;position:absolute;top:100%;right:0;margin-top:4px;
    background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);
    overflow:hidden;min-width:60px;box-shadow:0 8px 20px rgba(20,30,30,0.14);z-index:20;
  }
  .lang-menu.open{display:flex;flex-direction:column;}
  .lang-menu a{padding:8px 12px;text-decoration:none;color:var(--ink-soft);white-space:nowrap;}
  .lang-menu a:hover{background:var(--bg-alt);color:var(--ink);}

  .nav-toggle{
    display:none;flex-direction:column;justify-content:center;gap:5px;
    background:none;border:1px solid var(--hairline);border-radius:var(--radius);
    width:44px;height:44px;cursor:pointer;padding:0;
  }
  .nav-toggle-bar{width:18px;height:1.5px;background:var(--marine-deep);display:block;margin:0 auto;border-radius:1px;}

  @media (max-width:1150px){
    .nav-toggle{display:flex;}
    /* The panel hangs off a sticky header with position:absolute, so before
       2026-09-07 anything past the bottom of the screen was simply
       unreachable — no scrollbar, nothing to swipe. On a 375x667 phone the
       language menu opened 78 px below the fold (only "English" was tappable);
       in landscape the panel itself overflowed by 239 px and three of the nine
       nav links went with it. Capping the height and letting it scroll fixes
       both at once.
       `dvh` is declared after `vh` on purpose: browsers that don't know it keep
       the `vh` line, and those that do follow the phone's collapsing address
       bar instead of assuming the tallest possible viewport. */
    .nav-collapse{
      display:none;position:absolute;top:100%;left:0;right:0;
      flex-direction:column;align-items:flex-start;gap:22px;
      background:var(--panel);border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);
      padding:24px 28px 28px;box-shadow:0 12px 24px rgba(20,30,30,0.08);
      max-height:calc(100vh - 80px);
      max-height:calc(100dvh - 80px);
      overflow-y:auto;
      overscroll-behavior:contain; /* don't scroll the page behind the panel */
    }
    .nav-collapse.open{display:flex;}
    .nav-links{flex-direction:column;gap:18px;font-size:15.5px;width:100%;}
    .nav-actions{flex-direction:column;align-items:flex-start;gap:14px;width:100%;}
    .nav-cta{width:100%;text-align:center;padding:13px 18px;}

    /* Inline row of chips, not a floating dropdown. Hanging a four-item
       dropdown off the last element of the panel is what pushed the languages
       off the screen; on one line they always fit, and the scrolling panel
       above is then only a safety net rather than the fix. */
    .lang-switch{align-self:stretch;width:100%;}
    .lang-toggle-btn{width:max-content;}
    .lang-menu{
      position:static;margin-top:10px;min-width:0;
      background:none;border:0;box-shadow:none;overflow:visible;
    }
    .lang-menu.open{flex-direction:row;flex-wrap:wrap;gap:6px;}
    /* Sized so the four chips fit on a single line at 375 px, the narrowest
       common phone. Below that they wrap, which the scrolling panel absorbs.
       Padding is horizontal-light and vertical-generous on purpose: it keeps
       the row narrow without shrinking the tap target below 40 px. */
    .lang-menu a{
      border:1px solid var(--hairline);border-radius:var(--radius);
      background:var(--panel);padding:11px 10px;text-align:center;flex:1 1 auto;
    }
  }

  /* ---------- hero ---------- */
  .hero{
    position:relative;
    min-height:88vh;
    display:flex;align-items:flex-end;
    background:#0e1b21;
    overflow:hidden;
  }
  .hero img{
    position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
    opacity:0.82;
  }
  .hero::after{
    content:"";position:absolute;inset:0;
    background:linear-gradient(180deg, rgba(10,20,24,0.15) 0%, rgba(10,20,24,0.1) 40%, rgba(10,20,24,0.82) 100%);
  }
  .hero-content{position:relative;z-index:2;color:#fff;padding:64px 28px 56px;max-width:var(--maxw);margin:0 auto;width:100%;}
  .hero .eyebrow{color:#CFE0DA;}
  .hero h1{
    color:#fff;font-size:clamp(34px,5.4vw,64px);font-weight:500;
    margin:14px 0 6px;max-width:16ch;
  }
  .hero h1 em{font-style:italic;color:var(--sand);}
  .hero p.lede{max-width:46ch;color:#DCE6E2;font-size:16.5px;margin-top:12px;}
  .facts{
    display:flex;flex-wrap:wrap;gap:0;margin-top:34px;
    border-top:1px solid rgba(255,255,255,0.28);
    padding-top:18px;
  }
  .fact{padding-right:34px;margin-right:34px;border-right:1px solid rgba(255,255,255,0.22);}
  .fact:last-child{border-right:none;}
  .fact b{display:block;font-family:'Fraunces',serif;font-size:21px;font-weight:500;color:#fff;}
  .fact span{font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:0.08em;text-transform:uppercase;color:#B9C9C3;}

  /* ---------- generic section ---------- */
  section{padding:88px 0;}
  .section-head{margin-bottom:44px;max-width:640px;}
  .section-head h2{font-size:clamp(26px,3.4vw,38px);margin-top:10px;}

  /* wave divider - signature motif */
  .tide{width:100%;height:34px;display:block;}
  .tide path{stroke:var(--seafoam);stroke-width:1.4;fill:none;}

  /* ---------- about / gallery ---------- */
  .about-grid{display:grid;grid-template-columns:1.05fr 0.95fr;gap:56px;align-items:start;}
  .about-grid p{color:var(--ink-soft);margin:0 0 16px;}
  .about-grid p:last-of-type{margin-bottom:0;}
  .gallery{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .gallery img{width:100%;height:150px;object-fit:cover;border-radius:var(--radius);}
  .gallery img:first-child{grid-column:1/3;height:230px;}
  @media (max-width:860px){
    .about-grid{grid-template-columns:1fr;gap:32px;}
  }

  /* ---------- rooms ---------- */
  .rooms{background:var(--bg-alt);}
  .room-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
  .room-card{background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);overflow:hidden;}
  .room-card img{height:190px;width:100%;object-fit:cover;}
  .room-card .rc-body{padding:18px 20px 22px;}
  .room-card .eyebrow{color:var(--seafoam);}
  .room-card h3{font-size:19px;margin-top:6px;}
  .room-card p{color:var(--ink-soft);font-size:14px;margin:8px 0 0;}
  @media (max-width:860px){.room-grid{grid-template-columns:1fr;}}

  /* ---------- amenities ---------- */
  .amen-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px 32px;}
  .amen-item{display:flex;gap:14px;align-items:flex-start;padding:18px 0;border-top:1px solid var(--hairline);}
  .amen-item svg{flex:none;width:20px;height:20px;stroke:var(--marine);margin-top:2px;}
  .amen-item h3, .amen-title{font-family:'Inter',sans-serif;font-weight:600;font-size:15px;margin:0 0 4px;color:var(--ink);letter-spacing:0;}
  .amen-item p{margin:0;font-size:13.5px;color:var(--ink-soft);}
  @media (max-width:860px){.amen-grid{grid-template-columns:1fr 1fr;}}
  @media (max-width:560px){.amen-grid{grid-template-columns:1fr;}}

  .courtyard{
    margin-top:60px;display:grid;grid-template-columns:0.9fr 1.1fr;gap:0;
    border:1px solid var(--hairline);border-radius:var(--radius);overflow:hidden;background:var(--panel);
  }
  .courtyard img{height:100%;min-height:280px;object-fit:cover;}
  .courtyard-text{padding:40px 44px;align-self:center;}
  .courtyard-text .eyebrow{color:var(--sand-contrast);}
  .courtyard-text h3{font-size:26px;margin:10px 0 14px;}
  .courtyard-text p{color:var(--ink-soft);margin:0;}
  @media (max-width:860px){.courtyard{grid-template-columns:1fr;} .courtyard img{min-height:220px;}}

  /* ---------- surroundings (nautical chart signature) ---------- */
  .surroundings{background:var(--marine-deep);color:#EDF3F0;}
  .surroundings .section-head h2{color:#fff;}
  .surroundings .eyebrow{color:#9FC2B7;}
  .surroundings .section-head p{color:#C4D4CE;}
  /* The chart defaults to a LIGHT background (guide pages). The light-on-dark
     version is scoped to .surroundings below — don't hard-code #fff here, or
     the chart becomes invisible anywhere outside that one dark section. */
  .chart{position:relative;padding-left:28px;}
  .chart::before{
    content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;
    background:repeating-linear-gradient(to bottom, var(--seafoam) 0, var(--seafoam) 4px, transparent 4px, transparent 10px);
  }
  .chart-item{position:relative;padding:0 0 30px 26px;}
  .chart-item:last-child{padding-bottom:0;}
  .chart-item::before{
    content:"";position:absolute;left:-1px;top:5px;width:9px;height:9px;border-radius:50%;
    background:var(--sand-contrast);border:2px solid var(--bg);
  }
  .chart-item .dist{font-family:'Space Mono',monospace;font-size:13px;color:var(--sand-contrast);display:block;margin-bottom:4px;}
  .chart-item h3{font-family:'Inter',sans-serif;font-weight:600;font-size:16px;margin:0 0 4px;color:var(--marine-deep);letter-spacing:0;}
  .chart-item p{margin:0;color:var(--ink-soft);font-size:14px;max-width:52ch;}

  /* Dark-section variant (the "Alentours" block on the home page) */
  .surroundings .chart::before{
    background:repeating-linear-gradient(to bottom, #9FC2B7 0, #9FC2B7 4px, transparent 4px, transparent 10px);
  }
  .surroundings .chart-item::before{background:var(--sand);border-color:var(--marine-deep);}
  .surroundings .chart-item .dist{color:var(--sand);}
  .surroundings .chart-item h3{color:#fff;}
  .surroundings .chart-item p{color:#C4D4CE;}

  .map-block{
    margin-top:56px;display:grid;grid-template-columns:1.3fr 1fr;
    border:1px solid rgba(255,255,255,0.18);border-radius:var(--radius);overflow:hidden;
  }
  .map-embed{min-height:320px;background:#0e1b21;}
  .map-embed iframe{display:block;width:100%;height:100%;min-height:320px;}
  .map-address{padding:32px 34px;background:rgba(255,255,255,0.04);display:flex;flex-direction:column;justify-content:center;}
  .map-address .dist{font-family:'Space Mono',monospace;font-size:12px;color:var(--sand);display:block;margin-bottom:10px;text-transform:uppercase;letter-spacing:0.08em;}
  .map-address p{margin:0 0 18px;color:#fff;font-size:15px;line-height:1.55;}
  .map-directions{font-family:'Space Mono',monospace;font-size:12.5px;color:var(--sand);text-decoration:none;}
  .map-directions:hover{text-decoration:underline;}
  @media (max-width:860px){
    .map-block{grid-template-columns:1fr;}
    .map-embed{min-height:260px;}
    .map-embed iframe{min-height:260px;}
  }

  /* ---------- reviews ---------- */
  .review-top{display:flex;align-items:baseline;gap:18px;margin-bottom:40px;flex-wrap:wrap;}
  .review-score{font-family:'Fraunces',serif;font-size:56px;color:var(--marine-deep);}
  .score-scale{font-family:'Inter';font-size:16px;font-weight:400;color:var(--ink-soft);margin-left:2px;}
  .bar-scale{font-size:0.78em;color:var(--ink-soft);margin-left:1px;}
  .review-meta span{display:block;}
  .review-meta .stars{color:var(--sand-contrast);letter-spacing:2px;}
  .review-meta .count{font-size:13.5px;color:var(--ink-soft);}
  .bars{display:grid;grid-template-columns:repeat(3,1fr);gap:24px 40px;}
  .bar-row{}
  .bar-row .bar-label{display:flex;justify-content:space-between;font-size:13.5px;margin-bottom:6px;}
  .bar-row .bar-label b{font-family:'Space Mono',monospace;font-weight:400;color:var(--marine);}
  .bar-track{height:4px;background:var(--hairline);border-radius:2px;overflow:hidden;}
  .bar-fill{height:100%;background:var(--seafoam);}
  @media (max-width:700px){.bars{grid-template-columns:1fr 1fr;}}

  /* ---------- testimonials ---------- */
  .testimonials{
    margin-top:52px;display:grid;grid-template-columns:repeat(3,1fr);gap:22px;
  }
  .testimonial-card{
    background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);
    padding:26px 24px;display:flex;flex-direction:column;gap:16px;
  }
  .testimonial-card p{
    font-family:'Fraunces','Fraunces fallback',Georgia,serif;font-style:italic;font-size:16px;line-height:1.5;
    color:var(--ink);margin:0;
  }
  .testimonial-author{
    font-family:'Space Mono',monospace;font-size:12px;color:var(--marine);
    letter-spacing:0.03em;
  }
  .testimonial-author em{font-style:normal;color:var(--ink-soft);}
  @media (max-width:860px){.testimonials{grid-template-columns:1fr 1fr;}}
  @media (max-width:560px){.testimonials{grid-template-columns:1fr;}}

  /* ---------- booking ---------- */
  .booking{background:var(--bg-alt);}
  .book-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
  .book-card{
    background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);
    padding:32px 30px;display:flex;flex-direction:column;gap:14px;
  }
  .book-card .eyebrow{color:var(--marine);}
  .book-card h3{font-size:23px;}
  .book-card p{color:var(--ink-soft);font-size:14px;margin:0;flex-grow:1;}
  .btn{
    display:inline-block;text-align:center;text-decoration:none;
    font-family:'Space Mono',monospace;font-size:13px;letter-spacing:0.03em;
    padding:14px 20px;border-radius:var(--radius);
  }
  .btn-primary{background:var(--marine);color:#fff;}
  .btn-primary:hover{background:var(--marine-deep);}
  .btn-outline{background:transparent;color:var(--marine-deep);border:1px solid var(--marine-deep);}
  .btn-outline:hover{background:var(--marine-deep);color:#fff;}
  @media (max-width:700px){.book-grid{grid-template-columns:1fr;}}

  /* ---------- footer ---------- */
  footer{background:var(--marine-deep);color:#B9C9C3;padding:56px 0 30px;}
  .foot-grid{display:flex;justify-content:space-between;flex-wrap:wrap;gap:32px;border-bottom:1px solid rgba(255,255,255,0.14);padding-bottom:32px;}
  .foot-brand{font-family:'Fraunces',serif;color:#fff;font-size:20px;}
  .foot-host{font-size:13.5px;max-width:34ch;}
  .foot-host b{color:#fff;}
  .foot-bottom{display:flex;justify-content:space-between;padding-top:22px;font-size:12px;flex-wrap:wrap;gap:10px;}
  .foot-bottom a{color:#DCE6E2;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(220,230,226,0.45);}
  .foot-bottom a:hover{color:#fff;text-decoration-color:#fff;}

  ::selection{background:var(--sand);color:var(--marine-deep);}

  /* ---------- availability calendar ---------- */
  #avail-calendar{max-width:760px;}
  .cal-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:12px;}
  .cal-toolbar button{
    background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);
    width:34px;height:34px;cursor:pointer;font-size:15px;color:var(--marine-deep);
    font-family:'Inter';
  }
  .cal-toolbar button:hover{background:var(--marine);color:#fff;border-color:var(--marine);}
  .cal-updated{font-family:'Space Mono',monospace;font-size:11px;color:var(--ink-soft);text-align:center;flex:1;}
  .cal-months{display:grid;grid-template-columns:1fr 1fr;gap:28px;}
  .cal-month{background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);padding:20px;}
  .cal-head{font-family:'Fraunces',serif;font-size:16px;margin-bottom:14px;color:var(--marine-deep);text-transform:capitalize;}
  .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center;}
  .cal-dow{margin-bottom:6px;}
  .cal-dow span{font-family:'Space Mono',monospace;font-size:9.5px;color:var(--ink-soft);text-transform:uppercase;}
  .cal-day, .cal-empty{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:12px;border-radius:2px;}
  .cal-free{background:transparent;color:var(--ink);}
  .cal-busy{background:#E6D6D6;color:#8A5A5A;text-decoration:line-through;}
  .cal-past{color:#8A928C;}
  .cal-day{flex-direction:column;line-height:1.15;}
  .cal-price{font-family:'Space Mono',monospace;font-size:9.5px;color:var(--ink-soft);margin-top:2px;white-space:nowrap;}
  .cal-price-note{font-size:12.5px;line-height:1.55;color:var(--ink-soft);margin-top:14px;max-width:68ch;}
  .cal-legend{display:flex;gap:22px;margin-top:18px;font-size:12.5px;color:var(--ink-soft);}
  .cal-legend .dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;}
  .dot-free{background:var(--seafoam);}
  .dot-busy{background:#B87373;}
  .cal-error{font-size:13px;color:#A34C4C;background:#F6E9E9;border:1px solid #E6C9C9;border-radius:var(--radius);padding:12px 16px;}
  @media (max-width:700px){
    .cal-months{grid-template-columns:1fr;}
    .cal-toolbar button{width:42px;height:42px;font-size:17px;}
    .cal-month{padding:14px;}
    .cal-price{font-size:8.5px;letter-spacing:-.3px;}
  }

  /* ---------- contact form ---------- */
  .contact-form{max-width:640px;}
  .cf-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
  .cf-field{margin-bottom:20px;display:flex;flex-direction:column;}
  .cf-field label{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:0.06em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px;}
  .cf-field input, .cf-field textarea{
    font-family:'Inter';font-size:16px;color:var(--ink);
    border:1px solid var(--hairline);border-radius:var(--radius);
    padding:12px 14px;background:var(--panel);resize:vertical;
  }
  .cf-field input:focus, .cf-field textarea:focus{border-color:var(--marine);}
  .cf-honeypot{position:absolute;left:-9999px;top:-9999px;}
  .cf-status{margin-top:14px;font-size:14px;min-height:20px;}
  .cf-status.cf-success{color:#3E6B5C;}
  .cf-status.cf-error{color:#A34C4C;}
  @media (max-width:600px){.cf-row{grid-template-columns:1fr;}}

  /* ---------- small-screen tightening (phones) ---------- */
  /* ---------- gallery carousel + lightbox ---------- */
  .gallery-full{padding-bottom:56px;}
  .filmstrip-wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px;}
  .filmstrip-row{display:flex;align-items:center;gap:12px;}
  .fs-nav{
    flex:0 0 auto;width:44px;height:44px;border-radius:50%;
    background:var(--panel);border:1px solid var(--hairline);color:var(--marine-deep);
    font-size:17px;cursor:pointer;display:flex;align-items:center;justify-content:center;
  }
  .fs-nav:hover{background:var(--marine);color:#fff;border-color:var(--marine);}
  .fs-nav:disabled{opacity:0.35;cursor:default;}
  .fs-nav:disabled:hover{background:var(--panel);color:var(--marine-deep);}
  @media (max-width:700px){.fs-nav{width:38px;height:38px;font-size:15px;}}
  @media (max-width:560px){.fs-nav{display:none;}}
  .filmstrip{
    display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x proximity;
    padding-bottom:8px;-webkit-overflow-scrolling:touch;
  }
  .filmstrip::-webkit-scrollbar{height:6px;}
  .filmstrip::-webkit-scrollbar-thumb{background:var(--hairline);border-radius:3px;}
  .fs-item{
    display:block;flex:0 0 auto;width:240px;height:180px;border-radius:var(--radius);overflow:hidden;
    border:1px solid var(--hairline);padding:0;cursor:pointer;background:var(--panel);
    scroll-snap-align:start;position:relative;
  }
  .fs-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease;}
  .fs-item:hover img{transform:scale(1.05);}

  .lightbox{
    display:none;position:fixed;inset:0;z-index:200;
    background:rgba(10,20,24,0.94);
    align-items:center;justify-content:center;
    padding:24px;
  }
  .lightbox.open{display:flex;}
  .lightbox-figure{max-width:min(92vw, 1100px);max-height:88vh;display:flex;flex-direction:column;align-items:center;gap:14px;}
  .lightbox-img{max-width:100%;max-height:78vh;object-fit:contain;border-radius:2px;}
  .lightbox-caption{color:#DCE6E2;font-family:'Space Mono',monospace;font-size:13px;text-align:center;}
  .lightbox-close, .lightbox-prev, .lightbox-next{
    position:fixed;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.25);
    color:#fff;border-radius:50%;width:46px;height:46px;font-size:18px;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
  }
  .lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{background:rgba(255,255,255,0.18);}
  .lightbox-close{top:20px;right:20px;}
  .lightbox-prev{left:20px;top:50%;transform:translateY(-50%);}
  .lightbox-next{right:20px;top:50%;transform:translateY(-50%);}
  @media (max-width:700px){
    .fs-item{width:180px;height:135px;}
    .lightbox-prev{left:8px;} .lightbox-next{right:8px;}
    .lightbox-close{top:12px;right:12px;}
  }

  /* ---------- verified badges ---------- */
  .verified-badges{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}
  .verified-badge{
    font-family:'Space Mono',monospace;font-size:11px;color:var(--marine);
    background:rgba(44,74,94,0.08);border:1px solid rgba(44,74,94,0.18);
    padding:5px 10px;border-radius:20px;white-space:nowrap;
  }

  /* ---------- FAQ ---------- */
  .faq-list{max-width:760px;display:flex;flex-direction:column;gap:12px;}
  .faq-item{
    background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);
    padding:6px 22px;
  }
  .faq-item summary{
    padding:16px 0;cursor:pointer;font-family:'Inter';font-weight:600;font-size:15.5px;
    color:var(--marine-deep);list-style:none;display:flex;justify-content:space-between;align-items:center;
  }
  .faq-item summary::-webkit-details-marker{display:none;}
  .faq-item summary::after{content:"+";font-family:'Space Mono',monospace;font-size:18px;color:var(--marine);margin-left:12px;}
  .faq-item[open] summary::after{content:"–";}
  .faq-item p{margin:0 0 18px;color:var(--ink-soft);font-size:14.5px;line-height:1.6;}

  /* ---------- host note ---------- */
  .host-note{
    display:flex;gap:26px;align-items:flex-start;background:var(--bg-alt);
    border:1px solid var(--hairline);border-radius:var(--radius);padding:34px 38px;
  }
  .host-avatar{
    flex:0 0 auto;width:64px;height:64px;border-radius:50%;background:var(--marine-deep);
    color:var(--sand);font-family:'Fraunces',serif;font-size:26px;font-weight:600;
    display:flex;align-items:center;justify-content:center;
  }
  .host-note-text .eyebrow{color:#4E6B63;}
  .host-note-text p{
    font-family:'Fraunces','Fraunces fallback',Georgia,serif;font-style:italic;font-size:17px;line-height:1.6;
    color:var(--ink);margin:10px 0 14px;
  }
  .host-signature{font-family:'Space Mono',monospace;font-size:12px;color:var(--ink-soft);}
  @media (max-width:600px){.host-note{flex-direction:column;padding:26px 24px;}}

  /* ---------- footer share ---------- */
  .foot-share-label{display:block;font-family:'Space Mono',monospace;font-size:11px;color:#9FC2B7;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:12px;}
  .foot-share-buttons{display:flex;gap:10px;flex-wrap:wrap;}
  .foot-share-buttons a, .foot-share-buttons button{
    display:flex;align-items:center;gap:6px;background:rgba(255,255,255,0.08);
    border:1px solid rgba(255,255,255,0.18);color:#EDF3F0;border-radius:var(--radius);
    padding:8px 12px;font-family:'Space Mono',monospace;font-size:11.5px;
    text-decoration:none;cursor:pointer;
  }
  .foot-share-buttons a:hover, .foot-share-buttons button:hover{background:rgba(255,255,255,0.16);}
  .foot-share-buttons svg{width:15px;height:15px;stroke:currentColor;}

  /* ---------- floating mobile book bar ---------- */
  .mobile-book-bar{
    display:none;position:fixed;left:0;right:0;bottom:0;z-index:120;
    background:var(--marine);color:#fff;text-align:center;text-decoration:none;
    padding:15px 20px;font-family:'Space Mono',monospace;font-size:13.5px;letter-spacing:0.03em;
    box-shadow:0 -6px 18px rgba(20,30,30,0.18);
    transform:translateY(100%);transition:transform .25s ease;
  }
  .mobile-book-bar.visible{transform:translateY(0);}
  @media (max-width:700px){
    .mobile-book-bar{display:block;}
    body{padding-bottom:0;}
  }

  @media (max-width:480px){
    .wrap{padding:0 20px;}
    section{padding:56px 0;}
    .section-head{margin-bottom:32px;}
    .hero-content{padding:44px 20px 40px;}
    .hero h1{max-width:none;}
    .facts{display:grid;grid-template-columns:1fr 1fr;gap:16px 0;border-top:1px solid rgba(255,255,255,0.28);padding-top:16px;margin-top:26px;}
    .fact{padding-right:0;margin-right:0;border-right:none;}
    .gallery{grid-template-columns:1fr;}
    .gallery img:first-child{grid-column:1;height:200px;}
    .gallery img{height:180px;}
    .courtyard-text{padding:28px 22px;}
    .amen-grid{gap:0;}
    .amen-item{padding:14px 0;}
    .review-score{font-size:44px;}
    .lang-toggle-btn{padding:9px 11px;}
    /* These paddings were sized for the old vertical dropdown, where width was
       free. The languages are now a single row of chips, so the horizontal
       padding has to be tight enough for four of them to fit across 375 px —
       otherwise this block silently re-wraps what the rule above just fixed.
       Vertical padding stays generous: the tap target must clear 40 px. */
    .lang-menu a{padding:11px 8px;}
    .btn{padding:14px 18px;}
  }

  /* ---------- guide / content pages (decouvrir-la-normandie etc.) ---------- */
  .guide-hero{padding:72px 0 40px;background:var(--bg-alt);border-bottom:1px solid var(--hairline);}
  .guide-hero h1{font-size:clamp(28px,4.2vw,46px);margin:12px 0 0;max-width:20ch;color:var(--marine-deep);}
  .guide-hero .lede{max-width:62ch;color:var(--ink-soft);font-size:17px;margin-top:16px;}
  .guide-note{max-width:62ch;font-size:14px;color:var(--ink-soft);border-left:2px solid var(--sand);padding-left:14px;margin-top:22px;}
  .guide-note a{color:var(--marine);}
  /* Body copy of a guide section. Scoped to direct children of .wrap on purpose:
     an id-based selector (#debarquement h3) also caught the h3 inside .chart-item
     and .amen-item and overrode their smaller type. */
  .guide-section > .wrap > h3{
    font-size:20px;margin:38px 0 10px;color:var(--marine-deep);
  }
  .guide-section > .wrap > p{
    max-width:68ch;color:var(--ink-soft);margin:0 0 14px;
  }
  .guide-section > .wrap > p.guide-note{max-width:62ch;font-size:14px;padding-left:14px;}
  #gastronomie .amen-grid{margin-top:18px;}
  /* The footer is already marine-deep, so a dark CTA here would merge into it.
     Keep this light so it reads as a separate step before the footer. */
  .guide-cta{background:var(--panel);border-top:3px solid var(--sand);}
  .guide-cta .section-head{margin-bottom:26px;}
  .guide-toc{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px;}
  .guide-toc a{
    font-family:'Space Mono',monospace;font-size:11.5px;letter-spacing:0.02em;
    padding:7px 12px;border:1px solid var(--hairline);border-radius:var(--radius);
    background:var(--panel);color:var(--ink-soft);text-decoration:none;
  }
  .guide-toc a:hover{background:var(--marine);color:#fff;border-color:var(--marine);}

  /* Illustrations. Every <img> carries width/height so the browser reserves the
     space before the file arrives — otherwise the text below jumps as each one
     loads, which is both unpleasant and a Core Web Vitals penalty. */
  /* Same measure as the body copy above it, so image and text share one column
     instead of the figure running the full 1 120 px of .wrap. */
  .guide-fig{margin:24px 0 30px;max-width:68ch;}
  .guide-fig img{
    display:block;width:100%;height:auto;border-radius:var(--radius);
    border:1px solid var(--hairline);background:var(--bg-alt);
  }
  .guide-fig figcaption{font-size:12.5px;color:var(--ink-soft);margin-top:9px;max-width:70ch;}
  .guide-fig figcaption a{color:var(--marine);}
  /* Tall portrait shots would otherwise run to 1 400 px on a desktop screen. */
  .guide-fig-tall img{max-height:520px;object-fit:cover;object-position:center 30%;}

  /* ---------- key events ---------- */
  .event-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:26px;}
  .event-card{
    background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius);
    overflow:hidden;display:flex;flex-direction:column;
  }
  .event-card img{display:block;width:100%;height:190px;object-fit:cover;}
  .event-card-body{padding:18px 20px 22px;}
  .event-card .dist{
    font-family:'Space Mono',monospace;font-size:12.5px;color:var(--sand-contrast);
    display:block;margin-bottom:6px;
  }
  .event-card h3{
    font-family:'Inter',sans-serif;font-weight:600;font-size:16px;margin:0 0 6px;
    color:var(--marine-deep);letter-spacing:0;
  }
  .event-card p{margin:0;font-size:14px;color:var(--ink-soft);}
  @media (max-width:900px){.event-grid{grid-template-columns:1fr 1fr;}}
  @media (max-width:600px){.event-grid{grid-template-columns:1fr;}}

  /* ---------- guide breadcrumb, dates and photo credits ---------- */
  .guide-crumbs{font-size:12.5px;color:var(--ink-soft);margin:0 0 14px;}
  .guide-crumbs a{color:var(--marine);}
  .guide-crumbs span{color:var(--ink-soft);opacity:0.6;padding:0 6px;}
  .guide-dates{
    font-family:'Space Mono',monospace;font-size:11.5px;letter-spacing:0.02em;
    color:var(--ink-soft);margin-top:26px;
  }
  .guide-credits{
    font-size:12.5px;color:var(--ink-soft);max-width:80ch;
    margin-top:38px;padding-top:16px;border-top:1px solid var(--hairline);
  }
  .guide-credits a{color:var(--marine);}
  /* The Alentours block on the home page sits on marine-deep. */
  .surroundings .guide-note{color:#C4D4CE;border-left-color:var(--sand);}
  .surroundings .guide-note a{color:var(--sand);}
