/* ============================================================================
   Fiscalir — landing page styles.

   PROVENANCE: the layout rules below are ported as authored from the Claude
   Design prototype's <style> block (design_handoff_fiscalir_landing/
   "Fiscalir Landing.dc.html", lines 21–155). Class names, values and ordering
   are kept so a future diff against the handoff stays readable.

   Added here, and only here:
     - §DS      the five design-system components, which the prototype mounted
                as React with inline styles. Transcribed from _ds_bundle.js.
     - §FORM    waitlist success / failure / noscript states — the prototype
                had a success state only.
     - §MOBILE  everything below 880px, which the handoff never designed.
     - §PRINT   salvaged from the print variant (its copy is an older
                iteration and is NOT used; only its @media print rules are).

   Ochre rule, applied throughout: --flag (#B47316, 3.88:1) is legal for
   borders and shapes only. Anything that carries TEXT — a label, or a solid
   fill behind white text — uses --flag-text (#8E5A11, 5.80:1). See tokens.css.
   ========================================================================= */

body{margin:0;background:var(--paper);color:var(--ink-900);font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;}
*{box-sizing:border-box;}
a{color:var(--trace);text-decoration:none;}
a:hover{color:var(--ink-900);}
.serif{font-family:var(--font-serif);}
.mono{font-family:var(--font-mono);}
.tabular{font-variant-numeric:tabular-nums lining-nums;}
.page{max-width:1160px;margin:0 auto;padding:0 var(--space-6);}
.eyebrow{font-family:var(--font-mono);font-size:var(--text-eyebrow);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--trace);font-weight:600;}
.eyebrow-muted{font-family:var(--font-mono);font-size:var(--text-eyebrow);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);font-weight:600;}
.muted{color:var(--ink-500);}
.sec{color:var(--ink-600);}
.h-hero{font-family:var(--font-serif);font-weight:600;font-size:clamp(32px,4vw,46px);line-height:1.1;letter-spacing:-0.01em;color:var(--ink-900);margin:0;text-wrap:balance;}
.h2{font-family:var(--font-serif);font-weight:600;font-size:var(--text-h1);line-height:1.2;color:var(--ink-900);margin:0;}
.h3{font-family:var(--font-serif);font-weight:600;font-size:var(--text-h2);line-height:1.25;color:var(--ink-900);margin:0;}
.lead{font-size:18px;line-height:1.55;color:var(--ink-600);max-width:58ch;}
.small{font-size:var(--text-sm);color:var(--ink-500);}
.hair{border:none;border-top:1px solid var(--hairline);margin:0;}

/* Skip link — the page is a long scroll and the thread is dense; keyboard
   users need a way past the header without tabbing the whole nav. */
.skip{position:absolute;left:-9999px;top:0;z-index:10;background:var(--surface);color:var(--trace);padding:var(--space-3) var(--space-4);border:1px solid var(--trace);border-radius:var(--radius-control);}
.skip:focus{left:var(--space-6);top:var(--space-3);}

