/* ═══════════════════════════════════════════════════════════
   Token Relay Hub  v3 — Customer Portal
   Teal/Mint SaaS · Glassmorphism · Gradient Accents
   Inspired by kuai.best design system
   ═══════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap');

/* ── Design Tokens ─────────────────────────────────────── */
:root {
  /* Brand — Teal/Mint */
  --b-400: #2dd4bf;
  --b-500: #14b8a6;
  --b-600: #0d9488;
  --b-700: #0f766e;
  --b-800: #115e59;
  --b-50:  #f0fdfa;
  --b-100: #ccfbf1;
  --b-200: #99f6e4;

  /* Neutrals — cool gray */
  --n-0:  #ffffff;
  --n-50: #f9fafb;
  --n-75: #f3f4f6;
  --n-100:#e5e7eb;
  --n-200:#d1d5db;
  --n-300:#9ca3af;
  --n-400:#6b7280;
  --n-500:#4b5563;
  --n-600:#374151;
  --n-700:#1f2937;
  --n-800:#111827;
  --n-900:#030712;

  /* Semantic */
  --green-500:#10b981;
  --green-50:#ecfdf5;
  --green-600:#059669;
  --amber-500:#f59e0b;
  --amber-50:#fffbeb;
  --amber-600:#d97706;
  --red-500:#ef4444;
  --red-50:#fef2f2;
  --red-600:#dc2626;
  --purple-500:#8b5cf6;
  --purple-50:#f5f3ff;
  --cyan-500:#06b6d4;
  --cyan-50:#ecfeff;
  --orange-500:#f97316;
  --orange-50:#fff7ed;

  /* Typography */
  --ff:"Inter","PingFang SC","Microsoft YaHei","Hiragino Sans GB",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --ff-mono:"JetBrains Mono","SF Mono",Consolas,monospace;

  /* Radii */
  --r-xs:6px;
  --r-sm:8px;
  --r-md:12px;
  --r-lg:16px;
  --r-xl:20px;
  --r-2xl:24px;

  /* Shadows — ultra subtle default, large soft hover */
  --shadow-card:0 1px 3px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.06);
  --shadow-card-hover:0 10px 40px rgba(0,0,0,.08);
  --shadow-glass:0 8px 32px rgba(0,0,0,.08);
  --shadow-glow:0 0 20px rgba(20,184,166,.25);
  --shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);
  --shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.05);
  --shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.05);
  --shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.05);
  --shadow-xs:0 0 0 1px rgba(0,0,0,.02);

  /* Layout */
  --sidebar-w:250px;
  --topbar-h:60px;

  /* Legacy aliases — keep for backward compat */
  --gray-50:var(--n-50);--gray-100:var(--n-75);--gray-200:var(--n-100);
  --gray-300:var(--n-200);--gray-400:var(--n-400);--gray-500:var(--n-500);
  --gray-600:var(--n-600);--gray-700:var(--n-700);--gray-800:var(--n-800);
  --gray-900:var(--n-900);
  --primary-400:var(--b-400);--primary-500:var(--b-500);--primary-600:var(--b-600);
  --primary-700:var(--b-700);--primary-50:var(--b-50);--primary-100:var(--b-100);
  --green-500:var(--green-500);--green-50:var(--green-50);
  --amber-500:var(--amber-500);--amber-50:var(--amber-50);
  --red-500:var(--red-500);--red-50:var(--red-50);
  --purple-50:var(--purple-50);--purple-500:var(--purple-500);
  --orange-50:var(--orange-50);--orange-500:var(--orange-500);
  --radius:var(--r-md);--radius-sm:var(--r-sm);
}

/* ── Reset ─────────────────────────────────────────────── */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}
body{
  font-family:var(--ff);
  background:var(--n-50);
  color:var(--n-600);
  font-size:14px;
  line-height:1.6;
  letter-spacing:-.003em;
}
button,input,select,textarea{font:inherit}
a{color:var(--b-600);text-decoration:none;transition:color .15s}
a:hover{color:var(--b-700)}
code,.mono{font-family:var(--ff-mono);font-size:.82em;background:var(--n-50);padding:2px 7px;border-radius:5px;color:var(--n-500)}

/* ── Custom Scrollbar ──────────────────────────────────── */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:linear-gradient(to bottom,var(--n-200),var(--n-300));border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:linear-gradient(to bottom,var(--n-300),var(--n-400))}

