/* ============================================================
   区块链可视化模拟器 V4.0 - 深色科技风 Dashboard
   ============================================================ */

/* ===== 变量 ===== */
:root {
  --bg-base: #07101f; --bg-sidebar: #091426; --bg-card: #0c1728; --bg-card-alt: #101d30;
  --bg-input: #0a1628; --bg-hover: #132038;
  --border: #1d3048; --border-light: #253d58; --border-active: #3b82f6;
  --text-primary: #e6edf7; --text-secondary: #8291a8; --text-dim: #56667e;
  --blue: #3b82f6; --cyan: #38bdf8; --purple: #8b5cf6; --green: #22c55e; --yellow: #f59e0b; --red: #ef4444;
  --sidebar-width: 220px; --radius: 10px; --radius-sm: 6px; --font-mono: 'JetBrains Mono',Consolas,'Courier New',monospace;
  --ease: cubic-bezier(0.4,0,0.2,1);
}

/* ===== 基础 ===== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;min-height:100%;overflow-x:hidden;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:13px;color:var(--text-primary);background:var(--bg-base);line-height:1.5}
.app-container{display:flex;min-height:100vh}

/* ===== 侧边栏 ===== */
.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--bg-sidebar);display:flex;flex-direction:column;border-right:1px solid var(--border);position:sticky;top:0;height:100vh;z-index:100}
.sidebar-brand{display:flex;align-items:center;gap:10px;padding:18px 16px;border-bottom:1px solid var(--border)}
.brand-icon{color:var(--cyan);flex-shrink:0}
.brand-text{display:flex;flex-direction:column}
.brand-title{font-size:0.92rem;font-weight:700;color:var(--text-primary);line-height:1.2}
.brand-subtitle{font-size:0.7rem;color:var(--text-dim);line-height:1.2}
.sidebar-nav{flex:1;padding:12px 0;overflow-y:auto}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 20px;color:var(--text-secondary);text-decoration:none;cursor:pointer;transition:all 0.2s var(--ease);border-left:3px solid transparent;font-size:0.84rem}
.nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}
.nav-item.active{background:rgba(59,130,246,0.1);color:var(--blue);border-left-color:var(--blue)}
.nav-icon{font-size:1rem;width:20px;text-align:center}
.sidebar-status{padding:12px 16px;border-top:1px solid var(--border);font-size:0.72rem}
.status-title{font-weight:600;color:var(--text-dim);margin-bottom:6px;text-transform:uppercase;letter-spacing:0.05em}
.status-text{color:var(--text-secondary);line-height:1.4}
.status-info{display:flex;flex-direction:column;gap:4px}
.status-row{display:flex;justify-content:space-between;color:var(--text-secondary)}
.status-row span:last-child{color:var(--text-primary);font-weight:600}

/* ===== 主内容区 ===== */
.main-area{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}

/* ===== 顶部栏 ===== */
.top-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;border-bottom:1px solid var(--border);background:var(--bg-card);min-height:56px;flex-shrink:0;gap:12px;flex-wrap:wrap}
.top-bar-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.top-bar-right{display:flex;align-items:center;gap:10px;font-size:0.78rem;color:var(--text-secondary)}
.chain-status-label{font-weight:600}
.chain-status-badge{padding:3px 10px;border-radius:12px;font-size:0.75rem;font-weight:600}
.chain-status-badge.valid{background:rgba(34,197,94,0.12);color:var(--green);border:1px solid rgba(34,197,94,0.25)}
.chain-status-badge.invalid{background:rgba(239,68,68,0.12);color:var(--red);border:1px solid rgba(239,68,68,0.25)}
.top-divider{width:1px;height:18px;background:var(--border)}
.top-info{display:flex;align-items:center;gap:4px}
.top-info span{color:var(--text-primary);font-weight:600}

/* ===== 按钮 ===== */
.tb-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:var(--radius-sm);font-size:0.8rem;font-weight:600;cursor:pointer;border:1px solid transparent;transition:all 0.2s var(--ease);white-space:nowrap}
.tb-btn:disabled{opacity:0.45;cursor:not-allowed}
.tb-btn-primary{background:var(--blue);color:#fff;border-color:var(--blue)}
.tb-btn-primary:hover:not(:disabled){background:#2563eb}
.tb-btn-success{background:var(--green);color:#fff;border-color:var(--green)}
.tb-btn-success:hover:not(:disabled){background:#16a34a}
.tb-btn-outline{background:transparent;color:var(--text-primary);border-color:var(--border)}
.tb-btn-outline:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-light)}
.tb-btn-warning-outline{background:transparent;color:var(--yellow);border-color:rgba(245,158,11,0.4)}
.tb-btn-warning-outline:hover:not(:disabled){background:rgba(245,158,11,0.08)}
.tb-btn-danger-outline{background:transparent;color:var(--red);border-color:rgba(239,68,68,0.4)}
.tb-btn-danger-outline:hover:not(:disabled){background:rgba(239,68,68,0.08)}
.btn-sm{padding:4px 10px;font-size:0.72rem;border-radius:4px;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--text-secondary);transition:all 0.2s var(--ease)}
.btn-sm:hover{background:var(--bg-hover);color:var(--text-primary)}
.btn-sm-outline{background:transparent;border-color:var(--border);color:var(--text-secondary)}

/* ===== Dashboard ===== */
.dashboard{padding:16px 20px;display:flex;flex-direction:column;gap:16px;overflow-y:auto;flex:1}
.dash-row-top{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1.4fr) minmax(280px,0.85fr);gap:16px}
.dash-row-chain{display:grid;grid-template-columns:1fr 300px;gap:16px}
.dash-row-bottom{display:grid;grid-template-columns:1fr 300px;gap:16px}
@media(max-width:1400px){
  .dash-row-top{grid-template-columns:1fr 1fr}
  .dash-row-chain,.dash-row-bottom{grid-template-columns:1fr}
}

