/* ==========================
   Theme variables
   ========================== */
:root{} /* fallback */

[data-theme="dark"] {
  /* Colors */
  --bg: #0b0b0b;
  --panel: #141414;
  --panel-2: #1a1a1a;
  --sidebar: #101010;
  --border: #2a2a2a;
  --muted: #9ca3af;
  --text: #e5e7eb;
  --brand: #555;
  --brand-2: #888;
  --success: #22c55e;
  --warning: #eab308;
  --info: #3b82f6;
  --danger: #ef4444;
  --chip: #1c1c1c;

  /* Radii & shadows */
  --radius: 14px;
  --shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
  --shadow-hover: 0 16px 40px rgba(0, 0, 0, 0.45);

  /* Spacing */
  --pad-content: 22px;
  --gap-tiles: 24px;       /* space between cards in a grid */
  --gap-section: 40px;     /* space between major sections/blocks */
}

[data-theme="light"] {
  /* Colors */
  --bg: #f7f9fc;
  --panel: #ffffff;
  --panel-2: #ffffff;
  --sidebar: #f1f4fb;
  --border: #e3e8f5;
  --muted: #64748b;
  --text: #0b1220;
  --brand: #4f46e5;
  --brand-2: #06b6d4;
  --success: #16a34a;
  --warning: #d97706;
  --info: #2563eb;
  --danger: #e11d48;
  --chip: #eef2ff;

  /* Radii & shadows */
  --radius: 14px;
  --shadow: 0 8px 24px rgba(2,6,23,.06);
  --shadow-hover: 0 18px 48px rgba(2,6,23,.10);

  /* Spacing */
  --pad-content: 22px;
  --gap-tiles: 24px;
  --gap-section: 40px;
}

/* ==========================
   Base
   ========================== */
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  background:var(--bg); color:var(--text);
}
img{max-width:100%; display:block}
a{color:inherit; text-decoration:none}

/* ==========================
   Topbar
   ========================== */
.topbar{
  position:sticky; top:0; z-index:50;
  display:flex; align-items:center; justify-content:space-between;
  gap:16px; padding:10px 16px;
  background:rgba(15,15,15,.85); backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--border);
}
[data-theme="light"] .topbar{ background:rgba(255,255,255,.85); }

.icon-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:38px; height:38px; border-radius:10px; color:#ccc;
  background:var(--panel-2); border:1px solid var(--border); cursor:pointer;
  transition:transform .15s ease, filter .15s ease, box-shadow .15s ease;
}
[data-theme="light"] .icon-btn{ color:#334155 }
.icon-btn:hover{ filter:brightness(0.98); transform:translateY(-1px) }

.brand{display:flex; align-items:center; gap:10px; font-weight:600}
.brand-logo{
  width:28px; height:28px; border-radius:8px;
  display:grid; place-items:center; background:linear-gradient(135deg,#333,#777);
  color:#fff; font-weight:800;
}
.brand-text{letter-spacing:.2px}
.crumbs{color:var(--muted); font-weight:500}

.topbar-actions{display:flex; align-items:center; gap:10px}
.search{display:flex; align-items:center; gap:8px; background:var(--panel-2); border:1px solid var(--border); padding:6px 10px; border-radius:10px}
.search input{all:unset; width:200px; color:inherit}
.avatar{display:flex; align-items:center; gap:8px; padding:4px 8px; border:1px solid var(--border); border-radius:999px; background:var(--panel-2)}
.avatar img{width:28px; height:28px; border-radius:50%}
.hide-sm{display:inline}

/* Theme toggle icon swap */
.theme-toggle .icon-sun{ display:none; }
.theme-toggle .icon-moon{ display:block; }
[data-theme="light"] .theme-toggle .icon-sun{ display:block; }
[data-theme="light"] .theme-toggle .icon-moon{ display:none; }

/* ==========================
   Layout
   ========================== */
.app{display:grid; grid-template-columns:260px 1fr; min-height:calc(100vh - 60px)}
.sidebar{ background:var(--sidebar); border-right:1px solid var(--border) }
.sidebar-inner{position:sticky; top:60px; padding:18px 14px 24px}
.sidebar-title{color:var(--muted); font-size:12px; letter-spacing:.08em; text-transform:uppercase; margin-bottom:10px}
.menu-section{margin:18px 8px 8px; font-size:12px; color:var(--muted); text-transform:uppercase; letter-spacing:.08em}
.menu-item{
  display:flex; align-items:center; gap:10px;
  padding:10px 12px; margin:4px; border-radius:10px; color:inherit; border:1px solid transparent;
}
.menu-item:hover{background:var(--panel-2); border-color:var(--border)}
.menu-item.active{background:linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.04)); border-color:#333}

.content{
  padding:var(--pad-content);
  max-width:1400px; width:100%; margin:0 auto;
}

/* Universal section spacing */
.content > * + * { margin-top: var(--gap-section); }
section{ margin:0; padding:0; }

/* Page header */
.page-head{
  display:flex; align-items:center; justify-content:space-between;
  margin:0 0 calc(var(--gap-section) * .6);
}
.h1{font-size:22px; margin:0}
.head-actions{display:flex; gap:10px}

/* ==========================
   Cards, grids & tiles
   ========================== */
.card{
  background:var(--panel); border:1px solid var(--border);
  border-radius:var(--radius); box-shadow:var(--shadow); padding:16px; overflow:hidden;
  transition:transform .18s ease, box-shadow .18s ease;
}
.card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-hover); }

