/* Hallmark · pre-emit critique: P5 H4 E4 S5 R4 V5 */
/* Hallmark · macrostructure: Photographic split hero (HANDO construction) over a live instrument
 * genre: editorial · tone: night desk, printed record · theme: custom (BRAND.md palette in OKLCH)
 * material: generated night-desk photograph + CSS continuous-feed green-bar printout printing real fills
 * display: Archivo 125% wdth 800 (figure + wordmark only) · body: Archivo · print and data: Spline Sans Mono
 * nav: dark bar · footer: Ft2 inline rule · film: band between the record and the plan
 * Every colour, face and easing comes from tokens.css. */

*,*::before,*::after{box-sizing:border-box}
html,body{overflow-x:clip}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--color-paper);color:var(--color-ink);font:400 var(--text-md)/1.55 var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3{margin:0;font-weight:600;font-style:normal;letter-spacing:-0.015em;line-height:1.12;overflow-wrap:anywhere;min-width:0}
p{margin:0}
a{color:inherit}
button,input,select{font:inherit;color:inherit}
img{display:block}
:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:var(--gutter);top:-4rem;z-index:60;background:var(--color-ink);color:var(--color-sheet);padding:var(--space-2xs) var(--space-sm);text-decoration:none}
.skip:focus{top:var(--space-2xs)}

/* ─── controls ───────────────────────────────────────────────────────── */
.chip{display:inline-flex;align-items:center;gap:var(--space-2xs);min-height:2.75rem;padding:0 var(--space-sm);border:var(--rule-hair) solid var(--color-ink);border-radius:var(--radius-input);background:transparent;color:var(--color-ink);font:500 var(--text-sm)/1 var(--font-body);text-decoration:none;white-space:nowrap;cursor:pointer}
.chip:hover{background:var(--color-ink);color:var(--color-sheet)}
.chip:active{transform:translateY(1px)}
.chip:disabled{opacity:.45;cursor:not-allowed;background:transparent;color:var(--color-ink)}
.chip.solid{background:var(--color-ink);color:var(--color-sheet)}
.text-link{display:inline-flex;align-items:center;gap:var(--space-3xs);padding:0;border:0;background:none;color:var(--color-ink);font:500 var(--text-sm)/1.4 var(--font-body);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.28em;text-decoration-color:var(--color-rule);cursor:pointer;white-space:nowrap}
.text-link:hover{text-decoration-color:var(--color-ink)}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-lg)}
.search{display:block;flex:0 1 22rem;min-width:0}
.search input{height:2.5rem;width:100%;min-width:0;padding:0 var(--space-xs);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-input);background:var(--color-sheet);font-size:var(--text-sm)}
.search input:focus-visible{outline-offset:0}
.select-label{display:inline-flex;align-items:center;gap:var(--space-2xs);font:500 var(--text-xs) var(--font-body);color:var(--color-ink-3)}
.select-label select{height:2.5rem;padding:0 var(--space-xs);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-input);background:var(--color-sheet);font:400 var(--text-sm) var(--font-body);text-transform:none;letter-spacing:0;color:var(--color-ink)}
.segments{display:inline-flex;flex-wrap:wrap;border:var(--rule-hair) solid var(--color-ink);border-radius:var(--radius-input);overflow:hidden}
.segments button{border:0;border-right:var(--rule-hair) solid var(--color-rule);background:transparent;padding:0 var(--space-xs);min-height:2.5rem;font:500 var(--text-xs) var(--font-body);white-space:nowrap;cursor:pointer}
.segments button:last-child{border-right:0}
.segments button:hover{background:var(--color-sheet-2)}
.segments button[aria-pressed="true"]{background:var(--color-ink);color:var(--color-sheet)}
.row-count{font:500 var(--text-xs) var(--font-body);color:var(--color-ink-3);white-space:nowrap}
.small-note{font-size:var(--text-xs);line-height:1.5;color:var(--color-ink-3);max-width:72ch}
.stamp{display:inline-block;padding:var(--space-3xs) var(--space-2xs);border:1.5px solid var(--color-accent);color:var(--color-accent);font:500 var(--text-2xs)/1.2 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}


/* ─── top bar ────────────────────────────────────────────────────────── */
.top{position:sticky;top:0;z-index:30;display:grid;grid-template-columns:auto 1fr auto;align-items:stretch;column-gap:var(--space-xl);padding:0 var(--gutter);background:var(--color-night);color:var(--color-on-night);border-bottom:var(--rule-hair) solid var(--color-on-night-rule)}
.brand{display:flex;align-items:center;text-decoration:none;font:900 1.375rem/1 var(--font-display);font-stretch:var(--stretch-display);letter-spacing:-.035em;white-space:nowrap}
.brand-stop{color:var(--color-accent)}
.tabs{display:flex;gap:var(--space-lg);min-width:0}
.tabs a{display:flex;align-items:center;min-height:3.5rem;border-bottom:2px solid transparent;color:var(--color-on-night-2);font:500 var(--text-sm)/1 var(--font-body);text-decoration:none;white-space:nowrap}
.tabs a:hover{color:var(--color-on-night)}
.tabs a[aria-current="page"]{color:var(--color-on-night);border-bottom-color:var(--color-accent)}
.wallet-link{align-self:center;font:400 var(--text-xs) var(--font-mono);color:var(--color-on-night-2);text-decoration:underline;text-decoration-color:var(--color-on-night-rule);text-underline-offset:.3em;white-space:nowrap}
.wallet-link:hover{color:var(--color-on-night);text-decoration-color:var(--color-on-night)}

