/* logiciel-gestion-de-chantier.fr — famille V1-chantier, habillage violine (hue 335) */
@font-face{
  font-family:"Lexend Deca"; font-style:normal; font-weight:200 800; font-display:swap;
  src:url("/fonts/lexend-deca-latin-variable.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;
}
:root{
  --chn-ink:        oklch(0.185 0.028 335);
  --chn-ink-2:      oklch(0.300 0.030 335);
  --chn-surface:    oklch(0.255 0.024 335);
  --chn-paper:      oklch(0.975 0.008 335);
  --chn-paper-2:    oklch(0.935 0.014 335);
  --jln-accent:      oklch(0.480 0.130 335);
  --jln-accent-deep: oklch(0.340 0.115 335);
  --jln-accent-soft: oklch(0.820 0.075 335);
  --chn-line:       oklch(0.360 0.018 335);
  --chn-line-ink:   oklch(0.420 0.022 335);
  --chn-white:      oklch(0.99 0.004 335);
  --font-title: "Lexend Deca", system-ui, sans-serif;
  --font-body: "Lexend Deca", system-ui, sans-serif;
  --chn-radius: 0px;
  --chn-maxw: 1180px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--chn-paper); color:var(--chn-ink);
  font-family:var(--font-body); font-weight:400; line-height:1.55; font-size:17px;
}
h1,h2,h3{font-family:var(--font-title); line-height:1.14; margin:0 0 .5em}
h1{font-size:clamp(1.7rem, 4vw, 2.9rem); font-weight:800}
h1 em.jln-w800{font-style:normal; font-weight:800}
h1 em.jln-w300{font-style:normal; font-weight:300; color:var(--jln-accent-soft)}
.on-dark h1{color:var(--chn-white)}
h2{font-size:clamp(1.3rem, 2.3vw, 1.7rem); font-weight:800; margin-top:0}
h3{font-size:1.02rem; font-weight:700}
p{margin:0 0 1em}
a{color:var(--jln-accent-deep)}
.on-dark a{color:var(--jln-accent-soft)}
ul{margin:0 0 1em; padding-left:1.2em}
img{max-width:100%; height:auto; display:block; border-radius:0}
.chn-skip{position:absolute; left:-999px; top:0; background:var(--chn-white); padding:.6em 1em; z-index:100}
.chn-skip:focus{left:8px; top:8px}
.chn-wrap{max-width:var(--chn-maxw); margin:0 auto; padding:0 1.25rem}
.sr-only{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap}
.tab-nums{font-variant-numeric:tabular-nums}

/* topbar */
.chn-topbar{background:var(--chn-surface); color:var(--chn-white); font-size:.8rem; border-bottom:1px solid var(--chn-line)}
.chn-topbar-in{display:flex; justify-content:space-between; gap:1rem; padding:.3rem 1.25rem; flex-wrap:wrap}
.chn-topbar a{color:var(--chn-white)}
.chn-topbar-in span{display:none}
@media (min-width:560px){.chn-topbar-in span{display:inline}}

/* header */
.chn-header{background:var(--chn-surface); border-bottom:1px solid var(--chn-line); position:sticky; top:0; z-index:40}
.chn-header-in{display:flex; align-items:center; gap:1rem; padding:.6rem 1.25rem; flex-wrap:nowrap; position:relative}
.chn-logo{font-family:var(--font-title); font-weight:800; font-size:1.05rem; color:var(--chn-white); text-decoration:none;
  margin-right:auto; flex-shrink:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}

.chn-burger{display:none; flex-direction:column; justify-content:center; align-items:center; gap:4px; width:44px; height:44px;
  border:1.5px solid var(--chn-line); border-radius:0; background:transparent; cursor:pointer; flex-shrink:0; padding:0}
.chn-burger-bar{display:block; width:16px; height:2px; background:var(--chn-white); margin:0 auto}
.chn-nav{display:flex; align-items:center; min-width:0; overflow-x:auto; -webkit-overflow-scrolling:touch}
.chn-nav-list{list-style:none; display:flex; gap:1.1rem; margin:0; padding:0; align-items:center; flex-wrap:nowrap; white-space:nowrap}
.chn-nav-list > li > a{color:var(--chn-white); text-decoration:none; font-weight:500; font-size:.92rem}
.chn-cta-header-short{display:none}

