/* ==========================================================================
   xmr.pub — "Cypherpunk Nexus" design system (self-hosted fonts, no CDN)
   Tokens follow DESIGN.md from the Stitch export.
   ========================================================================== */

@font-face{font-family:"Plus Jakarta Sans";src:url("fonts/plus-jakarta-sans-var.woff2") format("woff2-variations");font-weight:200 800;font-style:normal;font-display:swap}
@font-face{font-family:"Inter";src:url("fonts/inter-var.woff2") format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("fonts/jetbrains-mono-var.woff2") format("woff2-variations");font-weight:100 800;font-style:normal;font-display:swap}

:root{
  /* surfaces */
  --surface-deep:#0B0F17; --surface-panel:#111827; --surface-container-lowest:#0a0e16;
  --surface-container-low:#181c24; --surface-container:#1c2028; --surface-container-high:#262a33;
  --surface-container-highest:#31353e; --surface-glass:rgba(17,24,39,.72);
  --border-glass:rgba(255,255,255,.08); --border-glass-strong:rgba(255,255,255,.15);
  /* text */
  --text-primary:#F3F4F6; --text-secondary:#9CA3AF; --text-muted:#6B7280;
  /* accents */
  --primary:#FF6600; --primary-soft:#ffb596; --on-primary:#000000;
  --border-active-orange:rgba(255,102,0,.35); --neon-orange-glow:rgba(255,102,0,.18);
  --cyan:#00F0FF; --cyan-dim:rgba(0,240,255,.2);
  --emerald:#10B981; --amber:#f59e0b; --red:#ffb4ab;
  /* setPill() 用的别名：缺了它们 dot 的背景会变成未定义值（整颗 chip 呈现灰点） */
  --ok:#10B981; --warn:#f59e0b; --bad:#ffb4ab;
  /* scale */
  --space-xs:.25rem; --space-sm:.5rem; --space-md:1rem; --space-lg:1.5rem; --space-xl:2.5rem;
  --gutter:1.25rem; --gutter-mobile:.75rem; --margin:2rem; --margin-mobile:1rem;
  --radius-sm:.25rem; --radius:.5rem; --radius-md:.75rem; --radius-lg:1rem; --radius-xl:1.5rem;
  --canvas:1280px;
}

*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  min-height:100vh; color:var(--text-primary);
  font-family:Inter,"Plus Jakarta Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:14px; line-height:22px;
  background:
    radial-gradient(900px 520px at 18% -8%, rgba(255,102,0,.10), transparent 62%),
    radial-gradient(760px 460px at 88% 4%, rgba(0,240,255,.07), transparent 58%),
    var(--surface-deep);
  -webkit-font-smoothing:antialiased;
}
a{color:var(--cyan);text-decoration:none}
a:hover{text-decoration:underline}
code,.mono{font-family:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}
.canvas{max-width:var(--canvas);margin:0 auto;padding:var(--space-xl) var(--margin)}
@media (max-width:768px){.canvas{padding:var(--space-lg) var(--margin-mobile)}}

