:root{
  --bg:#f5f7fb;--card:#fff;--text:#14213d;--muted:#73809a;--border:#e6eaf0;
  --good:#16835b;--bad:#c2414b;--warn:#b7791f;--accent:#3157d5;--shadow:0 8px 28px rgba(25,40,75,.07)
}
*{box-sizing:border-box} body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
button,input,select,textarea{font:inherit}
header{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.topbar{max-width:1400px;margin:auto;padding:16px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{display:flex;align-items:center;gap:12px}.logo{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#3157d5,#6f8cff);display:grid;place-items:center;color:#fff;font-weight:800}
.brand h1{font-size:18px;margin:0}.brand small{color:var(--muted)}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.currency-toggle{display:flex;align-items:center;gap:4px;border:1px solid var(--border);background:#fff;border-radius:9px;padding:4px 5px 4px 8px}
.currency-toggle span{font-size:11px;color:var(--muted);font-weight:700;margin-right:2px}
.currency-btn{border:0;background:transparent;border-radius:6px;padding:5px 8px;font-size:11px;font-weight:800;cursor:pointer;color:var(--muted)}
.currency-btn.active{background:var(--accent);color:#fff}
.btn{border:1px solid var(--border);background:#fff;color:var(--text);padding:9px 13px;border-radius:9px;cursor:pointer;font-weight:650}.btn:hover{background:#f7f9fc}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
main{max-width:1400px;margin:auto;padding:26px 24px 60px}.summary{display:flex;justify-content:space-between;gap:20px;align-items:end;margin-bottom:22px}.summary h2{margin:0 0 5px;font-size:28px}.summary p{margin:0;color:var(--muted)}
.category{margin:26px 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.09em;color:#69758c;font-weight:800;display:flex;align-items:center;gap:8px}
.section-add{width:24px;height:24px;border:1px solid var(--border);border-radius:7px;background:#fff;color:var(--accent);font-size:18px;line-height:1;display:grid;place-items:center;cursor:pointer;text-transform:none;letter-spacing:0}
.section-add:hover{background:#eef2ff;border-color:#cbd5ff}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:14px}
.cg-panel-unified{background:transparent}
.cg-grid-unified{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}
.cg-grid-unified .card{padding:11px;min-height:142px}
.cg-grid-unified .metric-name{font-size:11px;line-height:1.2}
.cg-grid-unified .value{font-size:20px;margin:9px 0}
.cg-grid-unified .comps{gap:3px;padding-top:8px}
.cg-grid-unified .comp small{font-size:8px}
.cg-grid-unified .comp strong{font-size:10px}
.cg-grid-unified .updated{font-size:9px}
.cg-grid-unified .stale{font-size:8px}
@media(max-width:1100px){.cg-grid-unified{grid-template-columns:repeat(3,1fr)}}
@media(max-width:650px){.cg-grid-unified{grid-template-columns:repeat(2,1fr)}}.cg-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}}
.financial-panel{display:grid;grid-template-columns:1fr 1fr;gap:12px}.finance-block{align-items:stretch}.finance-column{display:grid;grid-template-rows:1fr 1fr;gap:12px;min-width:0}.finance-margin-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-width:0}.finance-tile{height:100%;box-sizing:border-box;min-height:150px}.finance-margin-row .finance-tile{min-height:150px}.finance-column>.submetric.finance-tile{min-height:150px}
.financial-main{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:17px;box-shadow:var(--shadow);cursor:pointer}
.financial-subs{display:grid;grid-template-columns:1fr;gap:8px}
.submetric{background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px 13px;position:relative;cursor:pointer;box-shadow:0 5px 18px rgba(25,40,75,.05)}
.submetric:hover{box-shadow:0 8px 24px rgba(25,40,75,.09)}
.submetric-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.submetric-name{font-size:12px;color:var(--muted);font-weight:750}
.submetric-value{font-size:21px;font-weight:800;margin:5px 0 3px}
.submetric-change{font-size:11px}
.submetric .card-add{position:absolute;top:9px;right:9px}
.submetric:hover .card-add,.submetric:focus-within .card-add{opacity:1;transform:translateY(0);pointer-events:auto}
@media (hover:none){.submetric .card-add{opacity:1;transform:none;pointer-events:auto}}
@media(max-width:760px){.financial-panel{grid-template-columns:1fr}.finance-column{grid-template-rows:auto}.finance-margin-row{grid-template-columns:1fr 1fr}.financial-subs{grid-template-columns:repeat(3,1fr)}}
.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:17px;box-shadow:var(--shadow);cursor:pointer;transition:.15s transform,.15s box-shadow}
.card:hover{transform:translateY(-2px);box-shadow:0 12px 34px rgba(25,40,75,.11)}
.card-head{display:flex;justify-content:space-between;gap:10px;align-items:center}
.card-tools{display:flex;align-items:center;gap:7px}
.card-add{width:27px;height:27px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--accent);font-size:19px;line-height:1;display:grid;place-items:center;cursor:pointer;opacity:0;transform:translateY(-2px);pointer-events:none;transition:.15s opacity,.15s transform,.15s background}
.card:hover .card-add,.card:focus-within .card-add{opacity:1;transform:translateY(0);pointer-events:auto}
.card-add:hover{background:#eef2ff;border-color:#cbd5ff}
@media (hover:none){.card-add{opacity:1;transform:none;pointer-events:auto}}.metric-name{font-weight:750}.stale{font-size:11px;padding:4px 7px;border-radius:99px;background:#fff5df;color:#9b6814}
.value{font-size:30px;font-weight:800;margin:13px 0 12px;letter-spacing:-.03em}.empty{color:#9aa4b6;font-size:21px}
.comps{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;border-top:1px solid var(--border);padding-top:11px}.comp small{display:block;color:var(--muted);font-size:10px}.comp strong{font-size:12px}.good{color:var(--good)}.bad{color:var(--bad)}.neutral{color:var(--muted)}
.updated{font-size:11px;color:var(--muted);margin-top:12px}
.overlay{position:fixed;inset:0;background:rgba(16,24,40,.42);display:none;align-items:center;justify-content:center;padding:20px;z-index:30}.overlay.show{display:flex}
.modal{width:min(520px,100%);max-height:calc(100vh - 40px);overflow-y:auto;background:#fff;border-radius:16px;box-shadow:0 25px 80px rgba(0,0,0,.2);padding:22px}.modal h3{margin:0 0 18px}.field{margin:12px 0}.field label{display:block;font-size:12px;font-weight:750;margin-bottom:6px;color:#56627a}.field input,.field select,.field textarea{width:100%;padding:11px;border:1px solid #dbe0e8;border-radius:9px;background:#fff}.field textarea{min-height:75px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.detail{display:none}.detail.show{display:block}.dashboard.hide{display:none}
.back{border:0;background:none;color:var(--accent);font-weight:750;padding:0;cursor:pointer;margin-bottom:18px}
.detail-head{display:flex;justify-content:space-between;align-items:start;gap:20px;flex-wrap:wrap}.detail-title h2{font-size:28px;margin:0 0 8px}.detail-value{font-size:38px;font-weight:850}.detail-comps{display:flex;gap:12px;flex-wrap:wrap}.pill{background:#fff;border:1px solid var(--border);border-radius:12px;padding:10px 14px;min-width:100px}.pill small{display:block;color:var(--muted);font-size:10px}.chart-card,.table-card{background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:18px;margin-top:18px}.chart-wrap{height:340px}
table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:11px 9px;border-bottom:1px solid var(--border)}th{color:#657087;font-size:11px;text-transform:uppercase}.row-actions button{border:0;background:none;color:var(--accent);cursor:pointer;padding:2px 5px}.row-actions .del{color:var(--bad)}
.settings-list{max-height:380px;overflow:auto}.setting-row{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:8px;align-items:center;padding:9px 0;border-bottom:1px solid var(--border);font-size:12px}
.account-row{display:flex;justify-content:space-between;align-items:center;padding:8px 2px;border-bottom:1px solid var(--border);font-size:13px}.account-row button{border:0;background:none;color:var(--bad);cursor:pointer}
.toast{position:fixed;bottom:24px;right:24px;background:#15213b;color:#fff;padding:11px 15px;border-radius:9px;display:none;z-index:50}.toast.show{display:block}
@media(max-width:650px){.topbar{align-items:flex-start;flex-direction:column}.summary{align-items:flex-start;flex-direction:column}.comps{grid-template-columns:repeat(3,1fr)}.chart-wrap{height:260px}.setting-row{grid-template-columns:1fr}}

.action-wrap{position:relative;display:inline-flex}.action-menu{position:absolute;top:30px;right:0;z-index:40;min-width:145px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px rgba(25,40,75,.16);padding:5px;display:none;text-transform:none;letter-spacing:0}.action-menu.show{display:block}.action-menu button{width:100%;border:0;background:transparent;text-align:left;padding:9px 10px;border-radius:7px;cursor:pointer;font-size:12px;color:var(--text)}.action-menu button:hover{background:#f3f6fb}
.import-status{border:1px solid var(--border);border-radius:10px;padding:12px;margin-top:12px;font-size:12px;background:#fafbfe}.import-status.ok{border-color:#b9e4d3;background:#f3fbf7}.import-status.bad{border-color:#f0c2c6;background:#fff7f7}.error-list{max-height:220px;overflow:auto;margin-top:8px}.error-item{padding:7px 0;border-bottom:1px solid var(--border);font-size:12px}.preview-table{max-height:250px;overflow:auto;margin-top:10px}.hint{font-size:11px;color:var(--muted);margin-top:6px}

body > .action-menu{
  position:fixed !important;
  width:150px !important;
  min-width:150px !important;
  max-width:150px !important;
  height:auto !important;
  margin:0 !important;
  padding:5px !important;
  display:none;
  z-index:9999;
  box-sizing:border-box;
}
body > .action-menu.show{display:block !important}
body > .action-menu button{
  display:block;
  width:100% !important;
  min-width:0 !important;
  margin:0 !important;
  padding:9px 10px !important;
  white-space:nowrap;
}

.pulse-ai-btn{width:38px;height:38px;border-radius:11px;border:1px solid #cbd5ff;background:#eef2ff;color:var(--accent);display:grid;place-items:center;cursor:pointer;position:relative;flex:0 0 auto}
.pulse-ai-btn:hover{background:#e3e9ff}
.pulse-ai-dot{font-size:19px;animation:pulseBlink 1.25s ease-in-out infinite}
.pulse-ai-btn.loading .pulse-ai-dot{animation:pulseSpin 1s linear infinite}
@keyframes pulseBlink{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.78)}}
@keyframes pulseSpin{to{transform:rotate(360deg)}}
.pulse-ai-panel{position:fixed;top:68px;left:16px;width:min(440px,calc(100vw - 32px));max-height:640px;background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:0 22px 65px rgba(25,40,75,.22);z-index:9998;display:none;overflow:hidden}
.pulse-ai-panel.show{display:flex;flex-direction:column}
.pulse-ai-head{display:flex;align-items:center;justify-content:space-between;padding:14px 15px;border-bottom:1px solid var(--border)}
.pulse-ai-head strong{display:block;font-size:14px}.pulse-ai-head small{display:block;color:var(--muted);font-size:10px;margin-top:2px}
.pulse-ai-close{border:0;background:transparent;font-size:22px;color:var(--muted);cursor:pointer}
.pulse-ai-progress{padding:8px 14px;background:#f6f8ff;border-bottom:1px solid var(--border);font-size:10px;color:var(--muted)}
.pulse-ai-messages{padding:14px;overflow:auto;min-height:150px;max-height:480px;background:#f7f9fc}
.pulse-msg{display:flex;gap:9px;margin-bottom:10px}.pulse-avatar{width:26px;height:26px;border-radius:8px;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:12px;flex:0 0 auto}
.pulse-bubble{background:#fff;border:1px solid var(--border);border-radius:4px 13px 13px 13px;padding:11px 12px;font-size:12px;line-height:1.5;white-space:pre-wrap;box-shadow:0 4px 14px rgba(25,40,75,.05)}
.pulse-msg.system .pulse-bubble{background:#fff8e8;color:#73550d}
.pulse-ai-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-top:1px solid var(--border)}
.pulse-ai-foot span{font-size:9px;color:var(--muted)}
@media(max-width:650px){.pulse-ai-panel{top:116px;left:8px;width:calc(100vw - 16px)}}

.pulse-ai-floating{position:fixed !important;right:22px !important;bottom:22px !important;left:auto !important;top:auto !important;width:56px !important;height:56px !important;border-radius:50% !important;z-index:9999 !important;box-shadow:0 10px 28px rgba(63,81,181,.28)}
.pulse-ai-floating .pulse-ai-dot{font-size:24px}
.pulse-ai-panel{top:auto !important;left:auto !important;right:22px !important;bottom:90px !important}
@media(max-width:650px){.pulse-ai-floating{right:14px !important;bottom:14px !important}.pulse-ai-panel{top:auto !important;left:8px !important;right:8px !important;bottom:82px !important;width:auto !important}}

.finance-equal-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
.finance-equal-grid .card{padding:11px;min-height:142px}
.finance-equal-grid .metric-name{font-size:11px;line-height:1.2}
.finance-equal-grid .value{font-size:20px;margin:9px 0}
.finance-equal-grid .comps{gap:3px;padding-top:8px}
.finance-equal-grid .comp small{font-size:8px}
.finance-equal-grid .comp strong{font-size:10px}
.finance-equal-grid .updated{font-size:9px}
.finance-equal-grid .stale{font-size:8px}
@media(max-width:1000px){.finance-equal-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:650px){.finance-equal-grid{grid-template-columns:repeat(2,1fr)}}

.service-equal-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}
.service-equal-grid .card{padding:11px;min-height:142px}
.service-equal-grid .metric-name{font-size:11px;line-height:1.2}
.service-equal-grid .value{font-size:20px;margin:9px 0}
.service-equal-grid .comps{gap:3px;padding-top:8px}
.service-equal-grid .comp small{font-size:8px}
.service-equal-grid .comp strong{font-size:10px}
.service-equal-grid .updated{font-size:9px}
.service-equal-grid .stale{font-size:8px}
@media(max-width:1100px){.service-equal-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:650px){.service-equal-grid{grid-template-columns:repeat(2,1fr)}}

main{padding-top:10px}
/* --- Loading shimmer over counters + charts while an async update is in flight --- */
.card, .chart-card{position:relative}
#cards.updating .card::after,
.chart-card.updating::after{
  content:"";
  position:absolute; inset:0; z-index:6; pointer-events:none;
  border-radius:inherit;
  background:linear-gradient(100deg,
    rgba(222,227,234,.78) 30%,
    rgba(245,247,251,.92) 50%,
    rgba(222,227,234,.78) 70%);
  background-size:200% 100%;
  animation:rhythmShimmer 1.15s ease-in-out infinite;
}
@keyframes rhythmShimmer{from{background-position:180% 0}to{background-position:-180% 0}}

/* --- Auth header chip + user-management rows --- */
.user-chip{font-size:12px;font-weight:750;color:var(--muted);padding:0 4px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-row{display:grid;grid-template-columns:1.4fr 1.4fr auto;gap:8px;align-items:center;padding:9px 2px;border-bottom:1px solid var(--border);font-size:13px}
.user-row .roles{font-size:11px;color:var(--muted)}
.user-row .u-actions button{border:0;background:none;color:var(--accent);cursor:pointer;padding:2px 6px;font-size:12px}
.user-row .u-actions .u-del{color:var(--bad)}
.role-pick label{display:block;font-size:10px;color:var(--muted);margin-bottom:3px;font-weight:700}
.role-pick select{width:100%;padding:7px;border:1px solid #dbe0e8;border-radius:8px;font-size:12px}
