[hidden]{display:none!important}

:root{
  --bg:#0a0e17;
  --bg-2:#0f1524;
  --panel:#131b2e;
  --panel-2:#18223a;
  --border:#22304e;
  --text:#e8edf7;
  --muted:#8b98b5;
  --accent:#4ee1a0;
  --accent-dim:rgba(78,225,160,.12);
  --warn:#f5b84a;
  --over:#ff5d6c;
  --stale:#7d8cff;
  --font:'Space Grotesk',sans-serif;
  --mono:'IBM Plex Mono',monospace;
}

*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:var(--font);min-height:100vh;-webkit-font-smoothing:antialiased}
.mono{font-family:var(--mono)}
button{font-family:inherit;cursor:pointer}
input,textarea{font-family:inherit}

/* ===== topbar ===== */
.topbar{position:sticky;top:0;z-index:50;background:rgba(10,14,23,.8);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}
.topbar-inner{max-width:1240px;margin:0 auto;height:68px;display:flex;align-items:center;gap:32px;padding:0 24px}
.logo{font-weight:700;font-size:17px;color:var(--text);text-decoration:none;letter-spacing:-.01em;white-space:nowrap;display:flex;align-items:center;gap:8px}
.logo-mark{color:var(--accent);font-size:20px}
.topnav{display:flex;gap:22px;flex:1}
.topnav a{color:var(--muted);text-decoration:none;font-size:14.5px;font-weight:500;padding:6px 2px;border-bottom:2px solid transparent;transition:color .15s}
.topnav a:hover{color:var(--text)}
.topnav a.active{color:var(--text);border-bottom-color:var(--accent)}
.topbar-right{display:flex;gap:10px}