.card-head{display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px}

/* Grids */
.grid{ display:grid; gap:var(--gap-tiles); }
.grid-3{ grid-template-columns:repeat(3,1fr); }
.grid-2{ grid-template-columns:1.3fr .9fr; }

.stack .card + .card{ margin-top: var(--gap-tiles); }

/* Buttons */
.btn{
  display:inline-flex; align-items:center; gap:8px; padding:10px 14px;
  border-radius:10px; border:1px solid var(--border); background:var(--panel-2);
  color:var(--text); cursor:pointer; transition:transform .15s ease, box-shadow .15s ease;
}
.btn:hover{ filter:brightness(0.98); transform:translateY(-1px) }
.btn-primary{background:linear-gradient(135deg,var(--brand),var(--brand-2)); color:#fff; border:0; font-weight:700}
.btn-ghost{background:transparent}
.btn.sm{padding:6px 10px; font-size:12px}

/* ==========================
   KPI
   ========================== */
.kpi-top{display:flex; align-items:center; justify-content:space-between; color:var(--muted)}
.kpi-label{font-weight:600}
.kpi-value{font-size:28px; font-weight:800; margin:6px 0 10px}
.kpi-chip{font-size:12px; padding:4px 8px; border-radius:999px; border:1px solid var(--border); background:var(--panel-2)}
.kpi-chip.success{color:#22c55e}
.kpi-chip.warning{color:#facc15}
.kpi-chip.info{color:#60a5fa}

/* Modern grayscale spark effect */
.spark{
  height:56px;
  background:
    radial-gradient(120px 40px at 0% 80%, rgba(100,100,100,.25), transparent 60%),
    radial-gradient(140px 60px at 40% 10%, rgba(160,160,160,.2), transparent 60%),
    radial-gradient(200px 80px at 100% 60%, rgba(80,80,80,.2), transparent 60%);
  border-radius:10px; border:1px dashed var(--border);
}
.spark.bars{
  background:
    linear-gradient(180deg, rgba(200,200,200,.25), rgba(255,255,255,0)) 0/10px 100% repeat-x,
    linear-gradient(180deg, rgba(150,150,150,.25), rgba(255,255,255,0)) 5px/10px 100% repeat-x;
  opacity:.6
}

/* ==========================
   Chart placeholder
   ========================== */
.chart-canvas{height:220px; border:1px dashed var(--border); border-radius:12px; position:relative; overflow:hidden; background:var(--panel-2)}
.waves::before, .waves::after{
  content:""; position:absolute; inset:-30% -10% auto -10%; height:140%;
  background:conic-gradient(from 180deg at 50% 50%, rgba(100,100,100,.25), rgba(180,180,180,.3), rgba(100,100,100,.25));
  filter:blur(24px); opacity:.4; animation:float 12s ease-in-out infinite alternate;
}
.waves::after{animation-duration:16s; opacity:.3}
@keyframes float{to{transform:translateY(-12px) scale(1.03)}}

/* ==========================
   Table
   ========================== */
.table-wrap{overflow:auto}
.table{width:100%; border-collapse:collapse; min-width:640px}
.table th,.table td{padding:12px 10px; border-bottom:1px solid var(--border); text-align:left; white-space:nowrap}
.table thead th{font-size:12px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted)}
.pos{color:#22c55e} .neg{color:#ef4444}
.badge{padding:4px 8px; border-radius:999px; font-size:12px; border:1px solid var(--border); background:var(--panel-2)}

/* ==========================
   Simple list
   ========================== */
.list{list-style:none; padding:0; margin:0}
.list li{padding:12px 2px; border-bottom:1px solid var(--border)}

/* ==========================
   Chips
   ========================== */
.chip-row{display:flex; flex-wrap:wrap; gap:8px}
.chip{font-size:12px; color:inherit; padding:6px 10px; border-radius:999px; background:var(--chip); border:1px solid var(--border)}

/* ==========================
   Mobile sidebar overlay
   ========================== */
.backdrop{
  position:fixed; inset:0; background:rgba(0,0,0,.45); opacity:0; pointer-events:none; transition:.2s;
}
.backdrop.show{opacity:1; pointer-events:auto}
.no-scroll{overflow:hidden}

/* ==========================
   Responsive
   ========================== */
@media (max-width: 1200px){
  .grid-3{grid-template-columns:repeat(2,1fr)}
  .grid-2{grid-template-columns:1fr}
}

@media (max-width: 960px){
  .app{grid-template-columns:1fr}
  .sidebar{
    position:fixed; inset:0 auto 0 0; width:290px; transform:translateX(-102%);
    transition:transform .2s ease; z-index:60; box-shadow:var(--shadow);
  }
  .sidebar.open{transform:translateX(0)}
  .sidebar-inner{top:0; height:100%; overflow:auto}
  .content{padding:16px}
  .search input{width:120px}
  .hide-sm{display:none}
  .grid-3{grid-template-columns:1fr}
}

@media (max-width: 520px){
  :root, [data-theme="dark"], [data-theme="light"]{
    --gap-tiles:16px;
    --gap-section:28px;
  }

  .topbar{padding:8px 12px}
  .search{display:none}
  .btn{padding:8px 12px}
  .card{padding:14px}
  .kpi-value{font-size:24px}
}
