/* ============================================
   Material Design 3 · DeepSeek2API Dashboard
   ============================================ */

/* ----- 设计令牌 (Design Tokens) ----- */
:root {
  /* 亮色主题 */
  --md-sys-color-primary: #6750A4;
  --md-sys-color-on-primary: #FFFFFF;
  --md-sys-color-primary-container: #EADDFF;
  --md-sys-color-on-primary-container: #21005D;

  --md-sys-color-secondary: #625B71;
  --md-sys-color-on-secondary: #FFFFFF;
  --md-sys-color-secondary-container: #E8DEF8;
  --md-sys-color-on-secondary-container: #1D192B;

  --md-sys-color-tertiary: #7D5260;
  --md-sys-color-on-tertiary: #FFFFFF;
  --md-sys-color-tertiary-container: #FFD8E4;
  --md-sys-color-on-tertiary-container: #31111D;

  --md-sys-color-error: #B3261E;
  --md-sys-color-on-error: #FFFFFF;
  --md-sys-color-error-container: #F9DEDC;
  --md-sys-color-on-error-container: #410E0B;

  --md-sys-color-surface: #FFFBFE;
  --md-sys-color-on-surface: #1C1B1F;
  --md-sys-color-surface-variant: #E7E0EC;
  --md-sys-color-on-surface-variant: #49454F;
  --md-sys-color-outline: #79747E;
  --md-sys-color-outline-variant: #CAC4D0;

  --md-sys-color-background: #FFFBFE;
  --md-sys-color-on-background: #1C1B1F;

  --md-sys-color-surface-container-low: #F7F2FA;
  --md-sys-color-surface-container: #F3EDF7;
  --md-sys-color-surface-container-high: #ECE6F0;

  /* 高度 (Elevation) */
  --md-elevation-level0: none;
  --md-elevation-level1: 0 1px 2px 0 rgba(0,0,0,.3), 0 1px 3px 1px rgba(0,0,0,.15);
  --md-elevation-level2: 0 1px 2px 0 rgba(0,0,0,.3), 0 2px 6px 2px rgba(0,0,0,.15);
  --md-elevation-level3: 0 1px 3px 0 rgba(0,0,0,.3), 0 4px 8px 3px rgba(0,0,0,.15);

  /* 圆角 */
  --md-shape-corner-extra-small: 4px;
  --md-shape-corner-small: 8px;
  --md-shape-corner-medium: 12px;
  --md-shape-corner-large: 16px;
  --md-shape-corner-extra-large: 28px;
  --md-shape-corner-full: 999px;

  /* 字体 */
  --md-typescale-display-small: 400 2.25rem / 2.75rem Roboto, sans-serif;
  --md-typescale-headline-medium: 400 1.75rem / 2.25rem Roboto, sans-serif;
  --md-typescale-title-large: 400 1.375rem / 1.75rem Roboto, sans-serif;
  --md-typescale-title-medium: 500 1rem / 1.5rem Roboto, sans-serif;
  --md-typescale-title-small: 500 .875rem / 1.25rem Roboto, sans-serif;
  --md-typescale-body-large: 400 1rem / 1.5rem Roboto, sans-serif;
  --md-typescale-body-medium: 400 .875rem / 1.25rem Roboto, sans-serif;
  --md-typescale-body-small: 400 .75rem / 1rem Roboto, sans-serif;
  --md-typescale-label-large: 500 .875rem / 1.25rem Roboto, sans-serif;
  --md-typescale-label-medium: 500 .75rem / 1rem Roboto, sans-serif;
  --md-typescale-label-small: 500 .6875rem / 1rem Roboto, sans-serif;

  --transition-standard: 200ms cubic-bezier(0.2, 0, 0, 1);
}

