/* ═══════════════════════════════════════════════════════════════════════════
   MIRROR TOKENS — layers 1 and 2 of the design system.

   LAYER 1  the palette, type and rhythm. Immutable. No template may redefine
            these, and no template may declare a custom property on bare :root —
            that is what keeps dark mode working across all three assets with
            zero per-template effort.
   LAYER 2  shared primitives: one flash animation, one table, one list, one
            quote, one lock line, one explain mode, one print sheet. Changed
            here, changed everywhere.
   LAYER 3  lives in each template's own <style> and is LAYOUT ONLY.

   Accent budget — declare it and hold it. Proposal 4 (letterhead rule, td.hi,
   proof metric, added-deliverable tick) · Appointment 4 (header rule, chosen
   slot, measure value, confirm affordance) · Pitch 5 (eyebrow, hero CTA, stat
   numerals, offer rule, close-band CTA). Exceeding it is a review failure.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── layer 1 · tokens ─────────────────────────────────────────────────────── */
:root{
  color-scheme:light dark;

  --bg:#F3F0EA;          /* the surface the sheet rests on */
  --paper:#FCFAF8;       /* the sheet */
  --ink:#1A1618;         /* headings, emphasis */
  --ink-2:#4C464C;       /* body copy */
  --ink-3:#7D777F;       /* secondary, attribution, footnotes */
  --ink-4:#A7A1A9;       /* micro-labels, placeholder */
  --accent:#8C0F3B;      /* letterhead rule · metric · table emphasis · tick */
  --hair:rgba(0,0,0,.08);
  --rule:rgba(0,0,0,.18);
  --flash:rgba(140,15,59,.09);
  --sel:rgba(140,15,59,.14);
  --shadow:0 1px 1px rgba(26,22,24,.03),0 26px 60px -36px rgba(26,22,24,.30);

  --serif:'Playfair Display','Iowan Old Style',Georgia,serif;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;

  --gap:clamp(46px,7vw,72px);   /* the rhythm between sections */
  --pad:clamp(22px,6vw,72px);   /* sheet gutter */
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#111013;
    --paper:#191619;
    --ink:#F1ECE9;
    --ink-2:#BEB7BC;
    --ink-3:#8C858B;
    --ink-4:#6C666D;
    --accent:#E4899F;
    --hair:rgba(255,255,255,.11);
    --rule:rgba(255,255,255,.24);
    --flash:rgba(228,137,159,.13);
    --sel:rgba(228,137,159,.20);
    --shadow:0 26px 60px -36px rgba(0,0,0,.85);
  }
}

/* ── layer 2 · base ───────────────────────────────────────────────────────── */
.asset *{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body.asset{margin:0;font-family:var(--sans);font-size:14.5px;line-height:1.75;color:var(--ink-2);background:var(--bg);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  padding:clamp(0px,4vw,56px) clamp(0px,3vw,28px) clamp(32px,8vw,96px)}
.asset ::selection{background:var(--sel);color:var(--ink)}

/* ── the sheet ────────────────────────────────────── */
.asset .doc{background:var(--paper);max-width:800px;margin:0 auto;padding:0 var(--pad);
  border-radius:2px;box-shadow:var(--shadow)}

/* ── letterhead ───────────────────────────────────── */
.asset .dhead{display:flex;align-items:baseline;gap:24px;flex-wrap:wrap;
  padding:clamp(32px,6vw,58px) 0 20px;border-bottom:1px solid var(--accent)}
.asset .dl{font-family:var(--serif);font-size:19px;font-weight:500;color:var(--ink)}
.asset .dl em{font-style:italic;font-weight:400;color:var(--ink-3);margin-left:.32em}
.asset .dm{margin-left:auto;text-align:right;font-family:var(--mono);font-size:9px;line-height:2;
  letter-spacing:.06em;color:var(--ink-4);font-variant-numeric:tabular-nums}

/* ── title block ──────────────────────────────────── */
.asset .dbody{padding:clamp(38px,6vw,60px) 0 clamp(48px,9vw,88px)}
.asset .dtitle{font-family:var(--mono);font-size:8.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--ink-3)}
.asset h1{font-family:var(--serif);font-size:clamp(30px,5.2vw,42px);font-weight:400;line-height:1.14;
  letter-spacing:-.018em;color:var(--ink);max-width:20ch;margin:22px 0 20px}