.topbar{border-bottom:1px solid var(--hairline);background:var(--surface);}
.topbar-in{display:flex;align-items:center;justify-content:space-between;height:64px;}
.navr{display:flex;align-items:center;gap:var(--space-5);}
.chip-build{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);border:1px solid var(--hairline);border-radius:var(--radius-control);padding:5px 10px;display:inline-flex;align-items:center;gap:7px;}
.dot{width:6px;height:6px;border-radius:50%;background:var(--trace);display:inline-block;}
.band{padding:var(--space-8) 0;border-top:1px solid var(--hairline);}
.band-alt{background:var(--surface);}
.band-alt .card{background:var(--paper);}
.hero{padding:var(--space-8) 0 var(--space-8);}
.hero-grid{display:grid;grid-template-columns:1.15fr 0.8fr;grid-template-areas:"head form";column-gap:var(--space-8);align-items:start;margin-top:var(--space-6);}
.hero-head{grid-area:head;max-width:62ch;}
.hero-form{grid-area:form;}
.chip-demo{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);border:1px solid var(--hairline);border-radius:var(--radius-control);padding:4px 9px;background:var(--surface);white-space:nowrap;}
.sec01-head{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-3);}
.proof-wrap{max-width:1040px;}
.proof-head{max-width:340px;}
.tree{margin-top:var(--space-5);background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-box);box-shadow:var(--shadow-sheet);overflow:hidden;}
.tree-in{padding:var(--space-6);}
.spine{position:relative;}
.spine::before{content:"";position:absolute;left:4px;top:6px;bottom:12px;width:1.5px;background:var(--thread);}
.lane-div{position:absolute;top:-16px;bottom:0;right:284px;width:1px;background:var(--hairline);}
.tledger-head{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:var(--space-7);padding:0 0 var(--space-3) 24px;margin-bottom:var(--space-4);border-bottom:1px solid var(--hairline);}
.tledger-lane{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);font-weight:600;}
.tnode{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:var(--space-7);align-items:start;padding-left:24px;padding-bottom:var(--space-6);}
.tmark{position:absolute;left:0;top:4px;width:9px;height:9px;background:var(--trace);border-radius:1px;}
.tbody{display:flex;flex-direction:column;gap:6px;min-width:0;}
.acqs{display:flex;flex-direction:column;}
.acq{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:var(--space-7);align-items:start;padding-left:24px;padding-bottom:var(--space-5);}
.acq:last-child{padding-bottom:2px;}
.acqmark{position:absolute;left:24px;top:4px;width:9px;height:9px;background:var(--trace);border-radius:1px;}
.acqconn{position:absolute;left:5px;top:8px;width:19px;height:1.5px;background:var(--thread);}
.acq .tbody{padding-left:16px;}
.trow{display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap;}
.tline{display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap;}
.tright{margin-left:auto;}
.tlabel{font-size:var(--text-body);font-weight:600;color:var(--ink-900);}
.tval{font-family:var(--font-sans);font-size:var(--text-body);font-weight:600;color:var(--ink-900);font-variant-numeric:tabular-nums lining-nums;}
.tnum{font-family:var(--font-mono);font-size:var(--text-data);font-weight:500;color:var(--ink-900);font-variant-numeric:tabular-nums lining-nums;}
.tnative{font-family:var(--font-mono);font-size:var(--text-data);color:var(--ink-500);font-variant-numeric:tabular-nums lining-nums;}
.tfx{font-family:var(--font-mono);font-size:var(--text-data);color:var(--trace);font-variant-numeric:tabular-nums lining-nums;}
.tqty{font-family:var(--font-mono);font-size:var(--text-data);color:var(--ink-500);font-variant-numeric:tabular-nums lining-nums;}
.tsub{font-size:var(--text-sm);color:var(--ink-500);}
.trule{font-size:var(--text-sm);color:var(--ink-600);max-width:60ch;}
.tsplit{padding-left:24px;font-size:var(--text-sm);color:var(--ink-600);max-width:58ch;margin-bottom:var(--space-4);}
.pal{padding-top:1px;min-width:0;}
.pal-code{display:inline-block;font-family:var(--font-mono);font-size:var(--text-eyebrow);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--trace);font-weight:600;margin-bottom:5px;}
.pal-txt{margin:0;font-size:var(--text-sm);line-height:1.5;color:var(--ink-600);}
.srcwrap{margin-top:2px;}
.srclabel{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);margin-bottom:5px;}
.srcline{margin:0;padding:var(--space-3);background:var(--archival);border:1px solid var(--hairline);border-radius:var(--radius-box);font-family:var(--font-mono);font-size:11px;line-height:1.55;color:var(--ink-900);white-space:pre-wrap;word-break:break-word;font-variant-numeric:tabular-nums lining-nums;}
.tree-note{font-size:var(--text-sm);color:var(--ink-500);padding-left:24px;max-width:72ch;margin-top:var(--space-4);}
.tree-stamp{border-top:1px solid var(--hairline);padding:var(--space-3) var(--space-6);font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);background:var(--paper);}
.recon{max-width:1040px;margin-top:var(--space-4);background:var(--paper);border:1px dashed var(--hairline);border-radius:var(--radius-box);box-shadow:inset 0 1px 3px rgba(15,19,25,0.05);padding:var(--space-5) var(--space-6);user-select:none;}
.recon-head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;}
.recon-dot{width:11px;height:11px;border:1.5px dotted var(--ink-500);border-radius:50%;flex:none;}
.recon-title{font-family:var(--font-mono);font-size:var(--text-eyebrow);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);font-weight:600;}
.recon-tag{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);border:1px solid var(--hairline);border-radius:2px;padding:2px 6px;white-space:nowrap;}
.recon-rows{margin-top:var(--space-4);}
.recon-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-top:1px solid var(--hairline);}
.recon-row:first-child{border-top:none;}
.recon-label{font-size:var(--text-sm);color:var(--ink-600);}
.recon-num{font-family:var(--font-sans);font-size:var(--text-body);font-weight:600;color:var(--ink-500);font-variant-numeric:tabular-nums lining-nums;}
.recon-pct{font-family:var(--font-mono);font-size:var(--text-data);color:var(--ink-500);font-variant-numeric:tabular-nums lining-nums;}
.recon-p{font-size:var(--text-sm);color:var(--ink-500);max-width:74ch;margin-top:var(--space-4);}
@keyframes izi-fade{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}
@keyframes branch-unfold{from{opacity:0;transform:translateY(-12px) scaleY(.94);transform-origin:top;}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion:no-preference){
.tree{animation:izi-fade .35s ease-out both;}
.acqs .acq{animation:branch-unfold .5s ease-out both;}
.acqs .acq:nth-child(1){animation-delay:.14s;}
.acqs .acq:nth-child(2){animation-delay:.28s;}
.acqs .acq:nth-child(3){animation-delay:.42s;}
}
.linkbtn{background:none;border:none;padding:0;margin-top:var(--space-3);cursor:pointer;font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;color:var(--trace);display:inline-flex;align-items:center;gap:5px;}
.linkbtn:hover{color:var(--ink-900);}
.card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-box);box-shadow:var(--shadow-sheet);padding:var(--space-6);}
.field{width:100%;font-family:var(--font-sans);font-size:var(--text-body);color:var(--ink-900);background:var(--surface);border:1px solid var(--ink-500);border-radius:var(--radius-control);padding:11px 13px;margin-top:var(--space-4);}
.field:focus{outline:2px solid var(--trace);outline-offset:1px;border-color:var(--trace);}
.btn{width:100%;margin-top:var(--space-3);background:var(--trace);color:#fff;border:none;border-radius:var(--radius-control);padding:12px 18px;font-family:var(--font-sans);font-size:var(--text-body);font-weight:600;cursor:pointer;letter-spacing:0.01em;}
.btn:hover{background:var(--ink-900);}
.rgpd{margin-top:var(--space-3);font-size:var(--text-caption);line-height:1.45;color:var(--ink-500);}
.confirm{border-left:2px solid var(--trace);padding-left:var(--space-4);}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6);align-items:start;}
.cerfa-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4);}
.cerfa{background:var(--surface);border:1.5px solid var(--ink-700);border-radius:var(--radius-box);padding:var(--space-4) var(--space-5);}
.cerfa-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);}
.cerfa-title{font-family:var(--font-serif);font-size:var(--text-h2);margin-top:var(--space-3);}
.tag{display:inline-block;font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:0.06em;padding:3px 8px;border-radius:var(--radius-box);border:1px solid var(--hairline);color:var(--ink-600);}
.tag-oblig{border-color:var(--ink-700);color:var(--ink-700);}
.broker-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) 0;border-top:1px solid var(--hairline);}
.broker-row:first-child{border-top:none;}
.broker-name{font-weight:600;}
.tier{display:inline-flex;align-items:center;gap:8px;font-size:var(--text-sm);}
.tier-high{color:var(--trace);}
/* ochre TEXT → --flag-text (5.80:1). --flag would be 3.88:1 and fail AA. */
.tier-flag{color:var(--flag-text);}
.sq{width:10px;height:10px;background:var(--trace);border-radius:1px;display:inline-block;}
/* shape, not text → --flag is legal here (3:1 threshold for non-text) */
.tri{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:11px solid var(--flag);display:inline-block;}
.ledger{width:100%;border-collapse:collapse;font-size:var(--text-sm);}
.ledger th{text-align:left;font-family:var(--font-mono);font-size:var(--text-eyebrow);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);font-weight:600;padding:0 var(--space-4) var(--space-3);border-bottom:1px solid var(--hairline);}
.ledger td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--hairline);vertical-align:top;color:var(--ink-700);}
.ledger .yr{font-family:var(--font-mono);font-weight:600;color:var(--ink-900);}
.ledger .num{font-family:var(--font-mono);color:var(--ink-900);white-space:nowrap;}
.foot{background:var(--surface);border-top:1px solid var(--hairline);padding:var(--space-6) 0;}
.foot-in{display:flex;justify-content:space-between;gap:var(--space-5);flex-wrap:wrap;align-items:baseline;}
.foot-legal{display:flex;flex-wrap:wrap;gap:var(--space-5);margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--hairline);}
.endorse{display:flex;gap:var(--space-3);align-items:flex-start;margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--hairline);}
.endorse .sq{margin-top:5px;flex:none;}
.two-band{display:grid;grid-template-columns:1fr 0.9fr;gap:var(--space-7);align-items:center;}


