/* Nodyx · Banc d'essai — identité "instrument de mesure" (datasheet / oscilloscope) */
:root{
  color-scheme: light dark;
  --paper:#f6f5f0; --surface:#fbfaf6; --ink:#16171b; --ink-2:#54555b; --ink-3:#8b8b8f;
  --line:#cfcec5; --line-2:#e2e1d8; --grid:#e7e6dd;
  --signal:#b4530f; --signal-2:#8f4109; --signal-soft:#b4530f12; --danger:#9c2b2b; --danger-soft:#9c2b2b12;
  --mono:ui-monospace,"SF Mono","SFMono-Regular",Menlo,Consolas,"Liberation Mono",monospace;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,Helvetica,Arial,sans-serif;
}
@media (prefers-color-scheme:dark){:root{
  --paper:#0c0d0a; --surface:#121311; --ink:#e9e8df; --ink-2:#9a9a8f; --ink-3:#63645b;
  --line:#26261f; --line-2:#1b1c16; --grid:#191a14;
  --signal:#e6a13c; --signal-2:#f0b45e; --signal-soft:#e6a13c14; --danger:#d9603f; --danger-soft:#d9603f18;
}}
:root[data-theme="light"]{
  --paper:#f6f5f0; --surface:#fbfaf6; --ink:#16171b; --ink-2:#54555b; --ink-3:#8b8b8f;
  --line:#cfcec5; --line-2:#e2e1d8; --grid:#e7e6dd;
  --signal:#b4530f; --signal-2:#8f4109; --signal-soft:#b4530f12; --danger:#9c2b2b; --danger-soft:#9c2b2b12;
}
:root[data-theme="dark"]{
  --paper:#0c0d0a; --surface:#121311; --ink:#e9e8df; --ink-2:#9a9a8f; --ink-3:#63645b;
  --line:#26261f; --line-2:#1b1c16; --grid:#191a14;
  --signal:#e6a13c; --signal-2:#f0b45e; --signal-soft:#e6a13c14; --danger:#d9603f; --danger-soft:#d9603f18;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:30px 30px;background-position:-1px -1px;
}
.wrap{max-width:1080px;margin:0 auto;padding:0 28px;}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;}
a{color:var(--ink);text-decoration:none;}
::selection{background:var(--signal);color:var(--paper);}

/* ── Nav : barre d'appareil ──────────────────────────── */
.nav{position:sticky;top:0;z-index:30;background:var(--paper);border-bottom:1px solid var(--ink);}
.nav-in{max-width:1080px;margin:0 auto;padding:0 28px;display:flex;align-items:stretch;gap:0;flex-wrap:wrap;min-height:46px;}
.nav .brand{font-family:var(--mono);font-size:.8rem;letter-spacing:.04em;color:var(--ink);display:flex;align-items:center;gap:9px;font-weight:600;padding:0 20px 0 0;text-transform:uppercase;}
.nav .brand .dot{width:7px;height:7px;background:var(--signal);}
.nav ul{list-style:none;display:flex;gap:0;margin:0;padding:0;flex-wrap:wrap;}
.nav li{display:flex;}
.nav a{font-family:var(--mono);font-size:.74rem;color:var(--ink-2);padding:14px 16px;display:flex;align-items:center;border-left:1px solid var(--line);white-space:nowrap;letter-spacing:.02em;}
.nav a:hover{background:var(--surface);color:var(--ink);}
.nav a[aria-current="page"]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--signal);font-weight:600;}
.nav .tech{margin-left:auto;}
.nav .tech a{border-left:1px solid var(--ink);}
.theme-btn{font-family:var(--mono);font-size:.72rem;background:transparent;color:var(--ink-2);border:0;border-left:1px solid var(--line);padding:0 15px;cursor:pointer;}
.theme-btn:hover{color:var(--ink);background:var(--surface);}
.theme-btn:focus-visible{outline:2px solid var(--signal);outline-offset:-2px;}

/* ── Bandeau technique (tape head) ───────────────────── */
.tapehead{font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);
  padding:16px 0;border-bottom:1px solid var(--line);display:flex;gap:14px;flex-wrap:wrap;}
.tapehead b{color:var(--ink-2);font-weight:500;}
.tapehead .live{color:var(--signal);display:flex;align-items:center;gap:7px;}
.tapehead .live::before{content:"";width:6px;height:6px;background:var(--signal);}

/* ── Hero ────────────────────────────────────────────── */
header.hero{padding:38px 0 0;}
h1{font-family:var(--mono);font-size:clamp(1.8rem,4.4vw,2.9rem);line-height:1.08;margin:22px 0 0;letter-spacing:-.02em;font-weight:640;text-wrap:balance;max-width:20ch;}
.lede{margin:20px 0 0;font-size:1.14rem;color:var(--ink-2);max-width:60ch;}

/* Afficheur de mesure : cellules séparées par des hairlines */
.readout{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--ink);margin:34px 0 0;background:var(--surface);}
.readout .ro{padding:20px 22px;border-left:1px solid var(--line);}
.readout .ro:first-child{border-left:0;}
.readout .ro-v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:clamp(2.2rem,6vw,3.4rem);line-height:1;letter-spacing:-.04em;color:var(--ink);display:block;}
.readout .ro-v .u{font-size:.4em;color:var(--ink-3);margin-left:2px;letter-spacing:0;}
.readout .ro-v.sig{color:var(--signal);}
.readout .ro-k{font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-top:12px;display:block;line-height:1.4;}