/* ---------- typography ---------- */
h1{font-family:"Plus Jakarta Sans",sans-serif;font-weight:800;font-size:40px;line-height:48px;letter-spacing:-.02em;margin:0}
.h-lg{font-family:"Plus Jakarta Sans",sans-serif;font-weight:600;font-size:28px;line-height:36px;letter-spacing:-.01em;margin:0}
.h-sm{font-family:"Plus Jakarta Sans",sans-serif;font-weight:700;font-size:16px;line-height:24px;margin:0}
@media (max-width:768px){h1{font-size:30px;line-height:38px;letter-spacing:-.015em}}
.body-lg{font-size:16px;line-height:26px;color:var(--text-secondary)}
.label{font-family:"JetBrains Mono",monospace;font-size:10px;font-weight:600;line-height:14px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.label-md{font-family:"JetBrains Mono",monospace;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.muted{color:var(--text-secondary)}
.dim{color:var(--text-muted)}
.num{font-family:"JetBrains Mono",monospace;font-variant-numeric:tabular-nums}

/* ---------- header ---------- */
.topbar{
  /* sticky 而非 fixed：顶栏自己占据布局空间，任何高度都不会遮住下方内容，滚动时仍然吸顶 */
  position:sticky;top:0;left:0;width:100%;z-index:50;
  background:var(--surface-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border-glass);box-shadow:0 1px 16px rgba(0,0,0,.5);
}
.topbar .inner{max-width:var(--canvas);margin:0 auto;padding:10px var(--margin);display:flex;align-items:center;gap:var(--space-md)}
.brand{display:flex;align-items:center;gap:10px;min-width:0}
.logo{
  width:36px;height:36px;border-radius:var(--radius);display:grid;place-items:center;
  font-family:"JetBrains Mono",monospace;font-size:18px;font-weight:700;color:#000;
  background:linear-gradient(140deg,var(--primary),#ff8a3d);box-shadow:0 0 18px var(--neon-orange-glow);
}
.brand .name{display:flex;align-items:center;gap:8px;font-family:"Plus Jakarta Sans",sans-serif;font-weight:800;font-size:16px;line-height:1.2}
.brand .ver{font-family:"JetBrains Mono",monospace;font-size:10px;letter-spacing:.06em;color:var(--primary-soft);border:1px solid var(--border-active-orange);background:rgba(255,102,0,.08);border-radius:var(--radius-sm);padding:1px 5px}
.brand .tag{font-size:11px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav{display:flex;align-items:center;gap:var(--space-xs);margin:0 auto;padding:4px;border-radius:var(--radius-md);background:var(--surface-container-lowest);box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.nav a{font-size:12.5px;color:var(--text-secondary);padding:7px 12px;border-radius:var(--radius);white-space:nowrap}
.nav a:hover{color:var(--text-primary);background:var(--surface-container);text-decoration:none}
.nav a.active{color:var(--text-primary);background:var(--surface-container-high)}
.topbar .right{display:flex;align-items:center;gap:var(--space-sm);margin-left:auto}
@media (max-width:1080px){.nav,.brand .tag{display:none}}

/* ---------- chips / badges ---------- */
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:9999px;border:1px solid var(--border-glass);background:var(--surface-container-low);font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.04em;color:var(--text-secondary);white-space:nowrap}
/* 可点击的标题 / 状态胶囊（指向 pool.xmr.pub） */
.panel-head h2 a.panel-link{color:inherit;text-decoration:none}
.panel-head h2 a.panel-link:hover{color:var(--primary)}
a.chip{text-decoration:none;cursor:pointer}
a.chip:hover{border-color:var(--border-glass-strong);background:var(--surface-container)}
.chip .dot{width:6px;height:6px;border-radius:50%;background:var(--emerald);flex:none}
.chip.ok{color:var(--emerald);background:rgba(16,185,129,.10);border-color:rgba(16,185,129,.30)}
.chip.warn{color:var(--amber);background:rgba(245,158,11,.10);border-color:rgba(245,158,11,.30)}
.chip.bad{color:var(--red);background:rgba(255,180,171,.10);border-color:rgba(255,180,171,.30)}
.chip.live .dot{animation:ripple 2.4s infinite}
@keyframes ripple{0%{box-shadow:0 0 0 0 rgba(16,185,129,.55)}70%{box-shadow:0 0 0 8px rgba(16,185,129,0)}100%{box-shadow:0 0 0 0 rgba(16,185,129,0)}}
.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:9999px;border:1px solid var(--border-glass);background:rgba(255,255,255,.02);font-size:12px;color:var(--text-secondary)}
.badge b{color:var(--text-primary);font-weight:600}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:6px;font-family:"Plus Jakarta Sans",sans-serif;font-weight:600;font-size:13px;padding:9px 16px;border-radius:var(--radius);cursor:pointer;border:1px solid transparent;text-align:center;justify-content:center}
.btn-primary{background:var(--primary);color:var(--on-primary);box-shadow:inset 0 1px 0 rgba(255,255,255,.25)}
.btn-primary:hover{box-shadow:0 0 20px rgba(255,102,0,.4);text-decoration:none}
.btn-ghost{background:rgba(255,255,255,.04);border-color:var(--border-glass-strong);color:var(--text-primary);font-weight:500;font-size:12.5px;padding:7px 12px}
.btn-ghost:hover{color:var(--cyan);border-color:var(--cyan-dim);text-decoration:none}
button.copy{font-family:"JetBrains Mono",monospace;font-size:11px;background:var(--surface-container-highest);color:var(--text-primary);border:1px solid var(--border-glass);border-radius:var(--radius-sm);padding:3px 8px;cursor:pointer}
button.copy:hover{border-color:var(--cyan-dim);color:var(--cyan)}

/* ---------- layout ---------- */
main{padding-bottom:var(--space-xl)}
.section{margin-top:var(--space-xl)}
.grid-12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--gutter)}
.col-12{grid-column:span 12}.col-8{grid-column:span 8}.col-4{grid-column:span 4}
.col-6{grid-column:span 6}.col-3{grid-column:span 3}
@media (max-width:980px){.col-8,.col-4,.col-6,.col-3{grid-column:span 12}}

