/* /sol/ v2 — classic imageboard grammar, premium build, degen twist. Tokens: brand/tokens.json (v2).
   Rules: hairlines not boxes, square corners, flat fills, no gradients, the only shadow is the 2px offset under
   primary buttons. Motion 120–180 ms for state, 520 ms FLIP for bumps; prefers-reduced-motion respected. */
@font-face{font-family:"Martian Mono";font-weight:800;src:url(/fonts/martian-mono-latin-800-normal.woff2) format("woff2");font-display:swap}
@font-face{font-family:"IBM Plex Mono";font-weight:400;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2");font-display:swap}
@font-face{font-family:"IBM Plex Mono";font-weight:500;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2");font-display:swap}
@font-face{font-family:"IBM Plex Mono";font-weight:700;src:url(/fonts/ibm-plex-mono-latin-700-normal.woff2) format("woff2");font-display:swap}

/* Night (default) */
:root{
  --bg:#0B0B0D;--s1:#141417;--s2:#1B1B20;--line:#2A2A31;
  --ink:#E9E7DF;--muted:#8C8A82;--name:#7BD88F;--subj:#B9A2FF;
  --acc:#9D7DFF;--on-acc:#0B0B0D;--gt:#9AD45B;--ql:#FF8A65;--buy:#3EE07A;--sell:#FF5C5C;--get:#F2C14E;
  --btn-shadow:#4B2BB0;--idl:30%;--idc:#FFFFFF;--scrim:rgba(0,0,0,.6);
  --disp:"Martian Mono",ui-monospace,monospace;--mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --tape-w:340px;--safe-b:env(safe-area-inset-bottom,0px);
  color-scheme:dark;
}
/* Paper (classic alt) */
:root[data-theme="paper"]{
  --bg:#F5F2E8;--s1:#ECE6D5;--s2:#E3DCC7;--line:#CFC6AE;
  --ink:#16120D;--muted:#5E584B;--name:#1D6B3B;--subj:#4A22C9;
  --acc:#5B2EE0;--on-acc:#FFFFFF;--gt:#3E6B10;--ql:#A32E17;--buy:#11692F;--sell:#B8261C;--get:#7A5A08;
  --btn-shadow:#16120D;--idl:84%;--idc:#16120D;--scrim:rgba(22,18,13,.35);
  color-scheme:light;
}
/* the archive is a graveyard: always Night ground, even in Paper */
.crypt{
  --bg:#0B0B0D;--s1:#141417;--s2:#1B1B20;--line:#2A2A31;--ink:#E9E7DF;--muted:#8C8A82;--name:#7BD88F;--subj:#B9A2FF;
  --acc:#9D7DFF;--gt:#9AD45B;--ql:#FF8A65;--sell:#FF5C5C;--get:#F2C14E;
  background:var(--bg);color:var(--ink);
}

*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;scroll-padding-top:12px}
body{margin:0;background:var(--bg);color:var(--ink);font:400 13px/1.5 var(--mono);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
input,textarea,select{font:inherit;color:var(--ink)}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
::selection{background:var(--acc);color:var(--on-acc)}
code{font:inherit;word-break:break-all}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ------------------------------------------------------------------ shell */
.shell{min-height:100vh;padding:0 16px calc(24px + var(--safe-b))}
@media (min-width:1200px){.shell{padding-right:calc(var(--tape-w) + 24px);padding-left:24px}body.tape-off .shell{padding-right:64px}}

/* top bracket nav */
.boardlist{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;padding:6px 0;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}
.boardlist .grp{white-space:nowrap}
.boardlist a,.boardlist button{color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;min-height:28px}
.boardlist a:hover,.boardlist button:hover{color:var(--acc)}
.boardlist a[aria-current]{color:var(--acc);font-weight:700}
.boardlist .sep{color:var(--muted);padding:0 3px}
.boardlist .right{margin-left:auto;display:flex;gap:10px}
.boardlist .mark{font:800 12px var(--disp);letter-spacing:-.02em;color:var(--ink)}
.boardlist .mark i{font-style:normal;color:var(--acc)}

/* board header */
.boardhead{text-align:center;padding:14px 0 6px}
.banner{display:block;margin:0 auto;width:300px;height:100px;border:1px solid var(--line);background:var(--s1)}
.boardtitle{margin:10px 0 0;font:800 26px/1.15 var(--disp);letter-spacing:-.03em;color:var(--ink)}
.boardtitle i{font-style:normal;color:var(--acc)}
.boardsub{margin:2px 0 0;color:var(--muted);font-size:12px}
.getbar{display:inline-flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:4px 14px;margin:10px auto 0;padding:6px 12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px}
.getbar .k{color:var(--muted)}
.getbar .gno{color:var(--get);font-weight:700}
.getbar .togo{font:800 15px/1 var(--disp);color:var(--get);letter-spacing:-.02em}
.getbar .pot{font-weight:700}
.hr{border:0;border-top:1px solid var(--line);margin:10px 0}

.startbar{text-align:center;margin:12px 0 4px;font-size:15px}
.startbar button{font-weight:700;min-height:36px;padding:0 4px}
.startbar button:hover{color:var(--acc)}
.notice{border:1px solid var(--line);border-left:3px solid var(--acc);background:var(--s1);padding:8px 12px;margin:10px auto;font-size:12px;max-width:780px}
.notice.err{border-left-color:var(--sell);color:var(--ink)}
.notice.err b,.notice .warn{color:var(--sell)}
.notice.ok{border-left-color:var(--buy)}
.notice b{font-weight:700}
.notice .why{margin-top:4px;color:var(--muted)}
.notice .why summary{cursor:pointer;display:inline}
.notice .why ul{margin:4px 0 0;padding-left:16px}

/* view bar: [Catalog] [Archive] [Bottom] [Refresh] etc. */
.navlinks{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;font-size:12px;color:var(--muted);padding:4px 0}
.navlinks a,.navlinks button{color:var(--ink);text-decoration:none;min-height:28px;display:inline-flex;align-items:center}
.navlinks a:hover,.navlinks button:hover{color:var(--acc)}
.navlinks .fill{flex:1}
.navlinks .count{color:var(--muted)}
.br::before{content:"[";color:var(--muted)}
.br::after{content:"]";color:var(--muted)}
.br:hover{color:var(--acc)}

/* ------------------------------------------------------------------ threads + posts */
.threads{position:relative}
.thread{position:relative;padding:8px 0 8px 30px;border-left:2px solid transparent;transition:border-color .18s ease}
.thread+.thread{border-top:1px solid var(--line)}
.thread.danger{border-left-color:var(--sell)}
.thread.hidden-t{padding-top:4px;padding-bottom:4px;color:var(--muted)}
.thread.hidden-t .pi{opacity:.85}
.thread .tctl{position:absolute;z-index:2;left:4px;top:8px;line-height:1.5;font-size:12px;color:var(--muted);min-height:22px}
.thread .tctl:hover{color:var(--acc)}
.rail{position:absolute;left:-2px;top:0;bottom:0;width:2px;background:var(--buy);opacity:0;pointer-events:none}
.thread.flash .rail{animation:rail 900ms ease-out}
.thread.flash-sell .rail{background:var(--sell);animation:rail 900ms ease-out}
@keyframes rail{0%{opacity:1;width:6px}40%{opacity:1;width:2px}100%{opacity:0}}

.post{position:relative}
.post::after{content:"";display:table;clear:both}
.post.op{padding:2px 0 4px}
.file{font-size:12px;color:var(--muted);margin:0 0 3px;overflow-wrap:anywhere}
.file a{color:var(--ink)}
.fthumb{float:left;margin:2px 16px 6px 0;display:block;border:1px solid var(--line);background:var(--s1);cursor:zoom-in;line-height:0}
.fthumb img{display:block;max-width:200px;max-height:200px;width:auto;height:auto}
.reply .fthumb img{max-width:125px;max-height:125px}
.fthumb.big{float:none;cursor:zoom-out;margin-right:0;display:inline-block}
.fthumb.big img,.reply .fthumb.big img{max-width:min(100%,1024px);max-height:none}
.fthumb .noimg{display:grid;place-items:center;width:150px;height:150px;font:800 18px var(--disp);color:var(--muted)}

/* info line */
.pi{display:block;line-height:1.75;font-size:13px}
.pi>*{vertical-align:baseline}
.pi .ck{width:13px;height:13px;margin:0 4px 0 0;vertical-align:-2px;accent-color:var(--acc)}
.pi .subj{color:var(--subj);font-weight:700;margin-right:6px;white-space:nowrap}
.pi .nm{color:var(--name);font-weight:700}
.pi .idw{color:var(--muted);margin-left:6px;white-space:nowrap}
.pi .id{display:inline-block;padding:0 4px;background:hsl(var(--h) 55% var(--idl));color:var(--idc);font-size:11px;line-height:16px;font-weight:500;cursor:pointer}
.pi .optag{font-weight:700;color:var(--ink);border:1px solid var(--line);padding:0 3px;font-size:11px}
.pi .you{color:var(--acc)}
.pi .dt{white-space:nowrap}
.pi .pno{white-space:nowrap}
.pi .pno a{text-decoration:none}
.pi .pno .q{color:var(--muted)}
.pi .pno .q:hover,.pi .pno .num:hover{color:var(--acc)}
.pi .pno .num{color:var(--acc);font-weight:500}
.pi .menu-btn{margin-left:4px;color:var(--muted);font-size:10px;padding:0 3px;min-height:20px}
.pi .menu-btn:hover,.pi .menu-btn[aria-expanded="true"]{color:var(--acc)}
.pi .act{white-space:nowrap}
.pi .act a,.pi .act button{color:var(--ink);text-decoration:none}
.pi .tags{margin-left:4px}
.tag{font-size:11px;font-weight:700;letter-spacing:.02em;white-space:nowrap}
.tag.hot{color:var(--sell)}
.tag.grad{color:var(--get)}
.tag.new{color:var(--buy)}
.tag.page{color:var(--sell)}
.tag.page.pulse{animation:pulse 1.2s ease-in-out 2}
@keyframes pulse{50%{opacity:.25}}
.tag.bumpbuy{color:var(--buy);font-weight:500}
.tag.sage{color:var(--muted);font-weight:500}
.tag.get{color:var(--get)}
.rankd{font-size:11px;font-weight:700}
.rankd.up{color:var(--buy)}
.rankd.dn{color:var(--sell)}
.bl{font-size:11px}
.bl a{color:var(--ql);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--ql) 40%,transparent);margin-right:4px}

