/* ============================================================
   CB Systems · Version mobile sur mesure
   Chargé après brique.css et polish.css : ces règles gagnent.
   Desktop intact ; tout vit sous max-width:900px / 560px.
   ============================================================ */

/* Hors mobile : les éléments mobiles n'existent pas */
.nav-burger{display:none}
.mnav{display:none}
.mcta{display:none}
body.menu-locked{overflow:hidden}

/* ============================================================
   ≤ 1023px · navigation mobile & tablette (burger, menu, barre CTA)
   ============================================================ */
@media (max-width:1023px){
  .nav-links{display:none}

  /* ---- Nav compacte : logo + burger ---- */
  .nav{grid-template-columns:auto 1fr auto;gap:10px;padding:10px 14px 10px 18px;min-height:64px}
  .nav-links{display:none}
  .nav-cta{display:none}
  .body-pad{padding-top:64px}
  :target,#pack-presence,#pack-fidelisation,#sur-mesure{scroll-margin-top:84px}

  .nav-burger{
    display:inline-flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;
    width:44px;height:44px;justify-self:end;
    border:1.5px solid rgba(236,228,216,.35);background:transparent;cursor:pointer;
    position:relative;z-index:130;transition:border-color .25s;
  }
  .nav-burger:active{border-color:var(--brick-light)}
  .nav-burger span{display:block;width:20px;height:2px;background:var(--bg);transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .2s}
  .nav-burger.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav-burger.is-open span:nth-child(2){opacity:0}
  .nav-burger.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

  /* ---- Menu plein écran, façon registre d'atelier ---- */
  .mnav{
    display:flex;flex-direction:column;
    position:fixed;inset:0;z-index:120;
    background:var(--ink);color:var(--bg);
    padding:88px 22px calc(22px + env(safe-area-inset-bottom,0px));
    opacity:0;visibility:hidden;
    transition:opacity .32s ease,visibility 0s linear .32s;
  }
  .mnav.is-open{opacity:1;visibility:visible;transition:opacity .28s ease}
  .mnav::before{ /* liseré brique en haut, rappel du bandeau */
    content:"";position:absolute;left:0;right:0;top:0;height:64px;
    border-bottom:2px solid var(--brick);pointer-events:none;
  }
  .mnav-links{display:flex;flex-direction:column;overflow-y:auto;border-top:1px solid rgba(236,228,216,.15);margin-top:6px}
  .mnav-links a{
    display:grid;grid-template-columns:36px 1fr auto;align-items:baseline;gap:14px;
    padding:15px 4px;border-bottom:1px solid rgba(236,228,216,.12);
    font-family:var(--grot);font-weight:300;font-size:clamp(24px,6.8vw,32px);
    letter-spacing:-.03em;line-height:1.05;color:var(--bg);text-transform:none;
    opacity:0;transform:translateY(14px);
    transition:opacity .4s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.22,1,.36,1);
  }
  .mnav.is-open .mnav-links a{opacity:1;transform:none}
  .mnav-num{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--brick-light)}
  .mnav-arr{font-size:17px;color:rgba(236,228,216,.72);transition:transform .25s,color .25s}
  .mnav-links a:active .mnav-arr{transform:translateX(4px);color:var(--brick-light)}
  .mnav-links a.is-current .mnav-label{font-weight:800;color:var(--brick-light)}
  .mnav-links a.is-current .mnav-num{color:var(--bg-2)}
  .mnav-foot{margin-top:auto;display:flex;flex-direction:column;gap:14px;padding-top:20px}
  .mnav-cta{
    display:flex;justify-content:center;align-items:center;gap:12px;
    background:var(--brick);color:var(--bg);border:2px solid var(--brick);
    padding:16px;font-family:var(--grot);font-weight:600;font-size:16px;letter-spacing:-.01em;
  }
  .mnav-cta:active{background:var(--brick-deep);border-color:var(--brick-deep)}
  .mnav-meta{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:rgba(236,228,216,.72)}
  .mnav-meta a{color:var(--bg-2);text-decoration:underline;text-underline-offset:3px}

  /* ---- Barre CTA fixe en bas ---- */
  .mcta{
    display:block;position:fixed;left:0;right:0;bottom:0;z-index:90;
    padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));
    transform:translateY(115%);transition:transform .4s cubic-bezier(.22,1,.36,1);
    pointer-events:none;
  }
  .mcta.is-on{transform:none;pointer-events:auto}
  .mcta-btn{
    display:flex;flex-direction:column;align-items:center;gap:2px;
    background:var(--brick);color:var(--bg);border:2px solid var(--ink);
    box-shadow:4px 4px 0 var(--ink);padding:10px 16px 12px;text-align:center;
  }
  .mcta-btn:active{background:var(--brick-deep)}
  .mcta-k{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;opacity:.78}
  .mcta-t{font-family:var(--grot);font-weight:700;font-size:16px;letter-spacing:-.01em}
  /* le footer respire au-dessus de la barre */
  .foot{padding-bottom:108px}

}

