:root{
  --ink-950:#0A0E1A; --ink-900:#121729; --ink-800:#1B2338; --ink-700:#252F49;
  --mist-50:#F6F7FB; --white:#FFFFFF; --line-light:#E7E9F2; --line-dark:#2A3350;
  --indigo-500:#4F6BFF; --indigo-400:#7C93FF; --indigo-100:#E7ECFF;
  --slate-900:#0F172A; --slate-600:#5B6478; --slate-400:#8A93A8;
  --green:#16A34A; --amber:#D97706; --red:#DC2626;
  --bg:var(--mist-50); --surface:var(--white); --border:var(--line-light);
  --text:var(--slate-900); --text-dim:var(--slate-600); --text-faint:var(--slate-400);
  --radius:16px; --radius-sm:10px;
  --shadow:0 1px 2px rgba(15,23,42,.04), 0 8px 24px -8px rgba(15,23,42,.08);
}
[data-theme="dark"]{
  --bg:var(--ink-950); --surface:var(--ink-900); --border:var(--line-dark);
  --text:#EDF0F8; --text-dim:#A6AFC6; --text-faint:#6E7897;
  --shadow:0 1px 2px rgba(0,0,0,.3), 0 12px 32px -12px rgba(0,0,0,.55);
}
*{box-sizing:border-box; margin:0; padding:0;}
body{
  font-family:'Inter',system-ui,sans-serif; background:var(--bg); color:var(--text);
  -webkit-font-smoothing:antialiased; transition:background .25s ease, color .25s ease;
  min-height:100vh; overscroll-behavior:none;
}
.num, .metric-value{ font-variant-numeric: tabular-nums; }
h1,h2,h3,.display{ font-family:'Space Grotesk',sans-serif; letter-spacing:-.01em; }