/* body */
.pm{margin:6px 0 2px 0;white-space:pre-wrap;overflow-wrap:anywhere;max-width:86ch}
.op .pm{margin-left:0}
@media (min-width:721px){.post.op>.pm,.post.op>.coin,.post.op>.danger-note{overflow:hidden}}
.gt{color:var(--gt)}
a.ql{color:var(--ql);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--ql) 45%,transparent);text-underline-offset:2px}
a.ql:hover{text-decoration-color:var(--ql)}
a.ql.dead{text-decoration:line-through;color:var(--muted)}
.qm{font-size:11px;color:var(--ql)}

/* replies: indented boxes with side arrows, sized to content */
.rp{display:flex;gap:2px;margin:3px 0}
.rp .side{color:var(--line);flex:none;width:20px;text-align:right;padding-top:4px;user-select:none;font-size:12px}
.reply{background:var(--s1);border:1px solid var(--line);border-left:2px solid var(--line);padding:4px 10px 6px 8px;min-width:0;max-width:calc(100% - 22px);display:block}
.reply.hl{background:var(--s2);border-color:var(--acc)}
.reply.isnew{animation:newpost 1.2s ease-out}
@keyframes newpost{0%{border-color:var(--buy);background:var(--s2)}100%{}}
.reply .pm{margin-top:4px}
.inl{margin:4px 0 4px 0;border-left:1px solid var(--ql)}
.inl .reply{background:var(--s2)}

