/* ============================================================
   VILLA TERRA — Galerie · Le lieu · Services
   Loaded after home.css + pages.css. Theme-aware (day/night).
   ============================================================ */

/* ===== GALERIE ============================================== */
.gal{ padding:clamp(60px,8vw,110px) var(--gut) clamp(70px,10vw,120px); }
.gal-intro{ display:grid; grid-template-columns:minmax(200px,300px) 1fr; gap:clamp(30px,5vw,60px); margin-bottom:clamp(40px,5vw,60px); }
.gal-intro h2{ font-family:var(--serif); font-weight:400; font-size:clamp(28px,3.6vw,46px); line-height:1.16; letter-spacing:-.3px; margin:22px 0 0; color:var(--text); text-wrap:balance; max-width:16ch; }
.gal-intro h2 em{ font-style:italic; color:var(--accent); }
.gal-grid{ column-count:3; column-gap:16px; }
.gal-grid .item{ break-inside:avoid; margin:0 0 16px; position:relative; cursor:pointer; overflow:hidden; }
.gal-grid .item img{ width:100%; display:block; filter:var(--hero-filter); transition:filter .8s ease, transform .6s cubic-bezier(.2,.7,.3,1); }
.gal-grid .item:hover img{ transform:scale(1.04); }
.gal-grid .item .cap{ position:absolute; inset:auto 0 0 0; padding:18px 16px 14px; font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:#fff; background:linear-gradient(transparent, rgba(10,8,4,.62)); opacity:0; transform:translateY(6px); transition:.3s; }
.gal-grid .item:hover .cap{ opacity:1; transform:none; }
.gal-grid .item.ph{ height:340px; }
.gal-grid .item.ph2{ height:240px; }

.lb{ position:fixed; inset:0; z-index:200; background:rgba(12,10,6,.93); backdrop-filter:blur(10px); display:none; align-items:center; justify-content:center; padding:clamp(20px,5vw,60px); cursor:zoom-out; }
.lb.show{ display:flex; animation:fade .3s ease; }
.lb img{ max-width:92vw; max-height:88vh; object-fit:contain; box-shadow:0 40px 100px rgba(0,0,0,.6); }
.lb .x{ position:absolute; top:24px; right:30px; color:rgba(255,255,255,.8); font-size:30px; line-height:1; cursor:pointer; background:none; border:none; }
@media(max-width:880px){ .gal-grid{ column-count:2; } .gal-intro{ grid-template-columns:1fr; } }
@media(max-width:560px){ .gal-grid{ column-count:1; } }

/* ===== LE LIEU ============================================== */
.lieu-intro{ display:grid; grid-template-columns:minmax(200px,320px) 1fr; gap:clamp(30px,5vw,60px); padding:clamp(110px,15vh,170px) var(--gut) 0; }
.lieu-intro h2{ font-family:var(--serif); font-weight:400; font-size:clamp(28px,3.6vw,46px); line-height:1.22; letter-spacing:-.3px; margin:0; color:var(--text); text-wrap:balance; }
.lieu-intro h2 em{ font-style:italic; color:var(--accent); }

.dist{ margin:clamp(70px,10vw,120px) var(--gut) 0; border-top:1px solid var(--line); }
.dist .row{ display:grid; grid-template-columns:1fr auto; gap:18px 30px; align-items:baseline; padding:clamp(18px,2.2vw,26px) 0; border-bottom:1px solid var(--line); }
.dist .row .name{ font-family:var(--serif); font-size:clamp(20px,2.4vw,30px); color:var(--text); font-weight:400; }
.dist .row .kind{ font-size:13.5px; color:var(--text-soft); margin-top:6px; }
.dist .row .d{ font-family:var(--mono); font-size:13px; color:var(--accent); letter-spacing:.05em; white-space:nowrap; text-align:right; }
.dist .row .d small{ display:block; color:var(--text-mute); margin-top:5px; letter-spacing:.04em; }

.band-photo{ height:clamp(360px,52vw,620px); margin:clamp(70px,10vw,120px) 0 0; overflow:hidden; position:relative; }
.band-photo img{ width:100%; height:100%; object-fit:cover; filter:var(--hero-filter); transition:filter .8s ease; }
.band-photo .cap{ position:absolute; left:var(--gut); bottom:40px; color:#fff; font-family:var(--mono); font-size:12px; letter-spacing:.16em; text-transform:uppercase; text-shadow:0 1px 20px rgba(0,0,0,.5); }

.guide{ display:grid; grid-template-columns:repeat(3,1fr); margin:clamp(70px,10vw,120px) var(--gut) 0; }
.guide .g{ border-top:1px solid var(--line); padding:30px 26px 0 0; }
.guide .g .gk{ font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent); margin-bottom:18px; }
.guide .g h3{ font-family:var(--serif); font-weight:400; font-size:clamp(22px,2.2vw,28px); margin:0 0 14px; color:var(--text); }
.guide .g p{ font-size:14.5px; line-height:1.75; color:var(--text-soft); margin:0; }
@media(max-width:880px){ .lieu-intro{ grid-template-columns:1fr; } .guide{ grid-template-columns:1fr; } }

/* ===== SERVICES ============================================= */
.svc-cat{ padding:clamp(56px,8vw,100px) var(--gut) 0; }
.svc-cat .cat-head{ display:grid; grid-template-columns:minmax(200px,300px) 1fr; gap:clamp(30px,5vw,60px); align-items:end; margin-bottom:clamp(30px,4vw,44px); }
.svc-cat .cat-head h2{ font-family:var(--serif); font-weight:400; font-size:clamp(26px,3.2vw,40px); line-height:1.1; letter-spacing:-.3px; margin:14px 0 0; color:var(--text); }
.svc-cat .cat-head .lead{ font-size:15px; line-height:1.7; color:var(--text-soft); margin:0; max-width:380px; }
.svc-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
.svc-card{ background:var(--bg); padding:clamp(24px,2.4vw,32px); display:flex; flex-direction:column; transition:background .7s ease; }
.svc-card .tag{ align-self:flex-start; white-space:nowrap; font-family:var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase; padding:5px 11px; border:1px solid var(--line); color:var(--text-soft); margin-bottom:22px; border-radius:30px; }
.svc-card .tag.devis{ color:var(--accent); border-color:color-mix(in srgb, var(--accent) 42%, transparent); }
.svc-card h3{ font-family:var(--serif); font-weight:400; font-size:clamp(21px,2vw,26px); margin:0 0 12px; color:var(--text); line-height:1.1; }
.svc-card p{ font-size:14px; line-height:1.7; color:var(--text-soft); margin:0; flex:1; }
.svc-card .cfoot{ display:flex; justify-content:space-between; align-items:center; margin-top:26px; padding-top:18px; border-top:1px solid var(--line); }
.svc-card .price{ font-family:var(--serif); font-size:19px; color:var(--text); }
.svc-card .price small{ font-family:var(--sans); font-size:12px; color:var(--text-mute); display:block; letter-spacing:.02em; }
.svc-card .act{ font-size:11px; letter-spacing:.12em; text-transform:uppercase; font-weight:600; color:var(--accent); background:none; border:none; cursor:pointer; display:inline-flex; align-items:center; gap:9px; }
.svc-card .act::after{ content:""; width:22px; height:1px; background:var(--accent); transition:width .25s; }
.svc-card .act:hover::after{ width:34px; }
@media(max-width:980px){ .svc-grid{ grid-template-columns:1fr 1fr; } .svc-cat .cat-head{ grid-template-columns:1fr; } }
@media(max-width:620px){ .svc-grid{ grid-template-columns:1fr; } }

/* ===== CONTACT / WAITLIST ================================== */
.contact{ display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(30px,5vw,72px); padding:clamp(60px,8vw,100px) var(--gut) clamp(70px,10vw,120px); align-items:start; }
.contact .ckicker{ font-size:12px; letter-spacing:.2em; text-transform:uppercase; color:var(--accent); font-weight:700; margin-bottom:18px; }
.contact h2{ font-family:var(--serif); font-weight:400; font-size:clamp(26px,3.2vw,40px); line-height:1.1; letter-spacing:-.3px; margin:0 0 18px; color:var(--text); }
.contact .lead-p{ font-size:clamp(15px,1.5vw,17px); line-height:1.7; color:var(--text-soft); margin:0 0 34px; max-width:520px; }
.contact .field textarea{ font-family:var(--sans); font-size:15px; color:var(--text); background:var(--surface); border:1px solid var(--line); padding:13px 14px; border-radius:2px; outline:none; resize:vertical; min-height:120px; transition:.2s; }
html.night .contact .field textarea{ background:rgba(255,255,255,.04); }
.contact .field textarea:focus{ border-color:var(--accent); }
.cside{ border:1px solid var(--line); background:var(--bg-2); padding:clamp(26px,3vw,38px); transition:background .7s ease, border-color .7s ease; }
.cside h3{ font-family:var(--serif); font-weight:500; font-size:23px; margin:0 0 22px; color:var(--text); }
.cside .crow{ padding:16px 0; border-top:1px solid var(--line); }
.cside .crow:first-of-type{ border-top:none; padding-top:0; }
.cside .crow .k{ font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--text-mute); margin-bottom:7px; }
.cside .crow .v{ font-size:17px; color:var(--text); font-family:var(--serif); }
.cside .crow .v a{ text-decoration:none; }
.cside .badge{ margin-top:24px; padding:16px; background:color-mix(in srgb, var(--accent) 12%, transparent); border:1px solid color-mix(in srgb, var(--accent) 32%, transparent); font-size:13px; line-height:1.6; color:var(--text); }
@media(max-width:880px){ .contact{ grid-template-columns:1fr; } }

