@import url("/css/ll-type.css?v=0.60.80&pad=6a");
/* ============================================================
   LOANLEDGER · v5 SYSTEM — canonical stylesheet (ll-v5.css)
   The one token + component base. Dark-first (v5 north star);
   [data-theme="light"] override for app/console (T2/T1) surfaces.
   Import this on every page. Immersion is dialed by surface class,
   not by forking the tokens.
   ============================================================ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
/* [hidden] MEANS HIDDEN. The browser's built-in rule is only `[hidden]{display:none}`,
   which any class selector setting `display` outranks — so a component with
   `display:flex` stays on screen while the DOM insists it is hidden. That has now been
   diagnosed and patched locally at least five times in this codebase (.sgp-btn, .notif,
   .diverge, the signals-profile button, and the changelog entry, whose project filter
   marked 32 of 35 entries hidden while all 35 stayed visible to every visitor).
   Fixing it once here ends the class. !important is deliberate: this must beat a class
   selector regardless of which stylesheet loads last, which is the whole failure mode.
   Verified before adding: no rule in the product deliberately displays a [hidden]
   element — the only related selectors are :not([hidden]) forms, which are unaffected. */
[hidden]{display:none!important;}

/* ---------- TOKENS · dark (default, v5) ---------- */
:root{
  /* surfaces */
  --bg:#0f1419;--bg-2:#12171f;--card:#121821;--card-2:#0f151d;--inset:#1a212c;--sunk:#0c1119;
  color-scheme:dark;
  /* ink — THE RAMP: ink > text > muted > dim, and EVERY step clears 4.5:1 on every
     surface token (card, bg, inset, bg-2, sunk, card-2). --dim is a step of the
     reading ladder, not a decorative grey: the shell alone colours 27 rules with it
     (a borrower's handle, a currency, stat labels, panel sub-lines) and 35 pages use
     it directly. Its old values (#566173 dark / #9aa2ae light) cleared 4.5 on NO
     ground in EITHER theme — 2.96 at best — which is why the product read washed out.
     Measured worst-case now: dim 4.50 dark / 4.55 light. If you lighten either value,
     re-measure against --inset (dark) and --bg (light); those are the worst grounds. */
  --ink:#f4f6f8;--text:#c4cad2;--muted:#9aa3b0;--dim:#7888a1;
  /* brand + spectrum */
  --gold:#e6a52a;--goldHi:#f5c451;
  --green:#3fd08a;--greenHi:#5fe0a0;
  --blue:#3b82f6;--blueHi:#7fb2ff;
  --violet:#b57bff;--violetHi:#c9a3ff;
  --red:#ef5d6a;--redHi:#ff7d88;
  /* product accents (semantic — used across every surface) */
  --ledger:var(--blueHi);--signals:var(--violet);--warden:var(--goldHi);--admin:var(--redHi);
  /* NET-1: the network wears no product colour — its accent is the ink itself */
  --network:var(--ink);
  /* soft tints */
  --gold-soft:rgba(230,165,42,.13);--green-soft:rgba(63,208,138,.13);--red-soft:rgba(239,93,106,.13);
  --blue-soft:rgba(59,130,246,.15);--violet-soft:rgba(181,123,255,.15);
  /* borders */
  --border:#293444;--border-2:#1f2938;--border-strong:rgba(230,165,42,.42);
  --row-hover:rgba(255,255,255,.035);--input-bg:rgba(0,0,0,.28);
  /* type */

  /* radius / motion / elevation */
  --r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:22px;--r-pill:999px;
  --s1:.25rem;--s2:.5rem;--s3:.75rem;--s4:1rem;--s6:1.5rem;--s8:2rem;--s10:2.5rem;
  --t-fast:130ms;--t-base:220ms;--t-slow:420ms;--ease:cubic-bezier(.22,1,.36,1);
  --sh-sm:0 1px 2px rgba(0,0,0,.5);
  --sh-md:0 8px 26px -8px rgba(0,0,0,.6),0 1px 2px rgba(0,0,0,.4);
  --sh-lg:0 30px 70px -20px rgba(0,0,0,.7);
  --glow-gold:0 0 30px -6px rgba(245,196,81,.5);--edge-gold:inset 0 1px 0 rgba(255,255,255,.45);
  /* gradients */
  --grad-gold:linear-gradient(150deg,#f5c451,#e6a52a 55%,#c07f16);
  --grad-gold-text:var(--grad-gold);
  --sidebar-w:250px;--sidebar-collapsed:66px;--topbar-h:58px;
}
/* ---------- TOKENS · light (T2 app / T1 console) ---------- */
[data-theme="light"]{
  --bg:#e7e9ee;--bg-2:#eef0f4;--card:#ffffff;--card-2:#fbfcfe;--inset:#eceef3;--sunk:#f4f6f9;
  color-scheme:light;
  --ink:#161b22;--text:#39414d;--muted:#525861;--dim:#646971;
  --gold:#8c610e;--goldHi:#7c560c;
  /* light "hi" goes DARKER (toward ink), never lighter — the Hi variants are the TEXT
     variants on light surfaces. Every accent above clears 4.5:1 on --card, --bg AND
     --inset; before this they cleared it on none of the three (gold read 2.65 on --bg,
     green 3.53, the ledger blue 3.43), which is why accent text looked washed out and
     why --warden had already been hand-set to a bronze ink for exactly this reason.
     Light accents are ink-weight by design — do not brighten them back toward the dark
     palette's values without re-measuring. */
  /* product accents — light needs its own ink-weight values (dark's glow golds wash out on light):
     warden = bronze ink, ~4.7:1 on --bg. Literal (not var-chained) so page-level --goldHi overrides can't lighten it.
     admin = the rust ink --red (dark's glow --redHi washes out on light). */
  --warden:#8a5f0d;
  --admin:var(--red);
  --green:#29774c;--greenHi:#246943;
  --blue:#245fe3;--blueHi:#2054ca;
  --violet:#7850cd;--violetHi:#6b47b6;
  --red:#bb3f0c;--redHi:#a6380b;
  --gold-soft:#f5ecdb;--green-soft:#e6f1ea;--red-soft:#f7eae2;
  --blue-soft:#e9eff9;--violet-soft:#efeafa;
  --border:#d5d9e0;--border-2:#e4e7ec;--border-strong:rgba(191,132,19,.4);
  --row-hover:#f6f8fb;--input-bg:#ffffff;
  --sh-sm:0 1px 2px rgba(22,38,61,.05);
  --sh-md:0 4px 14px rgba(22,38,61,.08),0 1px 2px rgba(22,38,61,.05);
  --sh-lg:0 22px 54px rgba(22,38,61,.14);
  --glow-gold:0 6px 18px rgba(191,132,19,.28);
  /* gradient TEXT deepens on light (plate gradients stay bright — they carry espresso ink) */
  --grad-gold-text:linear-gradient(150deg,#b8860f,#96690c 55%,#7a540a);
}

/* ---------- BASE ---------- */
html{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
body{min-height:100vh;}
.num{font-family:var(--mono);font-feature-settings:"tnum";letter-spacing:-.01em;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;color:inherit;}
::-webkit-scrollbar{width:11px;height:11px;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px;border:3px solid transparent;background-clip:content-box;}
::-webkit-scrollbar-thumb:hover{background:var(--border-strong);background-clip:content-box;}
/* wave 1 (SHELL-WAVE-1): ONE focus ring, coloured by the product the page belongs to —
   blue for the Ledger, violet for Signals, gold for Warden, green for the network's own
   rooms. Drawn, never suppressed; a page may restyle a component's ring, not remove it. */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--blueHi);outline-offset:2px;border-radius:3px;}
[data-product="signals"] :where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline-color:var(--violet);}
[data-product="warden"] :where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline-color:var(--goldHi);}
[data-product="warden"][data-member-ui] :where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline-color:var(--ac);}
[data-product="network"] :where(a,button,input,select,textarea,summary,[tabindex]):focus-visible,[data-product="lobby"] :where(a,button,input,select,textarea,summary,[tabindex]):focus-visible,[data-product="admin"] :where(a,button,input,select,textarea,summary,[tabindex]):focus-visible,[data-product="lab"] :where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline-color:var(--green);}
/* reduced motion: the member's choice (or the OS's) stops every animation and transition */
html[data-motion="reduce"] *,html[data-motion="reduce"] *::before,html[data-motion="reduce"] *::after{animation:none!important;transition:none!important;}
html[data-motion="reduce"]{scroll-behavior:auto;}
/* discreet money: masked amounts read as $••• and peek on hover */
.llm{cursor:default;}
html[data-discreet="1"] .llm{text-decoration:underline dotted color-mix(in srgb,var(--ink) 30%,transparent);text-underline-offset:3px;}