.scene-nav{display:flex;gap:0;margin:28px 0 0;border:1px solid var(--line);width:max-content;max-width:100%;flex-wrap:wrap;}
.scene-nav a{font-family:var(--mono);font-size:.75rem;color:var(--ink-2);padding:9px 15px;border-left:1px solid var(--line);letter-spacing:.02em;}
.scene-nav a:first-child{border-left:0;}
.scene-nav a:hover{background:var(--surface);color:var(--ink);}
.scene-nav a[aria-current="page"]{background:var(--ink);color:var(--paper);}

/* ── Callout ─────────────────────────────────────────── */
.callout{border:1px solid var(--ink);border-left-width:3px;margin:40px 0 0;padding:22px 24px;background:var(--surface);}
.callout.warn{border-left-color:var(--signal);}
.callout .cl-badge{display:inline-block;font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--signal);margin-bottom:12px;}
.callout p{margin:0;color:var(--ink);font-size:1.02rem;line-height:1.68;}
.callout b{color:var(--ink);font-weight:640;}

/* ── Sections & figures ──────────────────────────────── */
section{padding:52px 0;border-top:1px solid var(--line);}
.sec-head{margin-bottom:26px;}
.sec-n{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);display:block;margin-bottom:10px;}
h2{font-family:var(--mono);font-size:1.4rem;letter-spacing:-.01em;margin:0;font-weight:620;}
.sec-head p{margin:12px 0 0;color:var(--ink-2);font-size:1rem;max-width:56ch;}
figure{margin:0;border:1px solid var(--line);background:var(--surface);padding:18px 18px 6px;}
.fig-title{font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);display:flex;align-items:center;gap:10px;}
.fig-title .swatch{width:14px;height:3px;background:var(--signal);}
.chart{width:100%;height:auto;display:block;margin-top:10px;overflow:visible;touch-action:none;}
.grid-line{stroke:var(--grid);stroke-width:1;}
.axis-txt{font-family:var(--mono);font-size:11px;fill:var(--ink-3);}
.series-line{fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;}
.endpoint{stroke:var(--surface);stroke-width:2.5;}
.dlabel{font-family:var(--mono);font-size:12px;font-weight:600;}
.dlabel-bg{fill:var(--surface);}
.crosshair{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:2 3;opacity:0;}
.rupture-band{fill:var(--danger-soft);}
.refline{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:4 3;opacity:.8;}

/* ── Cartes (rectangles à filet) ─────────────────────── */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--line);}
.grid2 .card{border-left:1px solid var(--line);}
.grid2 .card:first-child{border-left:0;}
.card{background:var(--surface);padding:26px;}
.card h3{font-family:var(--mono);margin:0 0 12px;font-size:1rem;letter-spacing:-.01em;font-weight:620;}
.card p{margin:0 0 12px;color:var(--ink-2);font-size:.97rem;}
.card p:last-child{margin-bottom:0;}
.card code{font-family:var(--mono);font-size:.86em;background:var(--paper);padding:1px 6px;color:var(--ink);}
.card b{color:var(--ink);}

/* ── Table ───────────────────────────────────────────── */
.table-scroll{overflow-x:auto;border:1px solid var(--line);background:var(--surface);}
table.data{border-collapse:collapse;width:100%;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.85rem;min-width:520px;}
table.data th,table.data td{padding:10px 16px;text-align:right;border-bottom:1px solid var(--line-2);white-space:nowrap;}
table.data th:first-child,table.data td:first-child{text-align:left;}
table.data thead th{font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:500;position:sticky;top:0;background:var(--surface);border-bottom:1px solid var(--ink);}
table.data tbody tr:last-child td{border-bottom:none;}
table.data tbody tr.break td{background:var(--danger-soft);}
.tag{font-family:var(--mono);font-size:.7rem;padding:2px 9px;display:inline-block;min-width:64px;text-align:center;border:1px solid currentColor;}
.tag.ok{color:var(--ink-2);}
.tag.crit{color:var(--danger);}
.tag.warn{color:var(--signal);}

/* ── Suite / footer ──────────────────────────────────── */
.next{display:flex;gap:0;flex-wrap:wrap;border:1px solid var(--line);}
.next a{flex:1;min-width:250px;padding:22px 24px;border-left:1px solid var(--line);background:var(--surface);}
.next a:first-child{border-left:0;}
.next a:hover{background:var(--paper);}
.next .nx-k{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);}
.next .nx-t{font-family:var(--mono);color:var(--ink);font-size:1rem;margin-top:8px;font-weight:600;line-height:1.4;}
.next .nx-t .arr{color:var(--signal);}
footer.site{border-top:1px solid var(--ink);padding:30px 0 72px;color:var(--ink-3);font-family:var(--mono);font-size:.76rem;}
footer.site b{color:var(--ink-2);font-weight:500;}
footer.site a{color:var(--signal);}

.tip{position:fixed;pointer-events:none;z-index:40;background:var(--surface);border:1px solid var(--ink);padding:9px 12px;font-family:var(--mono);font-size:.78rem;opacity:0;transition:opacity .1s;min-width:130px;}
.tip .tn{color:var(--ink-3);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;}
.tip .tv{color:var(--ink);font-size:1.05rem;margin-top:4px;}
.tip .ts{color:var(--ink-2);margin-top:2px;font-size:.74rem;}

@media (max-width:720px){
  .readout{grid-template-columns:1fr;}
  .readout .ro{border-left:0;border-top:1px solid var(--line);}
  .readout .ro:first-child{border-top:0;}
  .grid2{grid-template-columns:1fr;}
  .grid2 .card{border-left:0;border-top:1px solid var(--line);}
  .grid2 .card:first-child{border-top:0;}
  .nav .tech{margin-left:0;}
}
@media (prefers-reduced-motion:reduce){
  .series-line{stroke-dasharray:none!important;stroke-dashoffset:0!important;}
}
