:root{--primary-color:#4a6b5d;--primary-hover:#3a5348;--danger-color:#b8706b;--danger-hover:#9c5c58;--bg-color:#f5f7fa;--card-bg:#fff;--text-main:#222;--text-secondary:#666;--border-color:#e4e7ed;--font-base:18px;--font-lg:24px;--font-xl:32px;--radius:12px;--shadow:0 4px 16px #0000000f}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-main);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:var(--font-base);line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit;font-size:var(--font-base);border:none}input,select,textarea{font-family:inherit;font-size:var(--font-base)}.btn-primary{background-color:var(--primary-color);color:#fff;border-radius:var(--radius);padding:12px 24px;font-weight:700;transition:background .2s}.btn-primary:hover{background-color:var(--primary-hover)}.btn-danger{background-color:var(--danger-color);color:#fff;border-radius:var(--radius);padding:12px 24px;font-weight:700;transition:background .2s}.btn-danger:hover{background-color:var(--danger-hover)}.btn-default{color:var(--text-main);border-radius:var(--radius);background-color:#e4e7ed;padding:12px 24px;font-weight:700;transition:background .2s}.btn-default:hover{background-color:#dcdfe6}.card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.login-container{background-color:var(--primary-color);justify-content:center;align-items:center;height:100vh;display:flex}.login-box{text-align:center;width:100%;max-width:500px;padding:40px}.login-title{color:var(--text-main);margin-bottom:10px;font-size:36px}.login-subtitle{font-size:var(--font-lg);color:var(--text-secondary);margin-bottom:40px}.form-group{text-align:left;margin-bottom:25px}.form-group label{font-weight:700;font-size:var(--font-lg);margin-bottom:10px;display:block}.login-input{width:100%;font-size:var(--font-lg);border:2px solid var(--border-color);border-radius:var(--radius);outline:none;padding:16px 20px;transition:border-color .2s}.login-input:focus{border-color:var(--primary-color)}.login-btn{width:100%;font-size:var(--font-lg);margin-top:20px;padding:20px}.layout-container{height:100vh;display:flex;overflow:hidden}.sidebar{border-right:1px solid var(--border-color);z-index:10;background-color:#fff;flex-direction:column;width:280px;display:flex;box-shadow:2px 0 8px #0000000d}.sidebar-header{background-color:var(--primary-color);color:#fff;text-align:center;padding:30px 20px}.sidebar-header h2{font-size:var(--font-xl);margin-bottom:5px}.role-tag{opacity:.8;font-size:14px}.sidebar-nav{flex:1;padding:20px 0;overflow-y:auto}.nav-item{cursor:pointer;color:var(--text-main);border-left:6px solid #0000;align-items:center;padding:20px 30px;transition:all .2s;display:flex}.nav-item:hover{background-color:#f0f3f2}.nav-item.active{color:var(--primary-color);border-left-color:var(--primary-color);background-color:#ebf0ee;font-weight:700}.nav-icon{align-items:center;margin-right:15px;display:flex}.nav-text{font-size:var(--font-lg)}.sidebar-footer{border-top:1px solid var(--border-color)}.logout-item{color:var(--danger-color)}.logout-item:hover{background-color:#fff0f0}.main-content{background-color:var(--bg-color);flex-direction:column;flex:1;display:flex;overflow:hidden}.topbar{border-bottom:1px solid var(--border-color);background-color:#fff;justify-content:flex-end;align-items:center;height:60px;padding:0 30px;display:flex}.topbar-user{font-size:var(--font-base);color:var(--text-secondary)}.content-wrapper{flex:1;padding:30px;overflow-y:auto}.occupied-modal-content{background:var(--bg-color);border-radius:16px;flex-direction:column;width:95%;max-width:1200px;max-height:95vh;display:flex;overflow:hidden;box-shadow:0 10px 40px #0000004d}.modal-header{border-bottom:1px solid var(--border-color);background-color:#fff;justify-content:space-between;align-items:center;padding:20px 30px;display:flex}.close-btn{padding:8px 24px}.split-layout{flex:1;gap:20px;padding:20px;display:flex;overflow:hidden}.left-pane,.right-pane{flex-direction:column;flex:1;padding:30px;display:flex;overflow-y:auto}.section-title{color:var(--primary-color);font-size:var(--font-lg);border-bottom:2px solid #ebf0ee;align-items:center;gap:10px;margin-top:10px;margin-bottom:20px;padding-bottom:10px;display:flex}.section-title:first-child{margin-top:0}.row-group{align-items:center;gap:15px;margin-bottom:15px;display:flex}.row-group label{flex-shrink:0;width:130px;margin-bottom:0}.row-group .login-input{flex:1;padding:10px 15px}.idcard-img{object-fit:cover;border:1px solid var(--border-color);border-radius:8px;width:100%;height:200px;margin-bottom:15px}.idcard-empty{border:2px dashed var(--border-color);height:100px;color:var(--text-secondary);border-radius:8px;justify-content:center;align-items:center;margin-bottom:15px;display:flex}.hardware-actions{gap:15px;display:flex}.hw-btn{flex:1;justify-content:center;align-items:center;gap:8px;display:flex}.finance-dashboard{gap:15px;margin-bottom:30px;display:flex}.fin-box{border:1px solid var(--border-color);background:#f8f9fa;border-radius:8px;flex:1;padding:15px}.fin-label{color:var(--text-secondary);margin-bottom:5px;font-size:14px}.fin-value{font-size:24px;font-weight:700}.action-row{gap:15px;display:flex}.action-btn{flex:1;justify-content:center;align-items:center;font-size:18px;display:flex}.payment-logs-scroll{border:1px solid var(--border-color);background:#fafafa;border-radius:8px;flex:1;padding:15px;overflow-y:auto}.log-row{border-bottom:1px dashed #ccc;align-items:center;padding:10px 0;font-size:14px;display:flex}.log-row:last-child{border-bottom:none}.log-date{color:#666;width:140px}.log-type{width:80px;font-weight:700}.log-amount{text-align:right;width:80px;font-weight:700}.log-note{color:#888;white-space:nowrap;text-overflow:ellipsis;flex:1;padding-left:15px;overflow:hidden}.home-page{flex-direction:column;gap:16px;display:flex}.home-overview{flex-wrap:wrap;align-items:stretch;gap:16px;display:flex}.income-card{color:#fff;cursor:pointer;background:#4a6b5d;border-radius:12px;flex:1;justify-content:space-between;align-items:center;min-width:260px;padding:20px 24px;display:flex;box-shadow:0 4px 12px #4a6b5d2e}.income-card .income-label{opacity:.9;margin-bottom:6px;font-size:14px}.income-card .income-tip{opacity:.75;font-size:12px}.income-card .income-value{white-space:nowrap;font-size:30px;font-weight:700}.overview-stats{background:#fff;border-radius:12px;flex:2;min-width:320px;display:flex;box-shadow:0 4px 12px #0000000d}.stat-item{text-align:center;cursor:pointer;flex-direction:column;flex:1;justify-content:center;padding:16px 12px;display:flex}.stat-item+.stat-item{border-left:1px solid #f0f0f0}.stat-num{color:#333;font-size:22px;font-weight:700;line-height:1.2}.stat-unit{color:#999;margin-left:2px;font-size:12px;font-weight:400}.stat-label{color:#888;margin-top:4px;font-size:13px}.todo-card{background:#fff;border-radius:12px;padding:18px 20px;box-shadow:0 4px 12px #0000000d}.todo-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.todo-title{color:#333;align-items:center;gap:6px;font-size:16px;font-weight:600;display:flex}.todo-icon{font-size:18px}.todo-badge{border-radius:10px;margin-left:4px;padding:1px 8px;font-size:12px;font-weight:700}.todo-badge.orange{color:#e65100;background:#fff3e0}.todo-badge.blue{color:#1565c0;background:#e3f2fd}.todo-badge.red{color:#c62828;background:#ffebee}.todo-badge.green{color:#2e7d32;background:#e8f5e9}.todo-desc{color:#aaa;font-size:12px}.todo-empty{color:#bbb;padding:6px 0;font-size:13px}.batch-remind-btn{color:#fff;cursor:pointer;background:#c62828;border:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;transition:opacity .15s}.batch-remind-btn:hover{opacity:.85}.chip-grid{flex-wrap:wrap;gap:10px;display:flex}.chip{cursor:pointer;text-align:center;-webkit-user-select:none;user-select:none;border-radius:10px;min-width:72px;padding:10px 14px;transition:transform .1s}.chip:hover{transform:translateY(-2px)}.chip-room{font-size:17px;font-weight:800;line-height:1.2}.chip-sub{margin-top:3px;font-size:12px}.chip.orange{color:#e65100;background:#fff8e1;border:1.5px solid #ffd54f}.chip.orange .chip-sub{color:#f57c00}.chip.blue{color:#1565c0;background:#e8f4fd;border:1.5px solid #90caf9}.chip.blue .chip-sub{color:#1976d2}.chip.blue.overdue{color:#e65100;background:#fff3e0;border-color:#ffb74d}.chip.blue.overdue .chip-sub{color:#e65100;font-weight:700}.chip.red{color:#c62828;background:#ffebee;border:1.5px solid #ef9a9a}.chip.red .chip-sub{color:#c62828;font-weight:700}.loading-text{color:#999;text-align:center;padding:8px 0;font-size:13px}.dashboard-page{flex-direction:column;gap:20px;display:flex}.stats-panel{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;display:grid}.stat-card{border-radius:var(--radius);box-shadow:var(--shadow);text-align:center;background:#fff;flex-direction:column;justify-content:center;padding:24px;display:flex}.stat-title{color:var(--text-secondary);font-size:var(--font-base);margin-bottom:10px}.stat-value{font-size:var(--font-xl);font-weight:700}.stat-value.highlight{color:var(--primary-color)}.loading-text{text-align:center;color:var(--text-secondary);font-size:var(--font-lg);padding:20px}.room-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px;display:grid}.room-card{border-radius:var(--radius);cursor:pointer;box-shadow:var(--shadow);background:#fff;border:2px solid #0000;transition:transform .2s,box-shadow .2s,border-color .2s;overflow:hidden}.room-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000001a}.room-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:15px 20px;display:flex}.room-no{font-size:var(--font-lg);font-weight:700}.room-status{border-radius:4px;padding:4px 10px;font-size:14px;font-weight:700}.room-card.empty .room-status{color:#666;background-color:#f0f0f0}.room-card.occupied .room-status{color:var(--primary-color);background-color:#ebf0ee}.room-card.empty{border-color:#e4e7ed}.room-card.occupied{border-color:#a8c1b5}.room-body{flex-direction:column;justify-content:center;min-height:160px;padding:20px;display:flex}.empty-body{text-align:center;color:var(--text-secondary)}.click-hint{color:#999;border:1px dashed #ccc;border-radius:6px;margin-top:15px;padding:8px;font-size:14px}.occupied-body{gap:8px}.info-row{justify-content:space-between;font-size:16px;display:flex}.text-danger{color:var(--danger-color)}.text-success{color:var(--primary-color)}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background:#fff;border-radius:20px;width:90%;max-width:600px;max-height:90vh;padding:40px;overflow-y:auto;box-shadow:0 10px 40px #0003}.modal-title{font-size:var(--font-xl);color:var(--primary-color);border-bottom:2px solid var(--border-color);margin-bottom:30px;padding-bottom:15px}.modal-actions{border-top:1px solid var(--border-color);justify-content:flex-end;gap:15px;margin-top:30px;padding-top:20px;display:flex}.modal-actions button{min-width:120px}.room-card.occupied-good{background-color:#f0fdf4;border-color:#86efac}.room-card.occupied-good .room-status{color:#166534;background-color:#dcfce7}.room-card.occupied-arrears{background-color:#fef2f2;border-color:#fca5a5}.room-card.occupied-arrears .room-status{color:#991b1b;background-color:#fee2e2}.room-card.occupied-due{background-color:#eff6ff;border-color:#93c5fd}.room-card.occupied-due .room-status{color:#1e40af;background-color:#dbeafe}.finance-page{flex-direction:column;gap:20px;display:flex}.finance-header{background:linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover) 100%);color:#fff;flex-direction:column;align-items:center;padding:40px;display:flex}.finance-title{font-size:var(--font-lg);opacity:.9;margin-bottom:10px}.finance-total{font-size:48px;font-weight:700}.filter-bar{flex-wrap:wrap;align-items:center;gap:20px;padding:20px 30px;display:flex}.date-picker-group{align-items:center;gap:10px;display:flex}.date-picker-group label{font-weight:700}.log-list{flex-direction:column;gap:15px;display:flex}.log-card{border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;padding:20px 30px}.log-top{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:10px;display:flex}.log-room{font-size:var(--font-lg);font-weight:700}.log-status{font-size:var(--font-base);color:var(--text-secondary);font-weight:400}.log-amount{font-size:var(--font-xl);font-weight:700}.log-bottom{color:var(--text-secondary);justify-content:space-between;margin-bottom:5px;display:flex}.log-type{color:var(--text-main);font-weight:700}.log-note{color:#666;background-color:#f8f8f8;border-radius:6px;padding:10px;font-size:14px}.history-page{flex-direction:column;gap:20px;display:flex}.tab-bar{border-radius:var(--radius);background:#fff;display:flex;overflow:hidden}.tab-item{text-align:center;font-size:var(--font-lg);cursor:pointer;color:var(--text-secondary);background-color:#f8f8f8;flex:1;padding:20px;font-weight:700;transition:all .2s}.tab-item.active{color:var(--primary-color);border-bottom:4px solid var(--primary-color);background-color:#fff}.order-list{flex-direction:column;gap:15px;display:flex}.order-top{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;margin-bottom:15px;padding-bottom:15px;display:flex}.order-room{font-size:var(--font-lg);font-weight:700}.order-revenue{font-size:var(--font-xl);font-weight:700}.order-mid{color:var(--text-secondary);grid-template-columns:1fr 1fr;gap:10px;margin-bottom:20px;font-size:16px;display:grid}.order-bottom{text-align:center}.order-logs-container{background-color:#f8f8f8;border-radius:8px;margin-top:15px;padding:15px}.logs-title{color:#555;margin-bottom:10px;font-weight:700}.order-log-item{border-bottom:1px dashed #eee;justify-content:space-between;padding:5px 0;font-size:14px;display:flex}.order-log-item:last-child{border-bottom:none}.admin-page{flex-direction:column;gap:20px;display:flex}.admin-header{border-left:6px solid var(--primary-color);background-color:#fff;padding:30px}.admin-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;display:grid}.admin-card{flex-direction:column;display:flex}.admin-card-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;margin-bottom:15px;padding-bottom:15px;display:flex}.admin-card-header .room-no{font-size:var(--font-xl);font-weight:700}.admin-card-header .room-type{color:#666;background-color:#f0f0f0;border-radius:4px;padding:4px 10px;font-size:14px}.admin-card-body{color:var(--text-secondary);flex-direction:column;flex:1;gap:10px;margin-bottom:20px;font-size:16px;display:flex}.admin-card-footer{border-top:1px dashed var(--border-color);gap:10px;padding-top:15px;display:flex}.admin-card-footer button{flex:1;padding:10px;font-size:16px}