/* ---------- TYPE HELPERS ---------- */
.kicker{font-family:var(--mono);font-size:.66rem;font-weight:700;letter-spacing:var(--tr-label);text-transform:uppercase;color:var(--gold);}
.mono-label{font-family:var(--mono);font-size:.6rem;font-weight:700;letter-spacing:var(--tr-label);text-transform:uppercase;color:var(--muted);}
.h1{font-size:clamp(2rem,4vw,3rem);font-weight:800;letter-spacing:-.025em;color:var(--ink);line-height:1.05;text-wrap:balance;}
.h2{font-size:clamp(1.4rem,2.4vw,2rem);font-weight:800;letter-spacing:-.02em;color:var(--ink);line-height:1.12;}
.h3{font-size:1.06rem;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
.lead{font-size:1.02rem;color:var(--muted);line-height:1.55;text-wrap:pretty;}
.gold-text{background:var(--grad-gold-text);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}

/* ---------- IMMERSION TIERS (surface classes) ---------- */
.tier{border-radius:var(--r-lg);position:relative;overflow:hidden;}
/* T3 — immersive cosmic. FORCED-DARK ISLAND: cosmic surfaces are always dark, so they
   re-pin the ink ladder + gradient text locally — readable in BOTH themes by construction. */
.tier-immersive{background:radial-gradient(120% 90% at 50% -10%,#101826,#080b12 60%);border:1px solid var(--border-2);
  --ink:#f4f6f8;--text:#c4cad2;--muted:#9aa3b0;--dim:#7888a1;
  --card:#121821;--card-2:#0f151d;--inset:#1a212c;--sunk:#0c1119;
  --border:#293444;--border-2:#1f2938;--row-hover:rgba(255,255,255,.035);
  --goldHi:#f5c451;--gold:#e6a52a;
  --grad-gold-text:linear-gradient(150deg,#f5c451,#e6a52a 55%,#c07f16);
  --sh-sm:0 1px 2px rgba(0,0,0,.5);--sh-md:0 8px 26px -8px rgba(0,0,0,.6),0 1px 2px rgba(0,0,0,.4);
  color:var(--text);color-scheme:dark;}
.tier-immersive .starfield{position:absolute;inset:0;pointer-events:none;opacity:.7;}
.tier-immersive .st{position:absolute;border-radius:50%;background:#fff;opacity:var(--o,.5);animation:ll-tw var(--d,3s) ease-in-out infinite alternate;}
@keyframes ll-tw{to{opacity:.15;}}
/* T2 — ambient app */
.tier-ambient{background:var(--bg-2);border:1px solid var(--border-2);}
.tier-ambient::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 70% 50% at 15% -10%,rgba(230,165,42,.06),transparent 60%);}
/* T1 — utility console */
.tier-utility{background:var(--sunk);border:1px solid var(--border-2);}
@media(prefers-reduced-motion:reduce){.tier-immersive .st{animation:none;}}

/* ---------- BUTTONS & CTAS ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;font-family:var(--font);font-weight:700;font-size:.85rem;padding:.6rem 1.05rem;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--card);color:var(--text);transition:transform var(--t-fast) var(--ease),border-color var(--t-base),background var(--t-base),box-shadow var(--t-base);white-space:nowrap;box-shadow:var(--sh-sm);}
.btn svg{width:15px;height:15px;}
.btn:hover{transform:translateY(-1px);border-color:var(--border-strong);color:var(--ink);}
.btn:active{transform:translateY(0) scale(.98);}
.btn.primary{background:var(--grad-gold);border-color:transparent;color:#2a1c02;font-weight:700;box-shadow:var(--glow-gold);}
.btn.primary:hover{color:#2a1c02;filter:brightness(1.05);}
.btn.ghost{background:transparent;}
.btn.soft{background:var(--gold-soft);border-color:transparent;color:var(--goldHi);}
.btn.danger{color:var(--red);border-color:transparent;background:var(--red-soft);}
.btn.danger:hover{color:var(--redHi);}
.btn.lg{padding:.8rem 1.5rem;font-size:.96rem;}
.btn.sm{padding:.42rem .75rem;font-size:.78rem;}
.btn .arw{transition:transform var(--t-base) var(--ease);}
.btn:hover .arw{transform:translateX(3px);}
.btn.loading{color:transparent!important;pointer-events:none;position:relative;}
.btn.loading::after{content:"";position:absolute;top:50%;left:50%;width:15px;height:15px;margin:-7.5px 0 0 -7.5px;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:ll-spin .7s linear infinite;color:var(--ink);}
.link-arw{display:inline-flex;align-items:center;gap:.35rem;font-weight:700;font-size:.86rem;color:var(--goldHi);cursor:pointer;}
.link-arw .arw{transition:transform var(--t-base) var(--ease);}
.link-arw:hover .arw{transform:translateX(4px);}

/* ---------- CHIPS / TOGGLES / TABS / FILTER ---------- */
.chip{font-family:var(--mono);font-size:.74rem;font-weight:700;color:var(--muted);background:var(--card);border:1px solid var(--border);padding:.34rem .72rem;border-radius:var(--r-pill);cursor:pointer;transition:all var(--t-fast);}
.chip:hover{color:var(--ink);border-color:var(--border-strong);}
.chip.on{background:color-mix(in srgb,var(--ac,var(--gold)) 14%,transparent);color:var(--ac,var(--gold));border-color:color-mix(in srgb,var(--ac,var(--gold)) 45%,transparent);font-weight:700;}
.seg{display:inline-flex;background:var(--card);border:1px solid var(--border);border-radius:var(--r-pill);padding:3px;gap:2px;}
.seg button{font-weight:700;font-size:.8rem;color:var(--muted);background:none;border:none;padding:.42rem .9rem;border-radius:var(--r-pill);transition:all var(--t-fast);}
.seg button.on{background:color-mix(in srgb,var(--ac,var(--gold)) 18%,transparent);color:var(--ac,var(--gold));font-weight:700;}
.tabs{display:flex;gap:.3rem;border-bottom:1px solid var(--border-2);}
.tabs a{font-size:.86rem;font-weight:700;color:var(--muted);padding:.6rem .9rem;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;transition:all var(--t-fast);}
.tabs a:hover{color:var(--ink);}
.tabs a.on{color:var(--goldHi);border-bottom-color:var(--goldHi);}
[data-product="warden"][data-member-ui] .tabs a.on{color:var(--ac);border-bottom-color:var(--ac);}

/* ---------- INPUTS ---------- */
.field{font-family:var(--font);font-size:.88rem;color:var(--ink);background:var(--input-bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:.6rem .85rem;outline:none;transition:border-color var(--t-fast),box-shadow var(--t-fast);width:100%;}
@media(max-width:560px){
  input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="range"]),select,textarea,.field,.btn.sm{min-height:44px;}
  [data-product="ledger"] .rowact{width:44px;height:44px;min-width:44px;min-height:44px;}
}
.field::placeholder{color:var(--dim);}
.field:focus{border-color:var(--goldHi);box-shadow:0 0 0 3px var(--gold-soft);}
[data-product="warden"][data-member-ui] .field:focus{border-color:var(--ac);}
.search{position:relative;}
.search svg{position:absolute;left:.8rem;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--dim);}
.search .field{padding-left:2.35rem;}