/* ─── buttons on dark ───────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:3rem;padding:0 var(--space-md);border:var(--rule-hair) solid var(--color-on-night);border-radius:var(--radius-input);background:var(--color-on-night);color:var(--color-night);font:500 var(--text-md)/1 var(--font-body);text-decoration:none;white-space:nowrap;cursor:pointer}
.btn:hover{background:var(--color-sheet);border-color:var(--color-sheet)}
.btn:active{transform:translateY(1px)}
.btn.ghost{background:transparent;color:var(--color-on-night);border-color:var(--color-on-night-rule)}
.btn.ghost:hover{border-color:var(--color-on-night)}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ─── hero: the desk at night ───────────────────────────────────────── */
.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);min-height:min(54rem,calc(100svh - 3.5rem));background:var(--color-night);color:var(--color-on-night);overflow:hidden}
.hero-copy{display:flex;flex-direction:column;justify-content:center;min-width:0;padding:var(--space-2xl) var(--space-xl) var(--space-2xl) var(--gutter)}
.hero h1{font-size:clamp(2.5rem,1.3rem + 3.7vw,4.375rem);font-weight:500;letter-spacing:-.035em;line-height:1}
.hero-lead{margin-top:var(--space-md);max-width:31rem;font-size:var(--text-lg);line-height:1.5;color:var(--color-on-night-2);text-wrap:pretty}
.hero-figure{margin-top:var(--space-xl);padding-top:var(--space-md);max-width:31rem;border-top:var(--rule-hair) solid var(--color-on-night-rule)}
.figure{font:800 clamp(2.75rem,1.6rem + 3.4vw,4.75rem)/.9 var(--font-display);font-stretch:var(--stretch-display);letter-spacing:-.04em;white-space:nowrap}
.figure-words{margin-top:var(--space-xs);font-size:var(--text-sm);line-height:1.5;color:var(--color-on-night-2);text-wrap:pretty}
.hero .actions{margin-top:var(--space-xl);gap:var(--space-sm)}

.hero-desk{position:relative;min-height:34rem;isolation:isolate;overflow:hidden}
.desk-photo{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:60% 100%}
.hero-desk::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,var(--color-night) 0,transparent 24%)}
.hero-desk::after{content:"";position:absolute;inset:auto 0 0;height:16%;z-index:3;pointer-events:none;background:linear-gradient(0deg,var(--color-night) 10%,transparent)}

/* the printout: continuous-feed green-bar paper, fed from a printer above the frame */
.printout{--lh:1.5rem;--margin:1.6rem;position:absolute;z-index:2;top:-4rem;bottom:-3rem;left:7%;width:31rem;transform:rotate(-2.6deg);transform-origin:50% 0}
.paper{position:relative;height:100%;overflow:hidden;background:var(--color-print);box-shadow:0 2.5rem 4rem -1rem var(--shadow-paper),0 .25rem .6rem var(--shadow-paper)}
.paper::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(130% 75% at 78% 12%,transparent 35%,var(--color-paper-shade) 100%),url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .1 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
.paper-lines{list-style:none;margin:0;padding:4.5rem 0 0}
.paper-lines.feeding{animation:paper-feed 140ms var(--ease-out)}
@keyframes paper-feed{from{transform:translateY(calc(var(--lh) * -1))}to{transform:none}}
.pl{display:grid;grid-template-columns:var(--margin) minmax(0,1fr) var(--margin);height:var(--lh)}
.pl::before,.pl::after{content:""}
.pl::before{border-right:var(--rule-hair) dashed var(--color-print-rule)}
.pl::after{border-left:var(--rule-hair) dashed var(--color-print-rule)}
.pl.hole::before,.pl.hole::after{background:radial-gradient(circle at 50% 50%,var(--color-hole) 0 .3rem,var(--color-print-rule) .32rem .35rem,transparent .37rem)}
.pl.band{background:linear-gradient(90deg,transparent var(--margin),var(--color-greenbar) var(--margin) calc(100% - var(--margin)),transparent calc(100% - var(--margin)))}
.pl.head{border-bottom:var(--rule-hair) dashed var(--color-print-rule)}
.pl .txt{display:block;overflow:hidden;padding:0 .6rem;font:500 .8rem/var(--lh) var(--font-mono);letter-spacing:.015em;white-space:pre;color:var(--color-print-ink);text-decoration:none;text-shadow:0 0 .5px var(--color-print-ink)}
.pl.head .txt{font-weight:600;letter-spacing:.06em}
.pl a.txt:hover{text-decoration:underline;text-underline-offset:.2em}
.pl.is-new .txt{animation:head-sweep 520ms steps(20,end) 140ms both}
@keyframes head-sweep{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
.desk-caption{display:flex;align-items:baseline;gap:var(--space-2xs) var(--space-sm);margin-top:var(--space-lg);max-width:31rem;font-size:var(--text-sm);line-height:1.5;color:var(--color-on-night-2)}
.desk-caption .dot{flex:none;align-self:center;width:.5rem;height:.5rem;border-radius:50%;background:var(--color-accent)}
.tape-toggle{flex:none;padding:0;border:0;background:none;color:var(--color-on-night);font:500 var(--text-sm) var(--font-body);text-decoration:underline;text-decoration-color:var(--color-on-night-rule);text-underline-offset:.25em;cursor:pointer}
.tape-toggle:hover{text-decoration-color:var(--color-on-night)}

/* ─── token strip ───────────────────────────────────────────────────── */
.token-strip{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-sm) var(--space-2xl);padding:var(--space-md) var(--gutter);background:var(--color-sheet);border-bottom:var(--rule-hair) solid var(--color-rule)}
.ts-name{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-3xs) var(--space-sm)}
.ts-name b{white-space:nowrap}
.ts-name b{font-weight:600;font-size:var(--text-lg)}
.ts-name span,.ts-addr span{font-size:var(--text-sm);color:var(--color-ink-3)}
.ts-addr{display:grid;gap:2px}
.ts-addr b{font:400 var(--text-sm)/1.4 var(--font-mono)}
.token-strip .btn.ghost{color:var(--color-ink);border-color:var(--color-rule);background:transparent;font-size:var(--text-sm);min-height:2.5rem}