/* ===== 卡片 ===== */
.dash-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;min-width:0;overflow:hidden}
.card-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.card-header h3{font-size:0.9rem;font-weight:700;display:flex;align-items:center;gap:8px}
.card-body{padding:12px 16px;flex:1;overflow:visible;min-height:0}
.chain-body{padding:12px 8px}
.log-body{max-height:350px}
.activity-body{max-height:350px}
.badge{background:var(--blue);color:#fff;font-size:0.65rem;padding:2px 7px;border-radius:10px;font-weight:600;min-width:20px;text-align:center}
.placeholder{padding:30px;text-align:center;color:var(--text-dim);font-size:0.84rem}

/* ===== 钱包卡片 ===== */
.wallet-grid-3x2{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.wallet-mini{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;cursor:pointer;transition:all 0.2s var(--ease);border-left:3px solid var(--blue)}
.wallet-mini:hover{border-color:var(--border-active);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,0.3)}
.wallet-mini:nth-child(2){border-left-color:var(--purple)}.wallet-mini:nth-child(3){border-left-color:var(--green)}
.wallet-mini:nth-child(4){border-left-color:var(--yellow)}.wallet-mini:nth-child(5){border-left-color:var(--cyan)}.wallet-mini:nth-child(6){border-left-color:var(--red)}
.wallet-mini-name{display:flex;align-items:center;gap:6px;min-width:0;font-size:0.84rem;font-weight:700;color:var(--text-primary);margin-bottom:3px}.wallet-mini-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wallet-untrusted-badge{flex:none;margin-left:auto;padding:2px 6px;border:1px solid rgba(239,68,68,.32);border-radius:999px;background:rgba(239,68,68,.08);color:var(--red);font-size:.56rem;font-weight:600;white-space:nowrap}
.wallet-mini-balance{font-size:1.3rem;font-weight:700;color:var(--cyan);margin-bottom:3px}
.wallet-mini-addr{font-size:0.66rem;color:var(--text-dim);font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wallet-untrusted{border-left-color:var(--red)!important;opacity:0.7}

/* ===== 交易池表格 ===== */
.pool-table-wrap{overflow-x:auto}
.pool-table{width:100%;border-collapse:collapse;font-size:0.76rem}
.pool-table th{text-align:left;padding:8px 10px;color:var(--text-dim);font-weight:600;border-bottom:1px solid var(--border);font-size:0.7rem;text-transform:uppercase;letter-spacing:0.03em}
.pool-table td{padding:7px 10px;border-bottom:1px solid rgba(29,48,72,0.4);cursor:pointer}
.pool-table tbody tr:hover{background:var(--bg-hover)}
.pool-table tbody tr{cursor:pointer}
.flow-arrow{color:var(--text-dim);margin:0 4px}
.pool-sig-badge{font-size:0.64rem;padding:2px 6px;border-radius:4px;font-weight:600}
.pool-sig-badge.ok{background:rgba(34,197,94,0.12);color:var(--green);border:1px solid rgba(34,197,94,0.25)}
.pool-empty{padding:20px;text-align:center;color:var(--text-dim);font-size:0.8rem}

/* ===== 挖矿 ===== */
.mining-grid{display:flex;flex-direction:column;gap:6px}
.mining-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid rgba(29,48,72,0.3)}
.mining-label{color:var(--text-dim);font-size:0.76rem}
.mining-value{color:var(--text-primary);font-weight:600;font-size:0.82rem;font-family:var(--font-mono)}
.mining-value.big{font-size:1.05rem}
.mining-status-tag{padding:2px 10px;border-radius:10px;font-size:0.72rem;font-weight:700}
.mining-status-tag.idle{background:rgba(86,102,126,0.15);color:var(--text-dim)}
.mining-status-tag.mining{background:rgba(59,130,246,0.15);color:var(--blue);animation:mining-pulse 0.8s ease infinite alternate}
.mining-status-tag.done{background:rgba(34,197,94,0.15);color:var(--green)}
.mining-status-tag.failed{background:rgba(239,68,68,0.15);color:var(--red)}
.mining-hash-display{font-family:var(--font-mono);font-size:0.7rem;padding:6px 8px;background:var(--bg-input);border-radius:4px;word-break:break-all;color:var(--text-secondary)}
.mining-hash-display .highlight{color:var(--green);font-weight:700}
.mining-animate-bar{height:3px;background:linear-gradient(90deg,transparent,var(--blue),transparent);background-size:200% 100%;animation:shimmer 1.5s ease infinite;border-radius:2px;margin:4px 0}
.mining-empty{padding:20px;text-align:center;color:var(--text-dim);font-size:0.8rem}
@keyframes mining-pulse{from{opacity:0.7}to{opacity:1}}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* ===== 区块链 ===== */
.chain-scroll-wrapper{overflow-x:auto;overflow-y:hidden;padding-bottom:8px}
.chain-inner{display:flex;align-items:center;gap:0;min-width:max-content}
.block-card{min-width:145px;background:var(--bg-card-alt);border:2px solid var(--blue);border-radius:var(--radius-sm);padding:10px 12px;cursor:pointer;transition:all 0.2s var(--ease);flex-shrink:0}
.block-card:hover{transform:translateY(-3px);box-shadow:0 6px 20px rgba(0,0,0,0.4)}
.block-card.genesis{border-color:var(--purple);background:rgba(139,92,246,0.06)}
.block-card.latest{border-color:var(--green);box-shadow:0 0 12px rgba(34,197,94,0.15)}
.block-card.tampered{border-color:var(--red);border-style:solid;background:rgba(239,68,68,0.08)}
.block-card.tampered::after{content:'已篡改';display:block;font-size:0.55rem;color:var(--red);font-weight:700;margin-top:3px}
.block-card.affected{border-color:var(--red);border-style:dashed;background:rgba(239,68,68,0.04)}
.block-card.affected::after{content:'受影响';display:block;font-size:0.55rem;color:var(--red);font-weight:700;opacity:0.7;margin-top:3px}
.block-index{font-size:1.1rem;font-weight:700;color:var(--text-primary);margin-bottom:4px}
.block-hash-preview{font-family:var(--font-mono);font-size:0.66rem;color:var(--text-secondary);margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.block-meta-row{display:flex;justify-content:space-between;font-size:0.64rem;color:var(--text-dim)}
.block-badge{font-size:0.55rem;font-weight:700;color:var(--purple);text-transform:uppercase;letter-spacing:0.05em;margin-bottom:3px}
.chain-connector{display:flex;align-items:center;flex-shrink:0;padding:0 2px}
.chain-line{width:20px;height:2px;background:var(--blue);border-radius:1px}
.chain-arrow{color:var(--blue);font-size:0.7rem;margin:0 1px}
.chain-connector.broken .chain-line{background:var(--red);opacity:0.5}
.chain-connector.broken .chain-arrow{color:var(--red)}

/* ===== 系统状态 ===== */
.sys-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid rgba(29,48,72,0.3);font-size:0.78rem}
.sys-row .lbl{color:var(--text-dim)}
.sys-row .val{color:var(--text-primary);font-weight:600}
.sys-row .val.ok{color:var(--green)}.sys-row .val.err{color:var(--red)}

/* ===== 日志 ===== */
.log-entry{display:flex;align-items:flex-start;gap:8px;padding:4px 0;border-bottom:1px solid rgba(29,48,72,0.2);font-size:0.72rem}
.log-time{color:var(--text-dim);font-family:var(--font-mono);white-space:nowrap;flex-shrink:0}
.log-level{padding:1px 5px;border-radius:3px;font-size:0.6rem;font-weight:700;text-transform:uppercase;flex-shrink:0;min-width:40px;text-align:center}
.log-level.info{background:rgba(59,130,246,0.15);color:var(--blue)}
.log-level.warn{background:rgba(245,158,11,0.15);color:var(--yellow)}
.log-level.error{background:rgba(239,68,68,0.15);color:var(--red)}
.log-msg{color:var(--text-secondary);flex:1;min-width:0;word-break:break-word}
.log-detail-toggle{margin-left:6px;color:var(--cyan);cursor:pointer;font-size:0.66rem}
.log-detail-body{padding:6px 10px;margin-top:4px;background:var(--bg-input);border-radius:4px;font-size:0.68rem;color:var(--text-dim);line-height:1.5}
.log-empty{padding:20px;text-align:center;color:var(--text-dim)}

/* ===== 活动 ===== */
.activity-item{display:flex;align-items:flex-start;gap:8px;padding:6px 0;border-bottom:1px solid rgba(29,48,72,0.2);font-size:0.72rem;animation:step-in 0.3s var(--ease) forwards}
.activity-icon{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:0.7rem;flex-shrink:0}
.activity-icon.mining{background:rgba(34,197,94,0.15);color:var(--green)}
.activity-icon.tx{background:rgba(59,130,246,0.15);color:var(--blue)}
.activity-icon.tamper{background:rgba(239,68,68,0.15);color:var(--red)}
.activity-icon.system{background:rgba(139,92,246,0.15);color:var(--purple)}
.activity-content{flex:1;min-width:0;cursor:pointer}
.activity-title{font-weight:600;color:var(--text-primary)}
.activity-desc{color:var(--text-dim);font-size:0.68rem}
.activity-time{color:var(--text-dim);font-size:0.64rem;flex-shrink:0;font-family:var(--font-mono)}
@keyframes step-in{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}

/* ===== 弹窗 ===== */
.modal-overlay{position:fixed;inset:0;background:rgba(2,8,20,0.6);z-index:1000;display:flex;align-items:center;justify-content:center}
.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);width:480px;max-width:95vw;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 16px 48px rgba(0,0,0,0.5)}
.modal-wide{width:560px}
.modal-large{width:680px;max-height:90vh}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);flex-shrink:0}
.modal-header h3{font-size:0.95rem;font-weight:700}
.modal-close{width:28px;height:28px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-dim);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:0.85rem;transition:all 0.2s}
.modal-close:hover{background:var(--bg-hover);color:var(--text-primary)}
.modal-body{flex:1;overflow-y:auto;padding:16px 18px}
.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--border);flex-shrink:0}