/* ---------- CARDS ---------- */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-md);overflow:hidden;}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border-2);}
.card-b{padding:1.1rem 1.25rem;}
.panel{background:var(--card);border:1px solid var(--border-2);border-radius:var(--r-md);box-shadow:var(--sh-sm);}
/* product card */
.scard{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:1.5rem;overflow:hidden;transition:transform var(--t-base) var(--ease),border-color var(--t-base);box-shadow:var(--sh-md);}
.scard:hover{transform:translateY(-3px);border-color:color-mix(in oklab,var(--ac,var(--gold)) 55%,transparent);}
.scard::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--ac,var(--gold));}
.scard .tag{font-family:var(--mono);font-size:.62rem;font-weight:700;letter-spacing:var(--tr-label);text-transform:uppercase;color:var(--ac,var(--gold));}
.scard h3{font-size:1.15rem;font-weight:800;color:var(--ink);margin:.5rem 0 .35rem;letter-spacing:-.01em;}
.scard p{font-size:.88rem;color:var(--muted);line-height:1.55;}
.scard .lk{display:inline-flex;margin-top:1rem;font-weight:700;font-size:.82rem;color:var(--ac,var(--gold));}

/* ---------- KPI TILE ---------- */
.kpi{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);padding:1.15rem 1.3rem;box-shadow:var(--sh-sm);overflow:hidden;}
.kpi::before{content:"";position:absolute;top:0;left:0;width:100%;height:3px;background:linear-gradient(90deg,var(--ac,var(--gold)),transparent 72%);}
.kpi::after{content:"";position:absolute;top:-34%;right:-12%;width:120px;height:120px;border-radius:50%;background:var(--ac,var(--gold));opacity:.06;filter:blur(22px);}
.kpi .kl{display:flex;align-items:center;gap:.4rem;font-family:var(--mono);font-size:.66rem;font-weight:700;letter-spacing:var(--tr-label);text-transform:uppercase;color:var(--muted);}
/* LEDGER-KV-2: the label icon was a per-page inline-grid with a hard-coded
   hard-coded baseline nudge (measured 3px off-centre everywhere). One shared
   flex row centres icon and text geometrically. */
.kpi .kl .i{flex:none;width:21px;height:21px;border-radius:6px;display:inline-grid;place-items:center;background:color-mix(in oklab,var(--ac) 15%,transparent);color:var(--ac);}
.kpi .kl .i svg{width:12px;height:12px;}
.kpi .kv{font-family:var(--mono);font-weight:700;font-size:1.8rem;color:var(--ink);margin-top:.45rem;line-height:1;letter-spacing:-.03em;}
.kpi .kv .cur{font-size:1rem;color:var(--dim);font-weight:700;}
.kpi .ks{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem .7rem;margin-top:.55rem;font-size:.78rem;color:var(--muted);}
/* LEDGER-KV-2: each sub-line fact is one unbreakable unit; the row wraps
   BETWEEN facts, never inside "9 overdue". Amount chips inside a fact share
   the headline-breakdown chip look. */
.kpi .ks .ksf{display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap;}
.kpi .ks .ksf.bad{color:var(--red);font-weight:700;}
.kpi .ks a.ksf.hid{color:var(--muted);text-decoration:none;border-bottom:1px dashed var(--border-2);font-weight:700;}
.kpi .ks a.ksf.hid:hover{color:var(--ink);border-bottom-color:var(--ink);}
.kpi .ks .ksf .kvc{display:inline-flex;align-items:center;padding:.18rem .42rem;border-radius:999px;background:var(--inset);color:inherit;font-family:var(--font);font-size:.68rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:0;line-height:1;}
.delta{font-family:var(--mono);font-weight:700;font-size:.78rem;}
.delta.up{color:var(--green);}.delta.down{color:var(--red);}

/* ---------- DATA ROWS ---------- */
.lrow{display:flex;align-items:center;gap:1rem;padding:.9rem 1.15rem;background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--sh-sm);}
.lrow.over{border-color:color-mix(in oklab,var(--red) 45%,var(--border));}
.lrow .who{display:flex;flex-direction:column;gap:.15rem;}
.lrow .nm{font-size:.92rem;font-weight:700;color:var(--ink);}
.lrow .nm .id{font-family:var(--mono);font-size:.7rem;color:var(--dim);font-weight:700;}
.lrow .due{font-size:.76rem;color:var(--muted);}
.lrow .due .late{color:var(--red);font-weight:700;}.lrow .due .soon{color:var(--gold);font-weight:700;}
.lrow .amt{margin-left:auto;font-family:var(--mono);font-weight:700;font-size:.96rem;color:var(--ink);}
.lrow .acts{display:flex;gap:.4rem;}
.brow{display:grid;grid-template-columns:auto 1fr auto auto auto auto;align-items:center;gap:1rem;padding:.9rem 1.15rem;background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--sh-sm);}
.bav{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:.74rem;flex:none;}
.bwho{display:flex;flex-direction:column;gap:.12rem;min-width:0;}
.bname{font-size:.88rem;font-weight:700;color:var(--ink);}
.baka{font-family:var(--mono);font-size:.62rem;color:var(--gold);font-weight:700;}
.bhandle{font-family:var(--mono);font-size:.68rem;color:var(--dim);}
.bsig{font-size:.72rem;color:var(--muted);text-align:right;line-height:1.3;}
.bout{font-family:var(--mono);font-weight:700;font-size:.88rem;color:var(--ink);text-align:right;}
.btouch{font-size:.66rem;color:var(--dim);text-align:right;}
.bchev{width:18px;height:18px;color:var(--dim);}
/* signal row */
.srow{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:1rem;padding:.85rem 1.15rem;background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--sh-sm);}
.srow .cnt{display:flex;gap:.5rem;font-family:var(--mono);font-size:.72rem;font-weight:700;}
.srow .cnt .up{color:var(--green);}.srow .cnt .dn{color:var(--red);}
.srow .sub{font-family:var(--mono);font-size:.66rem;color:var(--dim);}

