/* ============================================================================
   核子GEO SAAS — 商用管理后台设计系统 v2
   对标 Stripe / Vercel / Linear 设计语言
   ============================================================================ */

/* ---- Design Tokens ---- */
:root {
  /* Surfaces — 明亮主题 */
  --s0: #f6f7f9;
  --s1: #ffffff;
  --s2: #f0f2f5;
  --s3: #e4e7ec;
  --s4: #d1d5db;
  --s5: #c4c9d1;
  --s6: #a8aeb8;

  /* Text */
  --t1: #111827;
  --t2: #4b5563;
  --t3: #9ca3af;
  --t4: #d1d5db;

  /* Brand */
  --brand: #6366f1;
  --brand-light: #818cf8;
  --brand-dim: rgba(99,102,241,0.08);
  --brand-border: rgba(99,102,241,0.25);

  /* Semantic */
  --green: #16a34a;
  --green-dim: rgba(22,163,74,0.08);
  --amber: #d97706;
  --amber-dim: rgba(217,119,6,0.08);
  --red: #dc2626;
  --red-dim: rgba(220,38,38,0.08);
  --blue: #2563eb;
  --blue-dim: rgba(37,99,235,0.08);
  --cyan: #0891b2;
  --cyan-dim: rgba(8,145,178,0.08);

  /* Misc */
  --radius: 10px;
  --radius-sm: 7px;
  --radius-lg: 14px;
  --radius-xl: 20px;
  --shadow-sm: 0 1px 2px rgba(0,0,0,.05);
  --shadow-md: 0 4px 12px rgba(0,0,0,.06), 0 0 0 1px rgba(0,0,0,.03);
  --shadow-lg: 0 8px 30px rgba(0,0,0,.08), 0 0 0 1px rgba(0,0,0,.04);
  --shadow-glow: 0 0 30px var(--brand-dim);

  /* Typography */
  --font: 'Inter', -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --font-mono: 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace;

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

/* ---- Reset ---- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{font-family:var(--font);background:var(--s0);color:var(--t1);line-height:1.5;overflow-x:hidden}

/* ---- Scrollbar ---- */
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--s5);border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:var(--t4)}

/* ---- Selection ---- */
::selection{background:var(--brand-dim);color:var(--brand-light)}

/* ============================================================================
   Layout — Shell
   ============================================================================ */
.saas-layout{
  display:flex;
  min-height:100vh;
}

/* ============================================================================
   Sidebar
   ============================================================================ */
.saas-sidebar{
  position:fixed;top:0;left:0;bottom:0;
  width:var(--sidebar-w);
  background:var(--s1);
  border-right:1px solid var(--s3);
  display:flex;flex-direction:column;
  z-index:100;
  transition:transform .25s cubic-bezier(.4,0,.2,1);
}

