:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.5;font-weight:400;color:#1a1a2e;background-color:#f5f5f7;--font-xs: .75rem;--font-sm: .875rem;--font-base: 1rem;--font-md: 1rem;--font-lg: 1.125rem;--font-xl: 1.25rem}*{box-sizing:border-box}body{margin:0;min-height:100vh}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460);padding:2rem}.login-card{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0003;padding:2.5rem;width:100%;max-width:380px;text-align:center}.login-logo{height:48px;width:auto;margin-bottom:1rem}.login-title{font-size:1.25rem;font-weight:600;color:#333;margin:0 0 .25rem}.login-subtitle{font-size:.9rem;color:#666;margin:0 0 1.5rem}.login-form{display:flex;flex-direction:column;gap:1rem}.login-field{text-align:left}.login-field label{display:block;font-size:.875rem;font-weight:500;color:#333;margin-bottom:.35rem}.login-field input{width:100%;padding:.6rem .75rem;font-size:1rem;font-family:inherit;border:1px solid #ccc;border-radius:8px;box-sizing:border-box}.login-field input:focus{outline:none;border-color:#1a5f4a;box-shadow:0 0 0 2px #1a5f4a33}.login-error{font-size:.875rem;color:#b91c1c;background:#fef2f2;padding:.5rem .75rem;border-radius:6px}.login-btn{padding:.65rem 1.25rem;font-size:1rem;font-weight:600;font-family:inherit;color:#fff;background:#1a5f4a;border:none;border-radius:8px;cursor:pointer;margin-top:.5rem}.login-btn:hover{background:#2d7a5e}.login-btn:focus{outline:none;box-shadow:0 0 0 2px #1a5f4a66}.app{min-height:100vh;display:flex;flex-direction:column}.header{background:#1a1a2e;color:#fff;padding:1rem 2rem;display:flex;align-items:center;gap:1rem;box-shadow:0 2px 8px #00000026}.header-logo{height:40px;width:auto}.header-title{font-size:var(--font-xl);font-weight:600;margin:0;font-family:inherit}.main{flex:1;padding:2rem}.filters{display:flex;gap:1rem;margin-bottom:1.5rem;align-items:center;flex-wrap:wrap}.filter-group{display:flex;align-items:center;gap:.5rem}.filter-group label{font-size:var(--font-base);font-weight:500;color:#333;font-family:inherit}.filter-group select{padding:.5rem 2rem .5rem .75rem;font-size:var(--font-base);font-family:inherit;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer;min-width:180px}.filter-group select:hover{border-color:#1a5f4a}.filter-group select:focus{outline:none;border-color:#1a5f4a;box-shadow:0 0 0 2px #1a5f4a33}.filter-group input[type=date]{padding:.5rem .75rem;font-size:var(--font-base);font-family:inherit;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer}.filter-group input[type=date]:hover{border-color:#1a5f4a}.filter-group input[type=date]:focus{outline:none;border-color:#1a5f4a;box-shadow:0 0 0 2px #1a5f4a33}.table-container{background:#fff;border-radius:8px;box-shadow:0 2px 12px #00000014;overflow-x:auto;overflow-y:auto;width:100%;padding:.5rem 1rem 0}.table-container table{width:100%;border-collapse:collapse;table-layout:fixed}.table-container table.table-transposed{table-layout:auto;width:max-content}.table-container table.table-transposed .col-metric{position:sticky;left:0;background:inherit;z-index:2;width:110px;min-width:110px;white-space:nowrap}.table-container table.table-transposed .col-sub-metric{position:sticky;left:110px;background:inherit;z-index:2;width:100px;min-width:100px;white-space:nowrap;box-shadow:2px 0 6px -2px #0000001f}.table-container table.table-transposed .col-date{width:120px;min-width:120px;white-space:nowrap}.table-container table.table-transposed td:not(.col-metric){width:120px;min-width:120px;white-space:nowrap}.table-container table.table-transposed th,.table-container table.table-transposed td{padding:.28rem .75rem;box-sizing:border-box}.table-container th,.table-container td{padding:.35rem .5rem;text-align:left;vertical-align:middle;border-bottom:1px solid #eee}.table-container th{background:#1a5f4a;color:#fff;font-weight:600;font-size:var(--font-sm);font-family:inherit;white-space:nowrap}.table-container th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table-container th.sortable:hover{background:#2d7a5e}.table-container tr:hover{background:#f8faf9}.table-container td{font-size:var(--font-sm);font-family:inherit}.table-container td.numeric,.table-container th.numeric{font-variant-numeric:tabular-nums}.table-container th:not(:first-child),.table-container td:not(:first-child){text-align:center}.table-container th.col-sub-metric,.table-container td.col-sub-metric{text-align:left}.tabs{display:flex;gap:.25rem;margin-bottom:1rem}.tab{padding:.5rem 1rem;font-size:var(--font-base);font-weight:500;font-family:inherit;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer;color:#333}.tab:hover{border-color:#1a5f4a;color:#1a5f4a}.tab-active{background:#1a5f4a;border-color:#1a5f4a;color:#fff}.content-layout{display:flex;gap:1.5rem;align-items:stretch;flex:1;min-height:0}.content-layout-stacked{flex-direction:column}.table-section{flex:0 0 60%;min-width:0;display:flex;flex-direction:column;min-height:0}.table-section-top{flex:0 0 auto;width:100%}.table-toolbar{display:flex;justify-content:flex-end;padding:0 0 .4rem}.download-csv-btn{background:#1a5f4a;color:#fff;border:none;border-radius:4px;padding:.3rem .75rem;font-size:.78rem;cursor:pointer;transition:background .15s}.download-csv-btn:hover{background:#15503e}.table-section-top .table-container{max-height:none;overflow-y:visible}.table-container .table-society th.col-metric,.table-container .table-society td.col-metric{width:160px!important;min-width:160px!important;max-width:160px!important;white-space:normal;word-wrap:break-word}.table-container .table-society .col-sub-metric{left:160px}.society-pagination-wrapper{flex-shrink:0;margin-top:0}.society-pagination-wrapper .pagination-bar{margin-top:.25rem}.charts-section{flex:1;min-width:280px;display:flex;flex-direction:column;gap:1rem;min-height:0}.charts-section-bottom{flex-direction:row;flex-wrap:wrap;flex:0 0 auto;gap:1rem}.charts-group{display:flex;flex-direction:column;gap:.75rem;width:100%}.charts-group-header{display:flex;align-items:center;gap:.5rem}.charts-group-label{font-size:var(--font-base);font-weight:600;font-family:inherit;color:#333}.charts-group-content{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem}.charts-group-content .chart-card,.charts-section-bottom .chart-card{flex:1 1 30%;min-width:260px}.charts-overall-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;width:100%}.charts-overall-grid .chart-card{min-width:0}.chart-card{background:#fff;border-radius:8px;box-shadow:0 2px 12px #00000014;padding:1rem;min-height:220px;flex:1;min-width:280px}.chart-title{margin:0 0 .5rem;font-size:var(--font-base);font-weight:600;font-family:inherit;color:#333}.chart-header-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.chart-header-row .chart-title{margin:0}.chart-metric-select{padding:.25rem .5rem;font-size:var(--font-sm);font-family:inherit;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer}.chart-metric-select:hover{border-color:#1a5f4a}.searchable-select{position:relative;min-width:200px}.searchable-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.35rem .6rem;font-size:var(--font-sm);font-family:inherit;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer}.searchable-select-trigger:hover{border-color:#1a5f4a}.searchable-select-value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.searchable-select-arrow{font-size:.65rem;color:#666}.searchable-select-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:2px;background:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 4px 12px #00000026;z-index:100;min-width:280px}.searchable-select-input{width:100%;padding:.5rem .75rem;font-size:var(--font-sm);font-family:inherit;border:none;border-bottom:1px solid #eee;border-radius:6px 6px 0 0;box-sizing:border-box}.searchable-select-input:focus{outline:none}.searchable-select-list{max-height:220px;overflow-y:auto;padding:.25rem 0}.searchable-select-option{padding:.4rem .75rem;font-size:var(--font-sm);font-family:inherit;cursor:pointer}.searchable-select-option:hover,.searchable-select-option.selected{background:#e8f4f0}.searchable-select-empty{padding:.75rem;font-size:var(--font-sm);color:#888;text-align:center}.table-oc-merged .oc-group-cell{vertical-align:middle}.table-oc-merged .col-sub-metric{min-width:95px;white-space:nowrap}.table-oc-merged .oc-band-0 td,.table-oc-merged tr.oc-band-0 td{background:#f5f5f5}.table-oc-merged .oc-band-1 td,.table-oc-merged tr.oc-band-1 td{background:#ebebeb}.table-oc-merged tr.oc-band-0 td.oc-group-cell{background-color:#f5f5f5!important}.table-oc-merged tr.oc-band-1 td.oc-group-cell{background-color:#ebebeb!important}.table-oc-merged tr.oc-band-0 td.col-sub-metric{background-color:#f5f5f5!important}.table-oc-merged tr.oc-band-1 td.col-sub-metric{background-color:#ebebeb!important}.table-oc-merged thead th.col-metric,.table-oc-merged thead th.col-sub-metric{background-color:#1a5f4a!important}.table-banded th,.table-banded td{padding:.25rem .5rem;font-size:var(--font-sm);font-family:inherit}.table-banded .cluster-date{background:#e8f4f0}.table-banded .cluster-cust{background:#f0f4f8}.table-banded .cluster-repeat{background:#f8f0f4}.table-banded .cluster-rpc{background:#f4f4f0}.table-container .table-transposed:not(.table-oc-merged) th.col-metric{background-color:#1a5f4a!important;box-shadow:2px 0 6px -2px #0000001f}.table-container .table-transposed:not(.table-oc-merged) td.col-metric.cluster-cust{background-color:#f0f4f8!important;box-shadow:2px 0 6px -2px #0000001f}.table-container .table-transposed:not(.table-oc-merged) td.col-metric.cluster-repeat{background-color:#f8f0f4!important;box-shadow:2px 0 6px -2px #0000001f}.table-container .table-transposed:not(.table-oc-merged) td.col-metric.cluster-rpc{background-color:#f4f4f0!important;box-shadow:2px 0 6px -2px #0000001f}.table-banded .cluster-a{background:#e8f4f0}.table-banded .cluster-b{background:#f0f4f8}.table-banded thead th{background:#1a5f4a!important;color:#fff}.pagination-bar{display:flex;align-items:center;gap:1rem;padding:.25rem 0;margin-top:.25rem}.pagination-btn{padding:.4rem .8rem;font-size:var(--font-sm);font-family:inherit;border:1px solid #1a5f4a;border-radius:6px;background:#fff;color:#1a5f4a;cursor:pointer}.pagination-btn:hover:not(:disabled){background:#1a5f4a;color:#fff}.pagination-btn:disabled{opacity:.5;cursor:not-allowed}.pagination-info{font-size:var(--font-sm);font-family:inherit;color:#555}.placeholder{padding:2rem;text-align:center;font-size:var(--font-base);font-family:inherit;color:#888;font-style:italic}.loading{padding:3rem;text-align:center;font-size:var(--font-base);font-family:inherit;color:#666}.error{padding:1.5rem;font-size:var(--font-base);font-family:inherit;background:#fef2f2;color:#b91c1c;border-radius:6px;margin-bottom:1rem}th.fc-col,td.fc-col{opacity:.7}.methodology-page{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:1.25rem 1.5rem}.methodology-page h2{margin:0;font-size:1.15rem;color:#111827}.methodology-subtitle{margin:.25rem 0 .75rem;color:#6b7280;font-size:.9rem}.methodology-page h3{margin:1rem 0 .5rem;font-size:.95rem;color:#111827}.methodology-page p,.methodology-page li{font-size:.92rem;line-height:1.55;color:#222}.methodology-page code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.86em;background:#f3f4f6;border-radius:4px;padding:.1rem .25rem}.methodology-kv{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;margin:.5rem 0 .25rem}.methodology-kv span{color:#6b7280;margin-right:.4rem}.methodology-code{margin:.5rem 0 0;background:#0b1020;color:#e5e7eb;border-radius:10px;padding:.9rem 1rem;overflow:auto;font-size:.85rem;line-height:1.45}