/* ---------- BADGES / PILLS / STAMPS / RISK ---------- */
.badge{display:inline-flex;align-items:center;gap:.32rem;font-size:.66rem;font-weight:700;padding:.2rem .52rem;border-radius:5px;}
.badge .d{width:5px;height:5px;border-radius:50%;background:currentColor;}
.badge.active{color:var(--blueHi);background:var(--blue-soft);}
.badge.repaid{color:var(--green);background:var(--green-soft);}
.badge.overdue{color:var(--red);background:var(--red-soft);}
.badge.late{color:var(--gold);background:var(--gold-soft);}
.pill{font-family:var(--mono);font-size:.6rem;font-weight:700;padding:.14rem .5rem;border-radius:var(--r-pill);}
.pill.due{background:var(--green-soft);color:var(--green);}
.pill.late{background:var(--red-soft);color:var(--red);}
.risk{display:inline-flex;align-items:center;gap:.35rem;font-size:.68rem;font-weight:700;padding:.24rem .58rem;border-radius:var(--r-pill);white-space:nowrap;}
.risk .d{width:6px;height:6px;border-radius:50%;background:currentColor;}
.risk.def{color:var(--red);background:var(--red-soft);}
.risk.flag{color:var(--gold);background:var(--gold-soft);}
.risk.unv{color:var(--muted);background:var(--inset);}
.risk.good{color:var(--green);background:var(--green-soft);}
.stamp{font-family:var(--mono);font-weight:800;font-size:.6rem;letter-spacing:.09em;color:#fff;background:#d23b48;border:1.5px solid #ff7a85;border-radius:5px;padding:.2rem .5rem;text-transform:uppercase;}
.stamp.match{background:linear-gradient(180deg,#ffe49a,#f0a92a);color:#2a1c02;border-color:#ffe49a;}

/* ---------- STATES ---------- */
@keyframes ll-spin{to{transform:rotate(360deg);}}
@keyframes ll-shimmer{100%{background-position:-200% 0;}}
.spinner{width:16px;height:16px;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:ll-spin .7s linear infinite;display:inline-block;}
.skel{border-radius:var(--r-sm);background:linear-gradient(100deg,var(--inset) 30%,var(--row-hover) 50%,var(--inset) 70%);background-size:200% 100%;animation:ll-shimmer 1.4s linear infinite;}
.skel-line{height:12px;}.skel-line.lg{height:16px;}.skel-line.sm{height:9px;}
@media(prefers-reduced-motion:reduce){.skel,.spinner{animation-duration:2s;}}
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:3rem 1.5rem;}
.empty .ill{width:68px;height:68px;border-radius:20px;display:grid;place-items:center;margin-bottom:1.1rem;background:var(--gold-soft);color:var(--goldHi);}
.empty .ill svg{width:32px;height:32px;}
.empty h3{font-size:1.05rem;font-weight:700;color:var(--ink);margin-bottom:.4rem;}
.empty p{font-size:.86rem;color:var(--muted);max-width:42ch;line-height:1.55;margin-bottom:1.2rem;text-wrap:pretty;}

/* ---------- OVERLAYS ---------- */
.annbar{display:flex;align-items:center;justify-content:center;gap:.7rem;padding:.6rem 1rem;font-size:.82rem;font-weight:700;color:#2a1c02;background:var(--grad-gold);}
.annbar .link-arw{color:#2a1c02;}
.toast{display:flex;align-items:center;gap:.7rem;padding:.75rem 1rem;background:var(--card);border:1px solid var(--border);border-left:3px solid var(--oc-green);border-radius:var(--r-sm);box-shadow:var(--sh-lg);font-family:var(--font);font-size:var(--t-ui);line-height:var(--lh-ui);color:var(--ink);max-width:340px;min-height:5.5rem;opacity:1;transform:none;}
.toast.warn{border-left-color:var(--oc-gold);}
.toast.err{border-left:3px double var(--oc-red);}
.toast>[data-ll-icon]{display:inline-flex;flex:none;color:var(--oc-green);}
.toast [data-toast-copy]{display:grid;gap:.35rem;min-width:0;flex:1;overflow-wrap:anywhere;}
.toast [data-outcome-word]{font-family:var(--mono);font-size:var(--t-label);font-weight:var(--w-bold);line-height:var(--lh-label);letter-spacing:var(--tr-label);text-transform:uppercase;color:var(--oc-green);}
.toast [data-toast-detail]:not(:empty)::before{content:". ";}
.toast.err>[data-ll-icon],.toast.err [data-outcome-word]{color:var(--oc-red);}
.toast.warn>[data-ll-icon],.toast.warn [data-outcome-word]{color:var(--oc-gold);}
.toast[data-toast]{position:fixed;right:1.4rem;bottom:1.4rem;z-index:1100;width:max-content;max-width:min(340px,calc(100vw - 2.8rem));}
@keyframes toast-settle{from{opacity:0;transform:translateY(.5rem);}to{opacity:1;transform:none;}}
@media(prefers-reduced-motion:no-preference){.toast.show{animation:toast-settle var(--t-base) var(--ease);}}
@media(prefers-reduced-motion:reduce){.toast{animation:none;transition:none;}}
.modal-scrim{position:absolute;inset:0;background:rgba(4,7,12,.68);backdrop-filter:blur(3px);display:grid;place-items:center;}
.modal{width:min(440px,92%);background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-lg);overflow:hidden;}
.modal .m-b{padding:1.5rem;}
.modal h3{font-size:1.2rem;font-weight:800;color:var(--ink);margin-bottom:.5rem;letter-spacing:-.01em;}
.modal p{font-size:.9rem;color:var(--muted);line-height:1.55;margin-bottom:1.3rem;}
.modal .m-acts{display:flex;gap:.6rem;justify-content:flex-end;}
.coach{position:relative;background:var(--ink);color:var(--bg);border-radius:var(--r-md);padding:.9rem 1.05rem;max-width:260px;box-shadow:var(--sh-lg);font-size:.82rem;line-height:1.5;}
.coach b{font-weight:800;}
.coach::after{content:"";position:absolute;left:24px;bottom:-7px;width:14px;height:14px;background:var(--ink);transform:rotate(45deg);}

/* ---------- UTILITIES ---------- */
.stack{display:flex;flex-direction:column;gap:.7rem;}
.row-x{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center;}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;}
@media(max-width:820px){.grid-3,.grid-4{grid-template-columns:1fr 1fr;}}
@media(max-width:520px){.grid-3,.grid-4{grid-template-columns:1fr;}}

/* LEDGER-KV-2: multi-currency headline stats — the primary currency keeps the
   headline; every other exact native amount is a quiet proportional chip on
   one wrapping row, so the eye reads headline + breakdown, not two rows of
   figures. Single-currency books render no row. */
.kv .kv-more{display:flex;flex-wrap:wrap;gap:.3rem .35rem;margin-top:.5rem;font-family:var(--font);font-size:.7rem;font-weight:700;letter-spacing:0;line-height:1;}
.kv .kv-more .kvc{display:inline-flex;align-items:center;padding:.22rem .48rem;border-radius:999px;background:var(--inset);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;}
.kv .kv-more .kvc.neg{color:var(--red);}

/* ---------- COHESION-1: shared page pieces, defined ONCE (2026-08-16) ----------
   Ported from the pinned mock set (design/warden Home v5 .phead/.sech/.fact→.fact-tag/.wq,
   design/ledger Today v5 .kpi-band/.st-first, Underwrite v5 .pastebar/.try).
   Every product page consumes these; a page may not re-declare them
   (test/cohesion-1-shell-pieces.contract.test.js). The eyebrow, prompt glyph
   and try-chip accents follow the product accent (--ac). */
.page-h{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:0 0 1.3rem;}
.page-h .eyebrow{font-family:var(--mono);font-size:.62rem;font-weight:700;letter-spacing:var(--tr-eyebrow);text-transform:uppercase;color:var(--ac);margin-bottom:.45rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;}
.page-h .eyebrow::after{content:"";width:34px;height:1px;background:linear-gradient(90deg,var(--ac),transparent);}
.page-h .eyebrow svg{width:11px;height:11px;}
.page-h h1{font-weight:800;letter-spacing:-.02em;font-size:1.65rem;color:var(--ink);margin:0;}
.page-h .intro{font-size:.88rem;color:var(--muted);margin-top:.35rem;max-width:62ch;line-height:1.55;}
.page-h .intro b{color:var(--text);font-weight:700;}
.page-h .acts{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;}
.kpi-band{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-bottom:1.5rem;}
@media(max-width:1100px){.kpi-band{grid-template-columns:1fr 1fr;}}
@media(max-width:480px){.kpi-band{grid-template-columns:1fr;}}
/* STATS-RANGE-1: a five-figure band (Stats). Five across while a six-figure amount still fits a tile; a fact longer than its
   tile wraps inside it instead of clipping (shorter facts stay whole, LEDGER-KV-2); below 1240px, pairs with the fifth tile full width. */
.kpi-band.five{grid-template-columns:repeat(5,minmax(0,1fr));}
.kpi-band.five .kpi .ks .ksf{display:block;white-space:normal;}
@media(max-width:1240px){.kpi-band.five{grid-template-columns:1fr 1fr;}.kpi-band.five>.kpi:last-child{grid-column:1/-1;}}
@media(max-width:480px){.kpi-band.five{grid-template-columns:1fr;}}
.empty-lane{font-size:var(--t-small,0.8125rem);color:var(--muted);padding:1rem 1.1rem;background:var(--card);border:1px dashed var(--border);border-radius:var(--r-md);}
.arow{display:flex;align-items:center;gap:1rem;padding:.9rem 1.1rem;background:var(--card);border:1px solid var(--border);border-left:3px solid var(--rc,var(--gold));border-radius:var(--r-md);box-shadow:var(--sh-sm);transition:transform var(--t-base) var(--ease),box-shadow var(--t-base),border-color var(--t-base);position:relative;overflow:hidden;}
.arow.over{--rc:var(--red);border-color:color-mix(in oklab,var(--red) 30%,var(--border));border-left-color:var(--rc,var(--blue));}
.arow:hover{transform:translateY(-2px);box-shadow:var(--sh-md);border-color:var(--border-strong);border-left-color:var(--rc,var(--blue));}
.arow .av{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:var(--t-label,0.75rem);flex:none;background:var(--inset);color:var(--muted);}
.arow.over .av{background:var(--red-soft);color:var(--red);}
.arow .identity{display:flex;align-items:center;gap:1rem;min-width:0;flex:1 1 220px;color:inherit;text-decoration:none;border-radius:var(--r-sm);}
.arow a.identity:hover .nm{color:var(--blueHi);}
.arow .who{display:flex;flex-direction:column;gap:.18rem;min-width:0;}
.arow .nm{font-size:var(--t-ui,0.875rem);font-weight:700;color:var(--ink);display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;}
.arow .nm .id{font-family:var(--mono);font-size:var(--t-micro,0.6875rem);color:var(--dim);font-weight:var(--w-bold);background:var(--inset);padding:.05rem .35rem;border-radius:4px;}
.arow .due{font-size:var(--t-label,0.75rem);color:var(--muted);display:flex;align-items:center;gap:.5rem;}
.arow .chip{font-family:var(--mono);font-size:var(--t-micro,0.6875rem);font-weight:700;padding:.12rem .45rem;cursor:default;}
.arow .chip.late{color:var(--red);background:var(--red-soft);}.arow .chip.soon{color:var(--gold);background:var(--gold-soft);}
.arow .amt{margin-left:auto;font-family:var(--mono);font-weight:700;font-size:var(--t-body,1rem);color:var(--ink);white-space:nowrap;}
.arow .acts{display:flex;gap:.4rem;}
.arow.gone{opacity:0;transform:translateX(-14px);transition:opacity .3s,transform .3s;}
body[data-animate] .arow{animation:rise .5s var(--ease) both;}
@keyframes rise{from{transform:translateY(10px);}to{transform:none;}}
@media(prefers-reduced-motion:reduce){body[data-animate] .arow{animation:none;}}
.tsum-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.7rem;}
@media(max-width:680px){.tsum-grid{grid-template-columns:1fr;}}
.tsum{display:flex;align-items:center;gap:.9rem;background:var(--card);border:1px solid var(--border);border-left:3px solid var(--tc);border-radius:var(--r-md);padding:.75rem 1.1rem;box-shadow:var(--sh-sm);position:relative;overflow:hidden;}

.tsum .big{font-family:var(--mono);font-weight:var(--w-bold);font-size:1.5rem;line-height:1;color:var(--tc);}
.tsum.empty .big{color:var(--dim);}
.tsum .meta .t{font-size:.92rem;font-weight:700;color:var(--ink);}
.tsum .meta .s{font-size:.76rem;color:var(--muted);margin-top:.15rem;}
.tsum .ic{margin-left:auto;width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:color-mix(in oklab,var(--tc) 13%,transparent);color:var(--tc);}
.tsum .ic svg{width:16px;height:16px;}
.sech{display:flex;align-items:baseline;gap:.7rem;margin-bottom:.85rem;}
.sech h2{font-size:.98rem;font-weight:800;color:var(--ink);margin:0;letter-spacing:-.01em;}
.sech .c{font-family:var(--mono);font-size:.62rem;font-weight:700;letter-spacing:var(--tr-label);text-transform:uppercase;color:var(--dim);}
.sech .c.n{color:var(--ink);background:var(--inset);padding:.1rem .45rem;border-radius:999px;letter-spacing:.04em;}
.sech .sp{flex:1;height:1px;background:var(--border-2);}
[data-product="warden"][data-member-ui] .ll-home .card-h .sech .sp{background:var(--border);}
.sech a.c{color:var(--ac);text-decoration:none;}
.sech a.c:hover{text-decoration:underline;}
.panel>.sech:first-child{align-items:center;margin:0;padding:.8rem 1.2rem;border-bottom:1px solid var(--border-2);}
.fact-tag{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--mono);font-size:.68rem;font-weight:700;color:var(--muted);background:var(--card);border:1px solid var(--border-2);padding:.28rem .6rem;border-radius:var(--r-pill);}
.fact-tag b{color:var(--text);}
.ask{display:flex;align-items:center;gap:.6rem;background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);padding:.8rem 1rem;box-shadow:var(--sh-sm);}
.ask:focus-within{border-color:color-mix(in srgb,var(--ac) 50%,var(--border));box-shadow:0 0 0 3px color-mix(in srgb,var(--ac) 18%,transparent),var(--sh-sm);}
.ask .pf{font-family:var(--mono);font-weight:700;color:var(--ac);flex:none;}
.ask input{flex:1;min-width:0;font-family:var(--mono);font-size:.88rem;color:var(--ink);background:transparent;border:none;outline:none;}
.ask input::placeholder{color:var(--dim);}
.tries{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin-top:.7rem;}
.tries span{font-family:var(--mono);font-size:.58rem;font-weight:700;letter-spacing:var(--tr-label);text-transform:uppercase;color:var(--dim);}
.try{font-family:var(--mono);font-size:.68rem;font-weight:700;color:var(--muted);background:var(--inset);border:1px solid var(--border-2);border-radius:var(--r-pill);padding:.26rem .6rem;cursor:pointer;transition:all var(--t-fast) var(--ease);}
.try:hover{color:var(--ink);border-color:var(--border-strong);}
.try.on{color:var(--ac);border-color:color-mix(in srgb,var(--ac) 45%,transparent);background:color-mix(in srgb,var(--ac) 10%,transparent);}
.coach{background:var(--card);border:1px dashed var(--border-strong);border-radius:var(--r-lg);padding:2.8rem 2rem 2.5rem;text-align:center;max-width:600px;margin:2.2rem auto;}
.coach .ic{width:52px;height:52px;border-radius:15px;margin:0 auto 1.05rem;display:grid;place-items:center;background:color-mix(in oklab,var(--ac) 13%,transparent);color:var(--ac);}
.coach .ic svg{width:24px;height:24px;}
.coach h3{font-size:1.14rem;font-weight:800;color:var(--ink);letter-spacing:-.01em;margin:0;}
.coach p{font-size:.84rem;color:var(--muted);line-height:1.55;max-width:44ch;margin:.45rem auto 1.25rem;}
.coach .acts{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;}
.coach .hint{margin-top:1rem;font-size:.76rem;color:var(--dim);}
.coach .hint a{color:var(--ac);}