@media (max-width:640px){
  .chn-burger{display:flex}
  .chn-cta-header-full{display:none}
  .chn-cta-header-short{display:inline}
  .chn-nav{display:none; position:absolute; top:100%; left:0; right:0; background:var(--chn-surface);
    border-bottom:1px solid var(--chn-line); overflow-x:visible}
  .chn-nav.is-open{display:block}
  .chn-nav-list{flex-direction:column; align-items:stretch; gap:0; white-space:normal; padding:.5rem 1.25rem 1rem}
  .chn-nav-list > li > a, .chn-nav-drop-btn{display:block; padding:.6rem 0; font-size:1rem}
  .chn-nav-sub{position:static; box-shadow:none; border:0; padding:0 0 0 1rem}
}
@media (max-width:400px){
  .chn-header-in{gap:.5rem; padding:.5rem .75rem}
  .chn-logo{max-width:48vw; font-size:.82rem}
  .chn-cta-header{padding:.45rem .55rem; font-size:.8rem}
}
.chn-nav-drop{position:relative}
.chn-nav-drop-btn{background:none; border:0; font-family:var(--font-body); font-weight:500; font-size:.92rem; color:var(--chn-white); cursor:pointer; padding:.3rem 0}
.chn-nav-sub{list-style:none; margin:0; padding:.5rem; position:absolute; top:100%; left:0; background:var(--chn-surface); border:1px solid var(--chn-line); border-radius:0; min-width:250px; display:none}
.chn-nav-drop:hover .chn-nav-sub, .chn-nav-drop:focus-within .chn-nav-sub{display:block}
.chn-nav-sub li a{display:block; padding:.4rem .5rem; color:var(--chn-white); text-decoration:none; font-size:.9rem}
.chn-nav-sub li a:hover{background:var(--chn-ink-2)}
.chn-cta-header{margin-left:.5rem; white-space:nowrap; flex-shrink:0; flex-grow:0}

/* buttons — trait géométrique, aucun rayon, aucune ombre. Accent réservé aux kickers/badges,
   JAMAIS un bouton plein (règle §3.3 de l'habillage) : les CTA restent encre pleine. */
.chn-btn{display:inline-block; font-family:var(--font-body); font-weight:700; text-decoration:none; padding:.72rem 1.3rem; border-radius:0; border:0; cursor:pointer; font-size:1rem}
.jln-btn-accent{background:var(--chn-ink); color:var(--chn-white)}
.jln-btn-accent:hover{background:var(--jln-accent-deep); color:var(--chn-white)}
.on-dark .jln-btn-accent{background:var(--chn-white); color:var(--chn-ink)}
.on-dark .jln-btn-accent:hover{background:var(--jln-accent-soft); color:var(--chn-ink)}

/* bands */
.chn-band{padding:2.6rem 0}
.chn-band-alt{background:var(--chn-paper-2)}
.chn-band-dark{background:var(--chn-ink); color:var(--chn-white); padding:2.2rem 0}
.chn-band-dark h1, .chn-band-dark h2, .chn-band-dark p{color:var(--chn-white)}

/* photo bands — géneriques de chantier, jamais un chantier nommé (cf. FACTS/habillage §1.3) */
/* hauteur FIXE (pas max-height) sur le conteneur : un <img> à height:100% dans un parent sans
   hauteur déterminée retombe sur sa hauteur intrinsèque (ratio 1600x1000) et peut dépasser le
   cadre en flux normal malgré overflow:hidden, chevauchant le texte qui suit (G39). */
.chn-photo-band{position:relative; height:340px; overflow:hidden}
.chn-photo-band img{display:block; width:100%; height:100%; object-fit:cover; filter:saturate(.92)}
@media (max-width:640px){.chn-photo-band{height:200px}}
.chn-segment-photo{height:280px; overflow:hidden; border-top:1px solid var(--chn-line); border-bottom:1px solid var(--chn-line)}
.chn-segment-photo img{display:block; width:100%; height:100%; object-fit:cover}
@media (max-width:640px){.chn-segment-photo{height:170px}}

.chn-relance{background:var(--chn-paper-2)}
.chn-relance-in{display:grid; grid-template-columns:1.1fr .9fr; gap:2rem; align-items:center}
@media (max-width:760px){.chn-relance-in{grid-template-columns:1fr}}