/* ── Navigation Progress Bar ───────────────────────────── */
.nav-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:9999;overflow:hidden;background:transparent;pointer-events:none}
.nav-progress-bar{height:100%;width:100%;background:linear-gradient(90deg,transparent 0%,var(--b-400) 20%,var(--b-500) 50%,var(--b-400) 80%,transparent 100%);animation:navSlide 1.2s ease-in-out infinite}
@keyframes navSlide{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.nav-progress.fade{opacity:0;transition:opacity .3s}

/* ── Layout ────────────────────────────────────────────── */
.portal{display:flex;min-height:100vh;padding-top:var(--topbar-h)}

/* ── Topbar — Glassmorphism ────────────────────────────── */
.topbar{
  position:fixed;top:0;left:0;right:0;height:var(--topbar-h);
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(16px) saturate(180%);
  -webkit-backdrop-filter:blur(16px) saturate(180%);
  border-bottom:1px solid rgba(0,0,0,.05);
  display:flex;align-items:center;
  padding:0 24px;
  z-index:30;
  gap:16px;
}
.topbar-brand{
  font-weight:800;font-size:16px;color:var(--n-800);
  letter-spacing:-.025em;
  display:flex;align-items:center;gap:10px;
}
.topbar-brand svg{flex-shrink:0}
.topbar-right{
  margin-left:auto;
  display:flex;align-items:center;gap:12px;
}
.topbar-balance{
  background:var(--b-50);
  border:1px solid var(--b-100);
  border-radius:10px;
  padding:6px 14px;
  font-size:13px;
  font-weight:600;
  color:var(--b-700);
  letter-spacing:-.01em;
  display:flex;align-items:center;gap:6px;
}
.topbar-balance strong{color:var(--n-800);font-weight:800}
.topbar-dot{
  width:8px;height:8px;border-radius:50%;background:var(--green-500);
  display:inline-block;
  box-shadow:0 0 0 3px rgba(16,185,129,.15);
}
.topbar-avatar{
  width:34px;height:34px;border-radius:50%;
  background:linear-gradient(135deg,var(--b-500),var(--b-700));
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:700;cursor:pointer;
  border:2px solid var(--n-0);
  box-shadow:var(--shadow-sm);
  transition:all .15s;
}
.topbar-avatar:hover{transform:scale(1.05);box-shadow:0 0 0 3px rgba(20,184,166,.15)}

/* ── Sidebar ───────────────────────────────────────────── */
.sidebar{
  width:var(--sidebar-w);
  background:var(--n-0);
  border-right:1px solid var(--n-100);
  position:fixed;
  top:var(--topbar-h);
  left:0;
  bottom:0;
  display:flex;flex-direction:column;
  z-index:20;
  overflow-y:auto;
  padding:16px 12px;
}
.sidebar-label{
  font-size:10px;font-weight:700;color:var(--n-300);
  text-transform:uppercase;letter-spacing:.12em;
  padding:8px 14px;margin-bottom:4px;
}
.sidebar-item{
  display:flex;align-items:center;gap:12px;
  padding:10px 14px;margin-bottom:2px;
  color:var(--n-400);font-size:13.5px;font-weight:500;
  text-decoration:none;border-radius:10px;
  cursor:pointer;
  transition:all .15s;
  position:relative;
}
.sidebar-item:hover{color:var(--n-700);background:var(--n-50)}
.sidebar-item.active{
  color:var(--b-600);background:var(--b-50);
  font-weight:600;
}
.sidebar-item.active::before{
  content:'';position:absolute;left:-12px;top:10px;bottom:10px;
  width:3px;border-radius:0 3px 3px 0;background:var(--b-500);
}
.sidebar-item svg{flex-shrink:0;opacity:.6;transition:opacity .15s}
.sidebar-item:hover svg{opacity:.85}
.sidebar-item.active svg{opacity:1;color:var(--b-500)}
.sidebar-item span:last-child{flex:1}
.sidebar-footer{
  margin-top:auto;
  padding:14px;
  border-top:1px solid var(--n-100);
  font-size:12px;color:var(--n-400);
  display:flex;flex-direction:column;gap:6px;
}
.sidebar-footer-user{
  display:flex;align-items:center;gap:10px;
  font-weight:600;color:var(--n-600);
}

/* ── Main ──────────────────────────────────────────────── */
.main{
  flex:1;
  margin-left:var(--sidebar-w);
  padding:32px 36px 56px;
  min-width:0;
  max-width:calc(100% - var(--sidebar-w));
}

/* ── Page Header ───────────────────────────────────────── */
.page-header{
  display:flex;justify-content:space-between;align-items:flex-start;
  margin-bottom:32px;flex-wrap:wrap;gap:12px;
}
.page-header h2{
  font-size:26px;font-weight:800;color:var(--n-800);
  letter-spacing:-.035em;margin-bottom:2px;
}
.page-header .subtitle{
  font-size:13px;color:var(--n-400);font-weight:400;
  margin-top:4px;
}

/* ── Stats Grid ────────────────────────────────────────── */
.stats-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:16px;margin-bottom:28px;
}
@media(max-width:1100px){.stats-grid{grid-template-columns:1fr 1fr}}
@media(max-width:500px){.stats-grid{grid-template-columns:1fr}}

