/* ECXIFR — ÉDITION HARMONISÉE v5 · design system of record
   Violet/grey/black matched to "kahlity logo final" (AVIF vendored) — Kahlity France ×
   Energycapitalx Infrastructure France. Basis: IBM Plex datasheet discipline (1px flat,
   numbered indices). Zero-JS · zero external requests. v5 beauty pass: refined scale,
   gradient hairlines, hover rhythm, a11y focus. */

:root{
  --paper:#F7F4FA; --panel:#FFFFFF; --ink:#1F1F20; --black:#000000;
  --violet:#6E2383; --violet-deep:#501361; --violet-soft:#8B4A9E; --violet-tint:#F4EBF6;
  --grey:#8F8F8F; --grey-dk:#5F5F63; --grey-lt:#E2E2E2; --line:#DAD4E0;
  --ok:#2D6A4F;
  --sans:'IBM Plex Sans','Segoe UI',Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  --serif:'IBM Plex Serif',Georgia,serif;
  --hair:linear-gradient(90deg,var(--violet) 0,var(--violet-soft) 38%,var(--grey-lt) 100%);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
::selection{background:var(--violet);color:#fff}
body{background:var(--paper);color:var(--ink);font:15px/1.72 var(--sans);-webkit-font-smoothing:antialiased}
main{max-width:1104px;margin:0 auto;padding:0 30px}
img{display:block;max-width:100%}
:focus-visible{outline:2px solid var(--violet);outline-offset:3px}

.k{font:10.5px/1 var(--mono);letter-spacing:.3em;text-transform:uppercase;color:var(--grey-dk)}
.idx{font:12px/1 var(--mono);letter-spacing:.2em;color:var(--violet)}
h1{font:600 clamp(34px,5vw,52px)/1.06 var(--sans);letter-spacing:-.015em;margin:16px 0 12px;color:var(--black);max-width:19ch}
h2{font:600 26px/1.18 var(--sans);letter-spacing:-.008em;margin:6px 0 14px;color:var(--black)}
h3{font:600 14px/1.35 var(--sans);margin:18px 0 8px;color:var(--ink)}
.serif{font-family:var(--serif);font-style:italic;font-size:20px;line-height:1.5;color:var(--violet-deep)}
p{max-width:74ch;margin:0 0 14px}
p.lead{font-size:17.5px;line-height:1.62;max-width:62ch}
a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--violet-soft);text-underline-offset:3px;transition:color .15s}
a:hover{color:var(--violet)}
code{font:13px var(--mono);border:1px solid var(--grey-lt);background:var(--panel);padding:0 5px}

header{border-bottom:1px solid var(--black);background:var(--panel);position:sticky;top:0;z-index:5}
.bar{max-width:1104px;margin:0 auto;padding:12px 30px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
.wordmark img{height:48px;width:auto}
nav{font:11px var(--mono);letter-spacing:.12em;text-transform:uppercase;display:flex;gap:19px;flex-wrap:wrap}
nav a{text-decoration:none;color:var(--grey-dk);padding:4px 0;border-bottom:2px solid transparent}
nav a:hover{color:var(--violet);border-bottom-color:var(--violet)}

.hero{padding:66px 0 46px;border-bottom:1px solid var(--ink);background:
  radial-gradient(1200px 400px at 85% -10%,var(--violet-tint),transparent 70%),var(--paper)}
.hero .k{margin-bottom:16px}
.status{display:flex;flex-wrap:wrap;margin-top:26px;border:1px solid var(--ink);background:var(--panel)}
.status span{font:10.5px/1 var(--mono);letter-spacing:.11em;text-transform:uppercase;padding:10px 14px;border-right:1px solid var(--grey-lt);white-space:nowrap}
.status span:last-child{border-right:0}
.status .dot{color:var(--ok)}
.status .cu{color:var(--violet)}

section{padding:56px 0;border-bottom:1px solid var(--line)}
.shead{display:flex;align-items:baseline;gap:18px;margin-bottom:24px}
.shead::after{content:"";flex:1;height:3px;background:var(--hair)}
.energy{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:8px}
.energy article{border:1px solid var(--ink);background:var(--panel);padding:24px 20px 20px;transition:border-color .15s}
.energy article:hover{border-color:var(--violet)}
.energy article::before{content:"";display:block;width:44px;height:3px;background:var(--hair);margin-bottom:16px}
.energy h3{margin-top:0}
.energy .tag{font:10px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--grey)}
.energy p{font-size:13.5px;color:var(--grey-dk)}