.asset .dfor{font-family:var(--serif);font-style:italic;font-size:14.5px;line-height:1.6;color:var(--ink-3);
  max-width:56ch;margin-bottom:var(--gap)}

/* ── sections: whitespace instead of dividers ─────── */
.asset .dsec{position:relative;margin-bottom:var(--gap)}
.asset .dsec[hidden],.asset [data-section][hidden]{display:none}
.asset .dt{font-family:var(--mono);font-size:8.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ink-4);margin-bottom:16px}
.asset .dt [data-num]{color:var(--ink-3);font-variant-numeric:tabular-nums}
.asset h3{font-family:var(--serif);font-size:clamp(19px,2.6vw,22px);font-weight:500;line-height:1.32;
  letter-spacing:-.008em;color:var(--ink);max-width:32ch;margin-bottom:16px}
.asset p{max-width:68ch;margin-bottom:14px}
.asset p:last-child{margin-bottom:0}
.asset b,.asset strong{font-weight:600;color:var(--ink)}
.asset .fine{font-size:13px;color:var(--ink-3);max-width:64ch;margin-top:20px}

/* ── lists: hanging hairline, accent tick when added ── */
.asset ul.dlist{list-style:none;margin-top:22px;max-width:66ch}
.asset ul.dlist li{position:relative;padding-left:30px;font-size:14px;line-height:1.7;color:var(--ink-2);margin-bottom:12px}
.asset ul.dlist li:last-child{margin-bottom:0}
/* a border, not a background — background graphics are off by default in print */
.asset ul.dlist li:before{content:"";position:absolute;left:0;top:.78em;width:16px;height:0;
  border-top:1px solid var(--rule)}
.asset ul.dlist li.add:before{border-top-color:var(--accent);opacity:.8}
.asset ul.dlist li em{font-style:normal;font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-4);margin-left:10px;white-space:nowrap}

/* ── tables: one hairline, under the header row ───── */
.asset .tbl{width:100%;border-collapse:collapse;margin-top:24px;font-size:13.5px;line-height:1.6;
  font-variant-numeric:tabular-nums}
.asset .tbl th{font-family:var(--mono);font-size:8.5px;font-weight:400;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-4);text-align:left;vertical-align:bottom;padding:0 0 12px;border-bottom:1px solid var(--hair)}
.asset .tbl td{padding:16px 0;text-align:left;vertical-align:top;color:var(--ink-2)}
.asset .tbl th+th,.asset .tbl td+td{padding-left:32px}
.asset .tbl tr:nth-child(2) td{padding-top:20px}
.asset .tbl td.hi{color:var(--accent)}

/* ── proof: a quiet indent, not a card ────────────── */
.asset .quote{max-width:64ch;margin-top:26px;padding-left:26px;border-left:1px solid var(--hair)}
.asset .av{display:none}  /* monogram kept for the slot API; the attribution carries the source */
.asset .qt{font-family:var(--serif);font-style:italic;font-weight:400;font-size:clamp(18px,2.4vw,21px);
  line-height:1.5;letter-spacing:-.005em;color:var(--ink)}
.asset .qfoot{display:flex;align-items:baseline;gap:20px;flex-wrap:wrap;margin-top:20px}
.asset .qa{font-size:12.5px;color:var(--ink-3)}
.asset .qa b{color:var(--ink-2);font-weight:500}
.asset .metric{margin-left:auto;display:flex;align-items:baseline;gap:9px;white-space:nowrap}
.asset .mv{font-family:var(--serif);font-size:21px;font-weight:500;line-height:1;color:var(--accent);
  font-variant-numeric:tabular-nums}
.asset .ml{font-family:var(--mono);font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-4)}

/* ── money: the quiet climax ──────────────────────── */
.asset .total{margin-top:28px;padding:30px 0 34px;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.asset .total .tl{font-family:var(--mono);font-size:8.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ink-4);margin-bottom:18px}
.asset .total .tv{font-family:var(--serif);font-size:clamp(38px,7vw,54px);font-weight:400;line-height:1;
  letter-spacing:-.022em;color:var(--ink);font-variant-numeric:tabular-nums}

/* ── provenance footnotes ─────────────────────────── */
.asset .lock{margin-top:22px;padding-left:16px;border-left:1px solid var(--hair);
  font-family:var(--mono);font-size:10.5px;line-height:1.75;color:var(--ink-3);max-width:76ch}