.stat-card{
  background:var(--n-0);
  border:1px solid var(--n-100);
  border-radius:var(--r-lg);
  padding:22px 24px;
  box-shadow:var(--shadow-card);
  transition:all .25s cubic-bezier(.4,0,.2,1);
}
.stat-card:hover{
  border-color:transparent;
  box-shadow:var(--shadow-card-hover);
  transform:translateY(-2px);
}
.stat-icon{
  width:44px;height:44px;border-radius:var(--r-md);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:14px;font-size:20px;
}
.stat-icon.blue{background:var(--b-50);color:var(--b-600)}
.stat-icon.green{background:var(--green-50);color:var(--green-500)}
.stat-icon.amber{background:var(--amber-50);color:var(--amber-500)}
.stat-icon.purple{background:var(--purple-50);color:var(--purple-500)}
.stat-icon.red{background:var(--red-50);color:var(--red-500)}
.stat-label{
  font-size:12px;color:var(--n-400);font-weight:500;
  letter-spacing:.02em;margin-bottom:2px;
}
.stat-value{
  font-size:30px;font-weight:800;color:var(--n-800);
  letter-spacing:-.04em;line-height:1.1;
}
.stat-delta{
  font-size:12px;color:var(--n-400);margin-top:6px;
  font-weight:500;
}
.stat-delta a{color:var(--b-600);font-weight:600}
.stat-delta a:hover{color:var(--b-700)}

/* ── Panels ────────────────────────────────────────────── */
.panel{
  background:var(--n-0);
  border:1px solid var(--n-100);
  border-radius:var(--r-lg);
  margin-bottom:20px;
  overflow:hidden;
  box-shadow:var(--shadow-card);
  transition:box-shadow .25s;
}
.panel:hover{box-shadow:var(--shadow-card-hover)}
.panel-header{
  padding:18px 24px;
  border-bottom:1px solid var(--n-100);
  display:flex;justify-content:space-between;align-items:center;
  gap:12px;flex-wrap:wrap;
}
.panel-header h3{
  font-size:15px;font-weight:700;color:var(--n-800);
  letter-spacing:-.02em;
}
.panel-body{padding:0}

/* ── Overview Layout ───────────────────────────────────── */
.overview-layout{
  display:grid;
  grid-template-columns:1fr 1.2fr 1fr;
  gap:16px;margin-bottom:20px;
}
@media(max-width:1100px){.overview-layout{grid-template-columns:1fr}}

.dashboard-panel{padding:24px}
.dashboard-panel h4{
  font-size:26px;font-weight:800;color:var(--b-600);
  letter-spacing:-.04em;margin-bottom:6px;
}
.dashboard-panel .desc{
  color:var(--n-400);font-size:13px;line-height:1.7;
  margin-bottom:20px;
}

/* Mini metric tiles */
.mini-stats,.metric-strip{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:10px;margin-bottom:20px;
}
@media(max-width:600px){.mini-stats,.metric-strip{grid-template-columns:1fr}}
.mini-stats div,.metric-strip div{
  background:var(--n-50);
  border:1px solid var(--n-75);
  border-radius:var(--r-md);
  padding:14px 16px;
}
.mini-stats span,.metric-strip span,.cost-row span{
  display:block;color:var(--n-400);font-size:11px;
  font-weight:500;letter-spacing:.03em;margin-bottom:4px;
  text-transform:uppercase;
}
.mini-stats strong,.metric-strip strong,.cost-row strong{
  color:var(--n-800);font-size:18px;font-weight:700;
  letter-spacing:-.03em;
}

/* Model meters */
.model-meter+.model-meter{margin-top:12px}
.meter-head{display:flex;justify-content:space-between;color:var(--n-500);font-size:12px;margin-bottom:6px;font-weight:500}
.meter-track{height:6px;border-radius:99px;background:var(--n-75);overflow:hidden}
.meter-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--b-400),var(--b-600));transition:width .4s cubic-bezier(.16,1,.3,1)}

/* Saving */
.saving-amount{color:var(--green-500);font-size:34px;font-weight:800;letter-spacing:-.04em;margin-bottom:16px}
.cost-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-top:1px solid var(--n-75)}
.cost-row span{margin-bottom:0}

