@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--radius-xs: .125rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.flex{display:flex}.flex-wrap{flex-wrap:wrap}}:root{--gg-bg: #0A0E14;--gg-surface: #11161F;--gg-surface-2: #1A2130;--gg-ink: #E9EEF5;--gg-muted: #9AA7B8;--gg-faint: #5F6B7C;--gg-border: #232C3B;--gg-border-soft: rgba(255, 255, 255, .06);--gg-accent: #FFB224;--gg-accent-ink: #0A0E14;--gg-accent-bg: #FFB224;--gg-water: #3BC9E8;--gg-gas: #E8785C;--gg-success: #3DD68C;--gg-danger: #F0645A;--gg-warning: #FF9E3D;--gg-info: #5B9BFF;--gg-shadow-card: none;--gg-shadow-modal: 0 8px 24px rgba(0, 0, 0, .4);--gg-overlay: rgba(0, 0, 0, .6);--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px;--ease-out-quart: cubic-bezier(.16, 1, .3, 1);--sidebar-w: 240px}:root.light{--gg-bg: #F4F6F9;--gg-surface: #FFFFFF;--gg-surface-2: #EAEEF4;--gg-ink: #161C26;--gg-muted: #4E5A6B;--gg-faint: #7A8699;--gg-border: #DCE2EA;--gg-border-soft: rgba(16, 24, 40, .08);--gg-accent: #8A5A00;--gg-accent-ink: #161C26;--gg-accent-bg: #F5A623;--gg-water: #0E7C9B;--gg-gas: #B3471F;--gg-success: #0F9D58;--gg-danger: #C63A2E;--gg-warning: #B45309;--gg-info: #1D6FD1;--gg-shadow-card: 0 1px 2px rgba(16, 24, 40, .06);--gg-shadow-modal: 0 8px 24px rgba(16, 24, 40, .1);--gg-overlay: rgba(16, 24, 40, .4)}*,*:before,*:after{box-sizing:border-box}html{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;color:var(--gg-ink);background:var(--gg-bg);transition:background .15s var(--ease-out-quart),color .15s var(--ease-out-quart)}body{margin:0;min-height:100vh;background:var(--gg-bg);color:var(--gg-ink);font-size:15px;line-height:1.55}h1,h2,h3{text-wrap:balance;margin:0}p{text-wrap:pretty;max-width:75ch}a{color:var(--gg-accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer}.mono,.stat,.number,td.num,th.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--gg-accent);outline-offset:2px}.shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--gg-surface);border-right:1px solid var(--gg-border-soft);display:flex;flex-direction:column;padding:20px 12px;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 20px}.brand-mark{width:30px;height:30px;border-radius:8px;background:var(--gg-bg);border:1px solid var(--gg-border);display:flex;align-items:center;justify-content:center;color:var(--gg-accent);font-weight:600;font-size:14px}.brand-name{font-weight:600;font-size:15px;letter-spacing:-.01em}.nav{display:flex;flex-direction:column;gap:2px;flex:1}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--radius-sm);color:var(--gg-muted);font-size:13.5px;font-weight:500;text-decoration:none;transition:background .15s var(--ease-out-quart),color .15s var(--ease-out-quart)}.nav-item:hover{background:var(--gg-surface-2);color:var(--gg-ink);text-decoration:none}.nav-item.active{background:var(--gg-surface-2);color:var(--gg-ink)}.nav-item.active:before{content:"";width:3px;height:16px;border-radius:2px;background:var(--gg-accent);margin-left:-10px;margin-right:4px}.nav-item svg{width:17px;height:17px;flex-shrink:0}.nav-label{font-size:13px;font-weight:500}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--gg-border-soft);background:var(--gg-bg);position:sticky;top:0;z-index:20}.content{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:28px}.page-title{font-size:32px;font-weight:600;line-height:1.15;letter-spacing:-.02em;margin:0 0 4px}.page-sub{color:var(--gg-muted);font-size:14px;margin:0 0 24px}.section-title{font-size:18px;font-weight:600;letter-spacing:-.01em;margin:0 0 12px}.card{background:var(--gg-surface);border:1px solid var(--gg-border-soft);border-radius:var(--radius-md);padding:20px;box-shadow:var(--gg-shadow-card)}.card+.card{margin-top:16px}.grid-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:24px}.kpi-label{font-size:13px;color:var(--gg-muted);font-weight:500}.kpi-value{font-family:var(--font-mono);font-size:28px;font-weight:600;line-height:1.1;letter-spacing:-.01em;margin-top:6px;font-variant-numeric:tabular-nums}.kpi-delta{font-size:12.5px;font-weight:500;margin-top:8px;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.kpi-delta.up{color:var(--gg-success)}.kpi-delta.down{color:var(--gg-danger)}.kpi-delta.flat{color:var(--gg-faint)}.chart-box{width:100%;height:260px}.chart-box svg{width:100%;height:100%;display:block}.chart-grid-line{stroke:var(--gg-faint);stroke-dasharray:3 3;stroke-width:1;opacity:.35}.chart-axis-label{fill:var(--gg-faint);font-size:11px;font-family:var(--font-mono)}.bar{fill:var(--gg-accent);opacity:.9;border-radius:2px}.bar:hover{opacity:1}.bar.water{fill:var(--gg-water)}.bar.gas{fill:var(--gg-gas)}.bar.muted{fill:var(--gg-surface-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 16px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;border:1px solid transparent;transition:background .15s var(--ease-out-quart),border-color .15s var(--ease-out-quart),color .15s var(--ease-out-quart)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--gg-accent-bg);color:var(--gg-accent-ink)}.btn-primary:hover:not(:disabled){filter:brightness(1.06)}.btn-secondary{background:var(--gg-surface-2);color:var(--gg-ink);border-color:var(--gg-border-soft)}.btn-secondary:hover:not(:disabled){border-color:var(--gg-border)}.btn-danger{background:var(--gg-danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(1.08)}.btn-ghost{background:transparent;color:var(--gg-muted);border-color:transparent}.btn-ghost:hover:not(:disabled){color:var(--gg-ink);background:var(--gg-surface-2)}.btn-sm{padding:6px 12px;font-size:13px}.btn-icon{padding:8px;width:34px;height:34px}.input,select.input,textarea.input{width:100%;background:var(--gg-surface);border:1px solid var(--gg-border);border-radius:var(--radius-sm);padding:10px 12px;color:var(--gg-ink);font-size:14px;font-family:inherit;transition:border-color .15s var(--ease-out-quart)}.input:focus{outline:none;border-color:var(--gg-accent);box-shadow:0 0 0 2px var(--gg-accent)}@supports (color: color-mix(in lab,red,red)){.input:focus{box-shadow:0 0 0 2px color-mix(in srgb,var(--gg-accent) 20%,transparent)}}.input::placeholder{color:var(--gg-faint)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:12.5px;font-weight:500;color:var(--gg-muted)}.form-actions{display:flex;gap:10px;margin-top:18px}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:14px}table.data th{text-align:left;font-size:12px;font-weight:500;color:var(--gg-muted);padding:10px 12px;border-bottom:1px solid var(--gg-border-soft);letter-spacing:.02em;white-space:nowrap}table.data td{padding:11px 12px;border-bottom:1px solid var(--gg-border-soft);vertical-align:middle}table.data tbody tr{transition:background .12s var(--ease-out-quart)}table.data tbody tr:hover{background:var(--gg-surface-2)}table.data td.num,table.data th.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.row-actions{display:flex;gap:4px;justify-content:flex-end}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--radius-full);font-size:12px;font-weight:500;white-space:nowrap}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge-success{background:var(--gg-success);color:var(--gg-success)}@supports (color: color-mix(in lab,red,red)){.badge-success{background:color-mix(in srgb,var(--gg-success) 14%,transparent)}}.badge-danger{background:var(--gg-danger);color:var(--gg-danger)}@supports (color: color-mix(in lab,red,red)){.badge-danger{background:color-mix(in srgb,var(--gg-danger) 14%,transparent)}}.badge-warning{background:var(--gg-warning);color:var(--gg-warning)}@supports (color: color-mix(in lab,red,red)){.badge-warning{background:color-mix(in srgb,var(--gg-warning) 14%,transparent)}}.badge-info{background:var(--gg-info);color:var(--gg-info)}@supports (color: color-mix(in lab,red,red)){.badge-info{background:color-mix(in srgb,var(--gg-info) 14%,transparent)}}.badge-muted{background:var(--gg-surface-2);color:var(--gg-muted)}.badge-utility{background:transparent;border:1px solid var(--gg-border);color:var(--gg-muted)}.badge-electricity{color:var(--gg-accent)}.badge-water{color:var(--gg-water)}.badge-gas{color:var(--gg-gas)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:56px 24px;gap:8px}.empty-icon{font-size:34px;color:var(--gg-faint);margin-bottom:4px;font-family:var(--font-mono)}.empty-state h3{font-size:17px;font-weight:600}.empty-state p{color:var(--gg-muted);font-size:14px;margin:0 0 8px}.skeleton{background:var(--gg-surface-2);border-radius:var(--radius-sm);animation:gg-pulse 1.2s ease-in-out infinite}@keyframes gg-pulse{0%,to{opacity:1}50%{opacity:.55}}.modal-overlay{position:fixed;inset:0;background:var(--gg-overlay);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;animation:gg-fade .15s var(--ease-out-quart)}.modal{background:var(--gg-surface-2);border:1px solid var(--gg-border-soft);border-radius:var(--radius-lg);padding:24px;width:100%;max-width:480px;max-height:88vh;overflow-y:auto;box-shadow:var(--gg-shadow-modal);animation:gg-rise .2s var(--ease-out-quart)}.modal h3{font-size:18px;font-weight:600;margin-bottom:16px}.modal-close{position:absolute;top:14px;right:14px;background:none;border:none;color:var(--gg-muted);font-size:18px;padding:4px 8px;border-radius:var(--radius-xs)}.modal-close:hover{color:var(--gg-ink);background:var(--gg-surface)}@keyframes gg-fade{0%{opacity:0}to{opacity:1}}@keyframes gg-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast-container{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:200}.toast{background:var(--gg-surface-2);border:1px solid var(--gg-border-soft);border-left:3px solid var(--gg-info);border-radius:var(--radius-sm);padding:11px 16px;font-size:13.5px;min-width:260px;max-width:380px;box-shadow:var(--gg-shadow-modal);animation:gg-rise .2s var(--ease-out-quart)}.toast.success{border-left-color:var(--gg-success)}.toast.error{border-left-color:var(--gg-danger)}.toast.info{border-left-color:var(--gg-info)}.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--gg-bg)}.auth-card{width:100%;max-width:400px;background:var(--gg-surface);border:1px solid var(--gg-border-soft);border-radius:var(--radius-lg);padding:32px;box-shadow:var(--gg-shadow-card)}.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:24px}.auth-title{font-size:22px;font-weight:600;letter-spacing:-.02em;margin-bottom:4px}.auth-sub{color:var(--gg-muted);font-size:14px;margin-bottom:24px}.auth-switch{text-align:center;font-size:13.5px;color:var(--gg-muted);margin-top:20px}.auth-demo{margin-top:20px;padding:12px 14px;border:1px dashed var(--gg-border-soft);border-radius:var(--radius-md);background:var(--gg-surface-2);font-size:13px;color:var(--gg-muted);text-align:center;line-height:1.7}.auth-demo code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;color:var(--gg-ink);background:var(--gg-surface);padding:2px 7px;border-radius:6px}.meter-utility{width:4px;border-radius:2px;align-self:stretch}.meter-utility.electricity{background:var(--gg-accent)}.meter-utility.water{background:var(--gg-water)}.meter-utility.gas{background:var(--gg-gas)}.progress-track{height:8px;border-radius:var(--radius-full);background:var(--gg-surface-2);overflow:hidden}.progress-fill{height:100%;border-radius:var(--radius-full);transition:width .3s var(--ease-out-quart)}.progress-fill.ok{background:var(--gg-success)}.progress-fill.warn{background:var(--gg-warning)}.progress-fill.over{background:var(--gg-danger)}.chart-path{stroke-dasharray:1200;stroke-dashoffset:1200;animation:gg-draw .6s var(--ease-out-quart) forwards}@keyframes gg-draw{to{stroke-dashoffset:0}}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;padding-top:14px;font-size:13px;color:var(--gg-muted)}@media(max-width:767px){.shell{flex-direction:column}.sidebar{width:100%;height:auto;position:static;flex-direction:row;align-items:center;padding:10px 16px;border-right:none;border-bottom:1px solid var(--gg-border-soft);overflow-x:auto}.sidebar-brand{padding:0 12px 0 0}.nav{flex-direction:row;gap:2px;overflow-x:auto}.nav-item{padding:8px 10px;white-space:nowrap}.nav-item.active:before{display:none}.nav-label{display:none}.content{padding:18px}.topbar{padding:0 18px}.page-title{font-size:26px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.chart-path{stroke-dashoffset:0}}
