/* ============================================================
   LARHANTEC — feuille de style des maquettes
   Direction : « architecture de silence » — sobre, muséale, éditoriale
   ============================================================ */
:root{
  --bg:#F5F4F0;        /* blanc cassé chaud, lumière de galerie */
  --ink:#17160F;       /* near-black chaud */
  --muted:#6F6B61;     /* gris taupe (secondaire) */
  --line:#D8D4CB;      /* filets discrets */
  --dark:#100F0C;      /* sections sombres */
  --dark-mut:#9A958A;  /* texte secondaire sur sombre */
  --maxw:1280px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);
  font-family:"Source Serif 4",Georgia,serif;font-weight:400;
  font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;width:100%;height:auto}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 32px}
.serif{font-family:"Playfair Display",Georgia,serif}
.label{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-weight:500}
.center{text-align:center}

/* HEADER */
header{position:sticky;top:0;z-index:40;background:rgba(245,244,240,.82);
  backdrop-filter:saturate(120%) blur(8px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;height:72px}
.brand{font-family:"Playfair Display",serif;font-size:21px;letter-spacing:.18em;text-transform:uppercase}
.menu{display:flex;gap:34px}
.menu a{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);transition:color .2s}
.menu a:hover,.menu a.active{color:var(--ink)}

/* boutons / liens */
.btn{display:inline-block;border:1px solid var(--ink);padding:13px 26px;
  font-size:12px;letter-spacing:.16em;text-transform:uppercase;transition:all .25s;cursor:pointer;background:none}
.btn:hover{background:var(--ink);color:var(--bg)}
.link-arrow{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
  border-bottom:1px solid var(--line);padding-bottom:3px;transition:color .2s,border-color .2s}
.link-arrow:hover{color:var(--ink);border-color:var(--ink)}

/* HERO */
.hero{display:grid;grid-template-columns:1fr 1.25fr;gap:64px;align-items:center;padding:96px 0 104px;min-height:78vh}
.hero-text{max-width:440px}
.hero h1{font-family:"Playfair Display",serif;font-weight:400;font-size:clamp(2.6rem,4.6vw,4rem);
  line-height:1.04;letter-spacing:-.01em;margin:18px 0 26px}