.omit{color:var(--muted);font-size:12px;margin:4px 0 4px 22px}
.omit a{color:var(--ink)}
.omit a:hover{color:var(--acc)}
.danger-note{display:block;color:var(--sell);font-size:12px;margin:2px 0 0}

/* coin strip */
.coin{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin:6px 0 2px;padding:5px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px;overflow:hidden}
.coin .tk{font:800 15px/1 var(--disp);color:var(--acc);letter-spacing:-.02em}
.coin .k{color:var(--muted)}
.coin .up{color:var(--buy);font-weight:700}
.coin .curve{display:inline-flex;align-items:center;gap:8px}
.coin .bar{position:relative;width:120px;height:8px;background:var(--s2);border:1px solid var(--line)}
.coin .bar i{position:absolute;left:0;top:0;bottom:0;background:var(--buy)}
.coin .bar.grad i{background:var(--get)}
.coin .pct{min-width:5ch}
.coin .acts{display:inline-flex;gap:10px;margin-left:auto}
.coin .acts a,.coin .acts button{text-decoration:none;color:var(--ink);font-weight:500}
.coin .acts .buy{color:var(--buy);font-weight:700}

/* numbers carry source + UTC (hover / tap) */
.n{cursor:help;text-decoration:underline dotted color-mix(in srgb,currentColor 28%,transparent);text-underline-offset:3px;text-decoration-thickness:1px}
.big .n,.getbar .togo,.coin .tk .n{text-decoration:none}
.n:hover,.n:focus-visible{text-decoration-color:currentColor}
.tip{position:fixed;z-index:80;max-width:300px;background:var(--s2);color:var(--ink);border:1px solid var(--line);padding:6px 9px;font-size:11px;line-height:1.45;pointer-events:none}
.tip b{color:var(--muted);font-weight:500}

