/* Vanik V2 — blue & white, Claude-style. */
:root{
  --blue:#2563eb; --blue-600:#1d4ed8; --blue-700:#1e40af; --blue-50:#eff4ff; --blue-100:#dbe6ff;
  --ink:#0f172a; --ink-2:#334155; --muted:#64748b; --line:#e5eaf3; --line-2:#eef2f8;
  --bg:#f6f8fc; --panel:#ffffff; --sidebar:#f2f6ff; --ok:#16a34a; --warn:#d97706; --bad:#dc2626;
  --radius:14px; --shadow:0 1px 3px rgba(15,23,42,.06),0 8px 24px rgba(37,99,235,.06);
  --font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}
a{color:var(--blue-600);text-decoration:none}
.muted{color:var(--muted)} .tiny{font-size:12.5px} .err{color:var(--bad);min-height:18px;font-size:13.5px}
button{font-family:inherit;cursor:pointer;border:none;background:none}
.btn-primary{background:var(--blue);color:#fff;border-radius:10px;padding:11px 16px;font-weight:600;font-size:14.5px;transition:.15s}
.btn-primary:hover{background:var(--blue-600)}
.btn-ghost{background:var(--blue-50);color:var(--blue-700);border-radius:10px;padding:8px 13px;font-weight:600;font-size:13.5px}
.btn-ghost:hover{background:var(--blue-100)}
.btn-ok{background:var(--ok);color:#fff;border-radius:9px;padding:7px 13px;font-weight:600;font-size:13px}
.btn-bad{background:#fff;color:var(--bad);border:1px solid #f3c9c9;border-radius:9px;padding:7px 13px;font-weight:600;font-size:13px}
input,textarea,select{font-family:inherit;font-size:14.5px;color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:11px 13px;width:100%;background:#fff;outline:none}
input:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-50)}

/* ---------- login ---------- */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;
  background:radial-gradient(1200px 600px at 50% -10%, #e7efff, var(--bg))}
.login-card{background:var(--panel);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);
  padding:38px 34px;width:min(400px,92vw);text-align:center}
.login-card h1{font-size:22px;margin:14px 0 6px} .login-card form{display:flex;flex-direction:column;gap:12px;margin:18px 0 8px}
.brand{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:16px;color:var(--ink)}
.brand em{font-style:normal;color:var(--muted);font-weight:500}
.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--blue);color:#fff;font-weight:800}
.btn-discord{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin:18px 0 4px;
  background:#5865F2;color:#fff;border-radius:12px;padding:13px 16px;font-weight:700;font-size:15px;transition:.15s}
.btn-discord:hover{background:#4752c4}
.btn-discord.disabled{background:#c7cbf5;cursor:not-allowed}
.admin-login{margin-top:16px;text-align:left}
.admin-login summary{cursor:pointer;list-style:none;text-align:center}
.admin-login summary::-webkit-details-marker{display:none}
.admin-login form{display:flex;flex-direction:column;gap:10px;margin-top:12px}

/* ---------- app shell ---------- */
.app{display:grid;grid-template-columns:260px 1fr;height:100vh;overflow:hidden}
.side{background:var(--sidebar);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
.side-top{padding:18px 16px 10px;display:flex;align-items:center;gap:10px}
.nav{padding:6px 10px;display:flex;flex-direction:column;gap:2px}
.nav button{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:10px 12px;border-radius:10px;color:var(--ink-2);font-weight:600;font-size:14px}
.nav button:hover{background:var(--blue-100)}
.nav button.active{background:var(--blue);color:#fff}
.nav .ico{width:18px;text-align:center}
.side-foot{margin-top:auto;padding:14px 16px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.side-foot .who{color:var(--ink);font-weight:600}
.main{min-width:0;min-height:0;overflow:auto;position:relative}
.view{display:none;padding:26px 30px;max-width:1080px;margin:0 auto}
.view.active{display:block}
.view.chatview{display:none;padding:0;max-width:none;height:100vh}
.view.chatview.active{display:grid;grid-template-columns:250px 1fr}

h2.page-title{font-size:20px;margin-bottom:4px}
.sub{color:var(--muted);margin-bottom:22px;font-size:14px}

/* ---------- cards / dashboard ---------- */
.grid{display:grid;gap:16px}
.grid.cols-3{grid-template-columns:repeat(3,1fr)}
.grid.cols-2{grid-template-columns:repeat(2,1fr)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.card h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:12px;font-weight:700}
.stat{display:flex;align-items:baseline;gap:8px}
.stat .num{font-size:30px;font-weight:800;color:var(--blue-700)}
.stat .unit{color:var(--muted);font-size:13px}
.bar{height:8px;border-radius:6px;background:var(--line-2);overflow:hidden;margin-top:12px}
.bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--blue-600))}
.rolechips{display:flex;flex-wrap:wrap;gap:7px;margin-top:4px}
.chip{background:var(--blue-50);color:var(--blue-700);border-radius:999px;padding:5px 11px;font-size:12.5px;font-weight:600}
.ledger{list-style:none;display:flex;flex-direction:column;gap:8px}
.ledger li{display:flex;justify-content:space-between;gap:10px;padding:9px 12px;border:1px solid var(--line-2);border-radius:10px;font-size:13.5px}
.badge{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px}
.badge.approved,.badge.auto_approved{background:#e7f7ee;color:var(--ok)}
.badge.pending{background:#fff4e5;color:var(--warn)}
.badge.rejected{background:#fdeaea;color:var(--bad)}

/* ---------- approvals ---------- */
.approval{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:#fff}
.approval .who{font-weight:700} .approval .meta{color:var(--muted);font-size:13px}
.approval .actions{display:flex;gap:8px}

/* ---------- chat (Claude-style) ---------- */
.chat-list{background:var(--sidebar);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
.chat-list .newbtn{margin:14px 12px 8px}
.chat-list .items{overflow:auto;padding:0 8px 12px;display:flex;flex-direction:column;gap:2px}
.chat-list .item{padding:10px 12px;border-radius:10px;color:var(--ink-2);font-size:13.5px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-list .item:hover{background:var(--blue-100)}
.chat-list .item.active{background:#fff;color:var(--ink);font-weight:600;box-shadow:var(--shadow)}
.chat-main{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bg)}
.chat-scroll{flex:1;overflow:auto;padding:26px 0}
.thread{max-width:760px;margin:0 auto;padding:0 22px;display:flex;flex-direction:column;gap:22px}
.msg{display:flex;gap:14px;align-items:flex-start}
.msg .av{flex:0 0 30px;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;font-weight:800;font-size:13px;margin-top:2px}
.msg.user .av{background:var(--ink);color:#fff}
.msg.assistant .av{background:var(--blue);color:#fff}
.msg .body{flex:1;min-width:0}
.msg .name{font-weight:700;font-size:13px;margin-bottom:3px;color:var(--ink-2)}
.msg .content{font-size:15px;line-height:1.62;color:var(--ink);white-space:pre-wrap;word-wrap:break-word}
.msg .content code{background:var(--blue-50);padding:1px 5px;border-radius:5px;font-size:13px}
.msg .content h1,.msg .content h2,.msg .content h3{margin:.5em 0 .25em}
.msg .content table{border-collapse:collapse;margin:.5em 0;font-size:13px}
.msg .content th,.msg .content td{border:1px solid var(--line);padding:5px 9px}
.msg .tools{margin-top:7px;font-size:12px;color:var(--muted)}
.msg .tools .t{background:var(--blue-50);color:var(--blue-700);border-radius:6px;padding:2px 7px;margin-right:5px;font-weight:600}
.typing{display:inline-flex;gap:4px}.typing i{width:7px;height:7px;border-radius:50%;background:var(--blue);opacity:.5;animation:bnc 1s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes bnc{0%,80%,100%{transform:translateY(0);opacity:.4}40%{transform:translateY(-5px);opacity:1}}
.composer{border-top:1px solid var(--line);background:var(--panel);padding:14px 22px}
.composer .box{max-width:760px;margin:0 auto;display:flex;gap:10px;align-items:flex-end;
  border:1px solid var(--line);border-radius:16px;padding:8px 8px 8px 16px;background:#fff;box-shadow:var(--shadow)}
.composer textarea{border:none;box-shadow:none;resize:none;max-height:180px;padding:6px 0}
.composer textarea:focus{box-shadow:none}
.composer .send{background:var(--blue);color:#fff;border-radius:11px;width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;font-size:17px}
.composer .send:disabled{opacity:.4;cursor:default}
.empty{max-width:640px;margin:8vh auto;text-align:center;color:var(--muted)}
.empty h2{color:var(--ink);font-size:24px;margin-bottom:8px}
.suggest{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:20px}
.suggest button{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 15px;font-size:13.5px;color:var(--ink-2);box-shadow:var(--shadow);text-align:left;max-width:260px}
.suggest button:hover{border-color:var(--blue);color:var(--blue-700)}

/* reports */
.report{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:26px 30px;box-shadow:var(--shadow);line-height:1.6}
.report h1{font-size:22px;margin:.2em 0 .4em}.report h2{font-size:18px;margin:.8em 0 .3em}
.report table{border-collapse:collapse;margin:.6em 0;width:100%;font-size:13.5px}
.report th,.report td{border:1px solid var(--line);padding:7px 11px;text-align:left}
.report th{background:var(--blue-50)}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px;align-items:center}
.toolbar select,.toolbar input{width:auto;min-width:130px}

@media(max-width:820px){.app{grid-template-columns:56px 1fr}.nav button span.lbl,.side-top em{display:none}
  .side-foot{padding:10px 6px;font-size:11px}.side-foot .who{display:none}
  .view.chatview.active{grid-template-columns:0 1fr}.chat-list{position:fixed;left:56px;top:0;bottom:0;width:230px;z-index:20;box-shadow:var(--shadow);transform:translateX(-110%);transition:.2s}
  .chat-list.open{transform:none}
  .chatfab{position:fixed;left:64px;bottom:18px;z-index:21;background:var(--blue);color:#fff;border-radius:50%;width:46px;height:46px;font-size:22px;box-shadow:var(--shadow)}}
@media(min-width:821px){.chatfab{display:none}}
/* print: only the report */
@media print{
  .side,.toolbar,.composer,.chat-list,.nav,#dashHello{display:none !important}
  .app{display:block}.main{overflow:visible}.view{display:none !important;padding:0;max-width:none}
  .view#view-reports.active{display:block !important}.report{border:none;box-shadow:none;padding:0}
}
