/* ===== Souvenirs d'Or  -  Forest Green + Warm Ivory Luxury (Vero-grade polish) ===== */

:root{
  /* palette  -  fixed, do NOT change */
  --bg:#232d1f;            /* deep forest green (base) */
  --card:#1c241a;          /* slightly deeper green for surfaces */
  --accent:#a8b89a;        /* muted sage  -  sits on the green, reads as quiet luxury */
  --accent-soft:rgba(168,184,154,.16);
  --text:#cdcabd;          /* warm off-white, dimmed for body */
  --text-bright:#f4f0ed;   /* warm ivory (primary light) */
  --line:rgba(244,240,237,.18);
  --cream:#f4f0ed;         /* warm ivory (Vero-style light bg) */
  --ink:#232d1f;           /* deep forest green (text on cream) */
  --ink-soft:#5a6450;      /* muted forest green (secondary text on cream) */
  --gold:#c9a227;          /* brand gold (social icon hover) */

  /* dark-mode flipping tokens for components that hardcode light values */
  --on-accent:#232d1f;     /* text on the sage accent button (flips to ivory in dark) */
  --opt-bg:#fff;           /* form option card bg (flips to charcoal in dark) */
  --opt-fg:var(--ink);     /* form option text (flips to ivory in dark) */
  --opt-border:rgba(35,45,31,.18);

  /* dark mode tokens - computed from light palette */
  --bg-dark:#121810;       /* deep charcoal for dark mode */
  --card-dark:#1a2218;     /* slightly lighter charcoal for dark surfaces */
  --text-dark:#e8e5d8;     /* soft ivory for dark mode body text */
  --text-bright-dark:#f4f0ed; /* same ivory for dark mode headings */
  --line-dark:rgba(244,240,237,.12);
  --cream-dark:#232d1f;    /* forest green becomes the dark mode bg */
  --ink-dark:#f4f0ed;      /* ivory for text on dark green */
  --ink-soft-dark:#c9b59a; /* softer ivory for secondary text on green */

  /* layout */
  --maxw:1240px;
  --maxw-wide:1480px;
  --thin:300;

  /* type scale  -  Vero-grade editorial */
  --fs-eyebrow:.74rem;
  --fs-body:1.05rem;
  --fs-lead:clamp(1.15rem,1.7vw,1.35rem);
  --fs-display:clamp(3.2rem,9vw,8rem);
  --fs-section:clamp(2.4rem,5.4vw,4.6rem);

  /* negative-space rhythm  -  more air */
  --pad-section:clamp(4rem,9vw,7rem);
  --pad-section-sm:clamp(3rem,7vw,5rem);
  --gap-split:clamp(3rem,8vw,8rem);
  --container-pad:7vw;

  /* motion tokens */
  --ease-expo:cubic-bezier(.19,1,.22,1);
  --ease-quint:cubic-bezier(.22,1,.36,1);
  --dur-reveal:1.1s;
  --dur-reveal-lg:1.5s;
  --stagger:.11s;
  /* WAVE1 tokens */
  --accent-ink:#5e6a4f;
  --space-1:.4rem;--space-2:.8rem;--space-3:1.2rem;--space-4:1.6rem;--space-5:2.4rem;--space-6:3.2rem;--space-7:4.8rem;--space-8:7.2rem;
  --fs-xs:.74rem;--fs-sm:.86rem;--fs-base:clamp(1rem,.96rem + .25vw,1.05rem);--fs-md:1.1rem;--fs-lg:1.8rem;--fs-mega:clamp(4rem,13vw,11rem);
  --radius-sm:2px;--radius-md:4px;--radius-pill:999px;--radius-round:50%;
  --shadow-1:0 2px 10px rgba(18,24,16,.18);--shadow-2:0 10px 30px rgba(0,0,0,.35);
  --dur-fast:.2s;--dur-base:.4s;--dur-slow:.55s;--dur-xl:.9s;
  --z-to-top:40;--z-nav:50;--z-call-fab:60;--z-nav-panel:80;--z-lightbox:100;
  --maxw-narrow:720px;--maxw-read:760px;--maxw-content:1100px;--maxw-form:520px;
  --nav-h:96px; /* exact nav height, overwritten by JS after layout */
}

/* ===== DARK MODE ===== */
[data-theme="dark"]{
  --bg:var(--bg-dark);
  --card:var(--card-dark);
  --accent:#a8b89a;        /* keep sage; self-reference here is invalid at computed-value time */
  --accent-soft:rgba(168,184,154,.22);
  --text:var(--text-dark);
  --text-bright:var(--text-bright-dark);
  --line:var(--line-dark);
  --cream:var(--cream-dark);
  --ink:var(--ink-dark);
  --ink-soft:var(--ink-soft-dark);
  --gold:#d4a832;
  --accent-ink:#8a9a5b;
  --on-accent:#f4f0ed;     /* ivory text on sage in dark (AA for large/UI; hover flips to green+ivory) */
  --opt-bg:var(--card-dark);
  --opt-fg:var(--text-bright);
  --opt-border:var(--line-dark);
  --accent-ink:#a8b89a;      /* lighten sage on charcoal so links/eyebrows clear 4.5:1 */
}

/* ===== DARK-MODE COMPONENT OVERRIDES (defensive, covers any hardcoded light values) ===== */
[data-theme="dark"]{
  /* process journey: active step gold + inactive dot must stay legible on charcoal */
  --process-gold:#e3b85a;
}
[data-theme="dark"] .step-dot{background:var(--card);border-color:rgba(244,240,237,.28);}
[data-theme="dark"] .step.is-active .step-dot{background:var(--process-gold);border-color:var(--process-gold);box-shadow:0 0 0 5px rgba(227,184,90,.20);}
[data-theme="dark"] .step-list--path .step.is-active .step-body strong{color:#e3b85a;}
[data-theme="dark"] .step-body p{color:var(--text);}
[data-theme="dark"] .process-path-bg{stroke:rgba(244,240,237,.14);}
[data-theme="dark"] .process-path-fill{stroke:var(--process-gold);}
[data-theme="dark"] .btn-solid.is-pending .spinner{border:2px solid rgba(244,240,237,.35);border-top-color:#f4f0ed;}
[data-theme="dark"] .form-options .opt:hover{background:rgba(168,184,154,.10);}
[data-theme="dark"] .form-options .opt.selected{background:rgba(168,184,154,.16);border-color:var(--accent);box-shadow:0 0 0 2px rgba(168,184,154,.30);}
/* dark-mode action buttons: deep-green fill + ivory text clears WCAG AA; hover keeps sage outline */
[data-theme="dark"] .btn-solid{background:var(--bg);color:var(--text-bright);border-color:var(--accent);}
[data-theme="dark"] .btn-solid:hover{background:transparent;color:var(--accent);}
[data-theme="dark"] .btn-call{background:var(--bg);color:var(--text-bright);border-color:var(--accent);}
[data-theme="dark"] .btn-call:hover{background:transparent;color:var(--accent);}
[data-theme="dark"] .call-fab{background:var(--bg);color:var(--text-bright);border:1px solid var(--accent);}
[data-theme="dark"] .call-fab:hover{color:var(--accent);}

*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:auto;scroll-padding-top:90px;scrollbar-gutter:stable;color-scheme:light dark;text-size-adjust:100%;-webkit-text-size-adjust:100%;}
body{
  background:var(--cream);
  color:var(--ink);
  font-family:'Jost',sans-serif;
  font-weight:300;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}

/* ===== ATMOSPHERIC TEXTURE (feel, not see) =====
   A barely-there film grain + warm vignette. Sits above content, ignores
   clicks, animates on a slow drift so it reads as analog film, not a flat
   JPEG. Disabled under reduced-motion (below). */
body::after{
  content:"";
  position:fixed;inset:0;z-index:60;pointer-events:none;
  /* fractal-noise grain as an inline SVG (no asset file needed) */
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size:160px 160px;
  opacity:.045;                /* whisper-quiet */
  mix-blend-mode:overlay;      /* melts into both cream + green */
  animation:grainShift 7s steps(8) infinite;
}
@keyframes grainShift{
  0%{transform:translate(0,0)} 12%{transform:translate(-4%,2%)}
  25%{transform:translate(3%,-3%)} 37%{transform:translate(-2%,4%)}
  50%{transform:translate(4%,3%)} 62%{transform:translate(-3%,-2%)}
  75%{transform:translate(2%,-4%)} 87%{transform:translate(-4%,-1%)}
  100%{transform:translate(0,0)}
}
/* warm paper vignette — pulls the eye to centre, adds depth without colour */
body::before{
  content:"";
  position:fixed;inset:0;z-index:59;pointer-events:none;
  background:radial-gradient(125% 125% at 50% 42%, transparent 58%, rgba(35,45,31,.10) 100%);
}

h1,h2,h3{font-family:'Cormorant Garamond',serif;font-weight:300;color:var(--ink);letter-spacing:.005em;}

/* ===== Type primitives ===== */
.eyebrow{
  font-size:var(--fs-eyebrow);
  letter-spacing:.4em;
  text-transform:uppercase;
  color:var(--accent);
  font-weight:400;
  margin-bottom:1.6rem;
}
.section-title{
  font-family:'Cormorant Garamond',serif;
  font-weight:300;
  color:var(--ink);
  letter-spacing:.005em;
  font-size:var(--fs-section);
  line-height:1.04;
  margin-bottom:2.2rem;
}
/* keep Cormorant Garamond 300 on the dark contact section too (only color shifts for contrast) */
.section.alt .section-title{color:var(--text-bright);}
.section-title.center,.center{text-align:center;}
.lead{max-width:60ch;margin:0 auto 2.4rem;font-size:var(--fs-lead);color:var(--text);}

.container{max-width:var(--maxw);margin:0 auto;padding:0 var(--container-pad);}
.container.wide{max-width:var(--maxw-wide);}
.container.narrow{max-width:720px;}
.container.split{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-split);align-items:stretch;}

/* ===== NAV (green bar) ===== */
.nav{position:fixed;top:0;left:0;right:0;z-index:var(--z-nav);background:var(--bg);border-bottom:1px solid rgba(244,240,237,.14);padding:1rem 0;transform:translateY(0);will-change:transform;transition:transform .45s var(--ease-expo),background-color .4s var(--ease-expo),backdrop-filter .4s var(--ease-expo),box-shadow .4s var(--ease-expo);contain:layout style;}
/* hide nav during the light intro screen (cream text would be invisible on cream) */
html.intro-active .nav{opacity:0;pointer-events:none;transform:translateY(-100%);}
/* hide-on-scroll-down: slides the bar fully off the top; pointer-events off so it can't
   intercept clicks while off-screen. Reveal-on-scroll-up removes this class. */
