/* ============================================================
   THEME — Light/Dark switch
   Toggle by setting [data-theme="light"] on <html>.
   Default = dark (existing site palette, untouched).
   ============================================================ */

:root {
  /* ── DARK MODE (default) — canonical palette ──
     These are the SINGLE SOURCE OF TRUTH. Local :root blocks in each
     page used to redefine them — now removed. Change colors here only. */
  --bg:         #0e0d0b;
  --bg2:        #131210;
  --bg3:        #0a0908;
  --cream:      #f2ead8;
  --gold:       #c9a96e;
  --gold-light: #e2c98a;
  --text:       #d8d0bc;
  --muted:      #6b6357;
  --border:     rgba(201,169,110,0.15);

  /* Fonts */
  --ff-d: 'Cormorant Garamond', Georgia, serif;
  --ff-b: 'DM Sans', sans-serif;
  /* Aliases (legacy index.html naming) */
  --ff-display: var(--ff-d);
  --ff-body:    var(--ff-b);

  /* Layout */
  --pad: clamp(24px, 5vw, 72px);

  /* Theme transitions */
  --theme-transition: background-color .45s ease, color .35s ease, border-color .35s ease, opacity .35s ease;
}

/* ============================================================
   ACCESSIBILITY
   - Skip-to-content link (visible only on keyboard focus)
   - Custom :focus-visible ring matching the brand gold
   ============================================================ */
.skip-link {
  position: fixed;
  top: 8px;
  left: 8px;
  z-index: 10000;
  padding: 12px 20px;
  background: var(--gold);
  color: #0e0d0b;
  font-family: var(--ff-b);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-decoration: none;
  border: 2px solid var(--gold);
  transform: translateY(-200%);
  transition: transform 0.25s ease;
}
.skip-link:focus,
.skip-link:focus-visible {
  transform: translateY(0);
  outline: 2px solid #fff;
  outline-offset: 2px;
}

/* Custom focus ring — gold, accessible, hides on mouse click */
*:focus-visible {
  outline: 2px solid var(--gold-light);
  outline-offset: 3px;
  border-radius: 2px;
}
/* Remove default outline for buttons/inputs in favour of :focus-visible only */
*:focus:not(:focus-visible) {
  outline: none;
}
/* Inputs/textareas: subtle border-glow rather than offset outline (keeps form layout clean) */
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: none;
  border-color: var(--gold) !important;
  box-shadow: 0 0 0 2px rgba(201,169,110,0.25);
}

html, body, nav, footer, .panel, .hero, .about-section, .portfolio-section,
.why-section, .testi-section, .testi-card, .faq-section, .cta-section,
.btn, .nav-cta, .carousel-btn, #back-top, .reviews-badge, .faq-q, .faq-a,
.nav-links a, .footer-nav a, .nav-social a, .footer-social a,
.hero-title, .panel-title, .hero-sub, .panel-sub,
.about-quote, .about-body, .why-title, .why-body, .why-list li,
.portfolio-title, .testi-title, .faq-title, .cta-title, .cta-sub,
.film-name, .film-type, .film-place, .testi-text, .testi-author,
.lbl, .panel-tag, .hero-tag, .footer-copy, .footer-google-text,
.reviews-count, .reviews-label,
.legal-page, .legal-section, .legal-h2, .legal-h3, .legal-body, .legal-list li,
.legal-card, .legal-toc a, .legal-meta, .legal-contact-card,
.contact-section, .contact-form, .contact-form input, .contact-form textarea,
.about-page, .corporate-page,
.form-input, .form-label, .form-card,
.center-badge, .badge-name, .badge-tagline, .nav-logo img, .footer-logo img, .badge-logo {
  transition: var(--theme-transition);
}

/* ============================================================
   LIGHT MODE — variable overrides
   ============================================================ */
html[data-theme="light"] {
  --bg:        #f5f1e8;
  --bg2:       #ece6d8;
  --bg3:       #e3dac6;
  --cream:     #1d1a14;          /* now: dark text on light bg */
  --gold:      #a0813f;          /* slightly darker gold for AA contrast */
  --gold-light:#7d6428;
  --text:      #2a2620;
  --muted:     #7a7163;
  --border:    rgba(160,129,63,0.28);

  /* Light-mode shared utilities */
  --light-veil-strong: linear-gradient(to top, rgba(245,241,232,0.85) 0%, rgba(245,241,232,0.20) 40%, transparent 70%);
  --light-veil-soft:   linear-gradient(to top, rgba(245,241,232,0.92) 0%, transparent 100%);
  --light-shadow-soft: 0 1px 3px rgba(60,45,20,0.12);
}

html[data-theme="light"] body {
  background: var(--bg);
  color: var(--cream);
}

/* Grain less visible in light mode */
html[data-theme="light"] body::before { opacity: 0.04; mix-blend-mode: multiply; }

/* ─────────── NAV ─────────── */
/* In light mode the nav becomes a solid cream band so headings stay legible
   over the hero photo. */
html[data-theme="light"] nav {
  background: rgba(245,241,232,0.35);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(160,129,63,0.10);
}
html[data-theme="light"] nav.scrolled {
  background: rgba(245,241,232,0.88);
  border-bottom: 1px solid var(--border);
}

/* index.html nav: keep transparent over photo (no toggle there anyway) */
html[data-theme="light"] body > .stage > nav,
html[data-theme="light"] .stage nav {
  background: linear-gradient(to bottom, rgba(245,241,232,0.45) 0%, transparent 100%);
  border-bottom: none;
  backdrop-filter: none;
}

/* Logo: invert back to dark */
html[data-theme="light"] .nav-logo img,
html[data-theme="light"] .footer-logo img {
  filter: none !important;
}