/* ===== LEGAL DOCUMENTS (mentions, CGL, confidentialité) ===== */
/* pages sans hero : le header se pose sur fond clair → texte sombre en mode jour */
html:not(.night) .home:has(.legal-doc) .nav{ color:var(--text); }
html:not(.night) .home:has(.legal-doc) .nav-l a,
html:not(.night) .home:has(.legal-doc) .mark,
html:not(.night) .home:has(.legal-doc) .lang b{ color:var(--text); }
html:not(.night) .home:has(.legal-doc) .lang{ color:var(--text-mute); }
html:not(.night) .home:has(.legal-doc) .btn-resa{ color:var(--text); border-color:rgba(0,0,0,.4); }
html:not(.night) .home:has(.legal-doc) .btn-resa:hover{ background:var(--text); color:#fff; border-color:var(--text); }
html:not(.night) .home:has(.legal-doc) .switch{ background:rgba(0,0,0,.04); border-color:rgba(0,0,0,.28); color:var(--text); }
html:not(.night) .home:has(.legal-doc) .switch:hover{ background:rgba(0,0,0,.08); }
html:not(.night) .home:has(.legal-doc) .switch .track{ background:rgba(0,0,0,.22); }
html:not(.night) .home:has(.legal-doc) .switch .knob{ background:#fff; }

.legal-doc{ max-width:820px; margin:0 auto; padding:clamp(60px,8vw,110px) var(--gut) clamp(80px,10vw,130px); }
.legal-doc .lkicker{ font-family:var(--mono); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--accent); margin-bottom:20px; }
.legal-doc h1{ font-family:var(--serif); font-weight:400; font-size:clamp(32px,4.4vw,56px); line-height:1.08; letter-spacing:-.4px; margin:0 0 14px; color:var(--text); }
.legal-doc h1 em{ font-style:italic; color:var(--accent); }
.legal-doc .updated{ font-size:14px; color:var(--text-mute); margin:0 0 clamp(38px,5vw,56px); }
.legal-doc section{ margin:0 0 clamp(34px,4vw,48px); }
.legal-doc h2{ font-family:var(--serif); font-weight:500; font-size:clamp(20px,2.2vw,26px); line-height:1.2; letter-spacing:-.2px; margin:0 0 16px; color:var(--text); }
.legal-doc h3{ font-family:var(--sans); font-weight:600; font-size:16px; margin:22px 0 8px; color:var(--text); }
.legal-doc p{ font-size:clamp(15px,1.5vw,16.5px); line-height:1.75; color:var(--text-soft); margin:0 0 14px; }
.legal-doc ul{ margin:0 0 14px; padding-left:20px; }
.legal-doc li{ font-size:clamp(15px,1.5vw,16.5px); line-height:1.7; color:var(--text-soft); margin:0 0 7px; }
.legal-doc a{ color:var(--accent); }
.legal-doc .fill{ color:var(--text-mute); font-style:italic; }
.legal-doc dl{ margin:0; border-top:1px solid var(--line); }
.legal-doc dl div{ display:grid; grid-template-columns:minmax(150px,220px) 1fr; gap:20px; padding:14px 0; border-bottom:1px solid var(--line); }
.legal-doc dt{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-mute); padding-top:2px; }
.legal-doc dd{ margin:0; font-size:15.5px; line-height:1.65; color:var(--text); }
@media(max-width:640px){ .legal-doc dl div{ grid-template-columns:1fr; gap:4px; } }
