/* webfonts/fonts.css */
/* latin-ext */
@font-face {
  font-family: 'Archivo Black';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/ArchivoBlack-400-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo Black';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/ArchivoBlack-400-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Bangers';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/Bangers-400-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Bangers';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/Bangers-400-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/Inter-400-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/Inter-400-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/webfonts/Inter-600-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/webfonts/Inter-600-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/webfonts/Inter-700-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/webfonts/Inter-700-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/webfonts/Inter-800-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/webfonts/Inter-800-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(/webfonts/Inter-900-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(/webfonts/Inter-900-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Luckiest Guy';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/LuckiestGuy-400-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Luckiest Guy';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/LuckiestGuy-400-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/webfonts/Nunito-700-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/webfonts/Nunito-700-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/webfonts/Nunito-800-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/webfonts/Nunito-800-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(/webfonts/Nunito-900-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(/webfonts/Nunito-900-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
  font-family: 'Orbitron';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/webfonts/Orbitron-600-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
  font-family: 'Orbitron';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/webfonts/Orbitron-700-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
  font-family: 'Orbitron';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/webfonts/Orbitron-800-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
  font-family: 'Orbitron';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url(/webfonts/Orbitron-900-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/SpaceMono-400-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/SpaceMono-400-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/webfonts/SpaceMono-700-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Mono';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/webfonts/SpaceMono-700-lat.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* pixel display — Press Start 2P (self-hosted; CSP font-src 'self') */
@font-face {
  font-family: 'Press Start 2P';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/webfonts/PressStart2P-400-lat.woff2) format('woff2');
}

/* nav.css */
/* BLOCK_LAB — one header for every app page: logo left, page links + Connect right. Self-contained. */
.topnav{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:12px;height:60px;padding:0 18px;
  background:rgba(0,0,0,.82);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid #22252d}
.tn-logo{display:flex;align-items:center;gap:9px;font-family:'Press Start 2P','Space Mono',monospace;font-size:12px;color:#f5f4f0;text-decoration:none;min-width:0;white-space:nowrap}
.tn-logo img{width:24px;height:24px;border-radius:5px}
.tn-logo b{color:#CBF806;font-weight:400}
.tn-logo span{color:#9aa0aa;font-family:'Space Mono',monospace;font-size:12px;margin-left:4px}
.tn-right{display:flex;align-items:center;gap:10px}
.tn-link{font-family:'Space Mono',monospace;font-weight:700;font-size:12px;color:#c7ccd6;text-decoration:none;border:1px solid #22252d;border-radius:999px;padding:9px 14px;white-space:nowrap;transition:color .15s,border-color .15s}
.tn-link:hover{color:#CBF806;border-color:rgba(203,248,6,.5)}
.tn-btn{font-family:'Press Start 2P','Space Mono',monospace;font-size:9px;padding:11px 14px;border-radius:999px;background:#CBF806;color:#0a0b0e;border:2px solid #CBF806;cursor:pointer;white-space:nowrap;line-height:1}
.tn-btn:hover{background:#d9ff2e}
.tn-btn.tn-conn{background:#0f1116;color:#CBF806}.tn-btn.tn-conn:hover{background:#2a2f3f;color:#ff6a1a}
.tn-btn.tn-conn{background:#0f1116;color:#CBF806}.tn-btn.tn-conn:hover{background:#2a2f3f;color:#ff6a1a}
@media(max-width:420px){.tn-logo span{display:none}.tn-link{padding:8px 11px;font-size:11px}.tn-btn{font-size:8px;padding:10px 12px}}
#bl-toasts{position:fixed;right:16px;bottom:16px;z-index:9999;display:flex;flex-direction:column;gap:8px;max-width:min(92vw,420px)}
.bl-toast{font-family:'Space Mono',monospace;font-size:12px;line-height:1.5;padding:12px 14px;border-radius:10px;border:2px solid #CBF806;background:#141a0c;color:#f4f6f0;box-shadow:0 10px 30px rgba(0,0,0,.5);animation:blt .25s ease-out}
.bl-toast.bad,.bl-toast.warn{border-color:#ff6a1a;background:#2a1206}.bl-toast.out{opacity:0;transform:translateY(6px);transition:all .4s}
@keyframes blt{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* persistent nav: current page + wallet menu */
.tn-right{position:relative;overflow:visible}
.tn-link.on{color:#CBF806;border-color:rgba(203,248,6,.55);background:rgba(203,248,6,.06)}
.tn-menu{display:none;position:absolute;right:0;top:calc(100% + 8px);min-width:220px;background:#0f1116;border:1px solid #2a2f3f;border-radius:12px;padding:8px;box-shadow:0 14px 34px rgba(0,0,0,.6);z-index:60}
.tn-menu.open{display:block}
.tn-menu-addr{font-family:'Space Mono',monospace;font-size:11px;color:#9aa0aa;padding:6px 8px 8px;word-break:break-all;border-bottom:1px solid #22252d;margin-bottom:6px}
.tn-menu-lab{font-family:'Space Mono',monospace;font-size:11px;color:#9aa0aa;padding:2px 8px 8px;border-bottom:1px solid #22252d;margin-bottom:6px}.tn-menu-lab b{color:#CBF806}.tn-menu-lab:empty{display:none}
.tn-menu-item{display:block;width:100%;text-align:left;font-family:'Space Mono',monospace;font-weight:700;font-size:12px;color:#f5f4f0;background:transparent;border:1px solid transparent;border-radius:8px;padding:9px 10px;cursor:pointer}
.tn-menu-item:hover{background:#2a1206;color:#ff6a1a;border-color:rgba(255,106,26,.5)}
@media(max-width:560px){.tn-right{gap:6px}.tn-link{padding:8px 9px;font-size:11px}.tn-logo span{display:none}}

/* ---- mobile: hamburger menu (CSS-only, checkbox toggle) ---- */
.tn-tog{display:none}
.tn-actions{display:flex;align-items:center;gap:8px;position:relative;order:3}
.tn-right{order:2;margin-left:auto}
.tn-burger{display:none;width:42px;height:42px;border:1px solid #22252d;border-radius:10px;background:#0f1116;cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:5px;flex:none}
.tn-burger span{display:block;width:18px;height:2px;background:#f5f4f0;border-radius:2px;transition:transform .2s,opacity .2s}
.tn-tog:checked ~ .tn-actions .tn-burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.tn-tog:checked ~ .tn-actions .tn-burger span:nth-child(2){opacity:0}
.tn-tog:checked ~ .tn-actions .tn-burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@media(max-width:760px){
  .topnav{flex-wrap:wrap;height:auto;min-height:60px;padding:9px 12px;gap:8px}
  .tn-actions{margin-left:auto;order:2}
  .tn-burger{display:flex}
  .tn-right{order:3;display:none;width:100%;flex-direction:column;align-items:stretch;gap:6px;padding:6px 0 4px;margin-left:0}
  .tn-tog:checked ~ .tn-right{display:flex}
  .tn-link{display:block;text-align:center;padding:11px 14px;font-size:12px}
  .tn-btn{font-size:9px;padding:11px 12px}
  .tn-menu{right:0;top:calc(100% + 8px)}
}

.bl-status{font-family:'Space Mono',monospace;font-size:12px;line-height:1.5;padding:8px 18px;border-bottom:1px solid #242838;color:#c9cfda;background:#12141a}.bl-status b{letter-spacing:.1em}.bl-status.demo{background:#2a1206;border-color:#5a2a10;color:#ffb98a}.bl-status.demo b{color:#ff6a1a}.bl-status.live{background:#0f1a13;border-color:#1f4a30;color:#9fd8b8}.bl-status.live b{color:#2fe38a}
[hidden]{display:none!important}
.bl-status .bl-sep{color:#3a4a3f;margin:0 6px}.bl-w.on{color:#2fe38a;font-weight:700}.bl-w.off{color:#ffb98a}

/* WALLET PICKER (2026-10-02): several injected wallets -> the player chooses */
.bl-pick{position:fixed;inset:0;z-index:95;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;padding:16px}
.bl-pick-box{background:#0c0e12;border:2px solid #CBF806;border-radius:14px;padding:18px;width:min(380px,100%);box-shadow:0 0 40px rgba(203,248,6,.25)}
.bl-pick-h{font-family:'Press Start 2P','Space Mono',monospace;font-size:11px;color:#f4f6f0;margin-bottom:8px}
.bl-pick-s{font-family:'Space Mono',monospace;font-size:11px;color:#9aa3b5;line-height:1.5;margin-bottom:12px}
.bl-pick-btn{display:flex;align-items:center;gap:12px;width:100%;margin-top:8px;padding:10px 12px;border-radius:10px;border:1px solid #2a2f3a;background:#13161c;color:#f4f6f0;font-family:'Space Mono',monospace;font-size:13px;cursor:pointer;text-align:left}
.bl-pick-btn:hover{border-color:#CBF806}.bl-pick-btn img{width:28px;height:28px;border-radius:7px}
.bl-pick-cancel{margin-top:12px;background:transparent;border:0;color:#9aa3b5;font-family:'Space Mono',monospace;font-size:11px;cursor:pointer;text-decoration:underline}

/* pow.css */
body{background:#0b0c10;color:#f4f6f0;margin:0}
/* BLOCK_LAB PoW lab page (test only) */
.pow-wrap{box-sizing:border-box;max-width:1100px;margin:0 auto;padding:18px 18px 60px}
.pow-tag{display:inline-block;font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#ff6a1a;border:1px solid #ff6a1a;border-radius:999px;padding:6px 12px;margin:14px 0 6px}
.pow-h1{font-family:'Press Start 2P',monospace;font-size:22px;line-height:1.5;color:#f4f6f0;margin:6px 0 10px}
.pow-h1 b{color:#CBF806;font-weight:400}
.pow-lead{font-family:'Space Mono',monospace;font-size:13px;line-height:1.7;color:#9aa3b5;max-width:760px}
.pow-lead b{color:#f4f6f0}
.pow-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:16px 0}
.pow-st{background:#12141a;border:2px solid #242838;border-radius:10px;padding:12px 14px}
.pow-st .k{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#6b7386}
.pow-st .v{font-family:'Press Start 2P',monospace;font-size:13px;line-height:1.6;color:#CBF806;margin-top:6px;word-break:normal;overflow-wrap:anywhere}
.pow-st .v.o{color:#ff6a1a}.pow-st .v.w{color:#f4f6f0}.pow-st .s{font-family:'Space Mono',monospace;font-size:11px;color:#9aa3b5;margin-top:4px}
.pow-card{background:#12141a;border:2px solid #242838;border-radius:12px;padding:16px;margin:14px 0}
.pow-card.g{border-color:#CBF806;box-shadow:0 0 22px rgba(203,248,6,.18)}
.pow-card .h{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#CBF806;margin-bottom:10px}
.pow-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.pow-btn{font-family:'Press Start 2P',monospace;font-size:10px;padding:14px 18px;border-radius:10px;border:2px solid #CBF806;background:#CBF806;color:#0b0c10;cursor:pointer}
.pow-btn.o{background:#ff6a1a;border-color:#ff6a1a;color:#0b0c10}.pow-btn.ghost{background:transparent;color:#f4f6f0;border-color:#3a3f48}
.pow-btn:disabled{opacity:.4;cursor:not-allowed}.pow-btn.sm{font-size:9px;padding:9px 12px}.pow-btn.xs{font-size:8px;padding:5px 8px;border-radius:7px;vertical-align:middle}
.pow-in.sm{font-size:12px;padding:8px 10px;width:130px}.pow-blk .sendlab{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.pow-in{font-family:'Space Mono',monospace;font-size:13px;padding:11px 12px;border-radius:8px;border:2px solid #242838;background:#0b0c10;color:#f4f6f0;min-width:90px}
.pow-msg{font-family:'Space Mono',monospace;font-size:12px;line-height:1.6;margin-top:10px;color:#9aa3b5}
.pow-msg.ok{color:#2fe38a}.pow-msg.bad{color:#ff5470}.pow-msg.info{color:#4fc3ff}.pow-msg a{color:#CBF806}
.pow-log{font-family:'Space Mono',monospace;font-size:11px;line-height:1.7;color:#9aa3b5;max-height:200px;overflow:auto;margin-top:10px;border-top:1px dashed #242838;padding-top:8px}
.pow-log b{color:#f4f6f0}.pow-log .ok{color:#2fe38a}.pow-log .bad{color:#ff5470}
.pow-hash{font-family:'Space Mono',monospace;font-size:11px;color:#6b7386;word-break:break-all}
.pow-hash .z{color:#CBF806;font-weight:700}
.pow-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;margin-top:10px}
.pow-blk{display:grid;grid-template-columns:96px 1fr;gap:14px;align-items:center;background:#0f1116;border:2px solid #242838;border-radius:10px;padding:10px}
.pow-blk img{width:96px;height:96px;border-radius:8px;image-rendering:pixelated}
.pow-blk b{font-family:'Press Start 2P',monospace;font-size:10px;color:#f4f6f0;font-weight:400}
.pow-blk .kc{font-family:'Space Mono',monospace;font-size:11px;color:#CBF806}
.pow-blk .m{font-family:'Space Mono',monospace;font-size:11px;color:#9aa3b5;line-height:1.6}.pow-blk .v{color:#f4f6f0;font-weight:700}
.pow-blk .acts{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap}
.pow-blk .share-x{background:transparent;text-decoration:none;border-color:#f4f6f0;color:#f4f6f0}
.pow-st .v.pulse{animation:powpulse .6s ease-out}@keyframes powpulse{0%{transform:scale(1.12);color:#fff;text-shadow:0 0 16px rgba(203,248,6,.9)}100%{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.pow-st .v.pulse{animation:none}}
.pow-bar{height:8px;border-radius:4px;background:#1a1d25;overflow:hidden;margin-top:6px}.pow-bar i{display:block;height:100%;background:#CBF806;width:0}
.pow-rules{font-family:'Space Mono',monospace;font-size:12px;line-height:1.7;color:#9aa3b5}
.pow-rules b{color:#f4f6f0}.pow-rules td{padding:4px 8px 4px 0;vertical-align:top;border-bottom:1px solid #1a1d25}
.pow-warn{font-family:'Space Mono',monospace;font-size:11px;color:#ffb454;border:1px dashed #ffb454;border-radius:8px;padding:8px 12px;margin:10px 0}
@media(max-width:520px){.pow-h1{font-size:16px}.pow-blk{grid-template-columns:72px 1fr}.pow-blk img{width:72px;height:72px}}
.pow-toggle{display:inline-flex;border:2px solid #242838;border-radius:999px;overflow:hidden;vertical-align:middle}
.pow-toggle button{font-family:'Press Start 2P',monospace;font-size:9px;padding:9px 14px;border:0;background:#12141a;color:#6b7386;cursor:pointer}
.pow-toggle button.on{background:#CBF806;color:#0b0c10}
.pow-toggle button:disabled{opacity:.35;cursor:not-allowed}

.pow-txlink{color:#CBF806;text-decoration:underline;word-break:break-all}
.pow-txlink:hover{color:#fff}

/* cores slider */
.pow-range{-webkit-appearance:none;appearance:none;height:6px;border-radius:4px;background:#242838;outline:none;width:130px;vertical-align:middle;margin-left:8px}
.pow-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:4px;background:#CBF806;cursor:pointer;border:none}
.pow-range::-moz-range-thumb{width:16px;height:16px;border-radius:4px;background:#CBF806;cursor:pointer;border:none}
.pow-dim{color:#6b7386}

/* keep the cores control a constant width so dragging the slider never shifts the row */
#m-workers-l{flex:0 0 auto}
#m-workers-n{display:inline-block;width:2ch;text-align:right}
#m-cores-max{display:inline-block;width:3.2em}

/* --- 08 Crumble: the sealed block cracks and flakes on the LEFT while the miner hunts the hash --- */
.pow-mine2{display:grid;grid-template-columns:1fr;gap:14px;align-items:start;margin-top:10px}
.pow-mine2.on{grid-template-columns:1fr}
.pow-mine2-main{min-width:0}
.pow-crumble{display:none;--cycle:7s;position:relative;flex-direction:column;align-items:center;gap:8px;padding:12px 8px;background:radial-gradient(ellipse at 50% 55%,#171a21 0%,#0b0c10 72%);border:2px solid #242838;border-radius:12px}
.pow-mine2.on .pow-crumble{display:flex}
.pow-crumble .block{position:relative;width:148px;height:148px}
.pow-crumble .block img{position:absolute;inset:0;width:144px;height:144px;image-rendering:pixelated}
.pow-crumble .seal{animation:pcSealOut var(--cycle) steps(1,end) infinite}
.pow-crumble .real{opacity:0;animation:pcRealIn var(--cycle) steps(1,end) infinite}
.pow-crumble.mining .seal{animation:none;opacity:1}
.pow-crumble.mining .real{animation:none;opacity:0}
.pow-crumble .cracks{position:absolute;inset:0;width:148px;height:148px;overflow:hidden}
.pow-crumble .cracks path{fill:none;stroke:#e8ecf2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:100;filter:drop-shadow(0 0 1.5px rgba(244,246,240,.55));animation:pcDraw var(--cycle) ease-out infinite}
.pow-crumble .cracks .p1{animation-delay:0s}.pow-crumble .cracks .p2{animation-delay:.5s}.pow-crumble .cracks .p3{animation-delay:1s}.pow-crumble .cracks .p4{animation-delay:1.5s}.pow-crumble .cracks .p5{animation-delay:2s}.pow-crumble .cracks .p6{animation-delay:2.5s}
@keyframes pcDraw{0%{stroke-dashoffset:100;opacity:.9}40%{opacity:1}55%,74%{stroke-dashoffset:0;opacity:1}74.01%,100%{stroke-dashoffset:0;opacity:0}}
.pow-crumble .flakes{position:absolute;top:50%;left:50%;width:0;height:0}
.pow-crumble .flakes i{position:absolute;opacity:0;width:9px;height:9px;background:#2b313c;border:1px solid #454d59;animation:pcFall var(--cycle) ease-in infinite}
.pow-crumble .flakes i:nth-child(1){--dx:-34px;--dy:70px;animation-delay:1.6s}.pow-crumble .flakes i:nth-child(2){--dx:28px;--dy:76px;animation-delay:2.4s}.pow-crumble .flakes i:nth-child(3){--dx:-10px;--dy:82px;animation-delay:3.1s}.pow-crumble .flakes i:nth-child(4){--dx:48px;--dy:66px;animation-delay:3.9s}.pow-crumble .flakes i:nth-child(5){--dx:-52px;--dy:64px;animation-delay:4.6s}
@keyframes pcFall{0%{opacity:0;transform:translate(0,0) rotate(0)}6%{opacity:1}40%,100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(160deg)}}
@keyframes pcSealOut{0%,74%{opacity:1}74.01%,93%{opacity:0}93.01%,100%{opacity:1}}
@keyframes pcRealIn{0%,74%{opacity:0}74.01%,93%{opacity:1}93.01%,100%{opacity:0}}
.pow-crumble.found .seal{animation:none;opacity:0}
.pow-crumble.found .real{animation:none;opacity:1}
.pow-crumble.found .cracks path{animation:none;stroke-dashoffset:0;opacity:0}
.pow-crumble.found .flakes i{animation:none;opacity:0}
.pow-crumble-cap{font-family:'Space Mono',monospace;font-size:11px;color:#9aa3b5;text-align:center;line-height:1.4;min-height:14px}
@media(max-width:640px){.pow-mine2.on{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.pow-crumble *{animation:none!important}.pow-crumble .cracks path{stroke-dashoffset:0;opacity:.9}}

/* mine-page stat cards: title + value only; the description is a tooltip on hover / tap (ⓘ) */
.pow-grid.tips .pow-st{position:relative;cursor:default}
.pow-grid.tips .pow-st .k::after{content:"  ⓘ";color:#6b7386;font-size:10px;letter-spacing:0;text-transform:none}
.pow-grid.tips .pow-st .s{display:none;position:absolute;left:6px;right:6px;top:calc(100% - 4px);z-index:30;background:#0e1015;border:1px solid #CBF806;border-radius:8px;padding:8px 10px;color:#e9ecf2;font-size:11px;line-height:1.5;box-shadow:0 12px 28px rgba(0,0,0,.65);margin-top:0}
.pow-grid.tips .pow-st:hover .s,.pow-grid.tips .pow-st.open .s{display:block}
.pow-grid.tips .pow-st .s:empty{display:none!important}

/* wide single card row (cost to inscribe) */
.pow-grid-wide{grid-template-columns:1fr;margin-top:-6px}
.pow-st.wide{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}
.pow-st.wide .k{min-width:150px}.pow-st.wide .v{margin-top:0}
.pow-st .v br{line-height:1.7}

/* --- 10 Shatter Release: cracks draw in and STAY while mining (limbs keep grafting on, widths grow); on a find the seal bursts into shards --- */
.pow-crumble.mining .cracks path{animation:pcDrawIn 2.6s ease-out forwards}
@keyframes pcDrawIn{0%{stroke-dashoffset:100;opacity:.85}100%{stroke-dashoffset:0;opacity:1}}
.pow-crumble .shards{position:absolute;top:50%;left:50%;width:0;height:0;pointer-events:none;z-index:3}
.pow-crumble .shards i{position:absolute;opacity:0;width:19px;height:19px;background:#3b4250;border:2px solid #5b636f;border-radius:2px;margin:-10px 0 0 -10px}
.pow-crumble .shards i:nth-child(1){--dx:-92px;--dy:-64px}.pow-crumble .shards i:nth-child(2){--dx:86px;--dy:-72px}.pow-crumble .shards i:nth-child(3){--dx:-72px;--dy:58px}.pow-crumble .shards i:nth-child(4){--dx:80px;--dy:50px}
.pow-crumble .shards i:nth-child(5){--dx:-104px;--dy:8px}.pow-crumble .shards i:nth-child(6){--dx:100px;--dy:-12px}.pow-crumble .shards i:nth-child(7){--dx:-26px;--dy:-96px}.pow-crumble .shards i:nth-child(8){--dx:34px;--dy:88px}
.pow-crumble.found .shards i{animation:pcBurst .9s ease-out forwards}
@keyframes pcBurst{0%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(240deg)}}
.pow-crumble.found .seal{animation:pcSealBurst .3s steps(1,end) forwards}
@keyframes pcSealBurst{0%{opacity:1}100%{opacity:0}}
.pow-crumble.found .real{animation:pcRealPop .6s cubic-bezier(.2,1.4,.4,1) forwards;opacity:0}
@keyframes pcRealPop{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.08)}100%{opacity:1;transform:scale(1)}}
.pow-crumble.found .cracks path{animation:pcCrackOut .3s ease-in forwards;stroke-dashoffset:0}
@keyframes pcCrackOut{to{opacity:0}}
@media(prefers-reduced-motion:reduce){.pow-crumble .shards i{display:none}.pow-crumble.found .real{animation:none;opacity:1}}

/* the hunt never looks frozen: block tremor + crack glow pulse run for as long as .mining is on; shed cracks fade out */
@keyframes pcTremor{0%{transform:translate(0,0)}25%{transform:translate(.6px,-.4px)}50%{transform:translate(-.5px,.5px)}75%{transform:translate(.4px,.6px)}100%{transform:translate(0,0)}}
@keyframes pcGlow{0%,100%{opacity:.82;filter:drop-shadow(0 0 0 rgba(232,236,242,0))}50%{opacity:1;filter:drop-shadow(0 0 3px rgba(232,236,242,.55))}}
@media(prefers-reduced-motion:reduce){.pow-crumble.mining .block,.pow-crumble.mining .cracks{animation:none}}

/* while hunting, the square shows the nonce being tried right now (full number, fitted); cracks keep growing over it */
.pow-crumble .nonce{position:absolute;inset:0;display:none;padding:10px 8px;box-sizing:border-box;font-family:'Press Start 2P',monospace;font-size:10px;line-height:1.7;letter-spacing:0;color:#ff6a1a;text-shadow:0 0 8px #ff6a1a66;word-break:break-all;overflow:hidden;background:#0b0d11;border:1px solid rgba(203,248,6,.4);border-radius:4px;text-align:left;z-index:1}
.pow-crumble.mining .nonce{display:block}
.pow-crumble.mining .seal{opacity:0}
.pow-crumble .cracks{z-index:2}
.pow-crumble.found .nonce{display:none}

/* the nonce being tried, under the progress bar (same style as the BEST SO FAR value) */
.pow-nonce{margin-top:10px;font-family:'Press Start 2P',monospace;font-size:10px;line-height:1.8;color:#ff6a1a;text-shadow:0 0 8px rgba(255,106,26,.4);word-break:break-all;min-height:18px}

/* 2026-09-29 findings: value + unit on one line (12), labelled fee split (13), target hint (17) */
.pow-st .v .nw{white-space:nowrap}
@media(max-width:480px){.pow-st .v{font-size:11px}}
.pow-st .v.fs{display:flex;flex-direction:column;gap:4px;font-family:'Space Mono',monospace;font-size:12px;line-height:1.35;color:#e9ecf2;word-break:normal}
.pow-st .v.fs .fs-r b{font-family:'Press Start 2P',monospace;font-size:11px;color:#CBF806;margin-right:6px}
.pow-st .hint{font-family:'Space Mono',monospace;font-size:10px;color:#8a92a3;margin-top:2px}
.pow-st .v.fs .fs-r{display:grid;grid-template-columns:3.6em 1fr;gap:6px;align-items:baseline}

/* 08 (2 Oct): two cards per row on phones, value + unit never split */
@media(max-width:480px){.pow-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pow-st .v{font-size:10px}}

/* 2026-10-03 (user report): honest miner state + mining history */
.pow-state{display:inline-block;font-family:'Space Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.08em;padding:2px 7px;border-radius:999px;background:#2a2f3a;color:#c9ced8}
.pow-state.running{background:rgba(203,248,6,.16);color:#CBF806}
.pow-state.throttled{background:rgba(255,170,40,.18);color:#ffb84d}
.pow-state.claim_pending{background:#ff6a1a;color:#0b0c10;animation:powpulse 1s ease-in-out infinite}
@keyframes powpulse{50%{opacity:.55}}
.pow-hrow{font-family:'Space Mono',monospace;font-size:12px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.06);color:#c9ced8}
.pow-hrow.claimed b{color:#CBF806}.pow-hrow.beaten b,.pow-hrow.expired b,.pow-hrow.rejected b{color:#ff7a7a}.pow-hrow.found b,.pow-hrow.open b{color:#ffb84d}
@media (prefers-reduced-motion:reduce){.pow-state.claim_pending{animation:none}}

/* 2026-10-04: epoch progress card (moved here from /stats) */
.pow-prog{height:14px;border-radius:4px;background:#171a21;overflow:hidden;margin-top:8px}.pow-prog i{display:block;height:100%;background:#CBF806;width:0;transition:width .4s}
.pow-prog-t{font-family:'Space Mono',monospace;font-size:11px;color:#9aa3b5;margin-top:6px}

/* stats.css */
body{background:#0b0c10;color:#f4f6f0;margin:0}
.stx-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:820px){.stx-two{grid-template-columns:1fr}}
.stx-tbl{width:100%;border-collapse:collapse;font-family:'Space Mono',monospace;font-size:12px;margin-top:8px}
.stx-tbl th{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#6b7386;text-align:left;padding:5px 8px;border-bottom:1px solid #242838;font-weight:400}
.stx-tbl td{padding:6px 8px;border-bottom:1px solid #171a21;color:#c9cfda}
.stx-tbl td b{color:#f4f6f0;font-family:'Press Start 2P',monospace;font-size:9px;font-weight:400}
.stx-tbl tr:hover td{background:#12141a}
.stx-kc{font-family:'Press Start 2P',monospace;font-size:9px}
.stx-win{color:#CBF806}.stx-lose{color:#ff6a1a}.stx-dim{color:#6b7386}
.stx-bars{display:grid;gap:5px;margin-top:8px}.stx-empty{padding:6px 8px;color:#9aa3b5;font-family:'Space Mono',monospace;font-size:12px}
.stx-bar{display:grid;grid-template-columns:70px 1fr 46px;align-items:center;gap:8px;font-family:'Space Mono',monospace;font-size:11px;color:#9aa3b5}
.stx-bar .t{height:12px;border-radius:3px;background:#171a21;overflow:hidden}.stx-bar .t i{display:block;height:100%;background:#CBF806}
.stx-bar .n{text-align:right;color:#c9cfda}
.stx-split{display:flex;height:22px;border-radius:6px;overflow:hidden;margin-top:8px;font-family:'Space Mono',monospace;font-size:10px}
.stx-split div{display:flex;align-items:center;justify-content:center;color:#0b0c10;white-space:nowrap}
.stx-updated{font-family:'Space Mono',monospace;font-size:11px;color:#6b7386;margin-top:6px}
.stx-pill{display:inline-block;font-family:'Space Mono',monospace;font-size:10px;padding:2px 8px;border-radius:999px;background:#12261a;color:#2fe38a;margin-left:6px}
.stx-split .s-rent{width:60%;background:#CBF806}
.stx-split .s-buy{width:40%;background:#ff6a1a}
.stx-split .s-lp{background:#4fc3ff;color:#0c0a12}
.stx-lnk{color:#4fc3ff;font-size:11px}
.stx-mut{color:#c9cfda}
.stx-tbl td .stx-kc{color:#CBF806}
/* tabs */
.stx-tabs{display:flex;gap:6px;margin:16px 0 6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;position:sticky;top:0;z-index:5;background:#0b0c10;padding:6px 0}
.stx-tabs::-webkit-scrollbar{display:none}
.stx-tabs button{flex:0 0 auto;font-family:'Space Mono',monospace;font-size:12px;letter-spacing:.04em;color:#9aa3b5;background:#12141a;border:1px solid #242838;border-radius:8px;padding:8px 16px;cursor:pointer;transition:.12s;white-space:nowrap}
.stx-tabs button:hover{color:#f4f6f0;border-color:#39405a}
.stx-tabs button.on{color:#0b0c10;background:#CBF806;border-color:#CBF806;font-weight:700}
.stx-panel{margin-top:4px}
.stx-src{font-family:'Space Mono',monospace;font-size:11px;color:#6b7386;margin:4px 0 14px}
.stx-hl{display:flex;flex-direction:column;justify-content:center}
.stx-hero{padding:6px 0 2px}
.stx-hero-v{font-family:'Press Start 2P',monospace;font-size:20px;color:#CBF806;line-height:1.35;word-break:break-word}
.stx-hero-v.o{color:#ff6a1a}
.stx-hero-s{font-family:'Space Mono',monospace;font-size:11px;color:#9aa3b5;margin-top:10px}
@media(max-width:560px){
  .stx-tbl{font-size:11px}
  .stx-tbl th,.stx-tbl td{padding:5px 6px;white-space:nowrap}
  .stx-tbl td b{font-size:8px}
  .pow-card{overflow-x:auto}
  .stx-bar{grid-template-columns:58px 1fr 34px}
  .stx-tabs button{font-size:11px;padding:7px 13px}
  .stx-hero-v{font-size:16px}
}

/* --- mining parameters (CSP: no inline styles, everything lives here) --- */
.stx-par td:first-child{color:#9aa3b5;width:56%}
.stx-par td:last-child{text-align:right;font-variant-numeric:tabular-nums}
.stx-par sup{font-size:.7em}
.stx-note{margin-top:10px;padding-top:10px;border-top:1px solid #242838;
  font-size:11.5px;line-height:1.6;color:#9aa3b5}
.stx-note b{color:#e9ecf2}
.stx-warn{color:#ff6a1a;font-size:10.5px;letter-spacing:.04em}
/* blocknomics / tokenomics (2026-09-28) */
.stx-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.stx-epochs{min-width:1040px;font-size:11px}.stx-epochs th,.stx-epochs td{white-space:nowrap;font-variant-numeric:tabular-nums}
.stx-now td{background:#1c2a0e!important}.stx-done td{color:#8a92a3}.stx-done td b{color:#8a92a3}
.stx-pill-now{background:#CBF806;color:#0b0c10;font-weight:700}
.stx-prog{height:14px;border-radius:4px;background:#171a21;overflow:hidden;margin-top:8px}.stx-prog i{display:block;height:100%;background:#CBF806;width:0;transition:width .4s}
.stx-prog-t{font-family:'Space Mono',monospace;font-size:11px;color:#9aa3b5;margin-top:6px}

/* fx.css */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
/* BLOCK_LAB — ⚡ BADASS MODE (shared FX layer: scanlines, vignette, neon glow, glitch, embers, pulse). CSP-safe. */
.fxtoggle{display:inline-flex;align-items:center;gap:6px;font-family:'Space Mono','Consolas',monospace;font-size:11px;font-weight:700;letter-spacing:.06em;color:#CBF806;background:transparent;border:1.5px solid rgba(203,248,6,.45);border-radius:999px;padding:8px 12px;cursor:pointer;white-space:nowrap}
.fxtoggle:hover{border-color:#CBF806}
body.badass .fxtoggle{background:rgba(203,248,6,.12);box-shadow:0 0 14px rgba(203,248,6,.35)}

/* CRT scanlines + vignette */
body.badass::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:60;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.22) 0 2px,transparent 2px 4px);opacity:.55}
body.badass::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:59;
  background:radial-gradient(130% 100% at 50% 40%,transparent 62%,rgba(0,0,0,.55) 100%)}

/* neon */
/* The glow used to be a box-shadow KEYFRAME: an infinite animation that repaints the element on the
   main thread every frame, on every pill and button at once, for as long as the page is open. It now
   sits on a pseudo-element whose only animated property is opacity - the compositor handles that
   alone, and the main thread is left for the miner, the wallet and scrolling. Same look. */
body.badass .pill,body.badass .btn.o{position:relative;isolation:isolate}
body.badass .pill::after,body.badass .btn.o::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;
  box-shadow:0 0 26px rgba(203,248,6,.85),0 0 60px rgba(203,248,6,.35);opacity:.45;animation:fxglow 2.4s ease-in-out infinite;will-change:opacity}
body.badass .pill{box-shadow:0 0 12px rgba(203,248,6,.45)}
body.badass .pill.o,body.badass .btn.o{box-shadow:0 0 12px rgba(255,106,26,.5)}
body.badass .pill.o::after,body.badass .btn.o::after{box-shadow:0 0 26px rgba(255,106,26,.9),0 0 60px rgba(255,106,26,.4)}
@keyframes fxglow{0%,100%{opacity:.35}50%{opacity:1}}
body.badass .ghost{box-shadow:0 0 12px rgba(203,248,6,.22)}
body.badass .card,body.badass .wcard{box-shadow:0 0 0 1px rgba(203,248,6,.10),0 0 34px rgba(203,248,6,.07),inset 0 0 40px rgba(0,0,0,.35)}
body.badass .wcard.g,body.badass .card.g{box-shadow:0 0 0 1px rgba(203,248,6,.45),0 0 26px rgba(203,248,6,.22)}
body.badass .wcard.o,body.badass .card.o{box-shadow:0 0 0 1px rgba(255,106,26,.5),0 0 26px rgba(255,106,26,.25)}
body.badass .wcard.gold{box-shadow:0 0 0 1px rgba(212,175,55,.5),0 0 26px rgba(212,175,55,.22)}
body.badass h1 .g,body.badass .v,body.badass .lnum,body.badass .brand b{text-shadow:0 0 10px rgba(203,248,6,.75),0 0 28px rgba(203,248,6,.35)}
body.badass h1 .o,body.badass .v.o,body.badass .cd{text-shadow:0 0 10px rgba(255,106,26,.8),0 0 28px rgba(255,106,26,.35)}
body.badass .v.gold{text-shadow:0 0 10px rgba(212,175,55,.8)}
body.badass .chip.on{box-shadow:0 0 10px rgba(203,248,6,.45)}
body.badass .bar2 i{box-shadow:0 0 12px rgba(203,248,6,.8)}
body.badass .bar2 i.o{box-shadow:0 0 12px rgba(255,106,26,.8)}
body.badass .wall i.e{box-shadow:0 0 8px rgba(255,106,26,.9);animation:fxflicker 1.6s ease-in-out infinite}
body.badass .stack{filter:drop-shadow(0 0 22px rgba(203,248,6,.28))}
body.badass .lic{filter:drop-shadow(0 0 6px rgba(203,248,6,.6))}

/* glitch on headlines */
body.badass .glitch{animation:fxglitch 4.2s infinite}
/* transform only: the filter() steps forced a full repaint of the heading on every glitch frame */
@keyframes fxglitch{0%,91%,100%{transform:none}92%{transform:translate(2px,-1px) skewX(2deg)}94%{transform:translate(-2px,1px)}96%{transform:translate(1px,0) skewX(-2deg)}98%{transform:none}}
@keyframes fxflicker{0%,100%{opacity:1}50%{opacity:.55}}

/* embers */
.embers{position:fixed;inset:0;pointer-events:none;z-index:58;display:none;overflow:hidden}
body.badass .embers{display:block}
.embers i{position:absolute;bottom:-12px;width:4px;height:4px;border-radius:2px;background:#ff8a2a;box-shadow:0 0 8px #ff6a1a;opacity:0;animation:fxrise 8s linear infinite}
.embers i.g{background:#CBF806;box-shadow:0 0 8px #CBF806}
.embers i:nth-child(1){left:6%;animation-delay:0s}.embers i:nth-child(2){left:14%;animation-delay:1.3s;animation-duration:9s}
.embers i:nth-child(3){left:22%;animation-delay:2.6s}.embers i:nth-child(4){left:31%;animation-delay:.7s;animation-duration:7s}
.embers i:nth-child(5){left:40%;animation-delay:3.4s}.embers i:nth-child(6){left:48%;animation-delay:1.9s;animation-duration:10s}
.embers i:nth-child(7){left:57%;animation-delay:4.2s}.embers i:nth-child(8){left:65%;animation-delay:.3s;animation-duration:8.5s}
.embers i:nth-child(9){left:73%;animation-delay:2.2s}.embers i:nth-child(10){left:81%;animation-delay:5s;animation-duration:7.5s}
.embers i:nth-child(11){left:89%;animation-delay:1.1s}.embers i:nth-child(12){left:95%;animation-delay:3.8s;animation-duration:9.5s}
.embers i:nth-child(13){left:36%;animation-delay:6s}.embers i:nth-child(14){left:60%;animation-delay:6.6s;animation-duration:8s}
@keyframes fxrise{0%{transform:translateY(0) translateX(0);opacity:0}8%{opacity:.95}60%{opacity:.7}100%{transform:translateY(-105vh) translateX(28px);opacity:0}}

@media (prefers-reduced-motion:reduce){body.badass .glitch,body.badass .pill,body.badass .embers i,body.badass .wall i.e{animation:none}}

/* ---- BADASS on the inner pages (mine / gallery / launchpad) ---- */
body.badass .btn.y,body.badass .btn-wow,body.badass .btn.primary,body.badass button.primary,body.badass .cta-btn{box-shadow:0 0 16px rgba(203,248,6,.55),0 0 42px rgba(203,248,6,.22);animation:fxpulse 2.4s ease-in-out infinite}
body.badass .btn.o,body.badass .btn.rd{box-shadow:0 0 16px rgba(255,106,26,.6);animation:fxpulseo 2.4s ease-in-out infinite}
body.badass .card,body.badass .gpanel,body.badass .tile,body.badass .st,body.badass .gasbox,body.badass .stat,body.badass .panel,body.badass .box{box-shadow:0 0 0 1px rgba(203,248,6,.10),0 0 30px rgba(203,248,6,.06),inset 0 0 36px rgba(0,0,0,.35)}
body.badass .gasbox{box-shadow:0 0 0 1px rgba(255,106,26,.35),0 0 26px rgba(255,106,26,.18)}
body.badass .logo,body.badass .brand,body.badass .badge,body.badass .st b,body.badass .netpill,body.badass .eyebrow{text-shadow:0 0 10px rgba(203,248,6,.7),0 0 26px rgba(203,248,6,.3)}
body.badass h1 .acc,body.badass .gb-big,body.badass .red{text-shadow:0 0 12px rgba(255,106,26,.8),0 0 30px rgba(255,106,26,.35)}
body.badass h1,body.badass .h2{text-shadow:0 0 14px rgba(245,244,240,.25)}
body.badass .board,body.badass .grid img,body.badass .tile img{filter:saturate(1.15) contrast(1.06)}
body.badass .board{box-shadow:0 0 0 1px rgba(203,248,6,.25),0 0 40px rgba(203,248,6,.12)}
body.badass .tile.leg,body.badass .tile.epic{box-shadow:0 0 18px rgba(203,248,6,.35)}
body.badass input,body.badass select{box-shadow:inset 0 0 12px rgba(0,0,0,.5)}
body.badass input:focus,body.badass select:focus{box-shadow:0 0 12px rgba(203,248,6,.45)}

/* MOMENTS (2026-10-01): shared peaks - mint landed, war won, blocks burning */
.fx-burst{position:fixed;inset:0;pointer-events:none;z-index:70}
body.fx-flash::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:71;background:radial-gradient(60% 60% at 50% 40%,rgba(203,248,6,.55),rgba(203,248,6,0) 70%);animation:fxflash .7s ease-out forwards}
body.fx-flash-burn::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:71;background:radial-gradient(60% 60% at 50% 50%,rgba(255,106,26,.5),rgba(255,106,26,0) 70%);animation:fxflash .7s ease-out forwards}
@keyframes fxflash{0%{opacity:1}100%{opacity:0}}
.fx-shake{animation:fxshake .6s cubic-bezier(.36,.07,.19,.97) both}
@keyframes fxshake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}
/* a burned block tile: pixel fire eating it, then ash */
.wall i.e.burning{position:relative;overflow:visible;animation:fxash 2.8s steps(6) forwards}
.wall i.e.burning::after{content:"";position:absolute;left:-2px;right:-2px;bottom:0;height:140%;pointer-events:none;background:linear-gradient(0deg,#ff6a1a 0 25%,#ffb01a 25% 45%,#ffe08a 45% 55%,transparent 55%);background-size:6px 100%;mask:linear-gradient(0deg,#000 40%,transparent 95%);-webkit-mask:linear-gradient(0deg,#000 40%,transparent 95%);animation:fxfire .35s steps(3) infinite,fxfireout 2.8s ease-in forwards}
@keyframes fxfire{0%{transform:translateY(0) scaleY(1)}50%{transform:translateY(-3px) scaleY(1.15)}100%{transform:translateY(1px) scaleY(.9)}}
@keyframes fxfireout{0%,70%{opacity:1}100%{opacity:0}}
@keyframes fxash{0%{filter:brightness(1.6) saturate(1.4)}60%{filter:brightness(.9)}100%{filter:grayscale(1) brightness(.35)}}
@media (prefers-reduced-motion:reduce){.wall i.e.burning,.wall i.e.burning::after,.fx-shake{animation:none}.wall i.e.burning{filter:grayscale(1) brightness(.35)}}
