:root{
  --forest-dark:#073b20;   /* vert profond */
  --forest:#0e5b2a;        /* vert forêt */
  --forest-light:#2f7d45;  /* vert naturel */
  --lime:#d7ef45;          /* vert anis */
  --lime-deep:#c3db2e;
  --sakura:#e7a5b4;        /* rose sakura */
  --sakura-deep:#e7a5b4;
  --sakura-pale:#f4d9df;   /* rose clair */
  --cream:#f8f3ed;         /* écru végétal */
  --paper:#ffffff;
  --ink:#151815;           /* noir doux */
  --line: rgba(21,24,21,.12);
  --maxw: 1180px;
  --radius-btn: 12px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:'Manrope', sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{
  font-family:'Manrope', sans-serif;
  font-weight:800;
  line-height:1.08;
  margin:0;
  color:var(--ink);
}
h2{font-weight:700; line-height:1.12;}
h3{font-weight:600; line-height:1.3;}
p{margin:0;}
a{color:inherit; text-decoration:none;}
img,svg{display:block; max-width:100%;}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 32px;}
section{position:relative;}
::selection{background:var(--lime); color:var(--ink);}

@media (prefers-reduced-motion: reduce){
  *{animation:none !important; transition:none !important;}
}

/* ---------- NAV ---------- */
header.site{
  position:sticky; top:0; z-index:50;
  background:var(--cream);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 32px; max-width:var(--maxw); margin:0 auto;
}
.brand{display:flex; align-items:center; gap:10px;}
.brand img{height:44px; width:auto;}
.nav-links{display:flex; align-items:center; gap:30px;}
.nav-links a{font-size:.95rem; font-weight:500; color:var(--ink); position:relative; padding:4px 0;}
.nav-links a:not(.cta)::after{
  content:''; position:absolute; left:0; bottom:0; height:1.5px; width:0%;
  background:var(--sakura-deep); transition:width .25s ease;
}
.nav-links a:not(.cta):hover::after{width:100%;}
.nav-links a.active:not(.cta)::after{width:100%;}
a.cta{
  background:var(--forest); color:var(--paper); padding:11px 22px;
  border-radius:var(--radius-btn); font-size:.9rem; font-weight:600; letter-spacing:.01em;
  transition:background .2s ease, transform .2s ease;
}
a.cta:hover{background:var(--forest-dark); transform:translateY(-1px);}
.burger{display:none; flex-direction:column; gap:5px; background:none; border:none; cursor:pointer; padding:6px;}
.burger span{width:24px; height:2px; background:var(--ink); display:block;}

@media (max-width: 880px){
  .nav-links{
    position:fixed; inset:64px 0 auto 0; background:var(--paper);
    flex-direction:column; align-items:flex-start; gap:0;
    padding:10px 32px 26px; border-bottom:1px solid var(--line);
    transform:translateY(-130%); transition:transform .3s ease;
  }
  .nav-links.open{transform:translateY(0);}
  .nav-links a{width:100%; padding:14px 0; border-bottom:1px solid var(--line);}
  .nav-links a.cta{border-bottom:none; text-align:center; margin-top:14px;}
  .burger{display:flex;}
}

/* ---------- KICKER / BADGES ---------- */
.kicker-tag{
  display:inline-flex; align-items:center; gap:8px;
  font-size:.85rem; color:var(--forest); margin-bottom:18px;
  font-weight:600;
}
.kicker-tag svg{width:16px; height:16px; flex-shrink:0;}
.eyebrow{
  display:block; font-size:.8rem; letter-spacing:.08em; text-transform:uppercase;
  color:var(--sakura-deep); font-weight:700; margin-bottom:10px;
}

