:root{
  --bg:0 0% 100%;--fg:80 8% 18%;--soft:75 5% 36%;--faint:60 4% 56%;--rule:0 0% 88%;--accent:9 72% 45%;
  --sans:'Hanken Grotesk',system-ui,-apple-system,sans-serif;--serif:'Newsreader',Georgia,serif;--mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  --barh:56px
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:72px}
body{margin:0;background:hsl(var(--bg));color:hsl(var(--fg));font:400 18px/1.55 var(--sans);overflow-x:hidden;-webkit-font-smoothing:antialiased}
a{color:inherit;text-underline-offset:3px}
p{margin:0 0 16px}
h1{font:400 clamp(42px,4.8vw,68px)/1.04 var(--serif);letter-spacing:-.02em;margin:0 0 26px}
h2{font:400 clamp(30px,2.8vw,40px)/1.1 var(--serif);letter-spacing:-.015em;margin:0 0 18px}

.bar{position:sticky;top:0;z-index:5;height:var(--barh);display:flex;align-items:center;gap:22px;padding:0 clamp(20px,3vw,40px);background:hsl(var(--bg));border-bottom:1px solid hsl(var(--rule))}
.mark{font:italic 400 25px/1 var(--serif);letter-spacing:-.01em;text-decoration:none}
.live{font:400 13px/1 var(--mono);color:hsl(var(--soft));display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.live i{width:8px;height:8px;border-radius:50%;background:hsl(var(--accent));flex:none}
.bar nav{margin-left:auto;display:flex;gap:22px;font-size:15px;color:hsl(var(--soft))}
.bar nav a{text-decoration:none}
.bar nav a:hover{color:hsl(var(--fg))}

.split{display:grid;grid-template-columns:minmax(0,46fr) minmax(0,54fr)}
.copy{padding:0 clamp(24px,4.5vw,76px) 40px}
.stage{position:sticky;top:var(--barh);height:calc(100vh - var(--barh));height:calc(100svh - var(--barh));overflow:hidden}
.stage canvas{transition:opacity .25s ease;display:block;width:100%;height:100%;touch-action:pan-y}
.stagekey{transition:opacity .25s ease;position:absolute;left:0;right:0;bottom:0;margin:0;padding:10px 18px;font:400 13px/1.4 var(--mono);color:hsl(var(--soft));text-align:center}

.hero{min-height:calc(100vh - var(--barh));display:flex;flex-direction:column;justify-content:center;padding:44px 0}
.kicker{color:hsl(var(--soft));font-size:18px;margin-bottom:12px}
.lede{font:400 23px/1.4 var(--serif)}
.legend{font:400 14px/1.55 var(--mono);color:hsl(var(--soft));margin-top:8px}
.beat{padding:72px 0;scroll-margin-top:60px;max-width:560px}
.num{font:400 14px/1 var(--mono);color:hsl(var(--faint));margin:0 0 12px}
.note{font-size:14px;line-height:1.5;color:hsl(var(--soft))}

.reading{margin:20px 0 16px}
.who{display:flex;justify-content:space-between;align-items:center;font:500 15px/1.3 var(--mono);margin-bottom:14px}
.step button{font:500 16px/1 var(--mono);width:36px;height:32px;background:transparent;color:hsl(var(--fg));border:1.5px solid hsl(var(--fg));border-radius:8px 11px 7px 10px;margin-left:4px;cursor:pointer}
.step button:hover{border-color:hsl(var(--accent));color:hsl(var(--accent))}
.words{margin:0 0 12px}
.tag{display:block;font-size:13px;color:hsl(var(--soft));margin-bottom:1px}
.ink{font:400 25px/1.22 var(--serif);letter-spacing:-.018em;display:block;min-height:28px}
.figures{display:flex;flex-wrap:wrap;gap:12px 34px;margin:18px 0 14px}
.figures dt{font-size:13px;color:hsl(var(--soft))}
.figures dd{font:500 21px/1.2 var(--mono);margin:2px 0 0;font-variant-numeric:tabular-nums}

figure{margin:6px 0 16px}
svg{display:block;width:100%;height:auto;overflow:visible}
figcaption{font-size:15px;line-height:1.45;margin-top:10px}
.tail{font:400 13px/1.55 var(--mono);color:hsl(var(--soft));white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 14px;padding-left:14px;border-left:2px solid hsl(var(--accent))}
.ax{font:400 11px var(--mono);fill:hsl(var(--faint))}
.ln{fill:none;stroke:hsl(var(--fg));stroke-width:1.2;stroke-linecap:round}
.gd{stroke:hsl(var(--rule));stroke-width:1;stroke-linecap:round}
.mk{stroke:hsl(var(--accent));stroke-width:1.5;stroke-linecap:round}
.mt{font:500 12px var(--sans);fill:hsl(var(--accent))}
.br{fill:hsl(var(--fg))}
.br.on{fill:hsl(var(--accent))}
.br.off{fill:hsl(var(--rule))}

.formula{font:500 20px/1.3 var(--mono);margin:6px 0 18px}
.cutter{display:grid;grid-template-columns:1fr auto;gap:4px 14px;align-items:center;margin-bottom:6px}
.cutter label{font-weight:500;font-size:15px}
.cutter output{font:500 20px/1 var(--mono)}
.cutter input{grid-column:1/-1;width:100%;height:30px;margin:0;accent-color:hsl(var(--accent));cursor:ew-resize}
:focus-visible{outline:2px solid hsl(var(--accent));outline-offset:2px}

.big{font:400 38px/1.1 var(--serif);letter-spacing:-.025em;margin:16px 0 4px}
.scr{display:grid;grid-template-columns:42px 1fr 70px;gap:10px;align-items:center;font:400 13px/1.75 var(--mono);margin-top:0}
.scr i{display:block;height:6px;background:hsl(var(--fg))}
.scr.best i{background:hsl(var(--accent))}
.scr b{font-weight:400;text-align:right}
.tries{margin-top:16px;font-size:15px}
.tries p{margin:0 0 6px}
.head{font:400 12px/1.5 var(--mono);color:hsl(var(--faint));overflow-wrap:anywhere;margin-top:14px}

.wide{max-width:920px;margin:0 auto;padding:72px clamp(24px,5vw,48px);border-top:1px solid hsl(var(--rule))}
.wide>p:not(.num):not(.foot){max-width:660px}
.wide .num{margin-top:0}
#limits{margin-top:64px}
.tablewrap{overflow-x:auto;margin:22px 0}
table{width:100%;border-collapse:collapse;font-size:15px;font-variant-numeric:tabular-nums}
thead th{font-weight:400;color:hsl(var(--soft));text-align:right;padding:6px 0 8px 18px;white-space:nowrap}
thead th:first-child,tbody th{text-align:left;padding-left:0;font-weight:400}
td{text-align:right;padding:6px 0 6px 18px;font:400 14px var(--mono)}
tbody tr:last-child th,tbody tr:last-child td{font-weight:600}
.foot{font:400 12px/1.5 var(--mono);color:hsl(var(--faint));margin-top:40px;overflow-wrap:anywhere}

@media (max-width:900px){
  body{font-size:17px}
  .bar nav{display:none}
  .split{display:flex;flex-direction:column}
  .stage{order:-1;top:var(--barh);height:46vh;height:46svh;z-index:3;border-bottom:1px solid hsl(var(--rule))}
  .copy{padding:0 20px 24px}
  .hero{min-height:0;padding:30px 0 20px}
  .beat{padding:44px 0;max-width:none;scroll-margin-top:calc(46svh + 60px)}
  html{scroll-padding-top:calc(46svh + 64px)}
  .wide{padding:48px 20px}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}


.ln{stroke-width:1.4;stroke-linejoin:round}
.scr i{height:5px;border-radius:3px}
.live-run{border:1.5px solid hsl(var(--fg));border-radius:14px 18px 12px 16px;padding:16px 18px;margin:18px 0}
.live-run .dotl{display:inline-block;width:8px;height:8px;border-radius:50%;background:hsl(var(--accent));margin-right:8px;animation:blink 1.4s infinite}
@keyframes blink{50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){.live-run .dotl{animation:none}}
.prog{height:6px;border:1px solid hsl(var(--fg));border-radius:4px;margin:10px 0 6px;overflow:hidden}
.prog b{display:block;height:100%;background:hsl(var(--fg))}

h3{font:500 21px/1.3 var(--serif);margin:34px 0 10px}
.uses{padding-left:20px;max-width:660px;margin:0 0 10px}.uses li{margin:0 0 12px}
.cmd{font:400 14px/1.6 var(--mono);background:hsl(var(--fg)/.05);border:1.5px solid hsl(var(--fg)/.75);border-radius:10px 14px 9px 12px;padding:12px 16px;overflow-x:auto;max-width:660px;margin:0 0 14px;white-space:pre}
.tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 26px;max-width:660px;margin:16px 0 0}
.tools dt{font:500 15px var(--mono)}.tools dd{margin:2px 0 0;font-size:15px;color:hsl(var(--soft))}
code{font-family:var(--mono);font-size:.9em}
.live-run h4{font:500 15px var(--mono);margin:0 0 6px}.live-run p{margin:0 0 6px;font-size:15px}