/* ─── the record ────────────────────────────────────────────────────── */
.record{padding:var(--space-2xl) var(--gutter) var(--space-2xl)}
.record h2{font-size:var(--text-xl)}
.record-row{margin:var(--space-lg) 0 0;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr) minmax(0,1.35fr) repeat(3,minmax(0,1fr));border-top:var(--rule-hair) solid var(--color-ink);border-bottom:var(--rule-hair) solid var(--color-rule)}
.record-row>div{padding:var(--space-sm) var(--space-md) var(--space-md) 0;min-width:0}
.record-row>div+div{padding-left:var(--space-md);border-left:var(--rule-hair) solid var(--color-rule)}
.record-row dt{font-size:var(--text-sm);color:var(--color-ink-3)}
.record-row dd{margin:var(--space-3xs) 0 0;font:600 clamp(1.125rem,.75rem + 1vw,1.625rem)/1.2 var(--font-body);font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap}
.record-note{margin-top:var(--space-md);max-width:84ch;font-size:var(--text-sm);line-height:1.6;color:var(--color-ink-2)}
.record-note a{text-decoration-color:var(--color-rule);text-underline-offset:.25em}

/* ─── the shot ──────────────────────────────────────────────────────── */
.film-band{position:relative;height:clamp(22rem,64vh,40rem);overflow:hidden;isolation:isolate;background:var(--color-night)}
.film-band video{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover}
.film-band::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,var(--color-night) 4%,transparent 48%)}
.film-copy{position:absolute;left:var(--gutter);right:var(--gutter);bottom:var(--space-xl);display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-lg);color:var(--color-on-night)}
.film-line{flex:1 1 100%;font:500 clamp(1.75rem,1rem + 2.6vw,3.125rem)/1.05 var(--font-body);letter-spacing:-.03em}
.film-note{font-size:var(--text-sm);color:var(--color-on-night-2)}
.film-band .btn{min-height:2.5rem;font-size:var(--text-sm)}

/* ─── the chain, said in one line ───────────────────────────────────── */
.chain{padding:var(--space-3xl) var(--gutter) var(--space-2xl)}
.chain h2{font-size:var(--text-lg);font-weight:500;color:var(--color-ink-2)}
.chain-line{margin-top:var(--space-sm);max-width:62rem;font:500 clamp(1.875rem,1rem + 3.3vw,3.75rem)/1.16 var(--font-body);letter-spacing:-.035em;text-wrap:balance}
.chain-line .off{color:var(--color-ink-3)}
.chain-line .on{padding:0 .16em;background:var(--color-ink);color:var(--color-sheet);box-decoration-break:clone;-webkit-box-decoration-break:clone}
.chain-line .est{color:var(--color-accent)}
.chain-line .arrow{color:var(--color-rule)}
.chain-line sup{margin-left:.08em;font:400 .32em var(--font-mono);vertical-align:.9em;letter-spacing:0;color:var(--color-ink-3)}
.chain-notes{list-style:none;counter-reset:note;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-md) var(--space-lg);margin:var(--space-xl) 0 0;padding:var(--space-md) 0 0;border-top:var(--rule-hair) solid var(--color-rule)}
.chain-notes li{counter-increment:note;font-size:var(--text-sm);line-height:1.55;color:var(--color-ink-2)}
.chain-notes li::before{content:counter(note);margin-right:.45em;font:400 var(--text-xs) var(--font-mono);vertical-align:.35em;color:var(--color-ink-3)}
.chain-notes b{font-weight:600;color:var(--color-ink)}
.chain-on{margin-top:var(--space-lg);font-size:var(--text-md);color:var(--color-ink-2)}
.chain-on b{font-weight:600;color:var(--color-ink);font-variant-numeric:tabular-nums}
.chain-on a{margin-left:var(--space-2xs);color:var(--color-ink);text-decoration-color:var(--color-rule);text-underline-offset:.25em;white-space:nowrap}