/* ==========================================================================
   §DS — design-system components.
   The prototype mounted these as React with inline style objects. Transcribed
   from _ds_bundle.js so the values are the component's, not a re-guess.
   Only the states this page actually uses are exercised (etat="traced"), but
   the full state vocabulary is written out so the CSS is a faithful port.
   ========================================================================== */

/* --- ValeurDeclaree — the Cerfa "sheet". The atomic unit of the whole UI. --- */
.vd{background:var(--surface);border:1.5px solid var(--ink-700);border-radius:var(--radius-box);box-shadow:var(--shadow-sheet);padding:var(--space-4) var(--space-5) var(--space-4);min-width:260px;font-family:var(--font-sans);}
.vd--asserted{border:1.5px dashed var(--ink-700);}
.vd--verify{border:1.5px solid var(--flag);background:var(--flag-bg);}
.vd--reconcile{background:var(--paper);box-shadow:none;}
.vd-head{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-3);}
.vd-box{font-family:var(--font-mono);font-size:var(--text-eyebrow);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);font-weight:600;color:var(--trace);}
.vd--verify .vd-box{color:var(--flag-text);}
.vd-form{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);}
.vd-value{font-size:var(--text-value);font-weight:600;line-height:1.1;color:var(--ink-900);font-variant-numeric:tabular-nums lining-nums;}
.vd-value--negative{color:var(--oxblood);}
.vd-value--reconcile{color:var(--ink-500);}
.vd-verify{font-size:var(--text-value-sm);color:var(--flag-text);font-weight:500;font-family:var(--font-serif);}
.vd-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-top:var(--space-4);}
.vd-drill{display:inline-flex;align-items:center;gap:4px;background:transparent;border:none;cursor:pointer;padding:0;font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;color:var(--trace);}
.vd-drill:hover{color:var(--ink-900);}

