/* ============================================================
   Car Market Insights — light "studio" theme
   Soft, friendly, high-contrast. Distinctive without being loud.
   ============================================================ */
:root{
  --bg:#eef1f6;
  --bg-2:#f6f8fb;
  --panel:#ffffff;
  --panel-2:#f8fafc;
  --line:#e5eaf1;
  --line-2:#d3dbe6;
  --txt:#39424f;
  --txt-dim:#727c89;
  --txt-bright:#1b232d;
  --accent:#2f6fed;        /* friendly blue — links, primary, active */
  --accent-strong:#1f5ad6;
  --accent-soft:rgba(47,111,237,.10);
  --accent-line:rgba(47,111,237,.30);
  --warm:#f59e0b;          /* small brand highlight */
  --green:#15a36b;
  --green-soft:rgba(21,163,107,.12);
  --red:#e0524d;
  --red-soft:rgba(224,82,77,.12);
  --warm-soft:rgba(245,158,11,.14);
  --shadow:0 1px 2px rgba(22,33,55,.06), 0 8px 24px rgba(22,33,55,.05);
  --mono:'IBM Plex Mono',ui-monospace,monospace;
  --sans:'IBM Plex Sans',system-ui,sans-serif;
  --disp:'Chakra Petch',var(--sans);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body.app{
  background:
    radial-gradient(900px 480px at 88% -8%, rgba(47,111,237,.07), transparent 60%),
    linear-gradient(var(--bg-2),var(--bg));
  background-attachment:fixed;
  color:var(--txt);
  font-family:var(--sans);
  font-size:15px;
  line-height:1.5;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{font-family:var(--disp);color:var(--txt-bright);letter-spacing:.2px;font-weight:600}
code{font-family:var(--mono);background:var(--bg);padding:1px 5px;border-radius:4px;font-size:.85em;color:var(--txt-bright)}
.mono{font-family:var(--mono)}
.muted{color:var(--txt-dim)}
.num{text-align:right}

/* ---- Top bar ---- */
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 26px;border-bottom:1px solid var(--line);
  background:rgba(255,255,255,.8);backdrop-filter:blur(8px);
  position:sticky;top:0;z-index:20;
}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--disp);font-weight:700;letter-spacing:.4px}
.brand-mark{color:var(--warm);font-size:18px}
.brand-name{color:var(--txt-bright)}
.brand-tag{font-family:var(--mono);font-size:10px;color:var(--accent);background:var(--accent-soft);
  padding:2px 7px;border-radius:5px;letter-spacing:1px;font-weight:600}
.brand.big{font-size:20px;justify-content:center;margin-bottom:18px}
.topnav{display:flex;gap:18px;align-items:center;font-family:var(--mono);font-size:13px}
.topnav a{color:var(--txt-dim);text-decoration:none;padding:4px 2px;border-bottom:2px solid transparent}
.topnav a:hover{color:var(--txt-bright)}
.topnav a.on{color:var(--accent);border-bottom-color:var(--accent)}

/* ---- Layout ---- */
.wrap{max-width:1180px;margin:0 auto;padding:28px 26px 60px}
.page-h{margin:6px 0 4px;font-size:26px}
.foot{border-top:1px solid var(--line);padding:18px 26px;color:var(--txt-dim);
  font-family:var(--mono);font-size:12px;text-align:center}

/* ---- Panels ---- */
.panel{background:var(--panel);border:1px solid var(--line);
  border-radius:14px;padding:22px;margin:20px 0;box-shadow:var(--shadow)}
.panel.narrow{max-width:560px}
.panel h2{margin:0 0 14px;font-size:14px;text-transform:uppercase;letter-spacing:1.2px;color:var(--txt-dim)}
.panel-head{display:flex;align-items:center;justify-content:space-between}
.head-actions{display:flex;gap:8px;align-items:center}
.count{font-family:var(--mono);background:var(--accent);color:#fff;border-radius:20px;
  padding:1px 9px;font-size:12px;font-weight:600;margin-left:8px}

/* ---- Stat grid ---- */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px 16px;
  display:block;color:inherit;text-decoration:none;box-shadow:var(--shadow);transition:transform .12s,border-color .12s}