.saas-sidebar-brand{
  height:var(--topbar-h);
  display:flex;align-items:center;gap:12px;
  padding:0 18px;
  border-bottom:1px solid var(--s3);
  flex-shrink:0;
  text-decoration:none;
}
.saas-sidebar-brand:hover{background:var(--s2)}
.saas-sidebar-brand .si-logo{
  width:34px;height:34px;
  background:linear-gradient(135deg,var(--brand),var(--brand-light));
  border-radius:var(--radius-sm);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.saas-sidebar-brand .si-logo svg{width:18px;height:18px;fill:#fff}
.saas-sidebar-brand .si-title{
  font-size:15px;font-weight:700;color:var(--t1);
  letter-spacing:-.02em;
}
.saas-sidebar-brand .si-badge{
  font-size:10px;font-weight:600;color:var(--brand-light);
  background:var(--brand-dim);padding:2px 7px;border-radius:4px;
}

.saas-sidebar-nav{
  flex:1;overflow-y:auto;padding:12px 10px;
}
.saas-nav-group{margin-bottom:6px}
.saas-nav-label{
  font-size:10px;font-weight:600;text-transform:uppercase;
  letter-spacing:.1em;color:var(--t4);
  padding:14px 12px 8px;
  -webkit-user-select:none;user-select:none;
}

.saas-nav-item{
  display:flex;align-items:center;gap:11px;
  padding:9px 12px;border-radius:var(--radius-sm);
  color:var(--t2);font-size:13.5px;font-weight:500;
  text-decoration:none;
  transition:all .15s;
  position:relative;
}
.saas-nav-item:hover{background:var(--s2);color:var(--t1)}
.saas-nav-item.active{background:var(--brand-dim);color:var(--brand-light)}
.saas-nav-item svg{width:18px;height:18px;flex-shrink:0;opacity:.7}
.saas-nav-item:hover svg,.saas-nav-item.active svg{opacity:1}
.saas-nav-item.active svg{color:var(--brand-light)}
.saas-nav-badge{
  margin-left:auto;font-size:10px;font-weight:600;
  background:var(--s4);color:var(--t2);
  padding:2px 7px;border-radius:5px;
  min-width:22px;text-align:center;
}
.saas-nav-item.active .saas-nav-badge{background:var(--brand-dim);color:var(--brand-light)}

/* Sidebar Footer */
.saas-sidebar-footer{
  padding:12px;border-top:1px solid var(--s3);flex-shrink:0;
}
.saas-user-btn{
  display:flex;align-items:center;gap:10px;
  width:100%;padding:8px 10px;border-radius:var(--radius-sm);
  background:transparent;border:none;color:var(--t2);
  cursor:pointer;transition:all .15s;
  font-family:var(--font);font-size:13px;
}
.saas-user-btn:hover{background:var(--s2);color:var(--t1)}
.saas-user-avatar{
  width:30px;height:30px;border-radius:var(--radius-sm);
  background:linear-gradient(135deg,var(--brand),#a78bfa);
  display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;color:#fff;flex-shrink:0;
}
.saas-user-name{font-size:13px;font-weight:600;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.saas-user-role{font-size:11px;color:var(--t3)}

/* ============================================================================
   Main Content Area
   ============================================================================ */
.saas-main{
  flex:1;margin-left:var(--sidebar-w);
  display:flex;flex-direction:column;
  min-height:100vh;
}

/* ============================================================================
   Topbar — Glassmorphism
   ============================================================================ */
.saas-topbar{
  height:var(--topbar-h);
  background:rgba(14,14,20,.85);
  backdrop-filter:blur(20px) saturate(180%);
  -webkit-backdrop-filter:blur(20px) saturate(180%);
  border-bottom:1px solid var(--s3);
  display:flex;align-items:center;
  position:sticky;top:0;z-index:50;
  padding:0 28px;gap:16px;
}

/* Breadcrumb */
.saas-breadcrumb{
  display:flex;align-items:center;gap:8px;
  font-size:13px;color:var(--t3);
}
.saas-breadcrumb a{
  color:var(--t3);text-decoration:none;transition:color .15s;
}
.saas-breadcrumb a:hover{color:var(--t1)}
.saas-breadcrumb .sep{
  width:14px;height:14px;opacity:.4;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%2364647a' d='M6 4l4 4-4 4'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* Search */
.saas-search{
  position:relative;margin-left:auto;margin-right:8px;
}
.saas-search input{
  width:220px;padding:8px 12px 8px 36px;
  background:var(--s2);border:1px solid var(--s3);
  border-radius:var(--radius-sm);color:var(--t1);
  font-size:13px;font-family:var(--font);
  outline:none;transition:all .15s;
}
.saas-search input:focus{
  border-color:var(--brand-border);
  background:var(--s1);
  width:280px;box-shadow:0 0 0 3px var(--brand-dim);
}
.saas-search input::placeholder{color:var(--t4)}
.saas-search .search-icon{
  position:absolute;left:11px;top:50%;transform:translateY(-50%);
  width:16px;height:16px;color:var(--t4);
}

/* Topbar Icons */
.saas-topbar-icon{
  width:36px;height:36px;border-radius:var(--radius-sm);
  background:transparent;border:none;color:var(--t3);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:all .15s;position:relative;
}
.saas-topbar-icon:hover{background:var(--s2);color:var(--t1)}
.saas-topbar-icon .dot{
  position:absolute;top:8px;right:8px;
  width:7px;height:7px;border-radius:50%;
  background:var(--brand);
  border:2px solid var(--s1);
}

/* ============================================================================
   Content Area
   ============================================================================ */
.saas-content{padding:28px 32px 60px;max-width:1320px}

/* Page Header */
.saas-page-header{
  display:flex;align-items:flex-start;justify-content:space-between;
  margin-bottom:28px;flex-wrap:wrap;gap:16px;
}
.saas-page-header h1{
  font-size:26px;font-weight:700;color:var(--t1);
  letter-spacing:-.03em;margin-bottom:4px;
}
.saas-page-header p{
  font-size:14px;color:var(--t3);margin:0;
}

/* ============================================================================
   Buttons
   ============================================================================ */
.saas-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:9px 18px;border-radius:var(--radius-sm);
  font-size:13.5px;font-weight:600;cursor:pointer;
  border:none;text-decoration:none;
  font-family:var(--font);
  transition:all .15s;white-space:nowrap;
  line-height:1.4;
}
.saas-btn:focus-visible{outline:2px solid var(--brand-light);outline-offset:2px}

.saas-btn-primary{
  background:var(--brand);color:#fff;
  box-shadow:0 1px 2px rgba(0,0,0,.2), 0 0 0 1px rgba(255,255,255,.06);
}
.saas-btn-primary:hover{
  background:var(--brand-light);transform:translateY(-.5px);
  box-shadow:0 4px 14px var(--brand-dim), 0 0 0 1px rgba(255,255,255,.08);
}
.saas-btn-primary:active{transform:translateY(0)}

.saas-btn-secondary{
  background:var(--s2);color:var(--t2);
  border:1px solid var(--s4);
}
.saas-btn-secondary:hover{background:var(--s3);color:var(--t1);border-color:var(--s5)}

.saas-btn-ghost{
  background:transparent;color:var(--t2);
}
.saas-btn-ghost:hover{background:var(--s2);color:var(--t1)}

.saas-btn-sm{padding:6px 12px;font-size:12px;gap:5px}
.saas-btn-lg{padding:12px 24px;font-size:15px;border-radius:var(--radius)}

.saas-btn-danger{background:var(--red-dim);color:var(--red);border:1px solid rgba(239,68,68,.2)}
.saas-btn-danger:hover{background:rgba(239,68,68,.18)}

/* ============================================================================
   Cards
   ============================================================================ */
.saas-card{
  background:var(--s1);border:1px solid var(--s3);
  border-radius:var(--radius-lg);padding:24px;
  transition:all .2s;position:relative;overflow:hidden;
}
.saas-card:hover{border-color:var(--s4);box-shadow:var(--shadow-md)}
.saas-card-glass{
  background:linear-gradient(135deg,rgba(26,26,36,.8),rgba(20,20,28,.9));
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,.06);
}

/* ============================================================================
   Stat Cards
   ============================================================================ */
.saas-stat{
  display:flex;flex-direction:column;gap:6px;
}
.saas-stat-icon{
  width:38px;height:38px;border-radius:var(--radius-sm);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:4px;
  font-size:16px;
}
.saas-stat-icon svg{width:18px;height:18px}
.saas-stat-icon.purple{background:var(--brand-dim);color:var(--brand-light)}
.saas-stat-icon.green{background:var(--green-dim);color:var(--green)}
.saas-stat-icon.blue{background:var(--blue-dim);color:var(--blue)}
.saas-stat-icon.amber{background:var(--amber-dim);color:var(--amber)}
.saas-stat-icon.cyan{background:var(--cyan-dim);color:var(--cyan)}
.saas-stat-icon.red{background:var(--red-dim);color:var(--red)}

.saas-stat-value{
  font-size:30px;font-weight:800;color:var(--t1);
  letter-spacing:-.04em;line-height:1;
}
.saas-stat-label{font-size:13px;color:var(--t3);font-weight:500}
.saas-stat-sub{font-size:12px;font-weight:500;margin-top:2px}
.saas-stat-sub.good{color:var(--green)}
.saas-stat-sub.warn{color:var(--amber)}
.saas-stat-sub.bad{color:var(--red)}

/* Stat Sparkline (mini inline chart) */
.saas-stat-sparkline{
  display:flex;align-items:flex-end;gap:3px;
  height:28px;margin-top:6px;
}
.saas-stat-sparkline .bar{
  flex:1;min-width:3px;
  background:var(--brand);border-radius:2px 2px 0 0;
  opacity:.5;transition:opacity .15s;
}

/* ============================================================================
   Grid Systems
   ============================================================================ */
.saas-grid{display:grid;gap:16px}
.saas-grid-4{grid-template-columns:repeat(4,1fr)}
.saas-grid-3{grid-template-columns:repeat(3,1fr)}
.saas-grid-2{grid-template-columns:repeat(2,1fr)}
.saas-grid-1{grid-template-columns:1fr}
.saas-col-span-2{grid-column:span 2}
.saas-col-span-3{grid-column:span 3}
.saas-col-span-4{grid-column:span 4}
.saas-row-span-2{grid-row:span 2}

/* ============================================================================
   Chart Components
   ============================================================================ */

/* Bar Chart (CSS + SVG hybrid) */
.saas-chart{
  position:relative;width:100%;
}
.saas-chart-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:20px;
}
.saas-chart-title{font-size:14px;font-weight:600;color:var(--t1)}
.saas-chart-legend{
  display:flex;gap:16px;font-size:12px;color:var(--t3);
}
.saas-chart-legend span{display:flex;align-items:center;gap:6px}
.saas-chart-legend .dot{
  width:8px;height:8px;border-radius:50%;flex-shrink:0;
}

/* SVG Bar */
.saas-bars{display:flex;align-items:flex-end;gap:6px;height:160px}
.saas-bar-flex{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px}
.saas-bar-value{font-size:10px;color:var(--t4);font-weight:600}
.saas-bar-fill{
  width:100%;border-radius:4px 4px 0 0;
  background:linear-gradient(180deg,var(--brand-light),var(--brand));
  transition:height .6s cubic-bezier(.16,1,.3,1);
  min-width:16px;opacity:.85;
}
.saas-bar-fill.accent{
  background:linear-gradient(180deg,var(--cyan),#0891b2);
}
.saas-bar-label{
  font-size:10px;color:var(--t4);margin-top:4px;
  white-space:nowrap;
}

/* Donut Ring */
.saas-donut{
  position:relative;display:flex;align-items:center;justify-content:center;
  width:140px;height:140px;margin:0 auto;
}
.saas-donut svg{transform:rotate(-90deg)}
.saas-donut-center{
  position:absolute;text-align:center;
}
.saas-donut-value{font-size:22px;font-weight:800;color:var(--t1);letter-spacing:-.03em}
.saas-donut-label{font-size:11px;color:var(--t3);margin-top:2px}

/* ============================================================================
   Table
   ============================================================================ */
.saas-table-wrap{
  background:var(--s1);border:1px solid var(--s3);
  border-radius:var(--radius-lg);overflow:hidden;
}
.saas-table{
  width:100%;border-collapse:collapse;
}
.saas-table thead th{
  text-align:left;padding:12px 18px;
  font-size:11px;font-weight:600;text-transform:uppercase;
  letter-spacing:.06em;color:var(--t4);
  background:var(--s2);border-bottom:1px solid var(--s3);
  -webkit-user-select:none;user-select:none;
}
.saas-table tbody td{
  padding:13px 18px;font-size:13.5px;
  color:var(--t2);border-bottom:1px solid var(--s3);
  vertical-align:middle;
}
.saas-table tbody tr:last-child td{border-bottom:none}
.saas-table tbody tr{transition:background .12s}
.saas-table tbody tr:hover{background:var(--s2)}

/* Table cell helpers */
.saas-td-strong{font-weight:600;color:var(--t1)}
.saas-td-mono{font-family:var(--font-mono);font-size:12.5px}
.saas-td-muted{color:var(--t3);font-size:12px}

/* ============================================================================
   Badges
   ============================================================================ */
.saas-badge{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 10px;border-radius:5px;
  font-size:11.5px;font-weight:600;
  white-space:nowrap;
}
.saas-badge-success{background:var(--green-dim);color:var(--green)}
.saas-badge-warning{background:var(--amber-dim);color:var(--amber)}
.saas-badge-danger{background:var(--red-dim);color:var(--red)}
.saas-badge-info{background:var(--blue-dim);color:var(--blue)}
.saas-badge-muted{background:var(--s3);color:var(--t3)}
.saas-badge-brand{background:var(--brand-dim);color:var(--brand-light)}
.saas-badge-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}
.saas-badge-dot.green{background:var(--green)}
.saas-badge-dot.amber{background:var(--amber)}
.saas-badge-dot.red{background:var(--red)}

/* ============================================================================
   Forms
   ============================================================================ */
.saas-field{margin-bottom:18px}
.saas-label{
  display:block;font-size:12.5px;font-weight:600;color:var(--t2);
  margin-bottom:6px;
}
.saas-input,.saas-select,.saas-textarea{
  width:100%;padding:9px 14px;border-radius:var(--radius-sm);
  background:var(--s0);border:1px solid var(--s4);
  color:var(--t1);font-size:13.5px;font-family:var(--font);
  outline:none;transition:all .15s;
}
.saas-input:focus,.saas-select:focus,.saas-textarea:focus{
  border-color:var(--brand-border);
  box-shadow:0 0 0 3px var(--brand-dim);
}
.saas-input::placeholder{color:var(--t4)}
.saas-textarea{resize:vertical;min-height:80px}
.saas-select{
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath fill='%2364647a' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;
  padding-right:36px;cursor:pointer;
}

/* Form Row */
.saas-form-row{display:flex;gap:14px}
.saas-form-row .saas-field{flex:1;margin-bottom:0}

/* ============================================================================
   Payment Cards
   ============================================================================ */
.saas-pay-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.saas-pay-card{
  background:var(--s1);border:2px solid var(--s3);
  border-radius:var(--radius-lg);padding:20px 16px;
  text-align:center;cursor:pointer;transition:all .2s;
}
.saas-pay-card:hover{border-color:var(--s4)}
.saas-pay-card.selected{
  border-color:var(--brand);background:var(--brand-dim);
  box-shadow:var(--shadow-glow);
}
.saas-pay-card svg{width:32px;height:32px;margin-bottom:8px;opacity:.6}
.saas-pay-card.selected svg{opacity:1}
.saas-pay-card .pay-name{font-size:14px;font-weight:600;color:var(--t1)}
.saas-pay-card .pay-hint{font-size:11px;color:var(--t3);margin-top:3px}

/* Amount Grid */
.saas-amount-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.saas-amount-btn{
  background:var(--s1);border:2px solid var(--s3);
  border-radius:var(--radius);padding:14px;
  text-align:center;cursor:pointer;transition:all .2s;
  font-size:18px;font-weight:700;color:var(--t1);
  font-family:var(--font);
}
.saas-amount-btn:hover{border-color:var(--s4)}
.saas-amount-btn.selected{
  border-color:var(--brand);background:var(--brand-dim);
}
.saas-amount-btn .label{font-size:11px;color:var(--t3);font-weight:500;margin-top:2px}

/* ============================================================================
   Agent Card
   ============================================================================ */
.saas-agent-row{
  display:flex;align-items:center;gap:14px;
  padding:14px 18px;background:var(--s1);
  border:1px solid var(--s3);border-radius:var(--radius);
  transition:all .15s;
}
.saas-agent-row:hover{border-color:var(--s4);box-shadow:var(--shadow-sm)}
.saas-agent-row + .saas-agent-row{margin-top:8px}
.saas-agent-avatar{
  width:42px;height:42px;border-radius:var(--radius-sm);
  display:flex;align-items:center;justify-content:center;
  font-size:15px;font-weight:700;color:#fff;flex-shrink:0;
}
.saas-agent-avatar.l0{background:linear-gradient(135deg,var(--brand),var(--brand-light))}
.saas-agent-avatar.l1{background:linear-gradient(135deg,var(--cyan),#0891b2)}
.saas-agent-avatar.l2{background:linear-gradient(135deg,#6b7280,#4b5563)}
.saas-agent-info{flex:1;min-width:0}
.saas-agent-name{font-size:14px;font-weight:600;color:var(--t1)}
.saas-agent-meta{font-size:12px;color:var(--t3);margin-top:2px;display:flex;gap:12px}
.saas-agent-code{font-family:var(--font-mono);font-size:11.5px}
.saas-agent-balance{font-weight:700;color:var(--t1);font-size:15px}

/* ============================================================================
   Empty State
   ============================================================================ */
.saas-empty{
  text-align:center;padding:56px 20px;
}
.saas-empty svg{width:56px;height:56px;color:var(--s5);margin-bottom:16px}
.saas-empty h3{font-size:16px;font-weight:600;color:var(--t2);margin-bottom:8px}
.saas-empty p{font-size:13px;color:var(--t3);margin-bottom:20px;max-width:360px;margin-left:auto;margin-right:auto}

/* ============================================================================
   Flash / Toast
   ============================================================================ */
.saas-flash{
  display:flex;align-items:center;gap:10px;
  padding:12px 18px;border-radius:var(--radius);
  font-size:13px;font-weight:500;margin-bottom:20px;
  animation:fadeSlideIn .3s ease;
}
.saas-flash-success{background:var(--green-dim);color:var(--green);border:1px solid rgba(34,197,94,.2)}
.saas-flash-error{background:var(--red-dim);color:var(--red);border:1px solid rgba(239,68,68,.2)}
.saas-flash-info{background:var(--blue-dim);color:var(--blue);border:1px solid rgba(59,130,246,.2)}

/* ============================================================================
   Pagination
   ============================================================================ */
.saas-pagination{
  display:flex;align-items:center;justify-content:center;gap:4px;
  margin-top:24px;
}
.saas-pagination a,.saas-pagination span{
  padding:7px 12px;border-radius:var(--radius-sm);
  font-size:13px;font-weight:500;text-decoration:none;transition:all .15s;
}
.saas-pagination a{color:var(--t2);background:var(--s1);border:1px solid var(--s3)}
.saas-pagination a:hover{background:var(--s2);border-color:var(--s4);color:var(--t1)}
.saas-pagination .current{background:var(--brand);color:#fff;border-color:var(--brand)}
.saas-pagination .ellipsis{color:var(--t4);border:none;background:none}

/* ============================================================================
   Modal
   ============================================================================ */
.saas-modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.65);
  backdrop-filter:blur(3px);display:flex;align-items:center;
  justify-content:center;z-index:200;
  animation:fadeIn .2s ease;
}
.saas-modal{
  background:var(--s1);border:1px solid var(--s4);
  border-radius:var(--radius-xl);padding:28px;
  max-width:480px;width:92%;
  box-shadow:var(--shadow-lg);
  animation:scaleIn .25s cubic-bezier(.16,1,.3,1);
}
.saas-modal h2{font-size:18px;font-weight:700;color:var(--t1);margin-bottom:20px}

/* ============================================================================
   Drawer (slide panel)
   ============================================================================ */
.saas-drawer-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:190;
  opacity:0;pointer-events:none;transition:opacity .2s;
}
.saas-drawer-overlay.open{opacity:1;pointer-events:auto}
.saas-drawer{
  position:fixed;top:0;right:0;bottom:0;
  width:480px;max-width:100vw;
  background:var(--s1);border-left:1px solid var(--s3);
  z-index:200;transform:translateX(100%);
  transition:transform .3s cubic-bezier(.16,1,.3,1);
  overflow-y:auto;padding:28px;
}
.saas-drawer.open{transform:translateX(0)}
.saas-drawer-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:24px;
}
.saas-drawer-header h2{font-size:18px;font-weight:700;color:var(--t1)}
.saas-drawer-close{
  width:32px;height:32px;border-radius:var(--radius-sm);
  background:var(--s2);border:1px solid var(--s3);
  color:var(--t3);cursor:pointer;display:flex;
  align-items:center;justify-content:center;
  transition:all .15s;
}
.saas-drawer-close:hover{background:var(--s3);color:var(--t1)}

/* ============================================================================
   Dropdown Menu
   ============================================================================ */
.saas-dropdown{
  position:relative;display:inline-block;
}
.saas-dropdown-menu{
  position:absolute;top:calc(100% + 8px);right:0;
  min-width:200px;background:var(--s1);
  border:1px solid var(--s3);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);padding:6px;
  opacity:0;pointer-events:none;transform:translateY(-4px);
  transition:all .15s;
}
.saas-dropdown-menu.open{opacity:1;pointer-events:auto;transform:translateY(0)}
.saas-dropdown-item{
  display:flex;align-items:center;gap:10px;
  width:100%;padding:9px 12px;border-radius:var(--radius-sm);
  background:none;border:none;color:var(--t2);
  font-size:13px;cursor:pointer;text-decoration:none;
  font-family:var(--font);text-align:left;transition:all .12s;
}
.saas-dropdown-item:hover{background:var(--s2);color:var(--t1)}
.saas-dropdown-divider{height:1px;background:var(--s3);margin:4px 0}

/* ============================================================================
   Notification Popover
   ============================================================================ */
.saas-notif-popover{
  position:absolute;top:calc(100% + 8px);right:0;
  width:360px;max-height:400px;overflow-y:auto;
  background:var(--s1);border:1px solid var(--s3);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);
  opacity:0;pointer-events:none;transform:translateY(-4px);
  transition:all .15s;
}
.saas-notif-popover.open{opacity:1;pointer-events:auto;transform:translateY(0)}

/* ============================================================================
   Animations
   ============================================================================ */
@keyframes fadeSlideIn{
  from{opacity:0;transform:translateY(-8px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes fadeIn{
  from{opacity:0}
  to{opacity:1}
}
@keyframes scaleIn{
  from{opacity:0;transform:scale(.95)}
  to{opacity:1;transform:scale(1)}
}
@keyframes shimmer{
  0%{background-position:-200% 0}
  100%{background-position:200% 0}
}

/* Entrance animation classes */
.anim-in{animation:fadeSlideIn .4s ease both}
.anim-d1{animation-delay:.05s}
.anim-d2{animation-delay:.1s}
.anim-d3{animation-delay:.15s}
.anim-d4{animation-delay:.2s}

/* Skeleton loading */
.saas-skeleton{
  background:linear-gradient(90deg,var(--s2) 25%,var(--s3) 50%,var(--s2) 75%);
  background-size:200% 100%;
  animation:shimmer 1.5s infinite;
  border-radius:var(--radius-sm);
}
.saas-skeleton-text{height:14px;width:100%}
.saas-skeleton-title{height:20px;width:60%}
.saas-skeleton-circle{width:40px;height:40px;border-radius:50%}

/* ============================================================================
   Responsive
   ============================================================================ */
@media(max-width:1100px){
  .saas-grid-4{grid-template-columns:repeat(2,1fr)}
  .saas-grid-3{grid-template-columns:repeat(2,1fr)}
  .saas-col-span-2,.saas-col-span-3,.saas-col-span-4{grid-column:span 2}
  .saas-amount-grid{grid-template-columns:repeat(2,1fr)}
  .saas-pay-grid{grid-template-columns:1fr}
}

@media(max-width:768px){
  .saas-sidebar{
    transform:translateX(-100%);
    box-shadow:var(--shadow-lg);
  }
  .saas-sidebar.open{transform:translateX(0)}
  .saas-main{margin-left:0}
  .saas-grid-4,.saas-grid-3,.saas-grid-2{grid-template-columns:1fr}
  .saas-col-span-2,.saas-col-span-3,.saas-col-span-4{grid-column:span 1}
  .saas-content{padding:18px 16px 40px}
  .saas-topbar{padding:0 14px}
  .saas-page-header h1{font-size:22px}
  .saas-search input{width:140px}
  .saas-search input:focus{width:180px}
  .saas-amount-grid{grid-template-columns:repeat(2,1fr)}
  .saas-form-row{flex-direction:column}
}

/* Mobile menu button */
.saas-menu-btn{
  display:none;
  width:34px;height:34px;border-radius:var(--radius-sm);
  background:var(--s2);border:1px solid var(--s3);
  align-items:center;justify-content:center;
  cursor:pointer;color:var(--t2);flex-shrink:0;
  transition:all .15s;
}
.saas-menu-btn:hover{background:var(--s3);color:var(--t1)}
@media(max-width:768px){.saas-menu-btn{display:flex}}