/* Nav links / icons → dark text */
html[data-theme="light"] .nav-links a,
html[data-theme="light"] .nav-social a {
  color: #1d1a14 !important;
  text-shadow: none !important;
}
html[data-theme="light"] .nav-links a { opacity: .8; }
html[data-theme="light"] .nav-links a:hover,
html[data-theme="light"] .nav-links a.active { color: var(--gold-light) !important; opacity: 1; }

html[data-theme="light"] .nav-lang { color: rgba(29,26,20,0.55); }
html[data-theme="light"] .nav-lang:hover { color: #1d1a14; }

html[data-theme="light"] .nav-cta,
html[data-theme="light"] .nav-contact {
  color: #1d1a14;
  border-color: rgba(29,26,20,0.45);
  text-shadow: none;
}
html[data-theme="light"] .nav-cta:hover,
html[data-theme="light"] .nav-contact:hover {
  background: rgba(29,26,20,0.06);
  border-color: rgba(29,26,20,0.8);
}

/* Burger lines */
html[data-theme="light"] .burger span { background: #1d1a14; }

/* Mobile menu */
html[data-theme="light"] .mobile-menu {
  background: rgba(245,241,232,0.98);
}
html[data-theme="light"] .mobile-menu ul li a { color: var(--cream); }
html[data-theme="light"] .mobile-menu-cta {
  color: #1d1a14; border-color: rgba(29,26,20,0.3);
}
html[data-theme="light"] .mobile-menu-cta:hover {
  background: rgba(29,26,20,0.08); border-color: rgba(29,26,20,0.7);
}
html[data-theme="light"] .mobile-social a { color: rgba(29,26,20,0.45); }
html[data-theme="light"] .mobile-social a:hover { color: var(--gold-light); }

/* ─────────── HOMEPAGE PANELS ─────────── */
/* Hover/contrast on hero panels: keep the photos but lighten the overlay
   so text + badge sit on a lighter veil that matches cream tone. */
html[data-theme="light"] .panel-veil {
  background: linear-gradient(to top,
    rgba(245,241,232,0.55) 0%,
    rgba(245,241,232,0.10) 40%,
    transparent 70%);
}
html[data-theme="light"] .panel img { filter: brightness(1) saturate(0.95); }
html[data-theme="light"] .panel:hover img { filter: brightness(0.95) saturate(1); }

html[data-theme="light"] .panel-title {
  color: #1d1a14;
  text-shadow: 0 2px 18px rgba(245,241,232,0.6);
}
html[data-theme="light"] .panel-sub { color: #2a2620; opacity: .8; }
html[data-theme="light"] .panel-tag { color: var(--gold-light); }
html[data-theme="light"] .panel-cta { color: var(--gold-light); }
html[data-theme="light"] .cta-line::before { background: var(--gold-light); }
html[data-theme="light"] .cta-line::after { border-color: var(--gold-light); }

/* Center badge — invert logo and darken text */
html[data-theme="light"] .badge-logo {
  filter: drop-shadow(0 0 22px rgba(245,241,232,0.85)) drop-shadow(0 2px 6px rgba(245,241,232,0.7)) brightness(0.15) !important;
}
html[data-theme="light"] .badge-name {
  color: #1d1a14;
  text-shadow:
    0 0 50px rgba(245,241,232,0.95),
    0 0 24px rgba(245,241,232,0.85),
    0 1px 4px rgba(245,241,232,0.7);
}
html[data-theme="light"] .badge-tagline {
  color: var(--gold-light);
  text-shadow: 0 0 18px rgba(245,241,232,0.95), 0 1px 4px rgba(245,241,232,0.7);
}
html[data-theme="light"] .badge-rule-top,
html[data-theme="light"] .badge-rule-bottom {
  background: linear-gradient(to right, transparent, var(--gold), transparent);
}

/* Footer on index */
html[data-theme="light"] .stage > footer,
html[data-theme="light"] body > .stage footer {
  background: linear-gradient(to top, rgba(245,241,232,0.85) 0%, transparent 100%);
}
html[data-theme="light"] .footer-legal a,
html[data-theme="light"] .footer-legal span {
  color: #2a2620;
}

/* ─────────── HERO (mariage / corporate / about) ─────────── */
html[data-theme="light"] .hero img { filter: brightness(0.95) saturate(0.92); }
html[data-theme="light"] .hero-veil {
  background: linear-gradient(to top, rgba(245,241,232,0.88) 0%, rgba(245,241,232,0.25) 40%, transparent 70%);
}
html[data-theme="light"] .hero-title {
  color: #1d1a14;
  text-shadow: 0 2px 22px rgba(245,241,232,0.6);
}
html[data-theme="light"] .hero-sub { color: var(--cream); opacity: .82; }
html[data-theme="light"] .hero-tag { color: var(--gold-light); }

/* ─────────── SECTIONS BG ─────────── */
html[data-theme="light"] .about-section { background: var(--bg); }
html[data-theme="light"] .portfolio-section { background: var(--bg2); }
html[data-theme="light"] .why-section { background: var(--bg); }
html[data-theme="light"] .testi-section { background: var(--bg2); }
html[data-theme="light"] .faq-section { background: var(--bg); }
html[data-theme="light"] .cta-section { background: var(--bg2); }
html[data-theme="light"] .cta-section::before {
  background: radial-gradient(ellipse 50% 50% at 50% 50%, rgba(160,129,63,0.10) 0%, transparent 70%);
}

/* ─────────── CORPORATE-SPECIFIC SECTIONS ─────────── */
html[data-theme="light"] .expertise-section { background: var(--bg2); }
html[data-theme="light"] .expertise-card {
  background: var(--bg);
  border-color: var(--border);
}
html[data-theme="light"] .expertise-card:hover { background: rgba(160,129,63,0.06); }
html[data-theme="light"] .expertise-name { color: var(--cream); }
html[data-theme="light"] .expertise-desc { color: var(--text); }
html[data-theme="light"] .expertise-num,
html[data-theme="light"] .expertise-arrow { color: var(--gold-light); }
html[data-theme="light"] .expertise-arrow-line::before { background: var(--gold-light); }
html[data-theme="light"] .expertise-arrow-line::after { border-color: var(--gold-light); }

/* Trust logos band — was bg3 (near-black). In light mode: cream contrasted band */
html[data-theme="light"] .trust-section {
  background: #ebe4d3;
  border-color: var(--border);
}
html[data-theme="light"] .trust-label { color: var(--muted); }
/* Logos used brightness(0) invert(1) → invisible on cream. Restore dark logos. */
html[data-theme="light"] .trust-logos img {
  filter: brightness(0) saturate(0);
  opacity: 0.55;
}
html[data-theme="light"] .trust-logos img:hover { opacity: 0.9; }

/* Bloc sections (alternating) */
html[data-theme="light"] .bloc-section:nth-of-type(even) { background: var(--bg2); }
html[data-theme="light"] .bloc-title { color: var(--cream); }
html[data-theme="light"] .bloc-num,
html[data-theme="light"] .bloc-subtitle { color: var(--gold-light); }
html[data-theme="light"] .bloc-body,
html[data-theme="light"] .bloc-list li { color: var(--text); opacity: .85; }
html[data-theme="light"] .bloc-list-title { color: var(--muted); }
html[data-theme="light"] .bloc-list li::before { background: var(--gold-light); }
html[data-theme="light"] .bloc-img-wrap img { filter: brightness(1) saturate(0.92); }
html[data-theme="light"] .bloc-img-wrap::after { border-color: rgba(160,129,63,0.55); }

/* KPI grid */
html[data-theme="light"] .kpi-grid { background: var(--border); }
html[data-theme="light"] .kpi-item { background: #ebe4d3; }
html[data-theme="light"] .bloc-section:nth-of-type(even) .kpi-item { background: var(--bg); }
html[data-theme="light"] .kpi-item:hover { background: rgba(160,129,63,0.08); }
html[data-theme="light"] .kpi-num { color: var(--gold-light); }
html[data-theme="light"] .kpi-label { color: var(--text); }
html[data-theme="light"] .kpi-source { color: var(--muted); }

/* Pull quote */
html[data-theme="light"] .quote-section { background: #ebe4d3; }
html[data-theme="light"] .pull-quote-mark { color: var(--gold); opacity: .25; }
html[data-theme="light"] .pull-quote-text { color: var(--cream); opacity: .88; }
html[data-theme="light"] .pull-quote-attr { color: var(--muted); }

/* Approche / generic image filters */
html[data-theme="light"] .approche-img img { filter: saturate(0.95) brightness(1); }

/* btn-white (corporate) — needs dark text in light mode */
html[data-theme="light"] .btn-white {
  color: var(--cream);
  border-color: rgba(29,26,20,0.4);
}
html[data-theme="light"] .btn-white:hover {
  background: rgba(29,26,20,0.08);
  border-color: rgba(29,26,20,0.7);
  color: var(--cream);
}

/* ─────────── TYPOGRAPHY ─────────── */
html[data-theme="light"] .about-quote,
html[data-theme="light"] .why-title,
html[data-theme="light"] .portfolio-title,
html[data-theme="light"] .testi-title,
html[data-theme="light"] .faq-title,
html[data-theme="light"] .cta-title { color: var(--cream); }

html[data-theme="light"] .about-quote em { color: var(--gold-light); }

html[data-theme="light"] .about-body,
html[data-theme="light"] .why-body,
html[data-theme="light"] .why-list li,
html[data-theme="light"] .cta-sub { color: var(--text); opacity: .82; }

html[data-theme="light"] .lbl,
html[data-theme="light"] .cta-eyebrow { color: var(--gold-light); }
html[data-theme="light"] .lbl::before { background: var(--gold-light); }

/* About image frame */
html[data-theme="light"] .about-img::after { border-color: rgba(160,129,63,0.55); }
html[data-theme="light"] .about-img img { filter: saturate(0.95) brightness(1); }

/* ─────────── BUTTONS ─────────── */
html[data-theme="light"] .btn {
  color: var(--gold-light);
  border-color: rgba(160,129,63,0.5);
}
html[data-theme="light"] .btn:hover {
  background: var(--gold-light);
  color: #f5f1e8;
  border-color: var(--gold-light);
}
html[data-theme="light"] .btn-solid {
  background: var(--gold-light);
  color: #f5f1e8;
  border-color: var(--gold-light);
}
html[data-theme="light"] .btn-solid:hover {
  background: var(--gold);
  border-color: var(--gold);
}

/* ─────────── FILM CARDS ─────────── */
html[data-theme="light"] .film-card img,
html[data-theme="light"] .why-card img { filter: brightness(0.92) saturate(0.95); }
html[data-theme="light"] .film-card:hover img,
html[data-theme="light"] .why-card:hover img { filter: brightness(0.7) saturate(1); }
html[data-theme="light"] .film-info,
html[data-theme="light"] .why-card-info {
  background: linear-gradient(to top, rgba(0,0,0,0.65) 0%, transparent 100%);
}
/* film-name text stays white over image (info gradient is dark) */
html[data-theme="light"] .film-name,
html[data-theme="light"] .why-card-name { color: #fff; }
html[data-theme="light"] .film-type,
html[data-theme="light"] .why-card-type { color: var(--gold-light); }
html[data-theme="light"] .film-place { color: rgba(255,255,255,0.65); }
html[data-theme="light"] .film-ring { background: rgba(245,241,232,0.25); }
html[data-theme="light"] .film-play-label { color: #fff; }

/* ─────────── TESTIMONIALS ─────────── */
html[data-theme="light"] .testi-card {
  background: var(--bg);
  box-shadow: 0 1px 0 rgba(0,0,0,0.04);
}
html[data-theme="light"] .testi-text { color: var(--cream); opacity: .9; }
html[data-theme="light"] .testi-author { color: var(--gold-light); }
html[data-theme="light"] .testi-q { color: var(--gold); opacity: .25; }
html[data-theme="light"] .reviews-badge {
  background: rgba(160,129,63,0.06);
  border-color: rgba(160,129,63,0.3);
}
html[data-theme="light"] .reviews-count { color: var(--cream); }
html[data-theme="light"] .reviews-label { color: var(--muted); }
html[data-theme="light"] .stars,
html[data-theme="light"] .footer-stars { color: var(--gold-light); }
html[data-theme="light"] .carousel-dot { background: var(--muted); opacity: .5; }
html[data-theme="light"] .carousel-dot.active { background: var(--gold-light); opacity: 1; }
html[data-theme="light"] .carousel-btn { color: var(--text); border-color: var(--border); }
html[data-theme="light"] .carousel-btn:hover {
  border-color: var(--gold-light); background: rgba(160,129,63,0.06); color: var(--gold-light);
}

/* ─────────── FAQ ─────────── */
html[data-theme="light"] .faq-item { border-top-color: var(--border); }
html[data-theme="light"] .faq-q { color: var(--cream); }
html[data-theme="light"] .faq-q:hover,
html[data-theme="light"] .faq-q.open { color: var(--gold-light); }
html[data-theme="light"] .faq-icon::before,
html[data-theme="light"] .faq-icon::after { background: var(--gold-light); }
html[data-theme="light"] .faq-a { color: var(--text); opacity: .82; }

/* ─────────── CONTACT PAGE ─────────── */
html[data-theme="light"] .contact-section { background: var(--bg); }
html[data-theme="light"] .info-block { border-bottom-color: var(--border); }
html[data-theme="light"] .info-label { color: var(--gold-light); }
html[data-theme="light"] .info-value,
html[data-theme="light"] .info-value a { color: var(--cream); }
html[data-theme="light"] .info-value a:hover { color: var(--gold); }
html[data-theme="light"] .info-note { color: var(--text); opacity: .65; }
html[data-theme="light"] .info-social a { color: var(--text); }
html[data-theme="light"] .info-social a:hover { color: var(--gold); }
html[data-theme="light"] .info-stars,
html[data-theme="light"] .footer-stars { color: var(--gold-light); }
html[data-theme="light"] .info-google-text { color: var(--text); }
html[data-theme="light"] .form-intro { color: var(--text); opacity: .8; }
html[data-theme="light"] .form-group label,
html[data-theme="light"] .form-group > div[data-fr] { color: var(--gold-light); }
html[data-theme="light"] .form-group input,
html[data-theme="light"] .form-group select,
html[data-theme="light"] .form-group textarea {
  background: rgba(29,26,20,0.04);
  border-color: rgba(160,129,63,0.28);
  color: var(--cream);
}
html[data-theme="light"] .form-group input::placeholder,
html[data-theme="light"] .form-group textarea::placeholder { color: var(--muted); opacity: .7; }
html[data-theme="light"] .form-group input:focus,
html[data-theme="light"] .form-group select:focus,
html[data-theme="light"] .form-group textarea:focus {
  background: rgba(29,26,20,0.07);
  border-color: var(--gold-light);
}
html[data-theme="light"] .form-group select option { background: #fff; color: var(--cream); }
html[data-theme="light"] .radio-group label { color: var(--text); border-color: rgba(160,129,63,0.28); }
html[data-theme="light"] .radio-group label:hover { border-color: var(--gold-light); }
html[data-theme="light"] .radio-group label:has(input:checked) {
  background: rgba(160,129,63,0.10);
  border-color: var(--gold-light);
  color: var(--gold-light);
}
html[data-theme="light"] .btn-submit {
  background: var(--gold-light);
  border-color: var(--gold-light);
  color: #fff;
}
html[data-theme="light"] .btn-submit:hover { background: var(--gold); border-color: var(--gold); }
html[data-theme="light"] .form-success {
  background: rgba(160,129,63,0.06);
  border-color: rgba(160,129,63,0.32);
}
html[data-theme="light"] .form-success-icon,
html[data-theme="light"] .form-success-title { color: var(--cream); }
html[data-theme="light"] .form-success-sub { color: var(--text); }

/* Date picker — light theme */
html[data-theme="light"] .dp-input {
  background: rgba(29,26,20,0.04);
  border-color: rgba(160,129,63,0.28);
  color: var(--cream);
}
html[data-theme="light"] .dp-input:hover,
html[data-theme="light"] .dp-wrap.open .dp-input {
  background: rgba(29,26,20,0.07);
  border-color: var(--gold-light);
}
html[data-theme="light"] .dp-input.empty { color: var(--muted); }
html[data-theme="light"] .dp-icon { stroke: var(--gold-light); }
html[data-theme="light"] .dp-panel {
  background: #fdfbf5;
  border-color: rgba(160,129,63,0.32);
  box-shadow: 0 24px 60px rgba(60,45,18,0.18), 0 4px 14px rgba(60,45,18,0.10);
}
html[data-theme="light"] .dp-title { color: var(--cream); }
html[data-theme="light"] .dp-nav {
  border-color: rgba(160,129,63,0.32);
  color: var(--gold-light);
}
html[data-theme="light"] .dp-nav:hover {
  border-color: var(--gold-light);
  background: rgba(160,129,63,0.10);
}
html[data-theme="light"] .dp-dow { color: var(--gold-light); }
html[data-theme="light"] .dp-day { color: var(--text); }
html[data-theme="light"] .dp-day:hover:not(.disabled):not(.selected) {
  background: rgba(160,129,63,0.12);
  color: var(--cream);
}
html[data-theme="light"] .dp-day.today {
  border-color: rgba(160,129,63,0.45);
  color: var(--gold-light);
}
html[data-theme="light"] .dp-day.selected {
  background: var(--gold-light);
  color: #fff;
}
html[data-theme="light"] .dp-foot { border-top-color: rgba(160,129,63,0.18); }
html[data-theme="light"] .dp-clear:hover { color: var(--gold-light); }
html[data-theme="light"] .dp-today-btn {
  border-color: rgba(160,129,63,0.32);
  color: var(--gold-light);
}
html[data-theme="light"] .dp-today-btn:hover {
  background: rgba(160,129,63,0.10);
  border-color: var(--gold-light);
}

/* ─────────── ABOUT PAGE — alternate band fixes ─────────── */
html[data-theme="light"] .stats-section { background: var(--bg3) !important; }
html[data-theme="light"] .stat-item { background: var(--bg3) !important; color: var(--cream); }
html[data-theme="light"] .stat-item:hover { background: rgba(160,129,63,0.06) !important; }
html[data-theme="light"] .stats-inner { background: var(--border) !important; }
html[data-theme="light"] .stat-num { color: var(--gold-light); }
html[data-theme="light"] .stat-label { color: var(--text); opacity: .75; }
html[data-theme="light"] .section-duo { background: var(--bg); }
html[data-theme="light"] .section-duo:nth-of-type(even) { background: var(--bg2) !important; }
html[data-theme="light"] .duo-tag,
html[data-theme="light"] .duo-title,
html[data-theme="light"] .duo-highlight,
html[data-theme="light"] .duo-body { color: var(--cream); }
html[data-theme="light"] .duo-body { color: var(--text); opacity: .82; }
html[data-theme="light"] .duo-highlight { color: var(--cream); }

/* About light: cta-section → bandeau sombre (rupture forte avec la lame cream précédente) */
html[data-theme="light"] .about-page .cta-section,
html[data-theme="light"] .corporate-page .cta-section,
html[data-theme="light"] section.cta-section { background: #1d1a14 !important; }
html[data-theme="light"] section.cta-section .cta-title,
html[data-theme="light"] section.cta-section .cta-sub { color: #f5f1e8 !important; }
html[data-theme="light"] section.cta-section .cta-eyebrow { color: var(--gold-light) !important; }
html[data-theme="light"] section.cta-section .btn { color: #1d1a14; }
html[data-theme="light"] section.cta-section .btn-solid { background: var(--gold-light); border-color: var(--gold-light); color: #1d1a14; }
html[data-theme="light"] section.cta-section .btn-solid:hover { background: var(--gold); border-color: var(--gold); }
html[data-theme="light"] section.cta-section a[href^="tel"] { color: rgba(245,241,232,0.7) !important; }

/* ─────────── FOOTER ─────────── */
html[data-theme="light"] .footer-nav a { color: var(--text); opacity: .75; }
html[data-theme="light"] .footer-nav a:hover { color: var(--gold-light); opacity: 1; }
html[data-theme="light"] .footer-sep { color: var(--muted); }
html[data-theme="light"] .footer-social a { color: var(--text); opacity: .6; }
html[data-theme="light"] .footer-social a:hover { color: var(--gold-light); opacity: 1; }
html[data-theme="light"] .footer-google-text { color: var(--muted); opacity: .7; }
html[data-theme="light"] .footer-copy { color: var(--muted); opacity: .55; }

/* ─────────── BACK TOP ─────────── */
html[data-theme="light"] #back-top {
  background: rgba(245,241,232,0.92);
  border-color: var(--border);
}
html[data-theme="light"] #back-top svg { stroke: var(--cream); }
html[data-theme="light"] #back-top:hover { border-color: var(--gold-light); }

/* ─────────── DIVIDER (homepage) ─────────── */
html[data-theme="light"] .divider {
  background: linear-gradient(to bottom, transparent 0%, var(--gold) 25%, var(--gold) 75%, transparent 100%);
  opacity: 0.32;
}

/* ─────────── LEGAL / CONTACT / ABOUT pages — generic adjustments ─────────── */
html[data-theme="light"] .legal-page,
html[data-theme="light"] .legal-section,
html[data-theme="light"] .legal-card,
html[data-theme="light"] .legal-contact-card { background: var(--bg); color: var(--cream); }
html[data-theme="light"] .legal-h2,
html[data-theme="light"] .legal-h3,
html[data-theme="light"] .legal-section h2,
html[data-theme="light"] .page-title { color: var(--cream) !important; }
html[data-theme="light"] .legal-section h3 { color: var(--gold-light); }
html[data-theme="light"] .legal-section p,
html[data-theme="light"] .legal-section ul li,
html[data-theme="light"] .legal-body,
html[data-theme="light"] .legal-list li { color: var(--text); opacity: .85; }
html[data-theme="light"] .legal-section ul li::before { color: var(--gold-light); }
html[data-theme="light"] .legal-section a { color: var(--gold-light); }
html[data-theme="light"] .legal-toc a { color: var(--text); }
html[data-theme="light"] .legal-toc a:hover { color: var(--gold-light); }
html[data-theme="light"] .legal-meta { color: var(--muted); }
html[data-theme="light"] .page-header { border-bottom-color: var(--border); }

/* Bigger back-top button */
#back-top { width: 52px !important; height: 52px !important; }
#back-top svg { width: 16px !important; height: 16px !important; }

/* Footer nav separators — boosted visibility */
.footer-sep { opacity: 0.55 !important; font-size: 12px !important; }
html[data-theme="light"] .footer-sep { color: var(--gold-light) !important; opacity: 0.7 !important; }

/* Footer Google badge — clickable */
a.footer-google { text-decoration: none; color: inherit; transition: opacity 0.2s; }
a.footer-google:hover { opacity: 0.75; }
a.footer-google:hover .footer-stars { color: var(--gold-light); }

/* ============================================================
   GLOBAL iOS SAFARI FIX
   - `body { overflow-x: hidden }` (set on every page) silently
     breaks `position: fixed` on iOS Safari: the fixed nav scrolls
     away with the page instead of staying pinned at the top, and
     the section behind it bleeds above the bar — making the menu
     look like it's floating in the middle of the screen.
   - `overflow-x: clip` provides the same horizontal clipping
     WITHOUT creating a scroll container, so `position: fixed`
     keeps working. Safari 16+ / iOS 16+ supports it.
   - The @supports guard means older browsers fall back gracefully
     to the original `overflow-x: hidden` behaviour.
   - We ALSO force this on the page wrapper / common containers in
     case a page sets overflow on something else.
   ============================================================ */
@supports (overflow-x: clip) {
  html, body {
    overflow-x: clip !important;
  }
}

/* ============================================================
   GLOBAL iOS SAFARI FIX — NAV PIN
   Belt-and-braces stabilisation of the fixed top nav.
   Even with overflow-x:clip on body, iOS Safari can still
   desync `position: fixed` during address-bar collapse/expand
   if the element isn't promoted to its own compositor layer.
   These rules:
   1. Re-assert `position: fixed; top: 0` with !important so
      nothing later can knock it loose.
   2. Force a GPU layer via translateZ(0) so iOS treats the
      bar as an independent fixed layer and keeps it pinned
      to the visual viewport top instead of scrolling away.
   3. Add a safety ::before that fills the safe-area-inset
      (notch / dynamic island region) with the same opaque
      background, so if the nav ever shifts a hair on rubber-
      band overscroll, nothing bleeds through behind it.
   ============================================================ */
nav#main-nav {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  /* Promote the bar to its own GPU layer. This is the key fix for
     iOS Safari: a compositor-promoted fixed element tracks the
     VISUAL viewport (the visible area minus the dynamic address bar)
     instead of the layout viewport, so it stays pinned during the
     address-bar collapse/expand animation and never reveals the
     page content above itself. */
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
  will-change: transform;
}

/* ============================================================
   GLOBAL MOBILE NAV FIX
   - Make the lang toggle visible on mobile (was hidden site-wide)
   - Always-opaque nav background so the hero/section doesn't bleed
     ABOVE the header (e.g. on iOS overscroll or before scroll)
   - Honour iOS safe-area-inset-top so the bar sits flush at the top
   ============================================================ */
@media (max-width: 768px) {
  /* iOS-bulletproof nav: position:sticky + ::before background extender.
     - sticky takes layout space, so no page content can ever appear
       ABOVE the nav (the bug the user kept hitting with fixed).
     - sticky doesn't suffer from iOS's position:fixed desync during
       address-bar collapse, rubber-band scroll, or overflow-x quirks.
     - The ::before extends the nav's background INFINITELY upward,
       attached to the sticky nav. So the safe-area / notch zone
       above the nav is ALWAYS covered with the nav color, no matter
       what (rubber-band, safe-area-inset misread, anything).
     - <html> background is also set to nav color as a final fallback
       for any overscroll outside the body.
     - Scoped to #main-nav so the index.html split-screen layout
       (which uses <nav> without id, positioned absolute inside the
       non-scrolling .stage) is left alone. */
  html {
    background: #0e0d0b;
  }
  html[data-theme="light"] {
    background: #f5f1e8;
  }
  nav#main-nav {
    position: -webkit-sticky !important;
    position: sticky !important;
    top: 0 !important;
    display: flex !important;
    grid-template-columns: none !important;
    justify-content: space-between !important;
    align-items: center;
    padding-top: calc(env(safe-area-inset-top, 0px) + 14px) !important;
    padding-bottom: 14px !important;
    /* Fully opaque — iOS Safari's backdrop-filter is unreliable on
       scroll and would let the hero bleed through any transparency. */
    background: #0e0d0b !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    border-bottom: 1px solid var(--border);
    /* Promote to its own layer for smooth sticky tracking on iOS */
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
    will-change: transform;
    /* Required so the ::before extender below positions against the nav */
    /* (sticky elements are already positioned containing blocks) */
  }
  /* The infinite extender: a pseudo-element that floats above the nav's
     top edge and extends 200vh upward with the nav's background color.
     Because it's positioned relative to the sticky nav, it moves WITH
     the nav — covering the notch / safe-area zone AND the rubber-band
     overscroll area with the menu color, always. */
  nav#main-nav::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 100%;       /* sits flush against the top of the nav */
    height: 200vh;      /* extends way past any device's safe area */
    background: #0e0d0b;
    pointer-events: none;
  }
  html[data-theme="light"] nav#main-nav::before {
    background: #f5f1e8;
  }
  nav#main-nav.scrolled {
    padding-top: calc(env(safe-area-inset-top, 0px) + 12px) !important;
    padding-bottom: 12px !important;
  }
  /* Re-show the lang toggle on mobile (each page hid it via display:none) */
  .nav-lang {
    display: inline-block !important;
    font-size: 11px !important;
    padding: 6px 4px !important;
  }
  .nav-right { gap: 12px !important; }
}

/* Light mode mobile nav: matching cream opaque bar */
html[data-theme="light"] {
  /* (already styled in nav rules above for light theme) */
}
@media (max-width: 768px) {
  html[data-theme="light"] nav#main-nav {
    /* Fully opaque cream bar on mobile, matches dark-mode strategy */
    background: #f5f1e8 !important;
  }
  html[data-theme="light"] .nav-lang {
    color: rgba(29,26,20,0.7) !important;
  }
}

html[data-theme="light"] .contact-form input,
html[data-theme="light"] .contact-form textarea,
html[data-theme="light"] .form-input {
  background: rgba(255,255,255,0.6);
  border-color: var(--border);
  color: var(--cream);
}
html[data-theme="light"] .contact-form input::placeholder,
html[data-theme="light"] .contact-form textarea::placeholder,
html[data-theme="light"] .form-input::placeholder { color: var(--muted); }
html[data-theme="light"] .form-label { color: var(--text); }

/* ============================================================
   THEME TOGGLE BUTTON (injected by theme.js)
   ============================================================ */
.theme-toggle {
  --size: 34px;
  width: var(--size);
  height: var(--size);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  border-radius: 0;
  cursor: pointer;
  color: #fff;
  padding: 0;
  position: relative;
  transition: color .25s, opacity .25s;
  flex-shrink: 0;
  opacity: 0.85;
}
.theme-toggle:hover {
  background: none;
  opacity: 1;
}
.theme-toggle svg {
  width: 15px; height: 15px;
  fill: none; stroke: currentColor; stroke-width: 1.5;
  position: absolute;
  transition: opacity .35s ease, transform .45s cubic-bezier(0.25,0.46,0.45,0.94);
}
.theme-toggle .icon-sun  { opacity: 1;  transform: rotate(0)   scale(1); }
.theme-toggle .icon-moon { opacity: 0;  transform: rotate(-60deg) scale(0.5); }

html[data-theme="light"] .theme-toggle {
  color: #1d1a14;
}
html[data-theme="light"] .theme-toggle:hover {
  background: none;
  opacity: 1;
}
html[data-theme="light"] .theme-toggle .icon-sun  { opacity: 0; transform: rotate(60deg) scale(0.5); }
html[data-theme="light"] .theme-toggle .icon-moon { opacity: 1; transform: rotate(0)     scale(1);   }

/* On the homepage (no scrolled state, transparent nav over photo in dark mode)
   the toggle keeps a gentle drop shadow so it stays readable on the photos. */
.stage .theme-toggle svg { filter: drop-shadow(0 1px 6px rgba(0,0,0,0.7)); }
html[data-theme="light"] .stage .theme-toggle svg { filter: none; }


/* ============================================================
   PREMIUM REVEAL ANIMATIONS
   One-shot: fade + slide quand l'élément entre dans le viewport,
   piloté par l'IntersectionObserver de chaque page (ajoute .visible).
   Pas de blur, pas d'effet répété au scroll.
   ============================================================ */
.reveal {
  opacity: 0;
  transform: translateY(40px);
  transition:
    opacity 1.1s cubic-bezier(0.16, 0.84, 0.34, 1),
    transform 1.1s cubic-bezier(0.16, 0.84, 0.34, 1);
  transition-delay: calc(var(--i, 0) * 90ms);
  will-change: opacity, transform;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Subtle lift hover on interactive cards */
.film-card, .why-card, .testi-card, .expertise-card, .stat-item, .kpi-item {
  transition: transform 0.55s cubic-bezier(0.16, 0.84, 0.34, 1), border-color 0.3s, background 0.3s;
}
.film-card:hover, .why-card:hover, .expertise-card:hover { transform: translateY(-4px); }

/* Respect user preference for reduced motion */
@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal.visible {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}


/* ============================================================
   COOKIE CONSENT — banner + modal
   Matches site palette (gold + cream + dark) and respects light theme.
   ============================================================ */

/* ── BANNER (bottom slide-up) ───────────────────────────── */
.cc-banner {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 9000;
  background: rgba(14,13,11,0.97);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-top: 1px solid var(--border);
  padding: 20px var(--pad);
  transform: translateY(100%);
  transition: transform 0.35s cubic-bezier(0.23,1,0.32,1);
  font-family: var(--ff-b);
  color: var(--text);
}
.cc-banner.cc-visible { transform: translateY(0); }
.cc-banner-inner {
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 32px;
  flex-wrap: wrap;
}
.cc-banner-text { flex: 1 1 380px; min-width: 280px; }
.cc-banner-title {
  font-family: var(--ff-d);
  font-size: 18px;
  font-weight: 400;
  color: var(--cream);
  margin-bottom: 6px;
  letter-spacing: -0.01em;
}
.cc-banner-text p {
  font-size: 13px;
  line-height: 1.6;
  color: var(--text);
  opacity: 0.75;
  margin: 0;
  text-wrap: pretty;
}
.cc-banner-text a {
  color: var(--gold-light);
  text-decoration: underline;
  text-underline-offset: 3px;
  opacity: 0.9;
}
.cc-banner-text a:hover { opacity: 1; }

.cc-banner-actions {
  display: flex;
  gap: 10px;
  flex-shrink: 0;
  flex-wrap: wrap;
}

/* ── BUTTONS ───────────────────────────────────────────── */
.cc-btn {
  font-family: var(--ff-b);
  font-size: 10px;
  font-weight: 400;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 12px 22px;
  border: 1px solid;
  cursor: pointer;
  background: none;
  white-space: nowrap;
  transition: background 0.22s, border-color 0.22s, color 0.22s;
}
.cc-btn-ghost {
  border-color: rgba(255,255,255,0.35);
  color: #fff;
}
.cc-btn-ghost:hover {
  background: rgba(255,255,255,0.08);
  border-color: rgba(255,255,255,0.7);
}
.cc-btn-primary {
  background: var(--gold);
  border-color: var(--gold);
  color: #0e0d0b;
}
.cc-btn-primary:hover {
  background: var(--gold-light);
  border-color: var(--gold-light);
}

/* ── MODAL ─────────────────────────────────────────────── */
.cc-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 9500;
  background: rgba(8,7,6,0.78);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  animation: ccOverlayIn 0.25s ease both;
}
@keyframes ccOverlayIn { from { opacity: 0; } to { opacity: 1; } }

.cc-modal {
  background: var(--bg);
  border: 1px solid var(--border);
  width: 100%;
  max-width: 580px;
  max-height: 86dvh;
  overflow-y: auto;
  padding: 36px;
  font-family: var(--ff-b);
  color: var(--text);
  animation: ccModalIn 0.32s cubic-bezier(0.23,1,0.32,1) both;
}
@keyframes ccModalIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }

.cc-modal-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--border);
}
.cc-modal-title {
  font-family: var(--ff-d);
  font-size: 28px;
  font-weight: 300;
  color: var(--cream);
  letter-spacing: -0.02em;
  line-height: 1.1;
}
.cc-modal-close {
  background: none;
  border: none;
  color: var(--text);
  font-size: 32px;
  line-height: 1;
  cursor: pointer;
  padding: 0 4px;
  opacity: 0.5;
  transition: opacity 0.2s;
}
.cc-modal-close:hover { opacity: 1; }

.cc-modal-intro {
  font-size: 13px;
  line-height: 1.7;
  color: var(--text);
  opacity: 0.7;
  margin: 18px 0 24px;
  text-wrap: pretty;
}

/* ── CATEGORIES ────────────────────────────────────────── */
.cc-cat {
  padding: 18px 0;
  border-bottom: 1px solid var(--border);
}
.cc-cat:last-of-type { border-bottom: none; }

.cc-cat-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 8px;
}
.cc-cat-title {
  font-size: 13px;
  font-weight: 500;
  color: var(--cream);
  letter-spacing: 0.04em;
}
.cc-cat-status {
  font-size: 9px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold);
  opacity: 0.8;
  margin-top: 4px;
}
.cc-cat-desc {
  font-size: 12px;
  line-height: 1.65;
  color: var(--text);
  opacity: 0.65;
  margin: 0;
  text-wrap: pretty;
}

