body{background:#f1f5f9;font-family:Arial,sans-serif}.app-container{min-height:100vh;display:flex}.main-content{background:#f1f5f9;flex:1;padding:30px;overflow-y:auto}.sidebar{color:#fff;background:#0f172a;flex-direction:column;width:280px;min-width:280px;min-height:100vh;padding:20px;display:flex}.logo{text-align:center;color:#fff;margin-bottom:25px;font-size:28px;font-weight:700}.sidebar-menu{flex-direction:column;gap:12px;display:flex}.menu{color:#fff;border-radius:10px;padding:14px 18px;text-decoration:none;transition:all .3s}.menu:hover{background:#334155}.menu.active{background:#2563eb}.sidebar-footer{margin-top:auto}.logout-btn{color:#fff;cursor:pointer;background:#dc2626;border:none;border-radius:10px;width:100%;padding:14px;font-size:16px}.logout-btn:hover{background:#b91c1c}.dashboard-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;margin-top:30px;display:grid}.stat-card{background:#fff;border-radius:15px;padding:25px;box-shadow:0 2px 10px #00000014}.stat-card h3{color:#64748b;margin-bottom:10px}.stat-card h2{font-size:34px}.room-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:20px;margin-top:30px;display:grid}.room-card{cursor:pointer;background:#fff;border-radius:15px;padding:25px;transition:all .2s;box-shadow:0 2px 10px #00000014}.room-card:hover{transform:translateY(-5px)}.room-card h2{font-size:32px}.room-card p{color:gray;margin-top:10px}.modal-overlay{z-index:999;background:#00000080;justify-content:center;align-items:flex-start;padding:30px 0;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:#fff;border-radius:15px;width:550px;max-height:calc(100vh - 60px);margin:auto;padding:30px;overflow-y:auto}.modal h2{margin-bottom:20px}.modal p{margin:12px 0}.modal label{margin-top:14px;margin-bottom:6px;font-weight:700;display:block}.modal input,.modal textarea{border:1px solid #ddd;border-radius:8px;width:100%;margin-top:5px;padding:12px}.modal textarea{resize:vertical}.modal-buttons{gap:10px;margin-top:25px;display:flex}.modal-buttons button{cursor:pointer;color:#fff;background:#2563eb;border:none;border-radius:8px;flex:1;padding:12px}.modal-buttons button:hover{opacity:.9}.close-btn{color:#fff;cursor:pointer;background:#ef4444;border:none;border-radius:8px;width:100%;margin-top:20px;padding:12px}.close-btn:hover{background:#dc2626}.customer-table{border-collapse:collapse;background:#fff;border-radius:12px;width:100%;margin-top:20px;overflow:hidden}.customer-table th{color:#fff;background:#2563eb;padding:14px}.customer-table td{border-bottom:1px solid #eee;padding:14px}.customer-table tr:hover{background:#f8fafc}.search-input{border:1px solid #ddd;border-radius:10px;width:100%;max-width:400px;margin:20px 0;padding:12px}.report-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-top:30px;display:grid}.report-card{background:#fff;border-radius:15px;padding:25px;box-shadow:0 2px 10px #00000014}.report-card h3{color:#64748b;margin-bottom:10px}.report-card h2{font-size:30px}.expense-form{background:#fff;border-radius:15px;max-width:600px;margin-top:20px;padding:25px}.expense-form label{margin-top:15px;font-weight:700;display:block}.expense-form input{border:1px solid #ddd;border-radius:8px;width:100%;margin-top:5px;padding:12px}.expense-total{color:#fff;background:#1e293b;border-radius:15px;max-width:600px;margin-top:30px;padding:25px}.login-page{background:#f1f5f9;justify-content:center;align-items:center;height:100vh;display:flex}.login-box{background:#fff;border-radius:15px;width:420px;padding:40px;box-shadow:0 2px 15px #0000001a}.login-box h1{text-align:center;margin-bottom:30px}.login-box input{border:1px solid #ddd;border-radius:8px;width:100%;margin-bottom:15px;padding:14px}.login-box button{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:8px;width:100%;padding:14px}.login-box button:hover{background:#1d4ed8}.modal select{border:1px solid #ddd;border-radius:8px;width:100%;margin-top:10px;padding:12px}.menu{color:#fff;border-radius:10px;align-items:center;gap:12px;width:100%;margin-bottom:10px;padding:14px 18px;text-decoration:none;transition:all .25s;display:flex}.sidebar nav{flex-direction:column;gap:8px;margin-top:30px;display:flex}.modal select{background:#fff;border:1px solid #ddd;border-radius:8px;width:100%;margin-top:10px;margin-bottom:15px;padding:12px;font-size:15px}.system-error-boundary{color:#172033;background:#f4f7fb;place-items:center;min-height:100vh;padding:24px;display:grid}.system-error-boundary-card{text-align:center;background:#fff;border:1px solid #dbe3ef;border-radius:20px;width:min(100%,520px);padding:36px 28px;box-shadow:0 18px 50px #1720331f}.system-error-boundary-icon{margin-bottom:16px;font-size:42px}.system-error-boundary-card h1{margin:0 0 12px;font-size:clamp(24px,4vw,32px);line-height:1.25}.system-error-boundary-card p{color:#5a6578;max-width:420px;margin:0 auto 24px;line-height:1.65}.system-error-boundary-card button{color:#fff;min-height:46px;font:inherit;cursor:pointer;background:#2563eb;border:0;border-radius:12px;padding:0 24px;font-weight:700}.system-error-boundary-card button:hover{background:#1d4ed8}.system-error-boundary-card button:focus-visible{outline-offset:3px;outline:3px solid #2563eb4d}.pwa-install-prompt{right:max(18px, env(safe-area-inset-right));bottom:max(18px, env(safe-area-inset-bottom));z-index:10000;color:#10203a;background:#fffffffa;border:1px solid #1769f533;border-radius:18px;grid-template-columns:58px minmax(0,1fr);align-items:start;gap:14px;width:min(440px,100vw - 36px);padding:16px 42px 16px 16px;animation:.22s ease-out pwa-install-prompt-enter;display:grid;position:fixed;box-shadow:0 18px 48px #0f234633,0 4px 14px #0f234614}.pwa-install-prompt[aria-label="Cập nhật ứng dụng HotelOS"]{border-color:#f1ae2d80;box-shadow:0 18px 48px #0f234638,0 0 0 3px #f1ae2d1a}.pwa-install-prompt__icon{border-radius:15px;width:58px;height:58px;display:block;box-shadow:0 6px 16px #1769f533}.pwa-install-prompt__content{min-width:0}.pwa-install-prompt__content strong{margin:1px 0 5px;font-size:17px;line-height:1.3;display:block}.pwa-install-prompt__content p{color:#5b6b82;margin:0;font-size:14px;line-height:1.45}.pwa-install-prompt__content p[role=alert]{color:#c53030;margin-top:8px;font-size:13px;font-weight:600}.pwa-install-prompt__close{color:#718096;width:30px;height:30px;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;font-size:24px;line-height:1;display:grid;position:absolute;top:8px;right:10px}.pwa-install-prompt__close:hover{color:#16335f;background:#eef4ff}.pwa-install-prompt__close:disabled{opacity:.55;cursor:wait}.pwa-install-prompt__actions{flex-wrap:wrap;gap:9px;margin-top:13px;display:flex}.pwa-install-prompt__actions button{min-height:40px;font:inherit;cursor:pointer;border-radius:11px;padding:9px 15px;font-size:14px;font-weight:700}.pwa-install-prompt__later{color:#45566f;background:#edf2f8;border:1px solid #0000}.pwa-install-prompt__later:hover{color:#243b5a;background:#e2eaf4}.pwa-install-prompt__later:disabled{opacity:.55;cursor:wait}.pwa-install-prompt__install{color:#fff;background:#1769f5;border:1px solid #1769f5;box-shadow:0 5px 12px #1769f538}.pwa-install-prompt__install:hover{background:#0e58d5;border-color:#0e58d5}.pwa-install-prompt__install:disabled{opacity:.65;cursor:wait}.pwa-install-prompt__steps{color:#4e6078;margin:8px 0 0;padding-left:19px;font-size:13px;line-height:1.55}@keyframes pwa-install-prompt-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (width<=560px){.pwa-install-prompt{right:max(10px, env(safe-area-inset-right));bottom:max(10px, env(safe-area-inset-bottom));left:max(10px, env(safe-area-inset-left));border-radius:16px;grid-template-columns:48px minmax(0,1fr);gap:11px;width:auto;padding:14px 38px 14px 14px}.pwa-install-prompt__icon{border-radius:13px;width:48px;height:48px}.pwa-install-prompt__content strong{font-size:15px}.pwa-install-prompt__content p{font-size:13px}.pwa-install-prompt__actions{margin-left:-59px}.pwa-install-prompt__actions button{flex:120px}}@media (prefers-reduced-motion:reduce){.pwa-install-prompt{animation:none}}:root{--primary:#2563eb;--primary-hover:#1d4ed8;--success:#16a34a;--warning:#f59e0b;--danger:#dc2626;--bg:#f4f7fb;--card:#fff;--border:#e5e7eb;--text:#111827;--text-light:#6b7280;--radius:14px;--shadow:0 8px 24px #00000014;font-family:Inter,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,sans-serif}#root{min-height:100vh}h1{color:var(--text);margin-bottom:24px;font-size:30px;font-weight:700}h2{font-size:22px;font-weight:600}button{cursor:pointer;border:none;border-radius:10px;padding:10px 18px;font-size:15px;font-weight:600;transition:all .25s}input,select,textarea{border:1px solid var(--border);border-radius:10px;outline:none;width:100%;padding:10px 14px;font-size:15px;transition:all .25s}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 4px #2563eb26}table{border-collapse:collapse;width:100%;box-shadow:var(--shadow);background:#fff;border-radius:14px;overflow:hidden}th{text-align:left;background:#f8fafc;padding:14px;font-weight:700}td{border-top:1px solid #f1f5f9;padding:14px}tr:hover{background:#f8fafc}.dashboard-card{box-shadow:var(--shadow);background:#fff;border-radius:16px;padding:20px;transition:all .25s}.dashboard-card:hover{transform:translateY(-2px)}