/* --- EtatBadge — shape carries state alongside colour (colour-blind safe). --- */
.etat{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-sm);line-height:1;}
.etat--traced{color:var(--trace);}
.etat--asserted{color:var(--ink-600);}
.etat--verify{color:var(--flag-text);}
.etat--reconcile{color:var(--ink-500);}
.etat--negative{color:var(--oxblood);}
.etat-glyph{width:12px;height:12px;flex:0 0 auto;display:block;}
.etat--traced .etat-glyph{position:relative;display:inline-flex;align-items:center;background:var(--trace);border-radius:1px;}
/* the 1.5px thread tick below the square — the badge is literally the top of the fil */
.etat--traced .etat-glyph::after{content:"";position:absolute;left:50%;top:12px;width:1.5px;height:8.4px;background:var(--thread);transform:translateX(-50%);}
.etat--asserted .etat-glyph{border:1.5px dashed var(--ink-600);border-radius:1px;background:transparent;}
.etat--verify .etat-glyph{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:12px solid var(--flag);}
.etat--reconcile .etat-glyph{border:1.5px dotted var(--ink-500);border-radius:50%;background:transparent;}
.etat--negative .etat-glyph{background:var(--oxblood);border-radius:1px;position:relative;}
.etat--negative .etat-glyph::after{content:"";position:absolute;left:18%;right:18%;top:50%;height:1.5px;background:var(--surface);transform:translateY(-50%);}
.etat-note{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);border:1px solid var(--hairline);border-radius:2px;padding:1px 5px;}

/* --- ReconciliationStrip — the broker's own figure. Never a source. --- */
.rstrip{display:flex;align-items:center;gap:var(--space-4);background:var(--paper);border:1px dashed var(--hairline);border-radius:var(--radius-box);padding:var(--space-3) var(--space-4);font-family:var(--font-sans);user-select:none;max-width:560px;}
.rstrip-dot{width:11px;height:11px;flex:0 0 auto;border:1.5px dotted var(--ink-500);border-radius:50%;}
.rstrip-src{font-size:var(--text-sm);color:var(--ink-600);}
.rstrip-method{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);}
.rstrip-val{margin-left:auto;font-family:var(--font-sans);font-size:var(--text-value-sm);font-weight:600;color:var(--ink-500);font-variant-numeric:tabular-nums lining-nums;}
.rstrip-note{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);border:1px solid var(--hairline);border-radius:2px;padding:2px 6px;white-space:nowrap;}