/* ---------- LOGIN ---------- */
#login{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px; }
.login-card{ width:100%; max-width:380px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:36px 28px; box-shadow:var(--shadow); }
.brand{ display:flex; align-items:center; gap:10px; margin-bottom:28px; }
.brand-mark{ width:34px; height:34px; border-radius:9px; background:linear-gradient(135deg,var(--indigo-400),var(--indigo-500)); position:relative; flex-shrink:0; }
.brand-mark::after{ content:""; position:absolute; inset:9px; border:2px solid rgba(255,255,255,.85); border-radius:4px; }
.brand-name{ font-family:'Space Grotesk'; font-weight:600; font-size:15px; line-height:1.15; }
.brand-name span{ display:block; font-family:'Inter'; font-weight:500; font-size:11px; color:var(--text-faint); letter-spacing:.04em; text-transform:uppercase; margin-top:2px;}
.login-card h1{ font-size:22px; font-weight:600; margin-bottom:6px; }
.login-card p{ color:var(--text-dim); font-size:13.5px; margin-bottom:24px; }
.field{ margin-bottom:14px; }
.field label{ display:block; font-size:12.5px; font-weight:500; color:var(--text-dim); margin-bottom:6px; }
.field input{ width:100%; padding:11px 13px; border-radius:var(--radius-sm); border:1px solid var(--border); background:var(--bg); color:var(--text); font-size:14px; font-family:inherit; }
.field input:focus{ outline:2px solid var(--indigo-500); outline-offset:1px; border-color:transparent; }
.btn-primary{ width:100%; padding:12px; border-radius:var(--radius-sm); border:none; background:var(--indigo-500); color:#fff; font-weight:600; font-size:14px; cursor:pointer; margin-top:6px; transition:transform .15s, opacity .15s; font-family:inherit; }
.btn-primary:active{ transform:scale(.98); }
.btn-primary:disabled{ opacity:.6; cursor:default; }
.btn-ghost{ width:100%; padding:11px; border-radius:var(--radius-sm); border:1px solid var(--border); background:transparent; color:var(--text-dim); font-weight:500; font-size:13.5px; cursor:pointer; margin-top:10px; font-family:inherit; }
.login-note{ margin-top:14px; font-size:11.5px; color:var(--text-faint); text-align:center; line-height:1.5; }
.login-error{ background:rgba(220,38,38,.1); color:var(--red); font-size:12.5px; font-weight:500; padding:9px 12px; border-radius:var(--radius-sm); margin-bottom:14px; display:none; }
.login-error.show{ display:block; }

/* ---------- APP SHELL ---------- */
#app{ display:none; min-height:100vh; }
#app.active{ display:flex; }
.sidebar{ width:230px; flex-shrink:0; background:var(--surface); border-right:1px solid var(--border); padding:22px 14px; display:none; flex-direction:column; }
.sidebar .brand{ padding:0 8px; margin-bottom:26px; }
.nav-item{ display:flex; align-items:center; gap:11px; padding:10px 12px; border-radius:var(--radius-sm); color:var(--text-dim); font-size:13.5px; font-weight:500; cursor:pointer; margin-bottom:2px; transition:background .15s,color .15s; }
.nav-item.active{ background:var(--indigo-100); color:var(--indigo-500); }
[data-theme="dark"] .nav-item.active{ background:rgba(79,107,255,.16); color:var(--indigo-400); }
.nav-item:not(.active):hover{ background:var(--bg); }
.sidebar-footer{ margin-top:auto; padding:12px 8px; border-top:1px solid var(--border); display:flex; flex-direction:column; gap:10px; }
.logout-link{ font-size:12px; color:var(--text-faint); cursor:pointer; }

.main{ flex:1; min-width:0; padding-bottom:90px; }
.topbar{ display:flex; align-items:center; justify-content:space-between; padding:18px 20px; border-bottom:1px solid var(--border); position:sticky; top:0; background:var(--bg); z-index:10; backdrop-filter:blur(8px); }
.topbar h2{ font-size:18px; font-weight:600; }
.business-pill{ font-size:11px; font-weight:600; color:var(--indigo-500); background:var(--indigo-100); padding:4px 10px; border-radius:20px; letter-spacing:.02em; }
[data-theme="dark"] .business-pill{ background:rgba(79,107,255,.16); color:var(--indigo-400); }
.theme-toggle{ display:flex; gap:2px; background:var(--surface); border:1px solid var(--border); border-radius:20px; padding:3px; }
.theme-toggle button{ border:none; background:transparent; width:26px; height:26px; border-radius:50%; font-size:12px; cursor:pointer; color:var(--text-faint); }
.theme-toggle button.active{ background:var(--indigo-500); color:#fff; }

.view{ display:none; padding:20px; animation:fadeUp .35s ease; }
.view.active{ display:block; }
@keyframes fadeUp{ from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:translateY(0);} }

.period-row{ display:flex; gap:8px; overflow-x:auto; padding-bottom:4px; margin-bottom:18px; -ms-overflow-style:none; scrollbar-width:none; }
.period-row::-webkit-scrollbar{ display:none; }
.chip{ flex-shrink:0; padding:7px 14px; border-radius:20px; border:1px solid var(--border); background:var(--surface); font-size:12.5px; font-weight:500; color:var(--text-dim); cursor:pointer; white-space:nowrap; }
.chip.active{ background:var(--indigo-500); border-color:var(--indigo-500); color:#fff; }

.demo-banner{ display:flex; align-items:center; gap:8px; background:linear-gradient(90deg,rgba(217,119,6,.12),rgba(217,119,6,.03)); border:1px solid rgba(217,119,6,.28); color:var(--amber); font-size:12px; font-weight:600; padding:9px 13px; border-radius:var(--radius-sm); margin-bottom:18px; }
.demo-banner .pulse{ width:6px; height:6px; border-radius:50%; background:var(--amber); animation:pulse 1.8s infinite; flex-shrink:0; }
@keyframes pulse{ 0%,100%{opacity:1;} 50%{opacity:.35;} }

.metrics-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-bottom:22px; }
.metric-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:16px; box-shadow:var(--shadow); }
.metric-card .label{ font-size:11.5px; color:var(--text-faint); font-weight:600; text-transform:uppercase; letter-spacing:.04em; margin-bottom:8px; }
.metric-card .metric-value{ font-family:'Space Grotesk'; font-size:24px; font-weight:600; line-height:1.1; }
.metric-card .delta{ font-size:11.5px; font-weight:600; margin-top:6px; display:inline-flex; align-items:center; gap:3px; }
.delta.up{ color:var(--green); } .delta.down{ color:var(--red); }
.metric-card.hero{ grid-column:1/-1; background:linear-gradient(135deg,var(--indigo-500),#3450E0); color:#fff; border:none; }
.metric-card.hero .label{ color:rgba(255,255,255,.75); }
.metric-card.hero .metric-value{ font-size:32px; }
.metric-card.hero .roas-row{ display:flex; gap:22px; margin-top:12px; }
.metric-card.hero .roas-row div span{ display:block; font-size:10.5px; color:rgba(255,255,255,.7); text-transform:uppercase; letter-spacing:.04em; margin-bottom:2px;}
.metric-card.hero .roas-row div strong{ font-family:'Space Grotesk'; font-size:17px; }

.section-title{ font-size:14px; font-weight:600; margin:26px 0 12px; display:flex; align-items:center; justify-content:space-between; }
.section-title span.sub{ font-size:11.5px; font-weight:500; color:var(--text-faint); }

.funnel-wrap{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:22px 18px; box-shadow:var(--shadow); }
.funnel-stage{ position:relative; margin:0 auto; border-radius:14px; padding:13px 16px; display:flex; align-items:center; justify-content:space-between; color:#fff; font-size:12.5px; font-weight:600; }
.funnel-stage .n{ font-family:'Space Grotesk'; font-size:17px; }
.funnel-connector{ width:2px; height:16px; background:linear-gradient(var(--indigo-400),transparent); margin:0 auto; opacity:.6; }

.campaign-card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:14px 16px; margin-bottom:10px; box-shadow:var(--shadow); }
.campaign-card .top{ display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:10px; }
.campaign-card .name{ font-weight:600; font-size:13.5px; }
.campaign-card .obj{ font-size:11.5px; color:var(--text-faint); margin-top:2px; }
.status-badge{ font-size:10px; font-weight:700; padding:3px 8px; border-radius:20px; text-transform:uppercase; letter-spacing:.03em; }
.status-badge.active{ background:rgba(22,163,74,.12); color:var(--green); }
.status-badge.paused{ background:rgba(217,119,6,.12); color:var(--amber); }
.campaign-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.campaign-stats .l{ font-size:9.5px; color:var(--text-faint); text-transform:uppercase; letter-spacing:.03em; margin-bottom:3px; font-weight:600;}
.campaign-stats .v{ font-size:12.5px; font-weight:600; font-family:'Space Grotesk'; }
.best-tag{ font-size:10px; font-weight:700; color:var(--indigo-500); margin-top:8px; display:inline-block; }

.insight-card{ display:flex; gap:11px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:13px 15px; margin-bottom:10px; box-shadow:var(--shadow); }
.insight-card .icon{ width:8px; height:8px; border-radius:50%; margin-top:5px; flex-shrink:0; }
.insight-card.good .icon{ background:var(--green);} .insight-card.warn .icon{ background:var(--amber);} .insight-card.bad .icon{ background:var(--red);}
.insight-card p{ font-size:13px; line-height:1.4; }
.insight-card .tag{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; display:block; margin-bottom:3px; }
.insight-card.good .tag{ color:var(--green);} .insight-card.warn .tag{ color:var(--amber);} .insight-card.bad .tag{ color:var(--red);}

.bottom-nav{ position:fixed; bottom:0; left:0; right:0; background:var(--surface); border-top:1px solid var(--border); display:flex; padding:8px 4px calc(8px + env(safe-area-inset-bottom)); z-index:20; }
.bn-item{ flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; padding:6px 0; color:var(--text-faint); cursor:pointer; }
.bn-item.active{ color:var(--indigo-500); }
.bn-icon{ width:20px; height:20px; }
.bn-label{ font-size:10px; font-weight:600; }

.placeholder-view{ background:var(--surface); border:1px dashed var(--border); border-radius:var(--radius); padding:40px 20px; text-align:center; color:var(--text-faint); font-size:13px; }
.placeholder-view strong{ display:block; color:var(--text); font-size:15px; margin-bottom:6px; font-family:'Space Grotesk'; }

.skeleton{ background:linear-gradient(90deg,var(--border) 25%,var(--bg) 50%,var(--border) 75%); background-size:200% 100%; animation:shimmer 1.4s infinite; border-radius:var(--radius); height:80px; }
@keyframes shimmer{ 0%{background-position:200% 0;} 100%{background-position:-200% 0;} }

@media (min-width:860px){
  .sidebar{ display:flex; }
  .bottom-nav{ display:none; }
  .main{ padding-bottom:20px; }
  .metrics-grid{ grid-template-columns:repeat(4,1fr); }
  .metric-card.hero{ grid-column:span 2; }
  .view{ padding:28px 34px; max-width:1100px; }
}