/* ============================================================
   ≤ 900px · mise en page mobile
   ============================================================ */
@media (max-width:900px){
  /* ---- Hero ---- */
  .hero{height:auto;min-height:0;padding:76px 18px 40px}
  .hero-inner{grid-template-columns:1fr;gap:28px}
  .hero-h1{font-size:clamp(38px,10.5vw,58px)}
  .hero-lede{font-size:15px;min-height:calc(1.4em * 4)}
  .hero-ctas{flex-direction:column;align-items:stretch}
  .hero-ctas .btn{width:100%;justify-content:center;text-align:center;padding:15px 14px}
  .hero-ctas .btn-primary{font-size:14px;flex-wrap:wrap;gap:8px}
  .hero-meta{gap:10px 14px}

  /* ---- Ledger (registre animé) ---- */
  .ledger-head{padding:12px 14px}
  .lrow{grid-template-columns:54px 1fr auto;gap:8px;padding:10px 14px}
  .lrow-label{font-size:12.5px}
  .lrow-stamp{right:12px;font-size:8px;padding:2px 6px}
  .ledger-summary{padding:20px 16px}
  .lsum-h{font-size:60px}
  .lsum-m{font-size:38px}
  .lsum-u{font-size:28px}
  .lsum-v{font-size:15px}
  .ledger-foot{padding:12px 14px}
  .ledger-foot-v{font-size:20px}

  /* ---- Boutons : zone de tap confortable ---- */
  .btn{padding:14px 20px}
}

/* ============================================================
   ≤ 560px · téléphone : la vraie passe sur mesure
   ============================================================ */
@media (max-width:560px){

  /* ---- Échelle typographique téléphone ---- */
  .h1{font-size:clamp(38px,11.5vw,52px)}
  .h2{font-size:clamp(29px,9vw,38px)}
  .h3{font-size:21px}
  .lede{font-size:15.5px}
  .section{padding:60px 18px}
  .section-head{margin-bottom:30px}
  .page-banner{padding:94px 18px 42px}
  .page-banner-lede{margin-top:16px}
  .container,.container-sm{padding:0 18px}
  .svc-sep-box{padding:34px 20px}

  /* ---- Slogan & marquee ---- */
  .slogan-text{font-size:clamp(21px,6.4vw,28px)}
  .mq{padding:12px 0}
  .mq-item{font-size:17px}

  /* ---- Stats : registre horizontal compact ---- */
  .stats-inner{grid-template-columns:1fr;gap:0}
  .stat{flex-direction:row;align-items:baseline;justify-content:space-between;gap:16px;padding:15px 0;border-top:1px solid var(--ink)}
  .stat:first-child{border-top:2px solid var(--ink)}
  .stat-num{font-size:28px}
  .stat-tail{font-size:11px;margin-left:4px}
  .stat-lbl{text-align:right;max-width:58%}

  /* ---- Pains ---- */
  .pain{padding:20px 0}
  .pain-title{font-size:19px}

  /* ---- Packs & bespoke ---- */
  .pack{padding:22px 18px}
  .bespoke{padding:28px 20px}
  .bespoke-end{flex-direction:column;align-items:stretch}
  .bespoke-cta{justify-content:center}
  .svc-divider{padding-top:64px}
  .svc-divider-phrase{font-size:clamp(24px,7.5vw,34px)}

  /* ---- Colonnes services ---- */
  .svc-pack-col{padding:32px 18px}
  .svc-packs-cta{padding:24px 18px}
  .svc-packs-cta .btn{width:100%;justify-content:center}

  /* ---- ROI : tuiles en damier 2×2 ---- */
  .roi-tiles{grid-template-columns:1fr 1fr}
  .roi-tile{padding:18px 14px;border-right:1px solid rgba(58,37,32,.14);border-bottom:none}
  .roi-tile:nth-child(even){border-right:none}
  .roi-tile:nth-child(-n+2){border-bottom:1px solid rgba(58,37,32,.14)}
  .roi-tile-k{font-size:30px}
  .roi-figure-num{font-size:clamp(78px,24vw,110px)}
  .roi-quote{font-size:18px}

  /* ---- Sur-mesure : faits en damier 2×2 ---- */
  .sm-facts{grid-template-columns:1fr 1fr}
  .sm-fact{padding:16px 14px;border-bottom:none;border-right:1px solid rgba(58,37,32,.14)}
  .sm-fact:nth-child(even){border-right:none}
  .sm-fact:nth-child(-n+2){border-bottom:1px solid rgba(58,37,32,.14)}
  .sm-compare-col{padding:24px 18px}
  .sm-case{padding:22px 18px;gap:16px}
  .sm-case-num{font-size:34px}
  .sm-limit{padding:20px 18px}

  /* ---- Tarifs ---- */
  .tarif-card{padding:24px 18px}
  .tarif-card-desc{min-height:0}
  .tarif-sm{padding:24px 18px}
  .tarif-sm-row{grid-template-columns:1fr;gap:4px}
  .tarif-card-foot .btn{width:100%;justify-content:center}
  .svc-bundle{padding:22px 18px}
  .svc-bundle .btn{width:100%;justify-content:center}

  /* ---- About ---- */
  .about-portrait{aspect-ratio:16/10}
  .about-text{font-size:16px}

  /* ---- Blog ---- */
  .post{padding:24px 18px;min-height:0}

  /* ---- FAQ ---- */
  .faq-q{font-size:16.5px;padding:18px 0;gap:14px}
  .faq-toggle{font-size:26px}
  .faq-a > div{font-size:14px}

  /* ---- CTA block ---- */
  .cta-block{padding:84px 18px}
  .cta-title{font-size:clamp(34px,10.5vw,48px);margin-bottom:18px}
  .cta-ctas{flex-direction:column;align-items:stretch;margin-top:28px}
  .cta-ctas .btn{width:100%;justify-content:center}

  /* ---- Contact : parcours plein écran ---- */
  .ct-progress{margin-bottom:42px}
  .ct-pipe{width:42px}
  .cal-frame{padding:16px 12px}
  .cal-mock-grid{gap:4px}
  .cal-mock-day{font-size:12px}
  .ct-slots-title{padding:18px 12px 12px;font-size:18px}
  .ct-slots-grid{padding:0 12px 16px}
  .ct-slot{padding:14px 16px}
  .cv-head{padding:12px 14px;flex-wrap:wrap;gap:6px}
  .cv-body{padding:24px 18px 18px;min-height:240px}
  .cv-q-done,.cv-q-next{inset:24px 18px}
  .cv-q-label{font-size:20px}
  .cv-input{font-size:18px}
  .cv-footer{padding:14px 18px}
  .cv-c-hero{white-space:normal;font-size:clamp(24px,7.5vw,30px)}
  .cv-c-content{padding:36px 20px 30px}
  .contact-row{grid-template-columns:1fr;gap:4px;padding:14px 0}

  /* ---- Footer ---- */
  .foot{padding:44px 18px 108px}
  .foot-cols{grid-template-columns:1fr 1fr;gap:24px 16px}
  .foot-bot{flex-direction:column;gap:6px}

  /* ---- Légal ---- */
  .legal-content{padding:40px 18px 80px}
}