/* 暗色主题 */
@media (prefers-color-scheme: dark) {
  :root {
    --md-sys-color-primary: #D0BCFF;
    --md-sys-color-on-primary: #381E72;
    --md-sys-color-primary-container: #4F378B;
    --md-sys-color-on-primary-container: #EADDFF;

    --md-sys-color-secondary: #CCC2DC;
    --md-sys-color-on-secondary: #332D41;
    --md-sys-color-secondary-container: #4A4458;
    --md-sys-color-on-secondary-container: #E8DEF8;

    --md-sys-color-tertiary: #EFB8C8;
    --md-sys-color-on-tertiary: #492532;
    --md-sys-color-tertiary-container: #633B48;
    --md-sys-color-on-tertiary-container: #FFD8E4;

    --md-sys-color-error: #F2B8B5;
    --md-sys-color-on-error: #601410;
    --md-sys-color-error-container: #8C1D18;
    --md-sys-color-on-error-container: #F9DEDC;

    --md-sys-color-surface: #1C1B1F;
    --md-sys-color-on-surface: #E6E1E5;
    --md-sys-color-surface-variant: #49454F;
    --md-sys-color-on-surface-variant: #CAC4D0;
    --md-sys-color-outline: #938F99;
    --md-sys-color-outline-variant: #49454F;

    --md-sys-color-background: #1C1B1F;
    --md-sys-color-on-background: #E6E1E5;

    --md-sys-color-surface-container-low: #242329;
    --md-sys-color-surface-container: #2B2930;
    --md-sys-color-surface-container-high: #36343B;

    --md-elevation-level1: 0 1px 2px 0 rgba(0,0,0,.3), 0 1px 3px 1px rgba(0,0,0,.15);
    --md-elevation-level2: 0 1px 2px 0 rgba(0,0,0,.3), 0 2px 6px 2px rgba(0,0,0,.15);
    --md-elevation-level3: 0 4px 8px 3px rgba(0,0,0,.15), 0 1px 3px 0 rgba(0,0,0,.3);
  }
}

/* ----- 全局重置 ----- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
  font: var(--md-typescale-body-medium);
  color: var(--md-sys-color-on-background);
  background: var(--md-sys-color-background);
  -webkit-font-smoothing: antialiased;
}

.app {
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
}

/* ----- 导航栏 (Top App Bar) ----- */
.top-bar {
  position: sticky; top: 0; z-index: 10;
  display: flex; align-items: center; justify-content: space-between;
  height: 64px; padding: 0 24px;
  background: var(--md-sys-color-surface-container);
  border-bottom: 1px solid var(--md-sys-color-outline-variant);
}
.top-bar__start { display: flex; align-items: center; gap: 16px; }
.top-bar__title {
  font: var(--md-typescale-title-large);
  color: var(--md-sys-color-on-surface);
}
.top-bar__end { display: flex; align-items: center; gap: 12px; }

.icon--large { font-size: 28px !important; color: var(--md-sys-color-primary); }

.top-bar__refresh {
  display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: var(--md-shape-corner-full);
  cursor: pointer; transition: background var(--transition-standard);
  color: var(--md-sys-color-on-surface-variant);
}
.top-bar__refresh:hover { background: var(--md-sys-color-surface-variant); }
.top-bar__refresh:active { background: var(--md-sys-color-surface-container-high); }
.top-bar__refresh.spinning .material-symbols-rounded {
  animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* 小标签 (Assist Chip) */
.chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 12px; height: 32px;
  border: 1px solid var(--md-sys-color-outline);
  border-radius: var(--md-shape-corner-small);
  font: var(--md-typescale-label-large);
  color: var(--md-sys-color-on-surface-variant);
  background: transparent;
}
.chip .material-symbols-rounded { font-size: 18px; }
.chip--active {
  border-color: var(--md-sys-color-primary);
  color: var(--md-sys-color-primary);
  background: var(--md-sys-color-primary-container);
  transition: all var(--transition-standard);
}
.chip--active.has-connections {
  border-color: var(--md-sys-color-error);
  color: var(--md-sys-color-on-error-container);
  background: var(--md-sys-color-error-container);
  animation: pulse-chip 2s ease-in-out infinite;
}
@keyframes pulse-chip {
  0%, 100% { box-shadow: 0 0 0 0 rgba(179,38,30,0.4); }
  50% { box-shadow: 0 0 0 6px rgba(179,38,30,0); }
}
.chip__suffix { font: var(--md-typescale-label-small); opacity: 0.7; }

/* ----- 内容区域 ----- */
.main-content {
  flex: 1;
  max-width: 1200px; width: 100%;
  margin: 0 auto; padding: 24px;
  display: flex; flex-direction: column; gap: 32px;
}

/* ----- 区块 ----- */
.section { display: flex; flex-direction: column; gap: 16px; }
.section__header {
  display: flex; align-items: center; justify-content: space-between;
}
.section__title {
  font: var(--md-typescale-title-large);
  color: var(--md-sys-color-on-surface);
}