/* ─── when the desk trades: a torn-off printout ─────────────────────── */
.hours{display:grid;grid-template-columns:minmax(0,1fr) minmax(19rem,25rem);align-items:center;gap:var(--space-xl) var(--space-3xl);padding:var(--space-2xl) var(--gutter) var(--space-3xl);border-top:var(--rule-hair) solid var(--color-rule)}
.hours h2{font-size:var(--text-2xl);letter-spacing:-.025em}
.hours-copy p{margin-top:var(--space-sm);max-width:46ch;color:var(--color-ink-2)}
.hours-copy #heat-peak{font-size:var(--text-lg);line-height:1.45;color:var(--color-ink)}
.slip-wrap{filter:drop-shadow(0 1.1rem 1.4rem var(--shadow-paper-soft)) drop-shadow(0 .1rem .15rem var(--shadow-paper-soft));transform:rotate(1.3deg)}
.slip{padding:var(--space-lg) 1.5rem var(--space-xl);background:var(--color-print);clip-path:polygon(0 1.2%,4% 0,8% 1.1%,13% .2%,18% 1.3%,23% .3%,29% 1%,34% 0,40% 1.2%,46% .4%,52% 1.3%,57% .1%,63% 1.1%,68% .3%,74% 1.2%,80% 0,85% 1%,90% .2%,95% 1.3%,100% .4%,100% 99%,96% 100%,91% 98.9%,86% 99.8%,81% 98.7%,75% 99.7%,70% 98.8%,64% 100%,59% 98.9%,53% 99.6%,47% 98.7%,42% 99.9%,36% 98.8%,31% 99.7%,25% 98.9%,20% 100%,14% 98.8%,9% 99.7%,4% 98.9%,0 99.8%)}
.slip-head{margin-bottom:var(--space-sm);font:600 .75rem/1.5 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-print-ink)}
.bar-row{display:grid;grid-template-columns:1.5rem minmax(0,1fr) 3.25rem;align-items:center;gap:.6rem;height:1.3rem;margin:0 -1.5rem;padding:0 1.5rem;font:500 .75rem/1 var(--font-mono);color:var(--color-print-ink)}
.bar-row.band{background:var(--color-greenbar)}
.bar-row i{display:block;width:calc(var(--w,0) * 100%);height:.6rem;background:radial-gradient(circle,var(--color-print-ink) 52%,transparent 58%) 0 0/2.5px 2.5px}
.bar-row .n{text-align:right;font-variant-numeric:tabular-nums}

/* ─── inner pages ────────────────────────────────────────────────────── */
.page-head{padding:var(--space-xl) var(--gutter) var(--space-lg)}
.page-head h1{font-size:clamp(2rem,1.3rem + 2.8vw,3.25rem);letter-spacing:-.025em;max-width:22ch;text-wrap:balance}
.page-head p{margin-top:var(--space-sm);max-width:60ch;font-size:var(--text-lg);line-height:1.5;color:var(--color-ink-2)}

/* trade book: the field, after Acres — one square per token on the night background */
.field-band{padding:var(--space-xl) var(--gutter) var(--space-2xl);background:var(--color-night);color:var(--color-on-night)}
.field-head h1{font-size:clamp(2.25rem,1.4rem + 2.8vw,3.5rem);font-weight:500;letter-spacing:-.03em;line-height:1.05}
.field-head p{margin-top:var(--space-sm);max-width:58ch;font-size:var(--text-lg);line-height:1.5;color:var(--color-on-night-2)}
.field-panel{margin-top:var(--space-xl);border-top:var(--rule-hair) solid var(--color-on-night-rule)}
.field-top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-xs) var(--space-lg);padding:var(--space-sm) 0}
#field-count{font-size:var(--text-md)}
.field-legend{display:flex;flex-wrap:wrap;gap:var(--space-2xs) var(--space-md);font-size:var(--text-sm);color:var(--color-on-night-2)}
.field-legend span{display:inline-flex;align-items:center;gap:var(--space-2xs)}
.field-legend i{display:inline-block;width:.75rem;height:.75rem}
.lg-up,.fb-up{background:var(--field-up-hi)}
.lg-down,.fb-down{background:var(--field-down-hi)}
.lg-even,.fb-even{background:var(--field-even)}
.lg-held,.fb-held{background:var(--field-held);box-shadow:inset 0 0 0 1px var(--color-on-night-rule)}
.fb-early{background:transparent;box-shadow:inset 0 0 0 1px var(--color-on-night-rule)}
.field-bar{display:flex;gap:2px;height:1.75rem;margin-bottom:var(--space-md)}
.field-bar i{display:grid;place-items:center;flex-basis:0;min-width:3px;overflow:hidden;font:500 var(--text-xs)/1 var(--font-body);font-style:normal;white-space:nowrap;color:var(--color-night)}
.field-bar .fb-even,.field-bar .fb-held,.field-bar .fb-early{color:var(--color-on-night)}
.field-plot{position:relative}
.field-plot canvas{display:block;width:100%}
.field-plot .rd{position:absolute;z-index:3;display:grid;gap:2px;min-width:13rem;padding:var(--space-2xs) var(--space-xs);pointer-events:none;background:var(--color-print);color:var(--color-print-ink);font:400 var(--text-xs)/1.45 var(--font-mono);box-shadow:0 .5rem 1.25rem var(--shadow-paper)}
.field-plot .rd b{font-weight:600;letter-spacing:.02em}
.field-note{margin-top:var(--space-md);max-width:100ch;font-size:var(--text-sm);line-height:1.6;color:var(--color-on-night-2)}
.field-band+.coverage{margin-top:var(--space-xl)}

/* trade book */
.coverage{margin:0 var(--gutter);display:grid;grid-template-columns:repeat(4,auto) minmax(0,1fr);border-top:var(--rule-hair) solid var(--color-ink);border-bottom:var(--rule-hair) solid var(--color-rule)}
.coverage>div{padding:var(--space-xs) var(--space-xl) var(--space-xs) 0;min-width:0}
.coverage dt{font:500 var(--text-xs)/1.5 var(--font-body);color:var(--color-ink-3)}
.coverage dd{margin:var(--space-3xs) 0 0;font:500 var(--text-md)/1.3 var(--font-mono);font-variant-numeric:tabular-nums}
.coverage-wide dd{font-size:var(--text-sm);font-weight:400}
.coverage-note{margin:var(--space-sm) var(--gutter) var(--space-xl);font-size:var(--text-sm);line-height:1.6;color:var(--color-ink-2)}
.coverage-note>p:first-child{max-width:78ch}
.coverage-note .actions{margin-top:var(--space-xs);gap:var(--space-xs) var(--space-lg)}
.ledger{margin:0 var(--gutter);background:var(--color-sheet);border-top:var(--rule-hair) solid var(--color-ink);border-bottom:var(--rule-hair) solid var(--color-ink)}
.book-filterbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs) var(--space-sm);padding:var(--space-sm) var(--space-md);border-bottom:var(--rule-hair) solid var(--color-rule)}
.book-filterbar .row-count{margin-left:auto}
.ledger-foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-top:var(--rule-hair) solid var(--color-rule)}
.book-accounting-note{margin:var(--space-md) var(--gutter) var(--space-xl);max-width:78ch;font-size:var(--text-sm);line-height:1.6;color:var(--color-ink-2)}