/* ---------- COHESION-4: the outcome palette, defined once (2026-08-16) ----------
   Words stay per product (ledger: open/due/overdue/paid/defaulted; signals:
   requested/funded/repaid/unpaid/warning; warden: Matt's six). Colours never drift:
   red = money not returned · green = returned · gold = needs the member ·
   violet = a network fact · grey = neutral/closed. Pages colour chips through these
   tokens/classes; a page-local colour on an outcome word is a defect. Red alone uses
   13% because 14% falls to 4.454:1 on light; 13% measures 4.522:1. */
:root{--oc-red:var(--red);--oc-red-soft:color-mix(in srgb,var(--oc-red) 13%,var(--card));--oc-green:var(--green);--oc-green-soft:color-mix(in srgb,var(--oc-green) 14%,var(--card));--oc-gold:var(--goldHi);--oc-gold-soft:color-mix(in srgb,var(--oc-gold) 14%,var(--card));--oc-violet:var(--violet);--oc-violet-soft:color-mix(in srgb,var(--oc-violet) 14%,var(--card));--oc-grey:var(--muted);--oc-grey-soft:color-mix(in srgb,var(--oc-grey) 14%,var(--card));}
.oc{display:inline-flex;align-items:center;gap:.3rem;font-family:var(--mono);font-size:.6rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.14rem .48rem;border-radius:4px;color:var(--oc-grey);background:var(--oc-grey-soft);white-space:nowrap;}
.oc.red{color:var(--oc-red);background:var(--oc-red-soft);}
.oc.green{color:var(--oc-green);background:var(--oc-green-soft);}
.oc.gold{color:var(--oc-gold);background:var(--oc-gold-soft);}
.oc.violet{color:var(--oc-violet);background:var(--oc-violet-soft);}
.oc.grey{color:var(--oc-grey);background:var(--oc-grey-soft);}