.chn-kicker{text-transform:uppercase; letter-spacing:.09em; font-size:.76rem; color:var(--jln-accent); font-weight:700; margin:0 0 .5em}
.on-dark .chn-kicker{color:var(--jln-accent-soft)}
.chn-lede{font-size:1.02rem; max-width:62ch; color:oklch(0.38 0.02 335); margin-bottom:.7em}
.on-dark .chn-lede{color:oklch(0.88 0.02 335)}

/* hero accueil — composition EMPILÉE (pas de split copie/form côte à côte, gate parc G37 :
   3 sites frères du lot partagent déjà l'archétype "split-form-right", cf. anti-footprint).
   Copie pleine largeur sur la photo, puis un BANDEAU de formulaire horizontal en dessous, avec
   le chiffre géant en marge (invariant V1) posé à côté du form plutôt qu'en colonne de texte. */
.chn-hero{position:relative; padding:1.2rem 0 .85rem; overflow:hidden; isolation:isolate}
.chn-hero-bg{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; border-radius:0}
.chn-hero-overlay{position:absolute; inset:0; z-index:-1; background:linear-gradient(180deg, rgba(26,14,24,.55) 0%, rgba(26,14,24,.88) 100%)}
.chn-hero-copy-wide{max-width:52rem}
.chn-hero-copy-wide h1{margin-bottom:.3em; font-size:clamp(1.6rem, 3.4vw, 2.5rem)}
.chn-hero-copy-wide .chn-lede{margin-bottom:0}
.chn-hero-formband{margin-top:.7rem}
.chn-hero-formband-in{display:flex; align-items:center; gap:2rem; background:var(--chn-white); border:1px solid var(--chn-line-ink); padding:.55rem 1.4rem}
.chn-hero-stat{display:flex; flex-direction:column; gap:.35rem; max-width:190px; flex-shrink:0; color:var(--chn-ink)}
.jln-hero-num{font-family:var(--font-title); font-weight:800; font-size:3rem; line-height:1; color:var(--jln-accent-deep)}
.chn-hero-stat span:last-child{font-size:.78rem; color:oklch(0.42 0.02 335)}
.chn-hero-formwrap{flex:1 1 auto; min-width:0}
.chn-hero-formwrap .chn-form{max-width:460px; gap:.4rem}
.chn-hero-formwrap .chn-field{gap:.08rem}
.chn-hero-formwrap .chn-field label{font-size:.78rem}
.chn-hero-formwrap .chn-field input{padding:.4rem .6rem}
.chn-hero-formwrap .chn-btn{padding:.5rem 1.1rem}
.chn-hero-formwrap .chn-consent{font-size:.76rem}
.chn-hero-formwrap .chn-reassure{font-size:.72rem; margin-top:.2rem}
@media (max-width:900px){
  .chn-hero{padding:1.1rem 0 .9rem}
  .chn-topbar-in{padding:.2rem 1.25rem}
  .chn-header-in{padding:.4rem 1.25rem}
  .chn-hero-copy-wide h1{font-size:1.35rem; margin-bottom:.25em}
  .chn-hero-copy-wide .chn-lede{font-size:.9rem; margin-bottom:.4em}
  .chn-hero-copy-wide .chn-kicker{margin-bottom:.25em}
  .chn-hero-formband-in{flex-direction:column; align-items:stretch; gap:1rem; padding:1rem}
  .chn-hero-stat{flex-direction:row; align-items:baseline; gap:.6rem; max-width:none; order:2}
  .jln-hero-num{font-size:2rem}
  .chn-hero-formwrap .chn-form{max-width:none}
}