/* ===== buttons ===== */
.btn{border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:10px;padding:9px 16px;font-size:14px;font-weight:600;transition:transform .12s,background .15s,border-color .15s}
.btn:hover{transform:translateY(-1px);border-color:#33456e}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#06251a}
.btn-primary:hover{background:#63ecb0;border-color:#63ecb0}
.btn-ghost{background:transparent}
.btn-danger{background:transparent;color:var(--over);border-color:rgba(255,93,108,.35)}
.btn-danger:hover{background:rgba(255,93,108,.1);border-color:var(--over)}
.btn-sm{padding:6px 12px;font-size:13px;border-radius:8px}
.btn-block{width:100%}
.icon-btn{background:none;border:none;color:var(--muted);font-size:16px;padding:6px;border-radius:8px}
.icon-btn:hover{color:var(--text);background:var(--panel-2)}

/* ===== shell ===== */
.shell{max-width:1240px;margin:0 auto;padding:32px 24px 80px}

/* ===== summary ===== */
.summary{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:28px}
.stat{background:linear-gradient(160deg,var(--panel),var(--bg-2));border:1px solid var(--border);border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden}
.stat::after{content:'';position:absolute;inset:0 auto 0 0;width:3px;background:var(--accent);opacity:.7}
.stat-over::after{background:var(--over)}
.stat-warn::after{background:var(--warn)}
.stat-stale::after{background:var(--stale)}
.stat-label{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
.stat-value{font-size:26px;font-weight:700;letter-spacing:-.02em}

/* ===== toolbar ===== */
.toolbar{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:24px}
.search-wrap{position:relative;flex:1;min-width:240px}
.search-wrap svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted)}
.search-wrap input{width:100%;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 14px 12px 42px;color:var(--text);font-size:14.5px;outline:none;transition:border-color .15s}
.search-wrap input:focus{border-color:var(--accent)}
.search-wrap input::placeholder{color:#5c6a8a}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{background:var(--panel);border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:8px 16px;font-size:13px;font-weight:600;transition:all .15s}
.chip:hover{color:var(--text)}
.chip.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.chip-over.active{background:rgba(255,93,108,.12);border-color:var(--over);color:var(--over)}
.chip-warn.active{background:rgba(245,184,74,.12);border-color:var(--warn);color:var(--warn)}
.chip-stale.active{background:rgba(125,140,255,.12);border-color:var(--stale);color:var(--stale)}

.list-state{color:var(--muted);text-align:center;padding:48px 20px;font-size:15px;border:1px dashed var(--border);border-radius:16px;margin-bottom:24px}

/* ===== grid & cards ===== */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px}
.card{background:linear-gradient(170deg,var(--panel),var(--bg-2));border:1px solid var(--border);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:12px;position:relative;transition:transform .15s,border-color .15s}
.card:hover{transform:translateY(-2px);border-color:#2e4066}
.card.status-over{border-color:rgba(255,93,108,.4)}
.card.status-warning{border-color:rgba(245,184,74,.35)}
.card-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.card-name{font-size:17px;font-weight:600;letter-spacing:-.01em}
.card-provider{color:var(--muted);font-size:13px;margin-top:3px}
.badge{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:5px 10px;border-radius:999px;white-space:nowrap}
.badge-ok{background:var(--accent-dim);color:var(--accent)}
.badge-warn{background:rgba(245,184,74,.14);color:var(--warn)}
.badge-over{background:rgba(255,93,108,.14);color:var(--over)}
.badge-stale{background:rgba(125,140,255,.14);color:var(--stale)}
.card-tags{display:flex;gap:6px;flex-wrap:wrap}
.tag{font-size:11.5px;font-family:var(--mono);color:var(--muted);background:var(--panel-2);border:1px solid var(--border);padding:3px 9px;border-radius:6px}
.spend-row{display:flex;align-items:baseline;gap:8px}
.spend-num{font-size:20px;font-weight:600}
.spend-limit{color:var(--muted);font-size:12.5px}
.meter{height:6px;border-radius:99px;background:var(--panel-2);overflow:hidden}
.meter-fill{height:100%;border-radius:99px;background:var(--accent);transition:width .4s ease}
.status-warning .meter-fill{background:var(--warn)}
.status-over .meter-fill{background:var(--over)}
.spark-wrap{height:34px;border-radius:8px;overflow:hidden}
.spark{width:100%;height:100%;display:block}
.spark-line{fill:none;stroke:var(--accent);stroke-width:1.5}
.spark-area{fill:rgba(78,225,160,.12);stroke:none}
.status-over .spark-line{stroke:var(--over)}.status-over .spark-area{fill:rgba(255,93,108,.1)}
.status-warning .spark-line{stroke:var(--warn)}.status-warning .spark-area{fill:rgba(245,184,74,.1)}
.spark-empty{position:relative}
.spark-empty::after{content:'no usage recorded';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;color:#5c6a8a}
.spark-empty{position:relative;display:block}
.card-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--muted);font-size:12.5px}
.alias{background:var(--panel-2);padding:3px 8px;border-radius:6px;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;max-width:55%;white-space:nowrap}
.card-notes{color:var(--muted);font-size:13px;line-height:1.5;border-top:1px solid var(--border);padding-top:10px}
.card-actions{display:flex;gap:8px;margin-top:auto;padding-top:4px}

/* ===== modals ===== */
.modal-backdrop{position:fixed;inset:0;z-index:100;background:rgba(5,8,14,.72);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px;overflow-y:auto}
.modal{background:var(--panel);border:1px solid var(--border);border-radius:18px;width:100%;max-width:560px;padding:26px;box-shadow:0 30px 80px rgba(0,0,0,.5);animation:pop .18s ease}
.modal-sm{max-width:420px}
@keyframes pop{from{transform:translateY(10px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
.modal-head h2{font-size:18px;font-weight:600;letter-spacing:-.01em}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}
.form-grid .hint{font-weight:400;color:#5c6a8a}
.form-grid input,.form-grid textarea{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;color:var(--text);font-size:14px;outline:none;transition:border-color .15s;resize:vertical}
.form-grid input:focus,.form-grid textarea:focus{border-color:var(--accent)}
.span2{grid-column:span 2}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}
.docs{color:var(--muted);font-size:14px;line-height:1.6;display:flex;flex-direction:column;gap:14px}
.docs pre{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:14px;font-size:12.5px;color:var(--accent);overflow-x:auto;line-height:1.6}
.docs em{color:var(--text);font-style:normal;font-weight:600}

/* ===== toast ===== */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:200;background:var(--panel-2);border:1px solid var(--accent);color:var(--text);padding:13px 22px;border-radius:12px;font-size:14px;font-weight:500;box-shadow:0 12px 40px rgba(0,0,0,.5);max-width:90vw;cursor:pointer}
.toast-err{border-color:var(--over)}

/* ===== login ===== */
.login-body{display:flex;align-items:center;justify-content:center;padding:24px;position:relative;overflow:hidden}
.login-bg{position:absolute;inset:0;z-index:0;background:radial-gradient(600px 400px at 20% 15%,rgba(78,225,160,.09),transparent 65%),radial-gradient(700px 500px at 85% 85%,rgba(125,140,255,.09),transparent 65%)}
.login-card{position:relative;z-index:2;background:linear-gradient(165deg,var(--panel),var(--bg-2));border:1px solid var(--border);border-radius:20px;padding:44px 38px;width:100%;max-width:400px;text-align:center;box-shadow:0 30px 90px rgba(0,0,0,.5)}
.login-logo{font-size:34px;color:var(--accent);margin-bottom:14px}
.login-card h1{font-size:22px;font-weight:700;letter-spacing:-.02em;margin-bottom:10px}
.login-sub{color:var(--muted);font-size:14px;line-height:1.6;margin-bottom:28px}
.login-label{display:flex;flex-direction:column;gap:8px;text-align:left;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:18px}
.login-label input{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;color:var(--text);font-size:15px;outline:none;font-family:var(--mono)}
.login-label input:focus{border-color:var(--accent)}
.login-error{margin-top:16px;color:var(--over);font-size:13.5px}

/* ===== responsive ===== */
@media (max-width:960px){
  .summary{grid-template-columns:repeat(2,1fr)}
  .summary .stat:first-child{grid-column:span 2}
}
@media (max-width:680px){
  .topbar-inner{gap:14px;padding:0 16px}
  .topnav{display:none}
  .shell{padding:20px 16px 60px}
  .grid{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
  .span2{grid-column:span 1}
  .modal{padding:20px}
  .btn-ghost#logoutBtn{padding:9px 12px}
}
