/* 页面骨架：外壳、顶栏、三栏布局、面板 */
.shell {
  width: min(2260px, calc(100vw - 28px));
  margin: 0 auto;
  padding: 12px 0 20px;
  display: grid;
  gap: 10px;
}

.panel {
  background: var(--bg-1);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 12px;
}
.panel > .head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 26px;
  margin-bottom: 10px;
}

/* 顶栏 */
.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.brand-lockup {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 10px;
}
.brand-logo {
  width: 70px;
  height: 56px;
  object-fit: contain;
  flex: none;
  filter: drop-shadow(0 8px 18px rgba(0, 0, 0, 0.34));
}
.brand-copy { min-width: 0; }
.brand-title {
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: 6px;
  line-height: 1;
  white-space: nowrap;
}
.brand-title-main {
  font-size: 34px;
  font-weight: 900;
  letter-spacing: 0;
  color: #ffd07a;
}
.brand-title-tail {
  font-size: 20px;
  font-weight: 750;
  letter-spacing: 0;
  color: var(--ink-0);
}
.topbar .subtitle { margin-top: 5px; color: var(--ink-1); }
.topbar-meta {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: nowrap;
  min-width: 0;
}
.workspace-nav {
  flex: none;
  display: inline-grid;
  grid-auto-flow: column;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg-0);
}
.workspace-link {
  min-width: 74px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 10px;
  border-radius: 4px;
  color: var(--ink-1);
  text-decoration: none;
  font-weight: 650;
  white-space: nowrap;
}
.workspace-link:hover {
  background: var(--bg-3);
  color: var(--ink-0);
}
.workspace-link.active {
  background: var(--accent-dim);
  color: var(--accent-strong);
}
.topbar-control,
.topbar-readout {
  display: flex;
  align-items: center;
  gap: 6px;
  height: 28px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg-0);
  color: var(--ink-1);
  white-space: nowrap;
}
.topbar-control {
  padding: 0 4px 0 9px;
}
.topbar-control select {
  width: 76px;
  height: 22px;
  min-height: 22px;
  padding: 0 18px 0 7px;
}
.topbar-readout {
  min-width: 116px;
  justify-content: space-between;
  padding: 0 9px;
}
.topbar-readout strong {
  color: var(--ink-0);
  font-weight: 700;
}
.network-identity {
  min-width: 112px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 9px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  font-weight: 750;
  white-space: nowrap;
}
.network-identity.is-unknown {
  color: var(--warn);
  background: var(--warn-dim);
  border-color: var(--warn);
}
.network-identity.is-devnet {
  color: var(--accent-strong);
  background: var(--accent-dim);
  border-color: var(--accent);
}
.network-identity.is-mainnet {
  color: var(--up);
  background: var(--up-dim);
  border-color: var(--up);
}
.execution-sound-toggle {
  flex: none;
  width: 28px;
  min-width: 28px;
  height: 28px;
  padding: 0;
}
.execution-sound-toggle .control-icon {
  width: 15px;
  height: 15px;
}
.execution-sound-toggle.active {
  border-color: var(--accent);
  color: var(--accent-strong);
  background: var(--accent-dim);
}
.execution-sound-toggle.playback-error {
  border-color: var(--down);
  color: var(--down);
}

.conn-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--ink-2);
}
.conn-dot.ok { background: var(--up); }
.conn-dot.connecting, .conn-dot.reconnecting { background: var(--warn); }
.conn-dot.bad { background: var(--down); }

/* 三栏布局 */
.terminal-layout {
  display: grid;
  grid-template-columns: minmax(260px, 0.62fr) minmax(680px, 1.85fr) minmax(320px, 0.8fr);
  gap: 10px;
  align-items: start;
}
.terminal-left, .terminal-right { display: grid; gap: 10px; min-width: 0; }
.terminal-center { min-width: 0; }

/* 地址分析工作区 */
.address-workspace {
  width: min(2060px, calc(100vw - 28px));
}
.address-workspace .brand-title {
  line-height: 1.2;
  padding-bottom: 2px;
}
.address-query-panel {
  padding: 10px 12px;
}
.address-query-form {
  display: grid;
  grid-template-columns: minmax(520px, 1fr) 116px 92px 104px;
  align-items: end;
  gap: 8px;
}
.address-analysis-layout {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-template-areas:
    "verdict verdict"
    "style   cadence"
    "scale   cost"
    "details details";
  gap: 10px;
  align-items: start;
}
.address-verdict-panel { grid-area: verdict; min-width: 0; }
.follow-chart-card.card-style { grid-area: style; min-width: 0; }
.follow-chart-card.card-cadence { grid-area: cadence; min-width: 0; }
.follow-chart-card.card-scale { grid-area: scale; min-width: 0; }
.follow-chart-card.card-cost { grid-area: cost; min-width: 0; }
.address-details-panel { grid-area: details; min-width: 0; }

/* 钱包工作区 */
.wallet-workspace {
  width: min(2060px, calc(100vw - 28px));
}
.wallet-layout {
  display: grid;
  grid-template-columns: minmax(420px, 0.72fr) minmax(760px, 1.4fr);
  gap: 10px;
  align-items: start;
}
.wallet-list-panel { min-width: 0; }

.architecture-workspace {
  width: min(2200px, calc(100vw - 28px));
}

/* 架构工作区 */
.architecture-layout {
  display: grid;
  gap: 10px;
  align-items: start;
}
.architecture-page-shell {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
}
.architecture-page-content {
  min-width: 0;
}
.architecture-overview-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.18fr) minmax(0, 0.82fr);
  gap: 10px;
  align-items: start;
}
.architecture-glossary-layout {
  grid-template-columns: minmax(0, 1fr);
}
.architecture-system-layout {
  grid-template-columns: minmax(0, 1fr);
}