/* tables */
.table-scroll{overflow-x:auto}
.table-scroll table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}
.table-scroll th{padding:var(--space-xs) var(--space-md);text-align:left;font:500 var(--text-xs)/1.3 var(--font-body);color:var(--color-ink-3);border-bottom:var(--rule-hair) solid var(--color-rule);white-space:nowrap}
.table-scroll th button{padding:0;border:0;background:none;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;cursor:pointer}
.table-scroll th button:hover,.table-scroll th[aria-sort] button{color:var(--color-ink)}
.table-scroll th[aria-sort="descending"] button::after{content:" ↓"}
.table-scroll th[aria-sort="ascending"] button::after{content:" ↑"}
.table-scroll td{padding:var(--space-xs) var(--space-md);border-bottom:var(--rule-hair) solid var(--color-rule-soft);white-space:nowrap;vertical-align:middle}
.table-scroll tbody tr:hover>td{background:var(--color-sheet-2)}
.number{text-align:right!important;font-family:var(--font-mono);font-variant-numeric:tabular-nums}
td.mint{font:400 var(--text-xs) var(--font-mono);color:var(--color-ink-2)}
.table-scroll td a{color:var(--color-ink);font-weight:500;text-decoration:none}
.table-scroll td a:hover{text-decoration:underline;text-underline-offset:.25em}
.book-mint,.token-subline{display:block;margin-top:2px;font:400 var(--text-2xs) var(--font-mono);color:var(--color-ink-3)}
.book-activity-tag{font:400 var(--text-sm) var(--font-body);color:var(--color-ink-2)}
.book-inspect,.text-button{padding:0;border:0;background:none;font:500 var(--text-sm) var(--font-body);color:var(--color-ink);text-decoration:underline;text-decoration-color:var(--color-rule);text-underline-offset:.3em;cursor:pointer}
.book-inspect:hover,.text-button:hover{text-decoration-color:var(--color-ink)}
.up{color:var(--color-ink)}
.down{color:var(--color-accent)}
.muted{color:var(--color-ink-3)}
.execution-table td.up{font:500 var(--text-xs) var(--font-mono);letter-spacing:.04em}
.execution-table td.down{font:500 var(--text-xs) var(--font-mono);letter-spacing:.04em;color:var(--color-sell)}
.empty-state{padding:var(--space-xl) var(--space-md)}
.empty-state h3{font-size:var(--text-lg)}
.empty-state p{margin:var(--space-2xs) 0 var(--space-sm);color:var(--color-ink-2)}
.page-empty{padding:var(--space-2xl) var(--gutter)}
.page-empty h1{font-size:var(--text-2xl)}
.table-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs) var(--space-sm);margin:var(--space-sm) 0}
.pager{display:flex;align-items:center;gap:var(--space-sm);margin:var(--space-sm) 0;font:500 var(--text-sm) var(--font-body)}

/* folds */
details.fold{margin:0 var(--gutter) var(--space-3xl);border-top:var(--rule-hair) solid var(--color-ink);border-bottom:var(--rule-hair) solid var(--color-ink)}
details.fold>summary{display:flex;align-items:baseline;gap:var(--space-sm);padding:var(--space-sm) 0;font-weight:600;font-size:var(--text-lg);cursor:pointer;list-style:none}
details.fold>summary::-webkit-details-marker{display:none}
details.fold>summary::after{content:"+";margin-left:auto;font:400 var(--text-lg) var(--font-mono);color:var(--color-ink-3)}
details.fold[open]>summary::after{content:"−"}
details.fold>summary img{display:none}
#execution-summary-count{font:400 var(--text-xs) var(--font-mono);color:var(--color-ink-3)}
#indexed-transactions{padding-bottom:var(--space-md)}
#indexed-transactions>p:first-child{max-width:70ch;font-size:var(--text-sm);color:var(--color-ink-2)}