/* ---------- LOBBY (network) shared pieces, defined once (2026-08-16) ----------
   From design/network/LoanLedger Lobby.html: the news list row (.newsit), the TAG chip,
   the status chip (.nsc), the membership chip (.mchip). Consumed by /news and /home. */
/* The news row retired here: both surfaces that used it (the Desk and the news
   page) now render the shared entry composite in v5/ll-entry.css. */
.newstag{font-family:var(--mono);font-size:.52rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:.16rem .45rem;border-radius:999px;border:1px solid var(--border);color:var(--dim);margin-right:.4rem;display:inline-block;vertical-align:middle;}
.newstag.rel{color:var(--green);border-color:color-mix(in srgb,var(--green) 40%,transparent);}
.newstag.camp{color:var(--goldHi);border-color:color-mix(in srgb,var(--gold) 40%,transparent);}
.newstag.wk{color:var(--oc-violet);border-color:color-mix(in srgb,var(--oc-violet) 40%,transparent);}
.nsc{font-family:var(--mono);font-size:.64rem;color:var(--muted);background:var(--inset);border:1px solid var(--border-2);border-radius:999px;padding:.22rem .55rem;white-space:nowrap;}
.nsc b{color:var(--ink);font-weight:700;}
.mchip{font-family:var(--mono);font-size:.6rem;font-weight:700;letter-spacing:.05em;color:var(--muted);background:var(--inset);border:1px solid var(--border);border-radius:999px;padding:.22rem .6rem;white-space:nowrap;}
.mchip.gold{color:var(--goldHi);border-color:color-mix(in srgb,var(--gold) 45%,transparent);background:color-mix(in srgb,var(--gold) 10%,transparent);}

/* Matt approved shared reading treatments on 2026-09-18: the guide and live kit
   consume one owner, so later text pages can adopt the same reading rules. */