/* ===== 表单 ===== */
.form-row{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.form-row label{font-size:0.78rem;font-weight:600;color:var(--text-secondary)}
.form-row select,.form-row input{background:var(--bg-input);color-scheme:dark;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238291a8' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;color:var(--text-primary);font-size:0.82rem;outline:none;transition:border-color 0.2s}
.form-row select:focus,.form-row input:focus{border-color:var(--border-active)}
.form-error{color:var(--red);font-size:0.74rem;padding:6px 18px;display:none}
.tamper-hint{font-size:0.72rem;color:var(--yellow);padding:8px 10px;background:rgba(245,158,11,0.06);border:1px solid rgba(245,158,11,0.2);border-radius:var(--radius-sm);margin-top:10px;line-height:1.5}
.custody-notice{font-size:0.7rem;color:var(--cyan);padding:8px 10px;background:rgba(56,189,248,0.06);border:1px solid rgba(56,189,248,0.2);border-radius:var(--radius-sm);margin-bottom:10px;line-height:1.5}

/* ===== Tab ===== */
.tab-bar{display:flex;border-bottom:1px solid var(--border);margin-bottom:14px}
.tab-btn{padding:8px 16px;font-size:0.8rem;font-weight:600;color:var(--text-dim);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all 0.2s}
.tab-btn.active{color:var(--blue);border-bottom-color:var(--blue)}
.tab-btn:hover{color:var(--text-primary)}

/* ===== 区块详情 ===== */
.block-detail{display:flex;flex-direction:column;gap:6px}
.detail-row{display:flex;justify-content:space-between;align-items:flex-start;padding:6px 0;border-bottom:1px solid rgba(29,48,72,0.3);font-size:0.8rem}
.detail-label{color:var(--text-dim);flex-shrink:0;margin-right:12px}
.detail-value{color:var(--text-primary);font-family:var(--font-mono);font-size:0.72rem;text-align:right;word-break:break-all}
.detail-tx-table{width:100%;border-collapse:collapse;font-size:0.72rem;margin-top:8px}
.detail-tx-table th{text-align:left;padding:6px 8px;color:var(--text-dim);font-weight:600;border-bottom:1px solid var(--border);font-size:0.66rem}
.detail-tx-table td{padding:6px 8px;border-bottom:1px solid rgba(29,48,72,0.3);cursor:pointer}
.detail-tx-table tbody tr:hover{background:var(--bg-hover)}
.sig-ok{color:var(--green)}.sig-bad{color:var(--red)}

/* ===== Merkle ===== */
.merkle-tree{display:flex;flex-direction:column;align-items:center;gap:16px;padding:10px 0}
.merkle-level{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.merkle-node{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;font-family:var(--font-mono);font-size:0.62rem;color:var(--text-secondary);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;transition:all 0.2s}
.merkle-node:hover{border-color:var(--cyan)}
.merkle-level{position:relative;padding-top:8px}
.merkle-level:not(:last-child)::after{content:'';position:absolute;bottom:-16px;left:50%;transform:translateX(-50%);width:2px;height:16px;background:var(--border);opacity:0.5}
.merkle-node.root{border-color:var(--purple);font-weight:700}
.merkle-node.leaf{cursor:pointer}
.merkle-node.verified{border-color:var(--green);background:rgba(34,197,94,0.06)}
.merkle-node.invalid{border-color:var(--red);background:rgba(239,68,68,0.06)}
.merkle-node.tampered-leaf{border-color:var(--red);border-style:dashed;background:rgba(239,68,68,0.08)}
.merkle-proof{padding:12px;background:var(--bg-input);border-radius:var(--radius-sm);margin-top:12px;font-size:0.72rem}

/* ===== 签名预览 ===== */
.sig-preview{padding:10px 12px;background:var(--bg-input);border-radius:var(--radius-sm);font-size:0.72rem;color:var(--text-secondary);margin-bottom:8px}
.sig-preview code{font-size:0.62rem;word-break:break-all}
.tx-preview{padding:10px 12px;background:var(--bg-input);border-radius:var(--radius-sm);margin-top:8px;font-size:0.72rem}

/* ===== 伪造交易 ===== */
.forged-step{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid rgba(29,48,72,0.3)}
.forged-step-icon{font-size:1.2rem;flex-shrink:0;width:30px;text-align:center}
.forged-step-title{font-weight:700;font-size:0.8rem}
.forged-step-detail{font-size:0.72rem;color:var(--text-dim)}
.forged-step.fail .forged-step-title{color:var(--red)}

/* ===== 交易详情 ===== */
.tx-detail-grid{display:flex;flex-direction:column;gap:6px}
.tx-detail-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid rgba(29,48,72,0.3);font-size:0.8rem}
.tx-detail-sep{border-top:1px dashed var(--border);margin:3px 0}
.tx-source-hint{font-size:0.7rem;color:var(--text-dim);margin-bottom:10px;padding:6px 10px;background:rgba(59,130,246,0.06);border-radius:4px}

/* ===== 抽屉 ===== */
.drawer-overlay{position:fixed;inset:0;background:rgba(2,8,20,0.3);z-index:1100;display:none;transition:opacity 0.25s var(--ease)}
.drawer-overlay.open{display:block}
.drawer{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:92vw;background:var(--bg-card);border-left:1px solid var(--border);z-index:1200;display:flex;flex-direction:column;transform:translateX(100%);transition:transform 0.25s var(--ease);box-shadow:-8px 0 32px rgba(0,0,0,0.5)}
.drawer.open{transform:translateX(0)}
.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}
.drawer-title{font-size:1.05rem;font-weight:700}
.drawer-close{width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-dim);display:flex;align-items:center;justify-content:center;font-size:1rem;cursor:pointer;transition:all 0.2s}
.drawer-close:hover{background:var(--bg-hover);color:var(--text-primary)}
.drawer-body{flex:1;overflow-y:auto;padding:16px 20px}
.drawer-footer{padding:12px 20px;border-top:1px solid var(--border);flex-shrink:0;display:flex;gap:8px;flex-wrap:wrap}
.drawer-section{margin-bottom:16px}
.drawer-section h4{font-size:0.78rem;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:0.05em;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid rgba(29,48,72,0.4)}
.drawer-info-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid rgba(29,48,72,0.3);font-size:0.8rem}
.drawer-info-row .lbl{color:var(--text-dim)}
.drawer-info-row .val{color:var(--text-primary);font-weight:600;font-family:var(--font-mono);font-size:0.76rem;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drawer-info-row .val.copyable{cursor:pointer}
.drawer-info-row .val.copyable:hover{color:var(--cyan)}
.drawer-info-row .val.balance-big{font-size:1.2rem;color:var(--cyan);font-weight:700}
.drawer-info-row .val.negative{color:var(--red)}
.drawer-tx-list{display:flex;flex-direction:column;gap:6px}
.drawer-tx-item{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;cursor:pointer;transition:all 0.2s;font-size:0.74rem}
.drawer-tx-item:hover{border-color:var(--border-active)}
.drawer-tx-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}
.drawer-tx-dir{font-weight:700;font-size:0.7rem}
.drawer-tx-dir.in{color:var(--green)}.drawer-tx-dir.out{color:var(--red)}.drawer-tx-dir.reward{color:var(--yellow)}
.drawer-tx-amount{font-weight:700;font-family:var(--font-mono);font-size:0.76rem}
.drawer-tx-amount.positive{color:var(--green)}.drawer-tx-amount.negative{color:var(--red)}
.drawer-tx-meta{font-size:0.64rem;color:var(--text-dim)}
.drawer-warn{padding:10px 14px;margin-bottom:12px;background:rgba(239,68,68,0.08);border:1px solid rgba(239,68,68,0.3);border-radius:var(--radius-sm);font-size:0.74rem;color:var(--red);line-height:1.5}

/* ===== Toast ===== */
.toast-container{width:100%;padding:0 16px 16px;flex-shrink:0;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}
.toast{pointer-events:auto;display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:8px;font-size:0.8rem;color:#fff;background:var(--bg-card);border:1px solid var(--border);box-shadow:0 4px 16px rgba(0,0,0,0.4);animation:toast-in 0.3s var(--ease)}
.toast.removing{animation:toast-out 0.2s var(--ease) forwards}
.toast-success{border-left:3px solid var(--green)}.toast-error{border-left:3px solid var(--red)}
.toast-warn{border-left:3px solid var(--yellow)}.toast-info{border-left:3px solid var(--blue)}
.toast-icon{font-size:1rem;font-weight:700}
.toast-msg{flex:1}
.toast-close{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:0.85rem;padding:2px}
@keyframes toast-in{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes toast-out{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}

/* ===== 提示 ===== */
.chain-invalid-warn{padding:10px 14px;margin-bottom:10px;background:rgba(239,68,68,0.08);border:1px solid rgba(239,68,68,0.3);border-radius:var(--radius-sm);font-size:0.74rem;color:var(--red);line-height:1.5}

/* ===== 滚动条 ===== */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--border-light)}
.chain-scroll-wrapper::-webkit-scrollbar{height:5px}

/* ===== Help tip ===== */
.help-tip{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:rgba(59,130,246,0.15);color:var(--blue);font-size:0.6rem;font-weight:700;cursor:help;margin-left:3px;vertical-align:middle}
.tip-bubble{position:fixed;z-index:10000;max-width:320px;padding:10px 14px;background:var(--bg-card-alt);border:1px solid var(--border-light);border-radius:8px;font-size:0.74rem;color:var(--text-primary);line-height:1.5;box-shadow:0 8px 24px rgba(0,0,0,0.5);pointer-events:none}

/* ===== spinner ===== */
.spinning{animation:spin 1s linear infinite}
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

/* ============================================================
   V6.0 — 参考图复刻：深蓝玻璃态运行仪表盘
   ============================================================ */
:root{
  --bg-base:#020b19;--bg-sidebar:#061226;--bg-card:#071528;--bg-card-alt:#0a1a30;
  --bg-input:#071426;--bg-hover:#0d213c;--border:#17304d;--border-light:#234768;
  --text-primary:#f2f6ff;--text-secondary:#a7b5c9;--text-dim:#8192aa;
  --blue:#2f80ff;--cyan:#24c8ff;--purple:#8b5cf6;--green:#18d17b;--yellow:#f8c51c;--red:#ff4e62;
  --sidebar-width:240px;--radius:9px;--radius-sm:7px;
}
html,body{font-size:14px;background:radial-gradient(circle at 72% 0,rgba(14,64,118,.08),transparent 34%),var(--bg-base)}
body{min-width:1040px}
.app-container{height:100vh;min-height:720px;overflow:hidden}