.hero h1 em{font-style:italic;color:var(--muted)}
.hero p{color:#3a382f;font-size:18px;line-height:1.7;max-width:40ch}
.hero-cta{margin-top:34px;display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.hero-figure figure{position:relative}
.hero-slides{position:relative;aspect-ratio:146/114;overflow:hidden;background:#e9e6df;
  box-shadow:0 30px 70px -30px rgba(0,0,0,.45)}
.hslide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;
  transition:opacity .9s ease}
.hslide.is-active{opacity:1}
.hero-cap{margin-top:14px;display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.hero-figure .t{font-family:"Playfair Display",serif;font-style:italic;font-size:17px}

/* STATUT */
.status{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.status .wrap{display:flex;flex-wrap:wrap;align-items:baseline;gap:14px 56px;padding-top:24px;padding-bottom:24px}
.status .item{display:flex;align-items:baseline;gap:12px}
.status .num{font-family:"Playfair Display",serif;font-size:22px}

/* SECTIONS */
section{padding:96px 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:44px;
  border-bottom:1px solid var(--line);padding-bottom:18px;gap:20px}
.sec-head h2{font-family:"Playfair Display",serif;font-weight:400;font-size:clamp(1.8rem,3vw,2.6rem)}

/* PAGE HEAD (titres de page) */
.page-head{padding:88px 0 30px}
.page-head h1{font-family:"Playfair Display",serif;font-weight:400;font-size:clamp(2.4rem,4.5vw,3.6rem);
  line-height:1.05;margin:16px 0 18px}
.page-head p{color:#3a382f;max-width:60ch;font-size:18px}

/* GRILLE ŒUVRES */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:48px 40px}
.work figure{overflow:hidden;background:#e9e6df}
.work img{transition:transform .9s cubic-bezier(.2,.8,.2,1);will-change:transform}
.work:hover img{transform:scale(1.035)}
.work .meta{margin-top:16px}
.work .ttl{font-family:"Playfair Display",serif;font-style:italic;font-size:18px}
.work .sub{margin-top:4px;color:var(--muted);font-size:14px}
.work .music{margin-top:7px;display:flex;align-items:baseline;gap:9px}
.work .music .tag{font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:#a39e92;white-space:nowrap;transform:translateY(-1px)}
.work .music .ref{font-style:italic;color:#534f46;font-size:14px}

/* FILTRES (visuels) */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:40px}
.chip{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
  border:1px solid var(--line);padding:8px 16px;border-radius:999px;transition:all .2s;cursor:pointer}
.chip:hover,.chip.active{color:var(--bg);background:var(--ink);border-color:var(--ink)}

/* EXPOSITION (sombre) */
.expo{background:var(--dark);color:#F2F0EA}
.expo .inner{display:grid;grid-template-columns:1.15fr 1fr;gap:0;align-items:stretch}
.expo figure{min-height:100%}
.expo figure img{height:100%;object-fit:cover}
.expo .body{padding:84px 64px;display:flex;flex-direction:column;justify-content:center}
.expo .label{color:var(--dark-mut)}
.expo h2{font-family:"Playfair Display",serif;font-weight:400;font-size:clamp(2rem,3.4vw,3rem);line-height:1.08;margin:18px 0 20px}
.expo p{color:#CFCBC1;max-width:46ch}
.expo .meta{margin-top:30px;display:flex;gap:48px;flex-wrap:wrap}
.expo .meta .label{display:block;margin-bottom:6px}
.expo .btn{border-color:#5a564d;color:#F2F0EA;margin-top:36px;align-self:flex-start}
.expo .btn:hover{background:#F2F0EA;color:var(--dark);border-color:#F2F0EA}
.expo .expo-affiche{display:flex;align-items:center;justify-content:center;background:var(--dark);padding:48px 40px;min-height:100%}
.expo .expo-affiche img{width:auto;max-width:100%;height:auto;max-height:720px;object-fit:contain;box-shadow:0 30px 70px -28px rgba(0,0,0,.6)}
@media(max-width:900px){.expo .expo-affiche{padding:40px 28px;min-height:0}.expo .expo-affiche img{max-height:none}}

/* À PROPOS */
.about .inner{display:grid;grid-template-columns:300px 1fr;gap:60px;align-items:center}
.about img{filter:grayscale(100%) contrast(1.02);width:100%;max-width:300px;height:auto;display:block}
.about .q{font-family:"Playfair Display",serif;font-weight:400;font-size:clamp(1.5rem,2.5vw,2.1rem);line-height:1.3;margin:18px 0 26px}
.about p{color:#3a382f;max-width:54ch;margin-bottom:16px}

/* ÉDITIONS */
.editions{background:#EFEDE7}
.editions .inner{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.editions h2{font-family:"Playfair Display",serif;font-weight:400;font-size:clamp(1.8rem,3vw,2.4rem);margin:14px 0 18px}
.editions p{color:#3a382f;max-width:44ch;margin-bottom:14px}
.editions .small{color:var(--muted);font-size:14px}

/* CONTACT */
.contact{padding:108px 0 96px;text-align:center}
.contact h2{font-family:"Playfair Display",serif;font-weight:400;font-size:clamp(2.2rem,4vw,3.4rem);margin:16px 0 30px}
.entries{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;max-width:920px;margin:40px auto 8px;text-align:left}
.entry{border:1px solid var(--line);padding:30px 26px;transition:border-color .2s}
.entry:hover{border-color:var(--ink)}
.entry h3{font-family:"Playfair Display",serif;font-weight:400;font-size:20px;margin:14px 0 8px}
.entry p{color:var(--muted);font-size:15px}
.ateliers{display:flex;justify-content:center;gap:64px;flex-wrap:wrap;margin:46px 0 14px}
.ateliers .label{display:block;margin-bottom:6px}
.mail{font-family:"Playfair Display",serif;font-style:italic;font-size:22px;border-bottom:1px solid var(--line);padding-bottom:4px;transition:border-color .2s}
.mail:hover{border-color:var(--ink)}

/* FICHE ŒUVRE */
.piece{display:grid;grid-template-columns:1.3fr 1fr;gap:64px;align-items:center;padding:64px 0 40px}
.piece .img-col img{box-shadow:0 30px 70px -34px rgba(0,0,0,.5)}
.piece .info{position:static}
.piece .spec{margin-top:30px}
.piece .resonance{margin:26px 0 0}
.piece .cta{margin-top:40px;text-align:center}
.piece .cta .btn{display:inline-block}
.piece h1{font-family:"Playfair Display",serif;font-weight:400;font-style:italic;font-size:clamp(2rem,3.4vw,2.8rem);margin:14px 0 22px}
.spec{border-top:1px solid var(--line)}
.spec .row{display:flex;justify-content:space-between;gap:20px;padding:14px 0;border-bottom:1px solid var(--line)}
.spec .row .label{margin:0}
.spec .row .val{font-size:15px}
.badge{display:inline-block;font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  border:1px solid var(--ink);padding:5px 12px;border-radius:999px}
.piece .resonance{margin:22px 0 0;color:#534f46;font-style:italic;line-height:1.6}
.piece .resonance .tag{display:inline-block;font-style:normal;font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:#a39e92;margin-right:10px;transform:translateY(-1px)}
.piece .desc{color:#3a382f;margin:18px 0 24px}
.piece .cta{display:flex;gap:16px;flex-wrap:wrap;margin-top:8px}

/* FILTRES — masquage */
.work.hide{display:none}
.year-group.hide{display:none}

/* CLASSEMENT PAR ANNÉE */
.year-group{margin-bottom:64px}
.year-head{display:flex;align-items:baseline;justify-content:space-between;gap:20px;
  border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:32px}
.year-head .serif{font-size:clamp(1.5rem,2.4vw,2rem)}

/* ÉDITIONS — page */
.ed-offers{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin:8px 0 40px}
.ed-card{border:1px solid var(--line);padding:38px 34px;display:flex;flex-direction:column}
.ed-card.feature{border-color:var(--ink)}
.ed-card h3{font-family:"Playfair Display",serif;font-weight:400;font-size:22px;margin:12px 0 6px}
.ed-card .price{font-family:"Playfair Display",serif;font-size:30px;margin:8px 0 16px}
.ed-card p{color:#3a382f;font-size:15px;margin-bottom:18px}
.ed-card .btn{align-self:flex-start;margin-top:auto}
.ed-note{color:var(--muted);font-size:14px;max-width:60ch}

/* FORMULAIRE — contact */
.form{max-width:680px;margin:44px auto 0;text-align:left;display:grid;gap:20px}
.form .field{display:flex;flex-direction:column;gap:8px}
.form label{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.form input,.form select,.form textarea{font-family:inherit;font-size:16px;color:var(--ink);
  background:transparent;border:none;border-bottom:1px solid var(--line);padding:10px 2px;transition:border-color .2s}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--ink)}
.form textarea{resize:vertical;min-height:120px}
.form .btn{justify-self:start;margin-top:6px}
.form .row2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:560px){.form .row2{grid-template-columns:1fr}}

/* FOOTER */
footer{border-top:1px solid var(--line)}
footer .wrap{display:flex;justify-content:space-between;align-items:center;padding-top:28px;padding-bottom:28px;flex-wrap:wrap;gap:12px}
footer .label{color:var(--muted)}
footer .fmenu{display:flex;gap:24px}
footer .fmenu a{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
footer .fmenu a:hover{color:var(--ink)}

/* RESPONSIVE */
@media(max-width:900px){
  .hero{grid-template-columns:1fr;gap:40px;padding:56px 0 64px;min-height:auto}
  .hero-text{order:2;max-width:none}.hero-figure{order:1}
  .grid{grid-template-columns:repeat(2,1fr);gap:36px 28px}
  .expo .inner,.about .inner,.editions .inner,.piece{grid-template-columns:1fr}
  .expo figure{min-height:56vw}.expo .body{padding:56px 32px}
  .about .inner{gap:36px}.piece{gap:36px}.piece .info{position:static}
  .entries{grid-template-columns:1fr}
  .menu{display:none}
}
@media(max-width:560px){
  .wrap{padding:0 22px}
  .grid{grid-template-columns:1fr;gap:34px}
  .status .wrap{gap:14px 32px}.ateliers{gap:36px}
}
/* ============================================================
   ANIMATIONS LÉGÈRES — apparitions douces au défilement
   Sobres : fade + légère montée, ease-out, 1 mouvement par vue.
   Désactivées si l'utilisateur préfère réduire les animations.
   ============================================================ */
.reveal{opacity:0;transform:translateY(16px);
  transition:opacity .7s cubic-bezier(.22,.7,.2,1),transform .7s cubic-bezier(.22,.7,.2,1)}
.reveal.is-in{opacity:1;transform:none}
/* entrée du hero au chargement */
.hero-text,.hero-figure{opacity:0;transform:translateY(18px);animation:rise .9s cubic-bezier(.22,.7,.2,1) forwards}
.hero-figure{animation-delay:.12s}
@keyframes rise{to{opacity:1;transform:none}}
/* léger renforcement de l'ombre du header au scroll */
header{transition:box-shadow .3s ease,background .3s ease}
header.scrolled{box-shadow:0 1px 0 var(--line),0 10px 30px -24px rgba(0,0,0,.35)}

@media(prefers-reduced-motion:reduce){
  *{transition:none!important;scroll-behavior:auto}
  .reveal{opacity:1!important;transform:none!important}
  .hero-text,.hero-figure{opacity:1!important;transform:none!important;animation:none!important}
}

/* ===== FORMULAIRE DE CONTACT ===== */
.contact-form{max-width:580px;margin:26px auto 0;display:flex;flex-direction:column;gap:15px}
.cf-row{display:flex;gap:16px}
.cf-row input{flex:1;min-width:0}
.contact-form input,.contact-form select,.contact-form textarea{
  width:100%;font-family:inherit;font-size:15px;color:var(--ink);
  background:transparent;border:none;border-bottom:1px solid var(--line);
  padding:12px 2px;outline:none;border-radius:0}
.contact-form textarea{resize:vertical;min-height:104px;line-height:1.5}
.contact-form select{appearance:none;-webkit-appearance:none;cursor:pointer}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--muted)}
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{border-bottom-color:var(--ink)}
.contact-form .btn{align-self:center;margin-top:8px;cursor:pointer;border:none}
.cf-status{font-size:14px;font-style:italic;color:var(--muted);min-height:1.2em;margin:2px 0 0;text-align:center}
.cf-status.ok{color:#5b7a52}
.cf-status.err{color:#9a5a33}
.contact-side{display:flex;flex-wrap:wrap;gap:30px;align-items:baseline;justify-content:center;margin-top:34px}
.contact-ig{border-bottom:1px solid var(--line);padding-bottom:1px}

/* ===== FOOTER (refonte) ===== */
.site-footer{border-top:1px solid var(--line);margin-top:90px;padding:50px 0 26px}
.site-footer .wrap{display:block !important}
.site-footer .footer-top{display:flex;flex-wrap:wrap;gap:44px;justify-content:space-between;align-items:flex-start}
.footer-cols{flex:1;justify-content:flex-end;max-width:680px}
.footer-brand{max-width:320px}
.footer-tag{color:var(--muted);font-size:14px;margin:10px 0 2px}
.footer-devise{font-style:italic;color:var(--muted);font-size:15px;margin:0 0 12px}
.footer-mail{font-size:14px;border-bottom:1px solid var(--line);padding-bottom:1px}
.footer-cols{display:flex;gap:54px;flex-wrap:wrap}
.footer-col{display:flex;flex-direction:column;gap:11px}
.footer-col .label{margin-bottom:3px}
.footer-col a{font-size:14px;color:var(--ink);opacity:.78}
.footer-col a:hover{opacity:1}
.footer-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;border-top:1px solid var(--line);margin-top:40px;padding-top:20px}
.footer-legal{font-size:12px;color:var(--muted)}
.footer-legal a{font-size:12px;color:var(--muted);border-bottom:1px solid var(--line)}
@media(max-width:640px){
  .cf-row{flex-direction:column;gap:15px}
  .site-footer .footer-top{gap:30px}
  .footer-cols{gap:30px}
}

/* ===== HERO PLEIN ÉCRAN (diaporama des toiles) ===== */
header.over-hero{position:absolute;top:0;left:0;right:0;background:transparent;border-bottom:none;box-shadow:none;z-index:30}
header.over-hero .brand{color:#fff}
header.over-hero .menu a{color:rgba(255,255,255,.86)}
header.over-hero .menu a:hover,header.over-hero .menu a.active{color:#fff}
header.over-hero.scrolled{position:fixed;background:var(--paper,#f1ebe0);box-shadow:0 1px 0 var(--line),0 10px 30px -24px rgba(0,0,0,.35)}
header.over-hero.scrolled .brand{color:var(--ink)}
header.over-hero.scrolled .menu a{color:var(--ink);opacity:.8}
header.over-hero.scrolled .menu a:hover{opacity:1}

.hero-full{position:relative;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:#0b0a08}
.hero-full .hero-bg{position:absolute;inset:0;z-index:0}
.hero-full .hslide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.6s ease,transform 1.8s ease;transform:scale(1.05);max-width:none}
.hero-full .hslide.is-active{opacity:1;animation:heroZoom 7s ease forwards}
@keyframes heroZoom{from{transform:scale(1.05)}to{transform:scale(1.12)}}
.hero-full .hero-overlay{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(8,7,5,.74) 0%,rgba(8,7,5,.50) 34%,rgba(8,7,5,.56) 64%,rgba(8,7,5,.90) 100%)}
.hero-full .hero-content{position:relative;z-index:3;flex:1;display:flex;flex-direction:column;justify-content:center;padding-top:120px;padding-bottom:42px;animation:none;opacity:1;transform:none}
.hero-full .hero-text{max-width:680px;opacity:1;transform:none;animation:none}
.hero-full .label{color:rgba(255,255,255,.8)}
.hero-full h1{color:#fff}
.hero-full h1 em{color:#e8dcc4}
.hero-full p{color:rgba(255,255,255,.9)}
.hero-full .link-arrow{color:#fff;border-color:rgba(255,255,255,.4)}
.hero-full .btn{background:#fff;color:var(--ink,#16130d);border-color:#fff}
.hero-full .btn:hover{background:#fff;opacity:.9}
.hero-full .hero-cap{position:absolute;left:0;right:0;bottom:40px;margin:0;display:flex;align-items:flex-end;justify-content:space-between;gap:18px;z-index:4}
.hero-full .hero-cap .t{color:#fff;font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:20px}
.hero-full .hero-cap .label{color:rgba(255,255,255,.7);display:block;margin-top:5px}
@media(max-width:680px){
  .hero-full .hero-content{padding-top:96px;padding-bottom:96px}
  .hero-full .hero-cap{bottom:28px;flex-direction:column;align-items:flex-start;gap:2px}
}

/* ===== MENU MOBILE (hamburger) ===== */
.nav-toggle{display:none;background:none;border:none;cursor:pointer;width:34px;height:34px;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:0;color:var(--ink)}
.nav-toggle span{display:block;width:24px;height:1.5px;background:currentColor;transition:transform .3s,opacity .3s}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}
@media(max-width:760px){
  header{z-index:80;backdrop-filter:none !important;-webkit-backdrop-filter:none !important}
  header .nav-toggle{display:flex !important;position:relative;z-index:90}
  header.over-hero:not(.scrolled) .nav-toggle{color:#fff}
  header.menu-open .nav-toggle{color:var(--ink) !important}
  header.menu-open .brand{color:var(--ink) !important}
  header .menu{
    display:flex !important;position:fixed !important;inset:0 !important;
    width:auto !important;max-width:none !important;
    background:var(--paper,#f1ebe0) !important;
    flex-direction:column;align-items:center;justify-content:center;gap:30px;
    padding:80px 40px 40px;transform:none !important;
    opacity:0;visibility:hidden;pointer-events:none;
    transition:opacity .3s ease,visibility .3s;z-index:70}
  header .menu.open{opacity:1 !important;visibility:visible !important;pointer-events:auto !important}
  header .menu a,header.over-hero .menu a{color:var(--ink) !important;font-size:19px;letter-spacing:.14em;opacity:.82}
  header .menu a:hover,header .menu a.active{opacity:1}
}
