:root{--ink:#1B241E;--pine:#20342B;--pine-light:#375243;--paper:#F4F5F0;--paper-raised:#FFFFFF;--line:#D8D9CE;--brass:#AD8A50;--brass-soft:#E8DCC2;--rust:#A94B37;--rust-soft:#F1DCD5;--muted:#6B7368;--amber:#B08A2E;--amber-soft:#F1E6C8;--good:#4C8A5C;--good-soft:#DCEBDF;--plan1:#3E6B8C;--plan1-soft:#DCE7EE;--plan2:#7A5A9C;--plan2-soft:#E9E0F0;--vacant:#B08A2E;--vacant-soft:#F1E6C8;--occupied:#4C8A5C;--occupied-soft:#DCEBDF;--repair:#A94B37;--repair-soft:#F1DCD5}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Noto Sans TC,sans-serif;-webkit-font-smoothing:antialiased}.app-shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:var(--pine);color:#edeee6;padding:28px 20px;display:flex;flex-direction:column}.brand{font-family:"Noto Serif TC",serif;font-weight:700;font-size:17px;margin-bottom:6px;line-height:1.3}.brand-tagline{font-family:"Noto Serif TC",serif;font-size:13px;color:var(--brass-soft);letter-spacing:.08em;margin-bottom:28px}.nav-group-label{font-size:11px;color:#8fa093;margin:0 0 10px 2px;text-transform:uppercase;letter-spacing:.05em}.nav-item{display:block;padding:12px 14px;border-radius:8px;font-size:14.5px;color:#d9ded4;margin-bottom:4px;cursor:pointer;text-decoration:none}.nav-item:hover{background:#ffffff0f}.nav-item.active{background:#ffffff1a;color:#fff;font-weight:700}.loc-nav{margin-top:8px}.loc-item{display:block;padding:13px 14px;border-radius:8px;margin-bottom:6px;cursor:pointer;text-decoration:none}.loc-item:hover{background:#ffffff0f}.loc-item .loc-name{font-size:14.5px;font-weight:700;color:#fff;display:block}.loc-item .loc-meta{font-size:11px;color:#a9b8ac}.back-link{font-size:12px;color:#a9b8ac;margin-bottom:18px;cursor:pointer;display:flex;align-items:center;gap:6px;text-decoration:none}.loc-header{margin-bottom:22px;padding-bottom:18px;border-bottom:1px solid rgba(255,255,255,.12)}.loc-header .name{font-family:"Noto Serif TC",serif;font-size:19px;font-weight:700}.loc-header .meta{font-size:11.5px;color:#a9b8ac;margin-top:4px}.loc-header .plan-badge{display:inline-block;margin-top:8px;font-size:10.5px;font-weight:700;padding:3px 10px;border-radius:20px}.plan-badge.plan2{background:#5a4a75;color:#e9e0f0}.plan-badge.mixed{background:#6b5a3a;color:#f1e6c8}.switch-loc{margin-top:auto;padding-top:18px;border-top:1px solid rgba(255,255,255,.12)}.switch-loc-label{font-size:11px;color:#8fa093;margin-bottom:10px}.switch-item{font-size:13px;color:#b9c4b8;padding:8px 10px;border-radius:6px;cursor:pointer;display:block;text-decoration:none}.switch-item:hover{background:#ffffff0f}.sidebar-foot{margin-top:auto;padding-top:20px;border-top:1px solid rgba(255,255,255,.12);font-size:12px;color:#9ba99e;line-height:1.7}.sidebar-foot strong{color:#edeee6;font-weight:600}.main{padding:36px 44px 60px;max-width:1100px}.topbar{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:24px}.topbar h1{font-family:"Noto Serif TC",serif;font-weight:700;font-size:26px;margin:0 0 6px}.topbar .sub,.date{font-size:13px;color:var(--muted)}.add-btn{background:var(--pine);color:#fff;border:none;border-radius:7px;padding:11px 18px;font-size:13.5px;font-weight:600;cursor:pointer;font-family:Noto Sans TC,sans-serif}.month-picker{display:flex;align-items:center;gap:10px;background:var(--paper-raised);border:1px solid var(--line);border-radius:8px;padding:8px 14px;font-size:13.5px;font-weight:600}.month-picker .arrow{color:var(--muted);cursor:pointer;font-size:14px}.section{margin-bottom:32px}.section-label{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:14px}.panel{background:var(--paper-raised);border:1px solid var(--line);border-radius:12px;overflow-x:auto;overflow-y:hidden}.filters{display:flex;align-items:center;gap:10px;background:var(--paper-raised);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:20px;flex-wrap:wrap}.chip-group{display:flex;gap:6px}.chip{padding:7px 14px;font-size:12.5px;font-weight:600;border-radius:20px;border:1px solid var(--line);color:var(--muted);cursor:pointer;background:var(--paper-raised)}.chip.active{background:var(--pine);border-color:var(--pine);color:#fff}.divider-v{width:1px;height:22px;background:var(--line);margin:0 4px}.search{flex:1;min-width:160px;border:1px solid var(--line);border-radius:7px;padding:8px 12px;font-size:13px;color:var(--muted);background:var(--paper)}table{width:100%;border-collapse:collapse}thead th{text-align:left;font-size:11.5px;color:var(--muted);font-weight:600;padding:12px 18px;border-bottom:1px solid var(--line);background:#fafaf6;white-space:nowrap}tbody td{padding:14px 18px;font-size:13.5px;border-bottom:1px solid #EBECE4;vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#fbfbf8}.room-cell{display:flex;align-items:center;gap:10px}.room-photo{width:38px;height:38px;border-radius:7px;background:linear-gradient(135deg,#dde3d9,#c9d2c3);flex-shrink:0}.room-name{font-weight:600}.badge{display:inline-block;font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px;white-space:nowrap}.badge.plan1{background:var(--plan1-soft);color:var(--plan1)}.badge.plan2{background:var(--plan2-soft);color:var(--plan2)}.badge.vacant{background:var(--vacant-soft);color:var(--vacant)}.badge.occupied{background:var(--occupied-soft);color:var(--occupied)}.badge.repair{background:var(--repair-soft);color:var(--repair)}.tenant-name{font-weight:500}.tenant-none{color:var(--muted);font-style:italic}.amount{font-family:Roboto Mono,monospace;font-size:13.5px}.rate{font-family:Roboto Mono,monospace;font-size:12.5px;color:var(--muted)}.row-actions span{font-size:12.5px;color:var(--brass);font-weight:600;cursor:pointer;margin-right:12px}.pagination{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted)}.loading,.error-box,.empty-box{padding:40px;text-align:center;color:var(--muted);font-size:13.5px}.error-box{color:var(--rust)}@media print{.sidebar,.no-print{display:none!important}.print-only{display:inline!important}.app-shell{display:block!important}.main{padding:0!important;max-width:100%!important}#printable-area{border:none!important;box-shadow:none!important}body{background:#fff!important}}@media (max-width: 900px){.tenant-layout{grid-template-columns:1fr!important}}
