/* ============================================================
   LUMIÈRE — premium layout, modeled on lassie.ai's design language.
   Own type trio (Fraunces / DM Sans / DM Mono) + warm stone neutrals.
   The single ACCENT is driven by the salon's brand colour (var(--accent),
   set by main.js applyTheme), so it adapts per salon while keeping the look.
   ============================================================ */

/* Accent fallback on :root only — main.js applyTheme sets --accent inline on
   <html> (the salon's brand colour), which overrides this. Do NOT set --accent
   on .lumiere or it would shadow the brand colour for the whole layout. */
:root { --accent: #07756c; }
.lumiere {
  --l-bg:#f9f8f5; --l-surface:#ffffff; --l-muted-surface:#f3f0e9;
  --l-border:#e3ddcf; --l-ink:#1a1613; --l-ink-muted:#473d37; --l-dark:#120c08;
  --l-radius-card:16px; --l-radius-media:32px; --l-radius-pill:9999px;
  --l-ease:cubic-bezier(.22,1,.36,1);     /* ease-out-quint */
  --l-pad:clamp(6rem,10vw,15rem);
  --l-w:80rem; --l-measure:44rem;
  --font-head:"Fraunces",Georgia,serif;
  --font-body:"DM Sans",system-ui,sans-serif;
  --font-mono:"DM Mono",ui-monospace,monospace;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.lumiere { font-family: var(--font-body); color: var(--l-ink); background: var(--l-bg); line-height: 1.6; font-weight: 400; overflow-x: clip; -webkit-font-smoothing: antialiased; }
.lumiere img { max-width: 100%; display: block; }
.lumiere h1, .lumiere h2, .lumiere h3 { font-family: var(--font-head); font-weight: 500; letter-spacing: -0.017em; line-height: 1.08; }
.lumiere h2 { font-size: clamp(2.6rem, 3.1vw, 4.2rem); }
.lumiere a { color: inherit; }

/* mono eyebrows / labels — the "designed" tell */
.lumiere .section-eyebrow, .lumiere .eyebrow { font-family: var(--font-mono); font-size: .8rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); margin-bottom: 1.5rem; }

/* ---- Buttons: pill, arrow nudge ---- */
.lumiere .btn { display: inline-flex; align-items: center; gap: .55rem; font-family: var(--font-body); font-size: .82rem; font-weight: 500; letter-spacing: .04em; padding: 1rem 1.9rem; border-radius: var(--l-radius-pill); background: var(--accent); color: #fff; text-decoration: none; border: 1px solid var(--accent); cursor: pointer; transition: background .15s ease, color .15s ease, transform .15s ease; }
.lumiere .btn:hover { background: color-mix(in srgb, var(--accent) 82%, #000); transform: translateY(-1px); }
.lumiere .btn-arrow { display: inline-block; transition: transform .15s ease; }
.lumiere .btn:hover .btn-arrow { transform: translateX(4px); }
.lumiere .btn-ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.55); }
.lumiere .btn-ghost:hover { background: rgba(255,255,255,.12); border-color: #fff; }
.lumiere .l-link { font-family: var(--font-mono); font-size: .78rem; font-weight: 500; letter-spacing: .1em; text-transform: uppercase; color: var(--accent); text-decoration: none; display: inline-flex; gap: .5rem; align-items: center; border-bottom: 1px solid transparent; padding-bottom: 2px; }
.lumiere .l-link:hover { border-bottom-color: var(--accent); }
.lumiere .l-link:hover .btn-arrow { transform: translateX(4px); }

/* ---- Nav ---- */
.lumiere nav { position: sticky; top: 0; z-index: 40; display: flex; align-items: center; justify-content: space-between; padding: 1.1rem clamp(1.25rem,5vw,3.5rem); background: color-mix(in srgb, var(--l-bg) 86%, transparent); backdrop-filter: blur(16px); border-bottom: 1px solid var(--l-border); }
.lumiere .logo { font-family: var(--font-head); font-weight: 600; font-size: 1.5rem; letter-spacing: -0.01em; }
.lumiere .logo img { height: 40px; }
.lumiere .nav-links { display: flex; align-items: center; gap: 2.1rem; }
.lumiere .nav-links a { text-decoration: none; font-family: var(--font-mono); font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; color: var(--l-ink); }
.lumiere .nav-links a:not(.nav-cta) { position: relative; }
.lumiere .nav-links a:not(.nav-cta)::after { content: ""; position: absolute; left: 0; bottom: -6px; height: 1px; width: 0; background: var(--accent); transition: width .3s var(--l-ease); }
.lumiere .nav-links a:not(.nav-cta):hover::after { width: 100%; }
.lumiere .nav-cta { background: var(--accent); color: #fff !important; padding: .6rem 1.3rem; border-radius: var(--l-radius-pill); }
.lumiere .nav-toggle { display: none; background: none; border: 0; width: 30px; height: 22px; position: relative; cursor: pointer; }
.lumiere .nav-toggle span { position: absolute; left: 0; height: 2px; width: 100%; background: var(--l-ink); transition: .3s; }
.lumiere .nav-toggle span:nth-child(1){ top: 0; } .lumiere .nav-toggle span:nth-child(2){ top: 10px; } .lumiere .nav-toggle span:nth-child(3){ top: 20px; }

/* ---- Hero ---- */
.lumiere .l-hero { position: relative; min-height: 100vh; display: flex; align-items: flex-end; padding: clamp(2rem,6vw,5.5rem); overflow: hidden; }
.lumiere .hero-photo { position: absolute; inset: 0; background: var(--l-muted-surface) center/cover no-repeat; clip-path: inset(0 0 0 0); animation: l-reveal-hero 1.4s var(--l-ease) both, l-kenburns 24s ease-out 1.2s infinite alternate; }
@keyframes l-reveal-hero { from { clip-path: inset(14% 14% 14% 14% round 40px); } to { clip-path: inset(0 0 0 0 round 0); } }
@keyframes l-kenburns { from { transform: scale(1.03); } to { transform: scale(1.12); } }
.lumiere .l-hero-scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(18,12,8,.22) 0%, rgba(18,12,8,.05) 40%, rgba(18,12,8,.5) 100%); }
.lumiere .l-hero-inner { position: relative; max-width: 960px; color: #fff; }
.lumiere .l-hero .eyebrow { color: #fff; opacity: .9; }
.lumiere .l-hero-h1 { font-size: clamp(3.2rem, 7vw, 7rem); line-height: 1.02; font-weight: 500; letter-spacing: -0.02em; text-shadow: 0 2px 50px rgba(0,0,0,.3); }
.lumiere .l-hero-h1 em { display: block; font-style: italic; font-weight: 400; }
.lumiere .l-hero-tag { font-size: clamp(1.05rem,1.7vw,1.35rem); font-weight: 300; margin-top: 1.6rem; max-width: 42ch; opacity: .95; line-height: 1.5; }
.lumiere .l-hero-cta { display: flex; gap: .9rem; flex-wrap: wrap; margin-top: 2.4rem; }
.lumiere .l-hero-rating { margin-top: 1.7rem; font-family: var(--font-mono); font-size: .82rem; letter-spacing: .04em; opacity: .95; }
.lumiere .l-hero-rating .stars { letter-spacing: .1em; }
.lumiere .l-scroll-hint { position: absolute; left: 50%; bottom: 24px; width: 1px; height: 44px; background: linear-gradient(#fff, transparent); opacity: .5; animation: l-scrollhint 2.4s ease-in-out infinite; }
@keyframes l-scrollhint { 0%,100%{ transform: translateY(0); opacity:.15; } 50%{ transform: translateY(8px); opacity:.6; } }

/* ---- Marquee (calm) ---- */
.lumiere .marquee { overflow: hidden; white-space: nowrap; padding: 2rem 0; border-top: 1px solid var(--l-border); border-bottom: 1px solid var(--l-border); background: var(--l-muted-surface); }
.lumiere .marquee-track { display: inline-block; animation: l-marquee 42s linear infinite; }
.lumiere .marquee span { font-family: var(--font-head); font-size: clamp(1.8rem,4.5vw,3.2rem); font-weight: 500; padding: 0 1.4rem; text-transform: none; color: color-mix(in srgb, var(--l-ink) 30%, transparent); }
.lumiere .marquee span.fill { color: var(--accent); }
@keyframes l-marquee { to { transform: translateX(-50%); } }

/* ---- Section rhythm ---- */
.lumiere section { padding: var(--l-pad) clamp(1.25rem,5vw,3.5rem); max-width: var(--l-w); margin: 0 auto; }
.lumiere .l-sec-head { max-width: var(--l-measure); margin: 0 auto clamp(3rem,5vw,5rem); text-align: center; }
.lumiere .l-sec-intro { color: var(--l-ink-muted); font-size: 1.1rem; margin-top: 1rem; }

/* ---- About (asymmetric split) ---- */
.lumiere .l-about { display: grid; grid-template-columns: 1fr 1.05fr; gap: clamp(2.5rem,6vw,7rem); align-items: center; }
.lumiere .l-about-copy { display: flex; flex-direction: column; align-items: flex-start; gap: 1.5rem; max-width: var(--l-measure); }
.lumiere .l-lead { font-family: var(--font-head); font-size: clamp(1.5rem,2.4vw,2.1rem); line-height: 1.35; font-weight: 400; color: var(--l-ink); }
.lumiere .l-about-media { aspect-ratio: 4/5; border-radius: var(--l-radius-media); background: var(--l-muted-surface) center/cover no-repeat; box-shadow: 0 40px 80px rgba(18,12,8,.14); }

/* ---- Story (pinned background, chapters scroll through) ---- */
.lumiere .l-story { position: relative; max-width: none; padding: 0; margin: 0; background: var(--l-dark); }
.lumiere .l-story-viz { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.lumiere .l-story-bg { position: absolute; inset: 0; background: var(--l-dark) center/cover no-repeat; transform: scale(1.06); animation: l-kenburns 26s ease-out infinite alternate; }
.lumiere .l-story-scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(18,12,8,.78) 0%, rgba(18,12,8,.4) 48%, rgba(18,12,8,.18) 100%); }
.lumiere .l-story-track { position: relative; margin-top: -100vh; z-index: 2; }
.lumiere .l-story-panel { min-height: 100vh; display: flex; align-items: center; padding: 0 clamp(1.5rem, 7vw, 7rem); }
.lumiere .l-story-panel .inner { max-width: 40rem; color: #fff; opacity: 0; transform: translateY(2rem); transition: opacity .75s var(--l-ease), transform .75s var(--l-ease); }
.lumiere .l-story-panel.in .inner { opacity: 1; transform: none; }
.lumiere .l-story-panel .eyebrow { color: color-mix(in srgb, var(--accent) 65%, #fff); }
.lumiere .l-story-panel h2 { font-size: clamp(2.4rem, 5.5vw, 4.6rem); }
.lumiere .l-story-text { font-family: var(--font-body); font-weight: 300; font-size: clamp(1.05rem, 1.6vw, 1.35rem); line-height: 1.55; margin-top: 1.1rem; opacity: .92; }
@media (prefers-reduced-motion: reduce) { .lumiere .l-story-bg { animation: none; } .lumiere .l-story-panel .inner { opacity: 1; transform: none; } }

/* ---- Services (spacious numbered list) ---- */
.lumiere .l-service-list { max-width: var(--l-w); margin: 0 auto; border-top: 1px solid var(--l-border); }
.lumiere .svc { display: flex; justify-content: space-between; align-items: baseline; gap: 1.5rem; padding: 1.7rem .5rem; border-bottom: 1px solid var(--l-border); transition: padding-left .4s var(--l-ease), background .3s ease; }
.lumiere .svc:hover { padding-left: 1.4rem; background: color-mix(in srgb, var(--accent) 5%, transparent); }
.lumiere .svc-name { font-family: var(--font-head); font-size: clamp(1.3rem,2vw,1.85rem); line-height: 1.2; }
.lumiere .svc-name small { display: block; font-family: var(--font-body); font-size: .85rem; color: var(--l-ink-muted); font-weight: 400; margin-top: .35rem; }
.lumiere .svc-price { font-family: var(--font-mono); font-size: .95rem; color: var(--accent); white-space: nowrap; }
.lumiere .l-service-list.collapsed .svc:nth-child(n+9) { display: none; }
.lumiere .l-svc-toggle { text-align: center; margin-top: 2.6rem; }
.lumiere .svc-toggle { cursor: pointer; background: transparent; border: 1px solid var(--l-border); color: var(--l-ink); font-family: var(--font-mono); font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; padding: .85rem 1.9rem; border-radius: var(--l-radius-pill); transition: border-color .3s, color .3s; }
.lumiere .svc-toggle:hover { border-color: var(--accent); color: var(--accent); }

/* ---- Gallery: even grid (uniform tiles, centered — no left-stacking) ---- */
.lumiere .l-gallery { max-width: 74rem; }
.lumiere .gallery-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2rem; }
.lumiere .gallery-grid .gal { overflow: hidden; border-radius: var(--l-radius-card); }
.lumiere .gallery-grid img { width: 100%; aspect-ratio: 4/5; height: auto; object-fit: cover; transition: transform .9s var(--l-ease); }
.lumiere .gallery-grid .gal:hover img { transform: scale(1.05); }

/* ---- Team ---- */
.lumiere .team-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px,1fr)); gap: 2.2rem; max-width: var(--l-w); margin: 0 auto; }
.lumiere .team-card { text-align: center; }
.lumiere .team-photo { width: 100%; aspect-ratio: 3/4; background: var(--l-muted-surface) center/cover no-repeat; border-radius: var(--l-radius-card); transition: transform .5s var(--l-ease); }
.lumiere .team-card:hover .team-photo { transform: translateY(-8px); }
.lumiere .team-card h3 { font-size: 1.45rem; margin-top: 1.2rem; }
.lumiere .team-card p { font-family: var(--font-mono); color: var(--l-ink-muted); font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; margin-top: .35rem; }

/* ---- Instagram ---- */
.lumiere .l-feed { text-align: center; }
.lumiere .ig-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1rem; max-width: 64rem; margin: 0 auto; }
.lumiere .feed-slot { margin-top: 2rem; }

/* ---- Reviews (dark, pull-quotes) ---- */
.lumiere .l-reviews { max-width: none; background: var(--l-dark); color: #fff; text-align: center; }
.lumiere .l-reviews .section-eyebrow { color: color-mix(in srgb, var(--accent) 70%, #fff); }
.lumiere .review-stat { display: inline-flex; align-items: baseline; gap: .7rem; margin: 0 auto 3.5rem; }
.lumiere .review-stat .num { font-family: var(--font-head); font-size: 3.6rem; color: #fff; line-height: 1; }
.lumiere .review-stat .stars { color: var(--accent); letter-spacing: .12em; font-size: 1.3rem; }
.lumiere .review-stat .count { font-family: var(--font-mono); color: rgba(255,255,255,.6); font-size: .9rem; }
.lumiere .reviews-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px,1fr)); gap: 2rem; max-width: 76rem; margin: 0 auto; text-align: left; }
.lumiere .review-card { background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.12); border-radius: var(--l-radius-card); padding: 2.4rem; transition: transform .4s var(--l-ease), background .3s ease; }
.lumiere .review-card:hover { transform: translateY(-6px); background: rgba(255,255,255,.07); }
.lumiere .review-card .stars { color: var(--accent); letter-spacing: .1em; margin-bottom: 1rem; }
.lumiere .review-card .rtext { font-family: var(--font-head); font-size: 1.3rem; line-height: 1.4; margin-bottom: 1.1rem; }
.lumiere .review-card .rauthor { font-family: var(--font-mono); font-size: .76rem; letter-spacing: .1em; text-transform: uppercase; color: rgba(255,255,255,.6); }

/* ---- Contact ---- */
.lumiere .l-contact { max-width: none; background: var(--l-muted-surface); }
.lumiere .l-contact-inner { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2.5rem,6vw,6rem); max-width: var(--l-w); margin: 0 auto; align-items: start; }
.lumiere .l-contact-copy { display: flex; flex-direction: column; align-items: flex-start; gap: .45rem; }
.lumiere .l-contact-copy h2 { margin-bottom: 1.1rem; }
.lumiere .contact-line { font-size: 1.05rem; color: var(--l-ink-muted); }
.lumiere .hours { width: 100%; max-width: 360px; margin: 1.6rem 0; }
.lumiere .hours-row { display: flex; justify-content: space-between; padding: .55rem 0; border-bottom: 1px solid var(--l-border); font-size: .95rem; }
.lumiere .hours-row span:last-child { color: var(--l-ink-muted); }
.lumiere .l-contact-copy .btn { margin-top: 1.1rem; }
.lumiere .socials { margin-top: 1.6rem; display: flex; gap: 1.3rem; }
.lumiere .socials a { font-family: var(--font-mono); color: var(--l-ink); font-size: .76rem; letter-spacing: .08em; text-transform: uppercase; text-decoration: none; }
.lumiere .socials a:hover { color: var(--accent); }
.lumiere .l-contact-map { width: 100%; }
.lumiere .map iframe, .lumiere .l-contact-map iframe { width: 100%; height: 440px; border: 0; border-radius: var(--l-radius-media); }

/* ---- Footer ---- */
.lumiere footer { text-align: center; padding: 3.5rem 1.5rem; color: var(--l-ink-muted); font-family: var(--font-mono); font-size: .78rem; letter-spacing: .04em; background: var(--l-bg); border-top: 1px solid var(--l-border); }

/* ---- Motion (ease-out-quint) ---- */
.lumiere .reveal { opacity: 0; transform: translateY(2rem); transition: opacity .65s var(--l-ease), transform .65s var(--l-ease); will-change: opacity, transform; }
.lumiere .reveal.in { opacity: 1; transform: none; }
.lumiere .gallery-grid .gal, .lumiere .team-card, .lumiere .review-card { opacity: 0; transform: translateY(1.6rem); transition: opacity .65s var(--l-ease), transform .65s var(--l-ease); }
.lumiere .in .gal, .lumiere .in .team-card, .lumiere .in .review-card { opacity: 1; transform: none; }
.lumiere .in .gal:nth-child(2), .lumiere .in .team-card:nth-child(2), .lumiere .in .review-card:nth-child(2) { transition-delay: .09s; }
.lumiere .in .gal:nth-child(3), .lumiere .in .team-card:nth-child(3), .lumiere .in .review-card:nth-child(3) { transition-delay: .18s; }
.lumiere .in .gal:nth-child(n+4) { transition-delay: .27s; }
.lumiere #bs-progress { position: fixed; top: 0; left: 0; height: 2px; width: 0; z-index: 9998; background: var(--accent); transition: width .1s linear; }
@media (prefers-reduced-motion: reduce) {
  .lumiere .reveal, .lumiere .reveal.in, .lumiere .gal, .lumiere .team-card, .lumiere .review-card { opacity: 1 !important; transform: none !important; transition: none !important; }
  .lumiere .hero-photo, .lumiere .marquee-track, .lumiere .l-scroll-hint { animation: none !important; }
}

/* ---- Responsive ---- */
@media (max-width: 900px) { .lumiere .gallery-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 820px) {
  .lumiere .l-about, .lumiere .l-contact-inner { grid-template-columns: 1fr; }
  .lumiere .l-about-media { aspect-ratio: 16/11; order: -1; }
  /* Team: 2-up so a big team stays compact (was one giant card per row) */
  .lumiere .team-grid { grid-template-columns: 1fr 1fr; gap: 1.2rem; }
  .lumiere .team-card h3 { font-size: 1.15rem; }
  .lumiere .team-card p { font-size: .68rem; }
}
@media (max-width: 640px) {
  .lumiere .nav-toggle { display: block; }
  .lumiere .nav-links { position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; align-items: stretch; gap: 0; background: color-mix(in srgb, var(--l-bg) 97%, transparent); backdrop-filter: blur(14px); border-bottom: 1px solid var(--l-border); padding: .5rem 1.25rem 1.1rem; transform: translateY(-10px); opacity: 0; pointer-events: none; transition: opacity .28s, transform .28s; }
  .lumiere nav.open .nav-links { opacity: 1; transform: none; pointer-events: auto; }
  .lumiere .nav-links a:not(.nav-cta) { padding: .95rem .2rem; border-bottom: 1px solid var(--l-border); }
  .lumiere .nav-links .nav-cta { text-align: center; margin-top: .9rem; }
  .lumiere .l-hero-cta { flex-direction: column; align-items: stretch; }
  .lumiere .l-hero-cta .btn { width: 100%; justify-content: center; }
  /* Gallery becomes a horizontal swipe carousel on phones (snap + peek) */
  .lumiere .gallery-grid { columns: auto; display: flex; gap: .8rem; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; margin: 0 calc(-1 * clamp(1.25rem,5vw,3.5rem)); padding: 0 clamp(1.25rem,5vw,3.5rem) .5rem; }
  .lumiere .gallery-grid::-webkit-scrollbar { display: none; }
  .lumiere .gallery-grid .gal { flex: 0 0 80%; scroll-snap-align: center; margin: 0; }
  .lumiere .gallery-grid img { width: 100%; height: 62vh; max-height: 460px; object-fit: cover; }
}