/* ── Activity heatmap ──────────────────────────────────── */
.activity-map{
  display:grid;grid-template-columns:repeat(28,minmax(10px,1fr));
  gap:4px;
}
@media(max-width:700px){.activity-map{grid-template-columns:repeat(14,minmax(12px,1fr))}}
.activity-cell{
  aspect-ratio:1;border-radius:3px;background:var(--n-100);
  transition:transform .15s;
}
.activity-cell:hover{transform:scale(1.3)}
.activity-cell.level-1{background:#99f6e4}
.activity-cell.level-2{background:#5eead4}
.activity-cell.level-3{background:#2dd4bf}
.activity-cell.level-4{background:#0d9488}

/* ── Dashboard Upgrade Skeleton ───────────────────────── */
.dashboard-stats-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
@media(max-width:1280px){.dashboard-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.dashboard-stats-grid{grid-template-columns:1fr}}
.dashboard-stat{
  min-height:132px;
}
.dashboard-stat .stat-value{
  font-size:28px;
  line-height:1.15;
  margin-top:4px;
}
.platform-panel{
  margin-top:20px;
}
.platform-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
}
@media(max-width:960px){.platform-grid{grid-template-columns:1fr}}
.platform-card{
  border:1px solid var(--n-100);
  background:var(--n-0);
  border-radius:var(--r-md);
  padding:14px;
  min-height:124px;
  box-shadow:var(--shadow-card);
  transition:all .2s;
}
.platform-card:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-1px)}
.platform-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding-bottom:10px;
  margin-bottom:8px;
  border-bottom:1px solid var(--n-75);
}
.platform-head strong{
  color:var(--n-800);
  font-size:15px;
}
.platform-head span{
  color:var(--b-600);
  font-family:var(--ff-mono);
  font-weight:700;
}
.platform-row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  color:var(--n-400);
  font-size:13px;
  line-height:1.9;
}
.platform-row strong{
  color:var(--n-700);
}
.dashboard-filter-panel{
  margin-top:20px;
}
.dashboard-filter-panel .panel-header{
  flex-wrap:wrap;
  gap:12px;
}
.dashboard-filter-left,
.dashboard-filter-right{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  color:var(--n-500);
  font-size:13px;
}
.seg-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:0 14px;
  border:1px solid var(--n-100);
  background:var(--n-0);
  color:var(--n-400);
  border-radius:10px;
  font-weight:600;
  font-size:13px;
  cursor:pointer;
  transition:all .15s;
}
.seg-btn:hover{border-color:var(--n-200);color:var(--n-600)}
.seg-btn.active{
  background:var(--n-800);
  color:#fff;
  border-color:var(--n-800);
}
.dashboard-chart-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:16px;
  margin-top:24px;
}
.dashboard-bottom-grid{
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);
  gap:16px;
  margin-top:24px;
}
@media(max-width:1100px){
  .dashboard-chart-grid,
  .dashboard-bottom-grid{grid-template-columns:1fr}
}
.trend-bars{
  height:220px;
  display:flex;
  align-items:flex-end;
  gap:8px;
  padding:16px 4px 4px;
  border-radius:var(--r-md);
  background:linear-gradient(180deg,var(--n-50),transparent);
}
.trend-bar{
  flex:1;
  min-width:8px;
  border-radius:999px 999px 4px 4px;
  background:linear-gradient(180deg,var(--b-400),var(--cyan-500));
  opacity:.85;
  transition:opacity .15s,transform .15s;
}
.trend-bar:hover{
  opacity:1;
  transform:translateY(-2px);
}
.compact-call-list{
  display:grid;
  gap:10px;
}
.compact-call-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:12px;
  border:1px solid var(--n-100);
  border-radius:var(--r-md);
  background:var(--n-0);
  box-shadow:var(--shadow-card);
  transition:all .2s;
}
.compact-call-row:hover{box-shadow:var(--shadow-card-hover);border-color:transparent}
.compact-call-row strong{
  display:block;
  color:var(--n-700);
  font-size:13px;
  max-width:340px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.compact-call-row span{
  display:block;
  color:var(--n-400);
  font-size:12px;
  margin-top:2px;
}
.compact-call-row > div:last-child{
  text-align:right;
  flex-shrink:0;
}

/* ── Tables ────────────────────────────────────────────── */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th{background:var(--n-50);padding:10px 16px;text-align:left;font-size:11px;font-weight:600;color:var(--n-400);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--n-100);white-space:nowrap}
td{padding:12px 16px;border-bottom:1px solid var(--n-75);font-size:13px;color:var(--n-600);vertical-align:middle}
tr:hover td{background:var(--n-50)}
tr:last-child td{border-bottom:none}

/* ── Badges ────────────────────────────────────────────── */
.badge{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 10px;border-radius:20px;font-size:11px;
  font-weight:600;white-space:nowrap;letter-spacing:.01em;
}
.badge-success{background:var(--green-50);color:var(--green-600)}
.badge-warning{background:var(--amber-50);color:var(--amber-600)}
.badge-danger{background:var(--red-50);color:var(--red-600)}
.badge-neutral{background:var(--n-75);color:var(--n-500)}
.badge-codex{background:var(--purple-50);color:var(--purple-500)}
.badge-claude{background:var(--orange-50);color:var(--orange-500)}
.badge-cyan{background:var(--cyan-50);color:var(--cyan-500)}
.badge-dot::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor;display:inline-block}

/* ── Buttons — Gradient + Colored Shadow ──────────────── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  gap:6px;padding:9px 18px;border-radius:var(--r-md);
  font-size:13px;font-weight:600;border:none;cursor:pointer;
  transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;
  letter-spacing:-.01em;
  position:relative;
}
.btn:active{transform:scale(.97)}
.btn:focus-visible{outline:2px solid var(--b-500);outline-offset:2px}
.btn-primary{
  background-image:linear-gradient(to right,var(--b-500),var(--b-600));
  color:#fff;
  box-shadow:0 4px 6px -1px rgba(20,184,166,.25),0 2px 4px -2px rgba(20,184,166,.1);
}
.btn-primary:hover{
  background-image:linear-gradient(to right,var(--b-600),var(--b-700));
  box-shadow:0 10px 15px -3px rgba(20,184,166,.3),0 4px 6px -4px rgba(20,184,166,.1);
  transform:translateY(-1px);
}
.btn-secondary{
  background:var(--n-0);
  color:var(--n-600);
  border:1px solid var(--n-200);
  box-shadow:var(--shadow-sm);
}
.btn-secondary:hover{
  background:var(--n-50);
  border-color:var(--n-300);
}
.btn-danger{
  background-image:linear-gradient(to right,var(--red-500),var(--red-600));
  color:#fff;
  box-shadow:0 4px 6px -1px rgba(239,68,68,.25);
}
.btn-danger:hover{
  background-image:linear-gradient(to right,var(--red-600),#b91c1c);
  box-shadow:0 10px 15px -3px rgba(239,68,68,.3);
  transform:translateY(-1px);
}
.btn-sm{padding:5px 12px;font-size:12px;border-radius:8px}
.btn-ghost{background:transparent;color:var(--n-400);padding:6px 12px}
.btn-ghost:hover{background:var(--n-50);color:var(--n-600)}
.btn-icon{padding:8px;border-radius:8px}

/* ── Forms ─────────────────────────────────────────────── */
.form{display:grid;gap:14px}
.field{display:grid;gap:4px}
.field label{font-size:13px;font-weight:600;color:var(--n-600)}
.input,.select{
  width:100%;padding:10px 14px;border:1px solid var(--n-200);
  border-radius:var(--r-md);font-size:14px;background:var(--n-0);
  color:var(--n-700);outline:none;transition:all .15s;
}
.input::placeholder{color:var(--n-300)}
.input:focus,.select:focus{
  border-color:var(--b-500);
  box-shadow:0 0 0 3px rgba(20,184,166,.1);
}
.select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%239ca3af' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}