/* formulaires */
.chn-form{display:flex; flex-direction:column; gap:.7rem}
.chn-field{display:flex; flex-direction:column; gap:.25rem}
.chn-field label{font-size:.85rem; font-weight:600; color:oklch(0.38 0.02 335)}
.chn-hero-visual .chn-field label, .chn-form-card .chn-field label{color:oklch(0.38 0.02 335)}
.chn-field input, .chn-field select, .chn-field textarea{
  font:inherit; padding:.62rem .7rem; border:1.5px solid oklch(0.60 0 0); border-radius:0; background:var(--chn-white); color:var(--chn-ink);
}
.chn-field input:focus, .chn-field select:focus, .chn-field textarea:focus{outline:2px solid var(--jln-accent); outline-offset:1px}
.chn-honeypot{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden}
.chn-consent{display:flex; align-items:flex-start; gap:.5rem; font-size:.85rem; color:oklch(0.42 0.02 335)}
.chn-consent input{margin-top:.2rem}
.chn-reassure{font-size:.82rem; color:oklch(0.48 0.02 335); margin:.3rem 0 0}
.chn-form-card{background:var(--chn-white); color:var(--chn-ink); border:1px solid var(--chn-line-ink); border-radius:0; padding:1.15rem}
.jln-form{}
/* le formulaire hero (mode A) vit dans un aside CLAIR même quand la section qui l'entoure est
   sombre (.chn-band-dark) : la règle générique ".chn-band-dark p{color:white}" a une spécificité
   supérieure à ".chn-reassure"/".chn-consent" seules et les blanchissait sur fond blanc (G46,
   ratio 1 mesuré) — on referme explicitement la carte en encre, plus spécifique que la règle
   sombre générique. */
.chn-band-dark .chn-form-card, .chn-band-dark .chn-form-card p, .chn-band-dark .chn-form-card .chn-lede,
.chn-band-dark .chn-form-card label, .chn-band-dark .chn-form-card .chn-reassure, .chn-band-dark .chn-form-card .chn-consent{color:var(--chn-ink)}

/* module signature — "le planning de chantier", facsimilé CSS pur, filets 1px, aucun rayon */
.jln-planning{display:flex; flex-direction:column; gap:.4rem; position:relative}
.jln-planning-row{display:grid; grid-template-columns:repeat(5, 1fr); gap:.55rem}
@media (max-width:760px){.jln-planning-row{grid-template-columns:repeat(2, 1fr)}}
.facsim{background:var(--chn-white); border:1px solid var(--chn-line-ink); border-radius:0; padding:.7rem .75rem; font-size:.78rem; position:relative}
.on-dark .facsim{background:var(--chn-ink-2); border-color:var(--chn-line); color:var(--chn-white)}
.facsim.is-active{border-color:var(--jln-accent); border-width:2px}
/* rupture 1 : le badge de la phase la plus avancée déborde du cadre, comme un tampon posé
   après coup sur un planning déjà tracé */
.facsim.is-done .jln-badge-done{position:relative; top:-4px}
.facsim-head{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:.4rem; font-weight:700}
.facsim-line{height:6px; background:var(--chn-paper-2); border-radius:0; margin-bottom:.32rem}
.on-dark .facsim-line{background:var(--chn-ink)}
.facsim-line.w60{width:60%} .facsim-line.w80{width:80%}
.jln-badge{display:inline-block; margin-top:.3rem; font-size:.66rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; padding:.15rem .4rem; border-radius:0}
.jln-badge-done{background:var(--jln-accent-deep); color:var(--chn-white)}
.jln-badge-active{border:1.5px solid var(--jln-accent); color:var(--jln-accent-deep); background:transparent}
.on-dark .jln-badge-active{color:var(--jln-accent-soft); border-color:var(--jln-accent-soft)}
.jln-badge-tension{border:1.5px solid var(--chn-line-ink); color:var(--chn-ink); background:transparent}
.on-dark .jln-badge-tension{border-color:var(--chn-line); color:var(--chn-white)}
.jln-badge-avenir{color:oklch(0.55 0.01 335); border:1px dashed var(--chn-line-ink); background:transparent}
/* rupture 3 : la ligne "aujourd'hui" dépasse légèrement le bas du cadre du facsimilé */
.jln-today{position:relative; height:1px; background:var(--jln-accent); margin:.5rem 3% -1.1rem}
.jln-today span{position:absolute; right:0; top:.4rem; font-size:.7rem; font-weight:700; color:var(--jln-accent-deep); background:var(--chn-paper); padding:0 .35em; text-transform:uppercase; letter-spacing:.04em}
.on-dark .jln-today span{color:var(--jln-accent-soft); background:var(--chn-ink)}
.jln-planning-caption{font-size:.82rem; color:oklch(0.48 0.02 335); margin-top:1.3rem}
.on-dark .jln-planning-caption{color:oklch(0.82 0.02 335)}

/* chiffres géants en marge — invariant V1, rupture 2 : l'un d'eux traverse le filet de
   séparation de section au lieu de s'arrêter dedans */