/* ── SWITCH ────────────────────────────────────────────── */
.cc-switch {
  position: relative;
  display: inline-block;
  width: 42px;
  height: 22px;
  flex-shrink: 0;
  cursor: pointer;
}
.cc-switch input {
  position: absolute;
  opacity: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  cursor: pointer;
  z-index: 2;
}
.cc-switch-slider {
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,0.12);
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 22px;
  transition: background 0.25s, border-color 0.25s;
}
.cc-switch-slider::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 3px;
  width: 14px;
  height: 14px;
  background: rgba(255,255,255,0.9);
  border-radius: 50%;
  transform: translateY(-50%);
  transition: transform 0.25s cubic-bezier(0.23,1,0.32,1), background 0.25s;
}
.cc-switch input:checked + .cc-switch-slider {
  background: var(--gold);
  border-color: var(--gold);
}
.cc-switch input:checked + .cc-switch-slider::before {
  transform: translateY(-50%) translateX(20px);
  background: #0e0d0b;
}
.cc-switch-locked { cursor: not-allowed; opacity: 0.7; }
.cc-switch-locked input { cursor: not-allowed; }

/* ── MODAL FOOTER ──────────────────────────────────────── */
.cc-modal-footer {
  display: flex;
  gap: 10px;
  margin-top: 28px;
  padding-top: 22px;
  border-top: 1px solid var(--border);
  flex-wrap: wrap;
}
.cc-modal-footer .cc-btn { flex: 1 1 120px; }