.nav.hide{transform:translateY(-100%);pointer-events:none;}
/* anchors never sit underneath the fixed nav (exact height is set by JS into --nav-h) */
main[id],section[id]:not(#hero){scroll-margin-top:var(--nav-h,96px);}
.nav-inner{max-width:var(--maxw);margin:0 auto;padding:0 var(--container-pad);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1.5rem;position:relative;}
/* left links hug the left edge of their column; right cluster hugs the right edge */
.nav-links--left{justify-self:start;}
.nav-links--right{justify-self:end;}
.nav-cluster--right{justify-self:end;display:flex;align-items:center;gap:clamp(.8rem,1.4vw,1.4rem);}
.nav-btn{background:transparent;border:1px solid var(--cream);color:var(--cream);font-family:'Jost',sans-serif;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;padding:.7rem 1.4rem;cursor:pointer;transition:background .4s var(--ease-expo),color .4s var(--ease-expo);min-height:44px;display:inline-flex;align-items:center;justify-content:center;}
.nav-btn:hover{background:var(--cream);color:var(--bg);}
.nav-btn.nav-btn--menu{justify-self:start;display:none;}
.nav-btn--cta{justify-self:end;}
.nav-btn--cta em{font-style:italic;text-transform:none;letter-spacing:.02em;font-size:.82em;}
/* Inline horizontal menu (desktop >=1024px) */
.nav-links{justify-self:start;display:flex;align-items:center;gap:clamp(1.1rem,2vw,2rem);}
.nav-links a{font-family:'Jost',sans-serif;font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--cream);position:relative;padding:.4rem 0;transition:color .4s var(--ease-expo);}
.nav-links a:hover{color:var(--accent);}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left center;transition:transform .5s var(--ease-expo);}
.nav-links a:hover::after,.nav-links a:focus-visible::after{transform:scaleX(1);}
.nav-links a[aria-current="true"]{color:var(--accent);}
.nav-links a[aria-current="true"]::after{transform:scaleX(1);}
.brand{font-family:'Cormorant Garamond',serif;font-size:1.6rem;letter-spacing:.14em;color:var(--cream);text-transform:uppercase;text-align:center;transition:color .4s var(--ease-expo);justify-self:center;white-space:nowrap;}
.brand:hover{color:var(--accent);}
/* right-side cluster: gold CTA + theme toggle, kept on one row */
.nav-actions{justify-self:end;display:flex;align-items:flex-start;gap:clamp(.8rem,1.4vw,1.4rem);}
.nav-btn--cta{background:var(--gold);border-color:var(--gold);color:#232d1f;}
.nav-btn--cta:hover{background:#b8901f;border-color:#b8901f;color:#232d1f;}
[data-theme="dark"] .nav-btn--cta{background:var(--gold);border-color:var(--gold);color:#1c241a;}
[data-theme="dark"] .nav-btn--cta:hover{background:#e3b85a;border-color:#e3b85a;}
/* DARK MODE NAV FIX: --cream flips to dark green in dark theme, which made the
   nav links/brand invisible (dark-on-near-black). Force the nav text to a fixed
   warm ivory so the header stays readable in OS dark mode. */
[data-theme="dark"] .nav{background-color:#121810;}
[data-theme="dark"] .nav-links a,
[data-theme="dark"] .brand{color:#f4f0ed;}
[data-theme="dark"] .nav-links a:hover,
[data-theme="dark"] .brand:hover{color:var(--gold);}
[data-theme="dark"] .nav-btn{border-color:rgba(244,240,237,.5);color:#f4f0ed;}
[data-theme="dark"] .nav-btn:hover{background:#f4f0ed;color:#121810;}
/* Under 1024px: collapse inline menu, show hamburger drawer, center brand */
@media (max-width:1023px){
  .nav-inner{grid-template-columns:auto 1fr;gap:.4rem;}
  .nav-btn.nav-btn--menu{display:inline-flex;}
  .nav-links{display:none !important;}
  .nav-actions{display:none !important;}
  .nav-btn--cta{display:none !important;}
  .brand{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);grid-column:auto;justify-self:auto;font-size:1.15rem;letter-spacing:.1em;}
}

/* ===== INTRO SCREEN (own 100vh screen; scroll down to land on hero) ===== */
.intro-screen{position:fixed;inset:0;height:100vh;z-index:100;background:#f2f2f2;display:flex;align-items:center;justify-content:center;padding:0 7vw;text-align:center;transition:opacity .6s var(--ease-expo);will-change:opacity;overflow:hidden;}
.intro-screen.gone{opacity:0;pointer-events:none;}
.intro-inner{max-width:1100px;}
.intro-line{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2.4rem,7vw,6.5rem);line-height:1.06;color:var(--ink);letter-spacing:.01em;}
.intro-line em{font-style:italic;font-weight:400;}
/* scroll cue below the intro text — squircle badge with mouse icon, invites scroll */
.intro-scroll-cue{display:inline-flex;align-items:center;justify-content:center;margin-top:clamp(1.4rem,4vh,3rem);width:54px;height:54px;border:none;cursor:pointer;background:var(--accent-ink,#5e6a4f);color:#f4f0ed;border-radius:32%;box-shadow:0 10px 30px rgba(35,45,31,.4);opacity:0;transform:translateY(10px);animation:introCueIn .6s var(--ease-expo) .9s forwards, introCueBob 2s ease-in-out 1.5s infinite;transition:background .25s var(--ease-expo),transform .25s var(--ease-expo),box-shadow .25s var(--ease-expo);}
.intro-scroll-cue:hover{background:var(--accent,#a8b89a);transform:translateY(-2px);box-shadow:0 14px 36px rgba(35,45,31,.5);}
.intro-scroll-cue svg{display:block;animation:introMouseWheel 1.8s ease-in-out infinite;}
@keyframes introCueIn{to{opacity:1;transform:translateY(0);}}
@keyframes introCueBob{0%,100%{transform:translateY(0);}50%{transform:translateY(7px);}}
@keyframes introMouseWheel{0%{transform:translateY(-2px);opacity:.55;}50%{transform:translateY(2px);opacity:1;}100%{transform:translateY(-2px);opacity:.55;}}
/* hide the cue the moment the intro is dismissed */
.intro-screen.gone .intro-scroll-cue{display:none;}
.intro-bg{position:absolute;inset:0;z-index:0;display:flex;align-items:center;justify-content:center;overflow:hidden;pointer-events:none;}
.intro-screen .hero-frames{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.82;transition:opacity 1s var(--ease-expo);background:center/contain url('assets/Slow_push-out_till_ring_spins_202607311503_000/Slow_push-out_till_ring_spins_202607311503_008.jpg') no-repeat;}
.hero-ring-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.82;z-index:0;pointer-events:none;}
.intro-screen .hero-frames.loaded{opacity:.85;}
.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 14%;background:var(--bg);z-index:0;}
.hero-ring-canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.92;z-index:0;transition:opacity 1s var(--ease-expo);}
.hero-ring-canvas.loaded{opacity:.92;}
@keyframes heroZoom{to{transform:scale(1);}}
.hero-scrim{position:absolute;inset:0;background:radial-gradient(60% 50% at 50% 55%,rgba(35,45,31,.34) 0%,rgba(35,45,31,.12) 55%,rgba(35,45,31,.3) 100%),linear-gradient(180deg,rgba(35,45,31,.1) 0%,rgba(35,45,31,.03) 38%,rgba(35,45,31,.05) 50%,rgba(35,45,31,.32) 80%,rgba(35,45,31,.5) 100%);}
/* GREEN FADE begins BELOW the hero text and blends smoothly down to the photo.
   Above the text the real photo stays crisp; from mid-hero down it eases into a
   warm forest-green wash so the band reads as "faded to green" but the picture
   is still the picture. Legibility of the text is carried by per-line shadows. */
.hero-content::before{content:"";position:absolute;left:0;right:0;bottom:0;height:48%;z-index:-1;background:linear-gradient(180deg,rgba(35,45,31,0) 0%,rgba(35,45,31,.18) 45%,rgba(35,45,31,.42) 100%);}
.hero-frame{position:absolute;inset:clamp(1rem,2.4vw,2.2rem);border:1px solid rgba(200,176,120,.4);pointer-events:none;z-index:1;}
/* word-by-word reveal */
.intro-line .w{display:inline-block;opacity:0;transform:translateY(14px);filter:blur(6px);animation:wordIn 1.1s var(--ease-expo) forwards;}
@keyframes wordIn{to{opacity:1;transform:none;filter:blur(0);}}

/* ===== SEO visually-hidden H1 (keyword-rich, indexable) ===== */
.seo-h1{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}

/* ===== HERO ===== */
.hero{position:relative;min-height:100vh;overflow:hidden;background:transparent;}
.hero-bg{position:fixed;inset:0;z-index:0;display:flex;align-items:center;justify-content:center;pointer-events:none;}
.hero-frames{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1s var(--ease-expo),transform .1s linear;transform-origin:center center;will-change:transform,opacity;}
.hero-frames.loaded{opacity:.22;}
/* Persistent ring: after the intro dismisses, the canvas is reparented to <body>
   and given this class so it stays as a fixed hero background (z-index 0, behind
   content) and keeps scrubbing on scroll. */
.hero-frames--persist{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;opacity:.22;pointer-events:none;transition:opacity 1s var(--ease-expo);}
@keyframes spin{from{transform:rotateX(70deg) rotateZ(0);}to{transform:rotateX(70deg) rotateZ(360deg);}}

.hero-content{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;text-align:center;padding:0 1.4rem 12vh;color:var(--text-bright);contain:layout style;}
.hero-kicker{font-family:'Jost',sans-serif;font-size:clamp(.7rem,1.5vw,.85rem);text-transform:uppercase;letter-spacing:.34em;color:var(--text-bright);opacity:1;font-weight:500;margin-bottom:1rem;text-shadow:0 1px 12px rgba(35,45,31,.5);}
.hero-title{font-size:clamp(2.6rem,7vw,5.5rem);line-height:1.02;font-weight:300;margin-bottom:.55rem;letter-spacing:.01em;color:var(--text-bright);text-shadow:0 2px 24px rgba(35,45,31,.4);}
/* hero title: first O replaced by a ring photo */

.hero-sub{font-size:var(--fs-lead);max-width:52ch;margin:0 auto;color:var(--text-bright);}
.hero-sub--tag{font-family:'Cormorant Garamond',serif;font-size:clamp(1.15rem,2.2vw,1.8rem);font-weight:500;color:var(--text-bright);margin:.35rem auto 0;letter-spacing:.01em;text-shadow:0 1px 16px rgba(35,45,31,.7),0 2px 6px rgba(35,45,31,.55);}
.hero-sub--tag em{font-style:italic;}
.scroll-cue{position:absolute;bottom:2.2rem;left:50%;transform:translateX(-50%);z-index:4;width:1px;height:64px;background:linear-gradient(var(--accent),transparent);overflow:hidden;opacity:.85;}
.scroll-cue span{position:absolute;top:0;left:0;width:100%;height:40%;background:var(--text-bright);animation:cue 2.4s var(--ease-expo) infinite;}
@keyframes cue{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}

/* ===== BUTTONS ===== */
.btn{display:inline-block;font-family:'Jost',sans-serif;font-size:.85rem;letter-spacing:.2em;text-transform:uppercase;padding:1.05rem 2.4rem;border:1px solid var(--line);transition:color .45s var(--ease-expo),background .45s var(--ease-expo),border-color .45s var(--ease-expo),transform .45s var(--ease-expo);cursor:pointer;position:relative;overflow:hidden;}
.btn-ghost{color:var(--text-bright);}
.btn-ghost:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-2px);}
.btn-solid{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:400;}
.btn-solid:hover{background:transparent;color:var(--accent);transform:translateY(-2px);}
.btn-call{background:var(--accent);color:var(--on-accent);font-weight:600;letter-spacing:.02em;margin-top:.4rem;}
.btn-call:hover{background:transparent;color:var(--accent);transform:translateY(-2px);}
.call-hint{margin-top:1rem;font-size:.95rem;color:var(--text-bright);opacity:.85;}

/* ===== CONTACT FORM ===== */
.contact-form{max-width:520px;margin:2.4rem auto 0;display:flex;flex-direction:column;gap:1rem;text-align:left;}
.contact-form .field input,.contact-form .field textarea{width:100%;background:rgba(244,240,237,.06);border:1px solid var(--line);border-radius:2px;padding:.95rem 1.1rem;color:var(--text-bright);font-family:'Jost',sans-serif;font-size:1rem;}
.contact-form .field input::placeholder,.contact-form .field textarea::placeholder{color:rgba(244,240,237,.45);}
.contact-form .field input:focus,.contact-form .field textarea:focus{outline:none;border-color:var(--accent);}
.contact-form .btn-solid{align-self:center;margin-top:.4rem;}
.form-note{margin-top:1rem;text-align:center;color:var(--ink);font-size:1rem;font-weight:500;}

/* ===== FAQ (own solid cream bg so text is always dark/readable) ===== */
#faq{background:var(--cream);color:var(--ink);}
/* blog posts: space between the contact form and the following "Questions fréquentes" block */
[data-include="contact-section"] + .post-section{margin-top:5rem;}
/* blog posts: space between "Conseils & inspirations" and the following "Questions fréquentes" block */
#journal + .post-section{margin-top:5rem;}
/* blog posts only: "Conseils & inspirations" sits on a warm ivory (white) panel, not the forest green */
.post-main #journal{background:var(--cream);color:var(--ink);border-top:1px solid rgba(94,106,79,.28);border-bottom:1px solid rgba(94,106,79,.28);}
.post-main #journal .section-title{color:var(--ink);}
.post-main #journal .eyebrow{color:var(--accent-ink);}
.post-main #journal .post-card{background:#fff;border-color:rgba(94,106,79,.22);box-shadow:0 10px 30px rgba(35,45,31,.08);}
.post-main #journal .post-card__title,.post-main #journal .post-card__excerpt{color:var(--ink);}
.post-main #journal .post-card__excerpt{opacity:.82;}
.post-main #journal .post-link{color:var(--accent-ink);}
.post-main #journal ::-webkit-scrollbar-thumb{background:var(--accent-ink);}
#faq .section-title,#faq .eyebrow{color:var(--ink);}
.faq{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:.7rem;}
.faq-item{background:rgba(244,240,237,.06);border:1px solid var(--line);border-radius:3px;padding:0 1.4rem;transition:border-color .4s var(--ease-expo);}
.faq-item[open]{border-color:var(--accent);}
.faq-item summary{cursor:pointer;list-style:none;padding:1.25rem 0;font-family:'Cormorant Garamond',serif;font-size:1.4rem;color:var(--ink);position:relative;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{content:"+";position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:1.4rem;color:var(--accent-ink);transition:transform .3s;}
.faq-item[open] summary::after{content:"–";}
.faq-item p{padding:0 0 1.25rem;color:var(--ink);opacity:.8;line-height:1.7;}
.faq-item a{color:var(--accent-ink);}

/* ===== FLOATING CALL BUTTON ===== */
.call-fab{position:fixed;right:1.5rem;bottom:1.5rem;z-index:60;display:flex;align-items:center;justify-content:center;gap:.6rem;background:var(--accent);color:var(--on-accent);text-decoration:none;font-family:'Jost',sans-serif;font-weight:700;font-size:1rem;padding:0;width:3.2rem;height:3.2rem;border-radius:999px;box-shadow:0 10px 30px rgba(0,0,0,.35);transition:transform .25s var(--ease-expo),box-shadow .25s var(--ease-expo);}
.call-fab:hover{width:auto;height:auto;padding:.95rem 1.4rem;}
.call-fab-ico{font-size:1.2rem;line-height:1;display:flex;align-items:center;justify-content:center;}
.call-fab-ico svg{transform:translate(4px,1.3px);}
.call-fab-txt{letter-spacing:.02em;max-width:0;overflow:hidden;white-space:nowrap;opacity:0;transition:max-width .4s var(--ease-expo),opacity .3s var(--ease-expo);}
.call-fab:hover .call-fab-txt,.call-fab:focus-visible .call-fab-txt{max-width:18ch;opacity:1;}
.call-fab:focus-visible{width:auto;height:auto;padding:.95rem 1.4rem;}
.call-fab:focus-visible .call-fab-txt{max-width:18ch;opacity:1;}
@keyframes pulse{0%,100%{box-shadow:0 10px 30px rgba(0,0,0,.35);}50%{box-shadow:0 10px 38px rgba(0,0,0,.45),0 0 0 12px rgba(179,147,94,.18);}}
@media (max-width:560px){.call-fab-txt{display:none;}.call-fab{padding:.95rem;}}


/* ===== SECTIONS ===== */
.section{padding:var(--pad-section) 0;background:var(--cream);position:relative;}
.section + .section{border-top:1px solid rgba(94,106,79,.32);}
.section.alt + .section.alt{border-top:1px solid rgba(244,240,237,.12);}
.section::before{content:"";position:absolute;top:-1px;left:50%;transform:translateX(-50%);width:64px;height:1px;background:linear-gradient(90deg,transparent,var(--accent-ink),transparent);opacity:.7;}
.section.alt{background:var(--bg);}
#services{background:var(--bg) !important;}
#services .section-title,#services .eyebrow{color:var(--text-bright) !important;}
/* light sections (cream) -> dark text; dark sections (.alt) -> light text */
.section{color:var(--ink);}
.section:last-of-type{padding-bottom:clamp(3.5rem,7vw,6rem);}
.section .eyebrow{color:var(--ink);}
.section .lead,.section>p,.section .split-text>p{color:var(--ink-soft);}
.section.alt{color:var(--text-bright);}
.section.alt h1,.section.alt h2,.section.alt h3,.section.alt .section-title{color:var(--text-bright);}
.section.alt .lead,.section.alt>p,.section.alt .split-text>p{color:var(--text);}

/* #parlons: normal section, symmetric top spacing like other sections */
#parlons{position:relative;}
#parlons > .container{max-width:720px;margin:0 auto;}
.section.alt .eyebrow{color:var(--accent);}
/* contact-meta sits inside .section.alt (dark bg) -> use ivory tokens, not the dark --ink */
.section.alt .contact-meta__title{color:var(--text-bright);}
.section.alt .contact-meta__label{color:var(--text);}
.section.alt .contact-meta__value{color:var(--text-bright);}
.section.alt a.contact-meta__value:hover{color:var(--accent-ink);}
.split-media{position:relative;overflow:hidden;display:block;aspect-ratio:3/2;}
.split-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:2px;filter:saturate(.85) contrast(1.02);}
.split--reverse .split-media{order:2;}
.split-text{display:flex;flex-direction:column;justify-content:center;}

.feature-list li,.step-list li{position:relative;padding-left:1.8rem;margin-bottom:1.2rem;font-size:1.04rem;line-height:1.75;font-weight:400;color:var(--ink);}
.feature-list .dot{position:absolute;left:0;top:.65rem;width:7px;height:7px;border-radius:50%;background:var(--accent);}
/* ===== PROCESS JOURNEY (scroll-driven) ===== */
.process-journey{position:relative;height:180vh;}
.process-sticky{position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:hidden;}
/* symmetric top spacing: title starts at the same --pad-section rhythm as other
   sections (the sticky center was leaving a big gap at the top of the section) */
#process{padding-top:0;}
#process .process-sticky{align-items:flex-start;}
#process .process-sticky > .container.narrow{padding-top:var(--pad-section);}
.process-track{position:relative;max-width:640px;margin:2.4rem auto 0;padding-left:42px;}
.process-path{position:absolute;left:8px;top:0;height:100%;width:24px;overflow:visible;}
.process-path-bg{stroke:rgba(94,106,79,.22);stroke-width:2;}
.process-path-fill{stroke:#c9a36a;stroke-width:2.5;stroke-linecap:round;
  stroke-dasharray:388;stroke-dashoffset:388;transition:stroke-dashoffset .12s linear;}
.step-list--path{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;justify-content:space-between;min-height:62vh;}
.step-list--path .step{position:relative;opacity:.32;transform:translateY(8px);
  transition:opacity .6s var(--ease-expo),transform .6s var(--ease-expo);}
.step-list--path .step.is-active{opacity:1;transform:none;}
.step-dot{position:absolute;left:-34px;top:.5rem;width:14px;height:14px;border-radius:50%;
  background:var(--cream);border:2px solid rgba(94,106,79,.35);transition:all .5s var(--ease-expo);}
.step.is-active .step-dot{background:#c9a36a;border-color:#c9a36a;box-shadow:0 0 0 5px rgba(201,163,106,.18);transform:scale(1.15);}
.step-num{font-family:'Cormorant Garamond',serif;color:var(--accent-ink);font-size:1.05rem;letter-spacing:.05em;margin-right:.5rem;}
.step-body{display:inline;}
.step-body strong{font-family:'Cormorant Garamond',serif;font-weight:600;font-size:1.5rem;color:var(--ink);transition:color .5s var(--ease-expo);}
.step-list--path .step.is-active .step-body strong{color:#b8860b;}
.step-body p{margin:.2rem 0 0;color:var(--ink);opacity:.82;line-height:1.65;font-weight:400;}
@media (max-width:560px){
  .process-journey{height:160vh;}
  .process-track{padding-left:34px;}
  .process-path{left:4px;width:20px;}
}

/* ===== GALLERY (CSS Grid, uniform cells, mobile-first, accessible) ===== */
.section-head{margin-bottom:clamp(2.5rem,5vw,4rem);}
.gallery-grid{display:grid;grid-template-columns:1fr;gap:clamp(12px,2vw,24px);list-style:none;margin:0;padding:0;}
.gallery-grid__item{position:relative;overflow:hidden;border-radius:6px;background:var(--bg);aspect-ratio:4/5;cursor:pointer;opacity:0;transform:translateY(12px);transition:opacity 1.1s var(--ease-expo),transform 1.1s var(--ease-expo);}
.gallery-grid__item.in,.gallery-grid__item--loaded{opacity:1;transform:none;}
/* forest/ivory toning: the SVG art is already forest+ivory; we reinforce the
   brand frame with an ivory inner matte and a soft forest vignette so the
   portraits read as a cohesive curated set. */
.gallery-grid__item{box-shadow:inset 0 0 0 1px rgba(244,240,237,.14);background:linear-gradient(160deg,var(--text-bright) 0%,#ece6e1 100%);}
.gallery-grid__img{position:relative;width:100%;height:100%;object-fit:cover;object-position:50% 38%;display:block;transition:transform 1.1s var(--ease-expo),filter .6s var(--ease-quint);filter:saturate(.9) contrast(1.02) brightness(1.02);}
.gallery-grid__item:hover .gallery-grid__img,.gallery-grid__item:focus-within .gallery-grid__img{transform:scale(1.04);filter:saturate(1);}
.gallery-grid__item:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:6px;}
.gallery-grid__caption{position:absolute;left:0;right:0;bottom:0;padding:1.5rem 1.6rem;font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.05rem;color:var(--text-bright);background:linear-gradient(transparent,rgba(18,24,16,.62));opacity:1;transform:none;pointer-events:none;}
.gallery-grid__item:hover .gallery-grid__caption,.gallery-grid__item:focus-within .gallery-grid__caption{opacity:1;transform:none;}
.gallery-grid__trigger{position:absolute;inset:0;width:100%;height:100%;border:none;background:transparent;padding:0;cursor:pointer;font:inherit;color:inherit;text-align:left;}
.gallery-grid__trigger:focus-visible{outline:3px solid var(--gold);outline-offset:-3px;border-radius:6px;}
@media (min-width:480px){.gallery-grid{grid-template-columns:repeat(2,1fr);}}
@media (min-width:768px){.gallery-grid{grid-template-columns:repeat(4,1fr);gap:clamp(16px,2.5vw,32px);}}
@media (min-width:1200px){.gallery-grid{grid-template-columns:repeat(4,1fr);}}
@media (prefers-reduced-motion:reduce){.gallery-grid__item,.gallery-grid__img,.gallery-grid__caption{transition:none!important;}.gallery-grid__item{opacity:1;transform:none;}}
@media (forced-colors:active){.gallery-grid__item{border:1px solid CanvasText;}.gallery-grid__trigger:focus-visible{outline:3px solid Highlight;}}

/* ===== FEATURED FILM ===== */
.film-frame{position:relative;overflow:hidden;aspect-ratio:16/9;background:var(--bg);opacity:1!important;}
.film-frame video{width:100%;height:100%;object-fit:cover;display:block;}
.film-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;}
/* Featured film: poster shown, fades out when video autoplays on scroll */
.film-embed{position:absolute;inset:0;width:100%;height:100%;}
.film-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;background:#000;z-index:1;}
.film-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:2;opacity:1;transition:opacity 1s var(--ease-expo);}
.film-poster.is-hidden{opacity:0;pointer-events:none;}
/* Sound toggle button on the autoplaying film */
.film-sound{position:absolute;right:12px;bottom:12px;z-index:4;width:38px;height:38px;border-radius:50%;border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;background:rgba(35,45,31,.62);color:#fff;backdrop-filter:blur(4px);box-shadow:0 6px 18px rgba(0,0,0,.25);transition:background .3s,transform .25s;}
.film-sound:hover{background:rgba(35,45,31,.82);transform:scale(1.06);}
.film-sound svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.film-sound .icon-sound{display:none;}
.film-sound.is-on .icon-muted{display:none;}
.film-sound.is-on .icon-sound{display:block;}
.film-sound:focus-visible{outline:2px solid var(--gold,#c9a24b);outline-offset:3px;}
.film-full{position:absolute;left:12px;bottom:12px;z-index:4;width:38px;height:38px;border-radius:50%;border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;background:rgba(35,45,31,.62);color:#fff;backdrop-filter:blur(4px);box-shadow:0 6px 18px rgba(0,0,0,.25);transition:background .3s,transform .25s;}
.film-full:hover{background:rgba(35,45,31,.82);transform:scale(1.06);}
.film-full svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.film-full .icon-collapse{display:none;}
.film-full.is-on .icon-expand{display:none;}
.film-full.is-on .icon-collapse{display:block;}
.film-full:focus-visible{outline:2px solid var(--gold,#c9a24b);outline-offset:3px;}
.film-link{display:block;text-decoration:none;cursor:pointer;}
.film-link img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s var(--ease-expo);}
.film-link:hover img{transform:scale(1.03);}

/* Seek / scrub controls: TRANSPARENT, hidden until hover (no yellow) */
.film-controls{position:absolute;left:14px;right:60px;bottom:16px;z-index:3;display:flex;align-items:center;gap:.7rem;padding:8px 14px;border-radius:999px;background:rgba(0,0,0,.28);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.14);box-shadow:0 6px 22px rgba(0,0,0,.35);opacity:0;transform:translateY(6px);transition:opacity .35s var(--ease-expo),box-shadow .35s var(--ease-expo),transform .35s var(--ease-expo);pointer-events:none;}
.film-frame:hover .film-controls{opacity:1;transform:translateY(0);box-shadow:0 8px 28px rgba(0,0,0,.45);pointer-events:auto;}
.film-controls.is-visible{opacity:1;transform:translateY(0);pointer-events:auto;} /* kept for JS reveal, but hover is the main trigger */
.film-seek{flex:1;-webkit-appearance:none;appearance:none;width:100%;min-height:0;height:4px;background:transparent;border-radius:999px;outline:none;cursor:pointer;}
.film-seek::-webkit-slider-runnable-track{height:4px;border-radius:999px;background:linear-gradient(to right,rgba(255,255,255,.85) 0%,rgba(255,255,255,.85) calc(var(--p,0)*100%),rgba(255,255,255,.22) calc(var(--p,0)*100%),rgba(255,255,255,.22) 100%);}
.film-seek::-moz-range-track{height:4px;border-radius:999px;background:rgba(255,255,255,.22);}
.film-seek::-moz-range-progress{height:4px;border-radius:999px;background:rgba(255,255,255,.85);}
.film-seek::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:13px;height:13px;margin-top:-4.5px;border-radius:50%;background:#fff;border:0;box-shadow:0 2px 6px rgba(0,0,0,.5);cursor:pointer;opacity:1;transition:transform .15s var(--ease-expo);}
.film-seek:active::-webkit-slider-thumb{transform:scale(1.15);}
.film-seek::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:#fff;border:0;box-shadow:0 2px 6px rgba(0,0,0,.5);cursor:pointer;opacity:1;transition:transform .15s var(--ease-expo);}
.film-seek:active::-moz-range-thumb{transform:scale(1.15);}
.film-seek:focus-visible{outline:2px solid rgba(255,255,255,.7);outline-offset:3px;}
.film-time{flex:none;font-size:.72rem;color:rgba(255,255,255,.92);white-space:nowrap;text-shadow:0 1px 3px rgba(0,0,0,.6);font-variant-numeric:tabular-nums;letter-spacing:.02em;opacity:1;}
/* Merged prestation (SEO) row inside Services */
.presta-grid{display:grid;gap:1.4rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:1.8rem 0 .5rem;}
.presta-card{background:var(--card,#1c241a);border:1px solid rgba(168,184,154,.18);border-radius:14px;padding:1.6rem 1.4rem;display:flex;flex-direction:column;gap:.6rem;}
.presta-name{font-family:"Jost",sans-serif;letter-spacing:.12em;text-transform:uppercase;font-size:.92rem;color:var(--accent,#a8b89a);margin:0;}
.presta-card p{font-size:.92rem;line-height:1.5;color:var(--text-bright,#e8e5d8);margin:0;}
[data-theme="dark"] .presta-card p{color:var(--text-bright,#e8e5d8);}
.seo-link{margin-top:auto;align-self:flex-start;color:var(--gold,#c9a24b);font-family:"Jost",sans-serif;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px;transition:opacity .2s;}
.seo-link:hover{opacity:.7;}

/* ===== FOOTER ===== */
.footer{position:relative;z-index:3;margin-top:0;padding:3.4rem var(--container-pad) 2.8rem;background:var(--cream);border-top:1px solid var(--line);}
.footer-line{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:1.2rem;max-width:var(--maxw);margin:0 auto;font-size:.8rem;letter-spacing:.06em;}
.footer-left{display:flex;align-items:center;justify-content:center;gap:1.4rem;flex-wrap:wrap;}
.footer-copy{color:var(--ink-soft);flex-basis:100%;text-align:center;margin-top:.4rem;}
.footer-inner{display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center;max-width:var(--maxw);margin:0 auto;padding:1rem 0;}
.footer-nap{font-family:var(--serif);font-size:1.8rem;letter-spacing:.04em;color:var(--ink);}
.footer-tag{font-size:.82rem;letter-spacing:.22em;text-transform:uppercase;color:var(--accent-ink);margin:0;}
.footer-address{font-style:normal;font-size:.95rem;letter-spacing:.04em;line-height:1.7;}
.footer-address a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--accent);}
.footer-area{max-width:620px;font-size:.82rem;line-height:1.7;color:var(--ink-soft);margin:0;}

/* ===== Social icon links (footer + contact meta block) — inline SVG, no icon-font/CDN ===== */

@media (max-width:768px){.footer-inner{gap:.8rem;}}

/* ===== BACK TO TOP ===== */
.to-top{position:fixed;left:1.6rem;bottom:1.6rem;width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:rgba(28,36,26,.85);backdrop-filter:blur(8px);color:var(--text-bright);font-size:1.1rem;cursor:pointer;opacity:0;pointer-events:none;transform:translateY(16px) scale(.9);transition:opacity .5s var(--ease-expo),transform .5s var(--ease-expo),border-color .4s,color .4s;z-index:40;}
.to-top.show{opacity:1;pointer-events:auto;transform:translateY(0) scale(1);}
.to-top:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-3px) scale(1);}

/* ===== LIGHTBOX ===== */
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.98);display:flex;align-items:center;justify-content:center;z-index:100;opacity:0;pointer-events:none;transition:opacity .5s var(--ease-expo);padding:4vw;}
.lightbox.open{opacity:1;pointer-events:auto;}
.lightbox img{max-width:100%;max-height:92vh;border-radius:2px;opacity:1!important;filter:none!important;mix-blend-mode:normal!important;box-shadow:0 0 60px rgba(0,0,0,.6);}
.lightbox-close{position:absolute;top:1.4rem;right:1.8rem;background:none;border:0;color:var(--text-bright);font-size:2.2rem;cursor:pointer;line-height:1;transition:color .3s,transform .3s var(--ease-expo);width:44px;height:44px;display:flex;align-items:center;justify-content:center;}
.lightbox-close:hover{color:var(--accent);transform:rotate(90deg);}

/* ===== VERO-GRADE POLISH: LINE-REVEAL HEADINGS =====
   Default (no-JS + reduced-motion): content fully visible.
   Only when <html class="js"> present do we hide + clip-reveal. */
.js [data-line-reveal]{display:block;}
.js [data-line-reveal] .line{display:block;overflow:hidden;padding-bottom:.18em;margin-bottom:-.18em;}
.js [data-line-reveal] .line>span{
  display:block;
  transform:translateY(110%);
  transition:transform var(--dur-reveal) var(--ease-expo);
  will-change:transform;
}
.js [data-line-reveal].in .line>span{transform:translateY(0);}
.js [data-line-reveal].in .line:nth-child(2)>span{transition-delay:var(--stagger);}
.js [data-line-reveal].in .line:nth-child(3)>span{transition-delay:calc(var(--stagger)*2);}
.js [data-line-reveal].in .line:nth-child(4)>span{transition-delay:calc(var(--stagger)*3);}

/* ===== VERO-GRADE POLISH: MASK / CLIP-PATH IMAGE REVEALS =====
   Default: visible. Only <html class="js"> hides then wipes in. */
.js [data-clip]{clip-path:inset(0 0 100% 0);transition:clip-path var(--dur-reveal-lg) var(--ease-expo),filter .8s var(--ease-quint);filter:saturate(.5) brightness(.85);}
.js [data-clip].in{clip-path:inset(0 0 0 0);filter:saturate(1) brightness(1);}

/* ===== REVEAL ANIM (generic block reveals) ===== */
.js [data-reveal]{opacity:0;transform:translateY(16px);transition:opacity var(--dur-reveal) var(--ease-expo),transform var(--dur-reveal) var(--ease-expo);}
.js [data-reveal].in{opacity:1;transform:none;}

/* ===== RESPONSIVE ===== */
@media(max-width:768px){
  :root{--container-pad:7vw;--gap-split:2.2rem;}
  .container.split{grid-template-columns:1fr;gap:var(--gap-split);}
  .split--reverse .split-media{order:0;}
  .footer-line{flex-direction:column;gap:1.2rem;text-align:center;}
}
@media(max-width:480px){
  :root{--fs-display:clamp(2.2rem,11vw,3.2rem);}
  .section{padding:var(--pad-section-sm) 0;}
}

/* ===== MOTION SAFETY ===== */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *{animation:none!important;transition:none!important;}
  [data-reveal],[data-clip]{opacity:1!important;transform:none!important;clip-path:none!important;filter:none!important;}
  .js [data-line-reveal] .line>span{transform:none!important;}
  .hero-frames{opacity:.22!important;}
  .call-fab{animation:none!important;}
  /* reduced motion: header never slides/hides; stay put */
  .nav.hide{transform:none!important;pointer-events:auto!important;}
  /* texture overlay: stop the grain drift, keep the static film grain (still 'feel not see') */
  body::after,body::before{animation:none!important;transform:none!important;}
}


/* ===== THEME TOGGLE BUTTON ===== */
.nav-btn--theme{background:transparent;border:1px solid var(--line);color:var(--cream);cursor:pointer;transition:color .4s var(--ease-expo),border-color .4s var(--ease-expo),background .4s var(--ease-expo);min-height:44px;display:inline-flex;align-items:center;justify-content:center;width:44px;padding:0;}
.nav-btn--theme:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);}
.nav-btn--theme:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
[data-theme="dark"] .nav-btn--theme{color:var(--text-bright);border-color:var(--line-dark);}
[data-theme="dark"] .nav-btn--theme:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);}
/* icon swap: sun shown in light mode, moon shown in dark mode */
.theme-icon{display:block;}
.theme-icon--moon{display:none;}
[data-theme="dark"] .theme-icon--sun{display:none;}
[data-theme="dark"] .theme-icon--moon{display:block;}
/* theme button inside the mobile panel */
.nav-panel__theme{width:auto;min-height:44px;padding:0 1.4rem;font-family:'Jost',sans-serif;font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:var(--cream);}
.nav-panel__theme:hover{color:var(--accent);}
.nav-panel{position:fixed;inset:0;z-index:80;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2.2rem;transform:translateX(100%);transition:transform .55s var(--ease-expo),visibility .55s;visibility:hidden;}
.nav-panel.open{transform:translateX(0);visibility:visible;}
.nav-panel__close{position:absolute;top:1.2rem;right:1.6rem;background:none;border:0;color:var(--cream);font-size:2.4rem;line-height:1;cursor:pointer;width:44px;height:44px;display:flex;align-items:center;justify-content:center;}
.nav-panel__list{list-style:none;display:flex;flex-direction:column;gap:1.6rem;text-align:center;margin:0;padding:0;}
.nav-panel__list a{font-family:'Cormorant Garamond',serif;font-size:clamp(2rem,7vw,3.4rem);font-weight:300;color:var(--cream);letter-spacing:.02em;transition:color .4s var(--ease-expo);}
.nav-panel__list a:hover{color:var(--accent);}
.nav-panel__cta{margin-top:1rem;background:var(--accent);color:#232d1f;font-family:'Jost',sans-serif;font-size:.76rem;letter-spacing:.22em;text-transform:uppercase;padding:1rem 2.2rem;border-radius:2px;}
.nav-panel__cta em{font-style:italic;text-transform:none;letter-spacing:.02em;font-size:.82em;}

/* ===== A11Y FOCUS ===== */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}




/* ===== GALLERY + SPLIT aspect-ratio (CLS) ===== */

/* ===== WAVE B: eyebrow consistency (reserved for <=2 sections: story + services) ===== */
.eyebrow{margin-bottom:1.4rem;letter-spacing:.4em;}

/* ===== WAVE B: contact reassurance (FR) ===== */
.contact-reassure{max-width:60ch;margin:.4rem auto 2.4rem;font-size:.98rem;line-height:1.7;color:var(--text-bright);opacity:.86;}

/* ===== WAVE B: footer FR lines + trust signals ===== */
.footer-loc{font-size:.82rem;letter-spacing:.22em;text-transform:uppercase;color:var(--accent-ink);margin:0;}
.footer-gbp{font-size:.78rem;letter-spacing:.08em;color:var(--ink-soft);text-decoration:none;border-bottom:1px solid rgba(168,184,154,.4);padding-bottom:2px;transition:color .4s var(--ease-expo),border-color .4s;}
.footer-gbp:hover{color:var(--gold);border-color:var(--gold);}
.footer-awards{font-size:.78rem;letter-spacing:.03em;font-style:italic;color:var(--ink-soft);max-width:620px;margin:0;}
.footer-counter{font-size:.95rem;letter-spacing:.02em;color:var(--ink);margin:0;}
.footer-counter #coupleCount{font-family:'Cormorant Garamond',serif;font-size:1.6rem;color:var(--accent-ink);margin-right:.25rem;}

/* ===== WAVE B: trust badges (static, generic FR — safe on every subpage) ===== */
.trust-badges{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:1.4rem;margin:.6rem 0 0;}
.trust-badge{width:84px;height:auto;max-width:100%;display:block;flex:0 0 auto;}
@media (max-width:480px){.trust-badge{width:64px;}}

/* ===== WAVE B: PERF CLS reserve (explicit aspect-ratio so images never shift layout) ===== */
.split-media{aspect-ratio:3/2;}

/* ===== WAVE C : correctifs SEO / QA / responsive ===== */

/* Image brisee : repli visuel (couple du JS snippet 42) */
img.img-broken{background:#1c241a linear-gradient(135deg,#1c241a,#232d1f);min-height:120px;object-fit:contain;}

/* (46) Safe-area insets : nav + call-fab + to-top */
.nav{padding-top:calc(1rem + env(safe-area-inset-top));padding-bottom:calc(1rem + env(safe-area-inset-bottom));}
.call-fab{right:calc(1.5rem + env(safe-area-inset-right));bottom:calc(1.5rem + env(safe-area-inset-bottom));}
.to-top{left:calc(1.6rem + env(safe-area-inset-left));bottom:calc(1.6rem + env(safe-area-inset-bottom));}

/* (47) Cibles tactiles minimales 44px */
.nav-btn{min-height:44px;display:inline-flex;align-items:center;}
.btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center;}
.nav-panel__list a{min-height:44px;display:inline-flex;align-items:center;justify-content:center;}

/* (48) Orientation paysage + 100svh */
.intro-screen{height:100svh;}
.hero{min-height:100svh;}
@supports not (height:100svh){.intro-screen{height:100vh;}.hero{min-height:100vh;}}
@media (orientation:landscape) and (max-height:560px){
  .intro-screen{padding:0 4vw;height:100svh;}
  .intro-line{font-size:clamp(1.8rem,5vh,3.4rem);}
  .nav{padding-top:calc(.5rem + env(safe-area-inset-top));padding-bottom:calc(.5rem + env(safe-area-inset-bottom));}
}

/* (49) Image pleine largeur mobile : .split-media + .gallery-grid */
@media (max-width:768px){
  .split-media{margin-left:calc(-1 * var(--container-pad));margin-right:calc(-1 * var(--container-pad));width:auto;}
  .gallery-grid{margin-left:calc(-1 * var(--container-pad));margin-right:calc(-1 * var(--container-pad));}
}

/* (50) Nav mobile : on cache le CTA du bandeau (il est dans le menu), brand centré propre */
@media (max-width:560px){
  .nav-inner{grid-template-columns:auto 1fr;gap:.4rem;}
  .nav-btn{white-space:nowrap;font-size:.62rem;letter-spacing:.14em;padding:.55rem .8rem;}
  .nav-btn--cta{display:none !important;}
  .brand{font-size:1.15rem;letter-spacing:.1em;}
  .hero-kicker{letter-spacing:.28em;}
  .section{padding:clamp(3rem,11vw,4.5rem) 0;}
  .container{padding:0 clamp(1.1rem,5vw,1.6rem);}
  .contact-form{padding:clamp(1.4rem,6vw,2rem);}
}
@media (max-width:420px){
  .brand{font-size:1rem;}
  .hero-title{font-size:clamp(2.2rem,11vw,3.2rem);}
  .call-fab{right:1rem;bottom:1rem;}
  .to-top{right:1rem;bottom:5rem;}
}

/* (45) Feuille de style impression minimale */
@media print{
  .nav,.nav-panel,.call-fab,.to-top,.lightbox,.scroll-cue,.intro-screen{display:none !important;}
  body{background:#fff !important;color:#000 !important;}
  .section,.section.alt{background:#fff !important;color:#000 !important;padding:1.5rem 0;}
  .section h1,.section h2,.section h3,.section .section-title,
  .section.alt h1,.section.alt h2,.section.alt h3,.section.alt .section-title{color:#000 !important;}
  .section .lead,.section>p,.section .split-text>p,
  .section.alt .lead,.section.alt>p,.section.alt .split-text>p{color:#333 !important;}
  a{color:#000 !important;text-decoration:underline;}
  .hero{position:static;min-height:auto;}
  .hero-bg{position:static;}
  img{max-width:100% !important;page-break-inside:avoid;}
  .gallery-grid{grid-template-columns:repeat(2,1fr) !important;}
}


/* =========================================================
   WAVE 1 IMPROVEMENTS (micro-interactions, a11y, imagery, responsive, print)
   ========================================================= */

/* 1 - NAV LINK + POST-LINK UNDERLINE SWEEP */
.nav-panel__list a{position:relative;}
.nav-panel__list a::after{content:"";position:absolute;left:0;right:0;bottom:-.4rem;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left center;transition:transform .5s var(--ease-expo);}
.nav-panel__list a:hover::after,.nav-panel__list a:focus-visible::after{transform:scaleX(1);}
.post-link{position:relative;display:inline-block;color:var(--text-bright);}
.post-link::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left center;transition:transform .45s var(--ease-expo);}
.post-link:hover::after,.post-link:focus-visible::after{transform:scaleX(1);}
/* ===== JOURNAL / Conseils grid (home) ===== */
.journal-grid{display:flex;gap:1.4rem;margin-top:2.6rem;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:.6rem;-webkit-overflow-scrolling:touch;}
.journal-grid .post-card{flex:0 0 min(86%,340px);scroll-snap-align:start;}
.journal-grid::-webkit-scrollbar{height:8px;}
.journal-grid::-webkit-scrollbar-thumb{background:var(--gold,#c9a24b);border-radius:8px;}
.post-card__media{display:block;}
.post-card{background:var(--card,#1c241a);border:1px solid rgba(168,184,154,.18);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;transition:transform .5s var(--ease-expo),box-shadow .5s var(--ease-expo);}
.post-card:hover{transform:translateY(-6px);box-shadow:0 22px 50px rgba(35,45,31,.18);}
.post-card img{width:100%;height:210px;object-fit:cover;display:block;}
.post-card__body{padding:1.6rem 1.5rem 1.8rem;display:flex;flex-direction:column;gap:.7rem;flex:1;}
.post-card__title{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:1.65rem;line-height:1.15;margin:0;color:var(--text-bright,#e8e5d8);}
[data-theme="dark"] .post-card__title{color:var(--text-bright,#e8e5d8);}
.post-card__excerpt{font-size:.95rem;line-height:1.55;color:var(--text-bright,#e8e5d8);margin:0;flex:1;}
.post-card .post-link{margin-top:.4rem;color:var(--gold,#c9a24b);font-family:'Jost',sans-serif;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;}

/* 2 - BUTTON HOVER FILL + LIFT */
.btn{position:relative;overflow:hidden;z-index:0;isolation:isolate;}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--accent);transform:translateY(101%);transition:transform .45s var(--ease-expo);}
.btn:hover{transform:translateY(-3px);}
.btn:hover::before{transform:translateY(0);}
.nav-btn{position:relative;overflow:hidden;isolation:isolate;z-index:0;}
.nav-btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--cream);transform:translateY(101%);transition:transform .4s var(--ease-expo);}
.nav-btn:hover{background:transparent;color:var(--bg);}
.nav-btn:hover::before{transform:translateY(0);}

/* 5 - INTRO LINE SUBTLE HOVER BREATH */
.intro-line{transition:transform 1.2s var(--ease-expo);}
.intro-screen:hover .intro-line{transform:scale(1.015);}

/* 8 - SECTION-TITLE WORD REVEAL: add opacity fade + quint easing */
.js [data-line-reveal] .line>span{opacity:0;transition:transform var(--dur-reveal) var(--ease-quint),opacity .8s var(--ease-quint);}
.js [data-line-reveal].in .line>span{opacity:1;}

/* 12 - ARIA-CURRENT NAV STYLE */
.nav-panel__list a[aria-current="true"]{color:var(--accent);}
.nav-panel__list a[aria-current="true"]::after{transform:scaleX(1);}

/* 11 - SKIP-LINK */
.skip-link{position:absolute;left:1rem;top:-3.5rem;z-index:200;background:var(--accent);color:var(--bg);padding:.7rem 1.2rem;border-radius:var(--radius-sm);font-family:'Jost',sans-serif;font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;transition:top .3s var(--ease-expo);}
.skip-link:focus{top:1rem;}

/* 13 - FOCUS-VISIBLE (all interactive) */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible,select:focus-visible,.call-fab:focus-visible,.lightbox-close:focus-visible,.to-top:focus-visible,.nav-panel__cta:focus-visible,.post-link:focus-visible,[tabindex]:focus-visible,.faq a:focus-visible,.brand:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}

/* 16 - VISUALLY HIDDEN LABEL */
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
.img-broken{opacity:.25;background:var(--bg);}

/* 18 - PREFERS-CONTRAST: MORE */
@media (prefers-contrast: more){
  :root{--line:rgba(244,240,237,.6);--text:var(--text-bright);--accent-ink:#465238;}
  .btn{border-width:2px;}
  .faq-item{border-width:2px;}
  .footer-address a{border-bottom-width:2px;}
  .nav{border-bottom-width:2px;}
}

/* 19 - FORCED-COLORS FALLBACK */
@media (forced-colors: active){
  .btn,.nav-btn,.faq-item,.to-top{border:2px solid CanvasText;}
  .btn-solid,.call-fab{background:CanvasText;color:Canvas;forced-color-adjust:none;}
  a{color:LinkText;}
}

/* HERO full-frame video (design constraint: #heroVideo = assets/ring.mp4) */
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}

/* 3 + 44 + 46 - SPLIT-MEDIA editorial frame, caption fade, hover zoom */
.split-media{border-radius:var(--radius-sm);box-shadow:0 18px 44px rgba(18,24,16,.20);}
.split-media img{transition:transform 1.1s var(--ease-expo),filter .6s var(--ease-quint);z-index:2;}

/* SUBTLE IDLE MOTION: photos "breathe" (gentle ken-burns) so the page feels
   alive without copying any other studio's grid. Own TO VITRINE imagery only.
   Disabled under reduced-motion (see media query below). */
@keyframes photoFloat{
  0%   {transform:scale(1) translateY(0);}
  50%  {transform:scale(1.045) translateY(-0.6%);}
  100% {transform:scale(1) translateY(0);}
}
.split-media img,
.gallery-grid img{
  animation:photoFloat 14s ease-in-out infinite;
  will-change:transform;
}
/* pause the idle drift on hover so the deliberate zoom reads cleanly */
.split-media:hover img,
.gal-item:hover img{animation-play-state:paused;}
.split-media figcaption{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:1.1rem 1.3rem;font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.05rem;color:var(--text-bright);background:linear-gradient(transparent,rgba(18,24,16,.72));opacity:0;transform:translateY(10px);transition:opacity .5s var(--ease-quint),transform .5s var(--ease-quint);pointer-events:none;}
.split-media:hover figcaption{opacity:1;transform:none;}
.split-media:hover img{animation:none;transform:scale(1.04);filter:saturate(1) contrast(1.03);}

/* 45 - LIGHTBOX CAPTION */
.lightbox{flex-direction:column;gap:1rem;}
.lightbox-cap{max-width:80vw;text-align:center;font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.1rem;color:var(--cream);}

/* 48 - IMAGE LOADING SHIMMER (removed once .loaded) */
.split-media,.gal-item{position:relative;}
.split-media::after,.gal-item::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(100deg,rgba(244,240,237,.04) 30%,rgba(244,240,237,.12) 50%,rgba(244,240,237,.04) 70%);background-size:200% 100%;animation:shimmer 3.2s infinite linear;opacity:.6;transition:opacity .5s var(--ease-quint);}
.gallery-grid img{z-index:2;}
.split-media.loaded::after,.gal-item.loaded::after{opacity:0;}
@keyframes shimmer{from{background-position:200% 0;}to{background-position:-200% 0;}}

/* 49 - gal-item reveal reinforcement + will-change */
.js [data-clip]{will-change:clip-path;}

/* 97 - broken image guard */
.gal-item.img-broken{background:var(--card);min-height:200px;border-radius:var(--radius-sm);}
.gal-item.img-broken::after{display:none;}

/* 71 - nav scrolled shadow + frosted solid background (after 80px) */
.nav.scrolled{background-color:rgba(35,45,31,.92);backdrop-filter:blur(14px) saturate(1.15);-webkit-backdrop-filter:blur(14px) saturate(1.15);box-shadow:var(--shadow-2);border-bottom-color:rgba(244,240,237,.22);}
.to-top{box-shadow:var(--shadow-1);}

/* 77 - MOBILE TYPO CLAMP */
@media (max-width:480px){
  :root{--fs-lead:clamp(1.1rem,4.5vw,1.3rem);--fs-section:clamp(2rem,8vw,3rem);}
  body{line-height:1.7;}
  .hero-sub--tag{font-size:clamp(1.2rem,5vw,1.8rem);}
  .section-title{line-height:1.08;}
}

/* 79 - MOBILE NAV OVERLAY refinement + scroll lock */
.nav-panel{gap:var(--space-5);padding:calc(var(--space-7) + env(safe-area-inset-top)) var(--container-pad) calc(var(--space-6) + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch;}
body.nav-open{overflow:hidden;}

/* 80 - SAFE-AREA INSETS */
.nav{padding:calc(1rem + env(safe-area-inset-top)) 0 calc(1rem + env(safe-area-inset-bottom));}
.call-fab{right:calc(1.5rem + env(safe-area-inset-right));bottom:calc(1.5rem + env(safe-area-inset-bottom));}
.to-top{left:calc(1.6rem + env(safe-area-inset-left));bottom:calc(1.6rem + env(safe-area-inset-bottom));}
.lightbox-close{top:calc(1.4rem + env(safe-area-inset-top));right:calc(1.8rem + env(safe-area-inset-right));}
.nav-panel__close{top:calc(1.2rem + env(safe-area-inset-top));right:calc(1.6rem + env(safe-area-inset-right));}

/* 81 - TOUCH TARGETS (min 44px) */
.nav-btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center;}
.nav-panel__list a{min-height:44px;display:flex;align-items:center;justify-content:center;}
.call-fab{min-height:44px;}
a.post-link,.btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center;}

/* 82 - ORIENTATION (short landscape) + small-viewport height */
.intro-screen{height:100svh;}
.hero{min-height:100svh;}
@media (max-height:520px) and (orientation:landscape){
  .intro-screen{height:100svh;padding:0 7vw;}
  .intro-line{font-size:clamp(1.8rem,6vh,3.4rem);}
  .hero{min-height:100svh;}
  .nav-panel{gap:var(--space-3);padding-top:calc(var(--space-5) + env(safe-area-inset-top));}
  .nav-panel__list{gap:var(--space-2);}
}

/* 85 - NAV CTA wrap on very small screens */
@media (max-width:420px){
  .nav-btn--cta{white-space:normal;font-size:var(--fs-xs);padding:.6rem 1rem;text-align:center;}
  .brand{font-size:1.2rem;}
}

/* 86 - INPUTS 16px anti-zoom (iOS) */
.contact-form .field input,.contact-form .field textarea{font-size:1rem;line-height:1.5;}
@media (max-width:480px){.contact-form .field input,.contact-form .field textarea{font-size:16px;}}

/* 65 - RGPD line */
.rgpd-line{font-size:.74rem;letter-spacing:.04em;color:var(--ink-soft);opacity:.75;margin:.4rem 0 0;}

/* 10 + 17 - REDUCED MOTION (stronger + targeted) */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;scroll-padding-top:0;}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important;}
  [data-reveal],[data-clip],[data-parallax]{opacity:1!important;transform:none!important;clip-path:none!important;filter:none!important;}
  .js [data-line-reveal] .line>span{transform:none!important;opacity:1!important;}
  .split-media::after,.gal-item::after{animation:none!important;opacity:0!important;}
  .call-fab{animation:none!important;}
  .btn,.nav-btn,.nav-panel__list a,.post-link,  .split-media:hover img,.gallery-grid figure:hover img{transform:none!important;}
  /* reduced motion: do NOT pin #parlons (long scroll track would trap users) */
  #parlons{min-height:auto!important;display:block!important;}
  #parlons > .container{position:static!important;min-height:auto!important;}
  /* reduced motion: header never slides/hides */
  .nav.hide{transform:none!important;pointer-events:auto!important;}
}

/* 99 - CONTACT FORM: validation, pending, meta, honeypot */
.contact-form .req{color:var(--accent-ink, #8a9a5b);}
.field-error{margin:.4rem 0 0;font-size:.85rem;font-weight:600;color:#b3261e;line-height:1.35;}
.contact-form input.is-invalid,.contact-form textarea.is-invalid{border-color:#b3261e !important;box-shadow:0 0 0 3px rgba(179,38,30,.18) !important;}
.contact-form input[aria-invalid="true"],.contact-form textarea[aria-invalid="true"]{border-color:#b3261e !important;}
/* pending submit button */
.btn-solid.is-pending{opacity:.85;cursor:wait;display:inline-flex;align-items:center;justify-content:center;gap:.6rem;}
.btn-solid.is-pending .spinner{width:1em;height:1em;border:2px solid rgba(35,45,31,.35);border-top-color:#232d1f;border-radius:50%;animation:spin .7s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
/* live form-note states */
.form-note--pending{color:var(--ink);}
.form-note--ok{color:#2f6f3e;font-weight:600;}
.form-note--error{color:#b3261e;font-weight:600;}
.form-note__mail{color:inherit;text-decoration:underline;font-weight:700;}
/* contact meta block */
.contact-meta{max-width:560px;margin:2.6rem auto 0;text-align:left;}
.contact-meta__title{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:500;color:var(--ink);margin:0 0 1.4rem;}
.contact-meta__list{list-style:none;margin:0;padding:0;display:grid;gap:1.1rem;}
.contact-meta__item{display:grid;grid-template-columns:170px 1fr;align-items:baseline;gap:1rem;border-bottom:1px solid rgba(168,184,154,.18);padding-bottom:1.1rem;}
.contact-meta__item:last-child{border-bottom:0;padding-bottom:0;}
.contact-meta__label{font-family:'Jost',sans-serif;font-size:.74rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);}
.contact-meta__value{font-family:'Jost',sans-serif;font-size:1.02rem;line-height:1.4;color:var(--ink);text-decoration:none;}
a.contact-meta__value:hover{color:var(--accent-ink);text-decoration:underline;}
@media (max-width:540px){
  .contact-meta__item{grid-template-columns:1fr;gap:.25rem;}
}
/* honeypot: visually + a11y hidden, off the layout */
.hp-field{position:absolute !important;left:-9999px !important;width:1px !important;height:1px !important;overflow:hidden !important;clip:rect(0 0 0 0) !important;}
@media (prefers-reduced-motion:reduce){.btn-solid.is-pending .spinner{animation:none;}}
@media (forced-colors:active){.field-error,.form-note--error,.form-note--ok{forced-color-adjust:none;}}

/* 100 - PRINT STYLESHEET */
@media print{
  .nav,.call-fab,.to-top,.intro-screen,.lightbox,.scroll-cue,.nav-panel{display:none !important;}
  body{background:#fff;color:#000;}
  .section,.section.alt{background:#fff !important;color:#000 !important;padding:1.5rem 0;}
  .section .eyebrow,.section .lead,.section .split-text>p,.section.alt .lead,.section.alt .split-text>p{color:#222 !important;}
  .section-title,.hero-title,h1,h2,h3{color:#000 !important;}
  a{color:#000 !important;text-decoration:underline;}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:.8em;color:#444;}
  .gallery-grid{grid-template-columns:repeat(2,1fr);}
  .split-media img,.gallery-grid img{filter:none !important;}
  .photo-card,.film-frame{border:1px solid #ccc;}
}

/* ===== PROGRESSIVE CONTACT WIZARD (Vero palette) ===== */
.contact-form{background:var(--cream);color:var(--ink);border:1px solid rgba(35,45,31,.12);border-radius:var(--radius-md);padding:clamp(1.6rem,4vw,2.6rem);box-shadow:var(--shadow-2);max-width:620px;margin:0 auto;}
.form-progress{display:none;gap:.5rem;margin-bottom:1.8rem;}
.form-progress span{flex:1;height:3px;border-radius:2px;background:rgba(35,45,31,.12);transition:background .5s var(--ease-expo);}
.form-progress span.on{background:var(--accent-ink);}
.form-step{display:block;animation:formIn .5s var(--ease-expo) both;}
.form-step[hidden]{display:none;}
@keyframes formIn{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}
.contact-form label{display:block;font-family:'Jost',sans-serif;font-size:.92rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--ink);margin:1.1rem 0 .5rem;}
.contact-form input,.contact-form select,.contact-form textarea{width:100%;font-family:'Jost',sans-serif;font-size:1rem;color:var(--ink);background:#fff;border:1px solid rgba(35,45,31,.32);border-radius:var(--radius-sm);padding:.9rem 1rem;transition:border-color .4s var(--ease-expo),box-shadow .4s var(--ease-expo);}
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{outline:none;border-color:var(--accent-ink);box-shadow:0 0 0 3px rgba(94,106,79,.18);}
.contact-form textarea{resize:vertical;}
.form-hint{font-size:.86rem;color:var(--ink);margin:.5rem 0 0;font-style:italic;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.form-q{font-family:'Cormorant Garamond',serif;font-size:1.7rem;font-weight:500;color:var(--ink);margin:.4rem 0 1.1rem;}
.form-options{display:grid;gap:.6rem;}
.form-options .opt{text-align:left;font-family:'Jost',sans-serif;font-size:.95rem;color:var(--opt-fg);background:var(--opt-bg);border:1px solid var(--opt-border);border-radius:var(--radius-sm);padding:.9rem 1.1rem;cursor:pointer;transition:border-color .35s var(--ease-expo),background .35s var(--ease-expo),transform .2s var(--ease-expo);}
.form-options .opt:hover{border-color:var(--accent-ink);background:rgba(94,106,79,.06);transform:translateX(3px);}
.form-options .opt.selected{border-color:var(--accent-ink);background:rgba(94,106,79,.12);font-weight:600;box-shadow:0 0 0 2px rgba(94,106,79,.25);}
.form-back{display:block;margin:1.2rem auto 0;background:none;border:none;color:var(--ink);font-family:'Jost',sans-serif;font-size:.9rem;cursor:pointer;letter-spacing:.03em;transition:color .3s var(--ease-expo);}
.form-back:hover{color:var(--accent-ink);}
.contact-form .btn-solid{margin-top:1.4rem;width:100%;}
/* dark-mode form controls: never white. charcoal field on charcoal surface */
[data-theme="dark"] .contact-form input,
[data-theme="dark"] .contact-form select,
[data-theme="dark"] .contact-form textarea{
  background:var(--card);
  color:var(--text-bright);
  border-color:var(--line);
}
[data-theme="dark"] .contact-form input::placeholder,
[data-theme="dark"] .contact-form select::placeholder,
[data-theme="dark"] .contact-form textarea::placeholder{color:rgba(244,240,237,.5);}
[data-theme="dark"] .contact-form input:focus,
[data-theme="dark"] .contact-form select:focus,
[data-theme="dark"] .contact-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(168,184,154,.22);}
.secure-note{text-align:center;font-size:.82rem;color:var(--ink-soft);margin:1.4rem 0 0;}
@media (max-width:520px){.form-row{grid-template-columns:1fr;}}
@media (prefers-reduced-motion:reduce){.form-step{animation:none;}}

/* ===== POLISH: a11y / focus / selection / tap-targets / print ===== */
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px;}
:focus:not(:focus-visible){outline:none;}
::selection{background:rgba(201,163,106,.28);color:var(--ink);}
.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--cream);color:var(--ink);padding:.8rem 1.2rem;border-radius:0 0 8px 0;font-family:'Jost',sans-serif;}
.skip-link:focus{left:0;}
a,button,input,textarea,summary,[tabindex]{min-height:44px;}
input,textarea,select{font-size:16px;} /* avoid iOS zoom-on-focus */
img,svg,video,canvas{vertical-align:middle;}
.lazy{opacity:0;transition:opacity .6s var(--ease-expo);}
.lazy.loaded{opacity:1;}
@media (prefers-contrast:more){:focus-visible{outline-width:3px;}a{text-decoration:underline;}}
@media print{
  .nav,.scroll-cue,.intro-screen,  body{background:#fff;color:#000;}
  .section{break-inside:avoid;padding:2rem 0;}
  a[href^="http"]::after{content:" ("attr(href)")";font-size:.8em;color:#555;}
}

/* ===== A PROPOS (photographer bio) ===== */
.apropos-signature{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.7rem;color:var(--accent-ink);margin:1.8rem 0 .4rem;letter-spacing:.01em;}
.apropos-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,3vw,2.4rem);margin-top:2.4rem;padding-top:2rem;border-top:1px solid rgba(94,106,79,.28);}
.apropos-stat{display:flex;flex-direction:column;align-items:flex-start;}

.apropos-stat__num{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:clamp(2.2rem,4vw,3.2rem);line-height:1;color:var(--ink);}
.apropos-stat__label{margin-top:.6rem;font-family:'Jost',sans-serif;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);}
@media (max-width:480px){
  .apropos-stats{grid-template-columns:1fr;gap:1.4rem;}
  .apropos-stat{flex-direction:row;align-items:baseline;gap:.8rem;}
  .apropos-stat__label{margin-top:0;}
}

/* dept-agent auth verified */

/* ===== BLOG POSTS (single-source via generate_blog.py) =====
   NB: classes MUST match blog-post.template.html (flat, not BEM). */
.post-main{max-width:var(--maxw-read,760px);margin:0 auto;padding:0 var(--container-pad);}
.post-article{padding:5.5rem 0 4rem;}
.post-hero{position:relative;margin-bottom:2.4rem;}
/* Blog intro shows immediately (like the index hero) — never gated behind a scroll reveal. */
.js .post-hero{opacity:1!important;transform:none!important;}
.js .post-hero .post-title{opacity:1!important;transform:none!important;}
.post-hero .eyebrow{margin-bottom:1.1rem;}
.post-title{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2.6rem,6vw,4.4rem);line-height:1.04;margin:0 0 1.1rem;color:var(--ink);letter-spacing:.005em;}
.post-subtitle{font-size:clamp(1.05rem,2vw,1.3rem);line-height:1.5;color:var(--ink-soft);max-width:54ch;margin:0 0 2.2rem;}
.post-hero-fig{margin:0;border-radius:10px;overflow:hidden;box-shadow:0 18px 50px rgba(35,45,31,.16);}
/* standalone figures inside the article (not the hero one) need breathing room
   above so they don't crowd the section title they follow */
.post-article > .post-hero-fig{margin-top:2.6rem;}
.post-hero-fig img{width:100%;height:auto;display:block;}
.post-body{padding-bottom:1rem;}
.post-section{margin:0 0 2.6rem;}
/* blog: breathing room between an in-article picture and the following title/section */
.post-hero-fig + .post-section{margin-top:3rem;}
.post-h2{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(1.7rem,3.4vw,2.6rem);line-height:1.12;margin:0 0 1.1rem;color:var(--ink);}
.post-body p{margin:0 0 1.25rem;color:var(--ink);font-weight:300;font-size:1.05rem;line-height:1.8;}
.post-body strong{font-weight:500;color:var(--ink);}
.post-gallery{margin:3rem 0;}
.post-gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.1rem;margin:1.4rem 0;}
.post-fig{margin:0;overflow:hidden;border-radius:6px;box-shadow:0 8px 30px rgba(35,45,31,.10);}
.post-fig img{width:100%;height:100%;object-fit:cover;aspect-ratio:3/2;transition:transform .6s ease;}
/* 4th gallery image (portrait of the bride) — bias the crop toward her face
   (face sits upper-left ~40%/25% of the source) so it isn't cropped out. */
.post-gallery-grid .post-fig:nth-child(4) img{object-position:40% 25%;}
.post-fig:hover img{transform:scale(1.03);}
.post-faq{margin:2.6rem 0;}
.faq-item{background:rgba(168,184,154,.08);border:1px solid rgba(168,184,154,.30);border-radius:6px;padding:0 1.4rem;margin-bottom:1rem;}
.faq-item summary{cursor:pointer;padding:1.2rem 0;font-weight:500;color:var(--ink);list-style:none;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item p{padding:0 0 1.2rem;color:var(--ink-soft);}
.post-cta{text-align:center;background:rgba(168,184,154,.10);border:1px solid rgba(168,184,154,.30);border-radius:12px;padding:2.8rem 1.6rem;margin:3rem 0;display:flex;flex-direction:column;align-items:center;}
.post-cta p{color:var(--ink-soft);max-width:46ch;margin:0 auto 1.6rem;}
.post-cta .btn{display:inline-flex;align-items:center;justify-content:center;width:100%;max-width:300px;margin:.5rem;}
/* phone button must stay visible on the light CTA bg (was light-on-light / invisible) */
.post-cta .btn-ghost{color:var(--ink);border-color:var(--accent);background:transparent;}
.post-cta .btn-ghost:hover{background:var(--accent-soft);color:var(--ink);}
.post-related{margin:3rem 0 1rem;}
.related-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.1rem;margin-top:1.4rem;}
.related-card{display:flex;flex-direction:column;gap:.4rem;padding:1.6rem;border:1px solid rgba(168,184,154,.30);border-radius:8px;background:rgba(168,184,154,.06);transition:border-color .3s ease,transform .3s ease;}
.related-card:hover{border-color:var(--accent);transform:translateY(-2px);}
.related-kicker{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);}
.related-title{font-family:'Cormorant Garamond',serif;font-size:1.35rem;color:var(--ink);}
@media (max-width:640px){
  .post-gallery-grid,.related-grid{grid-template-columns:1fr;}
  .post-article{padding:4rem 0 3rem;}
}
/* end blog */

/* ---- Lyon hub conversion boosters ---- */
.star-quote{
  margin:0 0 1.1rem; padding:1.1rem 1.3rem; border-left:3px solid var(--gold,#c8a24b);
  background:linear-gradient(90deg, rgba(200,162,75,.08), transparent);
  font-family:var(--serif,"Cormorant Garamond",serif); font-size:1.22rem; line-height:1.5;
  font-style:italic; color:var(--ink,#23291f); border-radius:0 10px 10px 0;
}
.star-quote cite{display:block; margin-top:.6rem; font-style:normal; font-size:.92rem; opacity:.7; letter-spacing:.02em;}
.section.alt .star-quote{color:var(--text-bright,#e8e5d8);}
.section.alt .star-quote cite{opacity:.85;}
.lieux-line{margin:.2rem 0 1.1rem; font-size:.98rem; color:var(--ink,#23291f); opacity:.82;}
.trust-counter{display:flex; flex-direction:column; align-items:center; gap:.2rem; margin:1.4rem auto 2.2rem; text-align:center;}
/* contact "Ensemble" spacing: tighter h2→counter, more air between 320 and label */
#parlons .section-head{margin-bottom:clamp(.9rem,2vw,1.5rem);}
#parlons .trust-counter{gap:1.1rem; margin-top:.8rem;}
.counter{font-family:var(--serif,"Cormorant Garamond",serif); font-size:3.4rem; font-weight:700; line-height:1; color:var(--gold,#c8a24b);}
.counter-label{font-size:.95rem; letter-spacing:.04em; text-transform:uppercase; opacity:.7;}
.form-assurance{margin:.9rem 0 .2rem; font-size:.92rem; text-align:center; color:var(--ink,#23291f); opacity:.8;}
.form-assurance a{color:var(--gold,#c8a24b); text-decoration:none; font-weight:600; display:block; margin-top:.35rem;}
.form-phone{margin:0 0 .4rem; width:100%; text-align:center; display:flex; justify-content:center;}
.form-phone a{display:inline-block; font-family:"Jost",sans-serif; letter-spacing:.06em; font-size:1.15rem; font-weight:700; color:var(--gold,#c8a24b); text-decoration:none;}
.form-phone a:hover{text-decoration:underline;}
