:root{--pv-blue: #364185;--pv-blue-deep: #111a49;--pv-green: #009d48;--pv-green-bright: #16d66b;--bg: #071026;--bg-soft: #0b1733;--surface: rgba(13, 25, 57, .72);--surface-strong: rgba(16, 30, 68, .88);--surface-soft: rgba(255, 255, 255, .08);--line: rgba(175, 205, 255, .18);--line-bright: rgba(22, 214, 107, .42);--text: #f5f8ff;--muted: #aebce0;--subtle: #7180aa;--warning: #ffbd6b;--good: #35ee86;--bad: #ff6f7d;--neutral: #b9c5df;--budget: #8ea0ff;--forecast: #ffc66e;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html{min-width:320px;background:var(--bg)}body{margin:0;min-width:320px;min-height:100vh;background-image:linear-gradient(135deg,rgba(54,65,133,.45) 0%,transparent 40%),linear-gradient(315deg,rgba(0,157,72,.28) 0%,transparent 35%),linear-gradient(180deg,#071026e0,#0b1733f2),url(/pvd-rig-bg.png);background-size:cover;background-position:center;background-attachment:fixed;background-blend-mode:normal,normal,normal,overlay}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);background-size:64px 64px,64px 64px;-webkit-mask-image:linear-gradient(180deg,#000c,#0003);mask-image:linear-gradient(180deg,#000c,#0003)}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}h1,h2,p{margin:0;letter-spacing:0}h1{color:#fff;font-size:clamp(26px,3vw,42px);line-height:1.08;text-shadow:0 0 26px rgba(0,157,72,.2)}h2{color:#fff;font-size:16px}.eyebrow{margin:0 0 7px;color:var(--pv-green-bright);font-size:12px;font-weight:800;letter-spacing:0;text-transform:uppercase}.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-panel{position:relative;width:min(560px,100%);display:grid;gap:26px;overflow:hidden;border:1px solid rgba(255,255,255,.24);border-radius:18px;padding:34px;background:linear-gradient(145deg,#ffffff24,#ffffff0a),#071026d1;box-shadow:0 28px 70px #0006,inset 0 1px #ffffff40,0 0 46px #009d482e;-webkit-backdrop-filter:blur(28px) saturate(125%);backdrop-filter:blur(28px) saturate(125%)}.auth-panel:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border-top:2px solid rgba(22,214,107,.42);background:linear-gradient(90deg,rgba(54,65,133,.18),rgba(0,157,72,.18),transparent)}.auth-brand{position:relative;display:grid;grid-template-columns:120px minmax(0,1fr);gap:22px;align-items:center}.auth-brand img{width:120px;height:90px;object-fit:contain;padding:6px;border:1px solid rgba(255,255,255,.2);border-radius:12px;background:#fffffff2;box-shadow:0 0 25px #009d482e}.auth-copy{margin-top:14px;color:var(--muted);font-size:17px;line-height:1.55}.login-form,.filter-bar{display:grid;gap:14px}label{display:grid;gap:7px;color:var(--muted);font-size:12px;font-weight:800}input,select{width:100%;min-height:42px;border:1px solid rgba(174,188,224,.25);border-radius:10px;background:#040b1e8f;color:var(--text);outline:none;padding:10px 12px;transition:border-color .14s ease,box-shadow .14s ease,background .14s ease}select option{color:#0f1730;background:#fff}input::placeholder{color:#aebce09e}input:focus,select:focus{border-color:var(--pv-green-bright);background:#040b1ec2;box-shadow:0 0 0 3px #009d482e,0 0 22px #009d482e}.primary-button,.secondary-button,.text-button,.segmented button,nav button{border:0;border-radius:10px;min-height:42px}.primary-button{position:relative;overflow:hidden;background:linear-gradient(135deg,var(--pv-green),var(--pv-blue));color:#fff;font-weight:900;box-shadow:0 14px 28px #009d483d,0 0 28px #36418547}.primary-button:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);transform:translate(-100%);transition:transform .26s ease}.primary-button:hover:after{transform:translate(100%)}.secondary-button{border:1px solid var(--line-bright);background:#ffffff0f;color:#e8fff2;font-weight:800;padding:0 16px;box-shadow:0 0 22px #009d481f}.secondary-button:disabled{border-color:#aebce02e;color:var(--subtle);box-shadow:none}.text-button{margin-top:auto;background:#ffffff0f;color:var(--muted);text-align:left;padding:0 12px}.text-button:hover{color:#fff;background:#ffffff1a}.form-error,.alert{color:#ffe5e9;background:#ff6f7d21;border:1px solid rgba(255,111,125,.42);border-radius:12px;padding:12px;box-shadow:inset 0 1px #ffffff14}.setup-box{display:grid;gap:8px;color:var(--muted);background:#ffffff14;border:1px solid var(--line);border-radius:14px;padding:16px}.setup-box strong{color:#fff}.setup-box code{color:#e8fff2}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:22px;padding:20px 16px;color:#fff;background:linear-gradient(180deg,#36418540,#009d480f),#060c20d1;border-right:1px solid rgba(255,255,255,.16);box-shadow:20px 0 60px #00000052;-webkit-backdrop-filter:blur(32px) saturate(120%);backdrop-filter:blur(32px) saturate(120%)}.brand{display:grid;gap:14px;padding:8px 8px 14px}.brand img{width:120px;height:90px;object-fit:contain;padding:6px;border:1px solid rgba(255,255,255,.2);border-radius:12px;background:#fffffff2;box-shadow:0 0 20px #009d4826;transition:transform .2s ease,box-shadow .2s ease}.brand img:hover{transform:scale(1.03);box-shadow:0 0 25px #009d4840}.brand strong{display:block;font-size:22px}.brand small{display:block;margin-top:4px;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}nav{display:grid;gap:8px}nav button{position:relative;width:100%;overflow:hidden;text-align:left;color:var(--muted);background:#ffffff0b;padding:0 14px;font-weight:800;transition:color .14s ease,background .14s ease,box-shadow .14s ease}nav button:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--pv-green-bright);opacity:0;box-shadow:0 0 18px var(--pv-green-bright)}nav button.active,nav button:hover{color:#fff;background:linear-gradient(90deg,#009d4838,#36418538);box-shadow:inset 0 0 0 1px #ffffff1a,0 0 26px #009d481a}nav button.active:before{opacity:1}.content{min-width:0;display:grid;align-content:start;gap:18px;padding:26px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:4px}.topbar-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.user-pill,.live-pill{min-height:38px;display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.16);border-radius:999px;color:var(--muted);background:#ffffff14;padding:8px 12px;font-size:13px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.live-pill{color:#dcffe9;border-color:#16d66b57}.live-pill span{width:8px;height:8px;border-radius:50%;background:var(--pv-green-bright);box-shadow:0 0 14px var(--pv-green-bright)}.filter-bar{grid-template-columns:190px 110px minmax(160px,.8fr) minmax(190px,1fr) 90px 90px;align-items:end;padding:14px;border:1px solid rgba(255,255,255,.18);border-radius:16px;background:linear-gradient(135deg,#ffffff14,#ffffff08),#081127bd;box-shadow:inset 0 1px #ffffff29,0 18px 45px #00000040;-webkit-backdrop-filter:blur(28px) saturate(120%);backdrop-filter:blur(28px) saturate(120%)}.segmented{display:grid;grid-template-columns:repeat(3,1fr);min-height:42px;overflow:hidden;border:1px solid rgba(174,188,224,.25);border-radius:12px;background:#040b1e7a}.segmented button{border-radius:0;color:var(--muted);background:transparent;border-right:1px solid rgba(174,188,224,.16);font-size:13px;font-weight:900}.segmented button:last-child{border-right:0}.segmented button.active{color:#fff;background:linear-gradient(135deg,var(--pv-green),var(--pv-blue));box-shadow:0 0 24px #009d4847}.loading-line{min-height:40px;display:flex;align-items:center;color:var(--muted)}.kpi-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.kpi-card,.panel{min-width:0;border:1px solid rgba(255,255,255,.15);border-radius:16px;background:linear-gradient(145deg,#ffffff14,#ffffff05),#0c1733bd;box-shadow:inset 0 1px #ffffff26,0 22px 55px #00000040;-webkit-backdrop-filter:blur(28px) saturate(125%);backdrop-filter:blur(28px) saturate(125%);transition:border-color .25s ease,background .25s ease,transform .25s ease,box-shadow .25s ease}.kpi-card{position:relative;overflow:hidden;display:grid;gap:11px;width:100%;padding:16px;color:inherit;text-align:left}.kpi-card:before{content:"";position:absolute;inset:0 0 auto;height:3.5px;background:linear-gradient(90deg,var(--pv-blue),var(--pv-green));box-shadow:0 0 15px var(--pv-green);transition:height .25s ease}.kpi-card span,.panel-heading span{color:var(--muted);font-size:12px;font-weight:800}.kpi-card strong{color:#fff;font-size:clamp(22px,2.4vw,30px);line-height:1}.kpi-card div{display:flex;align-items:center;justify-content:space-between;gap:10px}.kpi-card small{color:var(--subtle)}.kpi-measure{color:var(--muted)!important;font-size:11px!important;text-transform:uppercase}.kpi-period{margin-top:-4px;font-size:11px!important;line-height:1.25}.kpi-note{margin-top:-5px;color:var(--muted)!important;font-size:11px!important;line-height:1.25}.kpi-card em{font-style:normal;font-weight:900;font-size:12px;white-space:nowrap}.kpi-card:hover{border-color:#16d66b59;background:linear-gradient(145deg,#ffffff1f,#ffffff0a),#101e44d1;transform:translateY(-2px);box-shadow:0 20px 45px #00000059,0 0 25px #009d4826}.kpi-card:hover:before{height:5px}.grid,.analysis-grid{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(460px,1.1fr);gap:14px}.analysis-grid.single-panel,.detail-grid.single-panel{grid-template-columns:1fr}.analysis-grid>.wide-chart-panel,.analysis-grid>.wide-chart-panel+.chart-panel{grid-column:1 / -1}.panel{padding:16px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.chart-panel{overflow:visible}.combo-chart-shell{position:relative;padding:4px 52px 0 72px}.chart-axis{position:absolute;top:18px;bottom:32px;z-index:1;display:flex;flex-direction:column;justify-content:space-between;color:var(--muted);font-size:11px;font-weight:800;pointer-events:none}.amount-axis{left:0;width:64px;text-align:right}.pct-axis{right:0;width:44px;text-align:left}.combo-chart,.stacked-chart{position:relative;height:300px;display:grid;gap:12px;align-items:end;border-bottom:1px solid rgba(174,188,224,.2);padding:18px 4px 0}.combo-chart{gap:0}.combo-group,.stacked-group{position:relative;min-width:0;height:100%;display:grid;grid-template-rows:1fr auto;gap:8px}.combo-group{padding:0 6px}.combo-bars{position:relative;z-index:2;display:grid;grid-template-columns:repeat(2,minmax(6px,1fr));align-items:end;gap:5px;height:100%}.variance-dot-layer{position:absolute;top:16px;right:4px;bottom:24px;left:4px;z-index:8;pointer-events:none}.variance-dot-layer>i{position:absolute;width:11px;height:11px;border:2px solid #071026;border-radius:50%;background:currentColor;transform:translate(-50%,-50%);box-shadow:0 0 0 3px #fff3,0 0 18px currentColor}.variance-line{position:absolute;top:16px;right:4px;bottom:24px;left:4px;z-index:6;width:calc(100% - 8px);height:calc(100% - 40px);overflow:visible;pointer-events:none;filter:drop-shadow(0 0 8px rgba(255,255,255,.36))}.variance-line polyline{fill:none;stroke:#f5f8ffeb;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.3;vector-effect:non-scaling-stroke}.line-key{display:inline-block;width:16px;height:2px;margin-right:6px;vertical-align:middle;background:#ffffffd1}.stacked-bar{display:flex;flex-direction:column-reverse;overflow:hidden;align-self:end;width:min(42px,100%);min-height:3px;margin:0 auto;border-radius:8px 8px 0 0;background:#ffffff14}.stacked-bar span{display:block;min-height:0}.stacked-group small,.combo-group small{color:var(--muted);font-size:11px;text-align:center;white-space:nowrap}.mini-segmented{display:grid;grid-template-columns:repeat(2,52px);overflow:hidden;border:1px solid rgba(174,188,224,.24);border-radius:10px;background:#040b1e7a}.pnl-tabs{grid-template-columns:76px 104px}.pnl-panel .panel-heading{align-items:flex-start}.pnl-table th:first-child,.pnl-table td:first-child{text-align:left}.pnl-table th{text-align:center}.pnl-table th:not(:first-child),.pnl-table td:not(:first-child){width:16%}.pnl-table:not(.pnl-department-matrix) th:not(:first-child),.pnl-table:not(.pnl-department-matrix) td:not(:first-child){text-align:center!important}.pnl-table th:first-child,.pnl-table td:first-child{width:36%}.pnl-main-row td,.pnl-total-row td{font-weight:850}.pnl-total-row{background:#8ea0ff14}.pnl-child-row td{color:var(--muted);background:#ffffff06}.pnl-sub-row td,.pnl-finance-row td{color:#dce5ff;background:#ffffff05}.pnl-sub-row td:nth-child(2),.pnl-finance-row td:nth-child(2){padding-left:22px;font-style:italic}.pnl-percent-row td{color:#9fb2ff;background:#ffcfa814;font-style:italic}.pnl-budget-row td{background:#8ea0ff14;font-weight:850}.pnl-variance-row td{background:#ffbd6b2e;color:#fff4cc;font-weight:900}.pnl-toggle{width:100%;min-height:0;display:flex;align-items:center;gap:8px;border:0;border-radius:0;padding:0;color:inherit;background:transparent;text-align:left;font-weight:inherit}.pnl-toggle:disabled{cursor:default}.pnl-toggle span{width:18px;height:18px;display:inline-grid;place-items:center;flex:0 0 auto;border:1px solid rgba(174,188,224,.24);border-radius:6px;color:var(--muted);font-size:13px;font-weight:900}.pnl-toggle:disabled span{border-color:transparent}.pnl-toggle strong{min-width:34px;color:#fff}.pnl-indent{display:inline-block;padding-left:60px}.pnl-department-matrix{min-width:980px}.pnl-department-matrix th:nth-child(n+3),.pnl-department-matrix td:nth-child(n+3){min-width:118px;text-align:right}.mini-segmented button{min-height:34px;border:0;color:var(--muted);background:transparent;font-size:12px;font-weight:900}.mini-segmented button.active{color:#fff;background:linear-gradient(135deg,var(--pv-green),var(--pv-blue))}.waterfall-wrap{overflow-x:auto}.waterfall-svg{width:100%;min-width:520px;height:280px}.waterfall-svg .axis,.waterfall-svg .connector{stroke:#aebce057;stroke-dasharray:4 4}.waterfall-positive{fill:var(--pv-green);filter:drop-shadow(0 0 12px rgba(22,214,107,.22))}.waterfall-negative{fill:var(--bad);filter:drop-shadow(0 0 12px rgba(255,111,125,.18))}.waterfall-value{fill:#fff;font-size:12px;font-weight:800;text-anchor:middle}.waterfall-label{fill:var(--muted);font-size:12px;font-weight:800;text-anchor:middle}.ranking-chart{display:grid;gap:10px}.ranking-row{display:grid;grid-template-columns:minmax(130px,.9fr) minmax(120px,1fr) minmax(82px,auto);gap:10px;align-items:center}.ranking-row span{min-width:0;overflow:hidden;color:#e7edff;font-size:12px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.ranking-row div{height:12px;overflow:hidden;border-radius:999px;background:#ffffff14}.ranking-row i{display:block;height:100%;min-width:4px;border-radius:inherit}.ranking-row i.good{background:linear-gradient(90deg,var(--pv-green),var(--pv-green-bright))}.ranking-row i.bad{background:linear-gradient(90deg,#ff6f7d,#ffc66e)}.ranking-row i.neutral{background:var(--neutral)}.ranking-row strong{font-size:12px;text-align:right;white-space:nowrap}.capex-breakdown{display:grid;gap:12px}.capex-breakdown-row{position:relative;display:grid;grid-template-columns:minmax(130px,.8fr) minmax(160px,1fr) minmax(82px,auto);gap:12px;align-items:center}.capex-breakdown-row>span{min-width:0;overflow:hidden;color:#e7edff;font-size:12px;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.capex-breakdown-row>strong{font-size:12px;text-align:right;white-space:nowrap}.capex-bars{display:grid;gap:5px}.capex-bars i{display:block;height:10px;min-width:4px;border-radius:999px}.capex-breakdown-row:hover .chart-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.revenue-execution-panel,.revenue-budget-panel{min-height:360px}.customer-execution-list{display:grid;gap:12px}.scrollable-list{max-height:420px;overflow-y:auto;padding-right:8px}.scrollable-list::-webkit-scrollbar{width:8px}.scrollable-list::-webkit-scrollbar-track{border-radius:999px;background:#ffffff12}.scrollable-list::-webkit-scrollbar-thumb{border-radius:999px;background:#aebce059}.customer-execution-row{position:relative;display:grid;grid-template-columns:minmax(150px,1.05fr) minmax(145px,.95fr) repeat(4,minmax(72px,auto));gap:12px;align-items:center}.customer-label{min-width:0;display:grid;gap:3px}.customer-label strong{min-width:0;overflow:hidden;color:#fff;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.customer-label span,.revenue-budget-panel small{display:block;color:var(--muted);font-size:11px;font-weight:800}.execution-progress-cell{display:grid;gap:4px}.execution-progress-cell span{color:var(--muted);font-size:10px;font-weight:900;text-transform:uppercase}.execution-progress{height:12px;overflow:hidden;border-radius:999px;background:#ffffff17}.execution-progress i{display:block;height:100%;min-width:4px;border-radius:999px}.execution-progress .current{background:linear-gradient(90deg,var(--pv-green),var(--pv-green-bright));box-shadow:0 0 18px #16d66b38}.execution-progress .over{background:linear-gradient(90deg,#ffe0a0,#f2a736);box-shadow:0 0 18px #ffc66e38}.customer-execution-row>strong{font-size:12px;text-align:right;white-space:nowrap}.numeric-cell{color:#e7edff;font-size:12px;font-weight:850;text-align:right;white-space:nowrap}.customer-execution-row:hover .chart-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.revenue-budget-panel td:first-child{min-width:190px}.revenue-budget-panel td:first-child strong{display:block;max-width:260px;overflow:hidden;color:#fff;text-overflow:ellipsis;white-space:nowrap}.warning-note{color:var(--warning)!important}.empty-chart{min-height:180px;display:grid;place-items:center;color:var(--muted);text-align:center}.bar-chart{height:280px;display:grid;gap:12px;align-items:end;border-bottom:1px solid rgba(174,188,224,.2);padding:14px 4px 0}.bar-group{position:relative;min-width:0;height:100%;display:grid;grid-template-rows:1fr auto;gap:8px}.bars{display:grid;grid-template-columns:repeat(2,1fr);align-items:end;gap:4px;height:100%}.bar{display:block;min-height:2px;border-radius:8px 8px 0 0}.actual,.dot.actual{background:linear-gradient(180deg,var(--pv-green-bright),var(--pv-green));box-shadow:0 0 18px #16d66b42}.budget,.dot.budget{background:linear-gradient(180deg,#a7b3ff,var(--pv-blue));box-shadow:0 0 18px #8ea0ff38}.forecast,.dot.forecast{background:linear-gradient(180deg,#ffe0a0,#f2a736);box-shadow:0 0 18px #ffc66e33}.bar-group small{color:var(--muted);font-size:11px;text-align:center;white-space:nowrap}.chart-tooltip{position:absolute;left:50%;bottom:28px;z-index:30;display:grid;gap:6px;min-width:178px;max-width:min(280px,80vw);padding:10px 11px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:#081128f2;box-shadow:0 16px 34px #00000057,0 0 28px #009d4824;color:var(--text);font-size:12px;opacity:0;pointer-events:none;transform:translate(-50%) translateY(6px);transition:opacity .12s ease,transform .12s ease;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.chart-tooltip span{display:flex;justify-content:space-between;gap:14px}.chart-tooltip b{color:var(--muted);font-weight:800}.bar-group:hover .chart-tooltip,.combo-group:hover .chart-tooltip,.stacked-group:hover .chart-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.bar-group:first-child .chart-tooltip,.combo-group:first-child .chart-tooltip,.stacked-group:first-child .chart-tooltip{left:0;transform:translate(0) translateY(6px)}.bar-group:first-child:hover .chart-tooltip,.combo-group:first-child:hover .chart-tooltip,.stacked-group:first-child:hover .chart-tooltip{transform:translate(0) translateY(0)}.bar-group:last-child .chart-tooltip,.combo-group:last-child .chart-tooltip,.stacked-group:last-child .chart-tooltip{left:auto;right:0;transform:translate(0) translateY(6px)}.bar-group:last-child:hover .chart-tooltip,.combo-group:last-child:hover .chart-tooltip,.stacked-group:last-child:hover .chart-tooltip{transform:translate(0) translateY(0)}.legend{display:flex;flex-wrap:wrap;gap:14px;color:var(--muted);font-size:12px;margin-top:14px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.table-panel{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{position:sticky;top:0;color:var(--muted);font-size:12px;text-align:left;text-transform:uppercase;letter-spacing:0;border-bottom:1px solid rgba(174,188,224,.22);background:#081128e6;padding:10px 8px}th small{display:block;margin-top:3px;color:var(--subtle);font-size:10px;font-weight:800;text-transform:none}td{color:#e7edff;border-bottom:1px solid rgba(174,188,224,.12);padding:10px 8px;vertical-align:top}tbody tr{transition:background .12s ease}tbody tr:hover{background:#ffffff0e}td:nth-child(n+4),th:nth-child(n+4){text-align:right}.empty-cell{color:var(--muted);text-align:center!important;padding:28px}.good{color:var(--good)}.bad{color:var(--bad)}.neutral{color:var(--neutral)}.export-panel{display:flex;align-items:center;justify-content:space-between;gap:16px}.export-panel p{margin:6px 0 0;color:var(--muted)}@media (max-width: 1180px){.app-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:10;height:auto;flex-direction:row;align-items:center;overflow-x:auto;padding:12px 14px}.brand{min-width:220px;grid-template-columns:84px 1fr;align-items:center;padding:0}.brand img{width:84px;height:56px}nav{grid-auto-flow:column;grid-auto-columns:max-content}nav button{width:auto;min-width:96px}.text-button{margin-top:0;min-width:100px}.filter-bar,.grid,.analysis-grid,.kpi-strip{grid-template-columns:1fr 1fr}}@media (max-width: 760px){.auth-panel{padding:24px}.auth-brand{grid-template-columns:1fr}.auth-brand img{width:132px;height:94px}.content{padding:16px}.topbar,.export-panel{align-items:flex-start;flex-direction:column}.topbar-actions{justify-content:flex-start}.filter-bar,.grid,.analysis-grid,.kpi-strip{grid-template-columns:1fr}.bar-chart,.combo-chart,.stacked-chart{overflow-x:auto;grid-template-columns:repeat(12,46px)}.kpi-card strong{font-size:24px}.customer-execution-row{grid-template-columns:minmax(150px,1fr) minmax(130px,1fr) repeat(4,76px);min-width:650px}.customer-execution-list{overflow-x:auto}}.tree-table th{font-size:13px;font-weight:700;color:var(--muted);text-transform:uppercase}.tree-table td{vertical-align:middle;padding:12px 10px}.tree-table .parent-row td{font-size:15px;font-weight:700}.tree-table .parent-row td.numeric-cell{font-size:16px;font-weight:800;color:#fff}.tree-table .child-row td{font-size:14px}.tree-table .child-row td.numeric-cell{font-size:14px;font-weight:700}.tree-table .grandchild-row td{font-size:13px}.tree-table .grandchild-row td.numeric-cell{font-size:13px;font-weight:600}.tree-table .grandchild-row.active{background:#16d66b26!important;box-shadow:inset 0 0 0 1px var(--pv-green-bright)}.tree-table .center-cell{text-align:center}.pakd-detail-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);gap:20px;margin-top:24px;grid-column:1 / -1}@media (max-width: 1024px){.pakd-detail-layout{grid-template-columns:1fr}}.matrix-table{width:100%;border-collapse:collapse}.matrix-table tr.selected{background:#8ea0ff26;box-shadow:inset 0 0 0 1px var(--budget)}.matrix-table td{padding:12px 10px;vertical-align:middle}.matrix-table th{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;background:#081128f2;padding:12px 10px;border-bottom:2px solid var(--line)}.matrix-table .numeric-cell{font-size:13px;font-weight:700}.pakd-monthly-chart{display:flex;flex-direction:column;height:100%;min-height:380px}.pakd-monthly-chart .bar-chart{height:280px;display:grid;gap:8px;align-items:end;border-bottom:1px solid rgba(174,188,224,.2);padding:14px 4px 0}.pakd-monthly-chart .bars{display:grid;grid-template-columns:repeat(2,1fr);align-items:end;gap:2px;height:100%}.pakd-monthly-chart .bar{border-radius:4px 4px 0 0}.neutral-yellow{color:var(--warning)!important}.numeric-cell.good{color:var(--good)!important}.numeric-cell.bad{color:var(--bad)!important}.numeric-cell.neutral-yellow{color:var(--warning)!important}.filter-chip{display:inline-flex;align-items:center;gap:6px;background:#8ea0ff26;border:1px solid rgba(142,160,255,.3);padding:4px 10px;border-radius:6px;font-size:11px;color:#fff;font-weight:700;margin-left:12px}.filter-chip button{border:0;background:transparent;color:var(--bad);font-weight:900;cursor:pointer;padding:0 2px;font-size:12px;min-height:0;line-height:1}.multi-row-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:20px;width:100%}.card-item{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:4px;text-align:left}.card-item.full-width{grid-column:1 / -1;background:#8ea0ff14;border-color:#8ea0ff33}.card-item label{font-size:10px;color:var(--muted);text-transform:uppercase;font-weight:800;display:block}.card-item span{font-size:15px;font-weight:850;color:#fff}.card-item span.good{color:var(--good)}.card-item span.bad{color:var(--bad)}.heatmap-panel{grid-column:1 / -1;margin-top:24px}.heatmap-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;width:100%}.heatmap-box{position:relative;border-radius:10px;padding:14px;display:flex;flex-direction:column;justify-content:space-between;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;cursor:pointer}.heatmap-box:hover{transform:scale(1.015)}.heatmap-box:hover .chart-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.heatmap-box.highlighted-flash{outline:3px solid #fff;box-shadow:0 0 25px #fffc;animation:flash-pulse .8s infinite alternate}@keyframes flash-pulse{0%{box-shadow:0 0 10px #ffffff80}to{box-shadow:0 0 30px var(--pv-green-bright)}}.ai-chatbot-drawer{position:fixed;top:0;right:0;bottom:0;z-index:1000;display:flex;flex-direction:column;width:50vw;min-width:420px;background:#081128e0;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border-left:1px solid var(--line);box-shadow:-20px 0 60px #00000080;transform:translate(100%);transition:transform .3s cubic-bezier(.16,1,.3,1)}.ai-chatbot-drawer.open{transform:translate(0)}.ai-chatbot-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--line);background:#0b173366}.ai-chatbot-header h2{font-size:16px;display:flex;align-items:center;gap:10px;color:#fff}.ai-chatbot-header-actions{display:flex;align-items:center;gap:12px}.model-selector-btn{background:#ffffff0d;border:1px solid var(--line);color:var(--muted);font-size:11px;font-weight:700;padding:4px 10px;border-radius:6px;transition:all .15s ease}.model-selector-btn:hover{background:#ffffff1a;color:#fff}.model-selector-btn.active{background:#16d66b26;border-color:var(--line-bright);color:var(--good)}.chatbot-close-btn{background:transparent;border:0;color:var(--muted);font-size:20px;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;transition:background .15s ease,color .15s ease}.chatbot-close-btn:hover{background:#ffffff14;color:#fff}.ai-chatbot-body{flex:1;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:18px;background:linear-gradient(180deg,transparent,rgba(5,11,30,.4))}.ai-chatbot-body::-webkit-scrollbar{width:6px}.ai-chatbot-body::-webkit-scrollbar-track{background:transparent}.ai-chatbot-body::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:99px}.chat-message{display:flex;flex-direction:column;max-width:88%;animation:message-slide-up .25s cubic-bezier(.16,1,.3,1) forwards}@keyframes message-slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.chat-message.user{align-self:flex-end}.chat-message.assistant{align-self:flex-start}.chat-bubble{padding:12px 16px;border-radius:14px;font-size:14px;line-height:1.55;color:var(--text);word-break:break-word}.chat-message.user .chat-bubble{background:linear-gradient(135deg,var(--pv-blue),rgba(26,38,102,.9));border:1px solid rgba(255,255,255,.1);border-bottom-right-radius:2px}.chat-message.assistant .chat-bubble{background:var(--surface);border:1px solid var(--line);border-bottom-left-radius:2px;box-shadow:0 6px 18px #0003}.chat-meta{font-size:11px;color:var(--subtle);margin-top:5px;padding:0 4px;font-weight:600}.chat-message.user .chat-meta{text-align:right}.ai-chatbot-footer{padding:18px 24px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:12px;background:#0b1733e6}.ai-chatbot-input-container{display:flex;gap:10px;align-items:flex-end}.ai-chatbot-input{flex:1;min-height:42px;max-height:120px;resize:none;background:#040b1ea6;border:1px solid rgba(174,188,224,.2);border-radius:10px;color:var(--text);padding:10px 14px;font-family:inherit;font-size:14px;line-height:1.4;outline:none;transition:all .15s ease}.ai-chatbot-input:focus{border-color:var(--pv-green-bright);background:#040b1ed9;box-shadow:0 0 12px #16d66b26}.ai-chatbot-send-btn{min-height:42px;padding:0 18px;border-radius:10px;border:0;background:linear-gradient(135deg,var(--pv-green),var(--pv-blue));color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #009d4833;transition:all .15s ease}.ai-chatbot-send-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 16px #009d484d}.ai-chatbot-send-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.suggested-prompts-container{display:flex;flex-direction:column;gap:8px;width:100%}.suggested-prompts-label{font-size:11px;color:var(--subtle);font-weight:800;text-transform:uppercase;margin-bottom:2px}.prompt-pill{background:#ffffff0a;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:13px;color:var(--muted);cursor:pointer;text-align:left;transition:all .15s ease}.prompt-pill:hover{background:#16d66b14;border-color:var(--line-bright);color:#fff;transform:translate(4px)}.ai-thinking{display:flex;align-items:center;gap:6px;padding:12px 16px;border-radius:14px;background:var(--surface);border:1px solid var(--line);align-self:flex-start}.ai-thinking-text{font-size:13px;color:var(--muted);margin-right:4px}.ai-thinking-dots{display:flex;gap:4px}.ai-thinking-dots span{width:6px;height:6px;border-radius:50%;background:var(--pv-green-bright);animation:pulse-thinking 1.4s infinite ease-in-out both}.ai-thinking-dots span:nth-child(2){animation-delay:.2s}.ai-thinking-dots span:nth-child(3){animation-delay:.4s}@keyframes pulse-thinking{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1.2);opacity:1}}.chatbot-trigger-tab{position:fixed;right:0;bottom:180px;z-index:999;display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 8px 16px 12px;border:1px solid rgba(22,214,107,.4);border-right:0;border-radius:12px 0 0 12px;background:linear-gradient(135deg,var(--pv-blue-deep),rgba(17,26,73,.95));color:#fff;font-weight:800;cursor:pointer;box-shadow:-4px 4px 16px #0006,0 0 15px #16d66b26,inset 1px 1px #ffffff1a;transform:translate(calc(100% - 32px));transition:transform .25s cubic-bezier(.16,1,.3,1),border-color .2s ease,box-shadow .2s ease;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.chatbot-trigger-tab:hover{transform:translate(0);border-color:var(--pv-green-bright);box-shadow:-6px 6px 22px #00000080,0 0 25px #16d66b59}.chatbot-trigger-tab.active{transform:translate(100%)}.chatbot-tab-icon{font-size:16px;line-height:1}.chatbot-tab-text{writing-mode:vertical-rl;text-orientation:mixed;font-size:13px;letter-spacing:1px}.ai-svg-illustration{width:100%;max-width:200px;height:auto;margin:0 auto 16px;filter:drop-shadow(0 0 25px rgba(22,214,107,.2))}.pulsing-node{animation:pulse-node-glow 2s infinite ease-in-out alternate}@keyframes pulse-node-glow{0%{r:3px;fill-opacity:.5;filter:drop-shadow(0 0 2px var(--pv-green-bright))}to{r:6px;fill-opacity:1;filter:drop-shadow(0 0 8px var(--pv-green-bright))}}.pulsing-node-blue{animation:pulse-node-blue-glow 2.5s infinite ease-in-out alternate}@keyframes pulse-node-blue-glow{0%{r:3px;fill-opacity:.4;filter:drop-shadow(0 0 2px var(--budget))}to{r:7px;fill-opacity:.9;filter:drop-shadow(0 0 10px var(--budget))}}.flow-line{stroke-dasharray:6 6;animation:flow-dash 25s linear infinite}@keyframes flow-dash{to{stroke-dashoffset:-500}}.flow-line-reverse{stroke-dasharray:5 5;animation:flow-dash-rev 18s linear infinite}@keyframes flow-dash-rev{to{stroke-dashoffset:500}}.chat-bubble p{margin:0 0 10px}.chat-bubble p:last-child{margin-bottom:0}.chat-bubble strong{color:#fff;font-weight:700}.chat-bubble h1,.chat-bubble h2,.chat-bubble h3{color:#fff;margin:14px 0 8px;font-weight:700}.chat-bubble h3{font-size:15px}.chat-bubble ul,.chat-bubble ol{margin:0 0 10px;padding-left:20px}.chat-bubble li{margin-bottom:4px}.chat-bubble code{background:#00000059;padding:2px 5px;border-radius:4px;font-family:Consolas,Monaco,monospace;font-size:12.5px;color:var(--warning)}.chat-bubble table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13px}.chat-bubble th,.chat-bubble td{border:1px solid var(--line);padding:8px 10px;text-align:right}.chat-bubble th:first-child,.chat-bubble td:first-child{text-align:left}.chat-bubble th{background:#ffffff14;color:#fff;font-weight:700}.chat-bubble td{color:var(--muted)}.chat-bubble tr:nth-child(2n){background:#ffffff05}.chat-bubble tr:hover{background:#ffffff0a}.ai-chatbot-warning-banner{padding:12px 16px;background:#ff6f7d1a;border:1px solid rgba(255,111,125,.3);border-radius:10px;color:#ffe5e9;font-size:13px;margin-bottom:12px}.reasoning-box{background:#ffffff08;border-left:3px solid var(--subtle);padding:10px 14px;margin-bottom:10px;font-size:12px;color:var(--subtle);border-radius:4px;font-style:italic;max-height:120px;overflow-y:auto}.reasoning-title{font-weight:800;font-size:11px;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-style:normal}.combo-chart-shell{background:#08112866;border:1px solid var(--line);border-radius:12px}.chart-axis .axis-title{color:var(--muted);font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.5px;opacity:.85}.stacked-group:hover .column-hover-bg{opacity:1!important}.stacked-group:hover .budget-dot{transform:scale(1.35)!important;box-shadow:0 0 10px #fff,0 0 4px #fffc!important;background:#fff!important}.stacked-group:hover .stacked-bar{transform:scaleX(1.06) translateY(-1px);box-shadow:0 4px 12px #00000059;filter:brightness(1.05)}.combo-chart-shell .chart-tooltip{background:#09122cd9!important;border-color:#ffffff26!important;box-shadow:0 12px 32px #0006,0 0 20px #009d4814,inset 0 1px #ffffff26!important}.color-mode-toggle{display:inline-flex;background:#ffffff0d;border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:2px}.color-mode-toggle button{background:transparent;border:none;border-radius:6px;color:var(--muted);font-size:11px;font-weight:800;padding:6px 12px;cursor:pointer;transition:all .2s ease;min-height:0;text-transform:uppercase}.color-mode-toggle button.active{background:#ffffff1f;color:#fff;box-shadow:0 1px 3px #0003}.color-mode-toggle button:hover:not(.active){color:#fff;background:#ffffff0a}.heatmap-combinations-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:14px;padding:10px 14px;background:#ffffff05;border:1px dashed rgba(255,255,255,.12);border-radius:10px;justify-content:flex-start;align-items:center}.heatmap-combinations-legend span{font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.heatmap-combinations-legend .color-box{width:12px;height:12px;border-radius:3px;display:inline-block;border:1px solid rgba(255,255,255,.1)}.budget-table-scroll-container{max-height:480px;overflow-y:auto;position:relative;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:#040b1e33;margin-top:10px}.budget-table-scroll-container::-webkit-scrollbar{width:8px}.budget-table-scroll-container::-webkit-scrollbar-track{background:#ffffff05}.budget-table-scroll-container::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:4px}.budget-table-scroll-container::-webkit-scrollbar-thumb:hover{background:#fff3}.budget-table-scroll-container thead th{position:sticky;top:0;background:#09122c!important;z-index:10;box-shadow:0 1px #ffffff26}.execution-summary-card{display:flex;flex-direction:column;gap:12px;background:#ffffff08;padding:10px 16px;border-radius:12px;border:1px solid rgba(255,255,255,.08);min-width:320px}.execution-summary-main{display:flex;gap:16px;align-items:center}.status-breakdown-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px 12px;padding-top:10px;border-top:1px solid rgba(255,255,255,.08);width:100%}.status-breakdown-item{display:flex;flex-direction:column;align-items:flex-start;min-width:0}.status-breakdown-item label{font-size:9px;color:var(--muted);text-transform:uppercase;font-weight:800;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}.status-breakdown-item .status-vals{display:flex;align-items:baseline;gap:4px;font-size:12px;font-weight:700;color:#fff}.status-breakdown-item .status-vals small{font-size:9px;color:var(--subtle);font-weight:400}.settings-panel{display:grid;gap:24px;width:100%}.settings-card{border:1px solid rgba(255,255,255,.15);border-radius:16px;background:linear-gradient(145deg,#ffffff14,#ffffff05),#0c1733bd;box-shadow:inset 0 1px #ffffff26,0 22px 55px #00000040;-webkit-backdrop-filter:blur(28px) saturate(125%);backdrop-filter:blur(28px) saturate(125%);padding:24px}.settings-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;margin-bottom:24px;border-bottom:1px solid var(--line);padding-bottom:20px}.settings-title{font-size:22px;font-weight:800;color:#fff;text-shadow:0 0 18px rgba(0,157,72,.15)}.settings-search-bar{margin-bottom:24px;display:flex;gap:12px}.settings-search-input{max-width:400px;min-height:44px;border:1px solid rgba(174,188,224,.2);border-radius:10px;background:#040b1e73;color:var(--text);padding:10px 14px;transition:all .15s ease}.settings-search-input:focus{border-color:var(--pv-green-bright);background:#040b1eb3;box-shadow:0 0 0 3px #009d4826}.user-table-wrapper{overflow-x:auto;border-radius:12px;border:1px solid var(--line);background:#040b1e40}.user-table{width:100%;border-collapse:collapse;text-align:left}.user-table th,.user-table td{padding:16px 20px;border-bottom:1px solid var(--line);vertical-align:middle}.user-table th{background:#ffffff0a;font-weight:800;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.8px}.user-table tbody tr{transition:background .15s ease}.user-table tbody tr:hover{background:#ffffff04}.user-table tbody tr:last-child td{border-bottom:none}.user-email{font-weight:700;color:#fff;font-size:15px}.user-role-badge{display:inline-block;padding:4px 10px;border-radius:20px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px}.role-admin{background:#ffbd6b1f;color:var(--warning);border:1px solid rgba(255,189,107,.25)}.role-director,.role-deputy_director{background:#8ea0ff1f;color:var(--budget);border:1px solid rgba(142,160,255,.25)}.role-department_head,.role-staff{background:#16d66b1a;color:var(--pv-green-bright);border:1px solid rgba(22,214,107,.25)}.role-viewer{background:#b9c5df14;color:var(--neutral);border:1px solid rgba(185,197,223,.18)}.tab-checkbox-group{display:flex;gap:10px;flex-wrap:wrap}.tab-checkbox-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;background:#ffffff09;border:1px solid rgba(255,255,255,.06);padding:8px 14px;border-radius:8px;font-weight:700;font-size:13px;color:var(--muted);-webkit-user-select:none;user-select:none;transition:all .14s cubic-bezier(.4,0,.2,1)}.tab-checkbox-label:hover{background:#ffffff12;border-color:#ffffff1f;color:#fff}.tab-checkbox-label.checked{background:#16d66b17;border-color:#16d66b59;color:var(--good);box-shadow:0 0 12px #16d66b14}.tab-checkbox-label input[type=checkbox]{display:none}.toast-notification{position:fixed;bottom:30px;right:30px;z-index:1100;background:#16d66bf2;color:#071026;font-weight:800;font-size:14px;padding:14px 26px;border-radius:12px;box-shadow:0 12px 30px #009d4859,0 0 20px #009d4833;display:flex;align-items:center;gap:8px;transform:translateY(80px);opacity:0;pointer-events:none;transition:transform .35s cubic-bezier(.175,.885,.32,1.275),opacity .25s ease}.toast-notification.show{transform:translateY(0);opacity:1;pointer-events:auto}.opex-header-cards{display:flex;gap:14px;align-items:center}.opex-header-card{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:8px 16px;display:flex;flex-direction:column;min-width:130px}.opex-header-card .card-label{font-size:11px;text-transform:uppercase;color:var(--muted, #888);font-weight:700;letter-spacing:.5px}.opex-header-card .card-value{font-size:16px;font-weight:700;color:#fff;margin-top:3px}.opex-table-scroll-container{height:480px;overflow-y:auto;margin-top:10px;padding-right:4px}.opex-table-scroll-container::-webkit-scrollbar{width:6px;height:6px}.opex-table-scroll-container::-webkit-scrollbar-track{background:#ffffff05;border-radius:4px}.opex-table-scroll-container::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:4px;transition:background .15s ease}.opex-table-scroll-container::-webkit-scrollbar-thumb:hover{background:#ffffff38}.tree-row.parent-row.active-row{background:#16d66b1f!important;border-left:3px solid var(--pv-green-bright)}.tree-row.parent-row.active-row td{color:#fff!important}.orange{color:#ff9f43!important}.opex-table-scroll-container .tree-table th{font-size:14px;font-weight:700;padding:12px 10px}.opex-table-scroll-container .tree-table td{padding:15px 12px;vertical-align:middle}.opex-table-scroll-container .tree-table .parent-row td{font-size:15px;font-weight:700}.opex-table-scroll-container .tree-table .child-row td{font-size:14px;font-weight:600}.opex-table-scroll-container .tree-table th:first-child,.opex-table-scroll-container .tree-table td:first-child{width:54%;padding-left:12px;padding-right:8px}.opex-table-scroll-container .tree-table th:nth-child(2),.opex-table-scroll-container .tree-table td:nth-child(2),.opex-table-scroll-container .tree-table th:nth-child(3),.opex-table-scroll-container .tree-table td:nth-child(3),.opex-table-scroll-container .tree-table th:nth-child(4),.opex-table-scroll-container .tree-table td:nth-child(4){width:11%;padding-left:6px;padding-right:6px;white-space:nowrap;font-variant-numeric:tabular-nums}.opex-table-scroll-container .tree-table th:nth-child(5),.opex-table-scroll-container .tree-table td:nth-child(5){width:13%;padding-left:6px;padding-right:6px;white-space:nowrap;font-variant-numeric:tabular-nums}.opex-item-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-word;line-height:1.35;max-height:2.7em}.micro-progress-track{width:100%;height:4px;background:#ffffff14;border-radius:2px;overflow:hidden;margin-top:5px}.micro-progress-bar{height:100%;border-radius:2px;transition:width .3s ease}.micro-progress-bar.normal{background:var(--good, #35ee86)}.micro-progress-bar.overspent{background:var(--bad, #ff6f7d)}.opex-pie-panel{min-height:440px}.opex-pie-layout{display:flex;align-items:center;justify-content:center;gap:56px;flex-wrap:wrap;padding:16px 24px}.opex-pie-svg-container{position:relative;width:350px;height:350px;flex-shrink:0}.opex-pie-svg{width:100%;height:100%;overflow:visible}.opex-pie-slice{cursor:pointer;transition:transform .25s cubic-bezier(.4,0,.2,1),filter .25s ease,opacity .25s ease}.opex-pie-slice:hover{filter:brightness(1.15) drop-shadow(0 4px 12px rgba(0,0,0,.4));opacity:1}.opex-pie-slice.dimmed{opacity:.35}.opex-donut-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;width:210px;display:flex;flex-direction:column;align-items:center;justify-content:center}.donut-center-title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;margin-bottom:6px}.donut-center-value{font-size:26px;font-weight:700;color:#fff;line-height:1.2;margin-bottom:6px;white-space:nowrap}.donut-center-sub{font-size:12px;color:var(--muted);line-height:1.2}.opex-pie-legend{flex-grow:1;min-width:320px;max-width:650px;background:#ffffff05;border:1px solid rgba(255,255,255,.05);border-radius:6px;padding:16px;display:flex;flex-direction:column;height:350px}.opex-legend-header{display:grid;grid-template-columns:2.2fr 1fr .8fr;font-size:13px;font-weight:700;color:var(--muted);text-transform:uppercase;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:8px;margin-bottom:10px}.opex-legend-list{flex-grow:1;overflow-y:auto;padding-right:6px}.opex-legend-list::-webkit-scrollbar{width:4px}.opex-legend-list::-webkit-scrollbar-track{background:transparent}.opex-legend-list::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.opex-legend-list::-webkit-scrollbar-thumb:hover{background:#fff3}.opex-legend-row{display:grid;grid-template-columns:2.2fr 1fr .8fr;align-items:center;padding:10px 8px;font-size:15px;border-bottom:1px solid rgba(255,255,255,.03);transition:background .15s ease;border-radius:4px}.opex-legend-row.clickable{cursor:pointer}.opex-legend-row:hover{background:#ffffff0a}.opex-legend-row.highlighted{background:#ffffff14;font-weight:600}.legend-label-group{display:flex;align-items:center;gap:10px;min-width:0}.legend-color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.legend-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#d1d5db}.opex-legend-row:hover .legend-label{color:#fff}.legend-value{text-align:left;font-variant-numeric:tabular-nums;color:#e5e7eb}.legend-percentage{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}.opex-legend-row:hover .legend-percentage{color:var(--pv-green-bright)}