/* --- AVerifierCard — flag-never-guess, rendered as a first-class stop. --- */
.averif{background:var(--flag-bg);border:1.5px solid var(--flag);border-radius:var(--radius-box);padding:var(--space-5);max-width:520px;font-family:var(--font-sans);}
.averif-head{display:flex;align-items:flex-start;gap:var(--space-3);}
.averif-tri{margin-top:4px;width:0;height:0;flex:0 0 auto;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:13px solid var(--flag);}
.averif-eyebrow{font-family:var(--font-mono);font-size:var(--text-eyebrow);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);font-weight:600;color:var(--flag-text);margin-bottom:4px;}
.averif-title{font-family:var(--font-serif);font-size:var(--text-h2);color:var(--ink-900);line-height:1.2;}
.averif-dl{margin:var(--space-4) 0 0;display:grid;gap:var(--space-3);}
.averif-row{display:grid;grid-template-columns:140px 1fr;gap:var(--space-3);align-items:baseline;}
.averif-row dt{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--flag-text);font-weight:500;}
.averif-row dd{margin:0;font-size:var(--text-sm);color:var(--ink-600);line-height:var(--leading-body);}
.averif-act{margin-top:var(--space-5);display:flex;gap:var(--space-3);}
/* white-on-#B47316 is 3.88:1 and fails AA for a 13px label, so the solid fill
   uses --flag-text (white-on-#8E5A11 = 5.80:1). The border keeps --flag so the
   card's outline and its button still read as one ochre family. */
.averif-btn{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:600;color:var(--surface);background:var(--flag-text);border:1px solid var(--flag-text);border-radius:var(--radius-control);padding:8px 14px;cursor:pointer;}

/* --- SimulationCompare — the layout itself refuses to recommend. --- */
.sim{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-box);box-shadow:var(--shadow-sheet);font-family:var(--font-sans);max-width:640px;overflow:hidden;}
.sim-title{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--hairline);font-family:var(--font-serif);font-size:var(--text-h2);color:var(--ink-900);}
.sim-options{display:grid;grid-template-columns:1fr 1fr;}
.sim-opt{padding:var(--space-5);}
.sim-opt + .sim-opt{border-left:1px solid var(--hairline);}
.sim-name{font-size:var(--text-body);font-weight:600;color:var(--ink-900);}
.sim-hint{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);margin-top:4px;}
.sim-total{font-size:var(--text-value-sm);font-weight:600;color:var(--ink-900);margin:var(--space-4) 0;font-variant-numeric:tabular-nums lining-nums;}
.sim-lines{margin:0;display:grid;gap:6px;}
.sim-line{display:flex;justify-content:space-between;gap:var(--space-3);border-top:1px solid var(--hairline);padding-top:6px;}
.sim-line dt{font-size:var(--text-sm);color:var(--ink-500);}
.sim-line dd{margin:0;font-family:var(--font-mono);font-size:var(--text-data);color:var(--ink-700);font-variant-numeric:tabular-nums lining-nums;}
.sim-foot{padding:var(--space-3) var(--space-5);border-top:1px solid var(--hairline);background:var(--paper);font-size:var(--text-caption);color:var(--ink-500);line-height:var(--leading-body);}


/* ==========================================================================
   §LEGAL — the four RGPD/LCEN pages and 404. Same ink-on-paper register as
   the landing page; no new vocabulary. Measure is capped at 68ch because
   these are read, not scanned.
   ========================================================================== */

