@import"https://fonts.googleapis.com/css2?family=Prompt:wght@400;500;600;700&family=Bai+Jamjuree:wght@400;500;600;700&family=DM+Mono:wght@400;500&display=swap";:root{--neutral-0:#ffffff;--neutral-25:#fffdf9;--neutral-50:#faf6f0;--neutral-100:#f3ede4;--neutral-200:#e8e0d4;--neutral-300:#d3c9ba;--neutral-400:#a99f92;--neutral-500:#7c7368;--neutral-600:#5e564d;--neutral-700:#443e37;--neutral-800:#2e2a25;--neutral-900:#1f1b17;--primary-50:#f0f6fd;--primary-100:#ddeafa;--primary-200:#bfd6f4;--primary-300:#a0c3ee;--primary-400:#8fb9eb;--primary-500:#80b0e8;--primary-600:#6a9ddd;--primary-700:#3f74b8;--primary-800:#2e5890;--primary-900:#1f3d66;--accent-50:#fef9e3;--accent-100:#fcefb5;--accent-300:#f8e07a;--accent-500:#f4d242;--accent-700:#7a6300;--coral-50:#fdf0f6;--coral-100:#fbe1ee;--coral-300:#f29cc3;--coral-500:#f29cc3;--coral-600:#e27aaa;--coral-700:#a8406f;--peony-100:#ffe3e3;--peony-300:#ffc0c0;--peony-700:#a8473f;--lavender-100:#ede9f7;--lavender-300:#d1caea;--lavender-700:#5e4f9a;--lime-100:#f3f2cc;--lime-300:#d6d35f;--lime-700:#626018;--tropical-100:#d3ece7;--tropical-500:#008471;--tropical-700:#00614f;--tomato-100:#f6dcd2;--tomato-500:#c45f3f;--tomato-700:#9e4529;--pond-100:#e9eadb;--pond-500:#898e46;--pond-700:#5c602c;--success-50:#e6f4f1;--success-100:#c7e6df;--success-500:#008471;--success-700:#00614f;--warning-50:#fef9e3;--warning-100:#fcefb5;--warning-500:#f4d242;--warning-700:#7a6300;--danger-50:#fbeee9;--danger-100:#f6dcd2;--danger-500:#c45f3f;--danger-700:#9e4529;--info-50:#f4f2fa;--info-100:#ede9f7;--info-500:#a89ddb;--info-700:#5e4f9a;--unit-room:var(--primary-500);--unit-room-bg:var(--primary-50);--unit-shop:var(--coral-500);--unit-shop-bg:var(--coral-50);--surface-app:var(--neutral-50);--surface-card:var(--neutral-0);--surface-sunken:var(--neutral-100);--surface-raised:var(--neutral-0);--surface-inverse:var(--neutral-900);--surface-nav:var(--neutral-0);--surface-hover:var(--neutral-50);--surface-active:var(--neutral-100);--surface-selected:var(--primary-50);--surface-highlight:var(--accent-50);--surface-overlay:rgba(31,27,23,.42);--text-heading:var(--neutral-900);--text-body:var(--neutral-800);--text-muted:var(--neutral-500);--text-subtle:var(--neutral-400);--text-inverse:var(--neutral-0);--text-on-primary:var(--neutral-900);--text-brand:var(--primary-700);--text-link:var(--primary-700);--text-link-hover:var(--primary-900);--text-success:var(--success-700);--text-warning:var(--warning-700);--text-danger:var(--danger-700);--text-money-in:var(--success-700);--text-money-out:var(--danger-700);--brand-ink:var(--neutral-900);--border-subtle:var(--neutral-100);--border-default:var(--neutral-200);--border-strong:var(--neutral-300);--border-focus:var(--primary-700);--border-inverse:rgba(255,255,255,.16);--action-primary:var(--primary-500);--action-primary-hover:var(--primary-600);--action-primary-press:var(--primary-600);--action-accent:var(--accent-500);--action-accent-hover:var(--accent-300);--action-danger:var(--danger-500);--action-danger-hover:var(--danger-700);--focus-ring:0 0 0 4px rgba(128,176,232,.35)}:root{--font-display:"Prompt","Bai Jamjuree",system-ui,sans-serif;--font-body:"Bai Jamjuree",system-ui,sans-serif;--font-brand:"Prompt","Bai Jamjuree",system-ui,sans-serif;--font-mono:"DM Mono",ui-monospace,monospace;--font-numeric:"DM Mono",ui-monospace,monospace;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--text-2xs:11px;--text-xs:12px;--text-sm:13px;--text-md:14px;--text-lg:16px;--text-xl:18px;--text-2xl:22px;--text-3xl:26px;--text-4xl:36px;--leading-tight:1.2;--leading-snug:1.35;--leading-normal:1.55;--leading-relaxed:1.7;--tracking-tight:-.01em;--tracking-normal:0;--tracking-wide:.04em;--tracking-caps:.08em;--type-page-title:var(--weight-medium) var(--text-3xl)/var(--leading-tight) var(--font-display);--type-section-title:var(--weight-medium) var(--text-xl)/var(--leading-snug) var(--font-display);--type-card-title:var(--weight-semibold) var(--text-md)/var(--leading-snug) var(--font-body);--type-body:var(--weight-regular) var(--text-md)/var(--leading-normal) var(--font-body);--type-body-sm:var(--weight-regular) var(--text-sm)/var(--leading-normal) var(--font-body);--type-label:var(--weight-medium) var(--text-sm)/var(--leading-snug) var(--font-body);--type-caption:var(--weight-regular) var(--text-xs)/var(--leading-snug) var(--font-body);--type-overline:var(--weight-semibold) var(--text-2xs)/var(--leading-snug) var(--font-body);--type-metric:var(--weight-medium) var(--text-3xl)/var(--leading-tight) var(--font-display);--type-amount:var(--weight-medium) var(--text-md)/var(--leading-snug) var(--font-numeric)}:root{--space-0:0px;--space-1:2px;--space-2:4px;--space-3:6px;--space-4:8px;--space-5:12px;--space-6:16px;--space-7:20px;--space-8:24px;--space-9:32px;--space-10:40px;--space-11:48px;--space-12:64px;--sidebar-width:256px;--sidebar-width-collapsed:72px;--topbar-height:64px;--page-gutter:var(--space-8);--page-max:1440px;--grid-gap:var(--space-6);--control-h-sm:32px;--control-h-md:38px;--control-h-lg:44px;--row-h:48px;--row-h-compact:40px}:root{--radius-xs:6px;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:24px;--radius-pill:999px;--radius-control:var(--radius-sm);--radius-card:var(--radius-lg);--radius-modal:var(--radius-xl);--border-width:1px;--border-width-strong:1.5px}:root{--shadow-none:none;--shadow-xs:0 1px 2px rgba(31,27,23,.05);--shadow-sm:0 1px 2px rgba(31,27,23,.04), 0 4px 12px rgba(63,116,184,.06);--shadow-md:0 10px 28px rgba(63,116,184,.12), 0 2px 6px rgba(31,27,23,.06);--shadow-lg:0 24px 56px rgba(31,27,23,.2);--shadow-brand:0 6px 16px rgba(63,116,184,.24);--shadow-inset-top:inset 0 1px 0 rgba(255,255,255,.6);--shadow-card:var(--shadow-sm);--shadow-popover:var(--shadow-md);--shadow-modal:var(--shadow-lg)}:root{--duration-instant:80ms;--duration-fast:.12s;--duration-base:.18s;--duration-slow:.26s;--ease-standard:cubic-bezier(.2,0,.2,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--ease-spring:cubic-bezier(.34,1.4,.64,1);--transition-control:background-color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out), transform var(--duration-instant) var(--ease-out)}*,*:before,*:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;font:var(--type-body);color:var(--text-body);background:var(--surface-app);text-wrap:pretty}h1,h2,h3,h4{margin:0;color:var(--text-heading);font-family:var(--font-display);font-weight:var(--weight-medium);letter-spacing:0}p{margin:0}a{color:var(--text-link);text-decoration:none}a:hover{color:var(--text-link-hover);text-decoration:underline;text-underline-offset:2px}button{font:inherit}:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}@keyframes hgh-spin{to{transform:rotate(360deg)}}.ic{display:inline-block;flex-shrink:0;background-color:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);height:var(--control-h-md);padding:0 var(--space-6);font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:0;border-radius:var(--radius-control);cursor:pointer;white-space:nowrap;transition:var(--transition-control);text-decoration:none}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{height:var(--control-h-sm);padding:0 var(--space-5);font-size:var(--text-xs)}.btn-full{width:100%}.btn-primary{background:var(--action-primary);color:var(--text-on-primary);border:1px solid var(--action-primary)}.btn-primary:hover:not(:disabled){background:var(--action-primary-hover);box-shadow:var(--shadow-brand)}.btn-secondary{background:var(--surface-card);color:var(--text-body);border:1px solid var(--border-default)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover)}.btn-ghost{background:transparent;color:var(--text-body);border:1px solid transparent}.btn-ghost:hover:not(:disabled){background:var(--surface-hover)}.icon-btn{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:var(--radius-control);color:var(--text-muted);cursor:pointer;transition:var(--transition-control);background:var(--surface-card);border:1px solid var(--border-default)}.icon-btn:hover{background:var(--surface-hover)}.icon-btn.ghost{background:transparent;border-color:transparent}.input{display:flex;align-items:center;gap:var(--space-3);height:var(--control-h-md);padding:0 var(--space-5);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-control);transition:var(--transition-control)}.input:focus-within{border-color:var(--border-focus);box-shadow:var(--focus-ring)}.input.sm{height:var(--control-h-sm)}.input.invalid{border-color:var(--danger-500)}.input .prefix{display:flex;color:var(--text-subtle);flex-shrink:0}.input input{flex:1;min-width:0;border:none;outline:none;background:transparent;font:var(--type-body-sm);color:var(--text-body);font-family:var(--font-body)}.input input::placeholder{color:var(--text-subtle)}.input.num input{text-align:right;font-family:var(--font-numeric);font-variant-numeric:tabular-nums}.input.num input::placeholder{font-family:var(--font-body)}.input.tinted{background:var(--primary-50)}.avatar{border-radius:var(--radius-pill);overflow:hidden;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:var(--primary-100);color:var(--primary-700);font:var(--type-caption);font-weight:var(--weight-semibold)}.badge{display:inline-flex;align-items:center;gap:var(--space-3);height:24px;padding:0 var(--space-5);border-radius:var(--radius-pill);font:var(--type-caption);font-weight:var(--weight-semibold);white-space:nowrap;background:var(--b-bg);color:var(--b-fg)}.badge.sm{height:20px;padding:0 var(--space-4)}.badge .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.badge.neutral{--b-bg:var(--neutral-100);--b-fg:var(--neutral-700)}.badge.brand{--b-bg:var(--primary-100);--b-fg:var(--primary-800)}.badge.success{--b-bg:var(--success-50);--b-fg:var(--success-700)}.badge.warning{--b-bg:var(--warning-50);--b-fg:var(--warning-700)}.badge.danger{--b-bg:var(--danger-50);--b-fg:var(--danger-700)}.badge.info{--b-bg:var(--lavender-100);--b-fg:var(--lavender-700)}.badge.accent{--b-bg:var(--accent-100);--b-fg:var(--accent-700)}.badge.coral{--b-bg:var(--coral-100);--b-fg:var(--coral-700)}.badge.lime{--b-bg:var(--lime-100);--b-fg:var(--lime-700)}.badge.peony{--b-bg:var(--peony-100);--b-fg:var(--peony-700)}.card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-card);box-shadow:var(--shadow-card);overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);padding:var(--space-6) var(--space-7);border-bottom:1px solid var(--border-subtle)}.card-title{font:var(--type-card-title);font-family:var(--font-display);font-weight:var(--weight-medium);font-size:var(--text-lg);color:var(--text-heading)}.card-sub{font:var(--type-caption);color:var(--text-muted);margin-top:2px}.card-body{padding:var(--space-7)}.card-body.flush{padding:0}.stat{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:var(--space-7)}.stat-top{display:flex;align-items:center;gap:var(--space-5)}.stat-chip{width:40px;height:40px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--s-bg);color:var(--s-fg)}.stat-label{font:var(--type-label);color:var(--text-muted)}.stat-val{display:flex;align-items:baseline;gap:var(--space-3);margin-top:var(--space-6)}.stat-val b{font:var(--type-metric);color:var(--text-heading);font-variant-numeric:tabular-nums}.stat-val span{font:var(--type-body-sm);color:var(--text-muted)}.stat-foot{display:flex;align-items:center;gap:var(--space-4);margin-top:var(--space-4);flex-wrap:wrap}.stat-delta{font:var(--type-caption);font-weight:var(--weight-semibold);padding:1px 8px;border-radius:var(--radius-pill);color:var(--text-success);background:var(--success-50)}.stat-note{font:var(--type-caption);color:var(--text-subtle)}.tone-brand{--s-bg:var(--primary-500);--s-fg:var(--neutral-900)}.tone-sun{--s-bg:var(--accent-500);--s-fg:var(--neutral-900)}.tone-coral{--s-bg:var(--coral-300);--s-fg:var(--neutral-900)}.tone-lavender{--s-bg:var(--lavender-300);--s-fg:var(--neutral-900)}.tone-lime{--s-bg:var(--lime-300);--s-fg:var(--neutral-900)}.tone-peony{--s-bg:var(--peony-300);--s-fg:var(--neutral-900)}.tone-success{--s-bg:var(--success-50);--s-fg:var(--success-700)}.tone-danger{--s-bg:var(--danger-50);--s-fg:var(--danger-700)}.tone-neutral{--s-bg:var(--neutral-100);--s-fg:var(--neutral-600)}.progress-top{display:flex;justify-content:space-between;margin-bottom:var(--space-3);font:var(--type-caption);color:var(--text-muted)}.progress-top .v{color:var(--text-body);font-family:var(--font-numeric);font-variant-numeric:tabular-nums}.progress{height:8px;border-radius:var(--radius-pill);background:var(--neutral-100);overflow:hidden}.progress>div{height:100%;border-radius:var(--radius-pill);background:var(--success-500);transition:width var(--duration-slow) var(--ease-out)}.unit{display:flex;flex-direction:column;gap:6px;text-align:left;cursor:pointer;min-width:0;padding:var(--space-5);border-radius:var(--radius-md);font-family:var(--font-body);transition:var(--transition-control);background:var(--unit-room-bg);border:1px solid transparent;--hue:var(--unit-room);--code:var(--primary-800)}.unit.shop{background:var(--unit-shop-bg);--hue:var(--unit-shop);--code:var(--coral-700)}.unit.vacant{background:var(--surface-card);border:1px dashed var(--border-default);--code:var(--text-muted)}.unit.sel{border:2px solid var(--hue)}.unit:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.unit-top{display:flex;align-items:center;justify-content:space-between;gap:6px}.unit-code{font-family:var(--font-display);font-weight:500;font-size:var(--text-lg);line-height:1.1;color:var(--code);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unit-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.unit-tenant{font:var(--type-caption);color:var(--text-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unit.vacant .unit-tenant{color:var(--text-subtle)}.unit-rent{font-family:var(--font-numeric);font-size:var(--text-2xs);color:var(--text-muted)}.alert{display:flex;gap:var(--space-5);padding:var(--space-5) var(--space-6);border-radius:var(--radius-md);background:var(--a-bg);border:1px solid var(--a-bd)}.alert-title{font:var(--type-label);color:var(--a-fg)}.alert-title+.alert-body{margin-top:2px}.alert-body{font:var(--type-body-sm);color:var(--text-body)}.alert.info{--a-bg:var(--info-50);--a-bd:var(--info-100);--a-fg:var(--info-700)}.alert.success{--a-bg:var(--success-50);--a-bd:var(--success-100);--a-fg:var(--success-700)}.alert.warning{--a-bg:var(--warning-50);--a-bd:var(--warning-100);--a-fg:var(--warning-700)}.alert.danger{--a-bg:var(--danger-50);--a-bd:var(--danger-100);--a-fg:var(--danger-700)}.toast{display:flex;gap:var(--space-5);min-width:280px;max-width:420px;padding:var(--space-5) var(--space-6);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-md);animation:toast-in var(--duration-slow) var(--ease-spring)}.toast .ic-wrap{color:var(--text-success);display:flex;margin-top:1px}.toast-title{flex:1;min-width:0;font:var(--type-label);color:var(--text-heading)}.toast-x{border:none;background:none;cursor:pointer;color:var(--text-subtle);font-size:15px;line-height:1;padding:0}@keyframes toast-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}.switch{display:inline-flex;align-items:center;cursor:pointer;border:none;background:none;padding:0}.switch-track{width:34px;height:20px;border-radius:var(--radius-pill);padding:2px;flex-shrink:0;background:var(--neutral-300);transition:background-color var(--duration-base) var(--ease-out)}.switch-knob{display:block;width:16px;height:16px;border-radius:50%;background:var(--neutral-0);box-shadow:var(--shadow-xs);transition:transform var(--duration-base) var(--ease-spring)}.switch.on .switch-track{background:var(--action-primary)}.switch.on .switch-knob{transform:translate(14px)}.seg{display:inline-flex;padding:3px;gap:2px;background:var(--surface-sunken);border-radius:var(--radius-pill);max-width:100%;overflow-x:auto}.seg button{border:none;cursor:pointer;height:var(--control-h-sm);padding:0 var(--space-5);border-radius:var(--radius-pill);background:transparent;color:var(--text-muted);font:var(--type-label);font-weight:var(--weight-semibold);white-space:nowrap;transition:var(--transition-control)}.seg button.on{background:var(--action-primary);box-shadow:var(--shadow-brand);color:var(--text-on-primary)}.nav-item{display:flex;align-items:center;gap:var(--space-5);width:100%;height:42px;padding:0 var(--space-5);border:none;cursor:pointer;text-align:left;border-radius:var(--radius-md);background:transparent;color:var(--neutral-600);font:var(--type-label);font-size:var(--text-md);font-weight:var(--weight-medium);transition:var(--transition-control);text-decoration:none}.nav-item:hover{text-decoration:none}.nav-item:hover{background:var(--surface-hover);color:var(--text-heading)}.nav-item.active{background:var(--action-primary);box-shadow:var(--shadow-brand);color:var(--text-on-primary);font-weight:var(--weight-semibold)}.nav-item .lbl{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-badge{min-width:22px;height:20px;padding:0 7px;border-radius:var(--radius-pill);background:var(--coral-300);color:var(--neutral-900);font:var(--type-caption);font-weight:var(--weight-semibold);font-family:var(--font-numeric);display:inline-flex;align-items:center;justify-content:center}.nav-item.active .nav-badge{background:var(--neutral-0)}.btn-danger{background:var(--action-danger);color:var(--text-inverse);border:1px solid var(--action-danger)}.btn-danger:hover:not(:disabled){background:var(--action-danger-hover)}html,body{height:100%}body{background:var(--surface-app)}.num{font-family:var(--font-numeric);font-variant-numeric:tabular-nums}.r{text-align:right}.muted{color:var(--text-muted)}.app{display:flex;height:100vh;height:100dvh;background:var(--surface-app);font-family:var(--font-body);color:var(--text-body)}.sidebar{width:var(--sidebar-width);flex-shrink:0;height:100%;display:flex;flex-direction:column;background:var(--surface-nav);border-right:1px solid var(--border-subtle)}.sb-logo{padding:var(--space-7) var(--space-7) var(--space-5);display:flex;justify-content:center;flex-shrink:0}.sb-logo img{width:100%;max-width:176px;height:auto;display:block}.sb-scroll{flex:1;overflow-y:auto;padding:var(--space-4) var(--space-5)}.sb-sec{margin-bottom:var(--space-6)}.sb-label{font:var(--type-caption);font-weight:var(--weight-semibold);color:var(--text-subtle);padding:var(--space-4) var(--space-5) var(--space-3)}.sb-items{display:flex;flex-direction:column;gap:4px}.scrim{display:none}.col{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:var(--topbar-height);flex-shrink:0;display:flex;align-items:center;gap:16px;padding:0 24px;background:var(--surface-card);border-bottom:1px solid var(--border-subtle)}.topbar .search{flex:1;max-width:420px}.topbar .spacer{flex:1}.topbar .date{font:var(--type-caption);color:var(--text-muted);white-space:nowrap}.menu-btn{display:none}.me{display:flex;align-items:center;gap:10px;padding-left:8px;border-left:1px solid var(--border-subtle)}.me-text{display:flex;flex-direction:column}.me-name{font:var(--type-label);color:var(--text-heading)}.me-role{font:var(--type-caption);color:var(--text-muted)}.main{flex:1;overflow-y:auto}.page{max-width:1320px;margin:0 auto;padding:32px 24px 48px}.ph{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}.ph h1{margin:0;font-family:var(--font-display);font-weight:500;font-size:26px;line-height:1.2;color:var(--text-heading)}.ph p{margin:4px 0 0;font:var(--type-body-sm);color:var(--text-muted)}.ph-actions{display:flex;gap:8px;flex-wrap:wrap}.legend{display:flex;gap:14px;font:var(--type-caption);color:var(--text-muted);align-items:center;flex-wrap:wrap}.legend>span{display:flex;align-items:center;gap:6px}.legend .d{width:8px;height:8px;border-radius:50%}.legend .sq{width:10px;height:10px;border-radius:3px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:20px}.kpis.wide{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.duo{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr));gap:20px;margin-bottom:20px}.duo.last{margin-bottom:0}.split{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}.split.mb{margin-bottom:20px}.split>.big{flex:3 1 560px;min-width:0}.split>.small{flex:1 1 300px;min-width:0}.stack{display:flex;flex-direction:column;gap:20px}.mb16{margin-bottom:16px}.xscroll{overflow-x:auto}.t-head,.t-row,.t-foot{display:grid;grid-template-columns:var(--cols);gap:12px;align-items:center;padding:0 20px}.t-head{padding:10px 20px;background:var(--neutral-25);border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-default);font:var(--type-caption);font-weight:600;color:var(--text-muted)}.t-head.no-top{border-top:none}.t-row{min-height:48px;border-bottom:1px solid var(--border-subtle);font:var(--type-body-sm)}.t-foot{min-height:52px;background:var(--neutral-25);font:var(--type-body-sm);font-weight:600;color:var(--text-heading)}.kv{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border-subtle);font:var(--type-body-sm)}.kv>:first-child{color:var(--text-muted)}.kv>:last-child{color:var(--text-heading);text-align:right}.kv.tight{padding:8px 0}.kv.t9{padding:9px 0}.big-amt{display:flex;flex-direction:column}.big-amt .l{font:var(--type-caption);color:var(--text-muted)}.big-amt .v{font-family:var(--font-display);font-size:26px;line-height:1.3;color:var(--text-heading)}.big-amt .v small{font-size:14px;color:var(--text-muted)}.chip-code{height:26px;padding:0 8px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:500;font-size:14px;white-space:nowrap}.chip-code.shop{background:var(--unit-shop-bg);color:var(--coral-700)}.chip-code.room{background:var(--unit-room-bg);color:var(--primary-700);min-width:48px}.step{display:flex;align-items:center;gap:14px;padding:14px 20px;border-top:1px solid var(--border-subtle)}.step:first-child{border-top:none}.step-dot{width:30px;height:30px;flex-shrink:0;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:14px}.step-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.step-txt b{font:var(--type-label);color:var(--text-heading)}.step-txt span{font:var(--type-caption);color:var(--text-muted)}.stream{display:flex;flex-direction:column;gap:8px}.stream-top{display:flex;align-items:center;gap:10px}.stream-top .sw{width:10px;height:10px;border-radius:3px}.stream-top .lb{font:var(--type-label);color:var(--text-heading);flex:1}.stream-top .g{font-family:var(--font-numeric);font-size:15px;color:var(--text-heading)}.stream-bar{height:10px;border-radius:999px;background:var(--neutral-100);overflow:hidden;display:flex}.stream-bar>div{transition:width var(--duration-slow) var(--ease-out)}.stream-foot{display:flex;justify-content:space-between;gap:12px;font:var(--type-caption);color:var(--text-muted)}.chart{display:flex;align-items:flex-end;gap:18px;height:200px}.bar-col{flex:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:8px}.bar-col .t{font-family:var(--font-numeric);font-size:12px}.bar-col .m{font:var(--type-caption)}.bar{width:100%;max-width:46px;display:flex;flex-direction:column;gap:3px}.bar .p{background:var(--lime-300);border-radius:8px 8px 3px 3px}.bar .ro{background:var(--primary-500);border-radius:3px}.bar .s{background:var(--coral-500);border-radius:3px 3px 8px 8px}.chart-legend{display:flex;gap:18px;margin-top:16px;flex-wrap:wrap}.feed{display:flex;flex-direction:column;gap:14px}.feed-row{display:flex;gap:12px;align-items:flex-start}.feed-ic{width:32px;height:32px;flex-shrink:0;border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--neutral-900)}.feed-row .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.feed-row .tx b{font:var(--type-body-sm);color:var(--text-body);text-wrap:pretty}.feed-row .tx span{font:var(--type-caption);color:var(--text-subtle)}.tiles{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.tiles.rooms{grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}.store-tile{padding:12px;border-radius:14px;background:var(--neutral-100);display:flex;flex-direction:column;gap:6px;min-height:72px}.store-tile b{font-family:var(--font-display);font-weight:400;font-size:18px;color:var(--text-subtle)}.store-tile span{font:var(--type-caption);color:var(--text-muted)}.sticky{position:sticky;top:0}.shop-unit{display:flex;flex-direction:column;gap:3px;align-items:flex-start}.cap{font:var(--type-caption);color:var(--text-subtle)}.tenant{display:flex;flex-direction:column;gap:2px;min-width:0}.tenant b{font-weight:400;color:var(--text-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tenant span{font:var(--type-caption)}.shop-rows .t-row{min-height:56px;padding-top:6px;padding-bottom:6px}.meter{width:100px}.inbox-row{display:flex;gap:12px;align-items:center;padding:14px 20px;border-top:1px solid var(--border-subtle);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out);width:100%;border-left:none;border-right:none;border-bottom:none;background:transparent;text-align:left;font:inherit;color:inherit}.inbox-row:first-child{border-top:none}.inbox-row:hover{background:var(--surface-hover)}.inbox-row.on{background:var(--primary-50)}.inbox-row .who{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.inbox-row .who b{font:var(--type-label);color:var(--text-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inbox-row .who span{font:var(--type-caption);color:var(--text-muted)}.inbox-row .amt{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.inbox-row .amt span{font-family:var(--font-numeric);font-size:13px;color:var(--text-heading)}.empty{padding:40px 20px;text-align:center;font:var(--type-body-sm);color:var(--text-muted)}.slip-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:20px}.docs{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-self:start}.doc{display:flex;flex-direction:column;gap:6px}.doc-img{aspect-ratio:3/4;border-radius:14px;border:1px solid var(--border-default);display:flex;align-items:center;justify-content:center;font-family:var(--font-numeric);font-size:12px;color:var(--text-muted);background:repeating-linear-gradient(135deg,var(--neutral-50) 0 8px,var(--neutral-100) 8px 16px)}.doc-img.slip{color:var(--primary-800);background:repeating-linear-gradient(135deg,var(--primary-50) 0 8px,var(--primary-100) 8px 16px)}.doc span{font:var(--type-caption);color:var(--text-muted)}.slip-side{display:flex;flex-direction:column;gap:14px}.slip-total{display:flex;justify-content:space-between;padding:12px 0 0;font-weight:600;color:var(--text-heading)}.slip-read{display:flex;justify-content:space-between;padding:6px 0 0;font:var(--type-body-sm);color:var(--text-muted)}.cal{min-width:760px;display:flex;flex-direction:column;gap:3px}.cal-row{display:grid;grid-template-columns:48px repeat(30,minmax(0,1fr));gap:3px;align-items:center}.cal-row.days{font-family:var(--font-numeric);font-size:10px;color:var(--text-subtle)}.cal-row.days span{text-align:center}.cal-row .no{font-family:var(--font-display);font-size:12px;color:var(--primary-800)}.cal-row .c{height:14px;border-radius:4px}.cal-legend{display:flex;gap:18px;margin-top:14px;flex-wrap:wrap}.cal-legend .sum{margin-left:auto}.rate{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;border-top:1px solid var(--border-subtle)}.rate:first-child{border-top:none}.rate .l{display:flex;flex-direction:column;gap:2px}.rate .l b{font:var(--type-label);color:var(--text-heading)}.rate .l span{font:var(--type-caption);color:var(--text-muted)}.rate .v{font-family:var(--font-numeric);font-size:15px;color:var(--text-heading);white-space:nowrap}.promos{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:16px}.promo{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:20px;display:flex;flex-direction:column;gap:14px;transition:opacity var(--duration-base) var(--ease-out)}.promo.off{opacity:.6}.promo-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.promo-ic{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--neutral-900)}.promo-name{font-family:var(--font-display);font-size:16px;font-weight:500;color:var(--text-heading)}.promo-rule{font:var(--type-body-sm);color:var(--text-muted);text-wrap:pretty}.promo-foot{display:flex;justify-content:space-between;gap:12px;padding-top:12px;border-top:1px solid var(--border-subtle);font:var(--type-caption);color:var(--text-muted);margin-top:auto}.tier{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;font:var(--type-body-sm);color:var(--text-muted)}.tier.on{background:var(--primary-100);color:var(--primary-800);font-weight:600}.tier .num{color:inherit}.split-bar{display:flex;height:40px;border-radius:12px;overflow:hidden}.split-bar>div{flex:1;display:flex;align-items:center;padding:0 14px;font:var(--type-label)}.pay-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.col-card{display:flex;flex-direction:column;gap:16px;height:100%}.duo>.card{display:flex;flex-direction:column}.duo>.card>.card-body{flex:1}.exp-files{display:flex;justify-content:flex-end;align-items:center;gap:4px;color:var(--text-muted);font-family:var(--font-numeric);font-size:12px}.toast-host{position:fixed;right:24px;bottom:24px;z-index:50}@media(max-width:960px){.sidebar{position:fixed;inset:0 auto 0 0;z-index:40;transform:translate(-100%);transition:transform var(--duration-slow) var(--ease-out);box-shadow:var(--shadow-lg)}.app.nav-open .sidebar{transform:none}.app.nav-open .scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:var(--surface-overlay)}.menu-btn{display:inline-flex}.topbar{gap:12px;padding:0 16px}.topbar .date,.me-text{display:none}.me{padding-left:0;border-left:none}.page{padding:24px 16px 40px}.sticky{position:static}}@media(max-width:560px){.topbar .search{display:none}.topbar .spacer{display:block}.toast-host{left:16px;right:16px;bottom:16px}.toast{min-width:0;max-width:none}.cal-legend .sum{margin-left:0}}#root{height:100%}.boot{min-height:100vh;display:flex;align-items:center;justify-content:center;font:var(--type-body);color:var(--text-muted);padding:24px;text-align:center}.boot.inline{min-height:240px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.select{position:relative;display:inline-flex}.select select{-moz-appearance:none;appearance:none;-webkit-appearance:none;height:var(--control-h-md);padding:0 34px 0 12px;border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-card);font:var(--type-body-sm);font-weight:500;color:var(--text-body);cursor:pointer}.select:after{content:"";position:absolute;right:13px;top:50%;width:7px;height:7px;border-right:1.5px solid var(--text-muted);border-bottom:1.5px solid var(--text-muted);transform:translateY(-70%) rotate(45deg);pointer-events:none}.select select:focus-visible{outline:none;border-color:var(--border-focus);box-shadow:var(--focus-ring)}.ph-actions{align-items:center}.stat-delta.down{color:var(--text-danger);background:var(--danger-50)}.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:16px 20px}.t-row.link{color:inherit;text-decoration:none;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out)}.t-row.link:hover{background:var(--surface-hover);text-decoration:none}.more{display:flex;justify-content:center;padding:16px}.list-row{display:flex;gap:12px;align-items:center;padding:12px 20px;border-top:1px solid var(--border-subtle);color:inherit;text-decoration:none}.list-row:first-child{border-top:none}a.list-row:hover{background:var(--surface-hover);text-decoration:none}.list-row .who{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.list-row .who b{font:var(--type-label);color:var(--text-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row .who span{font:var(--type-caption);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-note{display:flex;gap:8px;align-items:center;padding:12px 20px;border-top:1px solid var(--border-subtle);font:var(--type-caption);color:var(--text-muted);background:var(--neutral-25)}.sub-h{font:var(--type-caption);font-weight:600;color:var(--text-subtle);margin-bottom:2px}.nav-item.soon{color:var(--text-subtle)}.nav-item.soon:hover{color:var(--text-muted)}.soon-tag{font:var(--type-caption);font-size:10px;font-weight:600;padding:1px 6px;border-radius:var(--radius-pill);background:var(--neutral-100);color:var(--text-muted);white-space:nowrap}a.btn,a.btn:hover{text-decoration:none}a.btn-primary:hover{color:var(--text-on-primary)}a.btn-secondary,a.btn-ghost{color:var(--text-body)}.rep{width:100%;border-collapse:collapse;font:var(--type-body-sm);min-width:1180px}.rep th,.rep td{padding:8px 10px;border-bottom:1px solid var(--border-subtle);white-space:nowrap}.rep thead th{background:var(--neutral-25);font:var(--type-caption);font-weight:600;color:var(--text-muted);border-bottom:1px solid var(--border-default);position:sticky;top:0}.rep .lbl{text-align:left;position:sticky;left:0;background:var(--surface-card);min-width:230px;max-width:260px;overflow:hidden;text-overflow:ellipsis;z-index:1;padding-left:20px}.rep thead .lbl{background:var(--neutral-25);z-index:2}.rep .n{text-align:right;font-family:var(--font-numeric);font-variant-numeric:tabular-nums;font-size:12.5px;color:var(--text-body)}.rep .n.neg{color:var(--text-money-out)}.rep .n.muted{color:var(--text-muted)}.rep .n.strong{font-weight:500;color:var(--text-heading)}.rep .n.strong.neg{color:var(--text-money-out)}.rep tr.sec td{background:var(--surface-card);font:var(--type-caption);font-weight:600;color:var(--text-subtle);padding-top:14px;border-bottom:none}.rep tr.tot td{background:var(--neutral-25);font-weight:600}.rep tr.tot .lbl{background:var(--neutral-25);color:var(--text-heading)}.rep tr.grand td{background:var(--primary-50);font-weight:600;border-bottom:1px solid var(--primary-100)}.rep tr.grand .lbl{background:var(--primary-50);color:var(--primary-900)}.rep tbody tr:not(.sec):not(.tot):not(.grand):hover td{background:var(--surface-hover)}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:var(--surface-app)}.login-card{width:100%;max-width:380px;padding:32px 28px;display:flex;flex-direction:column;gap:16px}.login-card img{width:160px;margin:0 auto}.login-card h1{font-family:var(--font-display);font-weight:500;font-size:20px;text-align:center;color:var(--text-heading);margin:0}.field{display:flex;flex-direction:column;gap:6px;font:var(--type-label);color:var(--text-body)}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--surface-overlay);display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;overflow-y:auto;animation:fade-in var(--duration-base) var(--ease-out)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{width:100%;max-width:560px;background:var(--surface-card);border-radius:var(--radius-modal);box-shadow:var(--shadow-modal);display:flex;flex-direction:column}.modal.wide{max-width:760px}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 24px 12px}.modal-head h2{font-family:var(--font-display);font-weight:500;font-size:20px;color:var(--text-heading);margin:0}.modal-head p{font:var(--type-caption);color:var(--text-muted);margin:4px 0 0}.modal-body{padding:8px 24px 20px}.modal-foot{display:flex;gap:8px;justify-content:flex-end;align-items:center;flex-wrap:wrap;padding:16px 24px;border-top:1px solid var(--border-subtle);background:var(--neutral-25);border-radius:0 0 var(--radius-modal) var(--radius-modal)}.modal-foot .grow{flex:1}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}.form-grid .span{grid-column:1/-1}.form-sec{grid-column:1/-1;font:var(--type-caption);font-weight:600;color:var(--text-subtle);padding-top:8px;border-top:1px solid var(--border-subtle);margin-top:4px}.fld{display:flex;flex-direction:column;gap:6px;min-width:0}.fld-l{font:var(--type-label);color:var(--text-body)}.fld-l i{color:var(--text-danger);font-style:normal}.fld-h{font:var(--type-caption);color:var(--text-muted)}.fld.bad .fld-h{color:var(--text-danger)}.fld.bad .input,.fld.bad select{border-color:var(--danger-500)}.select.full{display:flex;width:100%}.select.full select{width:100%}.check{display:flex;gap:10px;align-items:flex-start;font:var(--type-body-sm);color:var(--text-body);cursor:pointer}.check input{margin-top:3px;width:16px;height:16px;accent-color:var(--primary-700)}.sum-box{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-radius:12px;background:var(--primary-50);font:var(--type-body-sm);color:var(--primary-900)}.sum-box b{font-family:var(--font-numeric);font-size:16px}.err-box{margin-top:12px}@media(max-width:560px){.form-grid{grid-template-columns:1fr}.modal-scrim{padding:16px 8px}.modal-head,.modal-body,.modal-foot{padding-left:16px;padding-right:16px}}.bill-row{align-items:start;padding-top:10px;padding-bottom:10px}.bill-row>span{padding-top:4px}.meters{display:flex;flex-direction:column;gap:6px;padding-top:0!important}.mline{display:grid;grid-template-columns:56px 52px 88px minmax(52px,1fr) 58px;gap:6px;align-items:center;font:var(--type-body-sm);min-width:0}.mline .mname{font:var(--type-caption);font-weight:600;color:var(--text-muted);white-space:nowrap}.mline b{text-align:right;font-weight:500;color:var(--text-heading)}.mline .num.muted{font-size:12px}.mline.bad .mname{color:var(--text-danger)}.mbox{height:30px;padding:0 8px}.bill-act{display:flex;gap:4px;justify-content:flex-end;align-items:center}