.asset .lock:empty{display:none}

/* ── signature ────────────────────────────────────── */
.asset .dsig{display:flex;gap:clamp(32px,7vw,64px);flex-wrap:wrap;align-items:flex-end;
  margin-top:clamp(56px,9vw,88px);padding-top:32px;border-top:1px solid var(--hair)}
.asset .dsig[hidden]{display:none}
.asset .sl2{font-family:var(--mono);font-size:8.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ink-4);margin-bottom:44px}
.asset .line{width:200px;max-width:46vw;border-bottom:1px solid var(--rule)}

/* ── live-update affordances: a wash and a thin rule ── */
.asset [data-mirror]{position:relative}
.asset .fresh{animation:fresh 1.4s ease-out both;border-radius:3px}
@keyframes fresh{
  0%{background-color:var(--flash);box-shadow:0 0 0 5px var(--flash)}
  50%{background-color:var(--flash);box-shadow:0 0 0 5px var(--flash)}
  100%{background-color:transparent;box-shadow:0 0 0 5px transparent}
}
.asset .dsec:before{content:"";position:absolute;left:calc(var(--pad) / -2);top:.4em;bottom:.2em;width:1px;
  background:var(--accent);opacity:0;pointer-events:none}
.asset .dsec.freshsec:before{animation:freshsec 1.4s ease-out both}
@keyframes freshsec{0%{opacity:.5}55%{opacity:.4}100%{opacity:0}}

/* the document is final: nothing moves again */
body.asset.frozen .fresh,body.asset.frozen .dsec:before{animation:none!important}

/* explain mode: ?explain=1 — shows which signal wrote each block */
body.asset.explain [data-mirror]{outline:1px dashed var(--rule);outline-offset:7px}
body.asset.explain [data-mirror]:after{content:attr(data-mirror);position:absolute;top:-9px;right:0;
  font-family:var(--mono);font-size:7.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-4);background:var(--paper);padding:0 1px 0 9px;white-space:nowrap;z-index:2}

/* ── placeholder state ────────────────────────────── */
.asset .pending{color:var(--ink-4);font-style:italic}
/* provisional: the sentence they are still saying, already in the document.
   Lighter ink, no flash - the flash means settled, and spending it on a
   half-finished clause makes the one that matters unreadable. */
.asset .prov{color:var(--ink-3);opacity:.85}
.asset .prov:after{content:"…";color:var(--ink-4)}
@media print{.asset .prov:after{content:""}}

@media (max-width:680px){
  body.asset{padding:0 0 40px}
  .asset .doc{border-radius:0;box-shadow:none;max-width:none}
  .asset .dm{margin-left:0;text-align:left}
  .asset .metric{margin-left:0}
}
@media (max-width:480px){
  .asset .tbl{font-size:12.5px}
  .asset .tbl th+th,.asset .tbl td+td{padding-left:16px}
  .asset .qfoot{gap:14px}
}
@media (prefers-reduced-motion:reduce){
  .asset .fresh,.asset .dsec.freshsec:before{animation:none}
}

/* ── print ────────────────────────────────────────── */
@media print{
  @page{margin:18mm 16mm}
  :root{
    --bg:#fff;--paper:#fff;--ink:#000;--ink-2:#2A252A;--ink-3:#57525C;--ink-4:#78727A;
    --accent:#8C0F3B;--hair:rgba(0,0,0,.2);--rule:rgba(0,0,0,.3);--shadow:none;
    --pad:0px;--gap:26pt;
  }
  body.asset{background:#fff;padding:0;font-size:10.5pt;line-height:1.6;orphans:3;widows:3}
  .asset .doc{max-width:none;padding:0;border-radius:0;box-shadow:none}
  .asset .dhead{padding-top:0}
  .asset .dbody{padding:24pt 0 0}
  .asset h1{font-size:24pt}
  .asset h3{font-size:14pt}
  .asset .total .tv{font-size:30pt}
  .asset .dsec,.asset .quote,.asset .total,.asset .dsig,.asset .tbl tr{break-inside:avoid}
  .asset .dsec:before{display:none}
  .asset .fresh{animation:none;background:transparent;box-shadow:none}
  body.asset.explain [data-mirror]:after{display:none}
  body.asset.explain [data-mirror]{outline:0}
}
