:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3efe6;--bg-2:#e7e1d4;--paper:#fffdf8;--ink:#1f1a14;--muted:#5e564c;--line:#ddd4c4;--pine:#234237;--pine-ink:#f6f3ec;--copper:#8c4a24;--paid:#0f5c38;--paid-bg:#e5f4ea;--paid-line:#8fceb0;--due:#8d1f18;--due-bg:#fde8e4;--due-line:#f0b2aa;--late:#7f1d1d;--late-ink:#fff7f6;--warn:#7a4e00;--warn-bg:#fff4d8;--shadow:0 1px 2px #281e0f0f, 0 10px 28px #281e0f0d;--font:"Segoe UI", system-ui, -apple-system, "Helvetica Neue", sans-serif;--display:Georgia, "Iowan Old Style", "Palatino Linotype", Palatino, serif;--radius:14px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font);margin:0;padding-bottom:148px;font-size:16px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--copper);outline-offset:2px}h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.2}h1{margin:0;font-size:1.7rem}h2{margin:0 0 .3rem;font-size:1.25rem}h3{margin:0 0 .4rem;font-size:1rem}p{margin:.3rem 0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-screen{max-width:1120px;margin:0 auto;padding:12px 14px 24px}.topbar{flex-wrap:wrap;align-items:center;gap:12px 16px;padding:8px 0 12px;display:flex}.brand{align-items:center;gap:10px;min-width:160px;display:flex}.logo{width:36px;height:36px;display:block}.brand-text{flex-direction:column;display:flex}.brand-name{font-family:var(--display);letter-spacing:-.02em;font-size:1.35rem}.brand-note{color:var(--muted);font-size:.78rem}.month-switch{flex:1;justify-content:center;align-items:center;gap:6px;display:flex}.month-title{text-align:center;min-width:11rem}.month-title h1{font-size:1.55rem}.top-actions{flex-wrap:wrap;align-items:end;gap:8px;margin-left:auto;display:flex}.property-field{min-width:160px}.icon-btn,.linkish{color:var(--pine);background:0 0;border:none;padding:6px 8px}.icon-btn{border-radius:999px;font-size:1.4rem;line-height:1}.linkish{text-underline-offset:3px;padding:0;text-decoration:underline}.btn{border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:8px 14px;line-height:1.2}.btn-primary{background:var(--pine);color:var(--pine-ink);border-color:var(--pine)}.btn-danger{background:var(--late);color:#fff;border-color:var(--late)}.btn-ghost{background:0 0}.btn-small{padding:6px 10px;font-size:.92rem}.btn.is-on{background:var(--pine);color:var(--pine-ink);border-color:var(--pine)}.btn:disabled{opacity:.5;cursor:not-allowed}.menu{position:relative}.menu>summary{list-style:none}.menu>summary::-webkit-details-marker{display:none}.menu-panel{z-index:20;background:var(--paper);border:1px solid var(--line);min-width:230px;box-shadow:var(--shadow);border-radius:12px;padding:6px;position:absolute;top:calc(100% + 6px);right:0}.menu-item{text-align:left;background:0 0;border:none;border-radius:8px;width:100%;padding:10px 12px;display:block}.menu-item:hover{background:var(--bg)}.menu-item.danger{color:var(--late)}.banner{border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding:10px 12px;display:flex}.banner-warn{background:var(--warn-bg);color:var(--warn)}.banner-ok{background:var(--paid-bg);color:var(--paid)}.attention{gap:8px;margin:4px 0 12px;display:grid}.attention-copy p{color:var(--muted);font-size:.9rem}.attention-row{gap:8px;margin:0;padding:2px 2px 8px;list-style:none;display:flex;overflow-x:auto}.attn{text-align:left;border:1px solid var(--due-line);background:var(--due-bg);min-width:200px;color:var(--due);border-radius:12px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.attn-overdue{background:var(--late);color:var(--late-ink);border-color:#5c1010}.attn-flag{letter-spacing:.04em;text-transform:uppercase;font-size:.72rem}.attn-title{font-weight:650}.attn-meta{font-variant-numeric:tabular-nums;font-size:.85rem}.viewbar{gap:6px;padding-bottom:8px;display:flex;overflow-x:auto}.tab{color:var(--muted);white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:999px;padding:8px 12px}.tab.is-on{background:var(--pine);color:var(--pine-ink)}.search-row{align-items:end;gap:8px;display:flex}.grow{flex:1}.filter-toggle{display:inline-flex}.filters{grid-template-columns:1fr;gap:10px;margin-top:10px;display:grid}.field{flex-direction:column;gap:4px;font-size:.92rem;display:flex}.field>span{color:var(--muted)}.field input,.field select,.field textarea,.pay-box input,.schedule input,.schedule select,textarea,select{border:1px solid var(--line);background:#fff;border-radius:10px;width:100%;padding:8px 10px}textarea{resize:vertical}.hint{color:var(--muted);font-size:.88rem}.search-hint{margin:0 0 10px}.filter-actions{align-items:end;display:flex}.preset-row{flex-direction:column;gap:8px;display:flex}.preset-save{flex-wrap:wrap;align-items:end;gap:8px;display:flex}.preset-save .field{flex:1;min-width:160px}.preset-list{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.preset-list li{background:var(--paper);border:1px solid var(--line);border-radius:999px;align-items:center;display:flex}.preset-chip{background:0 0;border:none;padding:6px 8px 6px 12px}.stage{margin-top:8px}.empty-home,.empty-note,.recovery{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.empty-home p,.recovery p{max-width:62ch}.recovery{max-width:640px;margin:32px auto}.button-row{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.legend{color:var(--muted);flex-wrap:wrap;gap:10px 14px;margin-bottom:8px;font-size:.85rem;display:flex}.legend-overdue{color:var(--late-ink);background:var(--late);border-radius:999px;padding:2px 8px}.legend-unpaid{color:var(--due)}.legend-paid{color:var(--paid)}.cal{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.dow{text-align:center;color:var(--muted);padding-bottom:2px;font-size:.75rem}.day{background:var(--paper);border:1px solid var(--line);border-radius:10px;min-width:0;min-height:64px;padding:4px}.day-blank{background:0 0;border-color:#0000}.is-weekend{background:#f7f3eb}.is-today{box-shadow:inset 0 0 0 2px var(--pine)}.is-selected{box-shadow:inset 0 0 0 2px var(--copper)}.day-num{color:var(--muted);padding:0 2px;font-size:.8rem;display:block}.day-pick{text-align:left;background:0 0;border:none;width:100%;padding:2px}.dots{flex-wrap:wrap;gap:3px;padding:4px 2px;display:flex}.dot{background:var(--due);border-radius:99px;width:7px;height:7px;display:inline-block}.dot-paid{background:var(--paid)}.dot-overdue{background:var(--late);width:9px;height:9px}.chip,.day-bill{text-align:left;border:1px solid #0000;border-radius:7px;align-items:center;gap:4px;width:100%;min-width:0;margin-top:4px;padding:3px 5px;font-size:12px;line-height:1.25;display:flex}.chip-paid,.row-paid{background:var(--paid-bg);color:var(--paid);border-color:var(--paid-line)}.chip-unpaid,.row-unpaid{background:var(--due-bg);color:var(--due);border-color:var(--due-line)}.chip-overdue,.row-overdue{background:var(--late);color:var(--late-ink);border-color:#5c1010;font-weight:650}.chip-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.chip-amt,.money,.num,.bill-amt,.date-block{font-variant-numeric:tabular-nums}.chip-amt{flex:none}.chip-ap{letter-spacing:.03em;border:1px solid;border-radius:4px;flex:none;padding:0 3px;font-size:10px}.chip-color{border-radius:99px;flex:none;width:7px;height:7px}.chip-overdue .chip-color{box-shadow:0 0 0 1px #fff}.day-panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);margin-top:12px;padding:12px}.day-list,.bill-list,.mini-list,.history-list{margin:0;padding:0;list-style:none}.day-bill{justify-content:space-between;min-height:48px;padding:8px 10px}.day-bill small,.bill-sub,.bill-note{opacity:.9;font-weight:400;display:block}.bill-list{flex-direction:column;gap:8px;display:flex}.bill-open{text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:12px;align-items:center;gap:10px;width:100%;min-height:64px;padding:10px;display:flex}.row-paid.bill-open{border-color:var(--paid-line)}.row-unpaid.bill-open{border-color:var(--due-line)}.row-overdue.bill-open{background:var(--late);color:var(--late-ink);border-color:var(--late)}.date-block{text-align:center;flex:none;width:42px}.date-day{font-size:1.2rem;font-weight:700;display:block}.date-mon{letter-spacing:.04em;font-size:.75rem}.bill-main{flex:1;min-width:0}.bill-title{flex-wrap:wrap;align-items:center;gap:6px;font-weight:650;display:flex}.bill-amt{text-align:right;flex:none}.bill-amt small{color:inherit;opacity:.8;font-weight:400;display:block}.bill-note{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.row-overdue .bill-note{color:inherit}.group-label{flex-wrap:wrap;justify-content:space-between;gap:8px;margin:14px 0 8px;font-size:.95rem;display:flex}.pill{font-size:.75rem;font-family:var(--font);border:1px solid #0000;border-radius:999px;align-items:center;padding:1px 7px;font-weight:650;display:inline-flex}.pill-paid{background:var(--paid-bg);color:var(--paid)}.pill-unpaid{background:var(--due-bg);color:var(--due)}.pill-overdue{color:#fff;background:#5c1010}.row-overdue .pill-overdue{color:var(--late);background:#fff}.table-wrap{border:1px solid var(--line);background:var(--paper);border-radius:12px;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;min-width:760px;font-size:.92rem}.pivot{min-width:980px}.data-table th,.data-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:8px 10px}.data-table thead th button{color:var(--ink);background:0 0;border:none;padding:0;font-weight:700}.num{text-align:right;white-space:nowrap}.group-row th{background:var(--bg-2);font-family:var(--font)}.table-overdue td:first-child{box-shadow:inset 4px 0 0 var(--late)}.table-paid td:first-child{box-shadow:inset 4px 0 0 var(--paid)}.table-unpaid td:first-child{box-shadow:inset 4px 0 0 var(--due)}.data-table tbody tr{cursor:pointer}.data-table tbody tr:hover{background:#faf7f1}.year-stats,.prop-numbers,.totals-grid{flex-wrap:wrap;gap:14px 22px;display:flex}.year-stat,.totals-grid div{flex-direction:column;display:flex}.year-stat span,.totals-label{color:var(--muted);font-size:.8rem}.money{font-size:1.15rem}.money-paid{color:var(--paid)}.money-unpaid{color:var(--due)}.year-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0 18px;display:grid}.month-card{text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:10px}.month-card.is-current{box-shadow:inset 0 0 0 2px var(--pine)}.month-card.is-late{border-color:var(--late)}.month-card-name{color:var(--muted);font-size:.8rem;display:block}.month-card-sub{color:var(--muted);margin-top:4px;font-size:.8rem;display:block}.section-title{margin:18px 0 8px}.prop-grid{grid-template-columns:1fr;gap:12px;display:grid}.prop-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.add-property{flex-wrap:wrap;align-items:end;gap:8px;margin-bottom:12px;display:flex}.prop-head{align-items:center;gap:8px;display:flex}.prop-head input{flex:1}.swatch{border-radius:99px;flex:none;width:10px;height:10px;display:inline-block}.swatch.lg{width:14px;height:14px}.prop-month{color:var(--muted);margin-top:10px;font-size:.85rem}.bar{background:var(--due-bg);border-radius:99px;height:8px;margin:8px 0;overflow:hidden}.bar-paid{background:var(--paid);height:100%;display:block}.mini-list button{border:none;border-bottom:1px solid var(--line);text-align:left;background:0 0;justify-content:space-between;gap:8px;width:100%;padding:8px 0;display:flex}.mini-list small{color:var(--muted);font-weight:400;display:block}.form-grid{gap:10px;display:grid}.form-grid.two{margin:8px 0}.span-2{grid-column:1/-1}.check{align-items:flex-start;gap:8px;display:flex}.check input{margin-top:4px}.form-error{color:var(--late)}.bill-dialog{flex-direction:column;gap:14px;display:flex}.pay-box{background:var(--bg);border-radius:12px;padding:12px}.schedule{background:var(--bg);border-radius:12px;padding:10px 12px}.history-list li{border-bottom:1px solid var(--line);flex-direction:column;gap:2px;padding:8px 0;display:flex}.inline-confirm{background:var(--warn-bg);border-radius:12px;padding:10px}.sheet{background:var(--paper);width:min(640px,100vw - 20px);max-height:min(92vh,920px);color:var(--ink);border:none;border-radius:18px;padding:0;overflow:auto;box-shadow:0 24px 70px #1f1a1447}.sheet::backdrop{background:#1f1a1475}.sheet-head{background:var(--paper);justify-content:space-between;align-items:center;gap:12px;padding:14px 14px 8px;display:flex;position:sticky;top:0}.sheet-body{padding:0 16px 18px}.totals{z-index:15;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:8px 14px calc(8px + env(safe-area-inset-bottom));background:#fffdf8f0;position:fixed;bottom:0;left:0;right:0}.totals-inner{max-width:1120px;margin:0 auto}.totals-top{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:8px 18px;display:flex}.totals-scope{font-family:var(--display);margin:0}.totals-note{margin:2px 0 0}.by-property summary{cursor:pointer;color:var(--pine);margin-top:4px}.by-property ul{max-height:28vh;margin:6px 0 0;padding:0;list-style:none;overflow:auto}.by-property li{border-top:1px solid var(--line);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:4px 0;display:flex}.by-name{min-width:8rem;font-weight:650}.only-print{display:none}@media (width>=720px){.filters{grid-template-columns:repeat(3,minmax(0,1fr))}.year-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.prop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.two{grid-template-columns:1fr 1fr}.day{min-height:108px}}@media (width>=900px){.filter-toggle{display:none}.app-screen{padding:18px 22px 28px}h1{font-size:2rem}}@media print{body{background:#fff;padding:0}.app-screen{display:none!important}.only-print{display:block!important}.print-sheet{padding:0}.print-table{border-collapse:collapse;width:100%;font-size:12px}.print-table th,.print-table td{text-align:left;vertical-align:top;border-bottom:1px solid #ccc;padding:4px 6px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