.ll-reading{container:reading / inline-size;display:grid;gap:2rem;min-width:0;color:var(--text);font-family:var(--font);font-size:var(--t-body);line-height:var(--lh-body);}
.ll-reading :where(p,ol,ul,dl,figure,h3,h4,h5){margin:0;}
.ll-reading p{max-width:65ch;}
.ll-reading :where(h3,h4,h5){color:var(--ink);font-family:var(--font);font-size:var(--t-3);font-weight:700;letter-spacing:var(--tr-heading);line-height:var(--lh-body);}
.ll-reading strong{font-weight:700;color:var(--ink);}
.ll-read-section{display:grid;gap:1.5rem;min-width:0;}
.ll-read-section+.ll-read-section{border-top:1px solid var(--border);padding-top:2rem;}
.ll-read-intro{display:grid;gap:.75rem;min-width:0;}
.ll-read-intro>p{font-weight:500;}
.ll-read-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:0;}
.ll-read-head h3{flex:1;min-width:12rem;}
.ll-read-head a{display:inline-flex;align-items:center;gap:.5rem;}
.ll-read-split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;align-items:start;}
.ll-read-steps{display:block;list-style:decimal outside;padding:0 1.25rem 0 2.75rem;background:var(--card-2);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--t-body);line-height:var(--lh-body);}
.ll-read-steps>li{padding:1.25rem 0 1.25rem .5rem;}
.ll-read-steps>li+li{border-top:1px solid var(--border-2);}
.ll-read-steps>li::marker{font-family:var(--mono);font-size:var(--t-ui);font-weight:700;color:var(--muted);}
.ll-read-step{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.75rem;align-items:start;}
.ll-read-step>div{display:grid;gap:.5rem;min-width:0;}
.ll-read-step>[data-ll-icon],.ll-read-note>[data-ll-icon]{display:inline-flex;align-items:center;height:calc(var(--t-body) * var(--lh-body));color:var(--muted);}
.ll-read-steps-inline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2.5rem;}
.ll-read-steps-inline>li+li{border-top:0;}
.ll-read-list{list-style:none;padding:0;border:1px solid var(--border-2);border-radius:var(--r-md);background:var(--card);overflow:hidden;}
.ll-read-list>li{display:grid;gap:.75rem;padding:1rem;}
.ll-read-list>li+li{border-top:1px solid var(--border-2);}
.ll-read-note{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.75rem;padding:1.25rem;background:var(--sunk);border:1px solid var(--border);border-radius:var(--r-md);}
.ll-read-note>div,.ll-read-note>p{display:grid;gap:.5rem;min-width:0;}
.ll-read-note strong{display:block;}
.ll-read-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;padding-top:.75rem;}
.ll-read-compare>div{display:grid;gap:.5rem;align-content:start;min-width:0;}
.ll-read-compare>div+div{border-left:1px solid var(--border);padding-left:1.25rem;}
.ll-read-compare dt{font-weight:700;color:var(--ink);}
.ll-read-compare dd{margin:0;}
.ll-read-figure{min-width:0;margin:0;border:1px solid var(--border);border-radius:var(--r-md);background:var(--card-2);overflow:hidden;}
.ll-read-figure-body{display:grid;gap:1.25rem;padding:1.25rem;min-width:0;}
.ll-read-caption{display:block;padding:1rem 1.25rem;border-top:1px solid var(--border);background:var(--sunk);color:var(--muted);font-size:var(--t-ui);line-height:var(--lh-body);}
.ll-read-reference{font-size:var(--t-ui);text-decoration:underline;text-underline-offset:.2em;}
@container reading (max-width:42rem){
  .ll-read-split,.ll-read-steps-inline,.ll-read-compare{grid-template-columns:minmax(0,1fr);}
  .ll-read-steps{padding:0 .75rem 0 2rem;}
  .ll-read-steps>li{padding:1rem 0 1rem .25rem;}
  .ll-read-steps-inline>li+li{border-top:1px solid var(--border-2);}
  .ll-read-note,.ll-read-figure-body,.ll-read-caption{padding:1rem .75rem;}
  .ll-read-compare>div+div{border-left:0;padding-left:0;border-top:1px solid var(--border);padding-top:1.25rem;}
}

/* daylight:start · DAYLIGHT-1, written by scripts/theme-studio-daylight.mjs; edit the script, not this block. The page follows the
   member's own clock (the shell sets data-daypart unless they turned it off): morning a little clearer, the afternoon
   as the site is, the evening a hint of dusk violet, and from ten at night a deeper midnight blue with softer whites.
   Every ink step keeps the stock contrast on every surface. The sky stays off Ledger, Signals and Warden. */