/* hover preview of >>N */
.qpv{position:fixed;z-index:70;max-width:min(620px,92vw);pointer-events:none}
.qpv .reply,.qpv .post.op{background:var(--s2);border:1px solid var(--acc);padding:4px 10px 6px 8px;display:block}

/* ▶ menu */
.pmenu{position:absolute;z-index:60;min-width:180px;background:var(--s2);border:1px solid var(--line);padding:4px 0;font-size:12px}
.pmenu button,.pmenu a{display:flex;width:100%;text-align:left;padding:7px 12px;min-height:34px;align-items:center;text-decoration:none;color:var(--ink)}
.pmenu button:hover,.pmenu a:hover{background:var(--s1);color:var(--acc)}
.pmenu .sep{border-top:1px solid var(--line);margin:4px 0}

/* selection bar */
.selbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(16px + var(--safe-b));z-index:45;background:var(--s2);border:1px solid var(--line);padding:6px 12px;display:flex;gap:12px;align-items:center;font-size:12px}

/* bottom page nav */
.pagelist{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;padding:10px 0;border-top:1px solid var(--line);margin-top:8px;font-size:13px}
.pagelist a,.pagelist span.pg{display:inline-grid;place-items:center;min-width:28px;min-height:28px;text-decoration:none;color:var(--ink)}
.pagelist a:hover{color:var(--acc)}
.pagelist a[aria-current]{font-weight:700;color:var(--on-acc);background:var(--acc)}
.pagelist a.p10{color:var(--sell);font-weight:700}
.pagelist a.p10[aria-current]{background:var(--sell);color:var(--bg)}
.pagelist a.p9{color:var(--sell)}
.pagelist a[aria-disabled="true"]{color:var(--muted);pointer-events:none}
.pagelist .sp{width:10px}
.pagelist .hint{flex-basis:100%;color:var(--muted);font-size:11px}