/* ---------- hero ---------- */
.hero-head{display:flex;flex-wrap:wrap;gap:var(--space-lg);align-items:flex-end;justify-content:space-between}
.badges{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:var(--space-md)}
.ticker{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.04em;color:var(--text-muted);border:1px solid var(--border-glass);background:var(--surface-container-lowest);border-radius:9999px;padding:5px 12px}
.ticker b{color:var(--cyan)}
.lede{max-width:640px;margin:var(--space-md) 0 0}
.spec-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-md);background:var(--surface-container-lowest);box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
@media (max-width:900px){.spec-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}
.spec{padding:10px 12px;border-radius:var(--radius);background:var(--surface-panel);border:1px solid var(--border-glass)}
.spec .v{font-family:"JetBrains Mono",monospace;font-size:12.5px;color:var(--text-primary);margin-top:4px}
.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-sm);margin-top:var(--space-sm)}
@media (max-width:900px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stat{padding:14px;border-radius:var(--radius);background:var(--surface-container-lowest);border:1px solid var(--border-glass)}
.stat .v{font-family:"JetBrains Mono",monospace;font-size:19px;font-weight:500;margin-top:6px;color:var(--text-primary);font-variant-numeric:tabular-nums}
.stat .s{font-size:11px;color:var(--text-muted);margin-top:2px}

/* ---------- glass panels ---------- */
.panel{
  background:var(--surface-glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid var(--border-glass);border-radius:var(--radius-lg);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);padding:var(--space-lg);
  display:flex;flex-direction:column;gap:var(--space-md);
}
.panel.focus{border-color:var(--border-active-orange);box-shadow:0 0 32px var(--neon-orange-glow),inset 0 1px 0 rgba(255,255,255,.12)}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}
.panel-head h2{display:flex;align-items:center;gap:8px}
.row{display:flex;justify-content:space-between;gap:var(--space-md);padding:9px 0;border-bottom:1px dashed rgba(255,255,255,.07)}
.row:last-of-type{border-bottom:0}
.row .val{font-family:"JetBrains Mono",monospace;font-variant-numeric:tabular-nums;color:var(--text-primary);text-align:right}
.hint{font-size:12px;color:var(--text-muted);margin:0}
.divider{height:1px;background:var(--border-glass);margin:2px 0}
.feed{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:8px 10px;border-radius:var(--radius);background:var(--surface-container-lowest);border:1px solid var(--border-glass)}
.feed .v{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--cyan)}

/* ---------- terminal input / calculator ---------- */
.terminal{background:#0E131F;border:1px solid rgba(255,255,255,.10);border-radius:var(--radius);box-shadow:inset 0 2px 8px rgba(0,0,0,.5);padding:10px 12px;display:flex;align-items:center;gap:10px}
.terminal:focus-within{border-color:var(--cyan);box-shadow:0 0 12px var(--cyan-dim),inset 0 2px 8px rgba(0,0,0,.5)}
.terminal input{flex:1;background:transparent;border:0;outline:none;color:var(--text-primary);font-family:"JetBrains Mono",monospace;font-size:15px;font-weight:500;text-align:right;min-width:0}
.terminal .unit{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--text-muted)}
.terminal .out{font-family:"JetBrains Mono",monospace;font-size:15px;font-weight:500;color:var(--cyan);min-width:96px;text-align:right}