/* ── Alert ─────────────────────────────────────────────── */
.alert{padding:10px 14px;border-radius:var(--r-md);font-size:13px;font-weight:500;display:none}
.alert.show{display:block}
.alert.error{background:var(--red-50);color:var(--red-600);border:1px solid #fecaca}
.alert.success{background:var(--green-50);color:var(--green-600);border:1px solid #a7f3d0}

/* ── Price Cards ───────────────────────────────────────── */
.price-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}
@media(max-width:700px){.price-row{grid-template-columns:1fr}}
.price-card{
  border:1px solid var(--n-100);border-radius:var(--r-lg);
  padding:28px 24px;text-align:center;
  background:var(--n-0);
  position:relative;transition:all .25s cubic-bezier(.4,0,.2,1);
  box-shadow:var(--shadow-card);
}
.price-card:hover{
  border-color:transparent;
  box-shadow:var(--shadow-card-hover);
  transform:translateY(-3px);
}
.price-plan{font-size:12px;font-weight:600;color:var(--n-400);text-transform:uppercase;letter-spacing:.06em;margin-bottom:16px}
.price-amount{font-size:40px;font-weight:800;color:var(--n-800);letter-spacing:-.04em;line-height:1;margin-bottom:8px}
.price-desc{font-size:13px;color:var(--n-400);margin-bottom:20px;line-height:1.6}
.price-card.popular{
  border-color:var(--b-500);
  box-shadow:0 0 0 1px var(--b-500),0 10px 40px rgba(20,184,166,.1);
}
.popular-tag{position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:linear-gradient(to right,var(--b-500),var(--b-600));color:#fff;padding:4px 16px;border-radius:20px;font-size:11px;font-weight:600;box-shadow:0 4px 6px -1px rgba(20,184,166,.25)}

/* Model cards */
.model-row{align-items:stretch}
.model-row .price-card{display:flex;flex-direction:column;min-height:240px}
.model-id{display:block;margin:12px 0;padding:10px 14px;border-radius:var(--r-sm);background:var(--n-50);color:var(--n-500);font-size:12px;line-height:1.5;word-break:break-all;border:1px solid var(--n-100)}
.model-tags{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-bottom:16px}
.model-copy{justify-content:center;margin-top:auto}

/* ── Token Management ─────────────────────────────────── */
.token-toolbar{
  display:flex;
  align-items:center;
  gap:12px;
  margin-bottom:16px;
}
.token-search-wrap{flex:1;min-width:220px}
.token-toolbar .select{width:180px}
.api-endpoint-row{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:16px;
  padding:12px 14px;
  border:1px solid var(--n-100);
  border-radius:var(--r-md);
  background:var(--n-0);
  color:var(--n-500);
  font-size:13px;
  box-shadow:var(--shadow-card);
}
.api-endpoint-row code{
  padding:4px 8px;
  border-radius:var(--r-sm);
  background:var(--n-50);
  color:var(--n-700);
  word-break:break-all;
}
.token-create-modal{
  max-width:460px;
  overflow:visible;
  border:1px solid rgba(226,232,240,.9);
}
.token-modal-body{
  display:grid;
  gap:14px;
  overflow:visible;
}
.field-help{
  margin-top:6px;
  color:var(--n-400);
  font-size:12px;
  line-height:1.5;
}
.token-channel-field{position:relative}
.channel-select-trigger{
  width:100%;
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 14px;
  border:1px solid var(--n-200);
  border-radius:var(--r-md);
  background:var(--n-0);
  color:var(--n-400);
  font:inherit;
  text-align:left;
  cursor:pointer;
  transition:border-color .18s,box-shadow .18s,background .18s;
}
.channel-select-trigger:hover,
.channel-select-trigger.open{
  border-color:var(--b-500);
  box-shadow:0 0 0 3px rgba(20,184,166,.1);
}
.channel-select-trigger span{
  display:flex;
  flex-direction:column;
  min-width:0;
}
.channel-select-trigger strong{
  color:var(--n-800);
  font-size:13px;
  line-height:1.25;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.channel-select-trigger small{
  margin-top:2px;
  color:var(--green-600);
  font-size:11px;
  font-weight:700;
}
.channel-select-trigger i{
  width:8px;
  height:8px;
  border-right:1.6px solid var(--n-400);
  border-bottom:1.6px solid var(--n-400);
  transform:rotate(45deg);
  transition:transform .18s;
  flex:0 0 auto;
}
.channel-select-trigger.open i{transform:rotate(225deg)}
.channel-menu{
  position:absolute;
  left:0;
  top:calc(100% + 8px);
  width:min(640px,calc(100vw - 64px));
  z-index:140;
  display:none;
  overflow:hidden;
  border:1px solid var(--n-100);
  border-radius:var(--r-lg);
  background:var(--n-0);
  box-shadow:0 20px 55px rgba(15,23,42,.22);
}
.channel-menu.open{display:block}
.channel-search{
  display:flex;
  align-items:center;
  gap:8px;
  padding:10px 14px;
  border-bottom:1px solid var(--n-100);
  color:var(--n-300);
}
.channel-search input{
  width:100%;
  border:0;
  outline:0;
  background:transparent;
  color:var(--n-700);
  font:inherit;
  font-size:13px;
}
.channel-list{
  display:grid;
  max-height:342px;
  overflow:auto;
}
.channel-option{
  display:grid;
  grid-template-columns:24px minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  width:100%;
  min-height:58px;
  padding:10px 16px;
  border:0;
  border-bottom:1px solid var(--n-50);
  background:var(--n-0);
  color:var(--n-700);
  text-align:left;
  cursor:pointer;
  transition:background .16s;
}
.channel-option:hover,
.channel-option.selected{background:#f8fafc}
.channel-option-icon{
  display:grid;
  place-items:center;
  width:22px;
  height:22px;
  border-radius:999px;
  background:var(--b-50);
  color:var(--b-600);
  font-size:12px;
  font-weight:800;
}
.channel-option-main{display:grid;gap:3px;min-width:0}
.channel-option-main strong{
  font-size:13px;
  font-weight:700;
  color:var(--n-800);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.channel-option-main small{
  font-size:12px;
  color:var(--n-400);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.channel-ratio{
  padding:4px 8px;
  border-radius:999px;
  background:var(--b-50);
  color:var(--b-600);
  font-size:12px;
  font-weight:800;
  white-space:nowrap;
}
.channel-option.channel-claude .channel-option-icon,
.channel-option.channel-claude .channel-ratio{
  background:var(--orange-50);
  color:var(--orange-500);
}
.channel-option.channel-cn .channel-option-icon,
.channel-option.channel-cn .channel-ratio{
  background:#eff6ff;
  color:#2563eb;
}
.switch-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  color:var(--n-700);
  font-size:14px;
  font-weight:600;
}
.switch-row input{position:absolute;opacity:0;pointer-events:none}
.switch-row i{
  width:38px;
  height:22px;
  border-radius:999px;
  background:var(--n-200);
  position:relative;
  flex:0 0 auto;
  transition:background .2s;
}
.switch-row i::after{
  content:"";
  position:absolute;
  top:3px;
  left:3px;
  width:16px;
  height:16px;
  border-radius:999px;
  background:var(--n-0);
  box-shadow:0 1px 2px rgba(0,0,0,.16);
  transition:transform .2s;
}
.switch-row input:checked + i{background:var(--b-500)}
.switch-row input:checked + i::after{transform:translateX(16px)}
.advanced-field{display:none}
.advanced-field.open{display:block}
@media(max-width:760px){
  .token-toolbar{align-items:stretch;flex-direction:column}
  .token-toolbar .select,.token-toolbar .btn{width:100%}
  .api-endpoint-row{align-items:flex-start;flex-direction:column}
  .channel-menu{width:100%}
  .channel-option{grid-template-columns:22px minmax(0,1fr);align-items:start}
  .channel-ratio{grid-column:2;margin-top:2px;width:max-content}
}

/* ── Modals ────────────────────────────────────────────── */
.modal-backdrop{
  position:fixed;inset:0;background:rgba(3,7,18,.4);
  backdrop-filter:blur(6px);z-index:100;
  display:none;align-items:center;justify-content:center;
  padding:24px;
}
.modal-backdrop.open{display:flex}
.modal{
  background:var(--n-0);border-radius:var(--r-2xl);
  box-shadow:var(--shadow-xl);width:100%;max-width:480px;
  animation:slideUp .25s cubic-bezier(.16,1,.3,1);
}
.modal.token-create-modal{max-width:460px;overflow:visible}
@keyframes slideUp{
  from{opacity:0;transform:translateY(16px) scale(.98)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
.modal-header{padding:24px 24px 0;display:flex;justify-content:space-between;align-items:center}
.modal-header h3{font-size:18px;font-weight:800;letter-spacing:-.02em}
.modal-body{padding:16px 24px}
.modal-footer{padding:16px 24px;border-top:1px solid var(--n-100);display:flex;justify-content:flex-end;gap:8px}

/* ── Empty States ──────────────────────────────────────── */
.empty{
  text-align:center;padding:56px 24px;color:var(--n-300);
}
.empty-icon{font-size:40px;margin-bottom:12px}
.empty h3{font-size:15px;font-weight:600;color:var(--n-400);margin-bottom:4px}
.empty p{font-size:13px;color:var(--n-300)}
.empty.compact-empty{padding:24px 16px;background:var(--n-50);border-radius:var(--r-md)}

/* ── Toast ─────────────────────────────────────────────── */
.toast{
  position:fixed;top:72px;right:24px;z-index:200;
  background:var(--n-800);color:#fff;
  padding:10px 18px;border-radius:var(--r-md);
  font-size:13px;font-weight:600;
  box-shadow:var(--shadow-lg);
  animation:slideUp .25s cubic-bezier(.16,1,.3,1);
}
.toast.success{background:var(--green-500)}
.toast.error{background:var(--red-500)}

/* ── Auth page ─────────────────────────────────────────── */
.auth-page{
  min-height:100vh;display:grid;place-items:center;
  background:linear-gradient(135deg,#f0fdfa 0%,#f9fafb 50%,#ecfeff 100%);
  padding:24px;
}
.auth-panel{
  background:var(--n-0);border:1px solid var(--n-100);
  border-radius:var(--r-2xl);box-shadow:var(--shadow-glass);
  width:100%;max-width:420px;padding:40px 32px 32px;
}
.brand{
  display:flex;align-items:center;justify-content:center;
  gap:10px;font-weight:800;font-size:15px;color:var(--b-600);
  letter-spacing:-.02em;margin-bottom:8px;
}
.brand svg{flex-shrink:0}
.brand::before{
  content:'';width:30px;height:30px;border-radius:10px;
  background:linear-gradient(135deg,var(--b-400),var(--b-600));
  display:block;
}
.auth-panel h1{
  text-align:center;font-size:22px;font-weight:800;
  letter-spacing:-.03em;margin-bottom:4px;color:var(--n-800);
}
.auth-panel .muted{text-align:center;color:var(--n-400);font-size:14px;margin-bottom:20px}

/* Tabs */
.tabs{
  display:flex;gap:4px;background:var(--n-50);
  padding:4px;border-radius:var(--r-md);margin-bottom:20px;
}
.tab{
  flex:1;padding:7px 16px;font-size:13px;font-weight:600;
  color:var(--n-400);background:none;border:none;
  border-radius:8px;cursor:pointer;transition:all .15s;
}
.tab:hover{color:var(--n-600)}
.tab.active{background:var(--n-0);color:var(--n-800);box-shadow:var(--shadow-sm)}

/* ── Mobile ────────────────────────────────────────────── */
.mobile-topbar{
  display:none!important;
}
@media(max-width:860px){
  .mobile-topbar{
    display:flex!important;
    position:fixed;top:0;left:0;right:0;height:56px;
    background:rgba(255,255,255,.85);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
    border-bottom:1px solid var(--n-100);
    z-index:15;
    padding:0 16px;
    align-items:center;gap:12px;
  }
  .topbar{display:none}
  .portal{padding-top:56px}
  .sidebar{
    position:fixed;top:56px;transform:translateX(-100%);
    transition:transform .25s cubic-bezier(.16,1,.3,1);
    box-shadow:var(--shadow-xl);
  }
  .sidebar.open{transform:translateX(0)}
  .main{margin-left:0;padding:20px 16px 40px;max-width:100%}
}

/* sidebar overlay */
.sidebar-overlay{
  display:none;position:fixed;inset:0;
  background:rgba(3,7,18,.25);z-index:18;
  backdrop-filter:blur(2px);
}

/* ── Misc ──────────────────────────────────────────────── */
.text-xs{font-size:11px}
.text-sm{font-size:12px}
.text-base{font-size:14px}
.font-semibold{font-weight:600}
.font-bold{font-weight:700}
.font-extrabold{font-weight:800}
.text-muted{color:var(--n-400)}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.text-link{color:var(--b-600);cursor:pointer;font-weight:500}
.text-link:hover{color:var(--b-700)}
.alert.info{background:var(--b-50);color:var(--b-600);border:1px solid var(--b-100)}

/* ═══════════════════════════════════════════════════════
   v3 Supplemental Styles — Usage / Docs / Models / Tokens
   ═══════════════════════════════════════════════════════ */

/* ── Usage Table ───────────────────────────────────────── */
.usage-table{min-width:880px}
.usage-table th{font-size:11px;padding:8px 14px}
.usage-table td{padding:10px 14px;font-size:13px}
.usage-table .cell-time{color:var(--n-400);font-size:12px;white-space:nowrap}
.usage-table .cell-num{text-align:right;font-variant-numeric:tabular-nums}
.usage-table .cell-num.cell-strong{font-weight:700;color:var(--n-700)}
.usage-table .cell-num.cell-cache{color:var(--cyan-500);font-weight:600}
.usage-table .cell-cost{font-weight:700;color:var(--green-600);text-align:right;font-variant-numeric:tabular-nums}

/* Model ID chips (usage page) */
.model-id-chips{display:flex;flex-direction:column;gap:8px}
.model-id-chip{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;border:1px solid var(--n-100);
  border-radius:var(--r-sm);background:var(--n-0);
  box-shadow:var(--shadow-card);
  transition:all .2s;
}
.model-id-chip:hover{box-shadow:var(--shadow-card-hover);border-color:transparent}
.model-id-chip code{
  flex:1;font-size:13px;padding:4px 8px;
  background:var(--n-50);border-radius:5px;color:var(--n-500);
}

/* ── Docs Page ─────────────────────────────────────────── */
.doc-endpoint-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.doc-endpoint-item{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;border:1px solid var(--n-100);
  border-radius:var(--r-sm);background:var(--n-50);
  transition:all .15s;
}
.doc-endpoint-item:hover{border-color:var(--b-200);background:var(--b-50)}
.doc-endpoint-item code{
  font-size:13px;padding:4px 10px;background:var(--n-0);
  border-radius:5px;color:var(--n-700);
}
.doc-endpoint-desc{font-size:12px;color:var(--n-400);margin-left:auto}
.doc-base-url{
  display:flex;align-items:center;gap:10px;
  padding:12px 14px;border:1px solid var(--b-200);
  border-radius:var(--r-sm);background:var(--b-50);
}
.doc-base-url span{font-size:12px;font-weight:600;color:var(--b-600);text-transform:uppercase;letter-spacing:.05em}
.doc-base-url code{flex:1;font-size:14px;padding:6px 10px;background:var(--n-0);border-radius:5px;color:var(--n-700)}
.doc-text{color:var(--n-500);font-size:13px;line-height:1.8}
.doc-text code{font-size:12px;padding:2px 6px}
.doc-auth-example{
  display:flex;align-items:center;gap:10px;
  margin-top:12px;padding:10px 14px;
  border:1px solid var(--n-100);border-radius:var(--r-sm);
  background:var(--n-50);
}
.doc-auth-example span{font-size:11px;font-weight:600;color:var(--n-400);text-transform:uppercase;letter-spacing:.05em}
.doc-auth-example code{font-size:13px;color:var(--n-700)}
.doc-code-block{
  background:var(--n-800);color:#e2e8f0;
  padding:18px 20px;border-radius:var(--r-md);
  font-size:12px;line-height:1.7;overflow-x:auto;
  font-family:var(--ff-mono);white-space:pre;
  border:1px solid var(--n-700);
}
.doc-model-list{display:flex;flex-direction:column}
.doc-model-item{
  display:flex;align-items:center;justify-content:space-between;
  gap:10px;padding:12px 24px;border-bottom:1px solid var(--n-75);
  transition:background .15s;
}
.doc-model-item:hover{background:var(--n-50)}
.doc-model-item:last-child{border-bottom:none}
.doc-model-info{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.doc-model-info code{font-size:13px;color:var(--n-700)}
.doc-model-desc{font-size:12px;color:var(--n-400)}

/* ── Model Cards Enhanced ──────────────────────────────── */
.model-item{display:flex;flex-direction:column;min-height:auto}
.model-card-head{
  display:flex;align-items:center;justify-content:space-between;
  gap:8px;margin-bottom:4px;
}
.model-card-head .price-plan{margin-bottom:0}
.model-meta{
  display:flex;flex-direction:column;gap:6px;
  padding:12px 0;margin-top:auto;margin-bottom:12px;
  border-top:1px solid var(--n-75);
}
.model-meta-row{
  display:flex;justify-content:space-between;align-items:center;
  font-size:12px;
}
.model-meta-row span{color:var(--n-400);font-weight:500}
.model-meta-row strong{color:var(--n-600);font-weight:600;text-align:right;font-size:11px;line-height:1.4;max-width:180px}

/* ── Token Table ───────────────────────────────────────── */
.token-table{min-width:960px}
.token-table th{font-size:11px;padding:8px 14px}
.token-table td{padding:10px 14px;font-size:13px}
.token-table .cell-name{font-weight:600;color:var(--n-700)}
.token-table .cell-token{max-width:260px}
.token-code{
  display:inline-block;max-width:180px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:12px;padding:3px 8px;border-radius:5px;
  background:var(--n-50);color:var(--n-500);
  vertical-align:middle;
}
.token-table .cell-num{text-align:right;font-variant-numeric:tabular-nums;color:var(--n-600)}
.token-table .cell-restrict{font-size:12px;color:var(--n-500);white-space:nowrap}
.token-table .cell-actions{white-space:nowrap}
.token-table .cell-actions .btn{padding:4px 10px;font-size:12px}

/* ── Responsive table scroll hint ──────────────────────── */
.table-wrap{
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}
.table-wrap::-webkit-scrollbar{height:6px}
.table-wrap::-webkit-scrollbar-track{background:var(--n-50)}
.table-wrap::-webkit-scrollbar-thumb{background:linear-gradient(to bottom,var(--n-200),var(--n-300));border-radius:3px}
.table-wrap::-webkit-scrollbar-thumb:hover{background:linear-gradient(to bottom,var(--n-300),var(--n-400))}

/* ── Selection ─────────────────────────────────────────── */
::selection{background:var(--b-100);color:var(--n-800)}