/* ---------- HERO ---------- */
.hero{padding:20px 0 20px; overflow:hidden; position:relative;}
.hero-wrap{display:grid; grid-template-columns:1.05fr .95fr; gap:48px; align-items:stretch; position:relative; z-index:1;}
.hero-copy{position:relative; z-index:1;}
.hero h1{font-size:clamp(2.3rem, 4.2vw, 3.4rem); max-width:14ch;}
.hero p.lede{margin-top:20px; max-width:46ch; font-size:1.06rem; color:#39443a;}
.hero-actions{display:flex; gap:16px; margin-top:32px; flex-wrap:wrap;}
.btn-primary{
  background:var(--forest); color:var(--paper); padding:14px 26px;
  border-radius:var(--radius-btn); font-size:.96rem; font-weight:600; display:inline-block;
  transition:background .2s ease, transform .2s ease;
}
.btn-primary:hover{background:var(--forest-dark); transform:translateY(-1px);}
.btn-secondary{
  background:var(--lime); color:var(--ink); padding:14px 26px;
  border-radius:var(--radius-btn); font-size:.96rem; font-weight:600; display:inline-block;
  transition:background .2s ease, transform .2s ease;
}
.btn-secondary:hover{background:var(--lime-deep); transform:translateY(-1px);}
.btn-outline{
  border:1.5px solid var(--forest); color:var(--forest); padding:12.5px 25px; border-radius:var(--radius-btn);
  font-size:.96rem; font-weight:600; display:inline-block; transition:background .2s ease;
}
.btn-outline:hover{background:rgba(14,91,42,.08);}
.hero-tag-banner{margin-top:26px; width:230px; height:auto; display:block;}

.hero-art{position:relative;}
.hero-art img{
  height:100%; width:auto; max-width:100%; display:block; margin:0 auto; border-radius:22px;
  box-shadow:0 24px 50px -20px rgba(7,59,32,.35);
}

/* organic divider */
.divider{width:100%; display:block; margin-top:-2px;}

/* ---------- SERVICES ---------- */
.services{background:var(--sakura-pale); padding:20px 0;}
.section-head{max-width:640px; margin-bottom:48px;}
.section-head h2{font-size:clamp(1.9rem,3.2vw,2.5rem);}
.section-head p{margin-top:14px; color:#4c584d; font-size:1.02rem;}
.section-head.center{margin-left:auto; margin-right:auto; text-align:center;}

.service-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:22px;}
.service-card{
  background:var(--paper); border:1px solid var(--line); border-radius:18px; padding:26px 22px;
  transition:transform .2s ease, box-shadow .2s ease;
}
.service-card:hover{transform:translateY(-3px); box-shadow:0 16px 30px -18px rgba(7,59,32,.3);}
.service-card .icon{
  width:52px; height:52px; border-radius:50%; background:var(--cream);
  display:flex; align-items:center; justify-content:center; margin-bottom:16px;
}
.service-card .icon svg{width:24px; height:24px; color:var(--forest);}
.service-card h3{font-size:1.06rem;}
.service-card p{margin-top:8px; font-size:.9rem; color:#57624f;}

@media (max-width: 880px){
  .hero-wrap{grid-template-columns:1fr;}
  .hero-art{order:-1; margin-bottom:8px;}
  .hero-art img{height:auto; width:100%; object-fit:initial;}
}
@media (max-width: 520px){
  .hero-tag-banner{width:180px;}
}
@media (max-width: 980px){ .service-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width: 560px){ .service-grid{grid-template-columns:1fr;} }

/* ---------- ABOUT ---------- */
.about{background:var(--paper); padding:20px 0;}
.about-intro{display:grid; grid-template-columns:1.3fr .7fr; gap:60px; align-items:start;}
.about-text p{margin-top:16px; color:#4c584d; font-size:1.02rem; max-width:52ch;}
.about-quote{
  width:100%; max-width:260px; margin:0 auto 20px; border-radius:16px;
  box-shadow:0 16px 34px -18px rgba(7,59,32,.28);
}

.about-detail{background:var(--forest-dark); color:var(--paper); padding:20px 0;}
.detail-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:30px;}
.detail-item .icon{width:34px; height:34px; margin-bottom:14px;}
.detail-item .icon svg{width:100%; height:100%; color:var(--sakura);}
.detail-item h3{color:var(--paper); font-size:1.02rem; font-weight:600;}
.detail-item p{margin-top:8px; font-size:.88rem; color:#c3d6c6;}
@media (max-width: 980px){ .detail-grid{grid-template-columns:1fr 1fr; row-gap:30px;} .about-intro{grid-template-columns:1fr; gap:24px;} }
@media (max-width: 560px){ .detail-grid{grid-template-columns:1fr;} }

/* ---------- SEASONS ---------- */
.seasons{background:var(--paper); padding:20px 0;}
.season-row{display:grid; grid-template-columns:repeat(4,1fr); gap:28px; margin-top:44px; position:relative;}
.season-row::before{
  content:''; position:absolute; top:14px; left:0; right:0; height:1px; background:var(--line);
}
.season{position:relative; padding-top:36px;}
.season .letter{
  position:absolute; top:0; left:0; width:28px; height:28px; border-radius:50%;
  border:1px solid var(--sakura-deep); color:var(--sakura-deep); background:var(--cream);
  display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.85rem;
}
.season h3{font-size:1.1rem;}
.season p{margin-top:8px; font-size:.9rem; color:#57624f;}
@media (max-width: 880px){ .season-row{grid-template-columns:1fr 1fr; row-gap:34px;} .season-row::before{display:none;} }
@media (max-width: 560px){ .season-row{grid-template-columns:1fr;} }

/* ---------- ZONE ---------- */
.zone{background:var(--cream); padding:20px 0;}
.zone .wrap{display:grid; grid-template-columns:1.1fr .9fr; gap:56px; align-items:center;}
.zone p.body{margin-top:16px; color:#4c584d; font-size:1rem; max-width:48ch;}
.tags{display:flex; flex-wrap:wrap; gap:10px; margin-top:26px;}
.tags span{
  background:var(--paper); border:1px solid var(--line); border-radius:100px;
  padding:8px 16px; font-size:.86rem; font-weight:500; color:var(--ink);
}
.tags span.here{background:var(--forest); color:var(--paper); border-color:var(--forest);}
.zone-visual{position:relative; width:100%; max-width:340px; margin:0 auto;}
.zone-visual img{width:100%; height:auto;}
@media (max-width: 880px){ .zone .wrap{grid-template-columns:1fr;} .zone-visual{order:-1;} }

/* ---------- GALLERY ---------- */
.gallery{background:var(--paper); padding:20px 0;}
.gallery-head{display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:40px; flex-wrap:wrap;}
.gallery-head p{max-width:44ch; color:#4c584d; font-size:.98rem; margin-top:12px;}
.gallery-head .see-all{font-size:.92rem; color:var(--forest); white-space:nowrap; font-weight:600;}
.grid-gallery{display:grid; grid-template-columns:repeat(4,1fr); gap:16px;}
.tile{
  border-radius:18px; position:relative; overflow:hidden; aspect-ratio:4/3;
  display:flex; align-items:flex-end; padding:16px; color:var(--paper); isolation:isolate;
}
.tile span{font-size:1rem; font-weight:600; position:relative; z-index:2;}
.tile::after{content:''; position:absolute; inset:0; background:linear-gradient(180deg, transparent 45%, rgba(0,0,0,.45)); z-index:1;}
.tile.g1{background:radial-gradient(120% 140% at 20% 10%, #2f7d45, #073b20 70%);}
.tile.g2{background:linear-gradient(135deg, var(--sakura), #c97e8f);}
.tile.g3{background:radial-gradient(120% 160% at 80% 100%, #145c33, #073b20 75%);}
.tile.g4{background:linear-gradient(160deg, #f0c9d3, #c97e8f);}
.tile.g5{background:radial-gradient(140% 140% at 10% 20%, #2f7d45, #073b20 70%);}
.tile.g6{background:linear-gradient(150deg,#e3ddc9,#c4d3c8);}
.tile.photo{background-size:cover; background-position:center;}
.gallery-note{margin-top:24px; font-size:.85rem; color:#6a746a;}
@media (max-width: 880px){ .grid-gallery{grid-template-columns:repeat(2,1fr);} }

/* ---------- CTA BAND ---------- */
.cta-band{background:var(--forest); padding:20px 0; text-align:center;}
.cta-band h2{color:var(--paper); font-size:clamp(1.7rem,3vw,2.3rem); max-width:22ch; margin:0 auto;}
.cta-band p{color:#c3d6c6; max-width:44ch; margin:18px auto 0; font-size:1rem;}
.cta-band .btn-secondary{margin-top:28px;}

/* ---------- TESTIMONIALS (optional reuse) ---------- */
.testimonials{background:var(--paper); padding:90px 0; border-top:1px solid var(--line);}
.testimonials .wrap{display:grid; grid-template-columns:1fr 1fr; gap:40px;}
.quote{background:var(--cream); border-radius:20px; padding:34px; border:1px solid var(--line);}
.quote p.text{font-size:1.15rem; font-style:italic; font-weight:500; color:var(--ink); line-height:1.5;}
.quote .who{margin-top:18px; font-size:.86rem; color:#5b665c;}
@media (max-width: 880px){ .testimonials .wrap{grid-template-columns:1fr;} }

/* ---------- PAGE HEADER (interior pages) ---------- */
.page-header{padding:56px 0 20px;}
.page-header h1{font-size:clamp(2.1rem,3.6vw,2.9rem); max-width:16ch;}
.page-header p{margin-top:16px; max-width:52ch; color:#4c584d; font-size:1.02rem;}

/* ---------- CONTACT ---------- */
.contact{padding:20px 0 100px;}
.contact .wrap{display:grid; grid-template-columns:.85fr 1.15fr; gap:50px; align-items:start;}
.coord-box{background:var(--forest-dark); color:var(--paper); border-radius:22px; padding:32px;}
.coord-box h3{color:var(--sakura-pale); font-size:.86rem; letter-spacing:.06em; text-transform:uppercase; font-weight:700; margin-bottom:8px;}
.coord-row{display:flex; gap:14px; padding:16px 0; border-top:1px solid rgba(255,255,255,.14);}
.coord-row svg{width:20px; height:20px; flex-shrink:0; margin-top:2px; color:var(--sakura);}
.coord-row .label{font-size:.78rem; color:#a9c1ad; margin-bottom:3px;}
.coord-row .value{font-size:.98rem; color:var(--paper);}
.coord-legal{margin-top:18px; padding-top:18px; border-top:1px solid rgba(255,255,255,.14); font-size:.76rem; color:#8fa793; line-height:1.6;}

form.contact-form{background:var(--paper); border:1px solid var(--line); border-radius:22px; padding:36px;}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-bottom:18px;}
.field{display:flex; flex-direction:column; gap:6px;}
.field.full{grid-column:1/-1;}
.field label{font-size:.82rem; color:#5b665c;}
.field input, .field textarea, .field select{
  border:1px solid var(--line); border-radius:10px; padding:12px 14px;
  font-family:'Manrope', sans-serif; font-size:.95rem; background:var(--cream); color:var(--ink);
  resize:vertical;
}
.field input:focus, .field textarea:focus, .field select:focus{outline:2px solid var(--forest); outline-offset:1px;}
form.contact-form button{
  margin-top:6px; width:100%; background:var(--forest); color:var(--paper);
  border:none; padding:15px; border-radius:var(--radius-btn); font-size:.98rem; cursor:pointer;
  transition:background .2s ease; font-family:'Manrope', sans-serif; font-weight:600;
}
form.contact-form button:hover{background:var(--forest-dark);}
.form-note{font-size:.8rem; color:#6a746a; margin-top:14px;}
.contact-foot-note{
  margin-top:40px; display:flex; gap:14px; align-items:flex-start; background:var(--paper);
  border:1px solid var(--line); border-radius:16px; padding:20px 22px; max-width:760px;
}
.contact-foot-note svg{width:22px; height:22px; color:var(--sakura-deep); flex-shrink:0; margin-top:2px;}
.contact-foot-note p{font-size:.92rem; color:#4c584d;}
@media (max-width: 880px){ .contact .wrap{grid-template-columns:1fr;} .form-row{grid-template-columns:1fr;} }

/* ---------- FOOTER ---------- */
footer{background:var(--forest-dark); color:#cfe0d3; padding:60px 0 30px;}
.footer-top{display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:40px; padding-bottom:40px; border-bottom:1px solid rgba(255,255,255,.14);}
.footer-brand{display:flex; align-items:center; gap:10px; background:var(--paper); border-radius:12px; padding:10px 16px; width:fit-content;}
.footer-brand img{height:36px; width:auto;}
.footer-tag{margin-top:14px; font-size:.9rem; max-width:34ch; color:#a9c1ad;}
.footer-col h4{font-size:.85rem; color:var(--sakura); margin:0 0 14px; font-weight:700;}
.footer-col a, .footer-col p{display:block; font-size:.92rem; padding:6px 0; color:#cfe0d3;}
.footer-col a:hover{color:var(--sakura);}
.footer-bottom{display:flex; justify-content:space-between; align-items:center; padding-top:24px; font-size:.8rem; color:#8fa793; flex-wrap:wrap; gap:10px;}
@media (max-width: 880px){ .footer-top{grid-template-columns:1fr; gap:28px;} }

/* ---------- DECOR ---------- */
.blossom-decor{position:absolute; width:220px; opacity:.9; pointer-events:none; z-index:0;}
.blossom-decor.tr{top:-30px; right:-40px;}
.blossom-decor.bl{bottom:-30px; left:-40px; transform:scaleX(-1);}
@media (max-width: 700px){ .blossom-decor{width:130px;} }

/* ---------- REALISATIONS PAGE ---------- */
.full-gallery{padding:10px 0 100px;}
.full-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}
.full-grid .tile{aspect-ratio:1/1;}
@media (max-width: 880px){ .full-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width: 560px){ .full-grid{grid-template-columns:1fr;} }
