/* construires.fr — films animés : polices Geist (hébergées sur le site), styles du moteur de la maison signature limités au film (.ft), habillage des films. */
@font-face{font-family:"Geist";font-style:normal;font-weight:100 900;font-display:swap;src:url(polices/geist-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Geist";font-style:normal;font-weight:100 900;font-display:swap;src:url(polices/geist-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Geist Mono";font-style:normal;font-weight:100 900;font-display:swap;src:url(polices/geist-mono-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Geist Mono";font-style:normal;font-weight:100 900;font-display:swap;src:url(polices/geist-mono-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
.ft .scene{position:relative;user-select:none;-webkit-user-select:none}
.ft .scene svg{width:100%;height:auto;overflow:visible}
.ft .scene .calque{position:absolute;inset:0;pointer-events:none}
.ft .iso polygon,.ft .iso path,.ft .iso line,.ft .iso polyline,.ft .iso rect,.ft .iso ellipse,.ft .iso circle{stroke-linejoin:round;stroke-linecap:round}
.ft .iso .local *{vector-effect:non-scaling-stroke}
.ft .iso .t{stroke:var(--plan-encre);stroke-width:1.15}
.ft .iso .t-fin{stroke:var(--plan-encre);stroke-width:.7;stroke-opacity:.55}
.ft .iso .mur-clair{fill:#FFFFFF}
.ft .iso .mur-ombre{fill:#E3E9F3}
.ft .iso .mur-dessus{fill:#F3F6FA}
.ft .iso .toit-avant{fill:#56698C}
.ft .iso .toit-arriere{fill:#3F4E6B}
.ft .iso .rive{fill:#2B354B}
.ft .iso .vitre{fill:#D2E2F4}
.ft .iso .vitre-ombre{fill:#B9CCE6}
.ft .iso .porte{fill:#3B4045}
.ft .iso .feuille-dessus{fill:#FFFFFF}
.ft .iso .feuille-gauche{fill:#EEF1F6}
.ft .iso .feuille-droite{fill:#E1E6EE}
.ft .iso .grille{stroke:var(--plan-grille);stroke-width:.8}
.ft .iso .grille-forte{stroke:var(--plan-grille-forte);stroke-width:.9}
.ft .iso .parcelle{fill:#E4F1E8}
.ft .iso .limite{fill:none;stroke:var(--plan-encre);stroke-width:1.3;stroke-dasharray:9 3 2 3}
.ft .iso .cadastre{fill:none;stroke:#B7C3D6;stroke-width:.9}
.ft .iso .voisin{fill:url(#hachures);stroke:#9AA8BE;stroke-width:.8}
.ft .iso .rue{fill:#E9EDF2}
.ft .iso .rue-axe{stroke:#FFFFFF;stroke-width:1.6;stroke-dasharray:10 8}
.ft .iso .trottoir{fill:#F4F6F9}
.ft .iso .terrasse{fill:#EAD9C2}
.ft .iso .ombre-sol{fill:#16213A;fill-opacity:.11}
.ft .iso .projet{fill:var(--orange-doux);stroke:var(--orange);stroke-width:1.5}
.ft .iso .projet-ombre{fill:#F9CDB1;stroke:var(--orange);stroke-width:1.5}
.ft .iso .projet-fort{fill:var(--orange);stroke:var(--orange-fonce);stroke-width:1.2}
.ft .iso .projet-trait{fill:none;stroke:var(--orange);stroke-width:1.6}
.ft .iso .eau{fill:#8FC0EE}
.ft .iso .eau-bord{fill:#6FA6DE}
.ft .iso .margelle{fill:#F6F2EA}
.ft .iso .bois{fill:#E8D2B3}
.ft .iso .bois-ombre{fill:#D8BC97}
.ft .iso .panneau{fill:#2E4E8F}
.ft .iso .panneau-ligne{stroke:#7FA0DA;stroke-width:.7}
.ft .iso .cote-ligne{stroke:var(--plan-encre);stroke-width:1}
.ft .iso .cote-rappel{stroke:var(--plan-encre);stroke-width:.7;stroke-opacity:.6}
.ft .iso .cote-fond{fill:#FFFFFF;stroke:var(--plan-encre);stroke-width:.8}
.ft .iso .cote-texte{font:600 10.5px var(--mono);fill:var(--plan-encre)}
.ft .iso .cote.orange .cote-ligne,.ft .iso .cote.orange .cote-rappel{stroke:var(--orange-fonce)}
.ft .iso .cote.orange .cote-fond{stroke:var(--orange);fill:#FFF8F3}
.ft .iso .cote.orange .cote-texte{fill:var(--orange-fonce)}
.ft .iso .rue-nom{font:600 9px var(--mono);letter-spacing:.18em;fill:#8E9AAF}
.ft .iso .nord{font:700 9px var(--mono);fill:var(--plan-encre)}
.ft .iso .cache{opacity:0}
.ft .iso .apparait{transition:opacity .5s var(--eo),transform .6s var(--ressort)}
.ft .iso .trace{stroke-dasharray:1;stroke-dashoffset:1}
.ft .iso .trace.joue{transition:stroke-dashoffset 1.1s var(--eo);stroke-dashoffset:0}

.ft .souris{position:absolute;left:0;top:0;width:22px;height:22px;z-index:20;pointer-events:none;transform:translate(-100px,-100px);transition:transform .7s var(--eo),opacity .3s;filter:drop-shadow(0 2px 3px rgba(22,33,58,.35))}
.ft .souris svg{width:22px;height:22px}
.ft .souris .onde{position:absolute;left:-13px;top:-13px;width:26px;height:26px;border-radius:99px;border:2px solid var(--bleu);opacity:0}
.ft .souris.clic .onde{animation:onde .55s var(--eo)}
.ft .souris.clic svg{animation:appui .3s var(--eo)}
@keyframes onde{0%{transform:scale(.3);opacity:.9}100%{transform:scale(1.6);opacity:0}}
@keyframes appui{50%{transform:scale(.86)}}
.ft .bulle{position:absolute;display:inline-flex;align-items:center;gap:7px;padding:6px 11px;border-radius:999px;background:var(--encre);color:#fff;font:600 12.5px var(--sans);white-space:nowrap;box-shadow:0 8px 20px -10px rgba(22,33,58,.6);opacity:0;transform:translateY(6px) scale(.96);transition:opacity .35s var(--eo),transform .45s var(--ressort)}
.ft .bulle.vue{opacity:1;transform:none}
.ft .bulle.vert{background:var(--vert)}
.ft .bulle.orange{background:var(--orange)}
.ft .bulle.blanc{background:#fff;color:var(--encre);box-shadow:0 0 0 1px var(--trait),0 10px 24px -12px rgba(22,33,58,.4)}
.ft .bulle svg{width:14px;height:14px}
/* construires.fr — film « terrasse en béton » : charte des propositions visuelles (Geist, couleurs des démarches),
   styles du moteur de la maison signature limités au film (.ft) pour ne pas toucher au reste du site. */
.ft{--papier:#F6F7F9;--feuille:#FFFFFF;--encre:#16213A;--gris:#4A5468;--gris-clair:#8A93A6;--trait:#E2E6EC;--doux:#EDF0F4;
  --bleu:#2D5BA3;--orange:#EE6A1F;--orange-fonce:#B54A0C;--orange-doux:#FDE9DC;--vert:#1D7650;--vert-doux:#E2F0E8;
  --ambre:#9A5B06;--ambre-doux:#FBEFD9;--pc:#1E437F;--pc-doux:#DCE6F7;--dp:#146B3A;--dp-doux:#DDF3E6;--aucune:#3D4A5C;--aucune-doux:#E6EAF0;
  --plan-encre:#1E3A6E;--plan-grille:#E4EBF6;--plan-grille-forte:#D2DDEE;
  --eo:cubic-bezier(0.23,1,0.32,1);--ressort:cubic-bezier(0.34,1.56,0.64,1);
  --sans:"Geist","Helvetica Neue",Arial,sans-serif;--mono:"Geist Mono",Menlo,Consolas,monospace;
  margin:0 0 1.75rem;padding:14px;background:var(--papier);border:1px solid var(--trait);border-radius:20px;
  color:var(--encre);font:15px/1.5 var(--sans);-webkit-font-smoothing:antialiased}
.ft *{box-sizing:border-box}
.ft p{margin:0}
.ft button{all:unset;box-sizing:border-box;cursor:pointer}

/* en-tête : surtitre et étapes */
.ft-tete{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin:0 0 12px}
.ft-sur{font:500 11.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--bleu);display:flex;align-items:center;gap:10px}
.ft-sur::before{content:"";width:22px;height:1.5px;background:currentColor}
.ft-etapes{display:flex;gap:4px;margin:0;padding:0;list-style:none;min-width:0;overflow-x:auto;scrollbar-width:none}
.ft-etapes::-webkit-scrollbar{display:none}
.ft-etapes li{margin:0;padding:0}
.ft-etapes li::before{content:none}
.ft-etapes button{display:flex;align-items:center;gap:7px;padding:6px 12px 6px 7px;border-radius:999px;font:500 13.5px/1.2 var(--sans);color:var(--gris);white-space:nowrap;transition:background .2s var(--eo),color .2s var(--eo)}
.ft-etapes button b{font:600 11px/1 var(--mono);width:20px;height:20px;border-radius:999px;display:grid;place-items:center;background:var(--doux);color:var(--gris)}
.ft-etapes button:hover{background:var(--doux);color:var(--encre)}
.ft-etapes button[aria-current="step"]{background:var(--encre);color:#fff}
.ft-etapes button[aria-current="step"] b{background:rgba(255,255,255,.16);color:#fff}
.ft-etapes button:focus-visible{outline:2px solid var(--bleu);outline-offset:2px}

/* scène (3D ou coupe) et panneau */
.ft-corps{display:grid;grid-template-columns:minmax(0,1fr) 200px;gap:12px;align-items:stretch}
.ft-vues{display:grid;background:var(--feuille);border:1px solid var(--trait);border-radius:16px;overflow:hidden;min-width:0}
.ft-vues>*{grid-area:1/1;min-width:0;transition:opacity .55s var(--eo)}
.ft-coupe{opacity:0;pointer-events:none}
.ft[data-vue="coupe"] .ft-iso{opacity:0}
.ft[data-vue="coupe"] .ft-coupe{opacity:1}
.ft-coupe svg{display:block;width:100%;height:auto}
.ft-panneau{display:flex;flex-direction:column;gap:14px;background:var(--feuille);border:1px solid var(--trait);border-radius:16px;padding:14px}
.ft-mesure span{display:block;font:500 10.5px/1.4 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--gris-clair)}
.ft-mesure b{display:block;font-weight:600;font-size:25px;line-height:1.15;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--encre)}
.ft-mesure small{display:block;font-size:12.5px;color:var(--gris);line-height:1.35;min-height:2.7em}
.ft-verdict{border-radius:12px;padding:10px 12px;transition:background-color .35s var(--eo),color .35s var(--eo)}
.ft-verdict b{display:block;font-size:15.5px;font-weight:600;line-height:1.25}
.ft-verdict small{display:block;font-size:12.5px;font-weight:500;line-height:1.35;margin-top:3px;opacity:.9}
.ft-verdict[data-cle="aucune"]{background:var(--aucune-doux);color:var(--aucune)}
.ft-verdict[data-cle="dp"]{background:var(--dp-doux);color:var(--dp)}
.ft-verdict[data-cle="ambre"]{background:var(--ambre-doux);color:var(--ambre)}
.ft-verdict[data-cle="pc"]{background:var(--pc-doux);color:var(--pc)}
.ft-verdict[data-cle="verifier"]{background:var(--orange-doux);color:var(--orange-fonce)}
.ft-jauge{position:relative;margin-top:auto;padding-top:13px}
.ft-jauge-titre{font:500 10.5px/1.4 var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--gris-clair);margin-bottom:6px}
.ft-barre{position:relative;display:flex;height:8px;border-radius:999px;overflow:hidden}
.ft-barre i{display:block;height:100%}
.ft-barre i:nth-child(1){flex:5;background:#C3CBD7}
.ft-barre i:nth-child(2){flex:15;background:#79B794}
.ft-barre i:nth-child(3){flex:20;background:#E2B262}
.ft-barre i:nth-child(4){flex:20;background:#7C9BCB}
.ft-curseur-zone{position:relative;height:10px}
.ft-curseur{position:absolute;bottom:1px;left:0;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:9px solid var(--encre);transform:translateX(-6px)}
.ft-graduations{position:relative;height:16px;margin-top:5px;font:500 10.5px/1.4 var(--mono);color:var(--gris)}
.ft-graduations span{position:absolute;top:0;transform:translateX(-50%)}
.ft-graduations .ft-unite{right:0;left:auto;transform:none}

/* texte de l'étape (lu aussi par les moteurs) */
.ft-textes{margin-top:12px;padding:0 4px}
.ft-textes p{font-size:15px;line-height:1.55;color:var(--encre);max-width:70ch}
.ft-textes p[hidden]{display:none}
.ft-textes strong{font-weight:600}

/* traits propres au film, dans la vue 3D */
.ft .iso .ft-60-trait{fill:var(--plan-encre);fill-opacity:.05;stroke:var(--plan-encre);stroke-width:1.3;stroke-dasharray:6 4}
.ft .iso .ft-terr polygon{transition:fill .35s var(--eo),stroke .35s var(--eo)}
.ft .iso .ft-eti-fond{fill:#fff;stroke:var(--plan-encre);stroke-width:.8}
.ft .iso .ft-eti-texte{font:600 10.5px var(--mono);fill:var(--plan-encre)}
.ft .iso .ft-aa{fill:none;stroke:var(--plan-encre);stroke-width:2.2;stroke-dasharray:16 4 3 4}
.ft .iso .ft-aa-lettre{font:700 13px var(--mono);fill:var(--plan-encre)}
.ft .iso .parcelle{transition:fill .6s var(--eo)}
.ft .iso .ft-terr.ft-eclat{animation:ft-eclat .9s var(--eo)}
@keyframes ft-eclat{0%{filter:drop-shadow(0 0 0 rgba(238,106,31,0))}35%{filter:drop-shadow(0 0 12px rgba(238,106,31,.95))}100%{filter:drop-shadow(0 0 0 rgba(238,106,31,0))}}
.ft-legende{display:grid;gap:6px;font-size:12.5px;line-height:1.3;color:var(--gris)}
.ft-legende span{display:flex;align-items:center;gap:8px}
.ft-legende i{flex:none;width:14px;height:14px;border-radius:4px;border:1.2px solid}
.ft-legende i.beige{background:#EAD9C2;border-color:#1E3A6E}
.ft-legende i.orange{background:var(--orange-doux);border-color:var(--orange)}

/* la coupe A-A' */
.ft .ftc-grille{stroke:var(--plan-grille);stroke-width:1}
.ft .ftc-grille-forte{stroke:var(--plan-grille-forte);stroke-width:1}
.ft .ftc-titre{font:600 13px var(--mono);letter-spacing:.14em;fill:var(--plan-encre)}
.ft .ftc-label{font:500 11.5px var(--mono);letter-spacing:.03em;fill:var(--gris)}
.ft .ftc-halo{paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}
.ft .ftc-trait{stroke:var(--plan-encre);stroke-width:1.3;fill-rule:nonzero}
.ft path.ftc-trait{fill:none}
.ft .ftc-remblai{fill:#F3EEE4;stroke:var(--plan-encre);stroke-width:.8}
.ft .ftc-sol{fill:none;stroke:#7A5A14;stroke-width:2.4;stroke-linejoin:round}
.ft .ftc-60{fill:none;stroke:var(--plan-encre);stroke-width:1.4;stroke-dasharray:7 5}
.ft .ftc-cote line{stroke:var(--plan-encre);stroke-width:1}
.ft .ftc-cote rect{fill:#fff;stroke:var(--plan-encre);stroke-width:.8}
.ft .ftc-cote text{font:600 11.5px var(--mono);fill:var(--plan-encre)}
.ft .ftc-cote.orange line{stroke:var(--orange-fonce)}
.ft .ftc-cote.orange rect{fill:#FFF8F3;stroke:var(--orange)}
.ft .ftc-cote.orange text{fill:var(--orange-fonce)}
.ft .ftc-puce text{font:600 12px var(--sans)}
.ft .ftc-puce.gris rect{fill:var(--aucune-doux)}
.ft .ftc-puce.gris text{fill:var(--aucune)}
.ft .ftc-puce.orange rect{fill:var(--orange)}
.ft .ftc-puce.orange text{fill:#fff}

@media (max-width:640px){
  .ft{padding:10px;border-radius:16px}
  .ft-corps{grid-template-columns:1fr}
  .ft-panneau{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}
  .ft-verdict,.ft-jauge,.ft-legende{grid-column:1/-1}
  .ft-legende{grid-template-columns:1fr 1fr}
  .ft-mesure b{font-size:21px}
  .ft .bulle{font-size:11px;white-space:normal;max-width:64%;text-align:center;line-height:1.25;padding:5px 9px}
}
@media (prefers-reduced-motion:reduce){
  .ft *,.ft *::before,.ft *::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
}

/* le thème numérote les listes des articles (.entry-content--seo ol li) et leur donne une marge : pas dans le film */
.ft .ft-etapes{margin:0;padding:0;list-style:none}
.ft .ft-etapes li{display:block;list-style:none;margin:0;padding:0}
.ft .ft-tete p,.ft .ft-corps p{margin:0}
