:root{--color-bg:#0f0f0f;--color-bg-surface:#1a1a1a;--color-bg-surface-raised:#232323;--color-border:#2f2f2f;--color-gold:#d4af37;--color-gold-light:#e8c862;--color-gold-muted:#a3872b;--color-green:#2d3e2c;--color-green-light:#3f5540;--color-text-primary:#f5f5f0;--color-text-secondary:#a3a3a3;--color-text-muted:#6b6b6b;--color-success:#4a7c59;--color-warning:#d4af37;--color-danger:#a8402f;--font-sans:"Inter", system-ui, sans-serif;--radius-sm:6px;--radius-md:10px;--radius-lg:16px}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--color-bg);color:var(--color-text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}button{cursor:pointer;font-family:inherit}input,select{font-family:inherit}.app-loading{min-height:100vh;color:var(--color-text-secondary);justify-content:center;align-items:center;display:flex}.login-screen{background:radial-gradient(circle at top,#1a1a1a 0%,#0f0f0f 70%);justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login-card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:380px;padding:2.5rem 2rem}.login-brand{text-align:center;margin-bottom:2rem}.login-brand h1{color:var(--color-gold);letter-spacing:.02em;font-size:1.75rem}.login-brand p{color:var(--color-text-secondary);margin-top:.25rem;font-size:.875rem}.login-form{flex-direction:column;gap:1.25rem;display:flex}.login-form label{color:var(--color-text-secondary);flex-direction:column;gap:.4rem;font-size:.85rem;display:flex}.login-form input{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);outline:none;padding:.7rem .85rem;font-size:.95rem;transition:border-color .15s}.login-form input:focus{border-color:var(--color-gold)}.login-form button{background:var(--color-gold);color:#1a1a0a;border-radius:var(--radius-sm);border:none;margin-top:.5rem;padding:.75rem;font-size:.95rem;font-weight:600;transition:background .15s}.login-form button:hover:not(:disabled){background:var(--color-gold-light)}.login-form button:disabled{opacity:.6;cursor:not-allowed}.login-error{color:var(--color-danger);font-size:.85rem}.sidebar{background:var(--color-bg-surface);border-right:1px solid var(--color-border);z-index:40;flex-direction:column;width:260px;height:100vh;transition:transform .2s;display:flex;position:fixed;top:0;left:0;overflow-y:auto}.sidebar-overlay{display:none}.sidebar-brand{border-bottom:1px solid var(--color-border);align-items:center;gap:.75rem;padding:1.5rem 1.25rem;display:flex}.sidebar-brand-mark{border-radius:var(--radius-sm);background:var(--color-gold);color:#1a1a0a;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.85rem;font-weight:700;display:flex}.sidebar-brand-name{color:var(--color-text-primary);font-size:.95rem;font-weight:600}.sidebar-brand-sub{color:var(--color-text-muted);font-size:.7rem}.sidebar-nav{flex:1;padding:1rem .75rem}.sidebar-section{margin-bottom:1.25rem}.sidebar-section-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:.4rem;padding:0 .5rem;font-size:.7rem}.sidebar-link{border-radius:var(--radius-sm);color:var(--color-text-secondary);align-items:center;gap:.65rem;padding:.55rem .6rem;font-size:.875rem;text-decoration:none;transition:background .12s,color .12s;display:flex}.sidebar-link:hover{background:var(--color-bg-surface-raised);color:var(--color-text-primary)}.sidebar-link-active{background:var(--color-green);color:var(--color-gold-light)}.sidebar-icon{text-align:center;width:1.25rem;font-size:1rem}@media (width<=900px){.sidebar{transform:translate(-100%)}.sidebar-open{transform:translate(0)}.sidebar-overlay{z-index:30;background:#00000080;display:block;position:fixed;inset:0}}.topbar{border-bottom:1px solid var(--color-border);background:var(--color-bg-surface);z-index:20;align-items:center;height:64px;padding:0 1.5rem;display:flex;position:sticky;top:0}.topbar-menu-btn{color:var(--color-text-primary);background:0 0;border:none;font-size:1.25rem;display:none}.topbar-spacer{flex:1}.topbar-user{align-items:center;gap:1rem;display:flex}.topbar-user-info{text-align:right}.topbar-user-name{color:var(--color-text-primary);font-size:.85rem;font-weight:500}.topbar-user-role{color:var(--color-gold-muted);font-size:.7rem}.topbar-signout{border:1px solid var(--color-border);color:var(--color-text-secondary);border-radius:var(--radius-sm);background:0 0;padding:.45rem .85rem;font-size:.8rem;transition:border-color .12s,color .12s}.topbar-signout:hover{border-color:var(--color-danger);color:var(--color-danger)}@media (width<=900px){.topbar-menu-btn{display:block}}.dashboard-shell{min-height:100vh;display:flex}.dashboard-main{flex-direction:column;flex:1;min-width:0;margin-left:260px;display:flex}.dashboard-content{flex:1;padding:1.75rem}@media (width<=900px){.dashboard-main{margin-left:0}}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:1rem;display:grid}.stat-card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1.1rem 1.25rem}.stat-card-label{color:var(--color-text-secondary);margin-bottom:.5rem;font-size:.78rem}.stat-card-value{color:var(--color-gold);font-size:1.5rem;font-weight:600}.chart-card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1.25rem 1.25rem .75rem}.chart-card-title{color:var(--color-text-secondary);margin-bottom:.75rem;font-size:.85rem;font-weight:500}.chart-grid{grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:1.25rem;display:grid}.dashboard-note{color:var(--color-text-muted);margin-top:1.5rem;font-size:.8rem;font-style:italic}.status-badge{letter-spacing:.02em;border-radius:999px;align-items:center;padding:.25rem .65rem;font-size:.72rem;font-weight:600;display:inline-flex}.status-vacant{color:#6fbd85;background:#4a7c5926}.status-occupied{color:var(--color-gold-light);background:#d4af3726}.status-reserved{color:var(--color-gold-muted);background:#a3872b26}.status-cleaning{color:var(--color-text-secondary);background:#a3a3a326}.status-out{color:#e0705c;background:#a8402f26}.status-default{color:var(--color-text-secondary);background:#a3a3a326}.rooms-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.75rem;display:flex}.rooms-filter{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);outline:none;padding:.55rem .85rem;font-size:.85rem}.rooms-filter:focus{border-color:var(--color-gold)}.rooms-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;display:grid}.rooms-error{color:var(--color-danger);margin-bottom:1rem;font-size:.85rem}.rooms-empty{color:var(--color-text-muted);grid-column:1/-1;font-size:.9rem}.room-card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;gap:.5rem;padding:1.1rem;display:flex}.room-card-header{justify-content:space-between;align-items:center;display:flex}.room-card-number{color:var(--color-gold);font-size:1.15rem;font-weight:700}.room-card-type{color:var(--color-text-secondary);font-size:.85rem}.room-card-price{color:var(--color-text-primary);font-size:.9rem;font-weight:500}.room-card-edit-btn{border:1px solid var(--color-border);color:var(--color-text-secondary);border-radius:var(--radius-sm);background:0 0;margin-top:.6rem;padding:.5rem;font-size:.82rem;transition:border-color .12s,color .12s}.room-card-edit-btn:hover{border-color:var(--color-gold);color:var(--color-gold)}.modal-overlay{z-index:100;background:#0009;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:420px;padding:1.5rem}.modal-card-wide{max-width:640px;max-height:90vh;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.modal-header h2{color:var(--color-gold);font-size:1.1rem}.modal-close{color:var(--color-text-secondary);background:0 0;border:none;font-size:1.4rem;line-height:1}.modal-form{flex-direction:column;gap:1rem;display:flex}.modal-form label{color:var(--color-text-secondary);flex-direction:column;gap:.4rem;font-size:.85rem;display:flex}.modal-form input,.modal-form select{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);outline:none;padding:.6rem .75rem;font-size:.9rem}.modal-form input:focus,.modal-form select:focus{border-color:var(--color-gold)}.modal-error{color:var(--color-danger);font-size:.82rem}.modal-actions{justify-content:flex-end;gap:.75rem;margin-top:.5rem;display:flex}.modal-btn-secondary{border:1px solid var(--color-border);color:var(--color-text-secondary);border-radius:var(--radius-sm);background:0 0;padding:.55rem 1rem;font-size:.85rem}.modal-btn-primary{background:var(--color-gold);color:#1a1a0a;border-radius:var(--radius-sm);border:none;padding:.55rem 1.1rem;font-size:.85rem;font-weight:600}.modal-btn-primary:disabled{opacity:.6}.page-title{color:var(--color-text-primary);font-size:1.5rem}.page-subtitle{color:var(--color-text-secondary);margin-top:.25rem;margin-bottom:1.75rem;font-size:.9rem}.page-header-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.75rem;display:flex}.primary-btn{background:var(--color-gold);color:#1a1a0a;border-radius:var(--radius-sm);border:none;padding:.65rem 1.15rem;font-size:.88rem;font-weight:600}.primary-btn:hover{background:var(--color-gold-light)}.table-wrapper{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:auto hidden}.data-table{border-collapse:collapse;width:100%;font-size:.85rem}.data-table th{text-align:left;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--color-border);padding:.85rem 1rem;font-size:.75rem;font-weight:500}.data-table td{border-bottom:1px solid var(--color-border);color:var(--color-text-primary);padding:.85rem 1rem}.data-table tr:last-child td{border-bottom:none}.table-capitalize{text-transform:capitalize}.table-empty{text-align:center;color:var(--color-text-muted);padding:2rem 1rem!important}.table-action-btn{border:1px solid var(--color-border);color:var(--color-gold-muted);border-radius:var(--radius-sm);background:0 0;padding:.4rem .85rem;font-size:.78rem}.table-action-btn:hover{border-color:var(--color-gold);color:var(--color-gold)}.form-grid{grid-template-columns:1fr 1fr;gap:.9rem;display:grid}.availability-hint{color:var(--color-text-muted);font-size:.8rem;font-style:italic}@media (width<=600px){.form-grid{grid-template-columns:1fr}}.detail-grid{border-bottom:1px solid var(--color-border);grid-template-columns:repeat(2,1fr);gap:.9rem;margin-bottom:1.25rem;padding-bottom:1.25rem;display:grid}.detail-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;display:block}.detail-value{color:var(--color-text-primary);margin-top:.2rem;font-size:.9rem;display:block}.detail-actions{flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem;display:flex}.detail-section{margin-bottom:1.5rem}.detail-section h3{color:var(--color-gold-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.6rem;font-size:.82rem}.detail-list{color:var(--color-text-secondary);flex-direction:column;gap:.4rem;margin-bottom:.75rem;font-size:.85rem;list-style:none;display:flex}.detail-list li{background:var(--color-bg);border-radius:var(--radius-sm);justify-content:space-between;gap:.5rem;padding:.4rem .6rem;display:flex}.detail-list-amount{color:var(--color-gold);white-space:nowrap;font-size:.78rem;font-weight:500}.detail-list-empty{color:var(--color-text-muted);font-style:italic;background:0 0!important;padding:.2rem .6rem!important}.inline-form{flex-wrap:wrap;gap:.5rem;display:flex}.inline-form select,.inline-form input{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);outline:none;padding:.5rem .65rem;font-size:.82rem}.inline-form input[type=text]{flex:1;min-width:120px}.inline-form button{background:var(--color-green);color:var(--color-gold-light);border-radius:var(--radius-sm);border:none;padding:.5rem 1rem;font-size:.82rem;font-weight:500}.detail-summary{border-top:1px solid var(--color-border);flex-direction:column;gap:.4rem;padding-top:1rem;font-size:.88rem;display:flex}.detail-summary>div{color:var(--color-text-secondary);justify-content:space-between;display:flex}.balance-due span:last-child{color:var(--color-danger);font-weight:600}.balance-clear span:last-child{color:var(--color-success);font-weight:600}.receipt-overlay{z-index:200;background:#000000b3;flex-direction:column;align-items:center;padding:2rem 1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.receipt-toolbar{gap:.75rem;margin-bottom:1.5rem;display:flex}.receipt-paper{color:#111;background:#fff;border-radius:4px;width:302px;padding:1rem .85rem;font-family:Courier New,monospace;font-size:.78rem}.receipt-header{text-align:center;margin-bottom:.5rem}.receipt-header h2{letter-spacing:.05em;font-size:1.05rem}.receipt-divider{text-align:center;color:#666;margin:.5rem 0;font-size:.68rem}.receipt-section-title{margin-bottom:.3rem;font-weight:700}.receipt-row{justify-content:space-between;gap:.5rem;padding:.15rem 0;display:flex}.receipt-total{font-weight:700}.receipt-footer{text-align:center;margin-top:.75rem}.receipt-footer-small{color:#666;text-align:center;font-size:.68rem}@media print{@page{size:80mm auto;margin:0}html,body{width:80mm;background:#fff!important;margin:0!important;padding:0!important}#root{width:80mm}.no-print{display:none!important}.receipt-overlay{background:0 0!important;padding:0!important;display:block!important;position:static!important;overflow:visible!important}.receipt-paper{box-shadow:none!important;width:80mm!important;margin:0!important;padding:2mm 3mm!important}}.date-range-filter{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);gap:.5rem;width:fit-content;padding:.35rem;display:flex}.date-range-btn{color:var(--color-text-secondary);border-radius:var(--radius-sm);background:0 0;border:none;padding:.5rem 1rem;font-size:.82rem;font-weight:500}.date-range-btn:hover{color:var(--color-text-primary)}.date-range-btn-active{background:var(--color-gold);color:#1a1a0a}.chart-empty-note{color:var(--color-text-muted);text-align:center;padding:2rem 0;font-size:.85rem;font-style:italic}.vat-settings-card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-top:1.5rem;padding:1.25rem}.hk-section-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-gold-muted);margin-bottom:.85rem;font-size:.85rem}