/* 侧栏 */
.sidebar{background:linear-gradient(180deg,#061326 0%,#061225 64%,#071528 100%);border-right:1px solid #19324e;box-shadow:10px 0 40px rgba(0,8,22,.24)}
.sidebar-brand{height:78px;padding:16px 18px;gap:13px;border-bottom:1px solid rgba(29,58,89,.5)}
.brand-icon{color:#2477ff;filter:drop-shadow(0 0 12px rgba(37,99,235,.38))}
.brand-title{font-size:1.12rem;letter-spacing:.02em}.brand-subtitle{font-size:.78rem;color:#b2bfd2;margin-top:3px}
.sidebar-nav{padding:14px 7px}
.nav-item{min-height:48px;margin:3px 0;padding:0 20px;gap:13px;border:0;border-radius:7px;font-size:.96rem;font-weight:600;color:#bec9db}
.nav-item:hover{background:rgba(50,95,160,.12)}
.nav-item.active{color:#d9e5ff;border:0;background:linear-gradient(90deg,rgba(66,92,240,.38),rgba(93,47,176,.23));box-shadow:inset 0 0 22px rgba(70,76,255,.12)}
.nav-icon{width:22px;color:#b9c6da;font-size:1.08rem}.nav-item.active .nav-icon{color:#9a91ff}
.sidebar-status{margin:0 16px 16px;padding:13px 14px 14px;border:1px solid #1a3858;border-radius:8px;background:linear-gradient(145deg,rgba(12,35,62,.92),rgba(6,25,47,.92));font-size:.78rem;box-shadow:0 12px 28px rgba(0,0,0,.15)}
.status-title{display:flex;align-items:center;gap:6px;margin-bottom:10px;color:#dce8fa;font-weight:700;text-transform:none;letter-spacing:0}.status-title span{color:var(--green)}
.status-text{color:#a1b1c6;line-height:1.75}.status-info{gap:6px}.status-row{color:#9aabc1}.status-row span:last-child{color:#eef5ff}
.toast-container{padding:0 16px 12px}.toast{width:100%;padding:10px 12px;border-radius:7px;background:#0b1a30;border-color:#1d3c5d;font-size:.8rem;box-shadow:0 12px 30px rgba(0,0,0,.34)}

/* 顶栏 */
.main-area{background:linear-gradient(180deg,rgba(3,14,31,.92),rgba(2,11,25,1));height:100vh}
.top-bar{height:64px;min-height:64px;padding:0 26px;background:rgba(3,13,29,.78);border-bottom:1px solid rgba(23,48,77,.55);gap:14px;flex-wrap:nowrap}
.top-bar-left{gap:11px;flex-wrap:nowrap}
.tb-btn{height:37px;padding:0 15px;border-radius:7px;font-size:.79rem;gap:7px;background:#061426;border-color:#1a3552;color:#d9e5f5;box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}
.tb-btn:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.12)}
.tb-btn:disabled{opacity:.68;filter:saturate(.72)}
.tb-btn-primary{background:linear-gradient(135deg,#6553e8,#347df1);border-color:#5974ff;box-shadow:0 0 18px rgba(78,84,255,.28)}
.tb-btn-success{background:linear-gradient(135deg,#075b3c,#087b4f);border-color:#087348;color:#ddfff0;box-shadow:0 0 16px rgba(17,196,108,.12)}
.tb-btn-outline{background:#061426;border-color:#1b3856}.tb-btn-warning-outline{background:#071527;border-color:#1c3a58;color:#f4f7fc}.tb-btn-danger-outline{background:linear-gradient(135deg,rgba(108,20,39,.72),rgba(74,17,33,.72));border-color:#5c2034;color:#ffb4bf}
.top-bar-right{gap:11px;margin-left:auto;color:#b7c3d5}.auto-refresh-pill{height:36px;display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid #17324f;border-radius:7px;background:#061325;font-size:.76rem}.live-dot{width:9px;height:9px;border-radius:50%;background:#20d47d;box-shadow:0 0 8px rgba(32,212,125,.4)}.refresh-divider{width:1px;height:18px;background:#18324e}.clock-icon{font-size:1rem;color:#aebbd0}.theme-button{height:36px;padding:0 12px;border:1px solid #17324f;border-radius:7px;background:#061325;color:#bdc9da;cursor:pointer}.theme-button span{margin-left:7px;color:#71839e}.top-runtime-meta{display:none}

/* 仪表盘整体 */
.dashboard{padding:14px 18px 18px;gap:16px;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scrollbar-gutter:stable}
.dash-row-top{height:auto;min-height:280px;flex:none;grid-template-columns:minmax(0,1.02fr) minmax(0,.95fr) minmax(0,1.03fr);gap:16px}
.dash-row-chain{height:auto;min-height:250px;flex:none;grid-template-columns:minmax(0,1fr) 300px;gap:16px}
.dash-row-bottom{height:auto;min-height:300px;flex:none;grid-template-columns:minmax(0,1fr) 300px;gap:16px}
.dash-row-top.has-chain-warning{height:auto;min-height:340px}.dash-row-chain.has-chain-warning{height:auto;min-height:310px}
.dash-card{background:linear-gradient(145deg,rgba(7,22,41,.98),rgba(5,17,34,.98));border:1px solid #183653;border-radius:9px;box-shadow:0 8px 24px rgba(0,5,15,.16),inset 0 1px 0 rgba(255,255,255,.015)}
.card-header{height:52px;padding:0 16px;border-bottom:1px solid rgba(25,57,87,.74)}
.card-header h3{font-size:.97rem;gap:8px;color:#edf4ff}.card-icon{font-size:.96rem}.card-icon.blue{color:#43a2ff}.card-icon.cyan{color:#22c9ff}.card-icon.purple{color:#9c68ff}
.header-count{color:#8a9ab2;font-weight:500;font-size:.8rem}.header-count::before{content:'('}.header-count::after{content:')'}
.card-action{border:0;background:transparent;color:#2692ff;font-size:.75rem;cursor:pointer}.card-action.muted{color:#2796ff}.card-action.secondary{height:32px;padding:0 11px;border:1px solid #1b3a58;border-radius:6px;color:#b8c6d9;background:#071529}
.card-body{padding:14px 16px}.badge{border-radius:50%;background:#367df6}

/* 钱包 */
.wallet-grid-3x2{gap:9px;grid-template-columns:repeat(3,minmax(0,1fr))}
.wallet-mini{position:relative;min-height:91px;padding:12px 12px 10px;background:linear-gradient(145deg,#0a1c33,#09182c);border:1px solid #1a3856;border-left:3px solid var(--wallet-accent,var(--blue));border-radius:8px;overflow:hidden}
.wallet-mini:hover{transform:translateY(-2px);border-color:var(--wallet-accent,var(--blue));box-shadow:0 8px 22px rgba(0,0,0,.28)}
.wallet-mini:nth-child(1){--wallet-accent:#2d9cff}.wallet-mini:nth-child(2){--wallet-accent:#19c6e8}.wallet-mini:nth-child(3){--wallet-accent:#ff8a45}.wallet-mini:nth-child(4){--wallet-accent:#f6d51d}.wallet-mini:nth-child(5){--wallet-accent:#12cbb8}.wallet-mini:nth-child(6){--wallet-accent:#9b5de5;background:linear-gradient(145deg,#17183c,#241142)}
.wallet-mini-name{display:flex;align-items:center;gap:6px;font-size:.82rem;margin-bottom:5px}.wallet-mini-name::before{content:'●';font-size:.65rem;color:var(--wallet-accent)}
.wallet-mini-balance{font-size:1.16rem;line-height:1.2;color:#f5f8ff;margin-bottom:8px;white-space:nowrap}.wallet-mini-addr{font-size:.78rem;color:var(--text-dim)}

/* 交易池 */
.pool-table-wrap{height:100%;display:flex;flex-direction:column;overflow:hidden}.pool-table{font-size:.8rem}.pool-table th{padding:7px 7px;font-size:.76rem;color:var(--text-dim)}.pool-table td{padding:9px 7px;border-bottom:1px solid rgba(29,56,84,.58)}.pool-table td:first-child code{color:#e4ebf6;font-size:.78rem}.pool-table tbody tr:hover{background:rgba(24,63,103,.18)}.pool-sig-badge{display:none}.pool-empty{margin:auto;padding:18px}.flow-arrow{color:var(--text-dim)}
.pool-summary{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding:10px 12px;background:rgba(14,35,61,.7);border:1px solid #173451;border-radius:7px;color:var(--text-secondary);font-size:.78rem}.pool-summary strong{color:#f1f6ff}.pool-summary .reward{color:#f7cb35}

/* 挖矿 */
.mining-grid{gap:1px}.mining-row{min-height:28px;padding:2px 0;border:0}.mining-label{font-size:.8rem;color:var(--text-dim)}.mining-value{font-size:.86rem}.mining-value.big{font-size:1rem}.mining-status-tag{padding:4px 11px;border-radius:5px}.mining-status-tag.mining{background:rgba(13,108,66,.42);color:#22df89}.mining-status-tag.idle{background:rgba(54,74,99,.25);color:#a9b8ca}.mining-status-tag.done{background:rgba(13,108,66,.42);color:#22df89}
.mining-hash-display{padding:5px 8px;background:transparent;text-align:right;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mining-progress-label{display:flex;justify-content:space-between;margin-top:8px;color:var(--text-dim);font-size:.78rem}.mining-progress-track{height:7px;margin-top:7px;border-radius:8px;background:#122944;overflow:hidden}.mining-progress-fill{height:100%;width:var(--progress,0%);border-radius:8px;background:linear-gradient(90deg,#246eff,#3fc5ff);box-shadow:0 0 10px rgba(55,157,255,.25)}.mining-animate-bar{display:none}
.header-status{padding:5px 11px;border-radius:5px;background:rgba(13,108,66,.42);color:#22df89;font-size:.78rem;font-weight:700}.header-status.idle{background:rgba(58,77,101,.26);color:#a6b5c8}.header-status.mining,.header-status.done{background:rgba(13,108,66,.42);color:#22df89}.header-status.failed{background:rgba(128,31,49,.38);color:#ff6c7d}

/* 区块链 */
.chain-toolbar{display:flex;align-items:center;gap:10px;color:#9aadca;font-size:.71rem}.toggle-switch{width:37px;height:20px;padding:2px;border-radius:12px;background:#2b78f7}.toggle-switch span{display:block;width:16px;height:16px;margin-left:auto;border-radius:50%;background:#fff;box-shadow:0 1px 5px rgba(0,0,0,.4)}.zoom-control{padding:6px 11px;border:1px solid #183753;border-radius:6px;background:#071528}.icon-control{width:31px;height:31px;border:1px solid #183753;border-radius:6px;background:#071528;color:#a8b7cb;cursor:pointer}
.chain-body{padding:14px 15px;overflow:hidden}.chain-scroll-wrapper{height:100%;padding:0 0 9px}.chain-inner{height:100%;align-items:center}
.block-card{position:relative;width:140px;min-width:140px;height:166px;padding:15px 14px 12px;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(145deg,#091b31,#071528);border:2px solid #24b9ff;border-radius:9px;box-shadow:0 0 16px rgba(30,159,255,.06)}
.block-card:hover{transform:translateY(-4px);box-shadow:0 10px 28px rgba(0,0,0,.35),0 0 16px rgba(30,159,255,.14)}.block-card.genesis{border-color:#8f56e9;background:linear-gradient(145deg,rgba(42,25,84,.62),rgba(10,21,40,.98))}.block-card.latest{border-color:#1bd274;box-shadow:0 0 18px rgba(27,210,116,.14)}
.block-badge{align-self:center;margin:-8px 0 7px;padding:2px 10px;border-radius:10px;background:rgba(121,77,215,.35);font-size:.7rem;color:#e1d4ff}.block-card.latest::before{content:'最新';position:absolute;top:8px;right:8px;z-index:1;padding:2px 7px;border-radius:4px;background:#16a866;color:white;font-size:.68rem}.block-index{font-size:1.28rem;text-align:center;margin-bottom:9px}.block-hash-preview{text-align:center;color:#4dbbff;font-size:.75rem;margin-bottom:12px}.block-meta-row{font-size:.72rem;color:#9babc0}.block-time{margin-top:5px;text-align:center;font-size:.72rem;color:var(--text-dim)}
.chain-connector{padding:0 3px}.chain-line{width:21px;background:#2d80ff}.chain-arrow{position:relative;width:16px;height:16px;margin:0;border-radius:50%;background:rgba(31,106,230,.32);color:#50a3ff;font-size:.55rem;display:flex;align-items:center;justify-content:center;box-shadow:0 0 9px rgba(35,126,255,.35)}

/* 状态、日志、活动 */
.sys-row{min-height:27px;padding:2px 0;border:0;font-size:.82rem}.sys-row .lbl{color:var(--text-dim)}.sys-row .val{font-weight:500}.sys-row .val.ok{color:#1edb7f}.sys-row:nth-child(n+8){display:none}
.log-filter-bar{height:39px;display:flex;align-items:flex-end;gap:4px;padding:0 16px;border-bottom:1px solid rgba(22,52,80,.75)}.log-filter{height:31px;padding:0 10px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--text-dim);font-size:.8rem;cursor:pointer}.log-filter.active{color:#b69bff;border-bottom-color:#7753e7;background:linear-gradient(180deg,transparent,rgba(90,60,190,.13))}.log-filter:nth-child(2){color:#4c9dff}.log-filter:nth-child(3){color:#25d6a5}.log-filter:nth-child(4){color:#f4d33e}.log-filter:nth-child(5){color:#ff6878}
.log-body{flex:0 0 auto;max-height:none;padding:6px 16px 12px;overflow:visible}.log-entry{position:relative;min-height:30px;padding:6px 0 6px 20px;gap:9px;border-bottom:1px solid rgba(20,48,75,.34);font-size:.8rem}.log-entry::before{content:'';position:absolute;left:4px;top:14px;width:6px;height:6px;border:1px solid #3a5679;border-radius:50%}.log-entry::after{content:'';position:absolute;left:7px;top:21px;bottom:-9px;width:1px;background:#223b58}.log-entry:last-child::after{display:none}.log-time{color:var(--text-dim)}.log-level{order:3;margin-left:auto}.log-msg{color:#bdc9da}.activity-body{flex:0 0 auto;max-height:none;padding-top:10px;overflow:visible}.activity-item{min-height:43px;padding:8px 0;border:0;gap:5px}.activity-icon{display:none}.activity-time{order:-1;width:48px;font-size:.76rem}.activity-title{font-size:.82rem;color:#e0e9f6}.activity-desc{font-size:.76rem}.activity-item:first-child .activity-title{color:#1ad77d}

/* 对话框和抽屉保持同一视觉语言 */
.modal,.drawer{background:linear-gradient(145deg,#09182d,#061326);border-color:#1d3d5d}.modal-overlay{backdrop-filter:blur(5px)}
.form-row select,.form-row input{background-color:#07172b;border-color:#1d3b59}.sig-preview,.tx-preview,.merkle-proof{background:#07172b}

@media(max-width:1180px){
  body{min-width:900px}.top-bar{padding:0 18px}.top-bar-left{gap:7px}.tb-btn{padding:0 10px;font-size:.72rem}.dash-row-top{grid-template-columns:1fr 1fr;height:auto}.dash-row-top #sectionMining{grid-column:1/-1}.dash-row-chain,.dash-row-bottom{grid-template-columns:1fr 285px}.dashboard{overflow-y:auto;overflow-x:hidden}.dash-row-chain,.dash-row-bottom{height:auto}
}

/* V6.1 — 可交互工具 */
.svg-icon-sprite{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}.ui-icon{width:1em;height:1em;display:inline-block;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.14em}
.nav-icon .ui-icon{width:19px;height:19px}.tb-btn .ui-icon{width:15px;height:15px}.card-icon .ui-icon{width:17px;height:17px}.card-header h3,.modal-header h3,.drawer-title{display:flex;align-items:center;gap:7px}.theme-button{display:flex;align-items:center;gap:3px}.theme-button .ui-icon{width:16px;height:16px}.icon-control{display:flex;align-items:center;justify-content:center}.icon-control .ui-icon{width:15px;height:15px}.card-action.secondary{display:flex;align-items:center;gap:5px}.card-action.secondary .ui-icon{width:13px;height:13px}.log-filter{display:flex;align-items:center;gap:5px}.log-filter .ui-icon{width:13px;height:13px}.status-title .ui-icon{width:14px;height:14px}.wallet-account-icon{display:inline-flex;color:var(--wallet-accent)}.wallet-account-icon .ui-icon{width:13px;height:13px}.wallet-mini-name::before{display:none}
.tab-btn,.drawer-section h4{display:flex;align-items:center;gap:6px}.tab-btn .ui-icon,.drawer-section h4 .ui-icon{width:14px;height:14px}
.toggle-switch{border:0;cursor:pointer;transition:background .2s}.toggle-switch:not(.on){background:#263a53}.toggle-switch:not(.on) span{margin-left:0}.toggle-switch:focus-visible,.zoom-control button:focus-visible,.icon-control:focus-visible,.theme-button:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.zoom-control{height:31px;padding:0;display:flex;align-items:center;overflow:hidden}.zoom-control button{width:27px;height:29px;border:0;background:transparent;color:#8fa1ba;cursor:pointer}.zoom-control button:hover{background:rgba(48,111,182,.18);color:#fff}.zoom-control span{min-width:42px;text-align:center}
#sectionBlockchain.is-fullscreen{position:fixed;inset:16px;z-index:9000;height:auto;min-height:0;background:#061326;box-shadow:0 0 0 100vmax rgba(1,7,17,.88),0 24px 80px rgba(0,0,0,.55)}
#sectionBlockchain.is-fullscreen .chain-body{padding:24px;overflow:hidden}#sectionBlockchain.is-fullscreen .chain-scroll-wrapper{display:flex;align-items:center}#sectionBlockchain.is-fullscreen .chain-inner{min-height:300px}
body.chain-fullscreen-open{overflow:hidden}
.wallet-list-modal{width:760px}.wallet-list-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.wallet-list-item{min-width:0;display:grid;grid-template-columns:42px minmax(0,1fr) auto 18px;align-items:center;gap:10px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-input);color:var(--text-primary);text-align:left;cursor:pointer;transition:.2s}.wallet-list-item:hover{border-color:var(--blue);transform:translateY(-1px);background:var(--bg-hover)}.wallet-list-avatar{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#285cf2,#743ee0);font-weight:800}.wallet-list-main{min-width:0;display:flex;flex-direction:column;gap:3px}.wallet-list-main code{overflow:hidden;text-overflow:ellipsis;color:var(--text-dim);font-size:.62rem}.wallet-list-balance{display:flex;flex-direction:column;align-items:flex-end;white-space:nowrap}.wallet-list-balance strong{color:var(--cyan)}.wallet-list-balance small{color:var(--text-dim);font-size:.62rem}.wallet-list-arrow{color:var(--text-dim);font-size:1.4rem}

/* 浅色主题 */
html[data-theme="light"]{--bg-base:#eef4fb;--bg-sidebar:#f7faff;--bg-card:#fff;--bg-card-alt:#f3f7fc;--bg-input:#f5f8fc;--bg-hover:#eaf2fb;--border:#ccdaea;--border-light:#b9cce1;--text-primary:#132238;--text-secondary:#465b75;--text-dim:#667b96}
html[data-theme="light"] body{background:#eef4fb;color:#132238}
html[data-theme="light"] .sidebar{background:linear-gradient(180deg,#f8fbff,#edf4fb);border-color:#cfdeed;box-shadow:8px 0 28px rgba(46,78,112,.08)}
html[data-theme="light"] .sidebar-brand,html[data-theme="light"] .card-header,html[data-theme="light"] .log-filter-bar{border-color:#d5e1ee}
html[data-theme="light"] .nav-item{color:#52667f}html[data-theme="light"] .nav-item.active{color:#263c79;background:linear-gradient(90deg,rgba(80,98,238,.17),rgba(124,78,210,.11))}
html[data-theme="light"] .sidebar-status,html[data-theme="light"] .dash-card,html[data-theme="light"] .modal,html[data-theme="light"] .drawer{background:#fff;border-color:#cbdbea;box-shadow:0 8px 24px rgba(54,85,118,.09)}
html[data-theme="light"] .main-area{background:linear-gradient(180deg,#f4f8fd,#edf3f9)}html[data-theme="light"] .top-bar{background:rgba(247,250,255,.96);border-color:#d4e1ee}
html[data-theme="light"] .auto-refresh-pill,html[data-theme="light"] .theme-button,html[data-theme="light"] .tb-btn-outline,html[data-theme="light"] .tb-btn-warning-outline,html[data-theme="light"] .zoom-control,html[data-theme="light"] .icon-control{background:#fff;border-color:#c8d8e8;color:#344a65}
html[data-theme="light"] .wallet-mini,html[data-theme="light"] .block-card,html[data-theme="light"] .pool-summary{background:linear-gradient(145deg,#fff,#f1f6fb);border-color:#cadbea}html[data-theme="light"] .wallet-mini-balance,html[data-theme="light"] .block-index{color:#15263d}
html[data-theme="light"] .block-card.genesis{background:linear-gradient(145deg,#f4efff,#fff)}html[data-theme="light"] .log-msg,html[data-theme="light"] .activity-title{color:#425873}
html[data-theme="light"] #sectionBlockchain.is-fullscreen{background:#eef4fb;box-shadow:0 0 0 100vmax rgba(216,226,237,.9),0 24px 80px rgba(30,57,85,.22)}
html[data-theme="light"] .card-header h3,html[data-theme="light"] .wallet-mini-name,html[data-theme="light"] .mining-value,html[data-theme="light"] .sys-row .val,html[data-theme="light"] .activity-title,html[data-theme="light"] .modal-header h3{color:#182b43}
html[data-theme="light"] .header-count,html[data-theme="light"] .mining-label,html[data-theme="light"] .mining-progress-label,html[data-theme="light"] .chain-toolbar,html[data-theme="light"] .pool-summary,html[data-theme="light"] .activity-time{color:#667b96}
html[data-theme="light"] .pool-summary strong,html[data-theme="light"] .pool-table td,html[data-theme="light"] .log-time{color:#263b54}html[data-theme="light"] .pool-summary .reward{color:#ad7a00}
html[data-theme="light"] .mining-progress-track{background:#dbe6f1}html[data-theme="light"] .block-hash-preview{color:#1775b6}html[data-theme="light"] .block-meta-row,html[data-theme="light"] .block-time{color:#687d98}
html[data-theme="light"] .log-entry{border-color:#dce6f0}html[data-theme="light"] .log-entry::after{background:#cbd9e7}html[data-theme="light"] .status-title{color:#273c55}
html[data-theme="light"] .status-text,html[data-theme="light"] .status-row{color:#5e738e}html[data-theme="light"] .status-row span:last-child{color:#233b57}html[data-theme="light"] .header-status.idle{background:#e4ebf3;color:#526981}
@media(max-width:760px){.wallet-list-grid{grid-template-columns:1fr}}

/* V6.3 — 可读性与长字段展示 */
:root{--font-sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;--font-mono:ui-monospace,"SFMono-Regular",Menlo,Monaco,Consolas,"Liberation Mono",monospace}
html,body{font-family:var(--font-sans);font-size:15px;line-height:1.55;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit}code,.mining-value,.wallet-mini-addr,.block-hash-preview,.detail-value,.log-time{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.card-header h3{font-size:1.02rem}.tb-btn{font-size:.84rem}.card-action,.chain-toolbar{font-size:.8rem}
.auto-refresh-pill{white-space:nowrap;flex-shrink:0}.top-bar-right,.theme-button{flex-shrink:0}
.wallet-mini-name{font-size:.88rem}.wallet-mini-addr{font-size:.78rem}.wallet-untrusted-badge{font-size:.68rem}.pool-table{font-size:.8rem}.pool-table th{font-size:.76rem}.pool-table td:first-child code{font-size:.78rem}
.mining-label{font-size:.8rem}.mining-value{font-size:.86rem}.mining-hash-display{font-size:.78rem;line-height:1.55;white-space:normal;overflow-wrap:anywhere;word-break:break-all}
.block-hash-preview{font-size:.75rem}.block-meta-row{font-size:.72rem}.block-time{font-size:.72rem}.block-badge{font-size:.7rem}.block-card.latest::before{font-size:.68rem}
.sys-row{font-size:.82rem}.log-filter{font-size:.8rem}.log-entry{font-size:.8rem;line-height:1.55}.log-level{font-size:.72rem}.activity-title{font-size:.82rem}.activity-desc,.activity-time{font-size:.76rem}
.modal-large{width:760px}.modal-header h3{font-size:1.02rem}.modal-body{padding:20px 22px}.tab-btn{font-size:.86rem;padding:10px 17px}
.block-detail{gap:2px}.detail-row{display:grid;grid-template-columns:minmax(112px,.28fr) minmax(0,1fr);gap:16px;align-items:start;padding:10px 0;font-size:.88rem}.detail-label{margin:0;line-height:1.6}.detail-value{min-width:0;font-size:.82rem;line-height:1.65;text-align:right;overflow-wrap:anywhere;word-break:break-word}
.detail-tx-table{font-size:.8rem}.detail-tx-table th{font-size:.75rem;padding:9px 8px}.detail-tx-table td{padding:9px 8px}
.copyable-code{width:100%;min-width:0;display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:rgba(8,29,52,.72);color:var(--text-primary);text-align:left;cursor:pointer;transition:border-color .2s,background .2s}
.copyable-code:hover,.copyable-code:focus-visible{border-color:var(--cyan);background:rgba(15,45,73,.84);outline:none}.copyable-code code{flex:1;min-width:0;font-size:.78rem;line-height:1.65;color:inherit;white-space:normal;overflow-wrap:anywhere;word-break:break-all}.copy-hint{flex:none;padding:2px 6px;border-radius:4px;background:rgba(47,128,255,.13);color:var(--blue);font-family:var(--font-sans);font-size:.7rem;font-weight:700}
.hash-detail-row .detail-value{width:100%}
.drawer{width:460px}.drawer-title{font-size:1.12rem}.drawer-body{padding:20px 22px}.drawer-section{margin-bottom:22px}.drawer-section h4{font-size:.86rem;margin-bottom:12px;padding-bottom:9px;text-transform:none;letter-spacing:.02em}.drawer-info-row{min-height:42px;padding:8px 0;font-size:.88rem;gap:16px}.drawer-info-row .lbl{font-size:.84rem;line-height:1.5}.drawer-info-row .val{max-width:270px;font-size:.84rem;line-height:1.55;overflow:visible;text-overflow:clip;white-space:normal;text-align:right}.drawer-info-row .val.balance-big{font-size:1.28rem}.drawer-info-row.long-value-row,.tx-detail-row.long-value-row{display:block;padding:11px 0}.long-value-row>.lbl{display:block;margin-bottom:7px}.drawer-info-row.long-value-row .val,.tx-detail-row.long-value-row .val{display:block;max-width:none;width:100%;text-align:left}.custody-notice{font-size:.82rem;padding:11px 13px}.drawer-tx-item{font-size:.82rem;padding:10px 12px}.drawer-tx-dir,.drawer-tx-amount{font-size:.8rem}.drawer-tx-meta{font-size:.74rem}
.tx-detail-grid{gap:2px}.tx-detail-row{min-height:42px;padding:9px 0;font-size:.87rem;gap:16px}.tx-detail-row .lbl{color:var(--text-dim);flex:none}.tx-detail-row .val{min-width:0;text-align:right;overflow-wrap:anywhere;word-break:break-word}.tx-detail-row.long-value-row .copyable-code{margin-top:2px}
.sig-preview{font-size:.8rem;line-height:1.65;padding:12px 14px}.sig-preview-title{display:flex;align-items:center;gap:6px;margin-bottom:5px;font-weight:700}.sig-address-line{display:flex;flex-direction:column;gap:5px;margin:8px 0}.sig-preview .copyable-code code{font-size:.75rem}
.merkle-tree{gap:18px;padding:12px 0}.merkle-node{max-width:210px;padding:8px 12px;font-size:.72rem}.merkle-root-summary{margin-top:14px;padding:14px;border:1px solid var(--border);border-radius:8px;background:rgba(6,22,42,.72)}.merkle-root-status{margin-bottom:12px;text-align:center;font-size:.86rem;font-weight:700}.merkle-root-status.valid{color:var(--green)}.merkle-root-status.invalid{color:var(--red)}.merkle-root-row{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:start;gap:12px;margin-top:9px;color:var(--text-secondary);font-size:.8rem}.merkle-root-warning{margin-top:10px;color:var(--red);font-size:.78rem;line-height:1.6}.merkle-proof{font-size:.8rem;padding:14px}.merkle-proof-path{display:flex;flex-direction:column;gap:7px;color:var(--text-secondary)}.merkle-proof-step{display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px;align-items:start}.merkle-proof-step code{font-size:.74rem;line-height:1.6;overflow-wrap:anywhere;word-break:break-all}.merkle-proof-roots{display:flex;flex-direction:column;gap:9px;margin-top:12px}.merkle-proof-roots>div>span{display:block;margin-bottom:5px;color:var(--text-secondary);font-size:.78rem}
html[data-theme="light"] .copyable-code,html[data-theme="light"] .merkle-root-summary{background:#f3f7fc}
@media(max-width:1450px){.top-bar{padding-left:16px;padding-right:16px;gap:8px}.top-bar-left{gap:6px}.tb-btn{padding-left:10px;padding-right:10px;font-size:.78rem}.auto-refresh-pill{padding-left:9px;padding-right:9px;font-size:.76rem}.wallet-mini{padding-left:9px;padding-right:9px}.wallet-mini-balance{font-size:1.05rem}}
@media(max-width:760px){html,body{font-size:14px}.modal-body{padding:16px}.detail-row{grid-template-columns:1fr;gap:5px}.detail-value{text-align:left}.drawer{width:min(460px,94vw)}.merkle-root-row{grid-template-columns:1fr;gap:5px}}

/* V6.4 — 固定高度卡片的滚动边界 */
#sectionWallet .card-body{overflow:hidden}
#sectionWallet .card-body{display:flex;flex-direction:column;gap:10px}#sectionWallet .card-body>.chain-invalid-warn{flex:none;margin-bottom:0}
#sectionWallet .wallet-grid-3x2{flex:1;min-height:0;height:auto;grid-template-rows:repeat(2,minmax(0,1fr));align-content:stretch}
.wallet-mini{min-height:0}.wallet-mini-meta{display:flex;align-items:center;gap:7px;min-width:0}.wallet-mini-meta .wallet-mini-addr{flex:1;min-width:0}.wallet-mini-available{flex:none;white-space:nowrap;color:var(--text-secondary);font-family:var(--font-mono);font-size:.72rem}
#sectionPool .card-body{overflow:hidden}
#sectionPool .pool-table-wrap{height:100%;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.pool-table-scroll{flex:1;min-height:0;overflow-x:auto;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.pool-table-scroll:focus-visible{outline:1px solid var(--blue);outline-offset:-1px;border-radius:5px}
.pool-table-scroll.empty{display:flex;flex-direction:column;overflow:hidden}.pool-table-scroll.empty .pool-empty{flex:1;min-height:0}
.pool-table-scroll .pool-table{min-width:100%}.pool-table-scroll .pool-table thead{position:sticky;top:0;z-index:2;background:#071528}.pool-table-scroll .pool-empty{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}
#sectionPool .pool-summary{flex:none;margin-top:8px;position:relative;z-index:3}
html[data-theme="light"] .pool-table-scroll .pool-table thead{background:#fff}

/* V6.5 — 区块默认缩放与顶部安全间距 */
#sectionBlockchain .chain-body{padding-top:18px;padding-bottom:12px}
#sectionBlockchain .chain-scroll-wrapper{padding-top:7px;padding-bottom:12px}
#sectionBlockchain .chain-inner{align-items:center}

/* V7.0 — 浏览器非托管账户演示 */
.wallet-header-actions{display:flex;align-items:center;gap:12px}.wallet-header-actions .card-action{background:none;border:0;cursor:pointer}.wallet-header-actions .card-action:disabled{opacity:.42;cursor:not-allowed}
.wallet-create-modal{width:min(860px,94vw)}.wallet-create-action{display:flex;justify-content:flex-end;margin:-4px 0 14px}
.wallet-derivation{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;align-items:center;gap:8px;margin:8px 0 16px}.wallet-derivation span{padding:10px 8px;border:1px solid var(--border);border-radius:7px;background:var(--bg-input);color:var(--text-secondary);font-weight:700;text-align:center}.wallet-derivation b{color:var(--blue)}.wallet-derivation.active span{border-color:rgba(56,189,248,.5);color:var(--cyan);box-shadow:0 0 16px rgba(56,189,248,.08)}
.wallet-derivation.animating span{position:relative;display:flex;align-items:center;justify-content:center;gap:7px;transition:border-color .25s,color .25s,background .25s,box-shadow .25s,transform .25s}.wallet-derivation.animating span i{display:inline-flex;width:19px;height:19px;align-items:center;justify-content:center;border-radius:50%;background:#18324f;color:#8fa3bd;font-size:.68rem;font-style:normal}.wallet-derivation.animating span em{font-style:normal}.wallet-derivation.animating span.current{border-color:var(--cyan);color:var(--cyan);background:rgba(34,201,255,.08);box-shadow:0 0 20px rgba(34,201,255,.14);transform:translateY(-2px)}.wallet-derivation.animating span.current i{background:var(--blue);color:#fff;animation:wallet-step-pulse .7s ease infinite alternate}.wallet-derivation.animating span.done{border-color:rgba(34,197,94,.55);color:var(--green);background:rgba(34,197,94,.06)}.wallet-derivation.animating span.done i{background:var(--green);color:#052114}.wallet-animation-status{min-height:24px;text-align:center;color:var(--cyan);font-size:.82rem}.wallet-animation-progress{height:5px;margin:9px 0 18px;border-radius:6px;background:#122944;overflow:hidden}.wallet-animation-progress span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#347df1,#22c9ff,#22c55e);box-shadow:0 0 10px rgba(34,201,255,.28);transition:width .38s ease}@keyframes wallet-step-pulse{from{box-shadow:0 0 0 0 rgba(52,125,241,.25)}to{box-shadow:0 0 0 7px rgba(52,125,241,0)}}
.wallet-algorithm-visual{min-height:245px}.algorithm-stage-card{padding:15px 17px;border:1px solid #1b3d5c;border-radius:8px;background:linear-gradient(145deg,rgba(8,29,52,.94),rgba(6,22,42,.94));animation:algorithm-card-in .28s ease}.algorithm-stage-title{margin-bottom:9px;color:#eef6ff;font-weight:700}.algorithm-formula{display:block;padding:9px 11px;border-left:3px solid var(--cyan);border-radius:4px;background:rgba(34,201,255,.07);color:var(--cyan);font-size:.8rem;overflow-wrap:anywhere;word-break:break-all}.algorithm-formula.second{margin-top:12px}.algorithm-note{margin:9px 0;color:var(--text-secondary);font-size:.76rem;line-height:1.6}.algorithm-note.warning{color:var(--yellow)}.algorithm-value{display:grid;grid-template-columns:92px minmax(0,1fr);gap:10px;align-items:start;margin-top:8px;color:var(--text-dim);font-size:.74rem}.algorithm-value code{padding:5px 8px;border-radius:4px;background:rgba(3,13,27,.65);color:#c9d8ec;line-height:1.55;overflow-wrap:anywhere;word-break:break-all}.algorithm-value.subtle{opacity:.72}.algorithm-value mark{border-radius:3px;background:rgba(34,197,94,.18);color:var(--green)}.algorithm-pseudocode{margin:9px 0;padding:9px 12px;border-radius:6px;background:#03101f;color:#8fcaff;font: .72rem/1.55 var(--font-mono)}.scalar-progress{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;margin:9px 0;padding:8px 10px;border:1px solid rgba(52,125,241,.3);border-radius:6px;color:#8fa3bd;font-size:.7rem}.scalar-progress code{color:var(--cyan);text-align:center;overflow-wrap:anywhere}.algorithm-address{margin-top:11px;padding:10px;border:1px solid rgba(34,197,94,.38);border-radius:6px;background:rgba(34,197,94,.07);color:var(--green);font:700 .9rem var(--font-mono);text-align:center;overflow-wrap:anywhere}.wallet-algorithm-summary{margin:12px 0;border:1px solid #1b3d5c;border-radius:8px;background:rgba(5,20,38,.65)}.wallet-algorithm-summary summary{padding:10px 13px;color:var(--cyan);font-size:.82rem;font-weight:700;cursor:pointer}.algorithm-summary-grid{display:grid;grid-template-columns:105px minmax(0,1fr);gap:7px 11px;padding:0 13px 12px;color:var(--text-dim);font-size:.72rem}.algorithm-summary-grid code{color:#c9d8ec;overflow-wrap:anywhere;word-break:break-all}.algorithm-summary-rule{padding:10px 13px;border-top:1px solid var(--border);color:var(--yellow);font-size:.72rem;overflow-wrap:anywhere}.replay-algorithm{float:right;margin-left:10px;color:var(--cyan);border-color:rgba(34,201,255,.35)}@keyframes algorithm-card-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.wallet-algorithm-controls{display:flex;align-items:center;justify-content:center;gap:9px;margin-top:14px;padding-top:13px;border-top:1px solid var(--border)}.wallet-algorithm-controls button{min-width:82px}.wallet-algorithm-controls span{min-width:52px;padding:6px 9px;border-radius:999px;background:rgba(52,125,241,.1);color:var(--text-secondary);font:700 .72rem var(--font-mono);text-align:center}.wallet-algorithm-controls .wallet-algorithm-auto{margin-left:8px;border-color:rgba(34,201,255,.4);color:var(--cyan);background:rgba(34,201,255,.08)}.wallet-algorithm-controls button:disabled{opacity:.38;cursor:not-allowed}
.creation-placeholder{padding:20px;border:1px dashed var(--border);border-radius:8px;color:var(--text-secondary);line-height:1.7;text-align:center}.creation-explain{margin-bottom:14px;padding:11px 13px;border-left:3px solid var(--blue);border-radius:5px;background:rgba(59,130,246,.08);color:var(--text-secondary);font-size:.82rem;line-height:1.65}
.creation-field{display:block;margin-top:12px;color:var(--text-secondary);font-size:.82rem}.creation-field>.copyable-code{margin-top:6px}.private-field{color:var(--yellow)}.private-key-box{display:flex;align-items:flex-start;gap:7px;margin-top:6px;padding:9px 10px;border:1px solid rgba(245,158,11,.38);border-radius:7px;background:rgba(245,158,11,.06)}.private-key-box code{flex:1;min-width:0;color:var(--text-primary);font-family:var(--font-mono);font-size:.76rem;line-height:1.6;overflow-wrap:anywhere;word-break:break-all}.private-key-warning{margin-top:8px;color:var(--yellow);font-size:.78rem;line-height:1.55}
@media(max-width:760px){.wallet-derivation{grid-template-columns:1fr}.wallet-derivation b{transform:rotate(90deg);text-align:center}.wallet-header-actions{gap:6px}.wallet-header-actions .card-action{font-size:.7rem}.wallet-algorithm-controls{flex-wrap:wrap}.wallet-algorithm-controls .wallet-algorithm-auto{margin-left:0}.scalar-progress{grid-template-columns:1fr;text-align:center}}
html[data-theme="light"] .creation-placeholder,html[data-theme="light"] .wallet-derivation span{background:#f6f9fc}

/* V7.1 — 教学私钥备份与明确的后端连接提示 */
.stored-private-key{display:flex;flex-direction:column;align-items:flex-start;gap:7px}.stored-private-key small{color:var(--yellow);font-size:.74rem}.stored-private-key .copyable-code{width:100%}

/* V7.2 — 后端离线与浏览器密钥同步防护 */
.backend-offline-banner{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:14px;padding:11px 15px;border:1px solid rgba(239,68,68,.55);border-radius:8px;background:rgba(85,18,29,.96);box-shadow:0 8px 28px rgba(0,0,0,.35);color:#ffd8dc}.backend-offline-banner strong{flex:none;color:#ff6675}.backend-offline-banner span{font-size:.82rem;line-height:1.5}.form-error .btn-sm{margin-left:8px;border-color:rgba(239,68,68,.45);color:var(--text-primary)}
html[data-theme="light"] .backend-offline-banner{background:#fff0f1;color:#7d2630}

/* V7.4 — 创建账户过程动画与异常链布局边界 */
#sectionBlockchain .chain-scroll-wrapper{display:flex;flex-direction:column;gap:8px}
#sectionBlockchain .chain-scroll-wrapper>.chain-invalid-summary{flex:none;margin:0;padding:8px 12px}
#sectionBlockchain .chain-scroll-wrapper>.chain-inner{flex:1;min-height:166px;height:auto}
#sectionBlockchain.is-fullscreen .chain-scroll-wrapper{align-items:stretch}

/* V7.8 — 中等宽度桌面响应式布局 */
@media(max-width:1450px){
  .dash-row-top{height:auto;min-height:0;flex:none;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);grid-template-rows:minmax(280px,auto) minmax(280px,auto)}
  .dash-row-top.has-chain-warning{height:auto;min-height:0;grid-template-rows:minmax(340px,auto) minmax(280px,auto)}
  .dash-row-top #sectionMining{grid-column:1/-1}
  .dash-row-top #sectionMining .mining-grid{height:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:center;column-gap:32px;row-gap:4px}
  .dash-row-top #sectionMining .mining-progress-label,.dash-row-top #sectionMining .mining-progress-track,.dash-row-top #sectionMining .chain-invalid-warn{grid-column:1/-1}
}
@media(max-width:1320px){
  :root{--sidebar-width:200px}
  .sidebar-brand{padding-left:14px;padding-right:14px;gap:10px}
  .brand-title{font-size:1rem}.nav-item{padding-left:16px;padding-right:16px}
}
@media(max-width:1080px){
  :root{--sidebar-width:76px}
  .sidebar-brand{justify-content:center;padding-left:0;padding-right:0}.brand-text,.sidebar-status{display:none}
  .sidebar-nav{padding-left:8px;padding-right:8px}.nav-item{justify-content:center;padding:0;gap:0}.nav-label{display:none}.nav-icon{width:22px}
}

/* V8.2 — 稳定仪表盘卡片尺寸，并限制无上限列表在卡片内滚动 */
.dash-row-top{height:280px;min-height:280px;max-height:280px}
.dash-row-top.has-chain-warning{height:340px;min-height:340px;max-height:340px}
.dash-row-chain{height:250px;min-height:250px;max-height:250px}
.dash-row-chain.has-chain-warning{height:310px;min-height:310px;max-height:310px}
.dash-row-bottom{height:340px;min-height:340px;max-height:340px}
.log-body,.activity-body{flex:1 1 auto;min-height:0;max-height:none;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}
.log-body{padding:6px 16px 12px}.activity-body{padding-top:10px}
@media(max-width:1450px){
  .dash-row-top{height:576px;min-height:576px;max-height:576px;grid-template-rows:280px 280px}
  .dash-row-top.has-chain-warning{height:636px;min-height:636px;max-height:636px;grid-template-rows:340px 280px}
}

/* V8.3 — 顶部教学主流程：初始化 → 交易 → 挖矿 → 校验 */
.flow-step{position:relative;padding-left:12px}
.flow-step::before{content:attr(data-step);display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;flex:none;border:1px solid currentColor;border-radius:50%;font:700 .68rem/1 var(--font-mono);opacity:.8}
.flow-step>.ui-icon{display:none}
.flow-step:disabled::before{opacity:.55}
@media(max-width:1450px){.flow-step{padding-left:9px;padding-right:9px}.flow-step::before{width:16px;height:16px;font-size:.62rem}}

/* V8.4 — 将安全实验与正常教学流程分区 */
.top-learning-actions,.top-security-actions{display:flex;align-items:center;gap:6px;min-width:0}
.top-security-actions{height:41px;margin-left:4px;padding:4px 5px 4px 10px;border-left:1px solid rgba(245,158,11,.34);border-radius:0 7px 7px 0;background:linear-gradient(90deg,rgba(245,158,11,.055),rgba(245,158,11,.015))}
.security-group-label{display:flex;align-items:center;gap:5px;flex:none;color:#e7b74b;font-size:.69rem;font-weight:700;white-space:nowrap}.security-group-label .ui-icon{width:14px;height:14px}
.top-security-actions .tb-btn{height:31px;padding-left:9px;padding-right:9px;border-color:rgba(245,158,11,.3);background:rgba(68,45,12,.22);color:#f3d58b;font-size:.74rem}
.top-reset-action{margin-left:2px;padding-left:10px;padding-right:10px}
@media(max-width:1450px){.top-security-actions{gap:4px;padding-left:7px}.security-group-label{font-size:.65rem}.top-security-actions .tb-btn{padding-left:7px;padding-right:7px;font-size:.7rem}.top-reset-action{padding-left:8px;padding-right:8px}}

/* V8.5 — 系统状态统一使用线性图标 */
.sys-chain-state{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px}.sys-chain-state .ui-icon{width:15px;height:15px}

/* V8.6 — 随链状态变化的下一步教学引导 */
.next-step-guide{display:flex;flex-direction:column;gap:5px;margin-bottom:11px;padding:10px 11px;border:1px solid rgba(52,125,241,.34);border-radius:7px;background:linear-gradient(145deg,rgba(52,125,241,.12),rgba(34,201,255,.045))}.next-step-label{color:#7e9fc8;font-size:.67rem;font-weight:700;letter-spacing:.04em}.next-step-guide strong{color:#f0f6ff;font-size:.84rem}.next-step-reason{color:#a8b9ce;font-size:.7rem;line-height:1.55}.status-info{padding-top:9px;border-top:1px solid rgba(45,73,105,.48)}
.tb-btn.is-recommended:not(:disabled){border-color:#55a4ff;box-shadow:0 0 0 1px rgba(85,164,255,.32),0 0 18px rgba(47,128,255,.22);animation:recommended-step-pulse 1.8s ease-in-out infinite}.top-reset-action.is-recommended:not(:disabled){border-color:#ff6675;box-shadow:0 0 0 1px rgba(255,102,117,.3),0 0 18px rgba(239,68,68,.2)}
@keyframes recommended-step-pulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.15)}}
html[data-theme="light"] .next-step-guide{background:linear-gradient(145deg,#edf5ff,#f5fbff);border-color:#b9d5f3}html[data-theme="light"] .next-step-guide strong{color:#17304e}html[data-theme="light"] .next-step-reason{color:#506985}
@media(prefers-reduced-motion:reduce){.tb-btn.is-recommended:not(:disabled){animation:none}}
