/* Loam: terminal, minimal. One mono face, bone on black, one vermillion signal. Everything pictorial is ASCII (js/ascii.js).
   Kit classes: .wrap .sec .b .btn .box .tbl .kv .field .seg .tag .ln .caret .asc .cap .cols .code .toast details.q */
@font-face{font-family:'Martian Mono';font-weight:300;font-display:swap;src:url(../fonts/martian-300.woff2) format('woff2')}
@font-face{font-family:'Martian Mono';font-weight:400;font-display:swap;src:url(../fonts/martian-400.woff2) format('woff2')}
@font-face{font-family:'Martian Mono';font-weight:700;font-display:swap;src:url(../fonts/martian-700.woff2) format('woff2')}

:root{
  --bg:#0A0A09; --ink:#D8D5C8; --ink-hi:#F4F1E6; --dim:#6F6C62; --faint:#2A2925; --line:#37352F;
  --signal:#FF4B2B; --signal-src:#ff5000; --signal-bg:rgba(255,75,43,.1);
  --mono:'Martian Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --fs:13px; --lh:1.7; --gut:20px; --max:1040px;
  --ease:steps(1,end);
}
*,*::before,*::after{box-sizing:border-box}
html{background:var(--bg);color:var(--ink);font:300 var(--fs)/var(--lh) var(--mono);-webkit-text-size-adjust:100%;scroll-behavior:smooth;color-scheme:dark}
body{margin:0;min-height:100vh;background:var(--bg);display:flex;flex-direction:column;font-weight:300;font-variant-ligatures:none;letter-spacing:-.01em}
main{flex:1}
::selection{background:var(--signal);color:#000}
a{color:var(--ink-hi);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
a:hover{text-decoration-color:var(--signal);color:#fff}
img,canvas,svg{display:block;max-width:100%}
h1,h2,h3,h4{font-weight:700;margin:0;letter-spacing:-.02em;color:var(--ink-hi);line-height:1.35}
h1{font-size:clamp(20px,3.6vw,34px);text-transform:none}
h2{font-size:15px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:14px}
h2::before{content:'## ';color:var(--signal)}
h3{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-hi);margin:20px 0 6px}
h3::before{content:'> ';color:var(--dim)}
p{margin:0 0 12px;max-width:74ch}
small,.dim{color:var(--dim)}
.sig{color:var(--signal)}
.hi{color:var(--ink-hi)}
strong,b{font-weight:700;color:var(--ink-hi)}
code,kbd{font:inherit;color:var(--ink-hi);background:var(--faint);padding:0 .45ch}
hr{border:0;border-top:1px dashed var(--line);margin:28px 0}
ul.l,ol.l{list-style:none;margin:0 0 12px;padding:0}
ul.l li{padding-left:3ch;position:relative}ul.l li::before{content:'-';position:absolute;left:0;color:var(--dim)}
ol.l{counter-reset:o}ol.l li{counter-increment:o;padding-left:4ch;position:relative}ol.l li::before{content:counter(o,decimal-leading-zero);position:absolute;left:0;color:var(--dim)}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--ink-hi);color:#000;padding:4px 8px;z-index:99}
:focus-visible{outline:1px dashed var(--signal);outline-offset:3px}

.wrap{width:100%;max-width:var(--max);margin:0 auto;padding:0 var(--gut)}
.sec{padding:56px 0 8px}
.sec>.wrap>h2:first-child{margin-top:0}
.cols{display:grid;gap:28px;grid-template-columns:repeat(2,minmax(0,1fr))}
.cols.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.cols.c12{grid-template-columns:minmax(0,1fr) minmax(0,1.7fr)}
.cols.c21{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}
.cols>*{min-width:0}
@media(max-width:820px){.cols,.cols.c3,.cols.c12,.cols.c21{grid-template-columns:minmax(0,1fr)}}

/* header: a single prompt line */
.top{position:sticky;top:0;z-index:30;background:var(--bg);border-bottom:1px dashed var(--line)}
.top .wrap{display:flex;align-items:center;gap:8px 22px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}
.prompt{color:var(--ink-hi);text-decoration:none;font-weight:700;white-space:nowrap}
.prompt .at,.prompt .p{color:var(--dim)}.prompt .h{color:var(--signal)}
.nav{display:flex;flex-wrap:wrap;gap:0 14px;margin-left:auto}
.nav a,.b{color:var(--ink);text-decoration:none;white-space:nowrap}
.nav a::before,.b::before{content:'[';color:var(--dim)}
.nav a::after,.b::after{content:']';color:var(--dim)}
.nav a:hover,.b:hover,.nav a[aria-current]{background:var(--ink-hi);color:#000}
.nav a:hover::before,.nav a:hover::after,.b:hover::before,.b:hover::after,.nav a[aria-current]::before,.nav a[aria-current]::after{color:#000}
.nav a[aria-current]{background:var(--ink-hi)}
.torpill{white-space:nowrap;color:var(--dim)}.torpill i{font-style:normal;color:var(--ink-hi)}
html[data-tor="no"] .torpill i,html[data-tor="weak"] .torpill i{color:var(--signal)}
@media(max-width:760px){.nav{margin-left:0;width:100%;order:3}.torpill{margin-left:auto}}

/* buttons */
.btn,button.btn{font:700 var(--fs)/var(--lh) var(--mono);color:var(--ink-hi);background:none;border:0;padding:0;cursor:pointer;text-decoration:none;white-space:nowrap;display:inline-block}
.btn::before{content:'[ ';color:var(--dim)}.btn::after{content:' ]';color:var(--dim)}
.btn:hover{background:var(--ink-hi);color:#000}.btn:hover::before,.btn:hover::after{color:#000}
.btn.pri{color:var(--signal)}.btn.pri::before,.btn.pri::after{color:var(--signal)}
.btn.pri:hover{background:var(--signal);color:#000}.btn.pri:hover::before,.btn.pri:hover::after{color:#000}
.btn[disabled],.btn.off{opacity:.35;pointer-events:none}
.row{display:flex;flex-wrap:wrap;gap:6px 22px;align-items:center;margin:16px 0}

/* ascii figures */
.asc{position:relative}
canvas.ascii{width:100%;height:auto;user-select:none}
.cap{color:var(--dim);font-size:11px;margin-top:6px}
.cap::before{content:'fig. ';color:var(--faint)}
.fig{margin:0}

/* hero */
.hero{padding-top:28px}
.hero h1{margin:22px 0 10px;max-width:22ch}
.hero .lede{max-width:62ch;color:var(--ink)}
.hero .asc{margin-left:calc(var(--gut)*-1);margin-right:calc(var(--gut)*-1);overflow:hidden}
.hero canvas.ascii{margin:0 auto}

/* box: bordered block with an inline title */
.box{position:relative;border:1px solid var(--line);padding:18px 16px 14px;margin:20px 0 16px}
.box[data-t]::before{content:attr(data-t);position:absolute;top:-.85em;left:12px;background:var(--bg);padding:0 .8ch;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;font-size:11px}
.box.hot{border-color:var(--signal)}.box.hot[data-t]::before{color:var(--signal)}
.box>:last-child{margin-bottom:0}
.box{overflow-x:auto}.box[data-t]{overflow:visible}.box .ln,.box pre{max-width:100%}

/* tables */
.tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.tbl th{font-weight:300;color:var(--dim);text-align:left;text-transform:uppercase;letter-spacing:.06em;font-size:11px;padding:4px 14px 8px 0;border-bottom:1px dashed var(--line);white-space:nowrap}
.tbl td{padding:7px 14px 7px 0;border-bottom:1px dashed var(--faint);vertical-align:baseline}
.tbl tr:hover td{background:var(--faint)}
.tbl td.r,.tbl th.r{text-align:right}
.tbl a{text-decoration:none}.tbl a:hover{background:var(--ink-hi);color:#000}
.up{color:var(--ink-hi)}.down{color:var(--signal)}
.scroll{overflow-x:auto}

/* key / value with dotted leader */
.kv{margin:0 0 14px;padding:0;list-style:none}
.kv li{display:flex;gap:1ch;align-items:baseline}
.kv li::before{content:none}
.kv .k{color:var(--dim);white-space:nowrap}
.kv .d{flex:1;border-bottom:1px dotted var(--line);transform:translateY(-.3em);min-width:2ch}
.kv .v{color:var(--ink-hi);text-align:right}

/* forms */
.field{display:block;margin:0 0 14px}
.field>span:first-child{display:block;color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.field .hint{display:block;color:var(--dim);font-size:11px;margin-top:2px;text-transform:none;letter-spacing:0}
.input,input[type=text],input[type=number],input[type=email],input[type=search],input[type=password],textarea,select{font:inherit;font-weight:400;color:var(--ink-hi);background:transparent;border:0;border-bottom:1px dashed var(--dim);border-radius:0;padding:5px 0;width:100%;caret-color:var(--signal)}
textarea{border:1px dashed var(--dim);padding:8px;min-height:90px;resize:vertical}
select{appearance:none;background:var(--bg)}
select option{background:#000;color:var(--ink-hi)}
.input:focus,input:focus,textarea:focus,select:focus{outline:0;border-color:var(--signal)}
input::placeholder,textarea::placeholder{color:var(--faint)}
.pfx{display:flex;align-items:baseline;gap:1ch}.pfx::before{content:'>';color:var(--signal);font-weight:700}
.seg{display:inline-flex;flex-wrap:wrap;gap:4px 14px;margin:0 0 12px}
.seg button{font:inherit;font-weight:400;color:var(--ink);background:none;border:0;padding:0;cursor:pointer}
.seg button::before{content:'[ ';color:var(--dim)}.seg button::after{content:' ]';color:var(--dim)}
.seg button[aria-pressed=true],.seg button.on{background:var(--ink-hi);color:#000}
.seg button[aria-pressed=true]::before,.seg button[aria-pressed=true]::after,.seg button.on::before,.seg button.on::after{color:#000}
.chk{display:flex;gap:1.2ch;align-items:baseline;cursor:pointer;margin:0 0 8px}
.chk input{appearance:none;width:auto;border:0;padding:0;margin:0;font:inherit;cursor:pointer}
.chk input::before{content:'[ ]';color:var(--dim)}
.chk input:checked::before{content:'[x]';color:var(--signal);font-weight:700}
.tag{color:var(--dim);white-space:nowrap}.tag::before{content:'<'}.tag::after{content:'>'}
.tag.sig{color:var(--signal)}.tag.hi{color:var(--ink-hi)}

/* console lines */
.ln{white-space:pre-wrap;word-break:break-word}
.ln.cmd{color:var(--ink-hi);font-weight:400}.ln.cmd::before{content:'$ ';color:var(--signal)}
.ln.out{color:var(--dim)}.ln.out::before{content:'  '}
.ln.ok{color:var(--ink)}.ln.ok::before{content:'+ ';color:var(--ink-hi)}
.ln.err{color:var(--signal)}.ln.err::before{content:'! '}
.ln.dim{color:var(--dim)}
.caret{display:inline-block;width:.62em;height:1.05em;background:var(--signal);vertical-align:text-bottom;margin-left:2px;animation:blink 1.05s steps(1,end) infinite}
@keyframes blink{50%{opacity:0}}
.log{min-height:6.5em}

/* faq */
details.q{border-bottom:1px dashed var(--faint);padding:8px 0}
details.q summary{cursor:pointer;list-style:none;color:var(--ink-hi);font-weight:400}
details.q summary::-webkit-details-marker{display:none}
details.q summary::before{content:'+ ';color:var(--signal)}
details.q[open] summary::before{content:'- '}
details.q p{margin:8px 0 2px 2ch;color:var(--ink)}

pre.code,.code{font:inherit;font-size:12px;background:#000;border:1px dashed var(--line);padding:12px 14px;margin:10px 0 16px;overflow:auto;color:var(--ink);white-space:pre;tab-size:2}
.code .c{color:var(--dim)}.code .s{color:var(--ink-hi)}.code .a{color:var(--signal)}

/* coin rows used by lists */
.coinrow{display:grid;grid-template-columns:3ch minmax(0,1.4fr) 9ch 9ch minmax(0,1fr);gap:0 14px;padding:7px 0;border-bottom:1px dashed var(--faint);align-items:baseline;text-decoration:none;color:var(--ink)}
.coinrow:hover{background:var(--faint)}

/* toast */
.toast-wrap{position:fixed;left:var(--gut);bottom:var(--gut);z-index:80;display:flex;flex-direction:column;gap:4px;pointer-events:none}
.toast{background:#000;border:1px solid var(--ink-hi);color:var(--ink-hi);padding:4px 10px;animation:tin .12s steps(2,end)}
.toast::before{content:'> ';color:var(--signal)}
@keyframes tin{from{transform:translateY(6px);opacity:0}}

/* footer */
.foot{margin-top:84px;border-top:1px dashed var(--line);padding:18px 0 26px;color:var(--dim);font-size:11.5px}
.foot .wrap{display:flex;flex-wrap:wrap;gap:6px 26px}
.foot a{color:var(--dim)}.foot a:hover{color:#000;background:var(--ink-hi)}
.foot .grow{flex:1}

/* tor gate overlay (client-side check) */
#gate{position:fixed;inset:0;z-index:100;background:var(--bg);display:none;overflow:auto}
html[data-tor="no"] #gate,html[data-tor="weak"] #gate{display:block}
html[data-tor="no"],html[data-tor="weak"]{overflow:hidden}
#gate .wrap{max-width:720px;padding-top:6vh;padding-bottom:6vh}
.flowbg{position:absolute;inset:0;opacity:.55;pointer-events:none}.flowbg canvas{position:absolute;inset:0}

/* reveal: lines step in, no easing */
.rv{opacity:0}.rv.in{opacity:1;animation:stepin .5s steps(5,end)}
@keyframes stepin{0%{opacity:0;transform:translateY(4px)}40%{opacity:.5}100%{opacity:1}}
@media(prefers-reduced-motion:reduce){.rv{opacity:1}.rv.in{animation:none}.caret{animation:none}html{scroll-behavior:auto}}
html:not(.js) .rv{opacity:1}

/* scrollbars */
*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}

@media(max-width:600px){:root{--fs:12px;--gut:14px}.sec{padding-top:40px}.hero .asc{margin-left:calc(var(--gut)*-1);margin-right:calc(var(--gut)*-1)}.coinrow{grid-template-columns:2ch minmax(0,1fr) 8ch}.coinrow>:nth-child(n+4){display:none}}