/* ------------------------------------------------------------------ catalog */
.catbar{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;font-size:12px;padding:6px 0;border-bottom:1px solid var(--line);margin-bottom:10px}
.catbar a{color:var(--ink);text-decoration:none}
.catbar a:hover{color:var(--acc)}
.catbar label{color:var(--muted);display:inline-flex;align-items:center;gap:6px}
.catbar select,.catbar input{background:var(--s1);border:1px solid var(--line);padding:4px 6px;min-height:30px;border-radius:0}
.catbar input{width:180px}
.catbar .seg button{padding:0 4px;min-height:30px}
.catbar .seg button[aria-pressed="true"]{color:var(--acc);font-weight:700}
.catalog{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:18px 10px;align-items:start}
.catalog.large{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.tile{display:block;text-align:center;text-decoration:none;color:var(--ink);font-size:12px;padding:4px;border:1px solid transparent;position:relative}
.tile:hover{border-color:var(--line);background:var(--s1)}
.tile.danger{border-bottom:2px solid var(--sell)}
.tile .ti{display:flex;align-items:flex-end;justify-content:center;height:152px;margin:0 auto 4px;line-height:0}
.catalog.large .tile .ti{height:242px}
.tile img{max-width:150px;max-height:150px;width:auto;height:auto;border:1px solid var(--line)}
.catalog.large .tile img{max-width:240px;max-height:240px}
.tile .noimg{display:grid;place-items:center;width:150px;height:110px;margin:0 auto;border:1px solid var(--line);font:800 16px var(--disp);color:var(--muted)}
.tile .ri{display:block;color:var(--muted);font-size:11px}
.tile .ri b{color:var(--ink);font-weight:700}
.tile .tt{display:block;margin-top:2px}
.tile .tt .subj{color:var(--subj);font-weight:700}
.tile .tx{display:block;overflow-wrap:anywhere;max-height:6em;overflow:hidden;white-space:pre-line}
.catalog:not(.large) .tile .tx{max-height:4.5em}
.tile .tl{display:block;font-size:11px;line-height:1.6}
.tile .tl .tag{margin-left:2px}
.tile .tl .tk{color:var(--acc);font-weight:700}
.tile .fl{color:var(--buy)}
.tile .mini{display:block;height:3px;background:var(--s2);margin:4px 8px 0;position:relative}
.tile .mini i{position:absolute;left:0;top:0;bottom:0;background:var(--buy)}

/* ------------------------------------------------------------------ pages (GETs, buybacks, rules, archive) */
.page{max-width:900px;margin:0 auto;padding:16px 0 24px}
.page h1{font:800 26px/1.15 var(--disp);letter-spacing:-.03em;margin:4px 0 8px}
.page h2{font:700 14px/1.3 var(--mono);margin:22px 0 6px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.page p,.page li{margin:5px 0;max-width:80ch}
.page ul{padding-left:18px;margin:6px 0}
.page code{font-size:12px;color:var(--ink);background:var(--s1);padding:0 3px}
.page p a,.page li a,.page .tbl a{color:var(--ql)}
.page a.br,.page .pagelist a{color:var(--ink);text-decoration:none}
.tbl{border-collapse:collapse;width:100%;font-size:12px;margin:6px 0}
.tbl th,.tbl td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
.tbl th{color:var(--muted);font-weight:500}
.tbl td.r,.tbl th.r{text-align:right}
.tbl a{color:var(--ql)}
.wrapx{overflow-x:auto}
.big{display:flex;flex-wrap:wrap;gap:12px 36px;margin:10px 0 6px}
.big div{display:grid}
.big .v{font:800 34px/1.05 var(--disp);letter-spacing:-.03em}
.big .v.gold{color:var(--get)}
.big .v.acc{color:var(--acc)}
.big .l{color:var(--muted);font-size:12px;margin-top:6px}
.st-paid{color:var(--buy)}
.st-pending{color:var(--get)}
.st-skipped,.st-failed{color:var(--sell)}
.src{color:var(--muted);font-size:11px}
.empty{color:var(--muted);padding:18px 0}
.empty .btn{margin-top:10px}

/* graveyard */
.crypt{margin:10px -16px 0;padding:14px 16px 20px}
@media (min-width:721px){.crypt{margin:10px 0 0;border:1px solid var(--line)}}
.crypt h1{color:var(--ink)}
.grave{text-decoration:none;font-size:12px;border-bottom:1px solid var(--line);padding:7px 0;display:grid;grid-template-columns:auto 1fr auto;gap:2px 12px;color:var(--muted)}
.grave .no{color:var(--muted)}
.grave .at .n{text-decoration:none}
.grave .nm{color:var(--ink)}
.grave .nm .subj{color:var(--muted);font-weight:700}
.grave .tk{color:var(--muted)}
.grave .at{text-align:right}
.grave .tx{grid-column:2/4;overflow-wrap:anywhere;opacity:.85}
.grave a{color:inherit}
.grave:hover .nm,.grave:hover .subj{color:var(--ink)}

/* ------------------------------------------------------------------ buttons + forms */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:0 14px;border:1px solid var(--line);background:var(--s1);color:var(--ink);text-decoration:none;font-weight:500;transition:background .15s ease,transform .12s ease}
.btn:hover{border-color:var(--acc)}
.btn.primary{background:var(--acc);color:var(--on-acc);border-color:var(--acc);box-shadow:2px 2px 0 var(--btn-shadow);font-weight:700}
.btn.primary:active{transform:translate(2px,2px);box-shadow:none}
.btn[disabled]{background:var(--s1);color:var(--muted);border-color:var(--line);box-shadow:none;cursor:not-allowed}
.field{display:grid;gap:3px;margin:0 0 8px}
.field label{font-size:11px;color:var(--muted)}
.field input,.field textarea{background:var(--bg);border:1px solid var(--line);padding:7px 8px;border-radius:0;width:100%}
.field textarea{resize:vertical;min-height:84px}
.field input[type=file]{padding:5px;font-size:12px;color:var(--muted)}
.field input[type=file]::file-selector-button{font:inherit;color:var(--ink);background:var(--s1);border:1px solid var(--line);padding:4px 10px;margin-right:10px;cursor:pointer}
.row2{display:grid;grid-template-columns:1fr 120px;gap:8px}
.note{font-size:11px;color:var(--muted);margin:6px 0}
.fees{font-size:12px;border:1px solid var(--line);padding:6px 9px;margin:8px 0;display:grid;gap:2px}
.fees div{display:flex;justify-content:space-between;gap:12px}
.fees .t{font-weight:700;border-top:1px solid var(--line);padding-top:4px;margin-top:2px}
.src-line{font-size:11px;color:var(--muted)}
.walletlist{display:grid;gap:6px;margin:6px 0 10px}
.walletlist a,.walletlist button{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--line);text-decoration:none;width:100%;color:var(--ink)}
.walletlist a:hover,.walletlist button:hover{border-color:var(--acc)}
.walletlist img{width:20px;height:20px}

