:root{
  --p-bg:#f7f9f4;
  --p-ink:#1d2b22;
  --p-body:#3a4a40;
  --p-accent:#3f7d5a;
  --p-hero-bg:linear-gradient(160deg,#1d3025,#2f5340);
  --p-hero-ink:#f3f7f0;
  --p-hero-body:#bcd0c2;
  --p-btn-bg:#2f5340;
  --p-btn-ink:#ffffff;
  --p-line:#d4e0d4;
  --p-radius:14px;
  --p-border-w:0px;
  --p-border-c:var(--p-line);
  --p-shadow:0 8px 30px rgba(0,0,0,.09);
  --p-card-bg:var(--p-bg);
  --p-card-head-bg:var(--p-accent);
  --p-card-head-ink:#ffffff;
  --p-sec-border:0px;
  --p-font-title:'Fraunces', serif;
  --p-font-body:'Hanken Grotesk', sans-serif;
  --p-font-ui:'Hanken Grotesk', sans-serif;
  --p-title-scale:1;
  --p-title-weight:600;
  --p-body-weight:400;
}
*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--p-font-body,'Hanken Grotesk',system-ui,sans-serif);font-weight:var(--p-body-weight,400);background:#bcd0c2;background-size:cover;-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column}
.page{max-width:none;margin:0 auto;background:#bcd0c2;background-size:cover;flex:1 0 auto;display:flex;flex-direction:column;width:100%}
/* Sticky footer : le footer reste collé en bas même si la page est courte. */
.route{display:flex;flex-direction:column;flex:1 0 auto}
.b-footer{margin-top:auto}

/* Titres : taille = base × --p-title-scale ; graisse via --p-title-weight. */
.b-h{padding:14px 48px 6px;font-family:var(--p-font-title,'Fraunces',serif);font-size:calc(40px * var(--p-title-scale,1));font-weight:var(--p-title-weight,600);line-height:1.12;color:var(--p-ink)}
.b-sub{padding:6px 48px;font-family:var(--p-font-title,'Fraunces',serif);font-size:calc(24px * var(--p-title-scale,1));font-style:italic;color:var(--p-ink);opacity:.82}
.b-p{padding:10px 48px;font-family:var(--p-font-body,inherit);font-size:16.5px;font-weight:var(--p-body-weight,400);line-height:1.7;color:var(--p-body)}
.b-btn-wrap{padding:18px 48px}.b-btn{display:inline-block;background:var(--p-btn-bg);color:var(--p-btn-ink);padding:14px 30px;border-radius:999px;font-weight:600;text-decoration:none;cursor:pointer;white-space:nowrap}
.b-img-wrap{padding:18px 48px}.b-img-wrap img{width:100%;display:block;border-radius:var(--p-radius,10px)}.b-img-ph{width:100%;aspect-ratio:16/9;background:#eee;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#888;font-size:14px}
.b-hr{margin:22px 48px;border:none;border-top:1px solid var(--p-line)}.b-spacer{height:48px}
.b-cols{display:flex;gap:24px;padding:18px 48px}.b-cols>div{flex:1;font-size:15.5px;line-height:1.65;color:var(--p-body)}.b-cols .col-t{font-family:var(--p-font-title,'Fraunces',serif);font-size:19px;margin-bottom:7px;color:var(--p-ink)}
.b-hero{padding:64px 48px;text-align:center;background:var(--p-hero-bg);background-size:cover}.b-hero .eyebrow{font-family:var(--p-font-ui,inherit);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--p-accent);font-weight:700;margin-bottom:16px}.b-hero .b-hero-h{font-family:var(--p-font-title,'Fraunces',serif);font-size:calc(46px * var(--p-title-scale,1));font-weight:var(--p-title-weight,600);color:var(--p-hero-ink);margin-bottom:14px}.b-hero .b-hero-b{font-family:var(--p-font-body,inherit);font-size:17px;color:var(--p-hero-body);max-width:480px;margin:0 auto;line-height:1.6}
.b-hero .hero-ctas{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:22px}
.b-hero .hero-img-wrap{margin-top:26px;display:flex;justify-content:center}.b-hero .hero-img{max-width:100%;height:auto;border-radius:var(--p-radius,10px)}
/* Boutons de reseaux sociaux (composant BS "social") : icones+cercles ou pilules avec label. */
.social-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;transition:transform .12s ease,box-shadow .18s ease}
.social-btn:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.16);text-decoration:none}
.social-btn-pill{padding:10px 16px;border-radius:999px;font-weight:600;font-size:14px}
.social-inline{display:inline-flex;text-decoration:none;transition:opacity .15s ease}.social-inline:hover{opacity:.75;text-decoration:none}
/* Badges Store (App Store / Play Store) : lien plein, effet léger au hover. */
.store-badge{transition:transform .12s ease,box-shadow .18s ease}
.store-badge:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(0,0,0,.22);text-decoration:none}
.b-header{display:flex;align-items:center;justify-content:space-between;padding:18px 48px;background:var(--p-bg);border-bottom:1px solid var(--p-line);gap:20px;flex-wrap:wrap;position:sticky;top:0;z-index:50}
.b-header .logo{font-family:var(--p-font-title,'Fraunces',serif);font-weight:600;font-size:21px;color:var(--p-ink)}.b-header .logo img{height:34px}
.b-header nav.nav{display:flex;gap:22px;flex-wrap:wrap}.b-header nav.nav .nv{position:relative}.b-header nav.nav a{color:var(--p-ink);text-decoration:none;font-weight:600;font-size:14.5px}.b-header nav.nav a:hover{color:var(--p-accent)}
.b-header nav.nav .sub{display:none;position:absolute;top:100%;left:0;margin-top:0;background:#fff;border:1px solid var(--p-line);border-radius:10px;padding:8px;min-width:170px;flex-direction:column;box-shadow:0 10px 30px rgba(0,0,0,.12);z-index:60}
.b-header nav.nav .sub::before{content:"";position:absolute;top:-10px;left:0;right:0;height:10px}
.b-header nav.nav .nv:hover>.sub{display:flex}.b-header nav.nav .sub a{padding:7px 10px;font-size:13.5px}
.b-footer{padding:46px 48px 30px;background:var(--p-hero-bg);color:var(--p-hero-body)}.b-footer .fcols{display:flex;gap:48px;flex-wrap:wrap;margin-bottom:26px}.b-footer .b-foot-h{font-family:var(--p-font-title,'Fraunces',serif);font-size:16px;color:var(--p-hero-ink);margin-bottom:10px}.b-footer .copy{font-size:12.5px;border-top:1px solid rgba(255,255,255,.14);padding-top:18px;opacity:.75}
.b-footer a{color:inherit;text-decoration:none}.b-footer a:hover{text-decoration:underline;opacity:.85}
.b-section{padding:56px 48px;background:var(--p-bg);background-size:cover}
/* NB : pas de regle .b-section h2 / .b-section p — les sections v2 sont des conteneurs,
   titre/corps passent par des enfants .b-h/.b-p (voir normalizeSections dans migrate.ts).
   Une regle descendante ici corromprait le <p> emis par Tiptap dans un .b-h (font-size
   force + max-width 640px sans margin auto -> texte visuellement decale quand centre). */
.b-section .b-h,.b-section .b-sub,.b-section .b-p,.b-section .b-btn-wrap,.b-section .b-img-wrap{padding-left:0;padding-right:0}
.b-row{display:flex;align-items:flex-start;gap:24px;padding:18px 48px}.b-col{flex:1 1 0;min-width:0}
.b-row.row-hug>.b-col{flex:0 0 auto}
.b-free{position:relative;background:var(--p-bg);overflow:hidden;min-height:80px}
.b-shape{width:100%;background:var(--p-accent)}.b-shape-line{height:4px}
.free-item{position:absolute;box-sizing:border-box}.free-item>.free-rot{width:100%;height:100%}
.free-item .b-img-wrap{padding:0;height:100%}.free-item .b-img-wrap img{height:100%;border-radius:0}
.free-item .b-shape{height:100%}
.free-item .b-h,.free-item .b-sub,.free-item .b-p,.free-item .b-btn-wrap{padding:6px 10px}
.b-col .b-h,.b-col .b-sub,.b-col .b-p,.b-col .b-btn-wrap,.b-col .b-img-wrap,.b-col .b-section,.b-col .b-hero{padding-left:18px;padding-right:18px}
@media(max-width:600px){.b-row{flex-direction:column;padding-left:26px;padding-right:26px}}
.nav-band{padding:10px 48px;background:var(--p-bg);border-bottom:1px solid var(--p-line)}.nav-band nav.nav{display:flex;gap:22px;flex-wrap:wrap;justify-content:center}.nav-band nav.nav a{color:var(--p-ink);text-decoration:none;font-weight:600;font-size:14.5px}.nav-band nav.nav .nv{position:relative}
.b-header nav.nav a.active,.nav-band nav.nav a.active,.nav-side a.active,.nav-overlay a.active{color:var(--p-accent)}
/* ===== Style des blocs (tokens : coins, bordures, ombres, cards) ===== */
.card{border-radius:var(--p-radius,12px)!important;border:var(--p-border-w,1px) solid var(--p-border-c,var(--p-line))!important;box-shadow:var(--p-shadow,0 8px 30px rgba(0,0,0,.08))!important;background:var(--p-card-bg,var(--p-bg))!important;overflow:hidden}
/* Padding par défaut EXPLICITE (aligné éditeur ↔ export : sans ça, l'export a un
   reset *{padding:0} alors que l'éditeur garde le padding Bootstrap → divergence). */
.card-header{padding:14px 20px;background:var(--p-card-head-bg,var(--p-accent));color:var(--p-card-head-ink,#fff);border-bottom:var(--p-border-w,0px) solid var(--p-border-c,var(--p-line));font-family:var(--p-font-title,'Fraunces',serif);font-weight:600}
.card-body{padding:20px}
.card-header *{color:inherit}
.card .card-title{color:var(--p-ink)}
.card .card-body,.card .card-text{color:var(--p-body)}
/* Neutralise le padding horizontal massif des blocs de contenu quand ils sont dans une
   card libre (la card fournit déjà son padding via .card-header/.card-body). */
.card-header>.b-h,.card-header>.b-sub,.card-header>.b-p,.card-body>.b-h,.card-body>.b-sub,.card-body>.b-p,.card-body>.b-btn-wrap,.card-body>.b-img-wrap,.card-body>.b-cols,.card-body>.b-hr{padding-left:0;padding-right:0}
/* Idem via NodeView (éditeur : chaque bloc est enveloppé dans un .el). */
.card-header>.el>.b-h,.card-header>.el>.b-sub,.card-header>.el>.b-p,.card-body>.el>.b-h,.card-body>.el>.b-sub,.card-body>.el>.b-p,.card-body>.el>.b-btn-wrap,.card-body>.el>.b-img-wrap,.card-body>.el>.b-cols,.card-body>.el>.b-hr{padding-left:0;padding-right:0}
/* Coins propres : c'est l'overflow:hidden de .card qui découpe ; on neutralise le rayon
   propre des éléments internes (sinon double arrondi → coins du fond qui dépassent). */
.card-header,.card-footer,.card-img,.card-img-top,.card-img-bottom{border-radius:0!important}
.b-card{padding:18px 48px}.b-card>.card{margin:0 auto}
.b-map{margin:18px 48px;border-radius:var(--p-radius,10px);overflow:hidden;border:1px solid var(--p-line);background:#e8eef0}
.b-map .leaflet-container{height:100%;width:100%}
.leaflet-tooltip.poi-tip{background:var(--poi-label-bg,var(--p-accent));color:var(--poi-label-color,#fff);border:none;font-weight:600;font-size:var(--poi-label-size,12.5px);box-shadow:0 2px 8px rgba(0,0,0,.25)}
.leaflet-tooltip.poi-tip.leaflet-tooltip-top::before{border-top-color:var(--poi-label-bg,var(--p-accent))}
.poi-pin{display:block;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.poi-square{display:block;border:2px solid #fff;border-radius:3px;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.poi-diamond{display:block;border:2px solid #fff;transform:rotate(45deg);box-shadow:0 2px 6px rgba(0,0,0,.35)}
.b-shape:not(.b-shape-ellipse):not(.b-shape-line){border-radius:var(--p-radius,0px)}
.b-section{border:var(--p-sec-border,0px) solid var(--p-line);border-radius:var(--p-radius,0px)}
@media(max-width:600px){.b-header,.b-hero,.b-footer,.b-section,.b-h,.b-p,.b-sub,.b-btn-wrap,.b-img-wrap,.b-cols,.nav-band{padding-left:26px;padding-right:26px}.b-cols{flex-direction:column}.b-hero .b-hero-h{font-size:32px}}

/* ===== Typographie propagée aux composants de navigation & Bootstrap ===== */
/* Marques (navbar Bootstrap comme header Atelier) = police des titres. */
.navbar-brand,.b-header .logo{font-family:var(--p-font-title,'Fraunces',serif)}
/* Liens de nav, boutons, formulaires, breadcrumb, dropdowns = police UI (avec fallback body). */
.navbar,.nav,.nav-link,.dropdown-menu,.dropdown-item,.dropdown-toggle,.btn,.form-control,.form-select,.form-label,.form-check-label,.input-group-text,.breadcrumb,.pagination,.page-link,.list-group,.list-group-item,.toast,.alert{font-family:var(--p-font-ui,var(--p-font-body,inherit))}
/* Navs maison (header Atelier + bande hors flux + sidebar + overlay) = police UI, sauf
   l'overlay qui garde son style « affichage » (police titre). */
.b-header nav.nav a,.nav-band nav.nav a,.nav-side a{font-family:var(--p-font-ui,var(--p-font-body,inherit))}
/* Cartes Bootstrap : titres = police titre, corps = police body. */
.card-title,.card-header{font-family:var(--p-font-title,'Fraunces',serif)}
.card-body,.card-text{font-family:var(--p-font-body,inherit)}
/* Titres HTML natifs (h1..h6) hors nos blocs .b-h : heritent aussi de la police titre. */
h1,h2,h3,h4,h5,h6{font-family:var(--p-font-title,'Fraunces',serif)}


.atl-a8vKBkIz .navbar{background:#d4e0d4!important}
[data-anim]{opacity:0;transition-property:opacity,transform;transition-timing-function:cubic-bezier(.2,.7,.2,1);transition-duration:600ms}
[data-anim="fade-up"]{transform:translateY(var(--anim-d,28px))}[data-anim="fade-down"]{transform:translateY(calc(-1 * var(--anim-d,28px)))}
[data-anim="zoom"]{transform:scale(.92)}[data-anim="slide-left"]{transform:translateX(var(--anim-d,40px))}[data-anim="slide-right"]{transform:translateX(calc(-1 * var(--anim-d,40px)))}
.anim-in{opacity:1!important;transform:none!important}
@media(prefers-reduced-motion:reduce){[data-anim]{opacity:1!important;transform:none!important}}