[data-daypart="morning"]:not([data-theme="light"]){--bg:#10161a;--bg-2:#11191f;--card:#111a21;--card-2:#0e171d;--inset:#18242c;--sunk:#0b1319;--border:#253742;--border-2:#1b2c37;--ink:#f4f6f8;--text:#c3cbd0;--muted:#98a4ad;--dim:#748d9d;}
[data-daypart="evening"]:not([data-theme="light"]){--bg:#14121b;--bg-2:#17151f;--card:#191621;--card-2:#15131d;--inset:#221e2c;--sunk:#120f19;--border:#353042;--border-2:#2a2636;--ink:#f6f5f8;--text:#cac8d0;--muted:#a3a0ad;--dim:#8a849d;}
[data-daypart="night"]:not([data-theme="light"]){--bg:#0d1019;--bg-2:#0f1320;--card:#0f1423;--card-2:#0c111f;--inset:#161c2f;--sunk:#090d1b;--border:#272e41;--border-2:#1d2334;--ink:#e3e6ef;--text:#bcc1cd;--muted:#9da2b1;--dim:#7c86a3;}
[data-daypart="morning"][data-theme="light"]{--bg:#e3ecf0;--bg-2:#ebf3f6;--card:#ffffff;--card-2:#fbfeff;--inset:#e8f1f5;--sunk:#f1f9fc;--border:#d1dbdf;--border-2:#e1e8eb;--ink:#141c21;--text:#36424c;--muted:#505960;--dim:#626a70;}
[data-daypart="evening"][data-theme="light"]{--bg:#ebe5ed;--bg-2:#f2edf3;--card:#fffeff;--card-2:#fdf9ff;--inset:#f0eaf2;--sunk:#f8f3f9;--border:#dbd5de;--border-2:#e8e4ea;--ink:#1c1921;--text:#423e4b;--muted:#57545e;--dim:#69666f;}
[data-daypart="night"][data-theme="light"]{--bg:#dcdfe8;--bg-2:#e3e6ed;--card:#f4f6fa;--card-2:#eff2f9;--inset:#e1e4ed;--sunk:#e9ecf3;--border:#cacdd6;--border-2:#d9dbe2;--ink:#171a22;--text:#3b404d;--muted:#4d515b;--dim:#595d67;}
[data-daypart="morning"]:not([data-theme="light"]):not([data-product="ledger"]):not([data-product="signals"]):not([data-product="warden"]){background:radial-gradient(70rem 22rem at 10% -7rem,oklch(0.78 0.09 205 / .11),transparent 70%) no-repeat,radial-gradient(56rem 18rem at 90% -9rem,oklch(0.86 0.05 240 / .07),transparent 70%) no-repeat,var(--bg);}
[data-daypart="evening"]:not([data-theme="light"]):not([data-product="ledger"]):not([data-product="signals"]):not([data-product="warden"]){background:radial-gradient(64rem 22rem at 88% -7rem,oklch(0.72 0.12 355 / .10),transparent 70%) no-repeat,radial-gradient(72rem 24rem at 8% -9rem,oklch(0.62 0.13 300 / .13),transparent 72%) no-repeat,var(--bg);}
[data-daypart="night"]:not([data-theme="light"]):not([data-product="ledger"]):not([data-product="signals"]):not([data-product="warden"]){background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 240'%3E%3Ccircle cx='392.6' cy='218.3' r='0.82' fill='%23e2e8ff' fill-opacity='0.70'/%3E%3Ccircle cx='552.3' cy='24.4' r='0.57' fill='%23e2e8ff' fill-opacity='0.42'/%3E%3Ccircle cx='218.1' cy='230.5' r='1.22' fill='%23e2e8ff' fill-opacity='0.57'/%3E%3Ccircle cx='443.6' cy='36.3' r='0.65' fill='%23e2e8ff' fill-opacity='0.58'/%3E%3Ccircle cx='128.8' cy='190.5' r='0.68' fill='%23e2e8ff' fill-opacity='0.78'/%3E%3Ccircle cx='90.4' cy='25.4' r='0.95' fill='%23e2e8ff' fill-opacity='0.37'/%3E%3Ccircle cx='120.4' cy='174.2' r='1.11' fill='%23e2e8ff' fill-opacity='0.37'/%3E%3Ccircle cx='435.3' cy='167.5' r='0.93' fill='%23e2e8ff' fill-opacity='0.75'/%3E%3Ccircle cx='349.8' cy='207.2' r='1.01' fill='%23e2e8ff' fill-opacity='0.60'/%3E%3Ccircle cx='548.3' cy='228.7' r='0.70' fill='%23e2e8ff' fill-opacity='0.53'/%3E%3Ccircle cx='121.0' cy='100.8' r='0.92' fill='%23e2e8ff' fill-opacity='0.58'/%3E%3Ccircle cx='589.3' cy='90.1' r='0.92' fill='%23e2e8ff' fill-opacity='0.55'/%3E%3Ccircle cx='58.0' cy='32.3' r='0.53' fill='%23e2e8ff' fill-opacity='0.53'/%3E%3Ccircle cx='570.5' cy='107.1' r='0.93' fill='%23e2e8ff' fill-opacity='0.46'/%3E%3Ccircle cx='7.2' cy='82.3' r='1.06' fill='%23e2e8ff' fill-opacity='0.61'/%3E%3Ccircle cx='505.9' cy='228.5' r='0.98' fill='%23e2e8ff' fill-opacity='0.41'/%3E%3Ccircle cx='112.8' cy='41.0' r='1.10' fill='%23e2e8ff' fill-opacity='0.73'/%3E%3Ccircle cx='204.3' cy='40.0' r='0.62' fill='%23e2e8ff' fill-opacity='0.71'/%3E%3C/svg%3E") 0 6.4rem/640px 240px repeat-x,radial-gradient(46rem 22rem at 86% -7rem,oklch(0.88 0.03 260 / .12),transparent 70%) no-repeat,var(--bg);}
[data-daypart="morning"][data-theme="light"]:not([data-product="ledger"]):not([data-product="signals"]):not([data-product="warden"]){background:radial-gradient(72rem 22rem at 10% -7rem,oklch(0.9 0.06 215 / .6),transparent 70%) no-repeat,var(--bg);}
[data-daypart="evening"][data-theme="light"]:not([data-product="ledger"]):not([data-product="signals"]):not([data-product="warden"]){background:radial-gradient(64rem 22rem at 88% -7rem,oklch(0.91 0.05 40 / .6),transparent 70%) no-repeat,radial-gradient(72rem 24rem at 8% -9rem,oklch(0.89 0.045 305 / .55),transparent 72%) no-repeat,var(--bg);}
[data-daypart="night"][data-theme="light"]:not([data-product="ledger"]):not([data-product="signals"]):not([data-product="warden"]){background:radial-gradient(80rem 24rem at 50% -12rem,oklch(0.8 0.04 265 / .35),transparent 70%) no-repeat,var(--bg);}
.dl-greet{display:flex;align-items:center;gap:.4rem;margin-bottom:.2rem;font-family:var(--font);font-size:var(--t-small);font-weight:700;letter-spacing:0;color:var(--muted);}
.dl-greet::before{content:"";width:1.05em;height:1.05em;flex:none;background:currentColor;}
[data-daypart="morning"] .dl-greet::before{-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 18h18M7 18a5 5 0 0 1 10 0M12 3v4M10 5l2-2 2 2M4.9 10.9l1.4 1.4M19.1 10.9l-1.4 1.4M3 22h18'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 18h18M7 18a5 5 0 0 1 10 0M12 3v4M10 5l2-2 2 2M4.9 10.9l1.4 1.4M19.1 10.9l-1.4 1.4M3 22h18'/%3E%3C/svg%3E") center/contain no-repeat;}
[data-daypart="afternoon"] .dl-greet::before{-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8zM12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8zM12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4'/%3E%3C/svg%3E") center/contain no-repeat;}
[data-daypart="evening"] .dl-greet::before{-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 18h18M7 18a5 5 0 0 1 10 0M12 3v4M10 5l2 2 2-2M4.9 10.9l1.4 1.4M19.1 10.9l-1.4 1.4M3 22h18'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 18h18M7 18a5 5 0 0 1 10 0M12 3v4M10 5l2 2 2-2M4.9 10.9l1.4 1.4M19.1 10.9l-1.4 1.4M3 22h18'/%3E%3C/svg%3E") center/contain no-repeat;}
[data-daypart="night"] .dl-greet::before{-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.5A8.5 8.5 0 1 1 9.5 4a7 7 0 0 0 10.5 10.5z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.5A8.5 8.5 0 1 1 9.5 4a7 7 0 0 0 10.5 10.5z'/%3E%3C/svg%3E") center/contain no-repeat;}
[data-daypart="morning"]:not([data-theme="light"]) .dl-greet{color:#88d3db;}
[data-daypart="evening"]:not([data-theme="light"]) .dl-greet{color:#dfabcd;}
[data-daypart="night"]:not([data-theme="light"]) .dl-greet{color:#bccaec;}
[data-daypart="morning"][data-theme="light"] .dl-greet{color:#0b6677;}
[data-daypart="evening"][data-theme="light"] .dl-greet{color:#79416e;}
[data-daypart="night"][data-theme="light"] .dl-greet{color:#3f507f;}
@media (prefers-reduced-motion:no-preference){
  html[data-daypart][data-daylight-ready]:not([data-motion="reduce"]){transition:background-color .9s ease;}
}
/* daylight:end */