/* ------------------------------------------------------------------ Quick Reply */
.qr{position:fixed;z-index:50;width:400px;background:var(--s2);border:1px solid var(--line);right:calc(var(--tape-w) + 40px);bottom:24px;display:flex;flex-direction:column;max-height:calc(100vh - 32px)}
body.tape-off .qr{right:80px}
.qr header{display:flex;align-items:center;gap:8px;padding:0 4px 0 10px;min-height:34px;border-bottom:1px solid var(--line);cursor:move;user-select:none;touch-action:none;font-weight:700;font-size:12px}
.qr header .ttl{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qr header .x{width:34px;height:34px;display:grid;place-items:center;color:var(--muted);cursor:pointer}
.qr header .x:hover{color:var(--sell)}
.qr .body{padding:10px;overflow:auto}
.qr .presets{display:flex;flex-wrap:wrap;gap:4px;margin:2px 0 8px}
.qr .presets button{min-height:32px;padding:0 9px;border:1px solid var(--line);font-size:12px;background:var(--bg)}
.qr .presets button[aria-pressed="true"]{background:var(--acc);color:var(--on-acc);border-color:var(--acc);font-weight:700}
.qr .go{width:100%}
.qr .grab{display:none}
.scrim{position:fixed;inset:0;z-index:48;background:var(--scrim)}

/* sheet (wallet, tape on phones) */
.sheet{position:fixed;z-index:52;background:var(--s2);border:1px solid var(--line);left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,calc(100vw - 32px));max-height:80vh;overflow:auto;padding:0 12px 12px}
.sheet header{display:flex;align-items:center;justify-content:space-between;min-height:40px;border-bottom:1px solid var(--line);margin:0 -12px 10px;padding:0 4px 0 12px;font-weight:700;font-size:12px;position:sticky;top:0;background:var(--s2)}
.sheet header button{width:40px;height:40px;color:var(--muted)}