/* ============================================================
   Écrans tactiles : pas d'états hover collants
   ============================================================ */
@media (hover:none){
  .pack:hover,.post:hover,.mj-card:hover,.mj-bilan-card:hover,.card:hover{transform:none;box-shadow:none}
  .sm-case:hover{transform:none;box-shadow:none;border-color:var(--rule)}
  .sm-case:hover .sm-case-col-avant{opacity:1;transform:none}
  .sm-case:hover .sm-case-col-sys{background:none}
  .svc-col-plan:hover,.svc-col-plan-best:hover{transform:none}
  .ct-slot:hover{transform:none}
  .mq-track:hover{animation-play-state:running}
}

/* ============================================================
   Mouvement réduit
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  .mnav,.mnav-links a,.mcta,.nav-burger span{transition:none}
}

/* ============================================================
   561 à 1023px · tablette
   ============================================================ */
@media (min-width:561px) and (max-width:1023px){
  .container,.container-sm{padding:0 28px}
  .hero-side .ledger{max-width:560px;margin:0 auto}
  .posts{grid-template-columns:repeat(2,1fr)}
  .cta-block{padding:96px 28px}
  .section{padding:80px 28px}
}

/* ============================================================
   Polish tactile global
   ============================================================ */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{-webkit-tap-highlight-color:rgba(122,46,35,.18)}
.mnav{overscroll-behavior:contain}
@media (hover:none){
  .btn:active,.pack-cta:active,.mnav-cta:active,.mcta-btn:active,.ct-slot:active{transform:translateY(1px)}
}
/* Très petits écrans */
@media (max-width:380px){
  .container,.container-sm{padding:0 14px}
  .hero-h1{font-size:34px}
  .cal-frame{padding:12px 8px}
  .mnav-links a{font-size:22px}
}
/* Téléphone en paysage : menu compact */
@media (max-height:480px) and (max-width:1023px){
  .mnav{padding-top:72px}
  .mnav-links a{padding:9px 4px;font-size:20px}
  .mnav-foot{padding-top:12px}
}