/* documents: method and holders */
.doc{padding:0 var(--gutter) var(--space-3xl);max-width:calc(44rem + var(--gutter) * 2)}
.doc>h2,.doc section>h2{margin:var(--space-xl) 0 var(--space-xs);font-size:var(--text-xl)}
.doc>p,.doc section>p{max-width:64ch;color:var(--color-ink-2);line-height:1.65}
.doc>p+p{margin-top:var(--space-sm)}
.doc p a{text-decoration-color:var(--color-rule);text-underline-offset:.25em}
.doc p a:hover{text-decoration-color:var(--color-ink)}
.doc details.evidence{width:min(72rem,calc(100vw - var(--gutter) * 2));margin:var(--space-md) 0 0}
.evidence-body{padding-bottom:var(--space-lg)}
.evidence-body h3{font-size:var(--text-lg)}
.snapshot-bar{display:flex;flex-wrap:wrap;gap:var(--space-2xs) var(--space-lg);padding:var(--space-xs) 0 var(--space-md);font:400 var(--text-sm) var(--font-body);color:var(--color-ink-3)}
ol.rules{list-style:none;counter-reset:rule;margin:var(--space-xs) 0 0;padding:0;max-width:52rem}
ol.rules li{counter-increment:rule;position:relative;padding:var(--space-xs) 0 var(--space-xs) 2.5rem;border-bottom:var(--rule-hair) solid var(--color-rule-soft);font-size:var(--text-sm);line-height:1.6;color:var(--color-ink-2)}
ol.rules li::before{content:counter(rule,decimal-leading-zero);position:absolute;left:0;top:var(--space-xs);font:400 var(--text-xs)/1.9 var(--font-mono);color:var(--color-ink-3)}
ol.rules b{color:var(--color-ink);font-weight:600}
.results{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-lg) var(--space-xl);margin-top:var(--space-xl);padding-top:var(--space-md);border-top:var(--rule-hair) solid var(--color-rule)}
#metric-pnl{display:block;margin:var(--space-xs) 0;font:500 var(--text-xl)/1.2 var(--font-mono)}
#pnl-note,#review-description{font-size:var(--text-sm);color:var(--color-ink-2)}
.profit-explanation{margin-top:var(--space-sm);font-size:var(--text-sm)}
.profit-explanation summary{display:inline-flex;align-items:center;gap:var(--space-3xs);cursor:pointer;list-style:none;text-decoration:underline;text-decoration-color:var(--color-rule);text-underline-offset:.25em}
.profit-explanation summary::-webkit-details-marker{display:none}
.profit-explanation summary img{width:.875rem;height:.875rem}
.profit-explanation[open] summary img{transform:rotate(180deg)}
#profit-reason{margin-top:var(--space-2xs);color:var(--color-ink-2);max-width:60ch}
.review-heading{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-sm)}
#review-progress-label{font:400 var(--text-xs) var(--font-mono);color:var(--color-ink-3)}
.progress-track{height:4px;margin:var(--space-xs) 0;background:var(--color-rule-soft)}
.progress-track span{display:block;height:100%;width:0;background:var(--color-ink)}
.mini-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm);margin:var(--space-sm) 0}
.mini-metrics dt{font:500 var(--text-xs)/1.4 var(--font-body);color:var(--color-ink-3)}
.mini-metrics dd{margin:var(--space-3xs) 0 0;font:500 var(--text-lg) var(--font-mono)}
.audit-block{margin-top:var(--space-2xl)}
.block-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--space-sm)}
.block-head p{margin-top:var(--space-3xs);font-size:var(--text-sm);color:var(--color-ink-2)}
.audit-block>.small-note{margin-top:var(--space-xs)}
.token-cell{display:flex;align-items:center;gap:var(--space-xs)}
.token-avatar{display:grid;place-items:center;width:1.75rem;height:1.75rem;border:var(--rule-hair) solid var(--color-rule);font:400 var(--text-2xs) var(--font-mono);color:var(--color-ink-2)}
.mobile-state{display:none}
.status-text{font:400 var(--text-sm) var(--font-body);color:var(--color-ink-3)}
.status-text.closed{color:var(--color-ink)}
.unknown-result{padding:0;border:0;background:none;font:400 var(--text-xs) var(--font-mono);color:var(--color-ink-3);text-decoration:underline dotted;text-underline-offset:.3em;cursor:pointer}
.detail-button{display:inline-flex;align-items:center;gap:var(--space-3xs);min-height:2rem;padding:0 var(--space-xs);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-input);background:transparent;font:400 var(--text-xs) var(--font-mono);cursor:pointer}
.detail-button:hover{border-color:var(--color-ink)}
.detail-button img{width:.875rem;height:.875rem}
.detail-button[aria-expanded="true"] img{transform:rotate(180deg)}
.position-detail>td{background:var(--color-sheet-2);white-space:normal}
.position-detail-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-lg);padding:var(--space-sm) 0}
.position-detail-body p{margin-top:var(--space-2xs);font-size:var(--text-sm);color:var(--color-ink-2)}
.full-mint{font:400 var(--text-xs) var(--font-mono);overflow-wrap:anywhere}
.fill-list{list-style:none;margin:var(--space-2xs) 0 0;padding:0}
.fill-list li{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-2xs) 0;border-bottom:var(--rule-hair) solid var(--color-rule-soft);font-size:var(--text-sm)}
.fill-list small{display:block;font:400 var(--text-2xs) var(--font-mono);color:var(--color-ink-3)}
.badge{display:inline-block;padding:var(--space-3xs) var(--space-2xs);border:var(--rule-hair) solid var(--color-rule);font:400 var(--text-2xs)/1.2 var(--font-mono);text-transform:uppercase;letter-spacing:.06em}
.badge.review{border-style:dashed;border-color:var(--color-ink-3);color:var(--color-ink-3)}
.badge.failed{border-color:var(--color-accent);color:var(--color-accent)}
.sources{margin-top:var(--space-xl);font-size:var(--text-sm);color:var(--color-ink-3)}
.sources a{color:var(--color-ink-2);text-underline-offset:.25em}
.data-tools{margin-top:var(--space-lg);padding-top:var(--space-md);border-top:var(--rule-hair) solid var(--color-rule)}
.data-tools p{margin:var(--space-2xs) 0 var(--space-sm);max-width:64ch;font-size:var(--text-sm);color:var(--color-ink-2)}