/* ------------------------------------------------------------------ live tape */
.tape{position:fixed;z-index:20;top:0;right:0;bottom:0;width:var(--tape-w);border-left:1px solid var(--line);background:var(--bg);display:none;flex-direction:column;font-size:11px}
@media (min-width:1200px){.tape{display:flex}}
.tape header{display:flex;align-items:center;gap:8px;padding:0 6px 0 12px;min-height:38px;border-bottom:1px solid var(--line)}
.tape header .t{font:800 12px var(--disp);letter-spacing:-.02em}
.tape header .live{width:7px;height:7px;background:var(--buy);display:inline-block}
.tape header .live.off{background:var(--muted)}
.tape header .fill{flex:1}
.tape header button{min-height:30px;color:var(--muted)}
.tape header button:hover{color:var(--acc)}
.tape .log{flex:1;overflow:auto;padding:4px 0;margin:0;list-style:none}
.tape .log li{padding:3px 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent);line-height:1.45}
.tape .log li.in{animation:tapein 900ms ease-out}
@keyframes tapein{0%{background:var(--s2)}100%{background:transparent}}
.tape .log .tm{color:var(--muted)}
.tape .log .up{color:var(--buy);font-weight:700}
.tape .log .dn{color:var(--sell);font-weight:700}
.tape .log .gold{color:var(--get);font-weight:700}
.tape .log .ac{color:var(--acc)}
.tape .log .mt{color:var(--muted)}
.tape .log a{color:inherit;text-decoration:none}
.tape .log a:hover{color:var(--acc)}
.tape .log a.tx{color:var(--ql)}
.tape footer{border-top:1px solid var(--line);padding:6px 12px;color:var(--muted);font-size:10.5px}
body.tape-off .tape{width:44px}
body.tape-off .tape .log,body.tape-off .tape footer,body.tape-off .tape header .t,body.tape-off .tape header .fill{display:none}
body.tape-off .tape header{flex-direction:column;padding:8px 0;gap:10px;border:0}
.tape-sheet .log{list-style:none;margin:0;padding:0;font-size:12px}
.tape-sheet .log li{padding:6px 0;border-bottom:1px solid var(--line)}

/* footer */
.foot{margin-top:24px;padding-top:10px;border-top:1px solid var(--line);color:var(--muted);font-size:11px;max-width:900px}
.foot a{color:var(--ink)}

/* phone dock */
.dock{display:none}