.jln-card-num{font-family:var(--font-title); font-weight:800; font-size:2.4rem; color:var(--jln-accent); line-height:1; display:block; margin-bottom:.2rem}

/* cartes fonctionnalités */
.chn-cards{display:grid; grid-template-columns:repeat(4, 1fr); gap:0; border-top:1px solid var(--chn-line-ink); border-left:1px solid var(--chn-line-ink)}
@media (max-width:900px){.chn-cards{grid-template-columns:repeat(2, 1fr)}}
@media (max-width:560px){.chn-cards{grid-template-columns:1fr}}
.chn-card{background:var(--chn-paper); border-right:1px solid var(--chn-line-ink); border-bottom:1px solid var(--chn-line-ink); border-radius:0; padding:1.3rem 1.2rem; display:flex; flex-direction:column; gap:.4rem; text-decoration:none; color:inherit}
.chn-card h3{margin:0; color:var(--chn-ink)}
.chn-card > span:last-child{font-weight:700; color:var(--jln-accent-deep); font-size:.88rem}

/* page fonctionnalité/segment : grille copy + form */
.chn-service-grid{display:grid; grid-template-columns:1.15fr .85fr; gap:2.2rem; align-items:start}
@media (max-width:860px){.chn-service-grid{grid-template-columns:1fr}}
/* mobile : le formulaire (aside) remonte visuellement AVANT la copy/planning réduit pour rester
   atteignable sous 2 écrans (G32/G71) — le DOM garde le H1 en premier pour l'accessibilité
   (feedback_h1_before_form_dom), seul l'ORDRE VISUEL change, même pattern que .chn-hero-visual. */
@media (max-width:860px){.chn-service-grid > aside{order:-1}}
.chn-content-narrow{max-width:820px}
.chn-content-block{margin-bottom:1.6rem}
.chn-content-block h2{border-top:1px solid var(--chn-line-ink); padding-top:1.4rem}
.chn-content-block:first-child h2{border-top:0; padding-top:0}

/* couverture / limites — honnêteté anti-survente */
.chn-scope{display:grid; grid-template-columns:1fr 1fr; gap:0; margin:1.2rem 0; border:1px solid var(--chn-line-ink)}
@media (max-width:640px){.chn-scope{grid-template-columns:1fr}}
.chn-scope > div{padding:1rem 1.1rem}
.chn-scope-yes{background:var(--chn-paper); border-right:1px solid var(--chn-line-ink)}
@media (max-width:640px){.chn-scope-yes{border-right:0; border-bottom:1px solid var(--chn-line-ink)}}
.chn-scope-no{background:var(--chn-paper-2)}
.chn-scope h3{font-size:.95rem; margin-bottom:.5rem}
.chn-scope ul{margin:0; padding-left:1.1em}

/* tableau comparatif */
.chn-table-wrap{overflow-x:auto; margin:1.2rem 0; border:1px solid var(--chn-line-ink)}
table.chn-compare{border-collapse:collapse; width:100%; min-width:520px; font-size:.9rem}
table.chn-compare th, table.chn-compare td{padding:.65rem .8rem; text-align:left; border-bottom:1px solid var(--chn-line-ink)}
table.chn-compare th{background:var(--chn-paper-2); font-weight:700}
table.chn-compare tr:last-child td{border-bottom:0}

/* repère réglementaire (facturation électronique) */
.chn-reg-box{border:1.5px solid var(--jln-accent); border-radius:0; padding:1.1rem 1.2rem; background:var(--chn-paper)}
.chn-band-alt .chn-reg-box{background:var(--chn-paper)}
.chn-reg-box h3{margin-top:0; font-size:1rem}
.chn-timeline{list-style:none; margin:.8rem 0 0; padding:0; display:flex; flex-direction:column; gap:.6rem}
.chn-timeline li{display:flex; gap:.7rem; align-items:baseline}
.chn-timeline strong{color:var(--jln-accent-deep); white-space:nowrap; font-variant-numeric:tabular-nums}

/* FAQ */
.chn-faq{display:flex; flex-direction:column; gap:0; border-top:1px solid var(--chn-line-ink)}
.chn-faq-item{border-bottom:1px solid var(--chn-line-ink); padding:.2rem 0}
.chn-faq-item summary{cursor:pointer; padding:.8rem 0; font-weight:700; list-style:none}
.chn-faq-item summary::-webkit-details-marker{display:none}
.chn-faq-item summary::after{content:"+"; float:right; font-weight:400; color:var(--jln-accent-deep)}
.chn-faq-item[open] summary::after{content:"−"}
.chn-faq-a{padding:0 0 .9rem}