/* holders */
.notice{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-sm) var(--space-md);align-items:start;padding:var(--space-md);border:var(--rule-hair) solid var(--color-ink);background:var(--color-sheet)}
.notice p{color:var(--color-ink-2);line-height:1.6}
.notice strong{color:var(--color-ink);font-weight:600}
.terms{margin:var(--space-sm) 0 var(--space-sm);border-top:var(--rule-hair) solid var(--color-ink)}
.terms>div{display:grid;grid-template-columns:12rem minmax(0,1fr);gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:var(--rule-hair) solid var(--color-rule-soft)}
.terms dt{font-weight:600;font-size:var(--text-sm)}
.terms dd{margin:0;color:var(--color-ink-2);font-size:var(--text-sm);line-height:1.55}
.checklist{list-style:none;counter-reset:item;margin:var(--space-sm) 0 0;padding:0;border-top:var(--rule-hair) solid var(--color-ink)}
.checklist li{counter-increment:item;display:grid;grid-template-columns:2.5rem minmax(0,1fr) auto;gap:var(--space-sm);align-items:start;padding:var(--space-sm) 0;border-bottom:var(--rule-hair) solid var(--color-rule)}
.checklist li::before{content:counter(item,decimal-leading-zero);font:400 var(--text-xs)/1.9 var(--font-mono);color:var(--color-ink-3)}
.checklist h3{font-size:var(--text-md)}
.checklist p{margin-top:var(--space-3xs);font-size:var(--text-sm);color:var(--color-ink-2)}
.faq details{border-bottom:var(--rule-hair) solid var(--color-rule)}
.faq details:first-of-type{border-top:var(--rule-hair) solid var(--color-ink)}
.faq summary{display:flex;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) 0;font-weight:600;cursor:pointer;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font:400 var(--text-md) var(--font-mono);color:var(--color-ink-3)}
.faq details[open] summary::after{content:"−"}
.faq details p{padding-bottom:var(--space-sm);max-width:64ch;color:var(--color-ink-2);line-height:1.6}
.faq a{text-decoration-color:var(--color-rule);text-underline-offset:.25em}

/* ─── footer ─────────────────────────────────────────────────────────── */
.foot{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2xs) var(--space-lg);padding:var(--space-lg) var(--gutter) var(--space-xl);border-top:var(--rule-hair) solid var(--color-ink);font-size:var(--text-sm);color:var(--color-ink-2)}
.footer-brand{font:900 1.125rem/1 var(--font-display);font-stretch:var(--stretch-display);letter-spacing:-.035em;color:var(--color-ink);text-decoration:none}
#footer-state{font:400 var(--text-xs) var(--font-mono)}
.foot .text-link{margin-left:auto}
.foot-legal{flex-basis:100%;font-size:var(--text-xs);color:var(--color-ink-3)}

/* ─── dialogs ────────────────────────────────────────────────────────── */
dialog{width:min(40rem,calc(100vw - 2rem));max-height:calc(100svh - 2rem);padding:var(--space-md);border:var(--rule-hair) solid var(--color-ink);border-radius:0;background:var(--color-sheet);color:var(--color-ink)}
dialog::backdrop{background:var(--color-scrim)}
.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm)}
.dialog-head h2{font-size:var(--text-lg)}
.icon-button{display:grid;place-items:center;flex:none;width:2.25rem;height:2.25rem;padding:0;border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-input);background:transparent;cursor:pointer}
.icon-button:hover{border-color:var(--color-ink)}
.icon-button img{width:1rem;height:1rem}
#import-form>p{font-size:var(--text-sm);color:var(--color-ink-2)}
.file-label{display:grid;gap:var(--space-2xs);margin:var(--space-sm) 0;font-size:var(--text-sm)}
.error{min-height:1.2em;margin-bottom:var(--space-sm);font-size:var(--text-sm);color:var(--color-accent)}
#receipt-detail>p{font-size:var(--text-sm);color:var(--color-ink-2);margin-bottom:var(--space-sm)}
.receipt-fields{display:grid;grid-template-columns:8rem minmax(0,1fr);gap:var(--space-2xs) var(--space-sm);margin:0 0 var(--space-sm)}
.receipt-fields dt{font:500 var(--text-xs)/1.6 var(--font-body);color:var(--color-ink-3)}
.receipt-fields dd{margin:0;font:400 var(--text-xs)/1.6 var(--font-mono);overflow-wrap:anywhere}
.receipt-warning{color:var(--color-accent)!important}
.deltas{list-style:none;margin:var(--space-2xs) 0 var(--space-sm);padding:0}
.deltas li{display:flex;justify-content:space-between;gap:var(--space-sm);padding:var(--space-3xs) 0;border-bottom:var(--rule-hair) solid var(--color-rule-soft);font:400 var(--text-xs) var(--font-mono)}
.deltas code{overflow-wrap:anywhere;min-width:0}
#receipt-detail>a{display:inline-block;margin-top:var(--space-xs);font-size:var(--text-sm);text-underline-offset:.25em}
.toast{position:fixed;left:50%;bottom:var(--space-md);z-index:50;transform:translateX(-50%);padding:var(--space-xs) var(--space-sm);background:var(--color-ink);color:var(--color-sheet);font-size:var(--text-sm)}

