/* ============================================================
   Cascade Ridge — Back Office (Demo) Styles
   ============================================================ */
:root {
  --forest: #16281f;
  --forest-2: #1f3a2d;
  --moss: #3d5a45;
  --orange: #f97316;
  --orange-dark: #dd5f0a;
  --bg: #f2f4f1;
  --panel: #ffffff;
  --ink: #1c211e;
  --muted: #6b766f;
  --line: #e3e7e1;
  --good: #16a34a;
  --warn: #d97706;
  --bad: #dc2626;
  --info: #2563eb;
  --radius: 12px;
  --font-head: "Barlow Condensed", "Arial Narrow", sans-serif;
  --font-body: "Inter", "Segoe UI", system-ui, sans-serif;
}
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:var(--font-body); background:var(--bg); color:var(--ink); font-size:14px; }
a { color:inherit; text-decoration:none; }
h1,h2,h3 { font-family:var(--font-head); text-transform:uppercase; letter-spacing:.5px; }

.app { display:grid; grid-template-columns:236px 1fr; min-height:100vh; }

/* ---------- Sidebar ---------- */
.sidebar { background:var(--forest); color:#c7d4cb; display:flex; flex-direction:column; position:sticky; top:0; height:100vh; }
.sb-brand { display:flex; align-items:center; gap:10px; padding:18px 16px; border-bottom:1px solid rgba(255,255,255,.08); color:#fff; }
.sb-brand .mark { width:38px; height:38px; border-radius:9px; background:var(--orange); display:grid; place-items:center; flex-shrink:0; }
.sb-brand .mark svg { width:24px; height:24px; }
.sb-brand b { font-family:var(--font-head); font-size:17px; text-transform:uppercase; letter-spacing:1px; line-height:1.05; display:block; }
.sb-brand small { font-size:9.5px; letter-spacing:2px; color:#8aa294; }
.sb-nav { flex:1; padding:14px 10px; overflow-y:auto; }
.sb-nav .lbl { font-size:10px; letter-spacing:2px; text-transform:uppercase; color:#5f7568; padding:14px 10px 6px; }
.sb-nav a { display:flex; align-items:center; gap:11px; padding:10px 12px; border-radius:9px; font-size:13.5px; font-weight:600; margin-bottom:2px; transition:.15s; }
.sb-nav a:hover { background:rgba(255,255,255,.07); color:#fff; }
.sb-nav a.active { background:var(--orange); color:#fff; }
.sb-nav a .ico { width:19px; text-align:center; font-size:15px; }
.sb-foot { padding:14px 16px; border-top:1px solid rgba(255,255,255,.08); font-size:12px; }
.sb-foot .who { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.sb-foot .av { width:34px; height:34px; border-radius:50%; background:var(--moss); color:#fff; display:grid; place-items:center; font-weight:800; }
.sb-foot b { color:#fff; display:block; font-size:12.5px; }
.sb-foot a.logout { color:#8aa294; } .sb-foot a.logout:hover { color:var(--orange); }

/* ---------- Main ---------- */
.main { padding:26px 30px 60px; max-width:1220px; }
.topbar { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:22px; flex-wrap:wrap; }
.topbar h1 { font-size:30px; color:var(--forest); }
.topbar .sub { color:var(--muted); font-size:13px; margin-top:2px; }
.top-actions { display:flex; gap:10px; align-items:center; }
.btn { border:none; border-radius:8px; padding:10px 18px; font-weight:700; font-size:13px; cursor:pointer; font-family:var(--font-body); transition:.2s; }
.btn-orange { background:var(--orange); color:#fff; } .btn-orange:hover { background:var(--orange-dark); }
.btn-line { background:#fff; border:1.5px solid var(--line); color:var(--ink); } .btn-line:hover { border-color:var(--orange); color:var(--orange-dark); }

.demo-note { background:#fff7ed; border:1px solid #fed7aa; color:#9a3412; font-size:12.5px; padding:10px 14px; border-radius:9px; margin-bottom:20px; }
.demo-note b { text-transform:uppercase; letter-spacing:1px; }

/* ---------- KPI cards ---------- */
.kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-bottom:22px; }
.kpi { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:18px; position:relative; overflow:hidden; }
.kpi::before { content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--orange); }
.kpi.green::before { background:var(--good); } .kpi.red::before { background:var(--bad); } .kpi.blue::before { background:var(--info); } .kpi.amber::before { background:var(--warn); }
.kpi .k-lbl { font-size:11.5px; letter-spacing:1.2px; text-transform:uppercase; color:var(--muted); font-weight:700; }
.kpi .k-val { font-family:var(--font-head); font-size:32px; color:var(--forest); margin:4px 0 2px; }
.kpi .k-sub { font-size:12px; color:var(--muted); }
.kpi .k-sub .up { color:var(--good); font-weight:700; } .kpi .k-sub .down { color:var(--bad); font-weight:700; }

/* ---------- Panels & grids ---------- */
.panel { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:20px; margin-bottom:20px; }
.panel-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.panel-head h2 { font-size:19px; color:var(--forest); }
.panel-head .hint { font-size:12px; color:var(--muted); }
.two-col { display:grid; grid-template-columns:1.5fr 1fr; gap:20px; }
.equal-col { display:grid; grid-template-columns:1fr 1fr; gap:20px; }

/* ---------- Tables ---------- */
table { width:100%; border-collapse:collapse; font-size:13px; }
th { text-align:left; font-size:11px; letter-spacing:1.2px; text-transform:uppercase; color:var(--muted); padding:9px 10px; border-bottom:2px solid var(--line); white-space:nowrap; }
td { padding:11px 10px; border-bottom:1px solid var(--line); vertical-align:middle; }
tr:hover td { background:#fafbf9; }
td.num, th.num { text-align:right; font-variant-numeric:tabular-nums; }
.money { font-weight:700; } .money.pos { color:var(--good); } .money.neg { color:var(--bad); }

/* ---------- Badges & bars ---------- */
.badge { display:inline-block; padding:3px 10px; border-radius:99px; font-size:11px; font-weight:700; letter-spacing:.5px; }
.b-green { background:#dcfce7; color:#166534; }
.b-amber { background:#fef3c7; color:#92400e; }
.b-red { background:#fee2e2; color:#991b1b; }
.b-blue { background:#dbeafe; color:#1e40af; }
.b-gray { background:#e5e7eb; color:#374151; }
.bar { height:8px; background:#e8ece7; border-radius:99px; overflow:hidden; min-width:80px; }
.bar i { display:block; height:100%; background:var(--orange); border-radius:99px; }
.bar i.g { background:var(--good); } .bar i.r { background:var(--bad); } .bar i.a { background:var(--warn); }
.pct { font-size:11.5px; color:var(--muted); margin-left:6px; }

/* ---------- Login page ---------- */
.login-wrap { min-height:100vh; display:grid; place-items:center; background:linear-gradient(135deg,var(--forest) 40%,var(--forest-2)); padding:20px; }
.login-card { width:min(420px,100%); background:#fff; border-radius:16px; padding:38px 34px; box-shadow:0 24px 60px rgba(0,0,0,.35); }
.login-card .mark { width:56px; height:56px; border-radius:13px; background:var(--orange); display:grid; place-items:center; margin:0 auto 16px; }
.login-card .mark svg { width:34px; height:34px; }
.login-card h1 { text-align:center; font-size:26px; color:var(--forest); }
.login-card .sub { text-align:center; color:var(--muted); font-size:13px; margin:4px 0 22px; }
.login-card label { display:block; font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:1px; color:var(--forest); margin:14px 0 6px; }
.login-card input { width:100%; padding:12px 14px; border:1.5px solid var(--line); border-radius:9px; font-size:14px; font-family:var(--font-body); }
.login-card input:focus { outline:none; border-color:var(--orange); box-shadow:0 0 0 3px rgba(249,115,22,.15); }
.login-hint { margin-top:16px; background:#fff7ed; border:1px dashed #fdba74; border-radius:9px; padding:10px 12px; font-size:12px; color:#9a3412; text-align:center; }

/* ---------- Chat (AI assistant) ---------- */
.chat-shell { display:grid; grid-template-rows:1fr auto; height:calc(100vh - 210px); min-height:440px; }
.chat-log { overflow-y:auto; padding:6px 4px 18px; display:flex; flex-direction:column; gap:14px; }
.msg { max-width:78%; padding:13px 16px; border-radius:14px; font-size:13.5px; line-height:1.55; }
.msg.user { align-self:flex-end; background:var(--forest); color:#e8efe9; border-bottom-right-radius:4px; }
.msg.bot { align-self:flex-start; background:#fff; border:1px solid var(--line); border-bottom-left-radius:4px; }
.msg.bot b { color:var(--forest); }
.msg.bot .mini-table { margin-top:8px; font-size:12.5px; }
.msg.bot .mini-table td, .msg.bot .mini-table th { padding:6px 8px; }
.chat-input { display:flex; gap:10px; padding-top:14px; border-top:1px solid var(--line); }
.chat-input input { flex:1; padding:13px 15px; border:1.5px solid var(--line); border-radius:10px; font-size:14px; font-family:var(--font-body); }
.chat-input input:focus { outline:none; border-color:var(--orange); }
.chips { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
.chips button { border:1.5px solid var(--line); background:#fff; border-radius:99px; padding:7px 14px; font-size:12px; font-weight:600; cursor:pointer; color:var(--muted); transition:.2s; font-family:var(--font-body); }
.chips button:hover { border-color:var(--orange); color:var(--orange-dark); }
.typing { display:inline-flex; gap:4px; padding:4px 0; }
.typing i { width:7px; height:7px; border-radius:50%; background:#9aa79e; animation:blink 1.2s infinite; }
.typing i:nth-child(2){animation-delay:.2s} .typing i:nth-child(3){animation-delay:.4s}
@keyframes blink { 0%,80%,100%{opacity:.25} 40%{opacity:1} }

/* ---------- Misc ---------- */
.alert-list { list-style:none; }
.alert-list li { display:flex; gap:11px; padding:11px 4px; border-bottom:1px solid var(--line); font-size:13px; align-items:flex-start; }
.alert-list li:last-child { border-bottom:none; }
.dot { width:9px; height:9px; border-radius:50%; margin-top:5px; flex-shrink:0; }
.dot.r{background:var(--bad)} .dot.a{background:var(--warn)} .dot.g{background:var(--good)} .dot.b{background:var(--info)}
.alert-list b { display:block; color:var(--forest); }
.alert-list span { color:var(--muted); font-size:12px; }
.chart-box { position:relative; height:260px; }
.chart-box.tall { height:300px; }
.legend-note { font-size:11.5px; color:var(--muted); margin-top:10px; }

@media (max-width:960px) {
  .app { grid-template-columns:1fr; }
  .sidebar { position:relative; height:auto; }
  .kpis, .two-col, .equal-col { grid-template-columns:1fr; }
  .main { padding:18px; }
}