/* ------------------------------------------------------------------ phone */
@media (max-width:720px){
  .shell{padding-bottom:calc(76px + var(--safe-b))}
  .boardlist{font-size:12px;gap:0 8px}
  .boardlist a,.boardlist button{min-height:40px;padding:0 3px}
  .boardlist .sep{padding:0}
  .boardlist a,.boardlist button{min-width:40px;justify-content:center}
  .boardlist .grp.wide{display:none}
  .boardtitle{font-size:22px}
  .thread{padding-left:0;border-left-width:0}
  .thread.danger{border-left-width:2px;padding-left:8px}
  .thread .tctl{left:auto;right:-8px;top:0;min-width:40px;min-height:40px;display:grid;place-items:center}
  .thread .post.op>.pi{padding-right:34px}
  .boardhead{padding-top:10px}
  .boardsub{display:none}
  .getbar{gap:2px 12px;padding:6px 4px}
  .fthumb{margin-right:10px}
  .post.op{display:grid;grid-template-columns:fit-content(112px) minmax(0,1fr);grid-template-areas:"pi pi" "dn dn" "coin coin" "file file" "th pm";column-gap:10px}
  .post.op>.pi{grid-area:pi}
  .post.op>.danger-note{grid-area:dn}
  .post.op>.coin{grid-area:coin}
  .post.op>.file{grid-area:file;margin-top:4px}
  .post.op>.fthumb{grid-area:th;float:none;margin:0 0 6px;align-self:start}
  .post.op>.fthumb.big{grid-column:1/-1}
  .post.op>.pm{grid-area:pm;margin-top:0}
  .post.op>.fthumb.big+.pm,.post.op>.fthumb.big~.pm{grid-area:auto;grid-column:1/-1}
  .post.op:not(:has(.fthumb))>.pm{grid-column:1/-1}
  .fthumb img{max-width:110px;max-height:110px}
  .reply .fthumb img{max-width:90px;max-height:90px}
  .rp .side{width:12px}
  .reply{max-width:calc(100% - 14px)}
  .pi{font-size:12px}
  .pi .ck{display:none}
  .pi .menu-btn{display:inline-grid;place-items:center;min-width:40px;min-height:40px;margin:-12px -6px -12px -2px}
  .pi .act a{display:inline-block;padding:11px 2px;margin:-11px 0;white-space:nowrap}
  .coin{gap:4px 12px}
  .coin .bar{width:90px}
  .coin .acts{margin-left:0;width:100%;gap:0}
  .coin .acts>*{flex:1;min-height:40px;display:grid;place-items:center;border:1px solid var(--line);margin-right:-1px}
  .pagelist a,.pagelist span.pg{min-width:40px;min-height:40px}
  .navlinks a,.navlinks button{min-height:40px}
  .catalog{grid-template-columns:repeat(2,minmax(0,1fr))}
  .catalog.large{grid-template-columns:1fr}
  .tile img{max-width:100%;max-height:150px}
  .tile .ti{height:auto;min-height:0}
  .catbar input{width:100%}
  .catbar label.s{flex:1 1 100%}
  .big .v{font-size:26px}
  .qr{left:0!important;right:0!important;top:auto!important;bottom:0!important;width:auto;max-height:88vh;border-width:1px 0 0;padding-bottom:var(--safe-b);transform:translateY(105%);transition:transform .2s ease}
  .qr.open{transform:none}
  .qr header{cursor:default;min-height:44px}
  .qr header .x{width:44px;height:44px}
  .qr .grab{display:block;width:40px;height:4px;background:var(--line);margin:6px auto 0}
  .qr .presets button{min-height:40px;flex:1;padding:0 4px;white-space:nowrap}
  .qr .go{min-height:44px}
  .sheet{left:0;right:0;bottom:0;top:auto;transform:none;width:auto;max-height:85vh;border-width:1px 0 0;padding-bottom:calc(12px + var(--safe-b))}
  .dock{display:grid;position:fixed;left:0;right:0;bottom:0;z-index:30;grid-template-columns:repeat(4,1fr);background:var(--bg);border-top:1px solid var(--line);padding-bottom:var(--safe-b)}
  .dock a{text-decoration:none}
  .dock button,.dock a{min-height:54px;display:grid;place-items:center;align-content:center;gap:1px;font-size:11px;color:var(--ink)}
  .dock b{font:800 14px var(--disp)}
  .dock .go{background:var(--acc);color:var(--on-acc)}
  .selbar{bottom:calc(66px + var(--safe-b))}
  .grave{grid-template-columns:auto 1fr}
  .grave .at{grid-column:1/3;text-align:left}
  .grave .tx{grid-column:1/3}
}
@media (min-width:721px){.qr:not(.open){display:none}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}
}

/* odometer */
.odo{display:inline-flex;overflow:hidden;height:1.05em;line-height:1.05em;vertical-align:-.12em}
.odo .d{display:inline-block;position:relative;height:1.05em}
.odo .d.roll{animation:odo 420ms cubic-bezier(.2,.7,.2,1)}
@keyframes odo{0%{transform:translateY(-100%)}100%{transform:none}}

/* launch page (owner) reuse */
.top .wrap{display:flex;align-items:center;gap:12px;min-height:48px;border-bottom:1px solid var(--line)}
.top .logo{font:800 16px var(--disp);text-decoration:none}
.top .logo i{font-style:normal;color:var(--acc)}
.top .nav{flex:1}
.wrap{max-width:900px;margin:0 auto;padding:0 16px}
.page table{border-collapse:collapse;width:100%;font-size:12px;margin:8px 0}
.page th,.page td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left}
