
/* Pages « services », « écoles », « zone d'intervention », « avis » et tableau de bord : complète boutique.css. */
.page-top .fil{font-size:.86rem;color:var(--ink-3);margin-bottom:18px}
.page-top .fil a{color:var(--ink-3)}
.page-top .fil a:hover{color:var(--blue)}
.page-top .fil span{margin:0 8px;color:var(--ink-3)}
.page-top .contact-rapide{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.page-top .contact-rapide .btn{padding:13px 22px}
/* Sur téléphone, un bouton par ligne : la disposition ne change plus quand la police arrive (pas de saut). */
@media(max-width:680px){.page-top .contact-rapide{flex-direction:column;align-items:flex-start}}

.contenu{padding:56px 0 24px}
.contenu .wrap{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:56px;align-items:start}
.contenu h2{font-size:1.45rem;margin:0 0 18px}
.contenu section + section{margin-top:52px}
.contenu p{max-width:66ch}
.contenu .wrap.une-colonne{grid-template-columns:1fr}
.avis-bouton{margin-top:28px}

.puces{list-style:none;display:grid;gap:12px}
.puces li{position:relative;padding-left:26px;max-width:66ch}
.puces li::before{content:'';position:absolute;left:0;top:.6em;width:12px;height:12px;border-radius:50%;
  background:var(--blue-wash);border:2px solid var(--blue)}

.etapes{display:grid;gap:0;border-left:2px solid var(--line);margin-left:6px}
.etape{position:relative;padding:0 0 26px 28px}
.etape:last-child{padding-bottom:0}
.etape::before{content:'';position:absolute;left:-8px;top:6px;width:14px;height:14px;border-radius:50%;background:var(--carte);border:2px solid var(--blue)}
.etape b{display:block;font-family:'Space Grotesk',sans-serif;font-size:1.05rem;color:var(--ink);margin-bottom:5px}
.etape p{color:var(--ink-3);font-size:.97rem}

.deux{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.deux h3{font-size:1rem;margin-bottom:12px;color:var(--ink)}
.deux ul{list-style:none;display:grid;gap:9px;font-size:.95rem;color:var(--ink-2)}
.deux li{padding-left:22px;position:relative}
.deux .oui li::before{content:'✓';position:absolute;left:0;color:var(--green);font-weight:700}
.deux .non li::before{content:'·';position:absolute;left:4px;color:var(--ink-3);font-weight:700}

/* colonne de droite : prix du catalogue */
.lateral{position:sticky;top:94px}
.tarifs-cote{background:var(--zone);border:1px solid var(--line);border-radius:var(--radius);padding:24px}
.tarifs-cote h2{font-size:1.05rem;margin-bottom:6px}
.tarifs-cote .note{font-size:.84rem;color:var(--ink-3);margin-bottom:14px}
.tarifs-cote ul{list-style:none}
.tarifs-cote li{display:grid;grid-template-columns:1fr auto;gap:4px 14px;padding:13px 0;border-top:1px solid var(--line);align-items:center}
.tarifs-cote li b{font-weight:600;color:var(--ink);font-size:.95rem}
.tarifs-cote li small{grid-column:1;font-size:.82rem;color:var(--ink-3)}
.tarifs-cote .montant{grid-row:1/3;text-align:right;font-family:'Space Grotesk',sans-serif;font-weight:700;color:var(--ink);font-size:1.15rem;white-space:nowrap}
.tarifs-cote .montant .des{font-size:.75rem;font-weight:500;color:var(--ink-3);margin-right:3px}
.tarifs-cote .montant .ht{display:block;font-family:'IBM Plex Sans',sans-serif;font-size:.74rem;font-weight:400;color:var(--ink-3)}
.tarifs-cote .montant .devis{font-size:.95rem;color:var(--blue);font-weight:600}
.tarifs-cote .btn{width:100%;margin-top:16px}
.tarifs-cote .lien{display:block;text-align:center;font-size:.88rem;color:var(--blue);margin-top:12px;text-decoration:underline}
.contact-cote{margin-top:18px;padding:22px 24px;border:1px solid var(--line);border-radius:var(--radius)}
.contact-cote b{display:block;font-size:.95rem;color:var(--ink);margin-bottom:8px}
.contact-cote a{display:block;color:var(--ink-2);font-size:.95rem;padding:4px 0}
.contact-cote a.tel{font-family:'Space Grotesk',sans-serif;font-size:1.35rem;color:var(--ink);font-weight:700}
.contact-cote small{display:block;font-size:.82rem;color:var(--ink-3);margin-top:8px}

/* questions */
.questions{padding:24px 0 72px}
.questions h2{font-size:1.45rem;margin-bottom:10px}
.questions details{border-bottom:1px solid var(--line);max-width:820px}
.questions summary{cursor:pointer;list-style:none;padding:18px 40px 18px 0;position:relative;font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:1.02rem;color:var(--ink)}
.questions summary::-webkit-details-marker{display:none}
.questions summary::after{content:'';position:absolute;right:8px;top:50%;width:10px;height:10px;border-right:2px solid var(--blue);border-bottom:2px solid var(--blue);transform:translateY(-70%) rotate(45deg);transition:transform .2s}
.questions details[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
.questions details p{padding:0 40px 20px 0;color:var(--ink-3)}

/* liens vers les autres pages */
.voir-aussi{background:var(--zone);border-top:1px solid var(--line);padding:44px 0}
.voir-aussi h2{font-size:1.05rem;margin-bottom:16px}
.voir-aussi ul{list-style:none;display:flex;flex-wrap:wrap;gap:10px}
.voir-aussi a{display:inline-block;padding:10px 16px;border:1px solid var(--line);border-radius:999px;background:var(--carte);font-size:.93rem;color:var(--ink-2)}
.voir-aussi a:hover{border-color:var(--blue);color:var(--blue)}
.voir-aussi + .partager{border-top:none;padding-top:0}

/* zone d'intervention */
.groupe-zone{padding:22px 0 26px;border-top:1px solid var(--line)}
.groupe-zone:first-of-type{border-top:none;padding-top:0}
.groupe-zone h3{font-size:1.1rem;margin-bottom:8px}
.groupe-zone p{color:var(--ink-2);font-size:.98rem}
.communes{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.communes li{font-size:.86rem;padding:6px 12px;border-radius:999px;background:var(--carte);border:1px solid var(--line);color:var(--ink-2)}
.communes li b{color:var(--ink);font-weight:600}
.communes li.plus{border-style:dashed}
.table-zone{width:100%;border-collapse:collapse;font-size:.92rem}
.table-zone th,.table-zone td{text-align:left;padding:9px 6px;border-bottom:1px solid var(--line)}
.table-zone th{color:var(--ink);font-weight:600;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase}
.table-zone .ok{color:var(--vert-texte);font-weight:600}
.table-zone .sup{color:var(--ink-3)}

/* avis */
.avis-vide{max-width:680px;border:1px dashed var(--line);border-radius:var(--radius);padding:30px;background:var(--zone)}
.avis-vide h2{font-size:1.2rem;margin-bottom:10px}
.avis-vide p{color:var(--ink-2)}
.avis-vide .btn{margin-top:18px}
.avis-liste{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.avis-carte{border:1px solid var(--line);border-radius:var(--radius);padding:24px;background:var(--carte);display:flex;flex-direction:column}
.avis-carte .note{font-family:'IBM Plex Mono',monospace;font-size:.8rem;letter-spacing:.14em;color:var(--blue);margin-bottom:12px}
.avis-carte blockquote{flex:1;color:var(--ink-2);font-size:1rem}
.avis-carte footer{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);font-size:.88rem;color:var(--ink-3)}
.avis-carte footer b{color:var(--ink);font-weight:600}
.filtres{display:flex;align-items:center;gap:12px;margin:0 0 10px}
.filtres[hidden]{display:none}
.filtre-recherche{position:relative;flex:1 1 220px;min-width:190px;max-width:300px}
.filtre-recherche .icone-loupe{position:absolute;left:12px;top:50%;width:17px;height:17px;transform:translateY(-50%);color:var(--ink-3);pointer-events:none}
.filtre-recherche input{width:100%;font:inherit;font-size:.95rem;color:var(--ink);background:var(--carte);border:1px solid var(--line);border-radius:10px;padding:10px 12px 10px 38px}
.filtre-recherche input:focus{outline:3px solid var(--accent-2);outline-offset:1px}
.pastilles{display:flex;gap:6px;flex:0 1 auto;overflow-x:auto;scrollbar-width:thin;padding:2px}
.pastille{flex:none;font:inherit;font-size:.84rem;font-weight:500;white-space:nowrap;color:var(--ink-2);background:var(--carte);border:1px solid var(--line);border-radius:999px;padding:6px 10px;cursor:pointer}
.pastille:hover{border-color:var(--blue)}
.pastille[aria-pressed="true"]{background:var(--bouton);border-color:var(--bouton);color:var(--sur-bouton)}
.effacer-filtres{flex:none;font:inherit;font-size:.88rem;color:var(--blue);background:none;border:0;text-decoration:underline;cursor:pointer;padding:6px 4px}
.effacer-filtres[hidden]{display:none}
.compte-tarifs{font-size:.88rem;color:var(--ink-3);margin-bottom:22px}
.aucun-tarif{padding:18px 0;color:var(--ink-2)}
.aucun-tarif a{color:var(--blue);text-decoration:underline}
@media(max-width:640px){.filtres{flex-direction:column;align-items:stretch}.filtre-recherche{flex:none;max-width:none}.effacer-filtres{align-self:flex-start}}
.avis-resume{font-size:1rem;color:var(--ink-2);margin-bottom:26px}
.avis-resume b{color:var(--ink)}
.offre{display:flex;gap:14px;align-items:flex-start;max-width:720px;margin-top:22px;padding:14px 18px;background:var(--carte);border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:10px;font-size:.95rem}
.offre b{color:var(--ink)}
.offre a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}
.bientot{display:block;max-width:720px;margin:0 0 18px;padding:12px 18px;background:var(--alerte-fond);border:1px solid var(--alerte-bord);border-left:4px solid var(--alerte-trait);border-radius:10px;font-size:1rem;color:var(--alerte-texte)}
.bientot b{color:var(--alerte-texte)}
.bientot .icone-info{width:18px;height:18px;vertical-align:-3px;margin-right:6px;color:var(--alerte-trait)}

/* VoipVigo pour les communes : tableau gratuit / payant, texte de la licence, étapes du formulaire */
.table-gratuit{width:100%;border-collapse:collapse;font-size:.94rem}
.table-gratuit th,.table-gratuit td{text-align:left;padding:11px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.table-gratuit th{color:var(--ink);font-weight:600;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase}
.table-gratuit td:first-child{color:var(--ink);font-weight:500}
.table-gratuit .gratuit{color:var(--vert-texte);font-weight:700}
.table-gratuit .payant{color:var(--ink-3)}
.sous-table{margin-top:14px;font-size:.93rem;color:var(--ink-2)}
.licence{max-width:760px}
.licence h2{font-size:1.15rem;margin:34px 0 10px}
.licence p,.licence li{color:var(--ink-2);margin-bottom:10px}
.licence ol{padding-left:22px}
.licence .version{font-size:.85rem;color:var(--ink-3);margin-bottom:22px;overflow-wrap:anywhere}
.licence code{font-family:'IBM Plex Mono',monospace;font-size:.8rem}
/* Tarifs des communes : grille à trois colonnes de prix, en cartes sur téléphone */
.note-tarifs{font-size:.93rem;color:var(--ink-2);margin-bottom:16px}
.table-tarifs{width:100%;border-collapse:collapse;font-size:.93rem}
.table-tarifs th,.table-tarifs td{text-align:left;padding:14px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.table-tarifs th{color:var(--ink);font-weight:600;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase}
.table-tarifs th:not(:first-child),.table-tarifs td:not(:first-child){text-align:right;white-space:nowrap}
.table-tarifs td:first-child b{color:var(--ink);font-weight:600}
.table-tarifs td:first-child p{max-width:58ch;margin-top:4px;color:var(--ink-3);font-size:.87rem}
.table-tarifs .unite{margin-left:8px;font-size:.78rem;color:var(--ink-3)}
.table-tarifs .montant{font-family:'Space Grotesk',sans-serif;font-weight:700;color:var(--ink);font-size:1.05rem}
.table-tarifs .montant .ht{display:block;font-family:'IBM Plex Sans',sans-serif;font-size:.74rem;font-weight:400;color:var(--ink-3)}
.table-tarifs .col-fondatrice .montant{color:var(--blue)}
.table-tarifs .col-normal .montant{color:var(--ink-2);font-weight:500}
.table-tarifs .idem{font-size:.8rem;color:var(--ink-3)}
.deux-blocs{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.deux-blocs h2{font-size:1.2rem}
.appel{padding-top:8px;border-top:1px solid var(--line)}
.suite-etapes{margin:18px 0 0 18px;display:grid;gap:10px;font-size:.93rem}
.suite-etapes li{color:var(--sur-nuit-doux)}

@media(max-width:900px){
  .contenu .wrap{grid-template-columns:1fr;gap:40px}
  .lateral{position:static}
  .deux{grid-template-columns:1fr}
  .avis-liste{grid-template-columns:1fr}
  .table-gratuit thead{display:none}
  .table-gratuit tr{display:block;padding:10px 0;border-bottom:1px solid var(--line)}
  .table-gratuit td{display:block;border:none;padding:2px 0}
  .deux-blocs{grid-template-columns:1fr;gap:36px}
  .table-tarifs thead{display:none}
  .table-tarifs tr{display:block;padding:14px 0;border-bottom:1px solid var(--line)}
  .table-tarifs td{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border:none;padding:3px 0}
  .table-tarifs td:first-child{display:block;margin-bottom:6px}
  .table-tarifs td:not(:first-child)::before{content:attr(data-titre);font-size:.84rem;color:var(--ink-3);white-space:normal;text-align:left}
  .table-tarifs td:has(.idem){display:none}
}

/* Inscription des communes : sur téléphone, le formulaire passe avant l'encadré « Et ensuite ». */
#zone-inscription .recap{order:1}
