body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--primary-color:#6e1d85;--primary-dark:#400048;--primary-light:#c8e6c9;--text-on-primary:#fff;--background-color:#f5f5f5;--card-color:#fff;--border-color:#e0e0e0;--text-color:#333;--sidebar-width:875px;--sidebar-min-width:240px;--header-height:60px}*{box-sizing:border-box;margin:0;padding:0}body{background-color:#f5f5f5;background-color:var(--background-color);color:#333;color:var(--text-color);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{align-items:center;background-color:#6e1d85;background-color:var(--primary-color);box-shadow:0 2px 5px #0000001a;color:#fff;color:var(--text-on-primary);display:flex;height:60px;height:var(--header-height);justify-content:space-between;left:0;padding:0 10px;position:fixed;top:0;width:100%;z-index:1000}.app-logo{height:2rem;max-height:none}.header-left .app-logo{height:3.5rem}.refresh-icon-style{color:#fff;font-size:3.5rem;transition:transform .2s ease,color .2s ease}.refresh-icon-style:hover{color:#6e1d85;transform:rotate(180deg)}.header-actions{align-items:center;display:flex;position:relative}.header-divider{background:hsla(0,0%,100%,.632);height:3rem;margin:0 12px;width:4px}.header-actions .icon-btn{border-radius:4px;color:#fff;padding:2px}.header-actions .icon-btn ion-icon{--ionicon-color:#fff;color:inherit;font-size:3rem}.header-actions ion-icon{color:#fff;font-size:3rem}.header-actions .icon-btn,.header-actions ion-icon{transition:background-color .3s ease,color .3s ease}.header-actions .icon-btn:hover,.header-actions ion-icon:hover{background-color:hsla(0,0%,100%,.719);border-radius:4px;color:#6e1d85;cursor:pointer}.settings-dropdown{background:#fff;border-radius:4px;box-shadow:0 2px 8px #0003;margin-top:4px;min-width:140px;position:absolute;right:0;top:100%;z-index:1000}.settings-dropdown .dropdown-item{background:#0000;border:none;color:#333;color:var(--text-color);cursor:pointer;display:block;font-size:.95rem;padding:8px 12px;text-align:left;width:100%}.settings-dropdown .dropdown-item:hover{background-color:#6e1d85;color:#fff;color:var(--text-on-primary)}.main-content{background:#0000;display:flex;flex:1 1 auto;gap:16px;height:calc(100vh - 60px);height:calc(100vh - var(--header-height));margin-top:60px;margin-top:var(--header-height);min-width:0;overflow:hidden}.client-list-container{display:flex;flex-direction:column;height:100%}.report-preview-container{background-color:#fff;box-shadow:-6px 0 12px -4px #0000004d;display:flex;flex:1 1 auto;flex-direction:column;height:100%;min-width:0;overflow:hidden;padding:0}.client-list-container{overflow:hidden;position:relative}.sidebar-resizer{cursor:ew-resize;height:100%;position:absolute;right:0;top:0;width:8px;z-index:10}.client-list-container.closed{flex:0 0 48px}.exit-button:hover,.logout-button:hover{background-color:#6e1d85;background-color:var(--primary-color)}@media (max-width:768px){.main-content{flex-direction:column}.sidebar{height:auto;width:100%}.client-list-container,.preview-container{flex:none;max-width:none;width:100%}}.initial-loading-screen{background:#e8f5e9;flex-direction:column;inset:0;position:fixed;z-index:9999}.initial-loading-screen,.logo-spinner-container{align-items:center;display:flex;justify-content:center}.logo-spinner-container{height:180px;margin-top:20.5%;position:relative;width:180px}.loading-logo{animation:logoPulse .4s infinite alternate;background:#fff;border-radius:24px;box-shadow:0 4px 32px #00000014;height:150px;position:relative;width:150px;z-index:1}@keyframes logoPulse{0%{opacity:.5}to{opacity:1}}.logo-spinner{animation:spin 1s linear infinite;border:6px solid #0000;border-color:#2196f3 #2196f3 #0000 #0000;border-radius:50%;border-style:solid;border-width:6px;height:170px;left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);width:170px;z-index:2}.db-status{align-items:center;display:inline-flex;font-size:1.6rem;justify-content:center;margin-left:8px}.db-status.connected{--ionicon-color:#00ff08;color:#00ff08}.db-status.disconnected{--ionicon-color:#ffffffd9;color:#ffffffd9}.db-connection{align-items:center;display:flex;margin-right:16px}.db-connection-text{color:#fff;color:var(--text-on-primary);font-size:.9rem;margin-right:6px}.sync-modal-backdrop{align-items:center;background:#0006;display:flex;inset:0;justify-content:center;position:fixed;z-index:2000}.sync-modal{background:#fff;border-radius:6px;box-shadow:0 2px 8px #0003;padding:16px;width:260px}.sync-modal h4{font-size:1.1rem;margin-bottom:12px;text-align:center}.sync-list{list-style:none;margin:0 0 12px;padding:0}.sync-list li{align-items:center;display:flex;font-size:.95rem;margin-bottom:6px}.sync-dot{background:#02d158;border-radius:50%;height:10px;margin-right:8px;width:10px}.close-btn button{background:#6e1d85;background:var(--primary-color);border:none;border-radius:4px;color:#fff;color:var(--text-on-primary);cursor:pointer;display:block;font-size:.95rem;padding:8px;text-align:center;width:100%}.close-btn button:hover{background:#400048;background:var(--primary-dark)}.copyright-message-loadscreen{color:#000000b2;font-size:.8rem;margin-top:300px}.notifications-btn{position:relative}.notif-badge{background:#e53935;border-radius:999px;color:#fff;font-size:.85rem;font-weight:600;line-height:1;min-width:20px;padding:3px 7px;position:absolute;right:2px;text-align:center;top:2px}.header-actions .mv-btn{border:2px solid #ffffffbf;border-radius:999px;padding:10px}.header-actions .mv-label{color:inherit;font-size:1.05rem;font-weight:800;letter-spacing:.4px;line-height:1}.client-list{background:#f8f8f8;flex:1 1 auto;height:100%;max-height:100%;min-height:0;overflow-y:auto}.client-list::-webkit-scrollbar{width:10px}.client-list::-webkit-scrollbar-thumb{background:#bbb;border-radius:5px}.client-list::-webkit-scrollbar-track{background:#eee}.client-list{scrollbar-color:#bbb #eee;scrollbar-width:thin}.client-table-header{align-items:center;background:#fff;border-bottom:1px solid #e0e0e0;box-shadow:0 2px 5px #00000008;display:flex;padding:10px 15px;position:relative;top:0;z-index:10}.client-header-left{align-items:flex-start;color:#222;display:flex;flex:0 0 250px;flex-direction:column}.client-header-left .building-icon{align-self:center;color:#222;font-size:1.6rem;margin-bottom:.25rem}.client-header-labels{align-items:center;color:#222;display:flex;gap:.5rem;width:100%}.client-header-labels .client-id{flex:0 0 80px;font-size:.9rem;text-align:left}.client-header-labels .client-name{flex:1 1 auto;font-size:.9rem;text-align:left}.client-header-divider{background:#e0e0e0;flex-shrink:0;height:3.5rem;margin:0 1rem;width:1px}.client-header-icons{align-items:center;display:flex;flex-shrink:0;gap:1.5rem}.client-header-icons ion-icon{font-size:2.5rem}.client-header-icons .electricity ion-icon{color:gold}.client-header-icons .gas ion-icon{color:#ff6b6b}.client-header-icons .water ion-icon{color:#4da6ff}.client-header-icons .client-edit ion-icon{color:#222}.client-header-icons .client-list-toggle{color:#222;cursor:pointer;flex:0 0 48px;font-size:2rem;text-align:center;transition:color .2s ease}.client-header-icons .client-list-toggle:hover{color:#000}.client-row{align-items:center;border-bottom:1px solid #eee;color:#222;cursor:pointer;display:flex;padding:15px;transition:background-color .2s}.client-row:nth-child(2n){background:#fff}.client-row:nth-child(odd){background:#d8d8d8}.client-row.active{background:#afafaf}.client-row.active:hover,.client-row:hover{background-color:#8b8b8b}.client-header-labels span,.client-row{font-size:15px;font-weight:500}.client-row .client-id{font-weight:600}.client-id{flex:0 0 80px;text-align:left}.client-name{flex:1 1 auto;text-align:left}.client-edit,.client-file{flex:0 0 48px;font-size:1rem;text-align:center}.client-file.electricity{color:gold}.client-file.gas{color:#ff6b6b}.client-file.water{color:#4da6ff}.client-row-icons .client-edit ion-icon{color:#222;cursor:pointer;font-size:1.6rem;transition:transform .2s ease,color .2s ease}.client-row-icons .client-edit ion-icon:hover{color:#000;transform:scale(1.8)}.no-clients-message{color:#555;font-style:italic;padding:20px;text-align:center}.client-list-container.closed .client-list{align-items:center;display:flex;flex-direction:column;overflow:hidden;padding-top:10px}.client-list-container.closed .client-list .client-table-header{background:none;border-bottom:none;padding:0}.client-list-container.closed .client-list .client-header-divider,.client-list-container.closed .client-list .client-header-icons>:not(.client-list-toggle),.client-list-container.closed .client-list .client-header-left,.client-list-container.closed .client-list .no-clients-message,.client-list-container.closed .client-list table{display:none}.client-row-left{align-items:center;display:flex;flex:0 0 250px;gap:.5rem}.client-row-icons{gap:1.5rem}.client-row-icons,.client-search{align-items:center;display:flex;flex-shrink:0}.client-search{gap:.25rem}.client-search ion-icon{--ionicon-color:#222;color:#222;cursor:pointer;font-size:1.8rem}.client-search ion-icon:hover{color:#000}.client-search input{background-color:#fff;border:1px solid #ccc;border-radius:4px;color:#222;font-size:.9rem;padding:4px 6px;width:100px}.client-header-labels .sortable{align-items:center;color:#222;cursor:pointer;display:inline-flex;gap:.25rem}.client-header-labels .sortable ion-icon{color:#222;font-size:1rem}.client-header-building,.client-row-building{flex:0 0 150px;padding:0 10px;text-align:left}.client-header-building{align-items:center;color:#222;display:flex;flex:0 0 150px;font-size:.9rem;margin-top:32px;text-align:left}.client-row-building select{background-color:#fff;border:1px solid #ccc;border-radius:4px;color:#222;padding:4px;width:100%}.search-overlay{background:#0000000d;inset:0;position:fixed;z-index:2000}.search-input-overlay{background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 8px #00000014;color:#222;font-size:1rem;outline:none;padding:6px 10px}.building-label-with-icon{align-items:center;display:flex;gap:8px;justify-content:space-between;position:relative}.filter-container{position:relative}.filter-icon{background:none;border:none;color:#222;cursor:pointer;font-size:1.5rem;padding:2px}.filter-icon ion-icon{margin-left:50px}.filter-icon ion-icon:hover{color:grey}.filter-menu{background:#fff;border:1px solid #e0e0e0;border-radius:4px;box-shadow:0 2px 8px #0000001a;color:#222;min-width:200px;padding:10px;position:absolute;right:0;top:100%;z-index:100}.filter-menu label{display:block;margin-bottom:6px;padding-left:2px}.filter-menu label input{margin-right:4px}.clear-filter{background:#f0f0f0;border:1px solid #d0d0d0;border-radius:4px;color:#222;cursor:pointer;margin-top:8px;padding:6px;width:100%}.clear-filter:hover{background:#e6e6e6}.apply-filter{background:#ddd;border:none;border-radius:4px;color:#222;cursor:pointer;margin-top:6px;padding:6px;width:100%}.apply-filter:hover{background:#ccc}.active-filter-name{background:#f8f8f8;border-top:1px solid #eee;bottom:0;box-shadow:0 -2px 5px #00000008;color:#444;display:block;font-size:.85rem;font-style:italic;padding:10px;position:sticky;text-align:center;z-index:10}html.dark-mode .client-list{background:#121212;color:#e0e0e0;scrollbar-color:#555 #333}html.dark-mode .client-list::-webkit-scrollbar-thumb{background:#555}html.dark-mode .client-list::-webkit-scrollbar-track{background:#333}html.dark-mode .client-table-header{background:#1e1e1e;border-bottom:1px solid #333;box-shadow:0 2px 5px #0009}html.dark-mode .client-header-building span,html.dark-mode .client-header-icons ion-icon,html.dark-mode .client-header-labels span,html.dark-mode .client-header-left .building-icon{color:#e0e0e0}html.dark-mode .client-header-divider,html.dark-mode .client-row .client-header-divider{background:#333}html.dark-mode .client-row:nth-child(2n){background:#141414}html.dark-mode .client-row:nth-child(odd){background:#1a1a1a}html.dark-mode .client-row.active,html.dark-mode .client-row:hover{background:#2a2a2a}html.dark-mode .client-row .client-id,html.dark-mode .client-row .client-name{color:#e0e0e0}html.dark-mode .no-clients-message{color:#888}html.dark-mode .filter-menu{background:#1e1e1e;border:1px solid #444;box-shadow:0 2px 8px #000c}html.dark-mode .filter-menu label{color:#e0e0e0}html.dark-mode .filter-menu label input{accent-color:#888}html.dark-mode .apply-filter,html.dark-mode .clear-filter{background:#333;border-color:#555;color:#e0e0e0}html.dark-mode .apply-filter:hover,html.dark-mode .clear-filter:hover{background:#444}html.dark-mode .search-input-overlay{background:#1e1e1e;border:1px solid #444;box-shadow:0 2px 8px #000c;color:#e0e0e0}html.dark-mode .active-filter-name{background:#121212;border-top:1px solid #333;box-shadow:0 -2px 5px #0009;color:#aaa}html.dark-mode .client-edit ion-icon,html.dark-mode .client-header-icons .client-edit ion-icon,html.dark-mode .filter-icon ion-icon{color:#fff}html.dark-mode .client-header-icons .electricity ion-icon{color:gold}html.dark-mode .client-header-icons .gas ion-icon{color:#ff6b6b}html.dark-mode .client-header-icons .water ion-icon{color:#4da6ff}html.dark-mode .client-row-icons .client-edit ion-icon:hover{color:#fff}html.dark-mode .filter-icon ion-icon:hover{color:#c020ff;font-size:1.8rem}.theme-toggle{background:none;border:1px solid #ccc;border-radius:4px;cursor:pointer;font-size:.9rem;padding:6px 12px;position:absolute;right:15px;top:50%;transform:translateY(-50%)}.theme-toggle:hover{background:#0000000d}.report-preview{background:#f9f9f9;border:1px solid #e0e0e0;border-radius:8px;display:flex;flex:1 1 auto;flex-direction:column;height:100%;margin-top:0;min-height:0;padding:20px}.report-preview h2{margin-bottom:10px;margin-top:0}.report-header h3{font-size:18px;line-height:1.4;margin:0}.report-header p{color:var(--text-muted);font-size:14px;margin:4px 0 0}.client-info{background-color:#e1d9ee;border-left:4px solid #6e1d85;border-radius:5px;margin-bottom:15px;padding:10px}.client-info h3{color:#2c3e50;margin-bottom:5px;margin-top:0}.client-info p{color:#555;margin:0}.file-tabs{display:flex;margin-bottom:15px}.file-tab{background:#eee;border:none;border-radius:5px;cursor:pointer;margin-right:8px;padding:8px 15px}.file-tab.active{background:#6e1d85;color:#fff}.file-tab:hover{background:#d1c4e9}.file-tab.active:hover{background:#5a156b}.process-btn{background:#6e1d85;border:none;border-radius:5px;color:#fff;cursor:pointer;margin-bottom:2px;padding:10px 15px;width:fit-content}.process-btn:hover{background:#5a156b}.process-btn:disabled{background:#ccc;cursor:not-allowed}.charts-scroll-container{background:#fff;border:1px solid #e0e0e0;border-radius:5px;flex:1 1 auto;max-height:none;min-height:0;overflow-y:auto;padding:10px}.chart-wrapper{align-items:stretch;box-sizing:border-box;display:flex;flex-direction:column;max-width:100%;overflow-x:auto;overflow-y:visible;width:100%}.chart-wrapper canvas{box-sizing:border-box;display:block;height:auto!important;max-height:100%!important;max-width:100%!important;width:100%!important}.charts-scroll-container{min-height:320px}@media (max-width:1000px){.charts-scroll-container{min-height:180px;padding:0}.chart-wrapper{padding:0}}#see-data{flex:1 1 auto;min-height:0;overflow-y:auto}.chart-container{display:flex;flex-direction:column;gap:20px;padding:10px}.chart-container canvas{margin-bottom:20px;max-width:100%}.hidden{display:none}.chart-toolbar,.table-toolbar{margin-bottom:3px}.chart-icon,.table-icon{color:#000;opacity:1}.chart-icon:hover,.table-icon:hover{color:purple}.file-chart-section{margin-bottom:32px}.chart-wrapper{background:#fff;border-radius:12px;box-shadow:0 4px 24px #6e1d852e,0 1.5px 8px #0000001f;margin-bottom:20px;margin-bottom:24px;padding:20px 5px 5px;position:relative}.chart-toolbar{display:flex;gap:8px;position:absolute;right:8px;top:8px}#utility-pie-charts{display:flex;flex-wrap:wrap;gap:24px;justify-content:space-around}#utility-pie-charts .chart-wrapper{background:#fff;border-radius:12px;box-shadow:0 4px 24px #6e1d852e,0 1.5px 8px #0000001f;width:480px}#utility-pie-charts .chart-wrapper canvas{height:auto!important;width:100%!important}.date-range-selector{align-items:center;display:flex;gap:12px;margin-bottom:12px}.specific-month-selector-section{display:flex;margin-top:14px}.date-range-selector label{color:#333;font-size:.9rem}.date-range-selector select{border:1px solid #ccc;border-radius:4px;margin-left:4px;padding:4px 6px}.monthlist{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px;margin-left:-10px;margin-right:-10px}.monthlist .month-item label{padding-left:2px}.monthlist .month-item input[type=checkbox]{cursor:pointer;margin-right:2px}.process-btn.clear-specific-months{background-color:#dc3545;color:#fff}.process-btn.clear-specific-months:hover{background-color:#f30018;color:#fff}#calculator-tab-content{background-color:var(--card-color);border-radius:8px;box-shadow:0 2px 10px #00000014;display:flex;flex:1 1;flex-direction:column;margin-bottom:20px;overflow:hidden;padding:15px}#calculator-tab-content h3{border-bottom:2px solid var(--border-color);color:var(--primary-color);font-size:1.6rem;letter-spacing:1px;margin-bottom:15px;margin-top:5px;padding-bottom:10px;text-align:center;text-shadow:0 3px 12px #6e1d8573,0 1px 0 #000000c2;text-transform:uppercase}.calculator-container{border:1px solid var(--border-color);border-radius:6px;display:flex;flex:1 1;flex-direction:column;overflow:hidden}.calculator-iframe{border:none;display:block;height:100%;width:100%}.calculator-iframe.loading{opacity:.5;pointer-events:none}.modal-overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0009;justify-content:center}.chart-settings-modal{box-shadow:0 8px 30px #0003;padding:30px}.chart-settings-modal h3{border-bottom:1px solid #eee;font-size:1.5rem;margin-bottom:20px;margin-top:0;padding-bottom:10px;text-align:center}.settings-form{padding-right:10px}.modal-actions{margin-top:25px;padding-top:15px}.cancel-btn{background:#f0f0f0}.cancel-btn:hover{background:#e0e0e0}@media (max-width:1000px){.charts-scroll-container{padding:4px}.chart-wrapper{height:220px;margin-bottom:12px;max-width:98vw;min-height:220px;padding:4px}#utility-pie-charts .chart-wrapper{max-width:98vw;min-width:0;width:98vw}}@media (max-width:600px){.charts-scroll-container{padding:2px}.chart-wrapper{height:160px;margin-bottom:8px;max-width:100vw;min-height:160px;padding:2px}#utility-pie-charts .chart-wrapper{max-width:100vw;min-width:0;width:100vw}}@media (max-width:1000px),(max-width:600px){.chart-wrapper canvas{aspect-ratio:unset!important;height:100%!important;max-height:100%!important}}@media (max-width:1000px){.report-header{margin-bottom:8px!important;padding:6px 6px 0!important}.report-header h2{font-size:1.2rem!important;margin-bottom:4px!important}.client-info{font-size:.95rem!important;margin-bottom:8px!important;padding:6px!important}.client-info h3{font-size:1rem!important;margin-bottom:2px!important}.client-info p{font-size:.92rem!important}.file-tabs{gap:4px!important;margin-bottom:8px!important}.file-tab{font-size:.95rem!important;padding:6px 8px!important}.process-btn,.process-btn:disabled{font-size:.95rem!important;padding:7px 10px!important}.date-range-selector{flex-wrap:wrap;gap:6px!important;margin-left:0!important}.date-range-selector label,.specific-month-selector-section label{font-size:.92rem!important}}.pdf-loading-overlay{align-items:center;background:#00000080;display:flex;flex-direction:column;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:2000}.processing-modal{background:#ffffffb7;height:30%;margin:0;width:20%}.pdf-loading-overlay p{color:#000;font-size:1.2rem;margin-top:12px}.pdf-loading-gif{margin-bottom:12px}.upload-bar{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-bottom:1rem;width:100%}.btn{--brand:#a02b93;--txt:#fff;--ring:#a02b9359;-webkit-appearance:none;appearance:none;border:0;border-radius:9999px;box-shadow:0 2px 8px #a02b932e,inset 0 -2px 0 #00000014;cursor:pointer;font-size:.95rem;font-weight:600;line-height:1;padding:.6rem 1rem;transition:transform .12s ease,box-shadow .2s ease,background .18s ease,color .18s ease}.btn--primary{background:linear-gradient(180deg,var(--brand),#7f1d6d);color:var(--txt)}.btn--primary:hover{box-shadow:0 8px 24px var(--ring);transform:translateY(-1px)}.btn--primary:active{box-shadow:0 4px 12px var(--ring);transform:translateY(0)}.btn--primary:focus-visible{outline:3px solid var(--ring);outline-offset:2px}.btn--outline{background:#fff;border:2px solid var(--brand);color:var(--brand)}.btn--outline:hover{background:var(--brand);box-shadow:0 8px 24px var(--ring);color:#fff}.btn--outline:active{transform:translateY(1px)}.btn.is-done{--ok:#16a34a;background:linear-gradient(180deg,#22c55e,#15803d);border-color:#0000;box-shadow:0 6px 18px #16a34a59;color:#fff}.btn.is-done:hover,.btn:disabled{transform:none}.btn:disabled{box-shadow:none;cursor:not-allowed;opacity:.6}@media (max-width:560px){.upload-bar{gap:.5rem}.btn{justify-content:center;width:100%}}.calculator-header{align-items:center;display:flex;margin-bottom:20px;margin-top:10px;position:relative}.calculator-header h3{flex-grow:1;margin:0;text-align:center}.calculator-refresh-icon{color:var(--primary-color);cursor:pointer;font-size:2.5rem;font-weight:700;margin-left:auto;transition:transform .2s ease,color .2s ease}.calculator-refresh-icon:hover{color:#343434;font-size:2.5rem;transform:rotate(90deg)}.ok-button-container{display:flex;justify-content:center;margin-bottom:1rem}.data-editor{background:#fff;padding:20px;position:relative}.table-wrapper{margin:10px 0;overflow-x:auto}.data-editor h3{margin-bottom:10px}.bill-select-row{align-items:center;display:flex;gap:10px}.delete-bill-btn{align-items:center;background:#d9534f;border-radius:6px;color:#fff;display:inline-flex;font-weight:700;gap:6px;padding:8px 12px;transition:all .2s ease-in-out}.delete-bill-btn:hover:not(:disabled){background:#c9302c}.delete-bill-btn:disabled{cursor:not-allowed;opacity:.6}.data-editor td:focus{outline:2px solid #4a90e2}.delete-icon{color:#6e1d85;cursor:pointer;font-size:1.5rem;margin-left:15px;transition:color .2s ease-in-out}.delete-icon:hover{color:#9b59b6}.data-editor .controls{display:flex;gap:12px;margin-top:12px}.data-editor .controls button{border:none;border-radius:6px;cursor:pointer;font-weight:700;padding:8px 16px;transition:all .2s ease-in-out}.data-editor .controls .add-column-btn,.data-editor .controls .add-row-btn{background:#6e1d85;color:#fff}.data-editor .controls .add-column-btn:hover,.data-editor .controls .add-row-btn:hover{background:#5a186b}.data-editor .controls .save-btn{background:#4caf50;color:#fff}.data-editor .controls .save-btn:hover{background:#388e3c}.chart-toolbar,.table-toolbar{display:flex;gap:8px;position:absolute;right:12px;top:8px;z-index:10}.chart-icon,.table-icon{cursor:pointer;font-size:1.4rem;opacity:.7;transition:opacity .2s}.chart-icon:hover,.table-icon:hover{opacity:1}.chart-container,.data-editor,.file-chart-section{position:relative}.floating-success{align-items:center;background-color:#0080001a;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9999}.floating-success-box{background:#fff;border-radius:10px;box-shadow:0 6px 20px #0000001a;font-size:16px;font-weight:500;padding:50px 100px;text-align:center}.floating-success-box p{color:#2d882d;margin:0 0 12px}.floating-success-box button{background:#44c767;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:700;padding:8px 16px}.floating-success-box button:hover{background:#3cbf3c}.estimated-row{background-color:#ffe5e5}.confirm-no,.confirm-yes,.data-editor .controls .save-btn,.data-editor .controls button,.floating-error-box button,.floating-success-box button{border-radius:6px}.data-editor table{border-collapse:collapse;width:100%}.data-editor td,.data-editor th{border:1px solid #ccc;padding:6px;text-align:center}.bill-data-table{border-collapse:collapse;font-family:Arial,sans-serif;width:100%}.bill-data-table thead{background-color:#6e1d85;color:#fff}.bill-data-table td,.bill-data-table th{border:1px solid #ccc;padding:8px;text-align:center}.bill-data-table tbody tr:nth-child(2n){background-color:#f5f5f5}.bill-data-table tbody tr:hover{background-color:#e6e0f0}.bill-data-table tbody tr.estimated-row:hover{background-color:#fcc}.hdd-table{border-collapse:collapse;width:100%}.hdd-table thead{background-color:#e86f2e;color:#fff}.hdd-table td,.hdd-table th{border:1px solid #ddd;padding:6px;text-align:center}.hdd-table tbody tr:nth-child(odd){background-color:#ffbf8a3d}.hdd-table tbody tr:hover{background-color:#fcece0}.cdd-table{border-collapse:collapse;width:100%}.cdd-table thead{background-color:#034f7b;color:#fff}.cdd-table td,.cdd-table th{border:1px solid #ddd;padding:6px;text-align:center}.cdd-table tbody tr:nth-child(odd){background-color:#f0f8ff}.cdd-table tbody tr:hover{background-color:#eaf2f9}h4{margin-bottom:8px}.modal-overlay{align-items:center;-webkit-backdrop-filter:none;backdrop-filter:none;background:none;bottom:0;display:flex;justify-content:flex-start;left:0;position:fixed;right:0;top:0;z-index:1000}.chart-settings-modal{background:#fff;border-radius:12px;box-shadow:0 8px 30px rgba(0,0,0,.379);display:flex;flex-direction:column;margin-left:16%;max-height:80vh;max-width:500px;overflow-y:auto;padding:0;position:relative;width:90%}.modal-header{align-items:center;background:#fff;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:30px 30px 25px;position:sticky;top:0;z-index:10}.chart-settings-modal h3{border-bottom:none;color:#6e1d85;font-size:1.3rem;margin:0;padding-bottom:0;padding-top:22px}.settings-form{display:flex;flex-direction:column;flex-grow:1;gap:15px;padding:20px 10px 30px 30px}.settings-form label{color:#333;display:flex;flex-direction:column;font-size:.95rem;font-weight:700}.settings-form input[type=number],.settings-form input[type=text],.settings-form select{border:1px solid #ccc;border-radius:6px;box-sizing:border-box;font-size:1rem;margin-top:5px;padding:8px 10px;width:100%}.settings-form input[type=color]{border:1px solid #ccc;border-radius:6px;cursor:pointer;height:40px;margin-top:5px;width:100%}.settings-form input[type=checkbox]{margin-right:8px;margin-top:5px;width:auto}.modal-actions{background:#fff;border-top:1px solid #eee;bottom:0;margin-top:0;padding:20px 30px;position:sticky;z-index:10}.modal-actions button{border:none;border-radius:6px;cursor:pointer;font-size:1rem;padding:10px 20px;transition:background-color .2s ease}.save-btn{background:#6e1d85;color:#fff}.save-btn:hover{background:#5a156b}.cancel-btn{background:#9c9c9c;color:#333}.cancel-btn:hover{background:#585858}.settings-form h4{border-bottom:1px dashed #ddd;color:#555;font-size:1.1rem;margin-bottom:10px;margin-top:20px;padding-bottom:5px}.close-modal-btn{position:relative;right:auto;top:auto}.add-client-btn{background-color:var(--primary-dark);border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:16px;margin-top:20px;padding:10px;width:100%}.add-client-btn:hover{background-color:var(--primary-color)}.plus-icon{font-size:18px;font-weight:700;padding-left:8px}.modal-backdrop{background-color:#0009;z-index:1000}.add-client-modal{background-color:#fff;border-radius:8px;box-shadow:0 4px 25px #0003;max-height:80vh;max-width:320px;overflow-y:auto;padding:25px;position:relative;text-align:left;width:90%}.add-client-modal h3{color:#333;margin-bottom:20px;margin-top:0}.form-group{margin-bottom:20px}.form-group label{color:#555;display:block;font-weight:500;margin-bottom:8px}.form-group input{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:10px;width:100%}.file-buttons{display:flex;flex-direction:column;gap:15px}.file-button-container{display:flex;flex-direction:column;gap:5px}.file-type-btn{background-color:#f0f0f0;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:14px;padding:10px 15px;transition:all .2s}.file-type-btn:hover{background-color:#e7e7e7}.file-type-btn.has-file{background-color:#e6f7e6;border-color:#c3e6c3}.selected-file{align-items:center;background-color:#f0f0f0;border:1px solid #ddd;border-radius:4px;display:flex;font-size:13px;padding:8px 12px;width:100%}.remove-file-btn{background:none;border:none;color:#999;cursor:pointer;font-size:18px;margin-left:auto}.file-info{color:#777;font-size:12px;margin-top:8px}.modal-actions{align-items:center;flex-wrap:nowrap;gap:10px;padding:8px 10px 10px}.modal-actions .cancel-btn{margin-right:auto}.modal-actions .add-btn,.modal-actions .cancel-btn,.modal-actions .delete-btn{margin:0!important}.modal-actions button{flex:0 0 auto;min-width:92px;padding:8px 14px}@media (max-width:420px){.modal-actions{flex-wrap:wrap;gap:8px}.modal-actions button{flex:1 1 auto;min-width:0}}.cancel-btn{background-color:#dedede;border:1px solid #ddd;border-radius:4px;cursor:pointer;margin-right:10px;padding:8px 15px}.cancel-btn:hover{background-color:#bababa;border-color:#9f9f9f}.add-btn{background-color:var(--primary-color);border:none;border-radius:4px;color:#fff;cursor:pointer;padding:8px 15px}.add-btn:hover{background-color:var(--primary-dark)}.delete-btn{background-color:rgba(255,0,0,.726);border:1px solid #ddd;border-radius:4px;color:#fff;cursor:pointer;margin-left:10px;margin-right:10px;padding:8px 15px}.delete-btn:hover{background-color:red;border-color:#afafaf}.icon-btn{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:24px;justify-content:center;margin:0 8px;padding:0}.processing-overlay{background:#00000080;bottom:0;right:0}.processing-modal{align-items:center;border-radius:12px;color:#333;display:flex;flex-direction:column;font-size:1rem;justify-content:center;min-height:200px;min-width:240px;padding:32px}.spinner{animation:spin 1s linear infinite;font-size:4rem!important;margin-bottom:16px}.processing-modal.completed .success-icon{color:#28a745;font-size:5rem!important;margin-bottom:16px}.processing-modal.completed p{font-size:1.2rem;font-weight:700}.processing-modal ion-icon.spinner{--ionicon-color:#333!important;color:#333!important;opacity:1!important}.progress-log{background:#fafafa;border:1px solid #ddd;border-radius:4px;font-family:monospace;font-size:.875rem;max-height:180px;padding:8px}.progress-line{margin:2px 0}.file-dropdown ul{list-style:none;margin:0;padding:0}.file-dropdown .selected-file span{color:#333;flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inline-error{align-items:center;background:#ffe0e0;border:1px solid #ff6b6b;border-radius:6px;display:flex;justify-content:space-between;margin:8px 0;padding:12px}.inline-error p{color:#900;font-weight:500;margin:0}.inline-error button{background:#0000;border:none;color:#900;cursor:pointer;font-weight:700}.add-client-modal .form-group,.add-client-modal .form-group input,.add-client-modal .form-group label,.edit-client-modal .form-group,.edit-client-modal .form-group input,.edit-client-modal .form-group label,.edit-client-modal .form-group select{text-align:left}.edit-client-modal{background-color:#fff;border-radius:8px;box-shadow:0 4px 25px #0003;margin-top:5vh;max-height:90vh;max-width:350px;min-width:220px;overflow-y:auto;padding:18px 10px;position:relative;text-align:left;width:95vw}@media (max-width:500px){.edit-client-modal{margin-top:5vh;max-height:95vh;max-width:98vw;min-height:60px;min-width:0;padding:10px 2vw}}.form-group>div>label{align-items:center;display:inline-flex;margin-right:1rem}.form-group label{margin-top:10px}.form-group>div>label input[type=radio]{margin-right:.25rem}.file-button-container>button,.file-item button{background:#0000;border:1px solid var(--primary-color);border-radius:4px;box-shadow:0 0 2px #333;cursor:pointer;margin:0 .5rem .5rem 0;padding:.25rem .75rem;transition:background-color .2s ease,color .2s ease}.file-item button{box-shadow:0 0 2px #333;margin-left:5px}.file-button-container>button:hover,.file-item button:hover{background:var(--primary-color);color:#fff}.file-button-container{margin-bottom:1rem}.save-icon-anim{align-items:center;display:flex;justify-content:center;margin-top:12px}.save-icon-anim ion-icon{animation:savePulse 1s infinite alternate;color:var(--primary-color);font-size:6rem!important;opacity:.8}@keyframes savePulse{0%{opacity:.4}to{opacity:1}}.floating-error-box{background:#ffe0e0;border:2px solid #f44;box-shadow:0 6px 20px #0003;padding:20px 30px}.close-modal-btn{top:10px}.modal-backdrop{align-items:center;background:#0000004d;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:100}.add-client-modal,.modal-container{background:#fff;border-radius:8px;box-shadow:0 2px 12px #0003;min-width:320px;padding:24px;position:relative;text-align:center}.list-scroll,.modal-container h3{margin-bottom:16px}.list-scroll{max-height:60vh;overflow-y:auto}.accordion-item{margin-bottom:8px}.building-button{align-items:center;background:#f5f5f5;border:none;border-radius:4px;cursor:pointer;display:flex;font-size:1rem;justify-content:space-between;padding:12px;text-align:left;transition:background .2s;width:100%}.building-button.expanded,.building-button:hover{background:#6e1d85;color:#fff}.chevron{font-size:.8rem}.type-list{display:flex;flex-direction:column;gap:6px;margin:8px 0 0 16px}.type-button{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;padding:8px;text-align:left;transition:background .2s}.type-button.selected,.type-button:hover{background:#6e1d85;color:#fff}.add-new-building-btn{background:var(--primary-color);border:none;border-radius:4px;color:#fff;cursor:pointer;margin-bottom:12px;padding:8px;transition:background .2s;width:100%}.add-new-building-btn:hover{background:var(--primary-dark)}.add-new-type-btn{background:#6e1d85;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:8px;transition:background .2s;width:100%}.add-new-type-btn:hover{background:#5a156b}.new-building-form{margin-bottom:16px;text-align:left}.new-building-form .form-group{margin-bottom:12px}.modal-actions{display:flex;gap:12px;justify-content:flex-end}.ok-button{background:#6e1d85;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:10px 16px;transition:background .2s}.ok-button:disabled{cursor:default;opacity:.5}.ok-button:not(:disabled):hover{background:#5a156b}.cancel-button{background:#000;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:10px 16px;transition:background .2s}.cancel-button:hover{background:#6e1d85}.delete-building-btn{background:none;border:none;color:#e00;cursor:pointer;font-size:1.2rem;padding:4px;transition:color .2s}.delete-building-btn:hover{color:#c00}.delete-bill-btn{background:none;border:none;color:#e00;cursor:pointer;font-size:1.2rem;margin-left:8px;padding:4px;transition:color .2s}.delete-bill-btn:hover{color:#c00}.delete-bill-btn[disabled]{color:#999;cursor:not-allowed}.processing-overlay{align-items:center;background:#0000004d;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1000}.processing-modal{background:#fff;border-radius:8px;box-shadow:0 2px 12px #0003;padding:24px;text-align:center}.processing-modal .spinner{animation:spin 1s linear infinite;font-size:2rem}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.progress-log{margin-top:12px;max-height:200px;overflow-y:auto;text-align:left}.progress-line{font-size:.9rem;margin:4px 0}.processing-modal.completed .success-icon{color:green;font-size:2rem}.floating-error{align-items:center;background-color:#00000059;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9999}.floating-error-box{background:#fff;border:none;border-radius:10px;box-shadow:0 6px 20px rgba(0,0,0,.452);font-size:16px;font-weight:500;padding:50px 100px;text-align:center}.floating-error-box p{color:#900;margin:0 0 12px}.floating-error-box button{background:#f44;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:700;padding:8px 16px}.floating-error-box button:hover{background:#e21a1a}.floating-confirm{align-items:center;background-color:#0000004d;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9999}.floating-confirm-box{background:#fff;border:none;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.568);padding:24px 36px;text-align:center}.floating-confirm-box p{font-size:16px;font-weight:500;margin-bottom:16px}.confirm-buttons{display:flex;gap:16px;justify-content:center}.confirm-no,.confirm-yes{border:none;border-radius:6px;cursor:pointer;font-weight:700;padding:8px 18px}.confirm-yes{background-color:#d9534f;color:#fff}.confirm-yes:hover{background-color:#c9302c}.confirm-no{background-color:#e0e0e0;color:#333}.confirm-no:hover{background-color:#b3b1b1e0}.close-modal-btn{background:none;color:#888;font-size:28px;right:16px;top:12px;transition:color .2s;z-index:10}.close-modal-btn:hover{color:#d9534f}.notif-backdrop{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;position:fixed;z-index:3000}.notif-modal{background:#fff;border-radius:8px;max-height:80%;overflow-y:auto;padding:1rem;position:relative;width:60%}.close-modal-btn{background:#f3e8fa;border:none;border-radius:50%;color:#a02b93;cursor:pointer;font-size:1.5rem;height:2.5rem;line-height:1;position:absolute;right:1rem;top:1rem;transition:background .2s;width:2.5rem}.close-modal-btn:hover{background:#a02b93;color:#fff}.notif-list{list-style:none;margin:1.5rem 0 0;padding:0}.notif-item{align-items:flex-start;border-bottom:1px solid #eee;display:flex;padding:.5rem 0}.notif-dot{border-radius:50%;cursor:pointer;height:10px;margin-right:.5rem;margin-top:.4rem;width:10px}.notif-dot.unread{background:#48ff00}.notif-dot.read{background:#ccc}.notif-content{flex:1 1}.notif-title{align-items:center;border-bottom:1px solid #eee;cursor:pointer;display:flex;justify-content:space-between;padding:6px 8px}.notif-text{flex:1 1;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notif-actions{align-items:center;display:flex;gap:10px}.expand-arrow{color:#555;font-size:14px}.notif-details{margin-top:.5rem;padding-left:1.5rem}.notif-message{margin:0 0 .5rem}.notif-link-row{align-items:center;display:flex;margin-bottom:.5rem}.notif-link{color:#6e1d85;cursor:pointer;font-family:monospace;font-size:.9rem;text-decoration:underline;-webkit-user-select:text;user-select:text;word-break:break-all}.notif-link:hover{color:#5a156b}.copy-btn{background:#a02b9277;border:none;box-shadow:0 2px 8px #a02b9340;color:#a02b93;cursor:pointer;font-size:.8rem;margin-left:.5rem;padding:2px 6px;transition:box-shadow .2s ease,transform .02s ease-in-out}.copy-btn:hover{background-color:#a02b93;box-shadow:0 6px 18px #a02b9359;color:#fffdfd}.notif-delete-icon{color:#b4232a;cursor:pointer;font-size:18px;transition:color .2s ease,transform .2s ease}.notif-delete-icon:hover{color:#e63946;transform:scale(1.2)}.notif-confirm{align-items:center;color:#444;display:flex;font-size:.9rem;gap:8px;margin-left:auto}.notif-confirm button{border:none;border-radius:4px;cursor:pointer;font-size:.85rem;padding:2px 8px}.notif-confirm .yes-btn{background:#b4232a;color:#fff}.notif-confirm .yes-btn:hover{background:#e63946}.notif-confirm .no-btn{background:#ddd;color:#333}.notif-confirm .no-btn:hover{background:#bbb}@media (max-width:600px){.notif-modal{padding:1rem .5rem;width:98vw}.close-modal-btn{font-size:1.2rem;height:2rem;right:.5rem;top:.5rem;width:2rem}.notif-title{font-size:1rem}.notif-details{padding-left:1.2rem}}:root{--bg-top:#d8e9ff;--bg-bottom:#eef3ff;--ink:#1f2430;--muted:#6c7280;--border:#232c3e1f;--card:#ffffffeb;--card-strong:#fff;--shadow:0 24px 60px #17243c1f;--shadow-soft:0 12px 30px #17243c1a;--radius:20px;--accent:#3a6ff7}.hub-wrap{align-items:center;color:#1f2430;color:var(--ink);display:flex;flex-direction:column;font-family:Sora,Space Grotesk,Avenir Next,sans-serif;min-height:100vh;padding:clamp(28px,4vw,64px);position:relative}.hub-wrap-with-header{padding-top:clamp(24px,4vw,56px)}.hub-background-image{background-image:radial-gradient(1200px 520px at 8% -15%,#2ac58c61,#0000 58%),radial-gradient(900px 420px at 92% -10%,#2e6eff6b,#0000 58%),radial-gradient(760px 360px at 50% 10%,#ba70ff52,#0000 62%),linear-gradient(180deg,#d7e8ff,#eef2ff 52%,#dde6ff);background-position:50%;background-size:cover}.hub-background-image:before{background-image:linear-gradient(120deg,#ffffffb3,#ffffff1a),repeating-linear-gradient(45deg,#1f24300a 0 1px,#0000 1px 8px);content:"";inset:0;mix-blend-mode:soft-light;pointer-events:none;position:absolute}body.hub-body{background-attachment:fixed;background-image:radial-gradient(1200px 520px at 8% -15%,#2ac58c61,#0000 58%),radial-gradient(900px 420px at 92% -10%,#2e6eff6b,#0000 58%),radial-gradient(760px 360px at 50% 10%,#ba70ff52,#0000 62%),linear-gradient(180deg,#d7e8ff,#eef2ff 52%,#dde6ff);background-size:cover}body.hub-body,body.hub-body #root{min-height:100%}.hub-wrap:after,.hub-wrap:before{content:"";opacity:.55;pointer-events:none;position:absolute;z-index:0}.hub-wrap:before{background:radial-gradient(circle,#3a6ff72e,#0000 70%);border-radius:50%;height:420px;left:-140px;top:-140px;width:420px}.hub-wrap:after{background:radial-gradient(circle,#7faeff2e,#0000 70%);border-radius:50%;bottom:-220px;height:520px;right:-160px;width:520px}.main-logo{filter:drop-shadow(0 18px 30px rgba(35,44,62,.12));height:auto;margin-bottom:22px;position:static;width:clamp(130px,12vw,190px);z-index:1}.hub-title{animation:fade-up .8s ease both;font-size:clamp(30px,3.8vw,44px);font-weight:600;letter-spacing:-.03em;line-height:1.05;margin:0 0 10px;text-align:center;z-index:1}.hub-description{animation:fade-up .9s ease both;animation-delay:.05s;color:#6c7280;color:var(--muted);font-size:clamp(14px,2.2vw,18px);font-weight:400;line-height:1.5;margin:0 0 44px;max-width:780px;text-align:center;z-index:1}.hub-grid{grid-gap:26px;align-items:stretch;display:grid;gap:26px;grid-template-columns:repeat(2,minmax(280px,1fr));width:min(1180px,100%);z-index:1}.hub-empty{background:#ffffffe6;border-radius:999px;color:#1f2430b3;font-weight:600;margin-top:28px;padding:16px 22px}.hub-card,.hub-empty{border:1px solid #232c3e1f}.hub-card{animation:card-pop .7s ease both;-webkit-appearance:none;appearance:none;background:radial-gradient(520px 240px at 12% -8%,color-mix(in srgb,#3a6ff7 26%,#0000),#0000 65%),radial-gradient(520px 220px at 88% 10%,color-mix(in srgb,#3a6ff7 18%,#0000),#0000 70%),linear-gradient(180deg,#fffffffa,#f8faffeb);background:radial-gradient(520px 240px at 12% -8%,color-mix(in srgb,var(--accent) 26%,#0000),#0000 65%),radial-gradient(520px 220px at 88% 10%,color-mix(in srgb,var(--accent) 18%,#0000),#0000 70%),linear-gradient(180deg,#fffffffa,#f8faffeb);border:1px solid var(--border);border-radius:20px;border-radius:var(--radius);box-shadow:0 12px 30px #17243c1a;box-shadow:var(--shadow-soft);cursor:pointer;overflow:hidden;padding:0;position:relative;text-align:left;transform-origin:center;transition:transform .25s ease;will-change:transform}.hub-card:first-child{animation-delay:.05s}.hub-card:nth-child(2){animation-delay:.1s}.hub-card:nth-child(3){animation-delay:.15s}.hub-card:nth-child(4){animation-delay:.2s}.hub-card:before{content:none}.hub-card:after{border:1px solid #ffffffb3;border-radius:inherit;content:"";inset:0;opacity:.45;pointer-events:none;position:absolute}.hub-card:hover{transform:scale(1.18);z-index:2}.hub-card:focus-visible{outline:3px solid #3a6ff74d;outline-offset:3px}.card-hero{background:linear-gradient(135deg,#ffffff4d,#fff0);height:180px;overflow:hidden;position:relative}.variant-green{--accent:#1fb981;--accent-soft:#1fb98180}.variant-blue{--accent:#1f5bff;--accent-soft:#1f5bff80}.variant-pink{--accent:#a353ff;--accent-soft:#a353ff80}.variant-white{--accent:#3f4656;--accent-soft:#3f465661}.variant-blue .card-hero,.variant-green .card-hero,.variant-pink .card-hero,.variant-white .card-hero{background:linear-gradient(135deg,var(--accent-soft) 0,#ffffffd9 100%)}.card-hero .tile-video{filter:saturate(.9) contrast(1.05) brightness(.95);height:100%;inset:0;object-fit:cover;opacity:0;position:absolute;transition:opacity .3s ease;width:100%}.hub-card.playing .tile-video,.hub-card:hover .tile-video{opacity:.95}.card-icon{display:grid;inset:0;place-items:center;position:absolute}.card-icon .tile-logo{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffc7;border:1px solid #ffffffe6;border-radius:18px;box-shadow:0 18px 30px #17243c1f;height:74px;object-fit:contain;padding:12px;width:74px}.variant-blue .card-icon .tile-logo{background:radial-gradient(120% 120% at 20% 20%,#3566f480,#3566f42e 55%,#ffffffe6 100%),linear-gradient(135deg,#3566f452,#ffffffd9);border-color:#3566f466;box-shadow:0 18px 30px #3566f42e,0 12px 24px #17243c1f}.card-body{padding:18px 20px 20px}.card-title{color:#1f2430;color:var(--ink);font-size:18px;font-weight:600;letter-spacing:-.01em;margin-bottom:8px}.card-desc{color:#1f2430a6;font-size:13px;line-height:1.5;min-height:42px}.card-cta{align-items:center;background:#3566f41f;border-radius:999px;color:#3a6ff7;color:var(--accent);display:inline-flex;font-size:12px;font-weight:600;gap:12px;letter-spacing:.06em;margin-top:16px;padding:10px 16px;text-transform:uppercase}.card-cta-icon{background:currentColor;height:1px;position:relative;transition:width .2s ease;width:16px}.card-cta-icon:after{border-right:2px solid;border-top:2px solid;content:"";height:6px;position:absolute;right:-2px;top:-3px;transform:rotate(45deg);width:6px}.card-cta:active .card-cta-icon,.card-cta:hover .card-cta-icon{width:28px}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes card-pop{0%{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width:980px){.hub-grid{gap:20px;grid-template-columns:1fr;width:min(520px,100%)}.card-hero{height:170px}.card-icon .tile-logo{height:66px;width:66px}}@media (prefers-reduced-motion:reduce){.hub-card,.hub-description,.hub-title{animation:none}.hub-card,.hub-card:before,.tile-video{transition:none}}.dash-header{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ecf4ffe0;border-bottom:1px solid #232c3e1f;position:sticky;top:0;z-index:50}.dash-header-inner{grid-gap:18px;align-items:center;display:grid;gap:18px;grid-template-columns:1fr minmax(240px,420px) 1fr;padding:18px clamp(20px,3vw,40px)}.dash-header-left{display:flex;flex-direction:column;gap:4px}.dash-header-greeting{color:#1f24308c;font-size:12px;letter-spacing:.22em;text-transform:uppercase}.dash-header-title{color:#1f2430;font-size:22px;font-weight:600;letter-spacing:-.3px}.dash-header-middle{display:flex;justify-content:center}.dash-search{align-items:center;background:#fffffff2;border:1px solid #232c3e1f;border-radius:999px;box-shadow:0 12px 24px #17243c14;display:flex;gap:10px;padding:10px 14px;width:100%}.dash-search-icon{align-items:center;color:#1f243080;display:inline-flex;justify-content:center}.dash-search input{background:#0000;border:0;color:#1f2430;font-size:14px;outline:none;width:100%}.dash-header-right{align-items:center;display:flex;gap:14px;justify-content:flex-end;min-width:0}.dash-header-date{color:#1f24308c;font-size:12px;white-space:nowrap}.dash-user{align-items:center;display:inline-flex;gap:10px;min-width:0}.dash-user-avatar{border-radius:999px;height:32px;object-fit:cover;width:32px}.dash-user-avatar--fallback{align-items:center;display:inline-flex;justify-content:center;overflow:hidden}.dash-user-avatar--fallback svg{display:block;height:100%;width:100%}.dash-user-label{color:#1f2430bf;font-size:13px;font-weight:600;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-logout{background:#3566f41f;border:1px solid #3566f433;border-radius:999px;color:#2f63f2;cursor:pointer;font-size:12px;font-weight:600;letter-spacing:.08em;padding:10px 16px;text-transform:uppercase;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.dash-logout:hover{background:#3566f42e;box-shadow:0 10px 20px #17243c1f;transform:translateY(-1px)}@media (max-width:980px){.dash-header-inner{grid-template-columns:1fr}.dash-header-middle{justify-content:stretch}.dash-header-right{flex-wrap:wrap;gap:10px;justify-content:space-between}}.auth-screen,.auth-screen *{box-sizing:border-box;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.auth-screen{background:radial-gradient(900px 600px at 20% 20%,#ffffff47,#0000 55%),radial-gradient(900px 700px at 90% 20%,#ffffff2e,#0000 60%),linear-gradient(135deg,#0b78ff,#0b4dd6 40%,#0732aa);display:grid;min-height:100vh;padding:0;place-items:center}.auth-card{-webkit-backdrop-filter:none;backdrop-filter:none;background:#ffffff1f;border-radius:0;box-shadow:none;display:grid;grid-template-columns:1.2fr .8fr;max-width:none;min-height:100vh;overflow:hidden;width:100%}.auth-hero{background:linear-gradient(180deg,#0f7efff2,#072d8cfa);color:#fff;position:relative}.auth-hero:after,.auth-hero:before{border:1px solid #ffffff42;border-radius:999px;bottom:-280px;content:"";height:520px;left:-240px;position:absolute;width:520px}.auth-hero:after{border-color:#ffffff24;bottom:-400px;height:700px;left:-340px;width:700px}.auth-hero-overlay{background-position:50%;background-size:cover;inset:0;mix-blend-mode:soft-light;opacity:.18;pointer-events:none;position:absolute}.auth-hero-inner{display:flex;flex-direction:column;gap:18px;height:100%;justify-content:center;padding:72px 86px;position:relative}.auth-brand-row{align-items:center;display:inline-flex;gap:12px;opacity:.98}.auth-brand-logo{filter:drop-shadow(0 10px 18px rgba(0,0,0,.25));height:38px;object-fit:contain;width:38px}.auth-brand-name{font-size:16px;font-weight:700;letter-spacing:.2px}.auth-hero-copy{margin-top:12px;max-width:420px}.auth-hero-title{font-size:46px;font-weight:800;letter-spacing:-.6px;line-height:1.12}.auth-hero-subtitle{color:#ffffffe0;font-size:15px;line-height:1.5;margin-top:10px}.auth-hero-cta{align-self:flex-start;background:#ffffff29;border:0;border-radius:999px;box-shadow:inset 0 0 0 1px #ffffff2e;color:#fff;cursor:pointer;font-weight:700;letter-spacing:.2px;margin-top:10px;padding:10px 18px}.auth-hero-cta:hover{background:#ffffff38}.auth-panel{align-items:center;background:#fff;display:flex;justify-content:center;padding:72px 76px}.auth-panel-inner{width:min(360px,100%)}.auth-title{color:#1f2937;font-size:28px;font-weight:800;letter-spacing:-.3px;margin:0}.auth-subtitle{color:#6b7280;font-size:14px;margin-top:6px}.auth-error{background:#fff1f2;border:1px solid #fecdd3;border-radius:12px;color:#9f1239;font-size:13px;line-height:1.35;margin-top:14px;padding:10px 12px}.auth-form{margin-top:22px}.auth-field{margin-bottom:14px}.auth-field-tight{margin-bottom:8px}.auth-input{align-items:center;background:#fbfbfc;border:1px solid #eef0f4;border-radius:999px;box-shadow:0 1px 0 #00000005;display:flex;gap:10px;padding:12px 14px}.auth-input:focus-within{background:#fff;border-color:#0b78ff73;box-shadow:0 0 0 4px #0b78ff1f}.auth-input-icon{align-items:center;color:#11182759;display:inline-flex;justify-content:center}.auth-input input{background:#0000;border:0;color:#111827;font-size:14px;outline:none;width:100%}.auth-input input::placeholder{color:#11182759}.auth-row{align-items:center;display:flex;justify-content:space-between;margin:10px 0 16px}.auth-checkbox{align-items:center;color:#6b7280;display:inline-flex;font-size:13px;gap:10px;-webkit-user-select:none;user-select:none}.auth-checkbox input[type=checkbox]{accent-color:#0b78ff;border-radius:4px;height:16px;width:16px}.auth-primary{background:linear-gradient(180deg,#0b78ff,#0b5de3);border:0;border-radius:999px;box-shadow:0 12px 30px #0b78ff47;color:#fff;cursor:pointer;font-weight:800;letter-spacing:.2px;padding:12px 14px;width:100%}.auth-primary:hover{filter:brightness(.98)}.auth-link{background:#0000;border:0;color:#6b7280;cursor:default;font-size:13px;margin-top:12px;width:100%}.auth-link[disabled]{opacity:.85}.auth-switch{color:#6b7280;font-size:13px;margin-top:16px;text-align:center}.auth-link-inline{background:#0000;border:0;color:#0b78ff;cursor:pointer;font-weight:800;padding:0}.auth-link-inline:hover{text-decoration:underline}.auth-footer{color:#9ca3af;font-size:11px;margin-top:26px;text-align:center}.auth-panel .input-group label{color:#374151;display:block;font-size:12px;font-weight:700;margin-bottom:8px}.auth-panel .user-type label{color:#374151;font-size:13px;font-weight:600;gap:8px}.auth-panel .user-type input{accent-color:#0b78ff}@media (max-width:920px){.auth-card{grid-template-columns:1fr;min-height:0;min-height:auto}.auth-hero{min-height:260px}.auth-hero-inner{padding:36px 28px}.auth-panel{padding:40px 22px}}