/* ===== Lumi House - shared styles =====
   Loaded by index.html, educational-approach.html, lumiere-club.html and
   rsvp.html. */
  :root{
    --cream: #F7F3E8;
    --cream-deep: #EFE9DA;
    --sage: #A9B99B;
    --sage-deep: #6F7F60;
    --rose: #D7A39B;
    --rose-deep: #B5635A;
    --peach: #E8B98A;
    --peach-deep: #C98847;
    --ink: #3F4A3A;
    --body: #5C5547;
    --paper: #FDFBF5;
    --line: rgba(63,74,58,0.14);

    /* Decorative polka-dot tints (pale washes of the brand palette) */
    --dot-sage: #D9DECE;
    --dot-blush: #F2DED5;
    --dot-butter: #F5E5C8;
    --dot-sky: #DCE3E6;

    /* Type: Newsreader (modern serif) for headings, Manrope for everything else */
    --serif: 'Newsreader', Georgia, 'Times New Roman', serif;
    --sans: 'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;
  }

  *{ margin:0; padding:0; box-sizing:border-box; }

  html{ scroll-behavior:smooth; }

  body{
    background:var(--cream);
    color:var(--body);
    font-family:var(--sans);
    font-weight:400;
    line-height:1.65;
    overflow-x:hidden;
  }

  h1,h2,h3,h4,.serif{
    font-family:var(--serif);
    color:var(--ink);
    font-weight:400;
    letter-spacing:-0.01em;
  }
  /* Small secondary / editorial headings sit a notch heavier than the big ones. */
  h3,h4,.serif-md{ font-weight:500; letter-spacing:-0.005em; }

  .eyebrow{
    font-family:var(--sans);
    font-size:0.71rem;
    letter-spacing:0.17em;
    text-transform:uppercase;
    color:var(--sage-deep);
    font-weight:500;
  }
  .eyebrow::before{
    content:"";
    display:inline-block;
    width:1.7rem;
    height:1px;
    background:currentColor;
    opacity:0.55;
    vertical-align:0.3em;
    margin-right:0.65rem;
  }

  a{ color:inherit; text-decoration:none; }

  img{ display:block; max-width:100%; }

  .wrap{
    max-width:1180px;
    margin:0 auto;
    padding:0 6vw;
  }

  /* ===== NAV ===== */
  nav{
    position:sticky;
    top:0;
    z-index:50;
    background:var(--cream);
    border-bottom:1px solid var(--line);
  }
  .nav-inner{
    max-width:1180px;
    margin:0 auto;
    /* No horizontal padding: with 6vw on each side the bar loses width as the
       viewport grows (the max-width caps, the padding does not), and the links
       stop fitting again past ~1900px. Below the hamburger breakpoint the links
       are hidden, so the bar is inset there to line the logo up with the page
       content and the mobile menu panel. */
    padding:0.8rem 0;
    min-height:64px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1.5rem;
  }
  .logo{
    display:flex;
    align-items:center;
    gap:0.55rem;
    line-height:1;
  }
  .logo-mark{ width:29px; height:27px; flex:none; display:block; }
  .logo-text{
    display:block;
    font-family:var(--serif);
    font-weight:500;
    font-size:1.24rem;
    line-height:1;
    color:var(--sage-deep);
    letter-spacing:-0.005em;
  }
  .nav-right{
    display:flex;
    align-items:center;
    gap:1rem;
  }
  .nav-links{
    display:flex;
    align-items:center;
    gap:1.05rem;
    font-size:0.76rem;
    font-weight:500;
    letter-spacing:0.015em;
  }
  .nav-links a{
    color:var(--body);
    line-height:1;
    padding:4px 0;
    border-top:1px solid transparent;
    border-bottom:1px solid transparent;
    transition:color 0.2s, border-color 0.2s;
  }
  .nav-links a:hover{ color:var(--ink); border-bottom-color:var(--ink); }
  .nav-links a.is-current{ color:var(--ink); border-bottom-color:rgba(63,74,58,0.45); }
  /* Buttons & CTAs: Manrope SemiBold */
  .nav-cta,
  .btn-primary,
  .reserve-form button,
  .press-action{ font-family:var(--sans); font-weight:600; }

  .nav-cta{
    display:inline-flex;
    align-items:center;
    height:38px;
    padding:0 1.1rem;
    background:var(--ink);
    color:var(--paper) !important;
    border-radius:2px;
    font-size:0.78rem;
    letter-spacing:0.08em;
    text-transform:uppercase;
    white-space:nowrap;
    transition:background 0.2s;
  }
  .nav-cta:hover{ background:var(--sage-deep); }

  /* ===== LANGUAGE SWITCH ===== */
  .lang-switch{
    display:inline-flex;
    align-items:stretch;
    height:38px;
    border:1px solid rgba(63,74,58,0.28);
    border-radius:2px;
    overflow:hidden;
    flex:none;
  }
  .lang-switch button{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:41px;
    background:transparent;
    border:none;
    cursor:pointer;
    font-family:var(--sans);
    font-weight:500;
    font-size:0.74rem;
    letter-spacing:0.1em;
    padding:0 0.7rem;
    color:var(--body);
    transition:background 0.2s, color 0.2s;
  }
  .lang-switch button + button{ border-left:1px solid rgba(63,74,58,0.28); }
  .lang-switch button:hover{ color:var(--ink); }
  .lang-switch button[aria-pressed="true"]{
    background:var(--ink);
    color:var(--paper);
  }

  /* ===== MOBILE MENU ===== */
  /* Hamburger lives at the top right; hidden on desktop, where .nav-links show. */
  .nav-toggle{
    display:none;
    width:42px;
    height:42px;
    flex:none;
    align-items:center;
    justify-content:center;
    background:transparent;
    border:1px solid var(--line);
    border-radius:3px;
    cursor:pointer;
    padding:0;
    color:var(--ink);
    transition:background 0.2s, border-color 0.2s;
  }
  .nav-toggle:hover{ background:rgba(63,74,58,0.05); }
  /* Three bars drawn from one element: the middle is the block itself. */
  .nav-toggle-bars,
  .nav-toggle-bars::before,
  .nav-toggle-bars::after{
    display:block;
    width:19px;
    height:1.5px;
    background:currentColor;
    border-radius:2px;
    transition:transform 0.24s ease, opacity 0.18s ease;
  }
  .nav-toggle-bars{ position:relative; }
  .nav-toggle-bars::before,
  .nav-toggle-bars::after{
    content:"";
    position:absolute;
    left:0;
  }
  .nav-toggle-bars::before{ top:-6px; }
  .nav-toggle-bars::after{ top:6px; }
  /* Open state morphs the bars into a cross. */
  .nav-toggle[aria-expanded="true"] .nav-toggle-bars{ background:transparent; }
  .nav-toggle[aria-expanded="true"] .nav-toggle-bars::before{ transform:translateY(6px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] .nav-toggle-bars::after{ transform:translateY(-6px) rotate(-45deg); }

  .mobile-menu{
    display:none;
    position:absolute;
    top:100%;
    left:0;
    right:0;
    max-height:calc(100dvh - 64px);
    overflow-y:auto;
    flex-direction:column;
    gap:0.15rem;
    padding:0.6rem 6vw 1.5rem;
    background:var(--cream);
    border-top:1px solid var(--line);
    box-shadow:0 18px 30px -18px rgba(63,74,58,0.28);
  }
  .mobile-menu[hidden]{ display:none; }
  .mobile-menu a{
    display:block;
    padding:0.85rem 0;
    font-size:1.02rem;
    font-weight:500;
    color:var(--body);
    border-bottom:1px solid var(--line);
  }
  .mobile-menu a:last-of-type{ border-bottom:none; }
  .mobile-menu a.is-current{ color:var(--sage-deep); }
  .mobile-menu .mobile-menu-cta{
    margin-top:1.1rem;
    justify-content:center;
    text-align:center;
    color:var(--paper);
    font-size:0.8rem;
    padding:1rem 1.8rem;
  }

  /* ===== HERO ===== */
  .hero{
    position:relative;
    isolation:isolate;
    overflow:hidden;
    padding:4rem 0 4.75rem;
  }
  /* Scattered polka dots behind the hero content. Each dot is one
     radial-gradient layer; --dot-r scales the whole set at once. */
  .hero::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:-1;
    pointer-events:none;
    --dot-r:92px;
    background-repeat:no-repeat;
    background-image:
      radial-gradient(circle at 4% 14%,  var(--dot-blush)  0 calc(var(--dot-r) * 1.00), transparent calc(var(--dot-r) * 1.00 + 1.5px)),
      radial-gradient(circle at 27% 12%, var(--dot-sage)   0 calc(var(--dot-r) * 0.78), transparent calc(var(--dot-r) * 0.78 + 1.5px)),
      radial-gradient(circle at 52% 13%, var(--dot-butter) 0 calc(var(--dot-r) * 0.60), transparent calc(var(--dot-r) * 0.60 + 1.5px)),
      radial-gradient(circle at 93% 12%, var(--dot-sky)    0 calc(var(--dot-r) * 0.84), transparent calc(var(--dot-r) * 0.84 + 1.5px)),
      radial-gradient(circle at 1% 41%,  var(--dot-sage)   0 calc(var(--dot-r) * 1.14), transparent calc(var(--dot-r) * 1.14 + 1.5px)),
      radial-gradient(circle at 98% 45%, var(--dot-blush)  0 calc(var(--dot-r) * 1.04), transparent calc(var(--dot-r) * 1.04 + 1.5px)),
      radial-gradient(circle at 30% 47%, var(--dot-sky)    0 calc(var(--dot-r) * 0.46), transparent calc(var(--dot-r) * 0.46 + 1.5px)),
      radial-gradient(circle at 8% 69%,  var(--dot-butter) 0 calc(var(--dot-r) * 0.72), transparent calc(var(--dot-r) * 0.72 + 1.5px)),
      radial-gradient(circle at 50% 57%, var(--dot-blush)  0 calc(var(--dot-r) * 0.40), transparent calc(var(--dot-r) * 0.40 + 1.5px)),
      radial-gradient(circle at 97% 72%, var(--dot-sage)   0 calc(var(--dot-r) * 0.56), transparent calc(var(--dot-r) * 0.56 + 1.5px)),
      radial-gradient(circle at 18% 87%, var(--dot-blush)  0 calc(var(--dot-r) * 0.94), transparent calc(var(--dot-r) * 0.94 + 1.5px)),
      radial-gradient(circle at 44% 84%, var(--dot-sage)   0 calc(var(--dot-r) * 0.66), transparent calc(var(--dot-r) * 0.66 + 1.5px)),
      radial-gradient(circle at 75% 88%, var(--dot-butter) 0 calc(var(--dot-r) * 0.78), transparent calc(var(--dot-r) * 0.78 + 1.5px));
  }
  .hero-grid{
    display:grid;
    grid-template-columns:1.08fr 0.92fr;
    gap:4.5vw;
    align-items:start;
  }
  .hero-photo{
    border-radius:2px;
    overflow:hidden;
    aspect-ratio:4/5;
  }
  .hero-photo img{ width:100%; height:100%; object-fit:cover; }
  .hero-caption{
    margin-top:0.85rem;
    padding-top:0.75rem;
    border-top:1px solid var(--line);
    font-size:0.79rem;
    line-height:1.5;
    color:var(--body);
  }
  .hero-caption strong{ display:block; font-family:var(--sans); font-size:0.9rem; font-weight:600; color:var(--ink); }

  .hero-copy .eyebrow{ margin-bottom:1.2rem; display:block; }
  .hero-copy h1{
    font-size:3.5rem;
    line-height:1.05;
    letter-spacing:-0.022em;
    margin-bottom:1.3rem;
  }
  .hero-copy h1 em{
    font-style:italic;
    color:var(--rose-deep);
    font-weight:400;
  }
  .hero-tagline{
    font-family:var(--serif);
    font-style:italic;
    font-size:1.12rem;
    color:var(--sage-deep);
    margin-bottom:1.2rem;
    line-height:1.5;
    max-width:450px;
  }
  .hero-desc{
    font-size:0.97rem;
    max-width:470px;
    margin-bottom:2rem;
  }
  .hero-actions{
    display:flex;
    align-items:center;
    gap:1.5rem;
    flex-wrap:wrap;
    padding-top:1.7rem;
    border-top:1px solid var(--line);
  }
  .btn-primary{
    display:inline-flex;
    align-items:center;
    background:var(--ink);
    color:var(--paper);
    padding:0.95rem 1.8rem;
    border-radius:2px;
    font-size:0.78rem;
    letter-spacing:0.09em;
    text-transform:uppercase;
    transition:background 0.2s;
  }
  .btn-primary:hover{ background:var(--sage-deep); }
  .hero-actions .meta{
    font-size:0.82rem;
    color:var(--body);
    max-width:230px;
    line-height:1.45;
  }
  .hero-actions .meta strong{ color:var(--ink); }

  /* ===== PILLARS ===== */
  .pillars{ padding:0.5rem 0 5.5rem; }
  .pillars-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:1.1rem;
  }
  .pillar{
    border-radius:2px;
    padding:1.7rem 1.7rem 1.9rem;
  }
  .pillar.p-sage{ background:var(--sage); }
  .pillar.p-rose{ background:var(--rose); }
  .pillar.p-peach{ background:var(--peach); }
  .pillar-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding-bottom:0.85rem;
    margin-bottom:1.25rem;
    border-bottom:1px solid rgba(251,248,242,0.5);
  }
  .pillar-num{
    font-family:var(--serif);
    font-size:0.95rem;
    letter-spacing:0.08em;
    color:var(--paper);
  }
  .pillar-head svg{ opacity:0.85; }
  .pillar h3{
    font-size:1.2rem;
    line-height:1.22;
    margin-bottom:0.55rem;
    color:#fff;
  }
  .pillar p{
    font-size:0.9rem;
    color:rgba(255,255,255,0.93);
    line-height:1.55;
  }

  /* ===== WHY SECTION ===== */
  .why{ padding:1.5rem 0 5.5rem; }
  .section-head{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    margin-bottom:2.8rem;
    padding-bottom:1.5rem;
    border-bottom:1px solid var(--line);
    gap:2.5rem;
    flex-wrap:wrap;
  }
  .section-head h2{ font-size:2.35rem; max-width:560px; line-height:1.14; letter-spacing:-0.018em; }
  .section-head .eyebrow{ margin-bottom:0.85rem; display:block; }
  .section-tag{
    font-family:var(--sans);
    font-weight:500;
    font-size:0.72rem;
    letter-spacing:0.15em;
    text-transform:uppercase;
    color:var(--sage-deep);
    text-align:right;
    max-width:220px;
  }

  .photo-row{
    display:grid;
    grid-template-columns:1fr 1fr 1fr;
    gap:1.1rem;
    margin-bottom:3.4rem;
  }
  .photo-row .ph{
    border-radius:2px;
    overflow:hidden;
    aspect-ratio:4/3;
  }
  .photo-row .ph img{ width:100%;height:100%;object-fit:cover; }

  .features-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:2.1rem 3rem;
  }
  .feature.feature-wide{ grid-column:1 / -1; }
  .feature{
    display:flex;
    gap:1rem;
    align-items:flex-start;
    border-top:1px solid var(--line);
    padding-top:1.35rem;
  }
  .feature-icon{
    flex:none;
    width:22px;height:22px;
    margin-top:0.15rem;
    background:none;
    display:flex;align-items:center;justify-content:center;
  }
  .feature h3{ font-size:1.08rem; line-height:1.3; margin-bottom:0.35rem; }
  .feature p{ font-size:0.91rem; }
  .feature .exclusive{
    display:inline-block;
    margin-top:0.55rem;
    font-family:var(--sans);
    font-weight:500;
    font-size:0.68rem;
    letter-spacing:0.12em;
    text-transform:uppercase;
    color:var(--rose-deep);
    border:1px solid rgba(181,99,90,0.45);
    border-radius:1px;
    padding:0.22rem 0.6rem;
  }

  /* ===== GALLERY STRIP ===== */
  .gallery{ padding:0 0 5.5rem; }
  .gallery-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:1.1rem;
  }
  .gallery .ph img{
    width:100%;
    aspect-ratio:3/4;
    object-fit:cover;
    border-radius:2px;
  }
  .gallery .ph .cap{
    margin-top:0.85rem;
    padding-top:0.7rem;
    border-top:1px solid var(--line);
    color:var(--body);
    font-size:0.79rem;
    letter-spacing:0.01em;
  }

  /* ===== DAY RHYTHM ===== */
  .rhythm{
    padding:5.5rem 0;
    background:var(--cream-deep);
  }
  .rhythm .section-head h2{ max-width:600px; }
  .rhythm-line{
    margin-top:3rem;
  }
  .rhythm-track{
    display:grid;
    grid-template-columns:repeat(6,1fr);
    gap:0 1.6rem;
  }
  .rstop{
    border-top:1px solid rgba(63,74,58,0.25);
    padding-top:1.15rem;
  }
  .rstop .time{
    font-family:var(--serif);
    color:var(--peach-deep);
    font-size:1.18rem;
    line-height:1;
    margin-bottom:0.6rem;
    display:block;
  }
  .rstop h4{
    font-size:0.95rem;
    color:var(--ink);
    margin-bottom:0.35rem;
    font-family:var(--serif);
    font-weight:500;
    letter-spacing:-0.005em;
  }
  .rstop p{ font-size:0.83rem; line-height:1.5; }

  /* ===== TESTIMONIAL / TRUST STRIP ===== */
  .trust{
    padding:5rem 0;
  }
  .trust-inner{
    display:grid;
    grid-template-columns:0.95fr 1.05fr;
    gap:4vw;
    align-items:center;
  }
  .trust-photo{
    border-radius:2px;
    overflow:hidden;
    aspect-ratio:4/3.2;
  }
  .trust-photo img{ width:100%;height:100%;object-fit:cover; }
  .trust-quote{
    font-family:var(--serif);
    font-size:1.6rem;
    font-style:italic;
    color:var(--ink);
    line-height:1.35;
    max-width:470px;
    padding-top:1.5rem;
    border-top:1px solid var(--line);
    margin-bottom:1.1rem;
  }
  .trust-attr{
    font-family:var(--sans);
    font-weight:500;
    font-size:0.72rem;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--sage-deep);
  }

  /* ===== WHO WE ARE (home page) ===== */
  .founders{
    padding:0 0 5rem;
  }
  .founders-inner{
    display:grid;
    grid-template-columns:0.92fr 1.08fr;
    gap:4vw;
    align-items:start;
    margin-top:2.4rem;
  }
  .founders-photo{
    border-radius:2px;
    overflow:hidden;
    aspect-ratio:3/2;
  }
  .founders-photo img{ width:100%; height:100%; object-fit:cover; display:block; }
  .founders-text > * + *{ margin-top:1rem; }
  .founders-text p{ font-size:0.96rem; max-width:600px; }
  .founders-goal{
    font-family:var(--serif);
    font-style:italic;
    font-size:1.1rem;
    line-height:1.5;
    color:var(--sage-deep);
    padding-top:1.1rem;
    border-top:1px solid var(--line);
  }

  /* ===== CTA / RESERVE ===== */
  .reserve{
    padding:5.5rem 0 6.5rem;
  }
  .reserve-card{
    background:var(--ink);
    border-radius:2px;
    padding:3.6rem 4vw;
    display:grid;
    grid-template-columns:1.1fr 0.9fr;
    gap:3.4rem;
    align-items:start;
  }
  .reserve-left .eyebrow{ color:var(--peach); margin-bottom:1rem; display:block;}
  .reserve-left h2{
    color:var(--paper);
    font-size:2.3rem;
    line-height:1.14;
    letter-spacing:-0.015em;
    margin-bottom:1.1rem;
  }
  .reserve-left p{
    color:rgba(251,248,242,0.78);
    max-width:420px;
    font-size:0.94rem;
  }
  /* Where and when, under the RSVP copy on the dark card (rsvp.html). Two
     classes so it wins over .reserve-left p at every breakpoint. */
  .reserve-left .rsvp-details{
    margin-top:1.5rem;
    padding-top:1.2rem;
    border-top:1px solid rgba(251,248,242,0.2);
    font-family:var(--sans);
    font-size:0.85rem;
    line-height:1.85;
    color:var(--peach);
  }
  .reserve-form{
    background:var(--paper);
    border-radius:2px;
    padding:2rem 2rem 1.8rem;
  }
  .reserve-form label{
    display:block;
    font-family:var(--sans);
    font-weight:500;
    font-size:0.7rem;
    letter-spacing:0.12em;
    text-transform:uppercase;
    color:var(--sage-deep);
    margin-bottom:0.4rem;
    margin-top:1rem;
  }
  .reserve-form label:first-child{ margin-top:0; }
  .reserve-form input{
    width:100%;
    border:none;
    border-bottom:1.5px solid var(--line);
    background:transparent;
    padding:0.5rem 0.1rem;
    font-family:var(--sans);
    font-size:0.95rem;
    color:var(--ink);
    outline:none;
  }
  .reserve-form input:focus{ border-bottom-color:var(--sage-deep); }
  .reserve-form button{
    margin-top:1.7rem;
    width:100%;
    background:var(--ink);
    color:var(--paper);
    border:none;
    padding:0.95rem;
    border-radius:2px;
    font-family:var(--sans);
    font-size:0.78rem;
    letter-spacing:0.09em;
    text-transform:uppercase;
    cursor:pointer;
    transition:background 0.2s;
  }
  .reserve-form button:hover{ background:var(--sage-deep); }
  .reserve-form .fineprint{
    font-size:0.72rem;
    color:var(--body);
    margin-top:0.9rem;
    text-align:center;
  }

  /* ===== PRESS ===== */
  .press{
    padding:0 0 4.5rem;
  }
  .press-link{
    display:grid;
    grid-template-columns:auto 1fr auto;
    align-items:center;
    gap:1.3rem;
    padding:1.35rem 1.5rem;
    border:1px solid var(--line);
    border-radius:2px;
    background:transparent;
    transition:border-color 0.2s, background 0.2s;
  }
  .press-link:hover{
    border-color:rgba(111,127,96,0.45);
    background:var(--paper);
  }
  .press-mark{
    width:44px;
    height:44px;
    border-radius:2px;
    background:var(--rose);
    color:var(--paper);
    display:flex;
    align-items:center;
    justify-content:center;
    font-family:var(--serif);
    font-style:italic;
    font-size:1.15rem;
    flex:none;
  }
  .press-copy .eyebrow{ display:block; margin-bottom:0.3rem; }
  .press-copy strong{
    font-family:var(--serif);
    color:var(--ink);
    font-size:1.2rem;
    font-weight:500;
  }
  .press-action{
    color:var(--sage-deep);
    font-size:0.74rem;
    letter-spacing:0.12em;
    text-transform:uppercase;
    white-space:nowrap;
  }

  /* ===== FOOTER ===== */
  footer{
    border-top:1px solid var(--line);
    padding:3.2rem 0 2.4rem;
  }
  .footer-inner{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    flex-wrap:wrap;
    gap:2rem;
  }
  .footer-brand .logo{ margin-bottom:0.8rem; }
  .footer-brand p{ font-size:0.85rem; max-width:280px; }
  .footer-col h4{
    font-family:var(--sans);
    font-weight:500;
    font-size:0.71rem;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--sage-deep);
    margin-bottom:0.8rem;
  }
  .footer-col p, .footer-col a{
    font-size:0.88rem;
    display:block;
    margin-bottom:0.4rem;
    color:var(--body);
  }
  .footer-col a:hover{ color:var(--ink); }
  .instagram-link{
    display:inline-flex !important;
    align-items:center;
    gap:0.55rem;
    margin-top:0.25rem;
  }
  .instagram-link svg{ flex:none; }
  .footer-bottom{
    margin-top:2.6rem;
    padding-top:1.6rem;
    border-top:1px solid var(--line);
    font-size:0.78rem;
    color:var(--body);
    display:flex;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:0.6rem;
  }

  /* ===== RESPONSIVE ===== */
  /* The nav links plus the CTA and the language switch stop fitting on one line
     before the layout itself needs stacking, so the hamburger takes over at its
     own, wider breakpoint. Six links need ~960px, or ~1035px until Manrope has
     loaded and the wider fallback font is still in use. */
  @media (max-width:1180px){
    .nav-inner{ padding-left:6vw; padding-right:6vw; }
    .nav-toggle{ display:flex; }
    .mobile-menu:not([hidden]){ display:flex; }
    .nav-links{ display:none; }
    .nav-right{ gap:1rem; }
  }
  @media (max-width:980px){
    .hero::before{ --dot-r:74px; }
    .page-head::before{ --dot-r:54px; }
    .hero-grid{ grid-template-columns:1fr; }
    .hero-figure{ order:-1; }
    .hero-photo{ aspect-ratio:16/11; }
    .hero-copy h1{ font-size:2.7rem; }
    .pillars-grid{ grid-template-columns:1fr; }
    .photo-row{ grid-template-columns:1fr 1fr 1fr; gap:0.8rem; }
    .features-grid{ grid-template-columns:1fr; gap:2rem; }
    .gallery-grid{ grid-template-columns:1fr 1fr; }
    .rhythm-track{ grid-template-columns:repeat(3,1fr); row-gap:2.2rem; }
    .trust-inner{ grid-template-columns:1fr; }
    .reserve-card{ grid-template-columns:1fr; padding:2.6rem 6vw; }
    .founders-inner{ grid-template-columns:1fr; }
    .section-head{ flex-direction:column; align-items:flex-start; }
    .section-tag{ text-align:left; }
  }
  @media (max-width:600px){
    .wrap{ padding:0 5vw; }
    .nav-inner{ padding-left:5vw; padding-right:5vw; }
    .hero::before{ --dot-r:52px; }
    .page-head::before{ --dot-r:40px; }
    .hero{ padding:2.6rem 0 3rem; }
    .hero-copy h1{ font-size:2.2rem; }
    .gallery-grid{ grid-template-columns:1fr 1fr; }
    .rhythm-track{ grid-template-columns:1fr 1fr; }
    .reserve-left h2{ font-size:1.9rem; }
    .logo-text{ font-size:1.08rem; }
    .nav-cta{ display:none; }
    .rhythm-track{ column-gap:1.1rem; }
    .press-link{ grid-template-columns:auto 1fr; gap:1rem; }
    .press-action{ grid-column:2; }
    .footer-inner{ flex-direction:column; }
    /* Three thumbnails side by side get too small on a phone. */
    .photo-row{ grid-template-columns:1fr 1fr; gap:0.7rem; margin-bottom:2.4rem; }
    .photo-row .ph:first-child{ grid-column:1/-1; }
    .reserve-card{ padding:2.2rem 5vw; gap:2.2rem; }
    .reserve-form{ padding:1.4rem 1.2rem 1.3rem; }
    .page-cta{ flex-direction:column; align-items:flex-start; gap:1.4rem; }
    .lang-switch{ height:42px; }
  }

  /* ===== CONTENT PAGES (approach, Lumière Family Club) ===== */
  .page-head{
    position:relative;
    isolation:isolate;
    overflow:hidden;
    padding:3.4rem 0 2.6rem;
  }
  /* A sparser version of the hero dots, so the inner pages share the pattern. */
  .page-head::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:-1;
    pointer-events:none;
    --dot-r:64px;
    background-repeat:no-repeat;
    background-image:
      radial-gradient(circle at 3% 26%,  var(--dot-sage)   0 calc(var(--dot-r) * 1.00), transparent calc(var(--dot-r) * 1.00 + 1.5px)),
      radial-gradient(circle at 88% 22%, var(--dot-butter) 0 calc(var(--dot-r) * 0.82), transparent calc(var(--dot-r) * 0.82 + 1.5px)),
      radial-gradient(circle at 97% 62%, var(--dot-blush)  0 calc(var(--dot-r) * 0.62), transparent calc(var(--dot-r) * 0.62 + 1.5px)),
      radial-gradient(circle at 70% 78%, var(--dot-sky)    0 calc(var(--dot-r) * 0.48), transparent calc(var(--dot-r) * 0.48 + 1.5px)),
      radial-gradient(circle at 34% 84%, var(--dot-blush)  0 calc(var(--dot-r) * 0.70), transparent calc(var(--dot-r) * 0.70 + 1.5px));
  }
  .page-head .eyebrow{ display:block; margin-bottom:1.1rem; }
  .page-head h1{
    font-size:3rem;
    line-height:1.07;
    letter-spacing:-0.022em;
    max-width:740px;
    margin-bottom:1.3rem;
  }
  .page-lead{
    font-family:var(--serif);
    font-style:italic;
    font-size:1.15rem;
    line-height:1.5;
    color:var(--sage-deep);
    max-width:560px;
  }
  .page-body{ padding:0 0 1rem; }

  .doc-section{
    display:grid;
    grid-template-columns:0.4fr 0.6fr;
    gap:3vw;
    margin-top:2.8rem;
    padding-top:1.6rem;
    border-top:1px solid var(--line);
  }
  .doc-section:first-child{ margin-top:0; }
  /* Label introducing a group of sections: it takes over the rule above the
     first section of the group so the two read as one unit. */
  .group-head{
    margin-top:3.4rem;
    padding-top:1.6rem;
    border-top:1px solid var(--line);
  }
  .group-head + .doc-section{
    margin-top:1.4rem;
    padding-top:0;
    border-top:none;
  }
  .doc-section > h2{
    font-size:1.75rem;
    line-height:1.18;
    letter-spacing:-0.015em;
    max-width:300px;
  }
  .doc-body > * + *{ margin-top:1rem; }
  .doc-body p{ font-size:0.96rem; max-width:640px; }
  .doc-body p.intro{
    font-family:var(--serif);
    font-style:italic;
    font-size:1.1rem;
    line-height:1.5;
    color:var(--sage-deep);
  }
  .doc-note{
    font-size:0.85rem;
    color:var(--sage-deep);
    font-style:italic;
    font-family:var(--serif);
  }

  .principles{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:1.7rem 2.6rem;
  }
  .principle{
    border-top:1px solid var(--line);
    padding-top:1.1rem;
  }
  .principle .n{
    display:block;
    font-family:var(--serif);
    font-size:0.85rem;
    letter-spacing:0.1em;
    color:var(--peach-deep);
    margin-bottom:0.5rem;
  }
  .principle h3{
    font-family:var(--serif);
    font-weight:500;
    font-size:1.05rem;
    color:var(--ink);
    margin-bottom:0.3rem;
    letter-spacing:-0.005em;
  }
  .principle p{ font-size:0.89rem; line-height:1.55; }

  .time-list{ list-style:none; max-width:430px; }
  .time-list li{
    font-family:var(--serif);
    font-style:italic;
    font-size:1.02rem;
    color:var(--ink);
    padding:0.5rem 0;
    border-bottom:1px solid var(--line);
  }
  .doc-pull{
    font-family:var(--serif);
    font-style:italic;
    font-size:1.3rem;
    line-height:1.4;
    color:var(--sage-deep);
    max-width:520px;
  }
  .doc-sig{
    font-family:var(--sans);
    font-weight:500;
    font-size:0.72rem;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--sage-deep);
  }

  /* Inline photo with a caption on the content pages. Full content width, at
     the source's own ratio, so nothing is cropped. */
  .ph-figure{ margin-top:2.8rem; }
  .ph-figure img{
    display:block;
    width:100%;
    height:auto;
    border-radius:2px;
  }
  .ph-figure figcaption{
    margin-top:0.85rem;
    padding-top:0.7rem;
    border-top:1px solid var(--line);
    font-size:0.79rem;
    color:var(--body);
  }

  .page-cta{
    margin-top:3.6rem;
    padding:2.2rem 0 0;
    border-top:1px solid var(--line);
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:2rem;
    flex-wrap:wrap;
  }
  .page-cta p{
    font-family:var(--serif);
    font-style:italic;
    font-size:1.25rem;
    color:var(--ink);
    max-width:430px;
  }
  .page-cta .cta-lines{
    display:block;
    font-family:var(--sans);
    font-style:normal;
    font-size:0.85rem;
    color:var(--body);
    margin-top:0.6rem;
  }
  .page-cta .cta-lines a{ border-bottom:1px solid rgba(111,127,96,0.4); }

  /* ===== LUMIERE CLUB ===== */
  /* Standing notice at the top of the page: the club is not open yet and every
     picture on the page is a rendering of the plans rather than a photo. */
  .club-banner{
    margin-bottom:2.6rem;
    padding:1.4rem 1.6rem;
    border:1px solid rgba(200,150,110,0.45);
    border-left:3px solid var(--peach-deep);
    border-radius:2px;
    background:rgba(232,181,131,0.12);
    max-width:760px;
  }
  .club-banner-h{
    font-family:var(--sans);
    font-weight:600;
    font-size:0.72rem;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--peach-deep);
    margin-bottom:0.55rem;
  }
  .club-banner p:last-child{ font-size:0.92rem; line-height:1.55; }
  .club-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:2rem 2.2rem;
    margin-top:2.8rem;
  }
  .club-grid img{
    display:block;
    width:100%;
    height:auto;
    border-radius:2px;
  }
  .club-grid figcaption{
    margin-top:0.75rem;
    padding-top:0.6rem;
    border-top:1px solid var(--line);
    font-size:0.79rem;
    line-height:1.5;
    color:var(--body);
  }

  @media (max-width:760px){
    .club-grid{ grid-template-columns:1fr; gap:1.8rem; }
    .club-banner{ padding:1.2rem 1.2rem; }
  }

  @media (max-width:980px){
    .doc-section{ grid-template-columns:1fr; gap:1.1rem; }
    .doc-section > h2{ max-width:none; }
    .principles{ grid-template-columns:1fr; gap:1.4rem; }
    .page-head h1{ font-size:2.4rem; }
  }
  @media (max-width:600px){
    .page-head{ padding:2.4rem 0 2rem; }
    .page-head h1{ font-size:2rem; }
    .page-lead{ font-size:1.05rem; }
    .doc-section{ margin-top:2.2rem; }
    .doc-section > h2{ font-size:1.5rem; }
    .doc-pull{ font-size:1.12rem; }
  }

  /* ===== Small illustrative icons =====
     Flat pastel glyphs in the brand palette, inlined as CSS background
     images on ::before. Keeping them in CSS rather than in the markup means
     the bilingual engine - which rewrites the innerHTML of [data-i18n]
     nodes - can never wipe them when the language changes. */
  h2.ico::before,
  .n.ico::before{
    content:"";
    background-repeat:no-repeat;
    background-position:center;
    background-size:contain;
  }
  /* Section headings: the icon sits above the heading, on its own line. */
  h2.ico::before{
    display:block;
    width:36px;
    height:36px;
    margin-bottom:0.65rem;
  }
  /* Numbered cards: the icon sits next to the 01 / 02 / 03 counter. */
  .n.ico{
    display:flex;
    align-items:center;
    gap:0.45rem;
  }
  .n.ico::before{
    width:26px;
    height:26px;
    flex:none;
  }
  .i-blocks::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2.4' y='13.2' width='8.6' height='8.2' rx='1.5' fill='%23A9B99B'/%3E%3Crect x='13' y='13.2' width='8.6' height='8.2' rx='1.5' fill='%23DCE3E6'/%3E%3Cpath d='M6.7 4.4l4.3 8H2.4z' fill='%23E8B98A'/%3E%3Ccircle cx='17.3' cy='8.4' r='4' fill='%23D7A39B'/%3E%3C/svg%3E"); }
  .i-bowl::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='6.4' r='2.6' fill='%23E8B98A'/%3E%3Cpath d='M2.6 11.4h18.8a9.4 9.4 0 0 1-18.8 0z' fill='%23A9B99B'/%3E%3Cpath d='M4 21.4h16' stroke='%236F7F60' stroke-width='1.9' stroke-linecap='round'/%3E%3C/svg%3E"); }
  .i-bubble::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='3.6' width='20' height='13.2' rx='3.6' fill='%23A9B99B'/%3E%3Cpath d='M7 16.8h4.6L7 21.4z' fill='%23A9B99B'/%3E%3Cg fill='%23F7F3E8'%3E%3Ccircle cx='8' cy='10.2' r='1.35'/%3E%3Ccircle cx='12' cy='10.2' r='1.35'/%3E%3Ccircle cx='16' cy='10.2' r='1.35'/%3E%3C/g%3E%3C/svg%3E"); }
  .i-clock::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9.2' fill='%23DCE3E6'/%3E%3Cpath d='M12 6.6v5.7l3.6 2.1' stroke='%236F7F60' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E"); }
  .i-handheart::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg transform='translate(2.7,-1) scale(0.55)' fill='%23D7A39B'%3E%3Cpath d='M12 20.4l-1.3-1.2C6 15 3 12.2 3 8.9A4.4 4.4 0 0 1 7.4 4.5c1.7 0 3.3.8 4.6 2.3 1.3-1.5 2.9-2.3 4.6-2.3A4.4 4.4 0 0 1 21 8.9c0 3.3-3 6.1-7.7 10.3z'/%3E%3C/g%3E%3Cpath d='M3.4 11.6h17.2a8.6 8.6 0 0 1-17.2 0z' fill='%23A9B99B'/%3E%3C/svg%3E"); }
  .i-heart::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 20.4l-1.3-1.2C6 15 3 12.2 3 8.9A4.4 4.4 0 0 1 7.4 4.5c1.7 0 3.3.8 4.6 2.3 1.3-1.5 2.9-2.3 4.6-2.3A4.4 4.4 0 0 1 21 8.9c0 3.3-3 6.1-7.7 10.3z' fill='%23D7A39B'/%3E%3C/svg%3E"); }
  .i-hearts::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg transform='translate(0.4,3.4) scale(0.6)' fill='%23D7A39B'%3E%3Cpath d='M12 20.4l-1.3-1.2C6 15 3 12.2 3 8.9A4.4 4.4 0 0 1 7.4 4.5c1.7 0 3.3.8 4.6 2.3 1.3-1.5 2.9-2.3 4.6-2.3A4.4 4.4 0 0 1 21 8.9c0 3.3-3 6.1-7.7 10.3z'/%3E%3C/g%3E%3Cg transform='translate(9,-0.4) scale(0.58)' fill='%23A9B99B'%3E%3Cpath d='M12 20.4l-1.3-1.2C6 15 3 12.2 3 8.9A4.4 4.4 0 0 1 7.4 4.5c1.7 0 3.3.8 4.6 2.3 1.3-1.5 2.9-2.3 4.6-2.3A4.4 4.4 0 0 1 21 8.9c0 3.3-3 6.1-7.7 10.3z'/%3E%3C/g%3E%3C/svg%3E"); }
  .i-house::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.6l9.4 7.6v11.2H2.6V10.2z' fill='%23A9B99B'/%3E%3Crect x='9.4' y='14' width='5.2' height='7.4' rx='1' fill='%23E8B98A'/%3E%3C/svg%3E"); }
  .i-magnifier::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='10.4' cy='10.4' r='6.6' fill='%23DCE3E6' stroke='%236F7F60' stroke-width='1.9'/%3E%3Cpath d='M15.4 15.4l5.4 5.4' stroke='%236F7F60' stroke-width='2.3' stroke-linecap='round'/%3E%3C/svg%3E"); }
  .i-parents::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='7.8' cy='7.2' r='3.1' fill='%23A9B99B'/%3E%3Cpath d='M2 21.4c0-3.2 2.6-5.8 5.8-5.8s5.8 2.6 5.8 5.8z' fill='%23A9B99B'/%3E%3Ccircle cx='17' cy='10.4' r='2.5' fill='%23D7A39B'/%3E%3Cpath d='M12.4 21.4c0-2.5 2.1-4.6 4.6-4.6s4.6 2.1 4.6 4.6z' fill='%23D7A39B'/%3E%3C/svg%3E"); }
  .i-rainbow::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke-linecap='round'%3E%3Cpath d='M2.8 19.4a9.2 9.2 0 0 1 18.4 0' stroke='%23D7A39B' stroke-width='2.7'/%3E%3Cpath d='M6.2 19.4a5.8 5.8 0 0 1 11.6 0' stroke='%23E8B98A' stroke-width='2.7'/%3E%3Cpath d='M9.6 19.4a2.4 2.4 0 0 1 4.8 0' stroke='%23A9B99B' stroke-width='2.7'/%3E%3C/g%3E%3C/svg%3E"); }
  .i-speech::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='1.6' y='4' width='14' height='10.4' rx='3.2' fill='%23A9B99B'/%3E%3Cpath d='M5.4 14.4h4l-4 3.8z' fill='%23A9B99B'/%3E%3Crect x='9.4' y='9.2' width='13' height='9.2' rx='3.2' fill='%23E8B98A'/%3E%3Cpath d='M18.4 18.4h-3.6l3.6 3.2z' fill='%23E8B98A'/%3E%3C/svg%3E"); }
  .i-sprout::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21.4v-8.2' stroke='%236F7F60' stroke-width='1.9' stroke-linecap='round' fill='none'/%3E%3Cpath d='M11.4 13.6C11.4 10 8.5 7.2 5 7.2a.9.9 0 0 0-.9.9c0 3.6 2.9 6.4 6.4 6.4z' fill='%236F7F60'/%3E%3Cpath d='M12.6 12.9c0-4.1 3.3-7.4 7.4-7.4a.9.9 0 0 1 .9.9c0 4.1-3.3 7.4-7.4 7.4z' fill='%23A9B99B'/%3E%3C/svg%3E"); }
  .i-star::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.2l2.8 6.2 6.8.7-5.1 4.5 1.5 6.7L12 16.8l-5.9 3.5 1.5-6.7L2.4 9.1l6.8-.7z' fill='%23E8B98A'/%3E%3C/svg%3E"); }
  .i-sun::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='5' fill='%23E8B98A'/%3E%3Cg stroke='%23A9B99B' stroke-width='1.8' stroke-linecap='round'%3E%3Cpath d='M12 1.8v2.4'/%3E%3Cpath d='M12 19.8v2.4'/%3E%3Cpath d='M1.8 12h2.4'/%3E%3Cpath d='M19.8 12h2.4'/%3E%3Cpath d='M4.8 4.8l1.7 1.7'/%3E%3Cpath d='M17.5 17.5l1.7 1.7'/%3E%3Cpath d='M19.2 4.8l-1.7 1.7'/%3E%3Cpath d='M6.5 17.5l-1.7 1.7'/%3E%3C/g%3E%3C/svg%3E"); }
  .i-tree::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.4l4.6 6.6H7.4z' fill='%236F7F60'/%3E%3Cpath d='M12 6.6l6.2 9.4H5.8z' fill='%23A9B99B'/%3E%3Crect x='10.7' y='15.4' width='2.6' height='6' rx='1.1' fill='%23C98847'/%3E%3C/svg%3E"); }

  @media (max-width:600px){
    h2.ico::before{ width:30px; height:30px; margin-bottom:0.5rem; }
  }