.loop{display:grid;grid-template-columns:1fr 34px 1fr 34px 1fr;align-items:stretch;margin:10px 0 8px}
.node{border:1px solid var(--ink);background:var(--panel);padding:18px 16px}
.node .k{color:var(--violet)}
.node h3{margin:8px 0 6px}
.node p{font-size:12.5px;margin:0;color:var(--grey)}
.flow{display:flex;align-items:center;justify-content:center;font:16px var(--mono);color:var(--violet)}
.loopfoot{font:11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--grey);margin-top:12px}

.datasheet{border-collapse:collapse;width:100%;margin:8px 0 18px;font-size:12.5px;background:var(--panel)}
.datasheet th,.datasheet td{border:1px solid var(--grey-lt);padding:7px 11px;text-align:left;vertical-align:top}
.datasheet th{font:10px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--grey-dk);font-weight:500;background:var(--violet-tint)}
.datasheet td{font-family:var(--mono)}
.datasheet tr:hover td{background:var(--violet-tint)}

.surfaces{display:grid;grid-template-columns:190px 1fr;gap:8px 18px;margin:8px 0}
.surfaces .k{padding-top:3px}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}
.chips a,.chips span{border:1px solid var(--ink);background:var(--panel);padding:9px 15px;font:11px var(--mono);letter-spacing:.12em;text-transform:uppercase;text-decoration:none;transition:all .15s}
.chips a:hover{border-color:var(--violet);color:var(--violet);transform:translateY(-1px)}

.services{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:8px}
.services article{border:1px solid var(--ink);background:var(--panel);padding:20px 18px;display:flex;flex-direction:column;transition:border-color .15s}
.services article:hover{border-color:var(--violet)}
.services .num{font:24px var(--mono);color:var(--violet)}
.services h3{margin:8px 0 6px;font-size:13px;letter-spacing:.05em;text-transform:uppercase}
.services p{font-size:12.5px;margin:0 0 12px;color:var(--grey-dk);flex:1}
.services a{font:11px var(--mono);letter-spacing:.1em;text-transform:uppercase;text-decoration:none}
@media(max-width:960px){.services{grid-template-columns:repeat(2,1fr)}}

.eu,.cta{border:1px solid var(--ink);border-left:6px solid var(--violet);background:var(--panel);padding:26px 24px;margin-top:8px}
.cta .k,.eu .k{color:var(--violet)}
.cta h2{margin:8px 0 10px}
.cta .btn{display:inline-block;border:1px solid var(--violet-deep);background:var(--violet-deep);color:#fff;padding:12px 24px;font:12px var(--mono);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;margin-top:6px;transition:all .15s}
.cta .btn:hover{background:var(--violet);border-color:var(--violet);color:#fff;transform:translateY(-1px)}
.cta p.doctrine,.eu p.doctrine{font:11.5px var(--mono);color:var(--grey);margin:12px 0 0;max-width:none}

footer{border-top:1px solid var(--black);padding:34px 0 64px;font:11px/1.9 var(--mono);background:var(--black);color:#A9A1B3}
footer .basis{color:#fff}
footer img{height:42px;width:auto;margin-bottom:16px}
footer a{color:#E2E2E2}
footer .fwrap{max-width:1104px;margin:0 auto;padding:0 30px}

@media(max-width:760px){
  h1{font-size:32px}
  .energy,.loop,.services{grid-template-columns:1fr}
  .flow{transform:rotate(90deg);height:34px}
  .surfaces{grid-template-columns:1fr}
  .bar{flex-direction:column;align-items:flex-start}
}

/* ================================================================
   COUCHE DES SCEAUX — 2026-10-30 (ordre). Termes d'estate (.eco-e) et
   surfaces (.eco-s) rendus par paires de couleur light/light (plane
   claire) ou dark/dark (plane sombre). Le sens reste porté par le
   document : survol du terme, ::selection (violet), impression, ou
   lecture brute de la source (agents + ECXI-COMMAND). Zéro script —
   couche pure CSS. Manifeste machine : /porte/seals.json.
   ================================================================ */
:root{--eco-e:#F4F1F7;--eco-s:#F2F1F5}
@media (prefers-color-scheme:dark){:root{--eco-e:#101013;--eco-s:#111214}}
.eco-e{color:var(--eco-e);cursor:help}
.eco-s{color:var(--eco-s);cursor:help}
.eco-e:hover,.eco-e:focus-visible,.eco-s:hover,.eco-s:focus-visible{color:var(--violet)}
.eco-d{color:#0E0E10;cursor:help}
.eco-d:hover,.eco-d:focus-visible{color:#8B4A9E}
@media print{.eco-e,.eco-s,.eco-d{color:var(--violet-deep)}}
/* Vue authentifiée — la session dévoile la couche */
body.devoile .eco-e,body.devoile .eco-s{color:var(--violet-deep)}
body.devoile .eco-d{color:#CFAEF0}