.legal{padding:var(--space-8) 0;}
.legal-in{max-width:68ch;}
.legal h1{font-family:var(--font-serif);font-weight:600;font-size:var(--text-h1);line-height:1.2;color:var(--ink-900);margin:0 0 var(--space-5);}
.legal h2{font-family:var(--font-serif);font-weight:600;font-size:var(--text-h2);line-height:1.25;color:var(--ink-900);margin:var(--space-7) 0 var(--space-3);}
.legal p,.legal li{color:var(--ink-600);margin:0 0 var(--space-3);}
.legal ul{padding-left:var(--space-5);margin:0 0 var(--space-4);}
.legal dl{margin:0 0 var(--space-4);display:grid;gap:var(--space-3);}
.legal dl > div{display:grid;grid-template-columns:200px 1fr;gap:var(--space-3);align-items:baseline;}
.legal dt{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);font-weight:600;}
.legal dd{margin:0;color:var(--ink-600);}
.legal .updated{font-family:var(--font-mono);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--ink-500);}
@media (max-width:880px){.legal dl > div{grid-template-columns:1fr;gap:2px;}}


/* ==========================================================================
   §FORM — waitlist states. The prototype had a success state only.
   ========================================================================== */

/* Honeypot. Positioned off-screen rather than display:none — some bots skip
   fields that are display:none, which defeats the trap. aria-hidden and
   tabindex="-1" in the markup keep it away from AT and the tab order. */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}

.form-msg{display:none;align-items:flex-start;gap:var(--space-2);margin-top:var(--space-3);font-size:var(--text-sm);color:var(--flag-text);line-height:1.45;}
.form-msg[data-show="true"]{display:flex;}
.form-msg .tri{margin-top:4px;flex:none;}
.btn[disabled]{opacity:0.6;cursor:default;}
.btn[disabled]:hover{background:var(--trace);}
/* No-JS: the RPC needs a JSON POST so the form cannot degrade to a native
   submit. Say so rather than presenting a control that silently does nothing. */
.nojs{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--flag-text);display:flex;align-items:flex-start;gap:var(--space-2);}


/* ==========================================================================
   §MOBILE — below 880px. The handoff's single breakpoint stacked the grids
   but never addressed the thread's dense mono data.
   ========================================================================== */

@media (max-width:880px){
.hero-grid{grid-template-columns:1fr;grid-template-areas:"head" "form";row-gap:var(--space-6);}
.form-card{position:static;}
.grid2{grid-template-columns:1fr;}
.cerfa-grid{grid-template-columns:1fr;}
.two-band{grid-template-columns:1fr;}
.navr .chip-build{display:none;}
.tnode{grid-template-columns:1fr;}
.acq{grid-template-columns:1fr;}
.tledger-head{display:none;}
.lane-div{display:none;}
.proof-head{max-width:none;}

/* At 375px the source line gets ~183px after .page (64), .tree-in (64),
   .tnode (24) and .acq + .tbody (40). IBM Plex Mono at 11px is 6.6px/char,
   so ~27 characters for an 88-character line — four ragged wraps with the
   column alignment destroyed. Alignment IS the proof, so preserve it and
   scroll instead: swiping a raw statement line is what you'd do with the
   real document. */
.srcline{white-space:pre;overflow-x:auto;word-break:normal;}

/* SimulationCompare's grid is hardcoded 1fr 1fr in the component and never
   breaks — at 375px the two scenarios become unreadable columns. */
.sim-options{grid-template-columns:1fr;}
.sim-opt + .sim-opt{border-left:none;border-top:1px solid var(--hairline);}

/* The palier lane now sits under each node rather than beside it; give it a
   rule so it still reads as a separate register instead of running on. */
.pal{padding-top:var(--space-3);border-top:1px solid var(--hairline);}

.averif-row{grid-template-columns:1fr;gap:2px;}
.rstrip{flex-wrap:wrap;}
.rstrip-val{margin-left:0;}
}


/* ==========================================================================
   §PRINT — salvaged from "Fiscalir Landing-print.dc.html".
   Only its @media print rules are used; its copy is an older iteration
   (different H1, different section numbering, seven unresolved placeholders)
   and is deliberately not carried over.
   ========================================================================== */

@media print{
@page{margin:12mm;}
body{background:#fff;}
.topbar,.foot-legal,.skip,.form-card,.hero-form,.btn,.field,.rgpd{display:none !important;}
.band{border-top:1px solid #ccc;padding:var(--space-6) 0;}
.band-alt{background:#fff;}
.tree,.card,.cerfa,.recon,.sim,.averif,.vd{box-shadow:none;break-inside:avoid;}
.tnode,.acq,.cerfa,.broker-row,.recon-row{break-inside:avoid;}
.srcline{white-space:pre-wrap;}
*{animation:none !important;transition:none !important;}
a[href^="http"]::after{content:" (" attr(href) ")";font-size:var(--text-caption);color:#555;}
}