/* ---------- link list ---------- */
.list{display:flex;flex-direction:column;gap:8px}
.list a{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px;border-radius:var(--radius);background:var(--surface-container-lowest);border:1px solid var(--border-glass);color:var(--text-primary);font-size:13.5px}
.list a:hover{border-color:var(--border-active-orange);background:var(--surface-container);text-decoration:none}
.tag{font-family:"JetBrains Mono",monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:9999px;border:1px solid var(--border-glass);color:var(--text-secondary)}
.tag.rec{background:var(--primary);color:var(--on-primary);border-color:transparent;font-weight:700}

/* ---------- stepper ---------- */
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gutter)}
@media (max-width:900px){.steps{grid-template-columns:1fr}}
.step{position:relative;padding:var(--space-lg);border-radius:var(--radius-lg);background:var(--surface-container-low);border:1px solid var(--border-glass);box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}
.step .n{font-family:"JetBrains Mono",monospace;font-size:26px;font-weight:700;color:var(--primary);opacity:.9}
.step .tl{margin-top:10px;font-family:"JetBrains Mono",monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.step p{margin:8px 0 0;color:var(--text-secondary);font-size:13px}
.step::after{content:"";position:absolute;left:var(--space-lg);right:var(--space-lg);bottom:0;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--primary),transparent)}

/* ---------- notice / footer ---------- */
.notice{padding:var(--space-lg);border-radius:var(--radius-lg);background:var(--surface-container-lowest);border:1px solid var(--border-glass)}
.notice p{margin:8px 0 0;font-size:12.5px;color:var(--text-secondary)}
footer{background:var(--surface-container-lowest);border-top:1px solid var(--border-glass);box-shadow:0 -1px 16px rgba(0,0,0,.6);padding:var(--space-lg) 0 var(--space-xl)}
footer .inner{max-width:var(--canvas);margin:0 auto;padding:0 var(--margin);display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:center;justify-content:space-between}
footer nav{display:flex;flex-wrap:wrap;gap:var(--space-md);font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.04em}
footer nav a{color:var(--text-secondary)}
footer .fine{font-family:"JetBrains Mono",monospace;font-size:10px;letter-spacing:.04em;color:var(--text-muted);margin:0}
.icon{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.icon-sm{width:12px;height:12px}

/* ==========================================================================
   pool.html — worker list table
   ========================================================================== */
.wtable-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.wtable{width:100%;border-collapse:collapse;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:12px;line-height:18px}
.wtable th{
  text-align:left;font-weight:600;font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);padding:8px 12px;border-bottom:1px solid var(--border-glass-strong);white-space:nowrap;
}
.wtable td{padding:10px 12px;border-bottom:1px solid var(--border-glass);color:var(--text-secondary);white-space:nowrap;vertical-align:middle}
.wtable tbody tr:last-child td{border-bottom:0}
.wtable tbody tr:hover td{background:rgba(255,255,255,.02)}
.wtable .wt-name{color:var(--text-primary);font-weight:600}
/* 红线：worker 列表禁止输出任何形式的矿机地址（完整/掩码/哈希都不行）。
   如需地域，只允许粗粒度标签（如 "US-West" / "Anonymous"）。详见 xmr-p2pool-lxc-plan §18。 */
.wtable .wt-hr{color:var(--emerald)}
.wtable td.dim{color:var(--text-muted);white-space:normal}

/* ==========================================================================
   index.html — 跨链聚合兑换挂件（SideShift.ai）
   挂件在 iframe 里自绘，这里只负责给它一个稳定的画框。
   高度按挂件自身布局留足，避免出现内部滚动条；窄屏下加高。
   ========================================================================== */
.ss-frame{
  margin-top:var(--space-md);
  border:1px solid var(--border-glass);
  border-radius:var(--radius);
  background:var(--surface-container-lowest);
  overflow:hidden;
}
.ss-frame iframe{
  display:block;width:100%;height:660px;border:0;background:transparent;
}
@media (max-width:980px){.ss-frame iframe{height:700px}}
@media (max-width:560px){.ss-frame iframe{height:760px}}
