:root{--night:#111117;--night-2:#1b1b23;--gold:#c9a84c;--gold-light:#ead98f;--gold-wash:#faf6e7;--bg:#f3f3f6;--card:#fff;--text:#18191f;--muted:#70757e;--line:#e9e9ee;--green:#26834a;--green-bg:#eaf7ef;--orange:#a66509;--orange-bg:#fff3d8;--red:#b33a34;--shadow:0 12px 34px rgba(17,17,23,.055)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}.app-shell{min-height:100vh}.app-sidebar{position:fixed;inset:0 auto 0 0;width:244px;padding:24px 16px 18px;background:var(--night);color:#fff;display:flex;flex-direction:column;z-index:20}.brand-lockup{display:flex;align-items:center;gap:12px;padding:0 7px 30px;color:#fff;text-decoration:none}.brand-lockup img{filter:drop-shadow(0 4px 18px rgba(201,168,76,.16))}.brand-lockup span{display:flex;flex-direction:column}.brand-lockup b{font-size:14px;letter-spacing:.13em}.brand-lockup small{color:var(--gold-light);font-size:12px;margin-top:2px}.app-sidebar nav{display:flex;flex-direction:column;gap:5px}.nav-item{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:11px;color:#a9a9b3;text-decoration:none;font-weight:650}.nav-item:hover{background:#1c1c24;color:#fff}.nav-item.active{background:linear-gradient(105deg,rgba(201,168,76,.18),rgba(201,168,76,.06));color:#f0df9d;box-shadow:inset 2px 0 var(--gold)}.nav-icon{width:22px;text-align:center;color:var(--gold)}.sidebar-meta{margin-top:auto;display:flex;gap:10px;align-items:flex-start;padding:13px 10px;border:1px solid #2a2a34;border-radius:12px;background:#17171e}.sync-dot{width:8px;height:8px;margin-top:5px;border-radius:50%;background:#57c780;box-shadow:0 0 0 4px rgba(87,199,128,.1)}.sidebar-meta div:last-child,.sidebar-user div{display:flex;flex-direction:column}.sidebar-meta b{font-size:12px}.sidebar-meta span,.sidebar-user span{font-size:11px;color:#858590;margin-top:2px}.sidebar-user{display:flex;align-items:center;gap:10px;padding:18px 10px 0}.avatar{display:grid!important;place-items:center;width:31px;height:31px;border-radius:10px;background:linear-gradient(145deg,var(--gold-light),var(--gold));color:#1b170b!important;font-weight:850;font-size:13px!important;margin:0!important}.sidebar-user b{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.app-content{margin-left:244px}.mobile-header,.mobile-nav{display:none}main{max-width:1420px;margin:auto;padding:26px 34px 54px}.breadcrumb{display:flex;align-items:center;gap:8px;color:#9999a3;font-size:12px;margin-bottom:23px}.breadcrumb a{color:#797983;text-decoration:none}.breadcrumb b{color:#3b3b43}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:23px}.eyebrow,.section-kicker{text-transform:uppercase;letter-spacing:.12em;color:#9a7e31;font-weight:800;font-size:10px}.page-head h1{font-size:34px;line-height:1.1;letter-spacing:-.035em;margin:7px 0 6px}.page-head p{margin:0;color:var(--muted);font-size:14px}.freshness-card{display:flex;flex-direction:column;align-items:flex-end}.freshness-card span{color:var(--muted);font-size:11px}.freshness-card b{font-size:12px;margin-top:3px}.control-deck{display:grid;grid-template-columns:minmax(150px,1fr) auto auto;align-items:center;gap:18px;padding:12px 14px 12px 18px;background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 4px 18px rgba(17,17,23,.025);margin-bottom:15px}.period-label{display:flex;flex-direction:column}.period-label span{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:700}.period-label b{font-size:13px;margin-top:2px}.periods{display:flex;background:#f0f0f4;padding:3px;border-radius:11px}.periods button{border:0;background:transparent;border-radius:8px;padding:8px 11px;color:#686872;font:600 12px inherit;cursor:pointer}.periods button.active{background:var(--night);color:#f3df9a;box-shadow:0 2px 7px rgba(17,17,23,.18)}.date-range{display:flex;gap:7px}.date-range label{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:700}.date-range input,.filters select,.search{height:36px;border:1px solid var(--line);background:#fff;border-radius:9px;color:var(--text);font:500 12px inherit}.date-range input{padding:0 7px}.status{display:flex;align-items:center;gap:9px;padding:12px 15px;border-radius:12px;background:#fff8df;color:#6c571e;margin-bottom:14px}.spinner{width:13px;height:13px;border:2px solid #ddc773;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.attention-strip{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.signal{display:flex;align-items:center;gap:7px;padding:8px 11px;border-radius:9px;background:#fff;border:1px solid var(--line);font-size:11px;color:var(--muted)}.signal b{color:var(--text)}.signal i{width:7px;height:7px;border-radius:50%;background:var(--green)}.signal.warn i{background:#d68c17}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-bottom:12px}.kpis article{position:relative;overflow:hidden;background:var(--card);border:1px solid var(--line);border-radius:15px;padding:17px 18px;box-shadow:0 3px 16px rgba(17,17,23,.025)}.kpis article:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(var(--gold-light),var(--gold))}.kpis span{display:block;color:var(--muted);font-size:11px;margin-bottom:8px}.kpis strong{font-size:25px;line-height:1;letter-spacing:-.025em}.kpis small{display:block;margin-top:8px;font-size:10px;color:var(--muted)}.kpis small.up{color:var(--orange)}.kpis small.down{color:var(--green)}.panel{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden;margin-bottom:12px}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}.panel-head h2{font-size:16px;margin:3px 0 0}.panel-note{color:var(--muted);font-size:11px}.chart{height:218px;display:flex;align-items:flex-end;gap:6px;padding:23px 18px 10px;background:linear-gradient(180deg,#fff,#fdfdfd)}.bar-wrap{height:100%;min-width:7px;flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}.bar{width:100%;max-width:29px;background:linear-gradient(180deg,var(--gold-light),var(--gold));border-radius:5px 5px 2px 2px;box-shadow:0 3px 8px rgba(201,168,76,.16);transition:.2s}.bar-wrap:hover .bar{filter:brightness(.94);transform:translateY(-2px)}.bar-wrap span{font-size:9px;color:#a0a0aa;margin-top:5px}.projects-panel{scroll-margin-top:20px}.projects-head{gap:20px}.filters{display:flex;gap:7px;flex-wrap:wrap}.filters select{padding:0 10px;min-width:128px}.search{display:flex;align-items:center;gap:6px;padding:0 9px}.search span{font-size:17px;color:#888}.search input{width:130px;border:0;outline:0;background:transparent;font:inherit}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 15px;border-bottom:1px solid #f0f0f3;white-space:nowrap}th{background:#fbfbfc;color:#898992;font-size:10px;text-transform:uppercase;letter-spacing:.055em;font-weight:750}tbody tr{transition:background .15s}tbody tr:hover{background:#fcfbf7}tbody tr:last-child td{border-bottom:0}.number{text-align:right}td a{color:var(--text);font-weight:700;text-decoration:none}td a:hover{color:#8e7227}.number small{white-space:nowrap}.badge{display:inline-flex;padding:5px 8px;border-radius:999px;background:var(--green-bg);color:var(--green);font-size:10px;font-weight:750}.badge.warn{background:var(--orange-bg);color:var(--orange)}.empty{text-align:center!important;color:var(--muted);padding:42px!important}
@media(max-width:1080px){.control-deck{grid-template-columns:1fr auto}.date-range{grid-column:1/-1;justify-content:flex-end}.kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){body{padding-bottom:66px}.app-sidebar{display:none}.app-content{margin:0}.mobile-header{height:58px;padding:0 14px;background:var(--night);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}.mobile-brand{display:flex;align-items:center;gap:8px;color:#fff;text-decoration:none}.mobile-brand b{font-size:12px;letter-spacing:.1em}.mobile-brand span{font-size:11px;color:var(--gold-light)}.live-pill{display:flex;align-items:center;gap:5px;color:#aaaab4;font-size:10px}.live-pill i{width:6px;height:6px;border-radius:50%;background:#57c780}.mobile-nav{position:fixed;display:grid;grid-template-columns:1fr 1fr;bottom:0;left:0;right:0;height:62px;background:rgba(17,17,23,.97);z-index:30;padding-bottom:env(safe-area-inset-bottom)}.mobile-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#858590;text-decoration:none;font-size:10px}.mobile-nav a span{font-size:16px}.mobile-nav a.active{color:var(--gold-light)}main{padding:18px 12px 30px}.breadcrumb{margin-bottom:16px}.page-head{align-items:flex-start}.page-head h1{font-size:29px}.freshness-card{display:none}.control-deck{display:flex;flex-direction:column;align-items:stretch;padding:12px;gap:11px}.period-label{display:none}.periods{overflow-x:auto}.periods button{flex:1;min-width:max-content}.date-range{justify-content:space-between}.date-range label{flex:1}.date-range input{width:100%;min-width:0}.attention-strip{overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.signal{min-width:max-content}.kpis{grid-template-columns:1fr 1fr;gap:8px}.kpis article{padding:14px}.kpis strong{font-size:20px}.chart{height:188px;padding-left:10px;padding-right:10px}.bar-wrap:nth-child(even) span{display:none}.panel-head{align-items:flex-start;flex-direction:column;gap:12px}.filters{width:100%}.filters select{flex:1;min-width:115px}.search{width:100%}.search input{width:100%}th,td{padding:12px 13px}.projects-panel{box-shadow:none}.table-wrap{margin:0 -1px}}
@media(max-width:390px){.kpis strong{font-size:18px}.page-head p{font-size:12px}.periods button{padding:8px 9px}}
.login-page{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 50% 0,#2a2830 0,var(--night) 52%)}.login-card{width:min(430px,100%);padding:38px;text-align:center;background:#fff;border-radius:24px;box-shadow:0 24px 80px rgba(0,0,0,.3)}.login-card img{filter:drop-shadow(0 8px 22px rgba(201,168,76,.22));margin-bottom:18px}.login-card h1{font-size:27px;letter-spacing:-.03em;margin:9px 0}.login-card p{color:var(--muted);margin:0 auto 22px;max-width:340px}.gold-button{display:block;padding:13px 18px;border-radius:11px;background:linear-gradient(145deg,var(--gold-light),var(--gold));color:#1b170b;text-decoration:none;font-weight:800;box-shadow:0 8px 20px rgba(201,168,76,.22)}.login-card small{display:block;color:#92929b;margin-top:16px}

/* v3.1 — deterministic SVG chart and sturdier responsive layout. */
.chart{display:block;height:auto;min-height:260px;padding:12px 16px 5px;overflow:hidden}.spend-chart{display:block;width:100%;height:260px;overflow:visible}.chart-grid line{stroke:#ececf0;stroke-width:1;vector-effect:non-scaling-stroke}.chart-grid text,.chart-labels text{fill:#92929b;font-size:11px}.chart-area{fill:url(#chart-fill)}.chart-line{fill:none;stroke:var(--gold);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.chart-dots circle{fill:#fff;stroke:var(--gold);stroke-width:2;vector-effect:non-scaling-stroke}.chart-dots circle:hover,.chart-dots circle:focus{r:7;outline:none;fill:var(--gold-light)}
table{border-collapse:separate;border-spacing:0}th{position:sticky;top:0;z-index:2}
@media(max-width:920px){body{padding-bottom:66px}.app-sidebar{display:none}.app-content{margin:0}.mobile-header{height:58px;padding:0 14px;background:var(--night);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}.mobile-brand{display:flex;align-items:center;gap:8px;color:#fff;text-decoration:none}.mobile-brand b{font-size:12px;letter-spacing:.1em}.mobile-brand span{font-size:11px;color:var(--gold-light)}.live-pill{display:flex;align-items:center;gap:5px;color:#aaaab4;font-size:10px}.live-pill i{width:6px;height:6px;border-radius:50%;background:#57c780}.mobile-nav{position:fixed;display:grid;grid-template-columns:1fr 1fr;bottom:0;left:0;right:0;height:62px;background:rgba(17,17,23,.97);z-index:30;padding-bottom:env(safe-area-inset-bottom)}.mobile-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#858590;text-decoration:none;font-size:10px}.mobile-nav a span{font-size:16px}.mobile-nav a.active{color:var(--gold-light)}main{padding:18px 14px 30px}.freshness-card{display:none}.control-deck{display:flex;flex-direction:column;align-items:stretch;padding:12px;gap:11px}.period-label{display:none}.periods{overflow-x:auto}.periods button{flex:1;min-width:max-content}.date-range{justify-content:space-between}.date-range label{flex:1}.date-range input{width:100%;min-width:0}.attention-strip{overflow-x:auto;flex-wrap:nowrap}.signal{min-width:max-content}.kpis{grid-template-columns:1fr 1fr}.chart{height:auto;min-height:220px;padding:8px 4px 2px}.spend-chart{height:220px}.panel-head{align-items:flex-start;flex-direction:column;gap:12px}.filters{width:100%}.filters select{flex:1}.search{width:100%}.search input{width:100%}.table-wrap th:first-child,.table-wrap td:first-child{position:sticky;left:0;z-index:1;background:#fff;box-shadow:8px 0 12px -12px rgba(17,17,23,.35)}.table-wrap th:first-child{z-index:3;background:#fbfbfc}.projects-panel{box-shadow:none}}
@media(max-width:520px){main{padding-left:10px;padding-right:10px}.page-head h1{font-size:27px}.page-head p{font-size:12px}.kpis article{min-width:0}.kpis span{line-height:1.25;min-height:28px}.kpis strong{font-size:18px}.chart-grid text,.chart-labels text{font-size:13px}.projects-panel{border-radius:13px}.login-card{padding:30px 22px}}
@media(max-width:920px){body{padding-bottom:0}}
.skeleton-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:0;background:transparent}.skeleton-row span{height:68px;border-radius:14px;background:linear-gradient(100deg,#e9e9ed 20%,#f7f7f9 38%,#e9e9ed 58%);background-size:220% 100%;animation:shimmer 1.15s linear infinite}@keyframes shimmer{to{background-position-x:-220%}}@media(max-width:520px){.skeleton-row{grid-template-columns:1fr 1fr}.skeleton-row span{height:58px}}