/* ─── narrower screens ───────────────────────────────────────────────── */
@media (max-width:1100px){
  .record-row{grid-template-columns:repeat(3,minmax(0,1fr))}
  .record-row>div:nth-child(4){border-left:0;padding-left:0}
  .record-row>div:nth-child(-n+3){border-bottom:var(--rule-hair) solid var(--color-rule)}
  .chain-notes{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:900px){
  .hero{grid-template-columns:minmax(0,1fr);min-height:0}
  .hero-copy{padding:var(--space-2xl) var(--gutter) var(--space-xl)}
  .hero-desk{min-height:32rem}
  .hero-desk::before{background:linear-gradient(180deg,var(--color-night) 0,transparent 18%)}
  .printout{left:50%;width:31rem;transform:translateX(-50%) rotate(-2.6deg)}
  .hero-desk::after{height:26%}
  .hours{grid-template-columns:minmax(0,1fr)}
  .slip-wrap{max-width:25rem}
  .coverage{grid-template-columns:repeat(2,minmax(0,1fr))}
  .coverage-wide{grid-column:1/-1}
  .results,.position-detail-body{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:760px){
  .top{position:relative;grid-template-columns:minmax(0,1fr) auto;row-gap:0}
  .brand{min-height:3.25rem}
  .tabs{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:repeat(4,auto);justify-content:space-between;gap:var(--space-xs);border-top:var(--rule-hair) solid var(--color-on-night-rule)}
  .tabs a{min-height:2.75rem;font-size:var(--text-sm)}
  .wallet-link{grid-column:2;grid-row:1}
  .token-strip{grid-template-columns:minmax(0,1fr);gap:var(--space-xs)}
  .token-strip .btn{justify-self:start}
  .record-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .record-row>div{border-left:0!important;padding-left:0!important;border-bottom:var(--rule-hair) solid var(--color-rule)}
  .record-row>div:nth-child(2n){padding-left:var(--space-md)!important;border-left:var(--rule-hair) solid var(--color-rule)!important}
  .record-row>div:nth-last-child(-n+2){border-bottom:0}
  .chain{padding-top:var(--space-2xl)}
  .chain-notes{grid-template-columns:minmax(0,1fr)}
  .ledger,.coverage{margin-inline:0}
  .coverage{padding-inline:var(--gutter)}
  .book-filterbar{padding-inline:var(--gutter)}
  .book-filterbar .search{flex:1 1 100%}
  .book-filterbar .row-count{margin-left:0}
  .segments button{padding:0 var(--space-2xs);flex:1 1 auto}
  .segments{flex-wrap:nowrap;width:100%}
  /* on a phone a token slip keeps what tells tokens apart: last fill, both sides, fill count */
  .book-table td:nth-child(2),.book-table td:nth-child(7){display:none}
  .ledger-foot{padding-inline:var(--gutter)}
  /* token and execution rows read as labelled slips */
  .book-table thead,.execution-table thead{display:none}
  .book-table,.book-table tbody,.book-table tr,.book-table td,.execution-table,.execution-table tbody,.execution-table tr,.execution-table td{display:block;width:100%}
  .book-table tr,.execution-table tr{padding:var(--space-xs) var(--gutter);border-bottom:var(--rule-hair) solid var(--color-rule)}
  .book-table td,.execution-table td{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-sm);padding:var(--space-3xs) 0;border:0;white-space:normal;text-align:right}
  .book-table td::before,.execution-table td::before{content:attr(data-label);font:500 var(--text-xs)/1.5 var(--font-body);color:var(--color-ink-3);text-align:left}
  .book-table td:first-child,.execution-table td:nth-child(3){display:block;text-align:left;padding-bottom:var(--space-2xs)}
  .book-table td:first-child::before,.execution-table td:nth-child(3)::before{display:none}
  .execution-table td:nth-child(3){order:-1}
  .execution-table tr{display:flex;flex-direction:column}
  .table-scroll tbody tr:hover>td{background:none}
  details.fold{margin-inline:var(--gutter)}
  .terms>div{grid-template-columns:minmax(0,1fr);gap:var(--space-3xs)}
  .checklist li{grid-template-columns:2rem minmax(0,1fr)}
  .checklist .stamp{grid-column:2;justify-self:start}
  .notice{grid-template-columns:minmax(0,1fr)}
  .notice .stamp{justify-self:start}
  .mini-metrics{grid-template-columns:minmax(0,1fr)}
  .foot .text-link{margin-left:0}
  .receipt-fields{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:600px){
  .hero-desk{min-height:27rem}
  .printout{--lh:1.375rem;--margin:1.15rem;width:19.5rem;top:-3rem}
  .pl .txt{padding:0 .5rem;font-size:.72rem}
  .pl.hole::before,.pl.hole::after{background:radial-gradient(circle at 50% 50%,var(--color-hole) 0 .24rem,var(--color-print-rule) .26rem .28rem,transparent .3rem)}
  .hero .actions .btn{flex:1 1 100%;justify-content:space-between}
}
@media (max-width:450px){
  .segments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .segments button{border-bottom:var(--rule-hair) solid var(--color-rule)}
  .segments button:nth-child(2n){border-right:0}
  .segments button:nth-last-child(-n+2){border-bottom:0}
  .record-row dd{font-size:var(--text-md)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}
}
/* Holder claims are shown only after a real on-chain configuration is verified. */
.holder-portal{margin:var(--space-xl) 0;padding:clamp(1.25rem,3vw,2.5rem);background:var(--color-sheet);border:var(--rule-hair) solid var(--color-rule)}
.holder-portal-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.holder-portal-head h2{margin:.25rem 0 0}
.holder-portal .portal-label{font:var(--text-2xs) var(--font-mono);letter-spacing:.13em;color:var(--color-ink-3)}
#holder-portal-status{margin:1.2rem 0;color:var(--color-ink-2);overflow-wrap:anywhere}
.claim-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 0;border-top:var(--rule-hair) solid var(--color-rule)}
.claim-card p{margin:0;font-family:var(--font-mono)}
.claim-card strong{font:var(--text-sm) var(--font-mono);color:var(--color-ink-2)}
@media(max-width:680px){.holder-portal-head,.claim-card{align-items:flex-start;flex-direction:column}}
