@media(pointer:coarse){.btn,.btn-sm{min-height:44px}input,select,textarea{font-size:16px}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--gray-50)}.flats-page .flats-section{margin-bottom:var(--space-lg)}.flats-page .flats-section h2{margin:0 0 var(--space-sm);font-size:20px}.flats-page .error-message{margin-bottom:var(--space-md)}.flats-page .flats-columns code{overflow-wrap:anywhere}.flats-page .flats-done{display:block;margin:0 0 var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md)}.flats-page .flats-edit-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.flats-page .flats-preview{margin-top:var(--space-md)}.flats-page .flats-refused{color:var(--status-error);font-weight:var(--font-weight-medium)}.flats-page .flats-warning{color:var(--status-warning)}.flats-page .flats-editing td{background:var(--color-green-5)}.flats-page .flats-edit-form{display:flex;flex-direction:column;gap:var(--space-sm)}.flats-page .flats-edit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:0 var(--space-md)}.flats-page .flats-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.home-page .home-modules{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-md)}.home-page .home-module h2{margin:0 0 var(--space-xs);font-size:18px}.home-page .home-module p{margin:0 0 var(--space-sm);color:var(--gray-600);font-size:15px}.home-page .home-module-live{display:block;color:inherit;text-decoration:none;border-color:var(--color-green-20)}.home-page .home-module-live:hover{box-shadow:var(--shadow-md)}.home-page .home-admin{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-lg)}.home-page .home-today{margin:0 0 var(--space-lg);color:var(--gray-500)}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-md)}.login-page .card{width:100%;max-width:400px}.login-page h1{margin:0 0 var(--space-xs);font-size:28px;color:var(--color-green)}.login-page .login-subtitle{margin:0 0 var(--space-lg);color:var(--gray-500)}.login-page .login-submit{width:100%;margin-top:var(--space-sm)}.login-page .error-message{margin-bottom:var(--space-md)}.month-page.page{max-width:1180px}.month-page .error-message{margin-bottom:var(--space-md)}.month-page .month-title{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm) var(--space-md);margin:var(--space-xs) 0 var(--space-md)}.month-page .month-title h1{margin:0;font-size:28px;font-weight:var(--font-weight-semibold)}.month-page .month-nav{display:flex;gap:var(--space-sm)}.month-page .month-status{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--space-md) var(--space-xl);margin-bottom:var(--space-lg)}.month-page .month-total{margin:2px 0 var(--space-sm);font-size:34px;font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.month-page .month-facts{display:flex;gap:var(--space-xl);margin:0}.month-page .month-facts dt{color:var(--gray-500);font-size:14px}.month-page .month-facts dd{margin:2px 0 0;font-size:18px;font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums}.month-page .month-recalc{justify-self:end}.month-page .month-missing{grid-column:1 / -1;padding:var(--space-md);border-radius:var(--radius-md);background:var(--status-warning-bg);color:var(--gray-900)}.month-page .month-missing ul{margin:var(--space-sm) 0;padding-left:var(--space-lg);color:var(--status-warning)}.month-page .month-missing-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.month-page .month-missing .muted{margin:var(--space-sm) 0 0}.month-page .month-link{padding:0;border:none;background:none;color:var(--color-green);font:inherit;font-weight:var(--font-weight-medium);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.month-page .month-tabs{position:sticky;top:0;z-index:2;display:flex;gap:var(--space-xs);margin:0 0 var(--space-lg);padding:var(--space-xs);border-radius:var(--radius-md);background:var(--gray-100);box-shadow:0 0 0 var(--space-sm) var(--gray-50)}.month-page .month-tab{flex:1 1 0;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);min-height:44px;padding:var(--space-xs) var(--space-sm);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--gray-600);font-family:var(--font-family);font-size:16px;font-weight:var(--font-weight-medium);cursor:pointer}.month-page .month-tab:hover{color:var(--gray-900)}.month-page .month-tab-active{background:var(--color-white);color:var(--color-green);box-shadow:var(--shadow-sm)}.month-page .month-tab:focus-visible{outline:2px solid var(--color-green);outline-offset:2px}.month-page .month-tab-count,.month-page .month-tab-flag{min-width:22px;padding:0 6px;border-radius:var(--radius-full);font-size:13px;line-height:22px;font-variant-numeric:tabular-nums}.month-page .month-tab-count{background:var(--gray-200);color:var(--gray-600)}.month-page .month-tab-flag{background:var(--status-warning-bg);color:var(--status-warning)}.month-page .month-tab-flag-bad{background:var(--status-error-bg);color:var(--status-error)}.month-page .month-block{margin-bottom:var(--space-xl)}.month-page .month-block-head{margin-bottom:var(--space-sm)}.month-page .month-block-head h2{margin:0;font-size:20px;font-weight:var(--font-weight-semibold)}.month-page .month-block-head p{margin:var(--space-xs) 0 0}.month-page .month-table-card{padding:0}.month-page .month-bills th[scope=col]{padding-top:var(--space-md);vertical-align:bottom}.month-page .month-bills .month-col-head{max-width:110px;white-space:normal}.month-page .month-bills thead th:first-child,.month-page .month-bills tbody th,.month-page .month-bills tfoot th{padding-left:var(--space-md)}.month-page .month-bills thead th:last-child,.month-page .month-bills td:last-child{padding-right:var(--space-md)}.month-page .month-bill-row>th,.month-page .month-bill-row>td{vertical-align:middle}.month-page .month-bill-row:hover>*{background:var(--color-green-5)}.month-page .month-unit{display:flex;align-items:center;gap:var(--space-sm);min-height:44px;padding:0;border:none;background:none;color:var(--gray-900);font:inherit;text-align:left;cursor:pointer}.month-page .month-chevron{display:inline-flex;color:var(--gray-500);transition:transform var(--transition-fast)}.month-page .month-unit[aria-expanded=true] .month-chevron{transform:rotate(90deg)}.month-page .month-unit-name{display:block;font-weight:var(--font-weight-semibold);white-space:nowrap}.month-page .month-unit-owner{display:block;color:var(--gray-500);font-size:13px;font-weight:var(--font-weight-regular)}.month-page .month-bill-total{font-weight:var(--font-weight-semibold)}.month-page .month-bill-open .month-bill-row>*{background:var(--color-green-5);border-bottom-color:transparent}.month-page .month-bill-detail td{padding:0 var(--space-md) var(--space-md);background:var(--color-green-5)}.month-page .month-bill-meta{margin-bottom:var(--space-sm);font-size:14px}.month-page .month-lines{margin:0;padding:0;list-style:none;border-radius:var(--radius-md);background:var(--color-white)}.month-page .month-lines li{display:grid;grid-template-columns:minmax(140px,1fr) minmax(0,2fr) auto;gap:var(--space-xs) var(--space-md);align-items:baseline;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--gray-100)}.month-page .month-line-working{color:var(--gray-500);font-size:14px;overflow-wrap:anywhere}.month-page .month-line-amount{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.month-page .month-lines-total{font-weight:var(--font-weight-semibold);border-bottom:none}.month-page .month-bills tfoot th,.month-page .month-bills tfoot td{border-top:2px solid var(--gray-300);border-bottom:none;font-weight:var(--font-weight-semibold);color:var(--gray-900)}.month-page .month-unset{margin-top:var(--space-sm);color:var(--status-warning)}.month-page .month-rates,.month-page .month-passing,.month-page .month-metered{margin:0;padding:0 var(--space-md);list-style:none}.month-page .month-rates li,.month-page .month-passing li,.month-page .month-metered li{border-bottom:1px solid var(--gray-100)}.month-page .month-rates li:last-child,.month-page .month-passing li:last-child,.month-page .month-metered li:last-child{border-bottom:none}.month-page .month-rates summary{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(150px,auto);align-items:center;gap:var(--space-md);min-height:52px;cursor:pointer;list-style:none}.month-page .month-rates summary::-webkit-details-marker{display:none}.month-page .month-rate-name{font-weight:var(--font-weight-medium)}.month-page .month-rate-rate{font-variant-numeric:tabular-nums;white-space:nowrap}.month-page .month-rate-cover{text-align:right}.month-page .month-rate-working{display:grid;gap:2px;padding:0 0 var(--space-md);font-size:14px;color:var(--gray-700);overflow-wrap:anywhere}.month-page .month-check{margin-bottom:var(--space-md);border-left:4px solid var(--status-warning)}.month-page .month-check-fail{border-left-color:var(--status-error)}.month-page .month-check h3{margin:0;font-size:17px;line-height:1.5}.month-page .month-check-code{display:inline-block;min-width:28px;color:var(--gray-500);font-weight:var(--font-weight-semibold)}.month-page .month-findings{margin:var(--space-sm) 0 0;padding-left:var(--space-lg)}.month-page .month-findings li{margin-bottom:var(--space-xs)}.month-page .month-check-fail .month-findings{color:var(--status-error)}.month-page .month-pass-line{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-sm);min-height:48px}.month-page .month-notes{padding-bottom:var(--space-sm);font-size:14px}.month-page .month-notes summary{display:inline-flex;align-items:center;min-height:36px;color:var(--gray-500);cursor:pointer}.month-page .month-notes ul{margin:0;padding-left:var(--space-lg);color:var(--gray-600)}.month-page .month-cost{margin-bottom:var(--space-md)}.month-page .month-cost-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.month-page .month-cost-head h3{margin:0;font-size:18px}.month-page .month-cost-basis{margin:2px 0 var(--space-md);font-size:14px}.month-page .month-quantity{max-width:360px}.month-page .month-items-head,.month-page .month-item{display:grid;grid-template-columns:minmax(0,1fr) 160px 44px;gap:var(--space-sm);align-items:center}.month-page .month-items-head{padding-bottom:var(--space-xs);color:var(--gray-500);font-size:13px}.month-page .month-items-head .num,.month-page .month-item input.num{text-align:right}.month-page .month-item{margin-bottom:var(--space-sm)}.month-page .month-item input,.month-page .month-quantity input,.month-page .month-readings input,.month-page .month-replaced-row input{width:100%;min-height:44px;padding:var(--space-xs) var(--space-sm);font-family:var(--font-family);font-size:16px;color:var(--gray-900);background:var(--color-white);border:1px solid var(--gray-300);border-radius:var(--radius-sm)}.month-page .month-item input:focus,.month-page .month-readings input:focus,.month-page .month-replaced-row input:focus{outline:2px solid var(--color-green-20);border-color:var(--color-green)}.month-page .month-icon-btn{min-width:44px;min-height:44px;padding:0}.month-page .month-cost-foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-md);margin-top:var(--space-xs)}.month-page .month-cost-total{margin-left:auto;font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.month-page .month-metered li{display:grid;gap:2px;padding:var(--space-sm) 0}.month-page .month-balance{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md);margin-bottom:var(--space-lg)}.month-page .month-balance>div{display:grid;gap:2px}.month-page .month-balance strong{font-size:18px;font-variant-numeric:tabular-nums}.month-page .month-bad{color:var(--status-error)}.month-page .month-meter-group{margin-bottom:var(--space-lg)}.month-page .month-meter-group h3{margin:0 0 var(--space-xs);font-size:17px}.month-page .month-meter-group>p{margin:0 0 var(--space-sm);font-size:14px}.month-page .month-readings th[scope=row]{padding-left:var(--space-md);vertical-align:middle;white-space:nowrap}.month-page .month-readings thead th:first-child{padding-left:var(--space-md)}.month-page .month-readings td,.month-page .month-readings thead th:last-child{padding-right:var(--space-md);vertical-align:middle}.month-page .month-readings td input{width:128px;text-align:right;font-variant-numeric:tabular-nums}.month-page .month-meter-name{display:block;font-weight:var(--font-weight-semibold);color:var(--gray-900)}.month-page .month-mult{display:block;color:var(--gray-500);font-size:13px;font-weight:var(--font-weight-regular)}.month-page .month-replaced-toggle{min-height:28px;font-size:13px;font-weight:var(--font-weight-regular)}.month-page .month-units{min-width:90px}.month-page .month-zero{display:block;color:var(--status-warning);font-size:12px}.month-page .month-replaced-row td{padding:0 var(--space-md) var(--space-md);background:var(--status-warning-bg)}.month-page .month-sticky-save{position:sticky;bottom:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);margin:0 calc(-1 * var(--space-md));padding:var(--space-md);background:var(--color-white);border-top:1px solid var(--gray-200)}@media(pointer:coarse){.month-page .month-link,.month-page .month-replaced-toggle{display:inline-flex;align-items:center;min-height:44px}.month-page .month-notes summary{min-height:44px}}@media(max-width:760px){.month-page .month-status{grid-template-columns:minmax(0,1fr);gap:var(--space-md)}.month-page .month-facts{justify-content:space-between;gap:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--gray-100)}.month-page .month-recalc{justify-self:start}.month-page .month-total{font-size:30px}.month-page .month-bills .month-col-head,.month-page .month-bills .month-col-area{display:none}.month-page .month-lines li{grid-template-columns:minmax(0,1fr) auto}.month-page .month-line-working{grid-column:1 / -1;grid-row:2}.month-page .month-rates summary{grid-template-columns:minmax(0,1fr) auto;padding:var(--space-sm) 0}.month-page .month-rate-cover{grid-column:1 / -1;text-align:left}.month-page .month-items-head,.month-page .month-item{grid-template-columns:minmax(0,1fr) 120px 44px}.month-page .month-balance{grid-template-columns:minmax(0,1fr);gap:var(--space-sm)}.month-page .month-balance>div{grid-template-columns:minmax(0,1fr) auto}.month-page .month-readings td input{width:96px}.month-page .month-tab{font-size:15px}}@media(max-width:400px){.month-page .month-tab{flex-direction:column;gap:2px;font-size:14px}}.setup-page .setup-section{margin-bottom:var(--space-lg)}.setup-page .setup-section h2{margin:0 0 var(--space-sm);font-size:20px}.setup-page .error-message{margin-bottom:var(--space-md)}.setup-page .setup-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0 var(--space-md)}.setup-page .setup-actions{display:flex;align-items:center;gap:var(--space-md)}.setup-page .setup-head{padding:var(--space-md) 0;border-top:1px solid var(--gray-200)}.setup-page .setup-head-title{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.setup-page .setup-head-title h3{margin:0;font-size:17px}.setup-page .setup-versions{margin:var(--space-sm) 0 0;padding-left:var(--space-lg);color:var(--gray-700)}.setup-page .setup-versions li{margin-bottom:var(--space-xs)}.setup-page .setup-add{margin-top:var(--space-md)}.setup-page .setup-add summary{list-style:none}.setup-page .setup-add summary::-webkit-details-marker{display:none}.setup-page .setup-version-form,.setup-page .setup-new-head{margin-top:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);background:var(--gray-50)}.setup-page .setup-new-head .setup-version-form{margin-top:0;padding:0}.setup-page .setup-exclusions{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);margin:0 0 var(--space-md);padding:var(--space-sm) var(--space-md);border:1px solid var(--gray-200);border-radius:var(--radius-md)}.setup-page .setup-check{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:44px}.society-page .card{max-width:560px}.society-page .error-message{margin-bottom:var(--space-md)}.society-page .society-actions{display:flex;align-items:center;gap:var(--space-md)}:root{--color-white: #ffffff;--color-green: #1d4d2c;--color-green-5: rgba(29, 77, 44, .05);--color-green-10: rgba(29, 77, 44, .1);--color-green-20: rgba(29, 77, 44, .2);--color-green-60: rgba(29, 77, 44, .6);--gray-50: #fafbfa;--gray-100: #f5f6f5;--gray-200: #e8eae8;--gray-300: #d1d5d2;--gray-400: #9ca39d;--gray-500: #6b746c;--gray-600: #4a524b;--gray-700: #363c37;--gray-800: #262a27;--gray-900: #1a1d1a;--status-success: var(--color-green);--status-success-bg: var(--color-green-10);--status-warning: #8b6914;--status-warning-bg: rgba(180, 130, 50, .12);--status-error: #9b2c2c;--status-error-bg: rgba(155, 44, 44, .1);--status-info: var(--gray-600);--status-info-bg: var(--gray-100);--font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", "Segoe UI", Roboto, sans-serif;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(29, 77, 44, .06);--shadow-md: 0 4px 12px rgba(29, 77, 44, .08);--transition-fast: .15s ease}.app{min-height:100vh;background:var(--gray-50);color:var(--gray-900);font-family:var(--font-family);-webkit-font-smoothing:antialiased;overflow-x:hidden}.page{max-width:960px;margin:0 auto;padding:var(--space-lg) var(--space-md)}.page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-lg)}.page-header h1{margin:0;font-size:28px;font-weight:var(--font-weight-semibold)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);min-height:48px;padding:var(--space-sm) var(--space-lg);font-family:var(--font-family);font-size:17px;font-weight:var(--font-weight-medium);line-height:1;border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;text-decoration:none;transition:background var(--transition-fast),color var(--transition-fast);touch-action:manipulation;-webkit-tap-highlight-color:transparent}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-green);color:var(--color-white)}.btn-primary:hover:not(:disabled){background:var(--gray-800)}.btn-outline,.btn-secondary{background:var(--color-white);color:var(--color-green);border-color:var(--color-green-20)}.btn-outline:hover:not(:disabled),.btn-secondary:hover:not(:disabled){background:var(--color-green-5)}.btn-danger{background:var(--status-error);color:var(--color-white)}.btn-sm{min-height:36px;padding:var(--space-xs) var(--space-md);font-size:15px}@media(pointer:coarse){.btn-sm{min-height:44px}}.card{background:var(--color-white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm)}.badge{display:inline-flex;align-items:center;padding:2px var(--space-sm);border-radius:var(--radius-full);font-size:13px;font-weight:var(--font-weight-medium);background:var(--gray-100);color:var(--gray-600)}.badge-success{background:var(--status-success-bg);color:var(--status-success)}.badge-solid{background:var(--color-green);color:var(--color-white)}.badge-warning{background:var(--status-warning-bg);color:var(--status-warning)}.badge-error{background:var(--status-error-bg);color:var(--status-error);font-weight:var(--font-weight-semibold)}.table-scroll{position:relative;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.data-table{width:100%;border-collapse:collapse;font-size:15px}.data-table th,.data-table td{padding:var(--space-sm);border-bottom:1px solid var(--gray-200);text-align:left;vertical-align:top}.data-table th{font-weight:var(--font-weight-semibold);color:var(--gray-600);white-space:nowrap}.data-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.muted{color:var(--gray-500)}.back-link{display:inline-flex;align-items:center;min-height:44px;color:var(--color-green);text-decoration:none;font-weight:var(--font-weight-medium)}.form-group{display:flex;flex-direction:column;gap:var(--space-xs);margin-bottom:var(--space-md)}.form-group label{font-size:15px;font-weight:var(--font-weight-medium);color:var(--gray-700)}.form-group input,.form-group select,.form-group textarea{min-height:48px;padding:var(--space-sm) var(--space-md);font-family:var(--font-family);font-size:16px;color:var(--gray-900);background:var(--color-white);border:1px solid var(--gray-300);border-radius:var(--radius-md)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:2px solid var(--color-green-20);border-color:var(--color-green)}.error-message{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:var(--status-error-bg);color:var(--status-error);font-size:15px}.loading-state{display:flex;align-items:center;justify-content:center;min-height:50vh;color:var(--gray-500)}