/* ----- 分段按钮 (Segmented Button) ----- */
.segmented-btn-group {
  display: flex;
  border: 1px solid var(--md-sys-color-outline);
  border-radius: var(--md-shape-corner-full);
  overflow: hidden;
  background: var(--md-sys-color-surface);
}
.segmented-btn {
  all: unset;
  display: flex; align-items: center; justify-content: center;
  height: 36px; padding: 0 16px;
  font: var(--md-typescale-label-large);
  color: var(--md-sys-color-on-surface);
  cursor: pointer;
  transition: background var(--transition-standard), color var(--transition-standard);
  position: relative;
}
.segmented-btn:hover { background: var(--md-sys-color-surface-variant); }
.segmented-btn.active {
  background: var(--md-sys-color-secondary-container);
  color: var(--md-sys-color-on-secondary-container);
}
.segmented-btn + .segmented-btn { border-left: 1px solid var(--md-sys-color-outline); }

/* ----- 卡片网格 ----- */
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 16px;
}
.chart-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));
  gap: 16px;
}

@media (max-width: 480px) {
  .card-grid { grid-template-columns: 1fr; }
  .chart-grid { grid-template-columns: 1fr; }
}

/* ----- 卡片 ----- */
.card {
  border-radius: var(--md-shape-corner-medium);
  padding: 16px;
  display: flex; flex-direction: column; gap: 12px;
}
.card--elevated {
  background: var(--md-sys-color-surface-container-low);
  box-shadow: var(--md-elevation-level1);
}
.card--filled {
  background: var(--md-sys-color-surface-container-low);
}
.card__icon {
  width: 40px; height: 40px;
  display: flex; align-items: center; justify-content: center;
  border-radius: var(--md-shape-corner-full);
}
.card__icon .material-symbols-rounded { font-size: 20px; }
.card__body { display: flex; flex-direction: column; }
.card__label {
  font: var(--md-typescale-label-medium);
  color: var(--md-sys-color-on-surface-variant);
}
.card__value {
  font: var(--md-typescale-display-small);
  color: var(--md-sys-color-on-surface);
}
.card__sub {
  font: var(--md-typescale-body-small);
  color: var(--md-sys-color-on-surface-variant);
  margin-top: 4px;
}

.card__body--row {
  flex-direction: row; align-items: baseline; gap: 8px;
}

.card__inout {
  display: flex; gap: 6px; margin-top: 6px; font: var(--md-typescale-label-small);
}
.inout-item {
  display: flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: var(--md-shape-corner-extra-small);
}
.inout-item--in {
  background: #D0E4FF; color: #1A3A6B;
}
.inout-item--out {
  background: #D4EDDA; color: #155724;
}
@media (prefers-color-scheme: dark) {
  .inout-item--in {
    background: #1A3A6B; color: #D0E4FF;
  }
  .inout-item--out {
    background: #155724; color: #D4EDDA;
  }
}

/* 图表卡片 */
.chart-card { padding: 20px; min-height: 320px; }
.chart-title {
  font: var(--md-typescale-title-medium);
  color: var(--md-sys-color-on-surface);
  margin-bottom: 8px;
}
.chart-wrap { flex: 1; position: relative; min-height: 0; }

/* 表格卡片 */
.table-card { padding: 0; overflow: hidden; }
.table-wrapper { overflow-x: auto; }

/* ----- 表格 ----- */
.md-table {
  width: 100%; border-collapse: collapse;
  font: var(--md-typescale-body-medium);
}
.md-table thead { background: var(--md-sys-color-surface-container-high); }
.md-table th {
  font: var(--md-typescale-label-medium);
  color: var(--md-sys-color-on-surface-variant);
  text-align: left; padding: 12px 16px;
  white-space: nowrap;
}
.md-table th.r { text-align: right; }
.md-table td {
  padding: 12px 16px;
  color: var(--md-sys-color-on-surface);
  border-bottom: 1px solid var(--md-sys-color-outline-variant);
  white-space: nowrap;
}
.md-table td.r {
  text-align: right;
  font-family: 'Roboto Mono', monospace;
}
.md-table tbody tr:last-child td { border-bottom: none; }
.md-table tbody tr:hover { background: var(--md-sys-color-surface-variant); }
.md-table .empty { text-align: center; color: var(--md-sys-color-on-surface-variant); padding: 32px; }

.token-bar {
  display: inline-block;
  height: 6px;
  border-radius: 3px;
  background: var(--md-sys-color-primary);
  vertical-align: middle;
  margin-right: 6px;
}

/* ----- 响应式 ----- */
@media (max-width: 768px) {
  .top-bar { padding: 0 16px; }
  .main-content { padding: 16px; gap: 24px; }
  .top-bar__title { font-size: 1.1rem; }
  .card__value { font-size: 1.75rem; line-height: 2.25rem; }
}