/* fil d'ariane */
.chn-breadcrumb{font-size:.82rem; color:oklch(0.52 0.02 335); margin-bottom:.8rem}
.on-dark .chn-breadcrumb{color:oklch(0.75 0.02 335)}
.chn-breadcrumb a{color:inherit}
.chn-breadcrumb .sep{margin:0 .4em}

/* étapes — numéro écrit en dur (span.chn-step-num), pas de compteur CSS décoratif */
.chn-steps{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.9rem}
.chn-steps li{padding-left:2.6rem; position:relative}
.chn-step-num{position:absolute; left:0; top:0; width:1.9rem; height:1.9rem; border-radius:0; background:var(--chn-ink); color:var(--chn-white); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.85rem}

/* avis */
.chn-avis{display:block}
.chn-avis-score{font-weight:700; margin-bottom:.7rem}
.chn-avis-list{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:0; border-top:1px solid var(--chn-line-ink); border-left:1px solid var(--chn-line-ink)}
@media (max-width:760px){.chn-avis-list{grid-template-columns:1fr}}
.chn-avis-item{background:var(--chn-white); border-right:1px solid var(--chn-line-ink); border-bottom:1px solid var(--chn-line-ink); padding:1rem}
.chn-avis-head{display:flex; justify-content:space-between; align-items:center; margin-bottom:.4rem; font-size:.85rem; gap:.5rem}
.chn-avis-who{color:oklch(0.48 0.02 335); text-align:right}
.chn-avis-profil{display:block; font-size:.76rem}
.chn-stars{color:var(--jln-accent-deep); letter-spacing:.05em}
.chn-avis-more{margin-top:.8rem}
.chn-avis-more summary{cursor:pointer; font-weight:700; color:var(--jln-accent-deep)}
.chn-avis-more .chn-avis-list{margin-top:.8rem}

/* blog */
.chn-blog-list{display:flex; flex-direction:column; gap:0; border-top:1px solid var(--chn-line-ink)}
.chn-blog-item{padding:1.2rem 0; border-bottom:1px solid var(--chn-line-ink)}
.chn-blog-item h2{margin-bottom:.2rem}
.chn-blog-item h2 a{text-decoration:none; color:var(--chn-ink)}
.chn-blog-date{font-size:.82rem; color:oklch(0.52 0.02 335); margin:0 0 .3rem}
.chn-article-body h2{margin-top:1.6rem}

/* CTA final — fond sombre : tout le texte par défaut repassé en clair (angle mort n°1 du parc) */
.chn-cta-final{background:var(--chn-ink); color:var(--chn-white)}
.chn-cta-final h2, .chn-cta-final p, .chn-cta-final .chn-lede{color:var(--chn-white)}
.chn-cta-final .chn-form-card{background:var(--chn-white); color:var(--chn-ink)}
.chn-cta-final .chn-form-card p, .chn-cta-final .chn-form-card .chn-lede, .chn-cta-final .chn-form-card label{color:var(--chn-ink)}

/* footer */
.chn-footer{background:var(--chn-surface); color:oklch(0.85 0.01 335); padding:2.4rem 0 1.4rem; font-size:.9rem; border-top:1px solid var(--chn-line)}
.chn-footer a{color:oklch(0.9 0.01 335)}
.chn-footer-cols{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:1.6rem; margin-bottom:1.6rem}
@media (max-width:760px){.chn-footer-cols{grid-template-columns:1fr 1fr}}
.chn-footer-brand{font-weight:800; color:var(--chn-white); margin-bottom:.4rem}
.chn-footer-h{font-weight:700; color:var(--chn-white); margin-bottom:.5rem}
.chn-footer ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.35rem}
.foot-sources{font-size:.78rem; color:oklch(0.65 0.01 335); border-top:1px solid var(--chn-line); padding-top:1rem; margin-top:.4rem}
.foot-sources a{color:oklch(0.75 0.01 335)}
.chn-copy{font-size:.78rem; color:oklch(0.72 0.01 335); margin-top:.6rem}
