@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(./be-vietnam-pro-vietnamese-400-normal-CRcqvyg1.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:400;src:url(./be-vietnam-pro-latin-400-normal-PpnXBOrz.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(./be-vietnam-pro-vietnamese-500-normal-DREgrEoJ.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:500;src:url(./be-vietnam-pro-latin-500-normal-B6LVzGNe.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(./be-vietnam-pro-vietnamese-600-normal-nyU-ZL2p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:600;src:url(./be-vietnam-pro-latin-600-normal-BZDkUTrt.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(./be-vietnam-pro-vietnamese-700-normal-Csr0PCuG.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-display:swap;font-weight:700;src:url(./be-vietnam-pro-latin-700-normal-DlW1Zbsh.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--primary-light:#0f766e;--primary-dark:#5eead4;--primary:var(--primary-light);--on-primary:#fff;--primary-container:color-mix(in oklab, var(--primary) 14%, #fff);--on-primary-container:color-mix(in oklab, var(--primary) 72%, #000);--bg:color-mix(in oklab, var(--primary) 4%, #f6f7f9);--surface:#fff;--surface-2:color-mix(in oklab, var(--primary) 5%, #f2f4f6);--surface-3:color-mix(in oklab, var(--primary) 9%, #e9edf0);--text:#141a21;--muted:#5b6573;--border:color-mix(in oklab, var(--primary) 6%, #e1e5ea);--ok:#15803d;--bad:#c62828;--warn:#b45309;--ok-bg:#dcf5e4;--bad-bg:#fde4e4;--warn-bg:#fdefd2;--r-sm:10px;--r-md:14px;--r-lg:20px;--r-xl:28px;--r-input:12px;--radius:var(--r-lg);--shadow:0 1px 2px #1018280a, 0 1px 3px #1018280a;--shadow-lg:0 12px 32px #10182824, 0 2px 6px #1018280f;--nav-h:76px;--ease:cubic-bezier(.2, 0, 0, 1);--font:"Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--primary:var(--primary-dark);--on-primary:#06201c;--primary-container:color-mix(in oklab, var(--primary) 22%, #10151b);--on-primary-container:color-mix(in oklab, var(--primary) 70%, #fff);--bg:color-mix(in oklab, var(--primary) 3%, #0d1116);--surface:color-mix(in oklab, var(--primary) 4%, #151a21);--surface-2:color-mix(in oklab, var(--primary) 6%, #1b2129);--surface-3:color-mix(in oklab, var(--primary) 9%, #242b34);--text:#e6eaef;--muted:#9aa5b3;--border:color-mix(in oklab, var(--primary) 6%, #2a313b);--ok:#5fd68a;--bad:#ff8a80;--warn:#f6c35b;--ok-bg:#173a26;--bad-bg:#44201f;--warn-bg:#3d2f12;--shadow:none;--shadow-lg:0 16px 40px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--primary:var(--primary-dark);--on-primary:#06201c;--primary-container:color-mix(in oklab, var(--primary) 22%, #10151b);--on-primary-container:color-mix(in oklab, var(--primary) 70%, #fff);--bg:color-mix(in oklab, var(--primary) 3%, #0d1116);--surface:color-mix(in oklab, var(--primary) 4%, #151a21);--surface-2:color-mix(in oklab, var(--primary) 6%, #1b2129);--surface-3:color-mix(in oklab, var(--primary) 9%, #242b34);--text:#e6eaef;--muted:#9aa5b3;--border:color-mix(in oklab, var(--primary) 6%, #2a313b);--ok:#5fd68a;--bad:#ff8a80;--warn:#f6c35b;--ok-bg:#173a26;--bad-bg:#44201f;--warn-bg:#3d2f12;--shadow:none;--shadow-lg:0 16px 40px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font:400 15px/1.55 var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0}a{color:var(--primary);text-decoration:none}h1,h2,h3{letter-spacing:-.01em;margin:0;line-height:1.25}h1{letter-spacing:-.025em;font-size:1.75rem;font-weight:700}h2{align-items:center;gap:10px;margin-bottom:14px;font-size:1.05rem;font-weight:650;display:flex}h3{align-items:center;gap:8px;font-size:.95rem;font-weight:650;display:flex}h2>svg{background:var(--primary-container);width:34px;height:34px;color:var(--on-primary-container);border-radius:12px;flex-shrink:0;padding:8px}h3>svg{width:18px;height:18px;color:var(--primary)}.ico-inline{vertical-align:-.16em;width:1.05em;height:1.05em}input,select,textarea,button{font:inherit;color:inherit}kbd{border:1px solid var(--border);background:var(--surface);border-bottom-width:2px;border-radius:6px;padding:0 5px;font-size:.8em}::selection{background:var(--primary-container)}.shell{min-height:100vh;display:flex}.sidebar{background:var(--bg);z-index:40;flex-direction:column;flex-shrink:0;gap:2px;width:248px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.02em;align-items:center;gap:12px;padding:4px 12px 22px;font-size:1.2rem;font-weight:700;display:flex}.brand img{width:36px;height:36px}.nav-item{height:52px;color:var(--muted);transition:background .2s var(--ease), color .2s var(--ease);border-radius:999px;align-items:center;gap:12px;padding:0 16px 0 6px;font-weight:600;display:flex}.nav-pill{width:44px;height:36px;transition:background .25s var(--ease);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.nav-icon{width:22px;height:22px}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--primary-container);color:var(--on-primary-container)}.content{flex:1;min-width:0;max-width:1120px;margin:0 auto;padding:28px 36px 56px}@media (width<=760px){.sidebar{width:auto;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding:8px 4px calc(8px + env(safe-area-inset-bottom));background:color-mix(in oklab, var(--surface-2) 88%, transparent);-webkit-backdrop-filter:blur(16px)saturate(1.4);border-top:1px solid var(--border);z-index:50;flex-direction:row;gap:0;position:fixed;inset:auto 0 0}.brand{display:none}.nav-item{border-radius:0;flex-direction:column;flex:1;justify-content:center;gap:4px;height:auto;padding:0;font-size:.68rem;background:0 0!important}.nav-pill{width:56px;height:32px}.nav-item.active{color:var(--text)}.nav-item.active .nav-pill{background:var(--primary-container);color:var(--on-primary-container)}.content{padding:18px 16px calc(var(--nav-h) + 36px + env(safe-area-inset-bottom))}h1{font-size:1.5rem}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:22px;display:flex}.page-tools{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.back{align-items:center;gap:2px;margin-bottom:6px;font-size:.88rem;font-weight:600;display:inline-flex}.period{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:2px;padding:3px;font-weight:650;display:flex}.period span{text-align:center;min-width:124px}.house-toggle{max-width:100%;box-shadow:var(--shadow);flex-wrap:wrap}.house-toggle button{align-items:center;gap:6px;max-width:220px;display:inline-flex}.house-toggle button span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.house-toggle button svg{width:16px;height:16px;color:var(--primary);flex:none}.house-toggle button.active{font-weight:700}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);margin-bottom:16px;padding:20px}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;margin-bottom:14px;display:flex}.card-head h2{margin:0}.grid-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start;gap:16px;display:grid}.grid-2>.card{margin-bottom:0}.grid-2+.card,.grid-2+.grid-2,.grid-2+section{margin-top:16px}.btn{background:var(--surface-3);height:42px;color:var(--text);cursor:pointer;white-space:nowrap;transition:background .2s var(--ease), box-shadow .2s var(--ease), transform .12s var(--ease);border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:.92rem;font-weight:600;display:inline-flex}.btn svg{width:18px;height:18px}.btn:hover{background:color-mix(in oklab, var(--surface-3) 85%, var(--text))}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:default;transform:none}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover{background:color-mix(in oklab, var(--primary) 88%, #000);box-shadow:0 2px 8px color-mix(in oklab, var(--primary) 35%, transparent)}.btn-danger{background:var(--bad);color:#fff}.btn-danger-ghost{color:var(--bad);background:0 0}.btn-danger-ghost:hover{background:var(--bad-bg)}.btn-sm{height:34px;padding:0 14px;font-size:.84rem}.btn-sm svg{width:16px;height:16px}.btn-lg{height:52px;padding:0 28px;font-size:1rem}.btn-block{width:100%}.icon-btn{cursor:pointer;width:36px;height:36px;color:var(--muted);transition:background .2s var(--ease);background:0 0;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:1.15rem;display:inline-flex}.icon-btn svg{width:18px;height:18px}.icon-btn:hover{background:var(--surface-3);color:var(--text)}.link-btn{color:var(--primary);cursor:pointer;background:0 0;border:none;padding:0;font-weight:600}.badge{background:var(--surface-3);height:24px;color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;margin-left:6px;padding:0 10px;font-size:.74rem;font-weight:650;display:inline-flex}.badge-ok{background:var(--ok-bg);color:var(--ok)}.badge-bad{background:var(--bad-bg);color:var(--bad)}.badge-warn{background:var(--warn-bg);color:var(--warn)}.chips{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:18px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);border-radius:var(--r-sm);cursor:pointer;height:34px;color:var(--muted);transition:background .2s var(--ease);padding:0 14px;font-size:.86rem;font-weight:600}.chip:hover{background:var(--surface-2)}.chip.active{background:var(--primary-container);color:var(--on-primary-container);border-color:#0000}.segmented{background:var(--surface-3);border-radius:999px;gap:2px;padding:4px;display:inline-flex}.segmented button{cursor:pointer;height:36px;color:var(--muted);transition:background .2s var(--ease);background:0 0;border:none;border-radius:999px;padding:0 16px;font-weight:600}.segmented button.active{background:var(--surface);box-shadow:var(--shadow);color:var(--text)}.ok{color:var(--ok)}.bad{color:var(--bad)}.warn{color:var(--warn)}.muted{color:var(--muted)}.small{font-size:.84rem}.block{display:block}.nowrap{white-space:nowrap}.center{text-align:center;justify-content:center}.right{text-align:right}.mt{margin-top:14px}.row{align-items:center;display:flex}.gap{gap:12px}.gap-sm{gap:6px}.wrap{flex-wrap:wrap}.row.gap>.field{flex:1;min-width:0}.row.gap.wrap>.field{flex:200px}.form>.field>.money-input,.form>.field>.stepper,.row.gap>.field:only-child>.money-input{max-width:240px}.form>.field>.num-input,.row.gap>.field:only-child>.num-input{max-width:160px}.divider{background:var(--border);height:1px;margin:18px 0}.list{margin:0;padding:0;list-style:none}.list>li+li{border-top:1px solid var(--border)}.list-row{border-radius:var(--r-sm);color:var(--text);justify-content:space-between;align-items:center;gap:12px;margin:0 -8px;padding:12px 8px;display:flex}a.list-row:hover{background:var(--surface-2)}.kv{grid-template-columns:max-content 1fr;gap:8px 18px;margin:0;display:grid}.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:500}.form{flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--muted);letter-spacing:.01em;font-size:.8rem;font-weight:650}.field-hint{color:var(--muted);font-size:.78rem}.field-error{color:var(--bad);font-size:.78rem}.field input[aria-invalid=true]{border-color:var(--bad)}input,select,textarea{border:1px solid color-mix(in oklab, var(--border) 70%, var(--muted));background-color:var(--surface);border-radius:var(--r-input);width:100%;min-height:44px;transition:border-color .15s var(--ease), box-shadow .15s var(--ease);padding:10px 14px}select{appearance:none;text-overflow:ellipsis;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a94a3' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:18px 18px;padding-right:40px}select:disabled{cursor:default;opacity:.6}input:hover,select:hover,textarea:hover{border-color:var(--muted)}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in oklab, var(--primary) 22%, transparent);outline:none}.money-input{align-items:center;display:flex;position:relative}.money-input input{text-align:right;font-variant-numeric:tabular-nums;padding-right:30px;font-weight:600}.money-input span{color:var(--muted);pointer-events:none;position:absolute;right:14px}.stepper{border:1px solid color-mix(in oklab, var(--border) 70%, var(--muted));background:var(--surface);border-radius:12px;height:44px;display:flex;overflow:hidden}.stepper input{text-align:center;border:none;border-radius:0;min-width:0;min-height:0;font-weight:650;box-shadow:none!important}.stepper button{background:var(--surface-2);cursor:pointer;border:none;width:44px;font-size:1.2rem}.stepper button:hover{background:var(--surface-3)}.form-actions{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.form-actions.spread{justify-content:space-between}.modal-backdrop{z-index:100;animation:fade-in .2s var(--ease);background:#0a0e146b;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--r-xl);width:100%;max-width:500px;max-height:calc(100vh - 32px);box-shadow:var(--shadow-lg);animation:pop-in .25s var(--ease);overflow:auto}.modal-wide{max-width:760px}.modal-head{justify-content:space-between;align-items:center;padding:22px 22px 0 24px;display:flex}.modal-head h2{margin:0;font-size:1.25rem}.modal-body{padding:18px 24px 24px}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px)scale(.98)}}@media (width<=560px){.modal-backdrop{align-items:flex-end;padding:0}.modal{border-radius:var(--r-xl) var(--r-xl) 0 0;max-height:94vh;animation:sheet-in .3s var(--ease)}.modal:before{content:"";background:var(--border);border-radius:999px;width:36px;height:4px;margin:10px auto 0;display:block}.modal-head{padding:10px 16px 0 20px}.modal-body{padding:14px 20px 24px}@keyframes sheet-in{0%{opacity:0;transform:translateY(40%)}}}.toast{color:#eef1f4;z-index:200;box-shadow:var(--shadow-lg);max-width:calc(100vw - 32px);animation:toast-in .22s var(--ease);background:#1d232b;border-radius:14px;padding:12px 20px;font-weight:500;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.toast-error{background:var(--bad);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}}@media (width<=760px){.toast{bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom))}}.empty{text-align:center;color:var(--muted);padding:56px 16px}.empty.small{padding:16px}.empty-icon{background:var(--primary-container);width:72px;height:72px;color:var(--on-primary-container);border-radius:24px;justify-content:center;align-items:center;margin-bottom:14px;display:inline-flex}.empty-icon svg{width:34px;height:34px}.empty h3{color:var(--text);justify-content:center;margin-bottom:8px;font-size:1.15rem}.empty .btn{margin-top:10px}.loading{text-align:center;color:var(--muted);padding:56px}.callout{border-radius:var(--r-lg);background:var(--primary-container);color:var(--on-primary-container);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:14px 18px;display:flex}.callout-bad{background:var(--bad-bg);color:var(--text)}.callout ul{margin:6px 0 0;padding-left:20px}.stats{grid-template-columns:1.3fr 1fr 1fr 1fr;gap:12px;margin-bottom:16px;display:grid}@media (width<=900px){.stats{grid-template-columns:repeat(2,1fr)}}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);min-width:0;padding:18px}.stat-hero{background:var(--primary);color:var(--on-primary);border-color:#0000}:root[data-theme=dark] .stat-hero{background:var(--primary-container);--on-primary:var(--on-primary-container)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .stat-hero{background:var(--primary-container);--on-primary:var(--on-primary-container)}}.stat-hero .stat-label,.stat-hero .stat-sub{color:color-mix(in oklab, var(--on-primary) 78%, transparent)}.stat-hero .stat-icon{background:color-mix(in oklab, var(--on-primary) 18%, transparent);color:var(--on-primary)}.stat-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.stat-icon{background:var(--primary-container);width:36px;height:36px;color:var(--on-primary-container);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.stat-icon svg{width:19px;height:19px}.stat-icon.ok-tone{background:var(--ok-bg);color:var(--ok)}.stat-icon.bad-tone{background:var(--bad-bg);color:var(--bad)}.stat-label{color:var(--muted);font-size:.84rem;font-weight:600}.stat-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:10px 0 6px;font-size:1.75rem;font-weight:700;line-height:1.15}.stat-value small{color:var(--muted);font-size:.95rem;font-weight:500}.stat-sub{color:var(--muted);font-size:.78rem}.progress{background:var(--surface-3);border-radius:999px;height:8px;margin-top:6px;overflow:hidden}.progress div{background:var(--ok);border-radius:inherit;height:100%;transition:width .6s var(--ease)}@media (width<=480px){.stat{padding:14px}.stat-value{font-size:1.3rem}}.room-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.room-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);color:var(--text);box-shadow:var(--shadow);transition:transform .2s var(--ease), box-shadow .2s var(--ease), border-color .2s var(--ease);flex-direction:column;gap:4px;padding:16px 16px 16px 20px;display:flex;position:relative;overflow:hidden}.room-card:before{content:"";background:var(--primary);border-radius:0 4px 4px 0;width:4px;position:absolute;top:14px;bottom:14px;left:0}.room-card:hover{box-shadow:var(--shadow-lg);border-color:color-mix(in oklab, var(--primary) 30%, var(--border));transform:translateY(-2px)}.room-card.vacant{background:var(--surface-2);box-shadow:none}.room-card.vacant:before{background:var(--border)}.room-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.room-name{letter-spacing:-.02em;font-size:1.15rem;font-weight:700}.room-tenant{font-weight:600}.vacant .room-tenant{color:var(--muted);font-weight:500}.room-meta{color:var(--muted);font-size:.82rem}.hint{margin:-8px 0 12px}.readings{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.reading-head,.reading-row{grid-template-columns:minmax(140px,1fr) 2fr 2fr;align-items:center;gap:12px;padding:10px 16px;display:grid}.reading-head{background:var(--surface-2);color:var(--muted);font-size:.8rem;font-weight:600}.reading-row+.reading-row{border-top:1px solid var(--border)}.reading-row.has-invoice{background:color-mix(in srgb, var(--ok-bg) 35%, var(--surface))}.reading-room{flex-direction:column;min-width:0;line-height:1.3;display:flex}.reading-room small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.reading-status{min-height:1.2em}.reading-cell{align-items:center;gap:6px;display:flex}.cell-label{display:none}.reading-input{text-align:right;font-variant-numeric:tabular-nums;width:92px;min-width:0;padding:8px 10px}.reading-input:not([data-old]){border-color:color-mix(in srgb, var(--primary) 45%, var(--border));font-weight:700}.reading-input[data-old]{background:var(--surface-2);color:var(--muted)}.arrow{color:var(--muted)}.usage{text-align:right;font-variant-numeric:tabular-nums;min-width:52px;font-weight:600}@media (width<=760px){.reading-head{display:none}.reading-row{grid-template-columns:1fr;gap:8px}.reading-room{flex-direction:row;align-items:baseline;gap:8px}.reading-status{margin-left:auto}.cell-label{width:22px;display:inline}.reading-cell{min-width:0}.reading-input{flex:1 1 0;width:0}.usage{min-width:40px}}.sticky-actions{background:linear-gradient(transparent, var(--bg) 30%);justify-content:space-between;align-items:center;gap:12px;margin-top:8px;padding:14px 0;display:flex;position:sticky;bottom:0}@media (width<=760px){.sticky-actions{bottom:calc(var(--nav-h) + env(safe-area-inset-bottom))}}.summary-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);grid-template-columns:repeat(3,1fr);margin-bottom:14px;display:grid}.summary-bar>div{flex-direction:column;min-width:0;padding:12px 16px;display:flex}.summary-bar>div+div{border-left:1px solid var(--border)}.summary-bar small{color:var(--muted)}.summary-bar b{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:1.1rem}.invoice-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;display:grid}.invoice-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);box-shadow:var(--shadow);justify-content:space-between;gap:12px;padding:14px;display:flex}.invoice-item:hover{border-color:var(--primary)}.invoice-item .right b{font-variant-numeric:tabular-nums}.invoice-layout{grid-template-columns:minmax(0,440px) minmax(0,1fr);align-items:start;gap:24px;display:grid}@media (width<=860px){.invoice-layout{grid-template-columns:minmax(0,1fr)}}.sheet-wrap{border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;box-shadow:0 4px 24px #0f172a1f}.share-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.pay-form{margin-top:16px}.payments{margin-top:12px}.sheet{color:#0f172a;background:#fff;padding:22px 22px 18px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Noto Sans,sans-serif;font-size:14px}.sheet-head{text-align:center;border-bottom:2px dashed #cbd5e1;padding-bottom:14px}.sheet-house{font-size:16px;font-weight:700}.sheet-addr{color:#64748b;font-size:12px}.sheet-title{letter-spacing:.5px;color:var(--primary-light);margin-top:10px;font-size:17px;font-weight:800}.sheet-period{color:#475569}.sheet-room{justify-content:space-between;padding:12px 0 6px;font-size:15px;display:flex}.sheet-lines{border-collapse:collapse;width:100%}.sheet-lines td{vertical-align:top;border-bottom:1px solid #eef2f6;padding:7px 0}.sheet-lines .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;padding-left:12px}.sheet-detail{color:#64748b;font-size:12px}.sheet-debt td{color:#b91c1c}.sheet-total{font-variant-numeric:tabular-nums;justify-content:space-between;padding:12px 0 4px;font-size:19px;font-weight:800;display:flex}.sheet-paid{color:#475569;justify-content:space-between;font-size:13px;display:flex}.sheet-qr{border:1px solid #e2e8f0;border-radius:12px;align-items:center;gap:14px;margin-top:14px;padding:12px;font-size:12.5px;line-height:1.55;display:flex}.sheet-qr img{flex-shrink:0;width:132px;height:132px}.sheet-qr-title{color:var(--primary-light);font-size:13.5px;font-weight:700}.sheet-legal{text-align:center;color:#94a3b8;margin-top:10px;font-size:10px}.sheet-note{text-align:center;color:#64748b;margin-top:12px;font-size:12px;font-style:italic}.house-form .card,.house-form>.form-actions{margin-bottom:16px}.tiers{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.tier-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.tier-row .money-input{width:130px}.tier-upto{text-align:right;width:72px}.fee-add{grid-template-columns:1.4fr 1fr auto auto;gap:8px;margin-top:10px;display:grid}.fee-add select{width:auto}@media (width<=560px){.fee-add{grid-template-columns:1fr 1fr}}.fees .list-row .money-input{width:130px}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatch{border:3px solid var(--surface);cursor:pointer;border-radius:999px;outline:2px solid #0000;width:36px;height:36px}.swatch.active{outline-color:var(--text)}.auth-screen{justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.auth-card{flex-direction:column;gap:12px;width:100%;max-width:380px;padding:28px 24px;display:flex}.auth-card .logo-lg{align-self:center}.auth-card h1{text-align:center;margin:4px 0 0;font-size:1.4rem}.auth-card>p.muted{text-align:center;margin:0}.user-chip{background:var(--surface-2);font:inherit;color:var(--text);text-align:left;cursor:pointer;border:0;border-radius:16px;align-items:center;gap:10px;width:100%;margin-top:auto;padding:10px;display:flex}.user-chip small{color:var(--muted);display:block}.user-menu{z-index:60;background:var(--surface);border-radius:16px;width:240px;padding:6px;display:grid;position:fixed;bottom:84px;left:16px;box-shadow:0 12px 32px #00000038}.user-menu button{font:inherit;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;display:flex}.user-menu button:hover{background:var(--surface-2)}.user-menu svg{width:18px;height:18px}.house-fixed{background:var(--surface-2);border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-weight:600;display:inline-flex}@media (width<=760px){.user-chip{display:none}}.tabs{border-bottom:1px solid var(--border);scrollbar-width:none;gap:4px;margin-bottom:18px;display:flex;overflow-x:auto}.tabs button{height:48px;color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:12px 12px 0 0;align-items:center;gap:8px;padding:0 16px;font-weight:600;display:inline-flex;position:relative}.tabs button:hover{background:var(--surface-2)}.tabs button.active{color:var(--primary)}.tabs button.active:after{content:"";background:var(--primary);border-radius:3px 3px 0 0;height:3px;position:absolute;bottom:-1px;left:12px;right:12px}.push-right{margin-left:auto}.spread-row{flex-wrap:wrap;justify-content:space-between}.mb{margin-bottom:12px}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.92em}.pre{white-space:pre-line}.list-btn{text-align:left;cursor:pointer;width:calc(100% + 16px);font:inherit;background:0 0;border:none}.list-btn:hover{background:var(--surface-2)}.charges .list-row{padding:8px 2px}.total-row{border-top:2px solid var(--border);margin-top:2px}.block-badge{text-align:center;margin:4px 0 0;display:block}.check{cursor:pointer;align-items:center;gap:8px;margin-bottom:12px;font-size:.9rem;display:flex}.check input{width:auto;min-height:0}.room-link{color:var(--text)}.room-link:hover{color:var(--primary);text-decoration:underline}.vacant-row{background:var(--surface-2)}.wrap-seg{flex-wrap:wrap}details summary{cursor:pointer;font-size:.9rem}.meter-form{flex-direction:column;gap:10px;display:flex}.meter-form .reading-cell{max-width:420px}.meter-form .reading-input{flex:1 1 0;width:0}.cell-label.show{width:22px;display:inline}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:.9rem}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:6px 8px;font-size:.8rem;font-weight:600}.table td{border-bottom:1px solid var(--border);white-space:nowrap;padding:7px 8px}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table tr.current td{background:color-mix(in srgb, var(--primary) 8%, transparent)}.camera-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.camera-card{flex-direction:column;gap:10px;margin:0;display:flex}.camera-card .kv{gap:4px 12px}.checkout-asset select{width:auto}.checkout-asset .money-input{width:140px}.sheet-due{text-align:right;color:#b45309;padding-bottom:4px;font-size:13px}.avatar{color:#fff;letter-spacing:.5px;background:#64748b;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.avatar-male{background:#2563eb}.avatar-female{background:#db2777}.badge-primary{background:color-mix(in srgb, var(--primary) 14%, transparent);color:var(--primary);border-color:#0000}.badge-link{color:var(--text)}.badge-link:hover{border-color:var(--primary)}.badge+.badge,.row .badge{margin-left:0}.tab-count{background:var(--surface-2);border-radius:999px;min-width:20px;margin-left:4px;padding:0 6px;font-size:.75rem;display:inline-block}.search{background:var(--surface-2);border-color:#0000;max-width:460px;margin-bottom:18px}.people-groups .card{margin-bottom:12px}.people-group .card-head{margin-bottom:4px}.person-row.sub{padding-left:28px}.person-main{min-width:0}.person-hero{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.person-hero-text{flex-direction:column;gap:8px;min-width:0;display:flex}.person-hero h1{font-size:1.4rem}.photo-slots{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.photo-slot{aspect-ratio:4/3;border:2px dashed var(--border);text-align:center;color:var(--muted);background:var(--surface-2);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px;font-size:.8rem;display:flex}.photo-icon{font-size:1.6rem}.current-row{background:color-mix(in srgb, var(--primary) 8%, transparent)}.reserve-card{padding:8px 16px}.reserve-card .list-row{flex-wrap:wrap}@media (width<=560px){.person-row{flex-direction:column;align-items:flex-start;gap:4px}.person-row .right{text-align:left;align-items:center;gap:8px;padding-left:44px;display:flex}.person-row.sub{padding-left:16px}}.sub-section{border:1px solid var(--border);background:var(--surface-2);border-radius:12px;flex-direction:column;gap:8px;padding:12px;display:flex}.sub-section>.btn,.sub-section .row>.btn{align-self:flex-start}.sub-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.sub-head .stepper{width:130px}.line-row{align-items:center;gap:6px;display:grid}.occ-row{grid-template-columns:22px 1.5fr 1.15fr .85fr .9fr 1.1fr 32px}.veh-row{grid-template-columns:1fr 1.1fr 1.3fr .8fr 32px}.veh-head{padding:0 2px}.line-row input,.line-row select{background-color:var(--surface);min-width:0}.line-no{color:var(--muted);text-align:center;font-size:.8rem}@media (width<=640px){.occ-row{border-bottom:1px dashed var(--border);grid-template-columns:22px 1fr 1fr 32px;padding-bottom:8px}.occ-row>:first-child{grid-area:1/1}.occ-row>:nth-child(2){grid-area:1/2/2/4}.occ-row>:nth-child(7){grid-area:1/4}.occ-row>:nth-child(3){grid-area:2/2}.occ-row>:nth-child(4){grid-area:2/3}.occ-row>:nth-child(5){grid-area:3/2}.occ-row>:nth-child(6){grid-area:3/3}.veh-head{display:none}.veh-row{border-bottom:1px dashed var(--border);grid-template-columns:1fr 1fr 32px;padding-bottom:8px}.veh-row>:first-child{grid-area:1/1}.veh-row>:nth-child(2){grid-area:1/2}.veh-row>:nth-child(5){grid-area:1/3}.veh-row>:nth-child(3){grid-area:2/1}.veh-row>:nth-child(4){grid-area:2/2}}.vehicle-list{margin:4px 0 0;padding:0;font-size:.88rem;list-style:none}:root{--series-1:#2a78d6;--series-2:#eb6834;--hero-from:var(--primary);--hero-to:color-mix(in oklab, var(--primary) 55%, #1e3a8a)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--series-1:#3987e5;--series-2:#d95926;--hero-from:color-mix(in oklab, var(--primary) 38%, #0d1116);--hero-to:color-mix(in oklab, var(--primary) 18%, #172554)}}:root[data-theme=dark]{--series-1:#3987e5;--series-2:#d95926;--hero-from:color-mix(in oklab, var(--primary) 38%, #0d1116);--hero-to:color-mix(in oklab, var(--primary) 18%, #172554)}.sidebar{background:0 0}.dash{flex-direction:column;gap:16px;display:flex}.hero{border-radius:var(--r-xl);color:#fff;background:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='190%2030%20450%20210'%20fill='none'%3e%3c!--%20Minh%20hoạ%20dãy%20nhà%20trọ%202%20tầng%20(tự%20vẽ,%20không%20cần%20ghi%20nguồn):%20nét%20trắng%20mờ%20trên%20nền%20màu%20chủ%20đạo%20của%20banner%20--%3e%3cg%20stroke='%23fff'%20stroke-linecap='round'%20stroke-linejoin='round'%20opacity='.7'%3e%3c!--%20mặt%20trời%20--%3e%3ccircle%20cx='560'%20cy='58'%20r='26'%20fill='%23fff'%20fill-opacity='.14'%20stroke-opacity='.28'%20stroke-width='2'/%3e%3c!--%20mây%20--%3e%3cpath%20d='M404%2066c0-9%207-16%2016-16%206%200%2011%203%2014%208%202-1%204-1%206-1%208%200%2014%206%2014%2014H404z'%20fill='%23fff'%20fill-opacity='.1'%20stroke-opacity='.22'%20stroke-width='2'/%3e%3c!--%20mặt%20đất%20--%3e%3cpath%20d='M192%20226H640'%20stroke-opacity='.3'%20stroke-width='2'/%3e%3c!--%20dãy%20nhà:%20thân%20--%3e%3crect%20x='232'%20y='104'%20width='340'%20height='122'%20rx='4'%20fill='%23fff'%20fill-opacity='.08'%20stroke-opacity='.32'%20stroke-width='2.5'/%3e%3c!--%20mái%20--%3e%3cpath%20d='M220%20106%20246%2080H558l26%2026'%20fill='%23fff'%20fill-opacity='.12'%20stroke-opacity='.36'%20stroke-width='2.5'/%3e%3c!--%20sàn%20tầng%202%20+%20lan%20can%20hành%20lang%20--%3e%3cpath%20d='M232%20164H572'%20stroke-opacity='.32'%20stroke-width='2.5'/%3e%3cpath%20d='M232%20148H572'%20stroke-opacity='.22'%20stroke-width='2'/%3e%3cpath%20d='M254%20148v16M286%20148v16M318%20148v16M350%20148v16M382%20148v16M414%20148v16M446%20148v16M478%20148v16M510%20148v16M542%20148v16'%20stroke-opacity='.2'%20stroke-width='2'/%3e%3c!--%20tầng%202:%20cửa%20sổ%20phòng%20--%3e%3cg%20fill='%23fff'%20fill-opacity='.16'%20stroke-opacity='.3'%20stroke-width='2'%3e%3crect%20x='250'%20y='116'%20width='40'%20height='24'%20rx='3'/%3e%3crect%20x='318'%20y='116'%20width='40'%20height='24'%20rx='3'/%3e%3crect%20x='386'%20y='116'%20width='40'%20height='24'%20rx='3'/%3e%3crect%20x='454'%20y='116'%20width='40'%20height='24'%20rx='3'/%3e%3crect%20x='522'%20y='116'%20width='34'%20height='24'%20rx='3'/%3e%3c/g%3e%3c!--%20tầng%201:%20cửa%20phòng%20+%20số%20phòng%20--%3e%3cg%20fill='%23fff'%20fill-opacity='.14'%20stroke-opacity='.32'%20stroke-width='2'%3e%3crect%20x='256'%20y='178'%20width='28'%20height='48'%20rx='3'/%3e%3crect%20x='324'%20y='178'%20width='28'%20height='48'%20rx='3'/%3e%3crect%20x='392'%20y='178'%20width='28'%20height='48'%20rx='3'/%3e%3crect%20x='460'%20y='178'%20width='28'%20height='48'%20rx='3'/%3e%3crect%20x='528'%20y='178'%20width='28'%20height='48'%20rx='3'/%3e%3c/g%3e%3cg%20fill='%23fff'%20fill-opacity='.1'%20stroke-opacity='.24'%20stroke-width='2'%3e%3crect%20x='292'%20y='184'%20width='22'%20height='18'%20rx='2'/%3e%3crect%20x='360'%20y='184'%20width='22'%20height='18'%20rx='2'/%3e%3crect%20x='428'%20y='184'%20width='22'%20height='18'%20rx='2'/%3e%3crect%20x='496'%20y='184'%20width='22'%20height='18'%20rx='2'/%3e%3c/g%3e%3c!--%20cầu%20thang%20lên%20tầng%202%20--%3e%3cpath%20d='M232%20226%20196%20164h36'%20stroke-opacity='.28'%20stroke-width='2.5'/%3e%3cpath%20d='M226%20216h-6M220%20206h-6M214%20196h-6M208%20186h-6M202%20176h-6'%20stroke-opacity='.22'%20stroke-width='2'/%3e%3c/g%3e%3c/svg%3e") right 150px bottom / auto 64% no-repeat, linear-gradient(100deg, var(--hero-from) 0%, var(--hero-from) 40%, var(--hero-to) 100%);box-shadow:0 18px 40px -18px color-mix(in oklab, var(--hero-from) 70%, transparent);justify-content:space-between;align-items:center;gap:24px;padding:26px 30px;display:flex;position:relative;overflow:hidden}.hero:before,.hero:after{content:"";pointer-events:none;border:1px solid #ffffff24;border-radius:50%;position:absolute}.hero:before{width:360px;height:360px;top:-170px;right:-90px}.hero:after{width:240px;height:240px;bottom:-170px;right:120px}.hero-main{z-index:1;min-width:0;position:relative}.hero-top{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.hero-chip{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff29;border:1px solid #ffffff38;border-radius:999px;align-items:center;gap:6px;height:32px;padding:0 14px;font-size:.85rem;font-weight:600;display:inline-flex}.hero .period{color:#fff;box-shadow:none;background:#ffffff24;border-color:#ffffff3d}.hero .period .icon-btn{color:#fff}.hero .period .icon-btn:hover{background:#ffffff2e}.hero-date{opacity:.8;margin:0;font-size:.88rem}.hero-title{margin:2px 0 6px;font-size:2rem}.hero-sub{opacity:.92;margin:0 0 18px}.hero-actions{flex-wrap:wrap;gap:8px;display:flex}.hero-btn{color:#fff;height:40px;transition:background .2s var(--ease), transform .12s var(--ease);background:#ffffff24;border:1px solid #ffffff38;border-radius:999px;align-items:center;gap:8px;padding:0 16px;font-size:.9rem;font-weight:600;display:inline-flex}.hero-btn svg{width:18px;height:18px}.hero-btn:hover{background:#ffffff3d}.hero-btn:active{transform:scale(.97)}.hero-btn.primary{color:color-mix(in oklab, var(--primary) 80%, #000);background:#fff;border-color:#0000}.ring{z-index:1;color:#fff;flex-shrink:0;position:relative}.ring-center{flex-direction:column;justify-content:center;align-items:center;line-height:1.1;display:flex;position:absolute;inset:0}.ring-center b{letter-spacing:-.03em;font-size:1.9rem}.ring-center small{opacity:.8;font-size:.8rem}@media (width<=1240px){.hero{background:linear-gradient(100deg, var(--hero-from) 0%, var(--hero-from) 40%, var(--hero-to) 100%)}}@media (width<=640px){.hero{flex-direction:column-reverse;align-items:stretch;padding:20px}.hero .ring{align-self:center}.hero-title{font-size:1.6rem}}.alert-strip{border-radius:var(--r-lg);background:var(--bad-bg);color:var(--text);border:1px solid color-mix(in oklab, var(--bad) 20%, transparent);transition:transform .15s var(--ease);align-items:center;gap:12px;padding:12px 16px;display:flex}.alert-strip:hover{transform:translate(2px)}.alert-strip>svg{width:18px;height:18px;color:var(--muted);flex-shrink:0}.alert-strip.info{background:var(--primary-container);border-color:#0000}.alert-icon{background:var(--bad);color:#fff;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.alert-strip.info .alert-icon{background:var(--primary);color:var(--on-primary)}.alert-icon svg{width:18px;height:18px}.kpis{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}@media (width<=1000px){.kpis{grid-template-columns:repeat(2,1fr)}}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);flex-direction:column;gap:8px;min-width:0;padding:16px 18px;display:flex}.kpi-head{color:var(--muted);align-items:center;gap:10px;font-size:.86rem;font-weight:600;display:flex}.kpi-icon{background:var(--primary-container);width:32px;height:32px;color:var(--on-primary-container);border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.kpi-icon svg{width:17px;height:17px}.kpi-icon.tone-ok{background:var(--ok-bg);color:var(--ok)}.kpi-icon.tone-bad{background:var(--bad-bg);color:var(--bad)}.kpi-value{letter-spacing:-.03em;overflow-wrap:anywhere;font-size:1.55rem;font-weight:700;line-height:1.15}.kpi-value small{color:var(--muted);letter-spacing:0;font-size:.85rem;font-weight:500}.kpi-foot{justify-content:space-between;align-items:flex-end;gap:8px;margin-top:auto;display:flex}.delta{color:var(--muted);font-size:.78rem}.kpi-spark{flex-shrink:0;width:96px;height:36px}.spark{width:100%;height:100%;overflow:visible}.tone-primary{color:var(--primary)}.tone-ok{color:var(--ok)}@media (width<=480px){.kpi{padding:14px}.kpi-value{font-size:1.2rem}.kpi-spark{width:64px}}.bento{grid-template-columns:repeat(12,1fr);gap:16px;display:grid}.bento>.card{min-width:0;margin:0}.span-4{grid-column:span 4}.span-6{grid-column:span 6}.span-8{grid-column:span 8}@media (width<=1000px){.span-4,.span-8{grid-column:span 12}}@media (width<=760px){.span-6{grid-column:span 12}}.chart,.chart-plot{position:relative}.chart svg{width:100%;height:auto;display:block;overflow:visible}.chart .grid{stroke:var(--border);stroke-dasharray:3 4}.chart .axis{stroke:color-mix(in oklab, var(--border) 60%, var(--muted))}.chart .tick{fill:var(--muted);font-size:11px;font-family:var(--font)}.chart .tick.strong{fill:var(--text);font-weight:700}.chart .hit{fill:#0000;rx:10px}.chart .hit.on{fill:var(--surface-2)}.bar-group{cursor:default;outline:none}.chart-tip{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg);pointer-events:none;white-space:nowrap;z-index:5;border-radius:12px;flex-direction:column;gap:3px;padding:8px 12px;font-size:.8rem;display:flex;position:absolute;top:0;transform:translate(-50%,-8px)}.chart-tip span{color:var(--muted);align-items:center;gap:6px;display:flex}.chart-tip span b{color:var(--text);margin-left:auto;padding-left:10px}.chart-tip i,.legend i{border-radius:3px;flex-shrink:0;width:10px;height:10px;display:inline-block}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 16px;margin-bottom:10px;font-size:.82rem;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend b{color:var(--text)}.legend small{color:var(--muted)}.stackbar-wrap{margin-bottom:16px}.stackbar{border-radius:999px;gap:2px;height:14px;margin-bottom:12px;display:flex;overflow:hidden}.stackbar span{min-width:6px}.room-map{grid-template-columns:repeat(auto-fill,minmax(54px,1fr));gap:6px;margin-bottom:12px;display:grid}.room-dot{height:40px;color:var(--text);transition:transform .15s var(--ease);border-radius:10px;justify-content:center;align-items:center;font-size:.74rem;font-weight:700;display:flex}.room-dot:hover{transform:scale(1.06)}.room-dot.paid,.room-dot-key.paid{background:var(--ok-bg);box-shadow:inset 0 0 0 1.5px color-mix(in oklab, var(--ok) 45%, transparent)}.room-dot.debt,.room-dot-key.debt{background:var(--bad-bg);box-shadow:inset 0 0 0 1.5px color-mix(in oklab, var(--bad) 45%, transparent)}.room-dot.noinv,.room-dot-key.noinv{background:var(--primary-container)}.room-dot.vacant,.room-dot-key.vacant{background:repeating-linear-gradient(135deg, var(--surface-2) 0 6px, var(--surface-3) 6px 8px);color:var(--muted)}.small-legend{gap:4px 12px;margin:0;font-size:.74rem}.timeline{border-left:2px solid var(--border);margin:0;padding:0 0 0 14px;list-style:none}.timeline li{position:relative}.timeline li:before{content:"";background:var(--surface);border:2px solid var(--muted);border-radius:50%;width:12px;height:12px;margin-top:-6px;position:absolute;top:50%;left:-21px}.timeline li.soon:before{border-color:var(--warn);background:var(--warn-bg)}.timeline li.past:before{border-color:var(--bad);background:var(--bad-bg)}.timeline .list-row{margin-left:0}.big-ok{width:36px;height:36px;color:var(--ok)}.room-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}.room-card{gap:12px;padding:16px 16px 14px 20px}.room-floor{color:var(--muted);background:var(--surface-2);vertical-align:3px;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:.72rem;font-weight:600;display:inline-block}.room-person{align-items:center;gap:10px;min-width:0;display:flex}.room-person>span:last-child{min-width:0;overflow:hidden}.room-person b{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.avatar-empty{border:1.5px dashed color-mix(in oklab, var(--border) 50%, var(--muted));width:40px;height:40px;color:var(--muted);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.avatar-empty svg{width:18px;height:18px}.room-facts{flex-wrap:wrap;gap:6px;display:flex}.room-facts span{background:var(--surface-2);height:26px;color:var(--muted);border-radius:8px;align-items:center;gap:5px;padding:0 10px;font-size:.78rem;font-weight:600;display:inline-flex}.room-card.vacant .room-facts span{background:var(--surface-3)}.room-facts svg{width:14px;height:14px}.room-foot{border-top:1px dashed var(--border);justify-content:space-between;align-items:flex-end;gap:12px;padding-top:10px;display:flex}.room-rent b{letter-spacing:-.02em;font-size:1.1rem}.room-rent small{color:var(--muted);margin-left:2px}.room-pay{flex:1;min-width:0;max-width:140px}.room-pay-label{color:var(--muted);justify-content:space-between;gap:6px;margin-bottom:4px;font-size:.72rem;font-weight:600;display:flex}.mini-progress{background:var(--surface-3);border-radius:999px;height:6px;overflow:hidden}.mini-progress div{border-radius:inherit;background:var(--warn);height:100%}.mini-progress.full div{background:var(--ok)}.nav-more,.more-sheet,.more-backdrop{display:none}button.nav-item{cursor:pointer;border:none;font-family:inherit}@media (width<=760px){.nav-secondary{display:none}.nav-more{display:flex}.more-backdrop{z-index:-1;display:block;position:fixed;inset:0}.more-sheet{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--border);min-width:200px;box-shadow:var(--shadow-lg);animation:pop-in .2s var(--ease);flex-direction:column;gap:2px;padding:8px;display:flex;position:absolute;bottom:calc(100% + 8px);right:8px}.more-item{height:48px;color:var(--text);border-radius:12px;align-items:center;gap:12px;padding:0 12px;font-weight:600;display:flex}.more-item:hover,.more-item.active{background:var(--primary-container);color:var(--on-primary-container)}.more-icon{width:22px;height:22px;display:inline-flex}.more-icon svg{width:22px;height:22px}}.tag{background:color-mix(in oklab, var(--series-1) 12%, var(--surface));height:26px;color:color-mix(in oklab, var(--series-1) 75%, var(--text));white-space:nowrap;cursor:pointer;transition:background .15s var(--ease);border:1px solid #0000;border-radius:999px;align-items:center;gap:4px;padding:0 10px;font-family:inherit;font-size:.78rem;font-weight:600;display:inline-flex}.tag:hover{background:color-mix(in oklab, var(--series-1) 20%, var(--surface))}.tag.on{background:var(--series-1);color:#fff}.tag small{opacity:.7;font-weight:500}.tag button{color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;margin-right:-4px;padding:0;display:inline-flex}.tag button svg{width:14px;height:14px}.tag-chips{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.tag-input{border:1px solid color-mix(in oklab, var(--border) 70%, var(--muted));background:var(--surface);cursor:text;border-radius:12px;flex-wrap:wrap;align-items:center;gap:6px;min-height:44px;padding:6px 10px;display:flex}.tag-input:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in oklab, var(--primary) 22%, transparent)}.tag-input input{background:0 0;border:none;flex:1;min-width:140px;min-height:0;padding:4px;box-shadow:none!important}.people-filters{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.people-filters .search{flex:280px;max-width:none;margin:0}.filter-select{background-color:var(--surface);flex:0 220px;width:auto;height:44px;padding-top:0;padding-bottom:0;font-size:.88rem;font-weight:600}.filter-select.on{background-color:var(--primary-container);color:var(--on-primary-container);border-color:#0000}.tag-cloud{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:16px;display:flex}.tag-cloud-icon{width:18px;height:18px;color:var(--muted);margin-right:2px}.filter-summary{background:var(--surface-2);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:14px;padding:8px 8px 8px 14px;display:flex}@media (width<=560px){.filter-select{flex:140px}}.contract-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:20px;display:grid}@media (width<=1000px){.contract-layout{grid-template-columns:minmax(0,1fr)}}.paper{color:#111;background:#fff;border-radius:6px;max-width:794px;min-height:1000px;margin:0 auto;padding:64px 72px;font-family:Times New Roman,Noto Serif,Georgia,serif;font-size:15px;line-height:1.6;box-shadow:0 1px 3px #0000001a,0 10px 30px #00000014}.paper h1{letter-spacing:0;margin:12px 0 8px;font-family:inherit;font-size:20px;display:block}.paper h2{margin:16px 0 6px;font-family:inherit;font-size:15px;display:block}.paper p{margin:6px 0}.paper ul,.paper ol{margin:4px 0;padding-left:26px}.paper .blank{color:#888}.paper table.signs{text-align:center;width:100%;margin-top:32px}.paper table.signs td{vertical-align:top;width:50%}.paper-edit{outline:none;min-height:600px}.paper-edit:focus{box-shadow:0 0 0 3px color-mix(in oklab, var(--primary) 30%, transparent), 0 10px 30px #00000014}@media (width<=640px){.paper{min-height:0;padding:28px 20px;font-size:14px}}.editor{flex-direction:column;gap:12px;display:flex}.editor-bar{z-index:5;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;flex-wrap:wrap;align-items:center;gap:4px;width:100%;max-width:794px;margin:0 auto;padding:6px;display:flex;position:sticky;top:8px}.editor-bar button{width:36px;height:36px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.editor-bar button:hover{background:var(--surface-3)}.editor-bar svg{width:18px;height:18px}.editor-sep{background:var(--border);width:1px;height:22px;margin:0 4px}.editor-fields{background:var(--primary-container);width:auto;height:36px;min-height:0;color:var(--on-primary-container);border-color:#0000;border-radius:999px;margin-left:auto;padding:0 12px;font-weight:600}.file-list{flex-direction:column;gap:6px;margin:6px 0 0;padding:0;list-style:none;display:flex}.file-list li{align-items:center;gap:6px;display:flex}.file-chip{border:1px solid var(--border);background:var(--surface-2);cursor:pointer;text-align:left;min-width:0;font:inherit;color:var(--text);border-radius:12px;flex:1;align-items:center;gap:10px;padding:8px 12px;display:flex}.file-chip:hover{border-color:var(--primary)}.file-chip svg{width:20px;height:20px;color:var(--primary);flex-shrink:0}.file-name{overflow-wrap:anywhere;min-width:0;font-size:.86rem;font-weight:600;line-height:1.3}.file-chip>span{flex-direction:column;flex:1;min-width:0;display:flex}.file-icon{background:var(--primary-container);width:36px;height:36px;color:var(--on-primary-container);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.file-icon svg{width:18px;height:18px}.contract-row{padding-bottom:8px}@media print{@page{size:A4;margin:0}html,body{background:#fff!important}.sidebar,.no-print,.toast,.license-bar,body:before{display:none!important}.shell{display:block!important}.content{-webkit-box-decoration-break:clone;box-decoration-break:clone;max-width:none!important;margin:0!important;padding:18mm 16mm!important}.contract-layout{display:block}.paper{border-radius:0;max-width:none;min-height:0;box-shadow:none!important;padding:0!important}}.room-card.closed{opacity:.6;filter:grayscale(.6)}.check.push-right{margin:0 0 0 auto}.mt-xs{margin-top:6px}.deposit .badge{margin-left:4px}p.callout{margin:0 0 12px}.ct01{font-size:14.5px}.ct01 .center{text-align:center}.ct01 .right{text-align:right}.ct01 h1{margin:14px 0 6px}.ct01 p{margin:7px 0}.ct01-form-id{text-align:right;font-size:13px;font-style:italic}.ct01-table{border-collapse:collapse;width:100%;margin:6px 0 14px;font-size:13.5px}.ct01-table th,.ct01-table td{border:1px solid #333;height:30px;padding:5px 6px}.ct01-table th{text-align:center;font-weight:700}.ct01-date{margin-top:10px;font-style:italic}.ct01-signs{border-collapse:collapse;text-align:center;table-layout:fixed;width:100%;font-size:12.5px}.ct01-signs td{vertical-align:top;padding:4px}.ct01-consent{margin-top:6px;display:inline-block}.ct01-names td{padding-top:70px;font-weight:700}.ct01-notes{margin-top:28px;font-size:12px}.ct01-notes p{margin:2px 0}.confirm-body{align-items:flex-start;gap:14px;margin-bottom:8px;display:flex}.confirm-body p{margin:0 0 6px}.confirm-icon{background:var(--primary-container);width:42px;height:42px;color:var(--on-primary-container);border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.confirm-icon.danger{background:var(--bad-bg);color:var(--bad)}.confirm-icon svg{width:22px;height:22px}.confirm-sum{background:var(--surface-2);border-radius:12px;grid-template-columns:max-content 1fr;gap:4px 14px;margin:8px 0 0;padding:10px 12px;font-size:.92rem;display:grid}.confirm-sum dt{color:var(--muted)}.confirm-sum dd{margin:0;font-weight:600}.mt-lg{margin-top:20px}.checkout-row{grid-template-columns:64px minmax(0,1.6fr) minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 0;display:grid}.checkout-room{background:var(--surface-2);height:40px;color:var(--text);border-radius:12px;justify-content:center;align-items:center;font-size:.9rem;font-weight:700;display:inline-flex}.checkout-room:hover{background:var(--primary-container);color:var(--on-primary-container)}.checkout-main{min-width:0}.checkout-main a{color:var(--text)}.checkout-inv{text-align:right}@media (width<=760px){.checkout-row{grid-template-columns:56px minmax(0,1fr)}.checkout-now,.checkout-inv{text-align:left;grid-column:2}.checkout-inv .badge{margin-left:0}}:root{--st-rented:#16a34a;--st-vacant:#f59e0b;--st-reserved:#3b82f6;--st-closed:#64748b;--tone-amber:#d97706;--tone-violet:#7c3aed;--tone-sky:#0284c7;--tone-rose:#e11d48;--pattern-dot:color-mix(in oklab, var(--text) 9%, transparent);--pattern-ink:color-mix(in oklab, var(--primary) 16%, transparent)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--st-rented:#4ade80;--st-vacant:#fbbf24;--st-reserved:#60a5fa;--st-closed:#94a3b8;--tone-amber:#fbbf24;--tone-violet:#a78bfa;--tone-sky:#38bdf8;--tone-rose:#fb7185;--pattern-dot:color-mix(in oklab, var(--text) 7%, transparent);--pattern-ink:color-mix(in oklab, var(--primary) 13%, transparent)}}:root[data-theme=dark]{--st-rented:#4ade80;--st-vacant:#fbbf24;--st-reserved:#60a5fa;--st-closed:#94a3b8;--tone-amber:#fbbf24;--tone-violet:#a78bfa;--tone-sky:#38bdf8;--tone-rose:#fb7185;--pattern-dot:color-mix(in oklab, var(--text) 7%, transparent);--pattern-ink:color-mix(in oklab, var(--primary) 13%, transparent)}body{background:radial-gradient(900px 520px at 100% -8%, color-mix(in oklab, var(--primary) 18%, transparent), transparent 70%), radial-gradient(720px 460px at -8% 12%, color-mix(in oklab, var(--tone-amber) 13%, transparent), transparent 70%), radial-gradient(900px 640px at 60% 115%, color-mix(in oklab, var(--tone-violet) 12%, transparent), transparent 70%), var(--bg);background-attachment:fixed}body:before{content:"";z-index:0;pointer-events:none;background:var(--pattern-ink);position:fixed;inset:0;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='240'%20height='240'%20viewBox='0%200%20240%20240'%20fill='none'%20stroke='%23000'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3c!--%20Ngôi%20nhà%20--%3e%3cg%20transform='translate(18%2022)'%3e%3cpath%20d='M2%2016%20L18%203%20L34%2016'/%3e%3cpath%20d='M6%2013%20V33%20H30%20V13'/%3e%3cpath%20d='M15%2033%20V23%20H21%20V33'/%3e%3cpath%20d='M24%207%20V3%20H28%20V10'/%3e%3c/g%3e%3c!--%20Chìa%20khoá%20--%3e%3cg%20transform='translate(130%2018)%20rotate(-30%2016%2016)'%3e%3ccircle%20cx='8'%20cy='16'%20r='6'/%3e%3ccircle%20cx='8'%20cy='16'%20r='2'/%3e%3cpath%20d='M14%2016%20H34'/%3e%3cpath%20d='M28%2016%20V21'/%3e%3cpath%20d='M33%2016%20V20'/%3e%3c/g%3e%3c!--%20Bóng%20đèn%20(điện)%20--%3e%3cg%20transform='translate(196%2064)'%3e%3cpath%20d='M10%202%20a9%209%200%200%201%206%2015.5%20c-1.4%201.3%20-2%202.5%20-2%204%20V23%20H6%20V21.5%20c0%20-1.5%20-.6%20-2.7%20-2%20-4%20A9%209%200%200%201%2010%202%20Z'/%3e%3cpath%20d='M6.5%2026%20H13.5'/%3e%3cpath%20d='M8%2029%20H12'/%3e%3c/g%3e%3c!--%20Giọt%20nước%20--%3e%3cg%20transform='translate(78%2082)'%3e%3cpath%20d='M11%202%20C11%202%203%2011%203%2017%20a8%208%200%200%200%2016%200%20C19%2011%2011%202%2011%202%20Z'/%3e%3cpath%20d='M7.5%2017.5%20a3.5%203.5%200%200%200%203.5%203.5'/%3e%3c/g%3e%3c!--%20Cửa%20phòng%20--%3e%3cg%20transform='translate(20%20112)'%3e%3cpath%20d='M4%2034%20V3%20H24%20V34'/%3e%3cpath%20d='M1%2034%20H27'/%3e%3ccircle%20cx='19'%20cy='19'%20r='1.4'/%3e%3cpath%20d='M8%208%20H20%20V14%20H8%20Z'/%3e%3c/g%3e%3c!--%20Hoá%20đơn%20--%3e%3cg%20transform='translate(140%20104)%20rotate(12%2013%2017)'%3e%3cpath%20d='M3%202%20H23%20V32%20L19.5%2029.5%20L16%2032%20L13%2029.5%20L10%2032%20L6.5%2029.5%20L3%2032%20Z'/%3e%3cpath%20d='M8%209%20H18'/%3e%3cpath%20d='M8%2014%20H18'/%3e%3cpath%20d='M8%2019%20H14'/%3e%3c/g%3e%3c!--%20Toà%20nhà%20nhiều%20tầng%20--%3e%3cg%20transform='translate(82%20168)'%3e%3cpath%20d='M3%2034%20V5%20H21%20V34'/%3e%3cpath%20d='M21%2015%20H33%20V34'/%3e%3cpath%20d='M0%2034%20H36'/%3e%3cpath%20d='M8%2010%20H10%20M14%2010%20H16%20M8%2016%20H10%20M14%2016%20H16%20M8%2022%20H10%20M14%2022%20H16%20M25%2021%20H29%20M25%2027%20H29'/%3e%3cpath%20d='M10%2034%20V28%20H14%20V34'/%3e%3c/g%3e%3c!--%20Tia%20sét%20nhỏ%20--%3e%3cg%20transform='translate(200%20170)'%3e%3cpath%20d='M12%202%20L4%2016%20H11%20L8%2028%20L18%2012%20H11%20Z'/%3e%3c/g%3e%3c!--%20Xe%20máy%20đơn%20giản%20--%3e%3cg%20transform='translate(150%20196)'%3e%3ccircle%20cx='6'%20cy='16'%20r='5'/%3e%3ccircle%20cx='30'%20cy='16'%20r='5'/%3e%3cpath%20d='M6%2016%20L13%207%20H22%20L30%2016'/%3e%3cpath%20d='M13%207%20L17%2016%20H24'/%3e%3cpath%20d='M22%207%20L25%203%20H29'/%3e%3c/g%3e%3c!--%20Ngôi%20sao%20/%20điểm%20nhấn%20--%3e%3cpath%20d='M110%2030%20v6%20M107%2033%20h6'/%3e%3cpath%20d='M60%20214%20v6%20M57%20217%20h6'/%3e%3cpath%20d='M226%20128%20v6%20M223%20131%20h6'/%3e%3cpath%20d='M118%20140%20v4%20M116%20142%20h4'/%3e%3ccircle%20cx='60'%20cy='60'%20r='1.6'/%3e%3ccircle%20cx='180'%20cy='150'%20r='1.6'/%3e%3ccircle%20cx='34'%20cy='186'%20r='1.6'/%3e%3ccircle%20cx='212'%20cy='20'%20r='1.6'/%3e%3c/svg%3e") 0 0/240px 240px;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='240'%20height='240'%20viewBox='0%200%20240%20240'%20fill='none'%20stroke='%23000'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3c!--%20Ngôi%20nhà%20--%3e%3cg%20transform='translate(18%2022)'%3e%3cpath%20d='M2%2016%20L18%203%20L34%2016'/%3e%3cpath%20d='M6%2013%20V33%20H30%20V13'/%3e%3cpath%20d='M15%2033%20V23%20H21%20V33'/%3e%3cpath%20d='M24%207%20V3%20H28%20V10'/%3e%3c/g%3e%3c!--%20Chìa%20khoá%20--%3e%3cg%20transform='translate(130%2018)%20rotate(-30%2016%2016)'%3e%3ccircle%20cx='8'%20cy='16'%20r='6'/%3e%3ccircle%20cx='8'%20cy='16'%20r='2'/%3e%3cpath%20d='M14%2016%20H34'/%3e%3cpath%20d='M28%2016%20V21'/%3e%3cpath%20d='M33%2016%20V20'/%3e%3c/g%3e%3c!--%20Bóng%20đèn%20(điện)%20--%3e%3cg%20transform='translate(196%2064)'%3e%3cpath%20d='M10%202%20a9%209%200%200%201%206%2015.5%20c-1.4%201.3%20-2%202.5%20-2%204%20V23%20H6%20V21.5%20c0%20-1.5%20-.6%20-2.7%20-2%20-4%20A9%209%200%200%201%2010%202%20Z'/%3e%3cpath%20d='M6.5%2026%20H13.5'/%3e%3cpath%20d='M8%2029%20H12'/%3e%3c/g%3e%3c!--%20Giọt%20nước%20--%3e%3cg%20transform='translate(78%2082)'%3e%3cpath%20d='M11%202%20C11%202%203%2011%203%2017%20a8%208%200%200%200%2016%200%20C19%2011%2011%202%2011%202%20Z'/%3e%3cpath%20d='M7.5%2017.5%20a3.5%203.5%200%200%200%203.5%203.5'/%3e%3c/g%3e%3c!--%20Cửa%20phòng%20--%3e%3cg%20transform='translate(20%20112)'%3e%3cpath%20d='M4%2034%20V3%20H24%20V34'/%3e%3cpath%20d='M1%2034%20H27'/%3e%3ccircle%20cx='19'%20cy='19'%20r='1.4'/%3e%3cpath%20d='M8%208%20H20%20V14%20H8%20Z'/%3e%3c/g%3e%3c!--%20Hoá%20đơn%20--%3e%3cg%20transform='translate(140%20104)%20rotate(12%2013%2017)'%3e%3cpath%20d='M3%202%20H23%20V32%20L19.5%2029.5%20L16%2032%20L13%2029.5%20L10%2032%20L6.5%2029.5%20L3%2032%20Z'/%3e%3cpath%20d='M8%209%20H18'/%3e%3cpath%20d='M8%2014%20H18'/%3e%3cpath%20d='M8%2019%20H14'/%3e%3c/g%3e%3c!--%20Toà%20nhà%20nhiều%20tầng%20--%3e%3cg%20transform='translate(82%20168)'%3e%3cpath%20d='M3%2034%20V5%20H21%20V34'/%3e%3cpath%20d='M21%2015%20H33%20V34'/%3e%3cpath%20d='M0%2034%20H36'/%3e%3cpath%20d='M8%2010%20H10%20M14%2010%20H16%20M8%2016%20H10%20M14%2016%20H16%20M8%2022%20H10%20M14%2022%20H16%20M25%2021%20H29%20M25%2027%20H29'/%3e%3cpath%20d='M10%2034%20V28%20H14%20V34'/%3e%3c/g%3e%3c!--%20Tia%20sét%20nhỏ%20--%3e%3cg%20transform='translate(200%20170)'%3e%3cpath%20d='M12%202%20L4%2016%20H11%20L8%2028%20L18%2012%20H11%20Z'/%3e%3c/g%3e%3c!--%20Xe%20máy%20đơn%20giản%20--%3e%3cg%20transform='translate(150%20196)'%3e%3ccircle%20cx='6'%20cy='16'%20r='5'/%3e%3ccircle%20cx='30'%20cy='16'%20r='5'/%3e%3cpath%20d='M6%2016%20L13%207%20H22%20L30%2016'/%3e%3cpath%20d='M13%207%20L17%2016%20H24'/%3e%3cpath%20d='M22%207%20L25%203%20H29'/%3e%3c/g%3e%3c!--%20Ngôi%20sao%20/%20điểm%20nhấn%20--%3e%3cpath%20d='M110%2030%20v6%20M107%2033%20h6'/%3e%3cpath%20d='M60%20214%20v6%20M57%20217%20h6'/%3e%3cpath%20d='M226%20128%20v6%20M223%20131%20h6'/%3e%3cpath%20d='M118%20140%20v4%20M116%20142%20h4'/%3e%3ccircle%20cx='60'%20cy='60'%20r='1.6'/%3e%3ccircle%20cx='180'%20cy='150'%20r='1.6'/%3e%3ccircle%20cx='34'%20cy='186'%20r='1.6'/%3e%3ccircle%20cx='212'%20cy='20'%20r='1.6'/%3e%3c/svg%3e") 0 0/240px 240px}.content .card:nth-of-type(4n+2) h2>svg,.bento>.card:nth-child(4n+2) h2>svg{background:color-mix(in oklab, var(--tone-amber) 18%, var(--surface));color:var(--tone-amber)}.content .card:nth-of-type(4n+3) h2>svg,.bento>.card:nth-child(4n+3) h2>svg{background:color-mix(in oklab, var(--tone-violet) 16%, var(--surface));color:var(--tone-violet)}.content .card:nth-of-type(4n) h2>svg,.bento>.card:nth-child(4n) h2>svg{background:color-mix(in oklab, var(--tone-sky) 16%, var(--surface));color:var(--tone-sky)}.nav-item.active .nav-pill{background:linear-gradient(135deg, var(--primary-container), color-mix(in oklab, var(--tone-violet) 14%, var(--primary-container)))}.room-card{border-width:1.5px;padding-top:0}.room-card:before{display:none}.status-strip{letter-spacing:.01em;color:#fff;text-transform:uppercase;align-items:center;gap:8px;margin:0 -16px 2px -20px;padding:9px 16px 9px 18px;font-size:.8rem;font-weight:700;display:flex}.status-strip svg{flex-shrink:0;width:17px;height:17px}.status-strip small{text-transform:none;opacity:.9;font-weight:600}.strip-debt{color:var(--bad);text-transform:none;background:#fff;border-radius:999px;margin-left:auto;padding:2px 9px;font-size:.72rem}.status-strip.s-rented{background:linear-gradient(90deg, var(--st-rented), color-mix(in oklab, var(--st-rented) 70%, var(--primary)))}.status-strip.s-vacant{background:linear-gradient(90deg, var(--st-vacant), color-mix(in oklab, var(--st-vacant) 75%, #f97316));color:#3b2300}.status-strip.s-reserved{background:linear-gradient(90deg, var(--st-reserved), color-mix(in oklab, var(--st-reserved) 70%, var(--tone-violet)))}.status-strip.s-closed{background:repeating-linear-gradient(135deg, var(--st-closed) 0 10px, color-mix(in oklab, var(--st-closed) 80%, #000) 10px 20px)}.room-card.s-rented{border-color:color-mix(in oklab, var(--st-rented) 35%, var(--border))}.room-card.s-vacant{background:radial-gradient(circle, color-mix(in oklab, var(--st-vacant) 26%, transparent) 1.2px, transparent 1.8px) 0 0 / 14px 14px, color-mix(in oklab, var(--st-vacant) 9%, var(--surface));border:2px dashed color-mix(in oklab, var(--st-vacant) 75%, transparent);box-shadow:0 6px 18px -8px color-mix(in oklab, var(--st-vacant) 60%, transparent)}.room-card.s-vacant .avatar-empty{border-color:var(--st-vacant);color:var(--tone-amber);background:var(--surface)}.room-card.s-reserved{background:color-mix(in oklab, var(--st-reserved) 7%, var(--surface));border-color:color-mix(in oklab, var(--st-reserved) 45%, var(--border))}.room-card.s-closed{background:repeating-linear-gradient(135deg, var(--surface-2) 0 12px, var(--surface-3) 12px 14px);border-color:var(--border);opacity:.8;filter:none}.room-card.s-closed .room-name,.room-card.s-closed .room-person{color:var(--muted)}.room-card.has-debt{border-color:color-mix(in oklab, var(--bad) 60%, var(--border));box-shadow:0 0 0 1px color-mix(in oklab, var(--bad) 25%, transparent), var(--shadow)}.room-card.vacant .room-facts span,.room-card.s-vacant .room-facts span{background:color-mix(in oklab, var(--st-vacant) 14%, var(--surface))}.chip{align-items:center;gap:6px;display:inline-flex}.chip-dot{border-radius:50%;width:9px;height:9px;display:inline-block}.chip-rented .chip-dot{background:var(--st-rented)}.chip-vacant .chip-dot{background:var(--st-vacant)}.chip-debt .chip-dot{background:var(--bad)}.chip-closed .chip-dot{background:repeating-linear-gradient(135deg, var(--st-closed) 0 2px, transparent 2px 4px);border:1px solid var(--st-closed)}.chip.active:before{content:none}.room-dot.vacant,.room-dot-key.vacant{background:color-mix(in oklab, var(--st-vacant) 16%, var(--surface));box-shadow:inset 0 0 0 1.5px color-mix(in oklab, var(--st-vacant) 70%, transparent);color:var(--text)}.room-dot.reserved,.room-dot-key.reserved{background:color-mix(in oklab, var(--st-reserved) 14%, var(--surface));box-shadow:inset 0 0 0 1.5px color-mix(in oklab, var(--st-reserved) 60%, transparent)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .status-strip.s-rented,:root:not([data-theme=light]) .status-strip.s-reserved{color:#0b1220}}:root[data-theme=dark] .status-strip.s-rented,:root[data-theme=dark] .status-strip.s-reserved{color:#0b1220}:root{--st-repair:#ea580c}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--st-repair:#fb923c}}:root[data-theme=dark]{--st-repair:#fb923c}.status-strip.s-repair{background:repeating-linear-gradient(135deg, var(--st-repair) 0 12px, color-mix(in oklab, var(--st-repair) 82%, #000) 12px 24px);color:#fff}.room-card.s-repair{background:repeating-linear-gradient(135deg, color-mix(in oklab, var(--st-repair) 7%, var(--surface)) 0 14px, color-mix(in oklab, var(--st-repair) 12%, var(--surface)) 14px 16px);border:2px solid color-mix(in oklab, var(--st-repair) 55%, transparent)}.room-card.s-repair .avatar-empty{border-color:var(--st-repair);color:var(--st-repair);background:var(--surface)}.chip-repair .chip-dot{background:repeating-linear-gradient(135deg, var(--st-repair) 0 2px, transparent 2px 4px);border:1px solid var(--st-repair)}.room-dot.repair,.room-dot-key.repair{background:repeating-linear-gradient(135deg, color-mix(in oklab, var(--st-repair) 14%, var(--surface)) 0 5px, color-mix(in oklab, var(--st-repair) 26%, var(--surface)) 5px 7px);box-shadow:inset 0 0 0 1.5px color-mix(in oklab, var(--st-repair) 65%, transparent)}.room-state{border-top:1px dashed var(--border);margin-top:16px;padding-top:14px}.room-state-head{flex-direction:column;gap:8px;display:flex}.state-seg{flex-wrap:wrap}.state-seg button{align-items:center;gap:6px;display:inline-flex}.state-seg button svg{width:16px;height:16px}.state-seg button:disabled{cursor:default}.state-seg button.st-active.active{color:var(--st-rented)}.state-seg button.st-repair.active{background:var(--st-repair);color:#fff}.state-seg button.st-closed.active{background:var(--st-closed);color:#fff}.room-state-note{border-radius:12px;margin:10px 0 0;padding:8px 12px;font-size:.88rem;font-weight:600}.room-state-note.st-repair{background:color-mix(in oklab, var(--st-repair) 14%, var(--surface));color:color-mix(in oklab, var(--st-repair) 80%, var(--text))}.room-state-note.st-closed{background:var(--surface-3);color:var(--muted)}.shell{z-index:1;position:relative}.reading-row.locked .reading-input{background:var(--surface-2);color:var(--muted);cursor:not-allowed;border-style:dashed}.reading-row.locked .reading-input:not([data-old]){border-color:color-mix(in oklab, var(--border) 70%, var(--muted));font-weight:600}.reading-row.unlocked{background:color-mix(in oklab, var(--warn-bg) 55%, var(--surface));box-shadow:inset 4px 0 0 var(--warn)}.row-action{border:1px solid var(--border);background:var(--surface);height:26px;color:var(--text);font:inherit;cursor:pointer;border-radius:999px;align-self:flex-start;align-items:center;gap:4px;margin-top:4px;padding:0 10px;font-size:.74rem;font-weight:600;display:inline-flex}.row-action svg{width:13px;height:13px}.row-action:hover{border-color:var(--primary)}.row-action.primary{background:var(--warn);color:#fff;border-color:#0000}@media (width<=760px){.row-action{margin:0 0 0 auto}}.reading-row.dirty{background:color-mix(in oklab, var(--warn-bg) 60%, var(--surface));box-shadow:inset 4px 0 0 var(--warn)}.reading-row.dirty .reading-input:not([data-old]){border-color:var(--warn)}.sticky-actions{flex-wrap:wrap}:root{--logo-from:color-mix(in oklab, var(--primary) 70%, #22d3ee);--logo-to:color-mix(in oklab, var(--primary) 85%, #1e1b4b);--logo-accent:#fbbf24}.logo{align-items:center;gap:11px;text-decoration:none;display:inline-flex}.logo-mark{filter:drop-shadow(0 4px 10px color-mix(in oklab, var(--logo-to) 35%, transparent));flex-shrink:0}.logo-text{flex-direction:column;line-height:1;display:flex}.logo-main{letter-spacing:-.04em;background:linear-gradient(100deg, var(--logo-to), var(--logo-from) 70%, var(--tone-amber,#f59e0b));color:#0000;-webkit-background-clip:text;background-clip:text;padding-bottom:2px;font-size:1.55rem;font-weight:800}.logo-sub{letter-spacing:.32em;text-transform:uppercase;color:var(--muted);align-items:center;gap:6px;margin-top:3px;font-size:.62rem;font-weight:700;display:flex}.logo-sub:before{content:"";background:var(--logo-accent);border-radius:2px;width:14px;height:2px}.logo-lg .logo-main{font-size:2.1rem}.logo-lg .logo-sub{font-size:.72rem}.brand{padding:2px 10px 22px}.table-card{padding:6px 8px}.mgmt-table td{white-space:normal;vertical-align:middle;padding:10px 8px}.mgmt-table td .block-badge{margin:4px 0 0;display:inline-flex}.mgmt-table .cell-person{color:var(--text);min-width:180px}.cell-actions{text-align:right;white-space:nowrap}.row-past{opacity:.72}.residence-group h2 small{font-weight:500}.residence-row .cell-person{color:var(--text)}.residence-row .right{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.residence-row .badge{margin:0}:root{--pay-paid:#16a34a;--pay-unpaid:#2563eb;--pay-soon:#ea580c;--pay-overdue:#dc2626;--pay-carried:#64748b;--pay-refund:#c026d3}.badge-info{background:color-mix(in oklab, var(--pay-unpaid) 14%, var(--surface));color:var(--pay-unpaid)}.inv-toolbar{flex-direction:column;gap:10px;margin-bottom:20px;display:flex}.inv-toolbar .chips{margin:0}.room-pills{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.room-pills>span{color:var(--muted);margin-right:4px;font-size:.8rem}.room-pills button{border:1px solid var(--border);background:var(--surface);height:30px;color:var(--text);font:inherit;cursor:pointer;transition:background .2s var(--ease);border-radius:999px;padding:0 12px;font-size:.82rem;font-weight:600}.room-pills button:hover{background:var(--surface-2)}.room-pills button.active{background:var(--primary);color:#fff;border-color:#0000}.inv-month{margin-bottom:28px}.inv-month-head{z-index:4;background:color-mix(in oklab, var(--bg) 90%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);flex-wrap:wrap;align-items:center;gap:8px 20px;margin:0 -8px 12px;padding:10px 8px;display:flex;position:sticky;top:0}.inv-month-head h2{min-width:130px;margin:0;font-size:1.15rem}.inv-month-progress{min-width:240px;color:var(--muted);flex:1;align-items:center;gap:12px;font-size:.86rem;display:flex}.inv-month-progress b{color:var(--text);font-variant-numeric:tabular-nums}.inv-bar{background:var(--surface-3);border-radius:999px;flex:1;max-width:320px;height:8px;overflow:hidden}.inv-bar div{background:var(--pay-paid);border-radius:999px;height:100%}.inv-month-flags{gap:6px;display:flex}.inv-cards{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));align-items:start;gap:16px 14px;display:grid}.receipt{--notch:var(--bg);--st:var(--pay-unpaid);--ok:#15803d;--bad:#c62828;background:linear-gradient(color-mix(in oklab, var(--st) 7%, #fff), color-mix(in oklab, var(--st) 3%, #fff));box-shadow:inset 4px 0 0 var(--st), 0 1px 2px #0000000f, 0 8px 20px -10px #00000040;color:#1f2937;font-variant-numeric:tabular-nums;transition:transform .18s var(--ease), box-shadow .18s var(--ease);border-radius:12px 12px 0 0;flex-direction:column;gap:6px;padding:0 14px 16px;text-decoration:none;display:flex;position:relative;overflow:hidden;-webkit-mask:radial-gradient(6px at 50% 100%,#0000 98%,#000) 0 0/16px 100% repeat-x;mask:radial-gradient(6px at 50% 100%,#0000 98%,#000) 0 0/16px 100% repeat-x}.receipt:hover{box-shadow:inset 4px 0 0 var(--st), 0 2px 4px #0000000f, 0 16px 30px -12px #0000004d;transform:translateY(-3px)rotate(-.4deg)}.receipt.st-paid{--st:var(--pay-paid)}.receipt.st-soon{--st:var(--pay-soon)}.receipt.st-overdue{--st:var(--pay-overdue)}.receipt.st-carried{--st:var(--pay-carried)}.receipt.st-refund{--st:var(--pay-refund)}.receipt-state{background:var(--st);color:#fff;letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:8px;margin:0 -14px 4px;padding:7px 14px 7px 16px;font-size:.72rem;font-weight:800;display:flex}.receipt-state small{letter-spacing:0;text-transform:none;opacity:.95;font-weight:700}.receipt.st-overdue .receipt-state{background:repeating-linear-gradient(135deg, var(--pay-overdue) 0 12px, color-mix(in oklab, var(--pay-overdue) 85%, #000) 12px 24px)}.receipt.st-soon .receipt-state:before{content:"⏰";margin-right:-2px}.receipt-head{border-bottom:1.5px dashed #d1d5db;justify-content:space-between;align-items:flex-start;gap:8px;padding:2px 0 8px;display:flex}.receipt-head>div{min-width:0}.receipt-room{letter-spacing:-.02em;font-size:1.1rem;display:block}.receipt-tenant{color:#6b7280;white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;display:block;overflow:hidden}.receipt-kind{color:color-mix(in oklab, var(--primary-light) 85%, #000);letter-spacing:.08em;white-space:nowrap;border:1.5px solid;border-radius:6px;padding:2px 6px;font-size:.66rem;font-weight:800}.receipt-kind.deposit{color:#7c3aed}.receipt-kind.refund{color:var(--pay-refund)}.receipt-total{justify-content:space-between;align-items:baseline;display:flex}.receipt-total span{color:#6b7280;letter-spacing:.1em;text-transform:uppercase;font-size:.7rem;font-weight:800}.receipt-total b{letter-spacing:-.02em;font-size:1.15rem}.receipt-left{color:#b91c1c;text-align:right;font-size:.76rem}.receipt-stamp{border:2.5px solid color-mix(in oklab, var(--ok) 75%, transparent);color:color-mix(in oklab, var(--ok) 75%, transparent);letter-spacing:.12em;mix-blend-mode:multiply;pointer-events:none;border-radius:8px;padding:1px 8px;font-size:.74rem;font-weight:900;position:absolute;top:70px;right:16px;transform:rotate(-14deg)}.receipt-stamp.overdue{border-color:color-mix(in oklab, var(--pay-overdue) 75%, transparent);color:color-mix(in oklab, var(--pay-overdue) 80%, transparent)}.receipt.st-overdue{animation:2.4s ease-in-out infinite overdue-pulse}@keyframes overdue-pulse{50%{box-shadow:inset 4px 0 0 var(--st), 0 0 0 3px color-mix(in oklab, var(--pay-overdue) 25%, transparent), 0 8px 20px -10px #00000040}}@media (prefers-reduced-motion:reduce){.receipt.st-overdue{animation:none}}.chip-st.st-paid .chip-dot{background:var(--pay-paid)}.chip-st.st-unpaid .chip-dot{background:var(--pay-unpaid)}.chip-st.st-soon .chip-dot{background:var(--pay-soon)}.chip-st.st-overdue .chip-dot{background:var(--pay-overdue)}.chip-st.st-carried .chip-dot{background:var(--pay-carried)}.chip-st.st-refund .chip-dot{background:var(--pay-refund)}.load-more{justify-content:center;padding:10px 0 30px;display:flex}@media (width<=560px){.page-header .segmented{width:100%}.page-header .segmented button{flex:1;padding:0 8px}}.bookings{border-radius:var(--r-xl);background:linear-gradient(135deg, color-mix(in oklab, var(--st-reserved) 12%, var(--surface)), color-mix(in oklab, var(--tone-violet) 8%, var(--surface)));border:1px solid color-mix(in oklab, var(--st-reserved) 30%, var(--border));margin-bottom:20px;padding:16px}.bookings-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.bookings-head h2{margin:0}.booking-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.booking-card{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--border);box-shadow:inset 4px 0 0 var(--pay-soon), var(--shadow);flex-direction:column;gap:6px;padding:14px;display:flex}.booking-card.paid{box-shadow:inset 4px 0 0 var(--pay-paid), var(--shadow)}.booking-card.overdue{box-shadow:inset 4px 0 0 var(--pay-overdue), var(--shadow)}.booking-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.booking-top .badge{margin:0}.booking-room{color:var(--text);background:color-mix(in oklab, var(--st-reserved) 14%, var(--surface));border-radius:8px;padding:2px 10px;font-size:1.05rem;font-weight:800}.booking-name{color:var(--text);font-size:1.05rem;font-weight:700}.booking-meta{flex-direction:column;gap:2px;font-size:.86rem;display:flex}.booking-actions{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.paid-now{background:color-mix(in oklab, var(--pay-paid) 8%, var(--surface-2));border-radius:12px;flex-direction:column;gap:8px;padding:12px;display:flex}.paid-now .check{margin:0}.cancel-choices{flex-direction:column;gap:8px;margin-top:12px;display:flex}.room-person .grow{flex:1}.card-book{justify-content:center;width:100%;margin-top:10px}button.hero-btn{font:inherit;cursor:pointer;border:none;font-weight:600}.badge-refund{background:color-mix(in oklab, var(--pay-refund) 14%, var(--surface));color:var(--pay-refund)}.checkout-inv{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.inv-group-sum b.refund{color:var(--pay-refund)}:root{--act-booking:#3b82f6;--act-deposit:#16a34a;--act-checkin:#0d9488;--act-cancel:#dc2626;--act-checkout:#ea580c;--act-refund:var(--pay-refund)}.act-booking{--act:var(--act-booking)}.act-deposit{--act:var(--act-deposit)}.act-checkin{--act:var(--act-checkin)}.act-cancel{--act:var(--act-cancel)}.act-checkout{--act:var(--act-checkout)}.act-refund{--act:var(--act-refund)}.activity-row{grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 0;display:grid}.activity-icon{background:color-mix(in oklab, var(--act) 14%, var(--surface));width:38px;height:38px;color:var(--act);border-radius:12px;justify-content:center;align-items:center;display:inline-flex}.activity-icon svg{width:19px;height:19px}.activity-main{min-width:0}.activity-title{flex-wrap:wrap;align-items:baseline;gap:2px 8px;display:flex}.activity-title b{color:var(--act)}.activity-title a{color:var(--text);font-weight:600}.activity-room{background:var(--surface-2);border-radius:8px;padding:0 8px;font-size:.85rem}.activity-status{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.activity-filters{gap:12px;display:grid}.chip-act svg{width:15px;height:15px;color:var(--act);vertical-align:-2px}.chip-act.active svg{color:inherit}.field-inline{align-items:center;gap:6px;display:inline-flex}@media (width<=760px){.activity-row{grid-template-columns:38px minmax(0,1fr)}.activity-status{grid-column:2;justify-content:flex-start}}.callout-warn{background:color-mix(in oklab, var(--pay-soon) 14%, var(--surface));color:var(--text)}.money-tiles{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.money-tile{--tone:var(--muted);border-radius:var(--r-md,14px);background:color-mix(in oklab, var(--tone) 10%, var(--surface));box-shadow:inset 3px 0 0 var(--tone);gap:2px;padding:12px 14px;display:grid}.money-tile small{color:var(--muted)}.money-tile b{color:var(--tone);font-size:1.15rem}.money-tile.ok{--tone:var(--pay-paid)}.money-tile.bad{--tone:var(--pay-overdue)}.money-tile.refund{--tone:var(--pay-refund)}.stay-row{border-radius:12px;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 6px;display:grid}.stay-row.current-row{background:var(--primary-container)}.stay-main{gap:4px;min-width:0;display:grid}.ledger-row{--k:var(--pay-unpaid);box-shadow:inset 3px 0 0 var(--k);padding:10px 0 10px 12px}.ledger-row.k-deposit{--k:#7c3aed}.ledger-row.k-refund{--k:var(--pay-refund)}.ledger-row.k-final{--k:var(--act-checkout)}.ledger-head{color:var(--text);justify-content:space-between;align-items:center;gap:12px;display:flex}.ledger-amount{white-space:nowrap;justify-items:end;gap:4px;display:grid}.ledger-pays{gap:2px;margin:6px 0 0;padding:0;font-size:.85rem;list-style:none;display:grid}.ledger-pays .in svg{color:var(--pay-paid)}.ledger-pays .out svg{color:var(--pay-refund)}@media (width<=760px){.stay-row{grid-template-columns:56px minmax(0,1fr)}.stay-row>.btn{grid-column:2;justify-self:start}}.activity-row.clickable{cursor:pointer;border-radius:12px}.activity-row.clickable:hover{background:var(--surface-2)}.photo-slot{text-align:center;min-width:0;padding:4px;font-size:.8rem}img.avatar-photo{object-fit:cover;background:var(--surface-2);border-radius:50%;flex-shrink:0}.person-docs{gap:14px;display:grid}button.photo-slot.empty{font:inherit;color:var(--text);background:var(--surface);cursor:pointer}button.photo-slot.empty:hover{border-color:var(--primary);background:var(--primary-container)}.photo-slot.filled{border-style:solid;padding:0;position:relative;overflow:hidden}.photo-view{background:var(--surface-2);cursor:zoom-in;border:0;padding:0;position:absolute;inset:0}.photo-view img{object-fit:cover;width:100%;height:100%}.photo-label{color:#fff;pointer-events:none;background:linear-gradient(#0000,#0009);padding:14px 6px 4px;font-size:.72rem;font-weight:600;position:absolute;bottom:0;left:0;right:0}.photo-actions{opacity:0;gap:2px;transition:opacity .15s;display:flex;position:absolute;top:4px;right:4px}.photo-slot.filled:hover .photo-actions,.photo-slot.filled:focus-within .photo-actions{opacity:1}@media (hover:none){.photo-actions{opacity:1}}.photo-actions .icon-btn{color:#111;background:#ffffffe6;border-radius:50%;width:28px;height:28px}.photo-actions .icon-btn svg{width:15px;height:15px}.doc-group{gap:6px;display:grid}.doc-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.file-thumb{object-fit:cover;border-radius:6px;flex-shrink:0;width:34px;height:34px}.doc-badges{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.role-dot{background:var(--surface-2);border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.role-dot svg{width:18px;height:18px}.role-super{background:color-mix(in oklab, #7c3aed 16%, var(--surface));color:#7c3aed}.role-admin{background:color-mix(in oklab, var(--primary) 16%, var(--surface));color:var(--primary)}.role-staff{background:color-mix(in oklab, #0d9488 16%, var(--surface));color:#0d9488}.page-end-actions{justify-content:flex-end;margin-top:16px}.danger-zone{border-color:color-mix(in oklab, var(--bad) 35%, var(--border))}.pay-table{border-collapse:collapse;width:100%;margin-top:12px;font-size:.88rem}.pay-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:6px;font-size:.74rem;font-weight:600}.pay-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 6px}.pay-table .num{text-align:right;white-space:nowrap}.pay-table .icon-btn{width:28px;height:28px}.actor{color:var(--text);font-weight:600}.act-payment{--act:var(--pay-paid)}.act-invoice{--act:var(--pay-unpaid)}.act-reading{--act:#ca8a04}.act-meter{--act:#db2777}.reading-input.locked{background:var(--surface-2);color:var(--muted);cursor:not-allowed}.reminders .card-head{flex-wrap:wrap;gap:6px 12px}.reminder-sum{flex-wrap:wrap;gap:6px;display:flex}.reminder-sum span{--lv:var(--pay-unpaid);background:color-mix(in oklab, var(--lv) 10%, var(--surface));color:var(--lv);border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:.78rem;font-weight:700;display:inline-flex}.reminder-sum span:before{content:"";background:var(--lv);border-radius:50%;width:7px;height:7px}.reminder-sum .lv-bad{--lv:var(--pay-overdue)}.reminder-sum .lv-warn{--lv:var(--pay-soon)}.reminder-list{grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.reminder{--lv:var(--pay-unpaid);border:1px solid var(--border);background:var(--surface);height:100%;color:var(--text);transition:background .2s var(--ease), border-color .2s var(--ease);border-radius:14px;grid-template-columns:36px minmax(0,1fr) 16px;align-items:center;gap:12px;padding:10px 12px;display:grid}.reminder:hover{background:var(--surface-2);border-color:color-mix(in oklab, var(--lv) 35%, var(--border))}.reminder.lv-bad{--lv:var(--pay-overdue)}.reminder.lv-warn{--lv:var(--pay-soon)}.reminder.lv-info{--lv:var(--pay-unpaid)}.reminder-icon{background:color-mix(in oklab, var(--lv) 13%, var(--surface));width:36px;height:36px;color:var(--lv);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.reminder-icon svg{width:18px;height:18px}.reminder-text{gap:2px;min-width:0;display:grid}.reminder-title{align-items:center;gap:6px;min-width:0;font-size:.92rem;display:flex}.reminder-title b{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.reminder-text small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.reminder-count{background:var(--lv);color:#fff;text-align:center;border-radius:999px;flex:none;min-width:20px;padding:0 6px;font-size:.72rem;font-weight:700;line-height:18px}.reminder-go{width:16px;height:16px;color:var(--muted)}@media (width<=760px){.reminder-list{grid-template-columns:1fr}}.nav-pill{position:relative}.nav-badge{background:var(--pay-overdue);color:#fff;text-align:center;border-radius:999px;min-width:18px;height:18px;padding:0 5px;font-size:.68rem;font-weight:700;line-height:18px;position:absolute;top:-4px;right:-6px}.restore-list{gap:6px;display:grid}.restore-item{border:1px solid var(--border);cursor:pointer;border-radius:12px;align-items:flex-start;gap:10px;padding:10px 12px;font-weight:400;display:flex}.restore-item.active{border-color:var(--primary);background:var(--primary-container)}.restore-item input{margin-top:4px}.reminder-house{background:var(--surface-2);color:var(--muted);border-radius:999px;flex:none;padding:1px 8px;font-size:.72rem;font-weight:600}.big-code{background:var(--surface-2);letter-spacing:.06em;word-break:break-all;text-align:center;border-radius:12px;padding:12px 14px;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:1.05rem;font-weight:700;display:block}.recovery-code{color:var(--primary);font-size:1.35rem}.recovery-view{gap:10px;display:grid}.code-row{align-items:center;gap:8px;display:flex}.code-row .big-code{flex:1}.support-box{background:var(--primary-container);color:var(--on-primary-container);border-radius:12px;gap:2px;padding:10px 14px;font-size:.9rem;display:grid}.auth-links{gap:6px;display:grid}textarea.mono,input.mono{font-family:ui-monospace,Consolas,monospace}.camera-card{gap:6px;display:grid}.camera-view{cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block;position:relative}.camera-zoom{color:#fff;background:#00000073;border-radius:8px;width:26px;height:26px;padding:4px;position:absolute;bottom:8px;right:8px}.live-img{aspect-ratio:16/9;background:#111;border-radius:12px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.live-img img{object-fit:contain;width:100%;height:100%}.live-img.has-error{background:var(--surface-2)}.live-error{text-align:center;color:var(--muted);justify-items:center;gap:6px;padding:12px;font-size:.82rem;display:grid}.live-error svg{width:26px;height:26px}.live-dot{color:#fff;letter-spacing:.06em;background:#dc2626e6;border-radius:999px;padding:2px 8px;font-size:.66rem;font-weight:800;position:absolute;top:8px;left:8px}.brand-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;display:grid}.brand-card{text-align:left;border:1px solid var(--border);background:var(--surface);font:inherit;color:var(--text);cursor:pointer;border-radius:14px;gap:4px;padding:14px;display:grid}.brand-card:hover{border-color:var(--primary);background:var(--primary-container)}.camera-test{gap:8px;display:grid}.input-with-btn{align-items:center;gap:6px;display:flex}.input-with-btn input{flex:1;min-width:0}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:1.2s linear infinite spin}.brand-step{gap:14px;display:grid}.brand-step>p{margin:0}.legal-text h3{margin:1.1em 0 .4em;font-size:1rem}.legal-text ul{margin:0 0 .6em;padding-left:1.2em}.legal-text li,.legal-text p{margin-bottom:.35em;line-height:1.55}.license-bar{--lv:var(--pay-unpaid);background:color-mix(in oklab, var(--lv) 12%, var(--surface));border:1px solid color-mix(in oklab, var(--lv) 35%, transparent);border-radius:16px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;padding:10px 14px;font-size:.9rem;display:flex}.license-bar>svg{color:var(--lv);flex:none;width:20px;height:20px}.license-bar>span{flex:280px}.license-bar.lv-bad{--lv:var(--pay-overdue)}.license-bar.lv-warn{--lv:var(--pay-soon)}.license-bar.lv-info{--lv:var(--primary)}.missing-bills{background:color-mix(in oklab, var(--pay-soon,#ea580c) 10%, var(--surface));border:1px dashed color-mix(in oklab, var(--pay-soon,#ea580c) 45%, transparent);border-radius:14px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;padding:10px 12px;display:flex}.first-inv{border-collapse:collapse;width:100%;margin:8px 0 10px}.first-inv td,.first-inv th{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:8px 4px}.first-inv .num{text-align:right;width:42%}.first-inv .num input{text-align:right}.first-inv tfoot th{border-bottom:0;font-size:1.05rem}.checkout-meter{background:var(--surface-2);border-radius:16px;margin:8px 0 12px;padding:12px 16px 4px}.checkout-meter h3{align-items:center;gap:8px;margin:0 0 8px;display:flex}.checkout-meter h3 svg{width:18px;height:18px}.checkout-meter-row{margin-bottom:8px}@media (width<=560px){.inv-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.receipt-state small{display:none}.receipt-total b{font-size:1rem}}.user-open{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:12px;flex:1;align-items:center;gap:10px;margin:-4px -6px;padding:4px 6px;display:flex}.user-open:hover{background:var(--surface-2)}.user-open-go{width:16px;height:16px;color:var(--muted);margin-left:auto}.user-head{align-items:center;gap:14px;margin-bottom:16px;display:flex}.user-avatar{border-radius:50%;flex:none;justify-content:center;align-items:center;width:56px;height:56px;font-size:1.2rem;font-weight:800;display:inline-flex}.user-head-text{flex:1;min-width:0}.user-head-text h2{margin:0 0 2px;font-size:1.25rem}.user-stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-bottom:18px;display:grid}.user-stats>div{background:var(--surface-2);border-radius:14px;gap:2px;padding:10px 12px;display:grid}.user-stats small{color:var(--muted);font-size:.76rem}.user-stats b{font-variant-numeric:tabular-nums;font-size:1.05rem}.profile-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 20px;margin:0 0 20px;display:grid}.profile-grid dt{color:var(--muted);font-size:.78rem}.profile-grid dd{overflow-wrap:anywhere;margin:2px 0 0;font-weight:600}.profile-grid dd.muted{font-weight:400}.audit-head{flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:10px;display:flex}.audit-head h3{flex:1;align-items:center;gap:8px;min-width:160px;margin:0;display:flex}.audit-head h3 svg{width:18px;height:18px}.search-box{border:1px solid var(--border);border-radius:var(--r-input);background:var(--surface);align-items:center;gap:8px;height:38px;padding:0 12px;display:flex}.search-box svg{width:16px;height:16px;color:var(--muted)}.search-box input{background:0 0;border:none;outline:none;min-width:200px;height:100%;min-height:0;padding:0}.audit-list{max-height:46vh;padding-right:4px;overflow-y:auto}.audit-list h4{background:var(--surface);color:var(--muted);margin:0;padding:6px 0;font-size:.8rem;font-weight:700;position:sticky;top:0}.audit-list ul{border-left:2px solid var(--border);margin:0 0 8px;padding:0 0 0 10px;list-style:none}.audit-row{grid-template-columns:48px minmax(0,1fr);gap:10px;padding:6px 0;display:grid}.audit-row time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.8rem}.audit-row b{font-size:.9rem;display:block}.audit-row small{color:var(--muted);overflow-wrap:anywhere;font-size:.8rem;display:block}.audit-row.act-login b,.audit-row.act-logout b{color:var(--muted);font-weight:500}@media (width<=560px){.search-box,.search-box input{width:100%;min-width:0}}.checkout-who{background:var(--surface-2);border-radius:12px;margin:0 0 10px;padding:8px 12px}.card.card-group>.card{border:0;border-top:1px solid var(--border);box-shadow:none;background:0 0;border-radius:0;margin:20px 0 0;padding:20px 0 0}.card.card-group>h2+.card,.card.card-group>.card-head+.card{border-top:0;margin-top:4px;padding-top:0}.card.card-group>.card h2,.card.card-group>.card .card-head h2{margin-bottom:12px;font-size:.95rem}.card.card-group>.card .card-head{margin-bottom:4px}.card.card-group>.card h2>svg{border-radius:0;width:20px;height:20px;padding:0;color:var(--primary)!important;background:0 0!important}:root[data-backdrop]{--backdrop:var(--backdrop-light);--glass:color-mix(in oklab, var(--bg) 72%, transparent);--glass-border:#ffffff8c;--hero-from:var(--bd-hero-from);--hero-to:var(--bd-hero-to);--card-shadow:0 1px 2px #1018280a, 0 14px 32px -20px color-mix(in oklab, var(--primary) 55%, transparent)}@media (prefers-color-scheme:dark){:root[data-backdrop]:not([data-theme=light]){--backdrop:var(--backdrop-dark);--glass:color-mix(in oklab, var(--bg) 74%, transparent);--glass-border:#ffffff14;--hero-from:color-mix(in oklab, var(--bd-hero-from) 68%, #0d1116);--hero-to:color-mix(in oklab, var(--bd-hero-to) 58%, #0d1116);--card-shadow:0 14px 32px -20px #0009}}:root[data-backdrop][data-theme=dark]{--backdrop:var(--backdrop-dark);--glass:color-mix(in oklab, var(--bg) 74%, transparent);--glass-border:#ffffff14;--hero-from:color-mix(in oklab, var(--bd-hero-from) 68%, #0d1116);--hero-to:color-mix(in oklab, var(--bd-hero-to) 58%, #0d1116);--card-shadow:0 14px 32px -20px #0009}:root[data-backdrop] body{background:var(--backdrop) center / cover fixed no-repeat, var(--bg)}:root[data-backdrop] body:before{display:none}:root[data-backdrop] .sidebar{background:color-mix(in oklab, var(--glass) 88%, transparent);-webkit-backdrop-filter:blur(20px)saturate(1.3);border-right:1px solid var(--glass-border)}:root[data-backdrop] .content{border-radius:var(--r-xl);background:var(--glass);-webkit-backdrop-filter:blur(28px)saturate(1.2);border:1px solid var(--glass-border);align-self:flex-start;min-height:calc(100vh - 40px);margin:20px auto;box-shadow:0 24px 60px -24px #00000059}:root[data-backdrop] .content .card:not(.card-group>.card){box-shadow:var(--card-shadow);border-color:color-mix(in oklab, var(--primary) 10%, var(--border))}:root[data-backdrop] .nav-item.active{background:linear-gradient(120deg, var(--hero-from), var(--hero-to));color:#fff;box-shadow:0 8px 20px -10px color-mix(in oklab, var(--hero-from) 80%, transparent)}:root[data-backdrop] .nav-item.active .nav-pill{background:#ffffff2e}:root[data-backdrop] .btn-primary{background:linear-gradient(120deg, var(--hero-from), var(--hero-to));color:#fff}:root[data-backdrop] .btn-primary:hover{background:linear-gradient(120deg, color-mix(in oklab, var(--hero-from) 88%, #000), color-mix(in oklab, var(--hero-to) 88%, #000))}:root[data-backdrop] .segmented button.active{color:var(--primary)}:root[data-backdrop] h1{background:linear-gradient(100deg, var(--text) 30%, var(--primary));color:#0000;-webkit-background-clip:text;background-clip:text}:root[data-backdrop] .hero h1{color:inherit;background:0 0}@media (width<=760px){:root[data-backdrop] .sidebar{border-right:0}:root[data-backdrop] .nav-item.active{color:var(--text);box-shadow:none;background:0 0}:root[data-backdrop] .nav-item.active .nav-pill{background:linear-gradient(120deg, var(--hero-from), var(--hero-to));color:#fff}:root[data-backdrop] .content{border-radius:var(--r-lg);min-height:calc(100vh - 20px);margin:10px}}@media print{:root[data-backdrop] body{background:#fff}:root[data-backdrop] .content{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0;margin:0}}.theme-opt{flex-direction:column;gap:6px;display:flex}.backdrop-tiles{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;max-width:820px;display:grid}.backdrop-tile{border-radius:var(--r-md);background:var(--surface-2);color:var(--text);font:600 .85rem var(--font);cursor:pointer;text-align:center;border:2px solid #0000;flex-direction:column;gap:6px;padding:6px 6px 8px;display:flex}.backdrop-tile.active{border-color:var(--primary);background:var(--primary-container)}.backdrop-thumb{border-radius:var(--r-sm);background-position:50%;background-size:cover;height:64px;display:block}.kv{grid-template-columns:max-content minmax(0,1fr)}.kv dd{overflow-wrap:anywhere;min-width:0}.btn{max-width:100%}.template-row{flex-wrap:wrap}.template-name{overflow-wrap:anywhere;flex:220px;min-width:0}.template-actions{flex-shrink:0;margin-left:auto}@media (width<=600px){.kv{grid-template-columns:minmax(0,1fr);gap:2px}.kv dd+dt{margin-top:8px}.btn{white-space:normal;text-align:center;height:auto;min-height:42px;padding-block:8px}.btn-sm{min-height:34px;padding-block:6px}}.license-request{border-radius:var(--r-md);background:var(--surface-2);padding:16px}.license-request h3{align-items:center;gap:8px;margin:0 0 6px;font-size:.95rem;display:flex}.license-request h3 svg{width:18px;height:18px;color:var(--primary)}.license-request .segmented{border-radius:var(--r-md);flex-wrap:wrap}.license-request-text{resize:vertical;width:100%;font:.86rem/1.6 var(--font);border:1px solid var(--border);border-radius:var(--r-input);background:var(--surface);color:var(--text);padding:10px 12px;display:block}.mail-note{color:var(--muted);overflow-wrap:anywhere;margin:8px 0 0}.mail-note b{color:var(--text);font-weight:600}.selectable{-webkit-user-select:all;user-select:all}
