:root{--primary-blue: #0f4c81;--primary-hover: #0a355c;--primary-strong: #0066cc;--primary-strong-hover: #0052a3;--bg-grey: #f0f2f5;--border-color: #d1d5db;--text-dark: #1f2937;--text-light: #6b7280;--white: #ffffff}body{margin:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:var(--bg-grey);color:var(--text-dark)}*{box-sizing:border-box}.app-container{min-height:100vh}.navbar{background:var(--primary-blue);color:var(--white);padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem}.nav-brand h1{margin:0;font-size:1.25rem;font-weight:500}.content{max-width:1000px;margin:0 auto;padding:0 1.5rem}.card{background:var(--white);border-radius:8px;padding:2rem;box-shadow:0 1px 3px #0000000d;border:1px solid #e5e7eb}.card h2{margin-top:0;color:var(--primary-blue);border-bottom:2px solid var(--bg-grey);padding-bottom:1rem;margin-bottom:1.5rem}.card h3{margin:0;font-size:1.1rem;color:var(--text-dark)}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:600;font-size:.9rem;color:var(--text-dark)}select,input{width:100%;padding:.625rem;border:1px solid var(--border-color);border-radius:6px;font-size:1rem;background-color:var(--white);transition:border-color .2s}select:focus,input:focus{outline:none;border-color:var(--primary-blue);box-shadow:0 0 0 3px #0f4c811a}.data-table{width:100%;border-collapse:separate;border-spacing:0;margin-bottom:2rem;border:1px solid var(--border-color);border-radius:6px;overflow:hidden;margin-top:1rem}.data-table th,.data-table td{padding:1rem;text-align:left;border-bottom:1px solid var(--border-color)}.data-table th{background:#f8fafc;font-weight:600;color:var(--text-light);font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover{background-color:#f9fafb}.small-input{width:100px;padding:.4rem;text-align:right}.effective-rate{font-weight:700;color:var(--primary-blue)}.header-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}button{cursor:pointer;font-family:inherit}.btn-primary{background:var(--primary-blue);color:var(--white);padding:.5rem 1rem;border:none;border-radius:4px;font-size:.9rem;transition:background .2s}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{color:#fffc;text-decoration:none;font-size:.9rem;padding:.5rem 1rem;border:1px solid rgba(255,255,255,.3);border-radius:4px}.btn-secondary:hover{color:var(--white);border-color:var(--white);background:#ffffff1a}.alert{padding:1rem;border-radius:6px;margin-top:1rem;font-weight:500;display:flex;align-items:center}.alert.success{background:#e0e7ff;color:var(--primary-blue);border:1px solid rgba(15,76,129,.2)}.alert.error{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}.cc-login-wrapper{display:flex;align-items:center;justify-content:center;min-height:100vh;width:100%;margin:0;padding:1rem;background:linear-gradient(135deg,#041b3459,#092c559e),url(/bg-login.webp) no-repeat center center fixed;background-size:cover}.cc-login-wrapper *{box-sizing:border-box}.cc-login-card{width:100%;max-width:420px;background:#fffffff2;border:1px solid rgba(255,255,255,.28);border-radius:.75rem;box-shadow:0 25px 50px -12px #00000047;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);overflow:hidden}.cc-login-header{padding:1.6rem 1.6rem .6rem;display:flex;flex-direction:column;gap:.45rem}.cc-login-logo-container{display:flex;justify-content:center;margin-bottom:.9rem}.cc-login-logo{height:48px;width:auto;object-fit:contain}.cc-login-kicker{margin:0;text-align:center;font-size:.8rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--primary-strong)}.cc-login-title{font-size:1.7rem;font-weight:700;color:#1f2937;text-align:center;line-height:2rem;letter-spacing:-.025em;margin:0}.cc-login-subtitle{margin:0;text-align:center;color:var(--text-light);font-size:.92rem;line-height:1.45}.cc-login-content{padding:1.5rem}.cc-login-form{display:flex;flex-direction:column;gap:1.35rem}.cc-login-form-group{display:flex;flex-direction:column;gap:.5rem}.cc-login-label{font-size:.875rem;font-weight:600;line-height:1;color:#0f172a;margin-bottom:0}.cc-login-input{display:flex;height:2.75rem;width:100%;border-radius:.375rem;border:1px solid #e2e8f0;background-color:transparent;padding:.5rem .75rem;font-size:.95rem;line-height:1.25rem;color:#0f172a;transition:border-color .2s,box-shadow .2s}.cc-login-input:focus{outline:none;box-shadow:0 0 0 2px #0066cc2e;border-color:var(--primary-strong)}.cc-login-input::placeholder{color:#64748b}.cc-login-btn{display:inline-flex;align-items:center;justify-content:center;height:2.85rem;width:100%;border-radius:.375rem;font-size:1rem;font-weight:600;background-color:var(--primary-strong);color:#fff;border:none;cursor:pointer;transition:background-color .2s,transform .2s}.cc-login-btn:hover{background-color:var(--primary-strong-hover)}.cc-login-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.cc-login-error{background:#fee2e2;color:#991b1b;border:1px solid #fecaca;padding:.85rem;border-radius:.375rem;font-size:.875rem;margin-bottom:1rem}.analytics-content{max-width:1500px;padding-bottom:3rem}.analytics-hero-card{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem}.analytics-status-badge{background:linear-gradient(135deg,#0f4c81,#2a7ab9);color:var(--white);border-radius:999px;padding:.75rem 1.25rem;font-size:.9rem;font-weight:600;white-space:nowrap}.analytics-muted{margin:.35rem 0 0;color:var(--text-light);line-height:1.5}.analytics-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(320px,1fr);gap:1.5rem;margin-bottom:1.5rem}.analytics-filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.analytics-period-row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:.75rem}.analytics-inline-note{margin-top:1rem;padding:.85rem 1rem;border-radius:8px;background:#eff6ff;color:#0f4c81}.analytics-inline-note-warning{background:#fff7ed;color:#9a3412;border:1px solid #fed7aa}.analytics-inline-note-month-focus{background:#f0f9ff;border:1px solid #bae6fd;color:#0c4a6e}.analytics-actions-row{display:flex;align-items:center;gap:.75rem;margin-top:1.25rem}.analytics-ghost-button{background:transparent;color:var(--primary-blue);border:1px solid rgba(15,76,129,.28);border-radius:6px;padding:.5rem 1rem}.analytics-summary-grid,.analytics-management-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:1.5rem}.analytics-management-item{border-radius:14px;border:1px solid #dbe4f0;background:linear-gradient(180deg,#fff,#f8fafc);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.3rem;box-shadow:0 8px 20px #0f4c810f}.analytics-management-item span,.analytics-management-item small{color:var(--text-light)}.analytics-management-item strong{color:var(--text-dark);font-size:1rem;line-height:1.35}.analytics-management-item-accent{background:linear-gradient(135deg,#0f4c81,#1c6aa1);border-color:#0f4c8147}.analytics-management-item-accent span,.analytics-management-item-accent strong,.analytics-management-item-accent small{color:var(--white)}.analytics-view-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1.5rem}.analytics-view-option{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;width:100%;padding:1.1rem 1.2rem;border-radius:16px;border:2px solid #dbe4f0;background:linear-gradient(180deg,#f8fbff,#fff);text-align:left;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .18s ease}.analytics-view-option:hover{transform:translateY(-2px);border-color:#58a6d6;box-shadow:0 16px 30px #0f4c811f}.analytics-view-option.active{border-color:#0f4c81;box-shadow:0 0 0 4px #0f4c811a,0 18px 36px #0f4c8129;background:linear-gradient(135deg,#0f4c81,#2a7ab9)}.analytics-view-option-total{background:linear-gradient(180deg,#fff9f2,#fff)}.analytics-view-option-total:hover{border-color:#f28f3b;box-shadow:0 16px 30px #f28f3b29}.analytics-view-option-total.active{border-color:#c96a14;box-shadow:0 0 0 4px #f28f3b29,0 18px 36px #c96a1429;background:linear-gradient(135deg,#c96a14,#f28f3b)}.analytics-view-option-kicker{font-size:.76rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#0f4c81}.analytics-view-option strong{font-size:1.15rem;color:var(--text-dark)}.analytics-view-option small{color:var(--text-light);line-height:1.45}.analytics-view-option.active .analytics-view-option-kicker,.analytics-view-option.active strong,.analytics-view-option.active small{color:var(--white)}.analytics-active-view-banner{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:.95rem 1.15rem;border-radius:14px;border:1px solid #dbe4f0;background:#f8fafc}.analytics-active-view-banner strong{color:var(--text-dark)}.analytics-active-view-banner span{color:var(--text-light)}.analytics-active-view-banner-monthly{background:linear-gradient(180deg,#f0f9ff,#fff);border-color:#bae6fd}.analytics-active-view-banner-total{background:linear-gradient(180deg,#fff7ed,#fff);border-color:#fed7aa}.analytics-period-card{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem}.analytics-period-badge{flex-shrink:0;padding:.85rem 1.1rem;border-radius:999px;background:#eff6ff;color:#0f4c81;font-weight:700;text-align:center}.analytics-export-card{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem}.analytics-summary-card{background:var(--white);border:1px solid #e5e7eb;border-radius:14px;padding:1.25rem;box-shadow:0 10px 24px #0f4c8114;display:flex;flex-direction:column;gap:.4rem}.analytics-summary-card span,.analytics-summary-card small{color:var(--text-light)}.analytics-summary-card strong{font-size:1.45rem;color:var(--text-dark);line-height:1.2;word-break:break-word}.analytics-summary-card-current{border-color:#bae6fd;background:linear-gradient(180deg,#f0f9ff,#fff)}.analytics-summary-card-accent{background:linear-gradient(135deg,#0f4c81,#1c6aa1)}.analytics-summary-card-accent span,.analytics-summary-card-accent strong,.analytics-summary-card-accent small{color:var(--white)}.analytics-chart-grid{display:grid;grid-template-columns:1fr;gap:1.5rem;margin-bottom:1.5rem}.analytics-section-label{display:inline-flex;align-items:center;margin:0 0 .7rem;padding:.38rem .75rem;border-radius:999px;background:#eff6ff;color:#0f4c81;font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.analytics-section-label-total{background:#fff7ed;color:#9a3412}.analytics-chart-card{background:var(--white);border:1px solid #e5e7eb;border-radius:14px;padding:1.25rem;box-shadow:0 10px 24px #0f4c8114}.analytics-chart-header{display:flex;justify-content:space-between;gap:1rem;margin-bottom:1rem}.analytics-chart-header h3{margin:0}.analytics-chart-header p{margin:.35rem 0 0;color:var(--text-light)}.analytics-chart-callout{min-width:180px;border-radius:12px;background:#f8fafc;border:1px solid #dbe4f0;padding:.85rem 1rem;display:flex;flex-direction:column;gap:.25rem}.analytics-chart-callout span{font-size:1.15rem;font-weight:700;color:var(--text-dark)}.analytics-chart-callout small{color:var(--text-light)}.analytics-chart-callout-accent{background:#fff7ed;border-color:#fed7aa}.analytics-chart-scroll{width:100%;overflow-x:auto}.analytics-svg,.analytics-pie-svg{width:100%;height:auto}.analytics-svg-trend{min-width:620px}.analytics-grid-line{stroke:#dbe4f0;stroke-dasharray:5 7}.analytics-axis-label{fill:#6b7280;font-size:12px}.analytics-pie-layout{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:start}.analytics-pie-svg{max-width:420px;margin:0 auto}.analytics-pie-center-label{fill:#6b7280;font-size:12px}.analytics-pie-center-value{fill:#1f2937;font-size:16px;font-weight:700}.analytics-legend{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem}.analytics-legend-item{display:grid;grid-template-columns:14px minmax(0,1fr);gap:.75rem;align-items:start;width:100%;min-height:108px;border:1px solid #e5e7eb;border-radius:10px;padding:.7rem .85rem;background:#fff;text-align:left}.analytics-legend-item.active{border-color:#0f4c81;box-shadow:0 0 0 3px #0f4c8114}.analytics-legend-swatch{width:14px;height:14px;border-radius:999px}.analytics-legend-copy{display:flex;flex-direction:column;gap:.15rem;min-width:0}.analytics-legend-name{color:var(--text-dark);font-weight:600;line-height:1.2}.analytics-legend-copy small{color:var(--text-light);font-size:.75rem}.analytics-legend-value{text-align:left;line-height:1.2;grid-column:2;margin-top:.2rem}.analytics-chip-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.9rem}.analytics-chip{border:1px solid #dbe4f0;border-radius:12px;padding:.9rem;background:#f8fafc;display:flex;flex-direction:column;gap:.25rem}.analytics-chip span,.analytics-chip small,.analytics-subtext{color:var(--text-light)}.analytics-warning-list{display:grid;gap:.75rem}.analytics-table-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.analytics-table-wrap{overflow-x:auto}.analytics-data-table{min-width:1200px}.analytics-product-groups{display:flex;flex-wrap:wrap;gap:.4rem}.analytics-product-pill{display:inline-flex;align-items:center;padding:.3rem .55rem;border-radius:999px;background:#eff6ff;color:#0f4c81;font-size:.8rem;white-space:nowrap}.analytics-month-cell{display:flex;flex-direction:column;gap:.2rem;min-width:112px}.analytics-empty{border:1px dashed #cbd5e1;border-radius:12px;padding:1.5rem;background:#f8fafc;color:var(--text-light)}@media(max-width:1100px){.analytics-grid,.analytics-chart-grid,.analytics-pie-layout,.analytics-hero-card,.analytics-period-card,.analytics-export-card{grid-template-columns:1fr}.analytics-hero-card,.analytics-period-card,.analytics-active-view-banner,.analytics-export-card,.analytics-chart-header,.analytics-actions-row,.header-actions,.navbar{flex-direction:column;align-items:stretch}}@media(max-width:720px){.content{padding:0 1rem}.card{padding:1.25rem}.cc-login-header,.cc-login-content{padding-left:1.25rem;padding-right:1.25rem}.analytics-filter-grid,.analytics-period-row,.analytics-view-switch,.analytics-management-strip,.analytics-summary-grid,.analytics-chip-row{grid-template-columns:1fr}.analytics-chart-callout,.analytics-period-badge{min-width:0;width:100%}.analytics-pie-layout{grid-template-columns:1fr}.analytics-legend-item{grid-template-columns:14px minmax(0,1fr)}.analytics-legend-value{text-align:left;grid-column:2}}@media(max-width:1200px){.analytics-legend{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:900px){.analytics-legend{grid-template-columns:repeat(2,minmax(0,1fr))}}.bill-tabs{display:flex;gap:.25rem;border-bottom:2px solid var(--border-color);margin-bottom:1.5rem}.bill-tab{padding:.75rem 1.5rem;border:none;background:transparent;font-size:.95rem;font-weight:600;color:var(--text-light);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.bill-tab:hover{color:var(--text-dark)}.bill-tab.active{color:var(--primary-blue);border-bottom-color:var(--primary-blue)}.bill-tab-count{margin-left:.5rem;padding:.1rem .45rem;border-radius:999px;background:var(--bg-grey);font-size:.75rem;font-weight:700;color:var(--text-light)}.bill-tab.active .bill-tab-count{background:var(--primary-blue);color:var(--white)}.bill-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.85rem 0;border-bottom:1px solid var(--border-color);margin-bottom:.5rem}.bill-search{flex:1 1 260px;min-width:200px;padding:.5rem .75rem;border:1px solid var(--border-color);border-radius:6px;font-size:.9rem}.bill-search:focus{outline:none;border-color:var(--primary-blue);box-shadow:0 0 0 3px #0f4c811f}.bill-toolbar-spacer{flex:1 1 auto}.bill-chip{padding:.35rem .7rem;border:1px solid var(--border-color);border-radius:999px;background:var(--white);font-size:.8rem;font-weight:600;color:var(--text-light);cursor:pointer}.bill-chip:hover{border-color:var(--primary-blue);color:var(--primary-blue)}.bill-chip.active{background:var(--primary-blue);border-color:var(--primary-blue);color:var(--white)}.bill-table-scroll{max-height:65vh;overflow:auto;border:1px solid var(--border-color);border-radius:8px}.bill-table-scroll .data-table{margin:0}.bill-table-scroll .data-table thead th{position:sticky;top:0;z-index:3;background:var(--bg-grey);box-shadow:inset 0 -2px 0 var(--border-color)}.bill-section-row>td{background:#eef6ff;color:#0f3d75;font-weight:700;cursor:pointer;position:sticky;top:38px;z-index:2}.bill-section-row:hover>td{background:#e2eefc}.bill-section-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.bill-caret{display:inline-block;width:.9rem;transition:transform .15s;font-size:.75rem}.bill-caret.open{transform:rotate(90deg)}.bill-section-sums{margin-left:auto;display:flex;gap:1.25rem;font-variant-numeric:tabular-nums;font-weight:600}.bill-contract-row>td{background:#0f4c81;color:var(--white);font-weight:700;letter-spacing:.02em}.bill-empty{padding:2.5rem 1rem;text-align:center;color:var(--text-light)}.bill-cmp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem;margin-bottom:1.5rem}.bill-cmp-flag{display:flex;gap:.75rem;align-items:flex-start;padding:1rem 1.25rem;border-radius:8px;margin-bottom:1.25rem;border-left:4px solid}.bill-cmp-flag-ok{background:#ecfdf5;border-color:#059669;color:#065f46}.bill-cmp-flag-warn{background:#fef2f2;border-color:#dc2626;color:#991b1b}.bill-cmp-flag-info{background:#fffbeb;border-color:#d97706;color:#92400e}.bill-cmp-flag strong{display:block;margin-bottom:.25rem}.bill-chart-card{background:var(--white);border:1px solid var(--border-color);border-radius:8px;padding:1.25rem 1.5rem;margin-bottom:1.5rem}.bill-chart-card h3{margin:0 0 .25rem;font-size:1rem;color:var(--text-dark)}.bill-chart-sub{margin:0 0 1rem;font-size:.85rem;color:var(--text-light)}.bill-chart-scroll{overflow-x:auto}.bill-svg{width:100%;min-width:520px;height:auto;display:block}.bill-legend{display:flex;flex-wrap:wrap;gap:1.25rem;margin-top:.75rem;font-size:.8rem;color:var(--text-light)}.bill-legend-item{display:flex;align-items:center;gap:.4rem}.bill-legend-swatch{width:12px;height:12px;border-radius:3px;flex:none}.bill-delta-ok{color:#059669;font-weight:700}.bill-delta-bad{color:#dc2626;font-weight:700}.bill-matrix-scroll{overflow-x:auto}.bill-matrix{border-collapse:collapse;width:100%;font-size:.85rem}.bill-matrix th,.bill-matrix td{padding:.5rem .7rem;border-bottom:1px solid var(--border-color);white-space:nowrap}.bill-matrix thead th{background:var(--bg-grey);text-align:right;font-size:.78rem;color:var(--text-light);text-transform:uppercase;letter-spacing:.03em}.bill-matrix thead th:first-child,.bill-matrix tbody td:first-child{text-align:left}.bill-matrix thead th:first-child,.bill-matrix tbody td:first-child{position:sticky;left:0;background:var(--white);z-index:1;font-weight:600}.bill-matrix thead th:first-child{background:var(--bg-grey)}.bill-matrix tbody td{text-align:right;font-variant-numeric:tabular-nums}.bill-matrix tbody tr:hover td,.bill-matrix tbody tr:hover td:first-child{background:#f8fafc}.bill-cell-absent{color:#c4c9d0}.bill-cell-new{background:#ecfdf5}.bill-cell-gone{background:#fef2f2}.bill-matrix tfoot td{border-top:2px solid var(--border-color);font-weight:700;text-align:right;font-variant-numeric:tabular-nums}.bill-matrix tfoot td:first-child{text-align:left}