.wide h2{margin-top:64px}.wide h2:first-child{margin-top:0}

/* field notebook: a hand-drawn frame, a margin rule, sketches in the margin, pencil underlines */
body{background-color:hsl(var(--bg));background-image:none}
.frame{position:fixed;inset:7px;z-index:20;pointer-events:none;border:1.6px solid hsl(var(--fg)/.62);border-radius:255px 14px 225px 12px/12px 225px 14px 255px}
.frame::after{content:"";position:absolute;inset:3px -2px -1px 2px;border:1px solid hsl(var(--fg)/.22);border-radius:12px 240px 14px 230px/230px 14px 240px 12px}
.bar{border-bottom:0;background:linear-gradient(hsl(var(--bg)) 85%,hsl(var(--bg)/0));margin:0 9px}
.copy{position:relative}
.copy::before{content:"";position:absolute;top:0;bottom:0;left:clamp(14px,2.6vw,46px);width:1.2px;background:hsl(var(--accent)/.38)}
.beat{position:relative}
.sprig{position:absolute;left:calc(-1 * clamp(10px,3.4vw,62px));top:66px;width:34px;height:70px;transform:rotate(-8deg)}
.beat:nth-of-type(even) .sprig{transform:rotate(9deg) scaleX(-1);top:84px}
#sprig .stem{fill:none;stroke:hsl(var(--fg)/.75);stroke-width:1.3;stroke-linecap:round}
#sprig .lf{fill:hsl(100 30% 45%/.38);stroke:hsl(var(--fg)/.7);stroke-width:1}
h2{display:inline-block;padding-bottom:6px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 8' preserveAspectRatio='none'%3E%3Cpath d='M2 5 C40 2 70 7 110 4 S170 2 198 5' fill='none' stroke='%2366904c' stroke-width='2.2' stroke-linecap='round' opacity='.7'/%3E%3C/svg%3E") bottom left/100% 8px no-repeat}
.wide h2{display:table}
.wide{border-top:0;position:relative}
.wide::before{content:"";position:absolute;top:0;left:10%;right:10%;height:10px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 10' preserveAspectRatio='none'%3E%3Cpath d='M2 6 C80 2 150 9 230 5 S340 3 398 6' fill='none' stroke='%2330332b' stroke-width='1.2' opacity='.45'/%3E%3C/svg%3E") center/100% 10px no-repeat}
@media (max-width:900px){.frame{inset:4px}.sprig{display:none}.copy::before{left:10px}}

/* minimal pass: one serif voice, no ornaments beyond the frame */
.copy::before{display:none}
h2{display:block;background:none;padding:0;font:italic 400 22px/1.3 var(--serif);letter-spacing:0;margin:0 0 12px;color:hsl(var(--fg))}
h1{font-size:clamp(36px,3.6vw,52px);max-width:12em}
body{font:400 18px/1.6 var(--serif)}
.lede{font-size:20px;color:hsl(var(--soft))}
.beat{padding:56px 0;max-width:500px}
.note,.legend,.figures dt,.tag{font-family:var(--sans);font-size:13px}
.bar nav{gap:26px;font:400 15px var(--serif)}
.bar nav a{color:hsl(var(--fg))}
.live{font-size:12px}
.wide{max-width:640px;padding-top:40px}
.wide h2{margin-top:44px}
h3{font:italic 400 19px/1.3 var(--serif);margin:28px 0 8px}
.live-run{border-width:1px}
.uses{display:none}

.ca{margin-left:auto;display:flex;align-items:center;gap:8px;min-width:0;font:400 12px var(--mono);color:hsl(var(--soft))}
.ca-l{color:hsl(var(--fg))}
.ca code{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:34ch}
.ca button{font:500 12px var(--sans);padding:4px 10px;border:1px solid hsl(var(--fg)/.8);border-radius:7px 10px 6px 9px;background:transparent;color:hsl(var(--fg));cursor:pointer}
.ca button:hover{border-color:hsl(var(--accent));color:hsl(var(--accent))}
.bar nav{margin-left:22px}
@media (max-width:900px){.bar{gap:12px}.live{display:none}.ca code{max-width:12ch}.bar nav{margin-left:10px;gap:14px}}

.wallet{border:1px solid hsl(var(--fg)/.75);border-radius:12px 16px 11px 14px;padding:14px 18px;margin:12px 0 8px;max-width:660px}
.wallet .addr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 8px}
.wallet .addr code{font-size:13px;overflow-wrap:anywhere;min-width:0}
.wallet button{font:500 12px var(--sans);padding:3px 10px;border:1px solid hsl(var(--fg)/.8);border-radius:7px 10px 6px 9px;background:transparent;color:hsl(var(--fg));cursor:pointer}

.wallet .tick{margin:4px 0 2px;display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}.wallet .tick b{font:400 24px var(--serif);font-variant-numeric:tabular-nums}