/* ── LIGHT THEME OVERRIDES ─────────────────────────────── */
html[data-theme="light"] .cc-banner {
  background: rgba(245,241,232,0.97);
  border-top-color: var(--border);
}
html[data-theme="light"] .cc-banner-title { color: #1d1a14; }
html[data-theme="light"] .cc-banner-text p { color: #2a2620; }
html[data-theme="light"] .cc-btn-ghost {
  border-color: rgba(29,26,20,0.45);
  color: #1d1a14;
}
html[data-theme="light"] .cc-btn-ghost:hover {
  background: rgba(29,26,20,0.06);
  border-color: rgba(29,26,20,0.85);
}
html[data-theme="light"] .cc-btn-primary {
  background: var(--gold);
  border-color: var(--gold);
  color: #fff;
}
html[data-theme="light"] .cc-modal-overlay { background: rgba(45,40,30,0.55); }
html[data-theme="light"] .cc-modal { background: var(--bg); }
html[data-theme="light"] .cc-modal-title { color: #1d1a14; }
html[data-theme="light"] .cc-modal-close { color: #2a2620; }
html[data-theme="light"] .cc-cat-title { color: #1d1a14; }
html[data-theme="light"] .cc-switch-slider {
  background: rgba(29,26,20,0.12);
  border-color: rgba(29,26,20,0.18);
}

/* ── MOBILE ────────────────────────────────────────────── */
@media (max-width: 720px) {
  .cc-banner { padding: 18px 20px calc(18px + env(safe-area-inset-bottom, 0px)); }
  .cc-banner-inner { gap: 18px; }
  .cc-banner-title { font-size: 16px; }
  .cc-banner-text p { font-size: 12.5px; }
  .cc-banner-actions { width: 100%; justify-content: stretch; }
  .cc-banner-actions .cc-btn { flex: 1 1 0; padding: 13px 10px; font-size: 9.5px; letter-spacing: 0.14em; }
  .cc-modal { padding: 26px 22px; max-height: 92dvh; }
  .cc-modal-title { font-size: 24px; }
  .cc-modal-footer { flex-direction: column; }
  .cc-modal-footer .cc-btn { width: 100%; }
}