.stat:hover{border-color:var(--accent-line);text-decoration:none;transform:translateY(-1px)}
.stat.flag{border-color:var(--warm);background:linear-gradient(var(--panel),#fffdf7)}
.stat-num{font-family:var(--disp);font-size:30px;font-weight:700;color:var(--txt-bright);line-height:1}
.stat-lbl{font-family:var(--mono);font-size:11px;color:var(--txt-dim);text-transform:uppercase;
  letter-spacing:1px;margin-top:8px}
.stat.flag .stat-num{color:#b97e08}
@media(max-width:760px){.stat-grid{grid-template-columns:repeat(2,1fr)}}

/* ---- Tables ---- */
.table-scroll{overflow:auto;border-radius:10px;border:1px solid var(--line)}
table.grid{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--panel)}
table.grid thead th{position:sticky;top:0;background:var(--panel-2);color:var(--txt-dim);
  font-family:var(--mono);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.8px;
  text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}
table.grid td{padding:9px 12px;border-bottom:1px solid var(--line)}
table.grid tbody tr:last-child td{border-bottom:0}
table.grid tbody tr:hover{background:var(--accent-soft)}
table.grid th.num,table.grid td.num{text-align:right}

.conf{font-family:var(--mono);font-size:10px;text-transform:uppercase;padding:2px 7px;border-radius:5px;letter-spacing:.5px;font-weight:600}
.c-high{background:var(--green-soft);color:#0e7a4f}
.c-medium{background:var(--warm-soft);color:#b97e08}
.c-low{background:var(--red-soft);color:#c33b36}

/* ---- Forms ---- */
label.block{display:block;margin:14px 0;font-family:var(--mono);font-size:12px;
  text-transform:uppercase;letter-spacing:.5px;color:var(--txt-dim)}
label.block input,label.block select,label.block textarea,.searchbar input{
  display:block;width:100%;margin-top:6px;background:#fff;border:1px solid var(--line-2);
  color:var(--txt-bright);border-radius:9px;padding:10px 12px;font-family:var(--sans);
  font-size:14px;text-transform:none;letter-spacing:0}
textarea{resize:vertical;font-family:var(--sans)}
label.block input:focus,label.block select:focus,label.block textarea:focus,.searchbar input:focus{
  outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
label.inline{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);
  font-size:13px;color:var(--txt);text-transform:none}
small.muted{display:block;margin-top:5px;text-transform:none;letter-spacing:0}

.btn{font-family:var(--mono);font-size:13px;border:1px solid var(--line-2);background:#fff;
  color:var(--txt-bright);padding:9px 16px;border-radius:9px;cursor:pointer;letter-spacing:.4px;
  transition:border-color .12s,background .12s,color .12s}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.btn.primary:hover{background:var(--accent-strong);color:#fff;border-color:var(--accent-strong)}
.btn.danger:hover{border-color:var(--red);color:var(--red)}
.btn.ghost{background:transparent}
.btn.full{width:100%;margin-top:10px}
.btn.working{opacity:.7;cursor:wait}

.examples{margin:6px 0 16px;font-family:var(--mono);font-size:12px;color:var(--txt-dim);display:flex;
  flex-wrap:wrap;gap:8px;align-items:center}
.chip{background:#fff;border:1px dashed var(--line-2);color:var(--txt);border-radius:20px;
  padding:5px 12px;cursor:pointer;font-family:var(--mono);font-size:12px}
.chip:hover{border-color:var(--accent);color:var(--accent);border-style:solid}

.review-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:6px 0 14px}
.searchbar{display:flex;gap:10px;align-items:center;margin-bottom:16px;max-width:560px}
.searchbar input{margin-top:0}

.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0 16px}
.form-grid .span2{grid-column:span 2}
.form-grid .span-all{grid-column:1/-1}
.form-actions{display:flex;gap:10px;align-items:center;margin-top:12px}
.row-edit{font-family:var(--mono);font-size:12px}
@media(max-width:900px){.form-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:540px){.form-grid{grid-template-columns:1fr}}

/* ---- Alerts ---- */
.alert{border-radius:10px;padding:12px 14px;margin:14px 0;font-size:14px;border:1px solid}
.alert.ok{background:var(--green-soft);border-color:rgba(21,163,107,.35);color:#0e7a4f}
.alert.warn{background:var(--warm-soft);border-color:rgba(245,158,11,.4);color:#a9740a}
.alert.err{background:var(--red-soft);border-color:rgba(224,82,77,.35);color:#c33b36}
.alert a{color:inherit;text-decoration:underline}

/* ---- Login ---- */
.login-page{display:flex;align-items:center;justify-content:center}
.login-card{background:var(--panel);border:1px solid var(--line);
  border-radius:16px;padding:34px;width:380px;max-width:92vw;margin-top:8vh;
  box-shadow:0 20px 50px rgba(22,33,55,.12)}
.login-card h1{font-size:20px;margin:0 0 6px}
.login-card form{margin-top:18px}
.login-card label{display:block;font-family:var(--mono);font-size:12px;color:var(--txt-dim);
  text-transform:uppercase;letter-spacing:.6px;margin-bottom:14px}
.login-card input{display:block;width:100%;margin-top:6px;background:#fff;
  border:1px solid var(--line-2);color:var(--txt-bright);border-radius:9px;padding:11px 12px;font-size:14px}
.login-card input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.login-card .btn{width:100%;margin-top:6px}

/* ============================================================
   Public dashboard
   ============================================================ */
.dashboard{display:grid;grid-template-columns:minmax(0,1fr) 264px;gap:20px;max-width:none}
.dashboard.has-rail{grid-template-columns:208px minmax(0,1fr) 264px}
.sidebar{position:sticky;top:84px;align-self:start;background:var(--panel);
  border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow)}
.side-h{font-size:11px;text-transform:uppercase;letter-spacing:1.3px;color:var(--txt-dim);
  margin:18px 0 10px;font-family:var(--disp);font-weight:600}
.side-h:first-child{margin-top:0}

/* Widget zones (left rail, under chart, under filters) + reusable .widget card */
.rail{position:sticky;top:84px;align-self:start;display:flex;flex-direction:column;gap:16px}
.slot-below{margin-top:16px;display:flex;flex-direction:column;gap:14px}
.slot-aside{margin-top:18px;display:flex;flex-direction:column;gap:14px}
.widget{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:var(--shadow)}
.widget h3{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--txt-dim);
  margin:0 0 10px;font-family:var(--disp);font-weight:600}
.widget.placeholder{border-style:dashed;color:var(--txt-dim);font-family:var(--mono);font-size:12px;text-align:center}
.widget img{max-width:100%;border-radius:8px;display:block}

.seg{display:flex;border:1px solid var(--line-2);border-radius:9px;overflow:hidden}
.seg button{flex:1;font-family:var(--mono);font-size:12px;background:#fff;color:var(--txt-dim);
  border:0;padding:8px 14px;cursor:pointer}
.seg button:hover{color:var(--txt-bright)}
.seg button.on{background:var(--accent);color:#fff;font-weight:600}

.fl{display:block;font-family:var(--mono);font-size:11px;color:var(--txt-dim);text-transform:uppercase;
  letter-spacing:.5px;margin-bottom:10px}
.fl select,.fl input{display:block;width:100%;margin-top:5px;background:#fff;border:1px solid var(--line-2);
  color:var(--txt-bright);border-radius:8px;padding:8px 10px;font-family:var(--sans);font-size:13px;
  text-transform:none;letter-spacing:0}
.fl select:focus,.fl input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.fl-row{display:flex;gap:10px}
.fl-row .fl{flex:1}

.chart-area{background:var(--panel);border:1px solid var(--line);
  border-radius:14px;padding:22px 24px 18px;min-height:560px;box-shadow:var(--shadow)}
.chart-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:4px}
.chart-head-titles h1{font-size:22px;margin:0}
.chart-head-titles .muted{font-family:var(--mono);font-size:12px;margin:2px 0 0;text-transform:uppercase;letter-spacing:1px}
.chart-controls{display:flex;align-items:flex-end;gap:12px}
.ctl{display:flex;flex-direction:column;gap:5px;font-family:var(--mono);font-size:11px;
  text-transform:uppercase;letter-spacing:.5px;color:var(--txt-dim)}
.ctl select{background:#fff;border:1px solid var(--line-2);color:var(--txt-bright);border-radius:9px;
  padding:9px 12px;font-family:var(--sans);font-size:14px;min-width:230px;text-transform:none;letter-spacing:0;cursor:pointer}
.ctl select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.chart-canvas{width:100%;height:560px;margin-top:8px}
.disclaimer{font-family:var(--mono);font-size:11px;color:var(--txt-dim);text-align:center;
  margin:10px 0 0;border-top:1px solid var(--line);padding-top:12px}

.empty-state{text-align:center;padding:80px 20px;grid-column:1/-1}
.empty-state h1{font-size:28px}
.empty-state .btn{margin-top:16px;display:inline-block}

@media(max-width:1180px){
  .dashboard{grid-template-columns:minmax(0,1fr) 230px;gap:14px}
  .dashboard.has-rail{grid-template-columns:180px minmax(0,1fr) 230px}
  .ctl select{min-width:170px}
}
@media(max-width:920px){
  .dashboard,.dashboard.has-rail{grid-template-columns:1fr}
  .sidebar,.rail{position:static}
  .chart-controls{width:100%}
  .chart-controls .ctl{flex:1}
  .topnav{font-size:12px;gap:12px}
}
