:root{--bg:#141117;--bg2:#1c1820;--card:#211c26;--line:#332c3a;--stone:#3a3442;--ink:#ece4d6;--mute:#a69cae;--amber:#ffb347;--amber2:#ffd27f;--emerald:#3ddc84;--emerald2:#1f8a5a;--red:#e5582b;--violet:#9b6bff;--r:10px;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;--sans:system-ui,-apple-system,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--sans)}
body{background-image:linear-gradient(rgba(20,17,23,.92),rgba(20,17,23,.97)),repeating-linear-gradient(0deg,#1a161e 0 3px,transparent 3px 24px),repeating-linear-gradient(90deg,#1a161e 0 3px,transparent 3px 48px);min-height:100vh;padding-bottom:calc(72px + env(safe-area-inset-bottom))}
a{color:var(--amber)}
h1{font:700 26px/1.2 var(--mono);margin:8px 0 14px;letter-spacing:.5px}
h2{font:700 16px/1.3 var(--mono);margin:18px 0 10px;color:var(--amber2)}
.card h2{margin-top:0}
.muted{color:var(--mute)}.tiny{font-size:12px}.hide{display:none!important}
img.px,.hb-img,.nft img{image-rendering:pixelated;image-rendering:crisp-edges}
/* header */
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;height:52px;padding:0 12px;background:rgba(20,17,23,.94);border-bottom:2px solid var(--line);backdrop-filter:blur(6px)}
.brand img{display:block;height:20px;width:auto;image-rendering:pixelated}
.tabs{display:none;gap:4px;margin-left:12px}
.tabs a{color:var(--mute);text-decoration:none;font:600 14px var(--mono);padding:6px 10px;border-radius:6px}
.tabs a.on,.tabs a:hover{color:var(--ink);background:var(--stone)}
.tools{margin-left:auto;display:flex;gap:8px;align-items:center}
/* buttons */
.btn,.ghost{font:700 14px var(--mono);border-radius:8px;padding:10px 16px;cursor:pointer;border:2px solid transparent;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.btn{background:var(--amber);color:#1b1208;border-color:#c97f1f;box-shadow:0 3px 0 #8f5c12}
.btn:active{transform:translateY(2px);box-shadow:0 1px 0 #8f5c12}
.btn.alt{background:var(--emerald);border-color:var(--emerald2);box-shadow:0 3px 0 #145c3c;color:#06210f}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.ghost{background:transparent;color:var(--ink);border-color:var(--stone)}
.sm{padding:6px 10px;font-size:13px}
/* layout */
main{max-width:1080px;margin:0 auto;padding:12px}
.view{display:none}.view.on{display:block;animation:fade .2s}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1}}
.hero-band{display:flex;flex-direction:column;gap:12px;align-items:center;margin:4px 0 12px}
.hb-img{width:100%;max-width:420px;height:auto;border:2px solid var(--line);border-radius:var(--r)}
.lead{color:var(--mute);margin:0}
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:10px 0}
.stat{background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:10px 12px}
.stat b{display:block;font:700 20px var(--mono);color:var(--emerald)}
.stat.amber b{color:var(--amber)}
.stat span{font-size:12px;color:var(--mute)}
.bar{height:10px;background:var(--bg2);border:2px solid var(--line);border-radius:6px;overflow:hidden;margin:4px 0 14px}
.bar i{display:block;height:100%;background:repeating-linear-gradient(90deg,var(--amber) 0 8px,#e5962f 8px 16px)}
.grid2{display:grid;grid-template-columns:1fr;gap:12px}
.card{background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:12px}
.kv{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:14px}
.kv b{font-family:var(--mono);text-align:right;word-break:break-all}
.row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.col{display:flex;flex-direction:column;gap:8px}
.qty{display:flex;gap:8px;align-items:center;margin:8px 0}
.qty input{width:80px;text-align:center}
input{background:var(--bg2);border:2px solid var(--stone);border-radius:8px;color:var(--ink);font:600 15px var(--mono);padding:8px 10px;width:100%}
.form{display:grid;grid-template-columns:1fr;gap:8px;align-items:end}
.form label span{display:block;font-size:12px;color:var(--mute);margin-bottom:3px}
.note{font-size:14px;color:var(--amber2);min-height:1em}
.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:10px}
.nft{background:var(--card);border:2px solid var(--line);border-radius:var(--r);overflow:hidden;font-size:13px}
.nft img{display:block;width:100%;aspect-ratio:1;background:#0d0b0f}
.nft .meta{padding:8px}
.nft .meta b{font-family:var(--mono)}
.nft .tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.tag{font:600 11px var(--mono);padding:2px 6px;border-radius:4px;background:var(--stone);color:var(--ink)}
.tag.r1{background:#1f6b45}.tag.r2{background:#5b3fa8}.tag.r3{background:#a36a10;color:#fff3d6}
.nft .acts{display:flex;gap:6px;padding:0 8px 8px;flex-wrap:wrap}
.list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.drow{display:grid;grid-template-columns:64px 1fr;gap:10px;align-items:center;background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:8px}
.drow img{width:64px;height:64px;image-rendering:pixelated;border-radius:6px}
.drow .info{font-size:13px}
.drow .acts{grid-column:1/-1;display:flex;gap:6px;flex-wrap:wrap}
.lb,.feed{margin:0;padding-left:20px;font:13px/1.7 var(--mono)}
.feed{list-style:none;padding:0}
.ok{color:var(--emerald)}.bad{color:var(--red)}
.prose li{margin:4px 0}
.links{display:flex;flex-direction:column;gap:4px;font:13px var(--mono);word-break:break-all}
.sw{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:6px 0;border-bottom:1px dashed var(--line)}
/* dock */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);background:#100d13;border-top:2px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.dock a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 6px;color:var(--mute);text-decoration:none;font:600 11px var(--mono)}
.dock svg{width:20px;height:20px;fill:currentColor;shape-rendering:crispEdges}
.dock a.on{color:var(--amber)}
/* sheet + toast */
.sheet{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.6);display:flex;align-items:flex-end;justify-content:center}
.sheet-body{background:var(--card);border:2px solid var(--line);border-radius:14px 14px 0 0;padding:18px;width:100%;max-width:440px;display:flex;flex-direction:column;gap:10px}
.toast{position:fixed;left:50%;bottom:86px;transform:translateX(-50%);z-index:60;background:#0d0b0f;border:2px solid var(--amber);color:var(--ink);padding:10px 14px;border-radius:8px;max-width:92vw;font-size:14px}
@media (min-width:760px){
  body{padding-bottom:0}
  .dock{display:none}.tabs{display:flex}
  .top{height:58px;padding:0 20px}
  .hero-band{flex-direction:row;justify-content:space-between}
  .hb-text{max-width:520px}
  h1{font-size:34px}
  .stats{grid-template-columns:repeat(4,1fr)}
  .grid2{grid-template-columns:1fr 1fr}
  .cards{grid-template-columns:repeat(4,1fr)}
  .form{grid-template-columns:1fr auto}
  .drow{grid-template-columns:72px 1fr auto}.drow .acts{grid-column:auto}
  .toast{bottom:24px}
  .sheet{align-items:center}.sheet-body{border-radius:14px}
}
