:root{--c-gray-50:#f8fafc;--c-gray-100:#f1f5f9;--c-gray-200:#e2e8f0;--c-gray-300:#cbd5e1;--c-gray-400:#94a3b8;--c-gray-500:#64748b;--c-gray-600:#475569;--c-gray-700:#334155;--c-gray-800:#1e293b;--c-gray-900:#0f172a;--c-primary-50:#eef2ff;--c-primary-100:#e0e7ff;--c-primary-200:#c7d2fe;--c-primary-300:#a5b4fc;--c-primary-400:#818cf8;--c-primary-500:#6366f1;--c-primary-600:#4f46e5;--c-primary-700:#4338ca;--c-primary-800:#3730a3;--c-primary-900:#312e81;--c-success-50:#f0fdf4;--c-success-100:#dcfce7;--c-success-500:#22c55e;--c-success-600:#16a34a;--c-success-700:#15803d;--c-warning-50:#fffbeb;--c-warning-100:#fef3c7;--c-warning-500:#f59e0b;--c-warning-600:#d97706;--c-warning-700:#b45309;--c-danger-50:#fef2f2;--c-danger-100:#fee2e2;--c-danger-500:#ef4444;--c-danger-600:#dc2626;--c-danger-700:#b91c1c;--c-info-50:#eff6ff;--c-info-100:#dbeafe;--c-info-500:#3b82f6;--c-info-600:#2563eb;--c-info-700:#1d4ed8;--c-purple-50:#faf5ff;--c-purple-100:#f3e8ff;--c-purple-500:#a855f7;--c-purple-600:#9333ea;--c-purple-700:#7e22ce;--bg-app:var(--c-gray-50);--bg-surface:#fff;--bg-sidebar:var(--c-gray-900);--bg-sidebar-hover:var(--c-gray-800);--bg-sidebar-active:#6366f126;--bg-topbar:#fff;--bg-subtle:var(--c-gray-100);--bg-hover:var(--c-gray-50);--border-color:var(--c-gray-200);--border-color-strong:var(--c-gray-300);--border-sidebar:#ffffff14;--text-primary:var(--c-gray-900);--text-secondary:var(--c-gray-600);--text-muted:var(--c-gray-400);--text-sidebar:var(--c-gray-300);--text-sidebar-muted:var(--c-gray-500);--text-on-primary:#fff;--accent:var(--c-primary-600);--accent-hover:var(--c-primary-700);--accent-light:var(--c-primary-50);--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono:"SF Mono", "Cascadia Code", "Consolas", monospace;--text-xs:11px;--text-sm:13px;--text-base:14px;--text-md:15px;--text-lg:17px;--text-xl:20px;--text-2xl:24px;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-full:9999px;--shadow-xs:0 1px 2px 0 #0000000a;--shadow-sm:0 1px 3px 0 #0000000f, 0 1px 2px 0 #0000000a;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000a;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a;--shadow-xl:0 20px 25px -5px #00000014, 0 8px 10px -6px #0000000a;--focus-ring:0 0 0 2px var(--c-primary-100), 0 0 0 3px var(--c-primary-600);--sidebar-width:240px;--topbar-height:48px;--content-max-width:1600px;--content-padding:24px;--transition-fast:.12s ease;--transition-base:.18s ease}*{box-sizing:border-box}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--text-primary);background:var(--bg-app);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}h1,h2,h3,h4,h5,h6{font-weight:var(--weight-semibold);line-height:var(--leading-tight);margin:0}h1{font-size:var(--text-2xl);font-weight:var(--weight-bold)}h2{font-size:var(--text-lg)}h3{font-size:var(--text-md)}p{margin:0}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}button{font-family:inherit;font-size:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--c-gray-300);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--c-gray-400)}.app-layout{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);background:var(--bg-sidebar);color:var(--text-sidebar);border-right:1px solid var(--border-sidebar);z-index:20;flex-direction:column;flex-shrink:0;height:100dvh;display:flex;position:sticky;top:0}.sidebar-brand{align-items:center;gap:var(--sp-2);padding:var(--sp-4) var(--sp-4) var(--sp-3);border-bottom:1px solid var(--border-sidebar);display:flex}.sidebar-brand-icon{border-radius:var(--radius-md);background:var(--c-primary-600);color:#fff;width:28px;height:28px;font-size:14px;font-weight:var(--weight-bold);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-brand-text{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:#fff;line-height:1.3}.sidebar-brand-sub{font-size:var(--text-xs);color:var(--text-sidebar-muted);font-weight:var(--weight-normal)}.sidebar-nav{padding:var(--sp-2) var(--sp-2);flex-direction:column;flex:1;gap:1px;min-height:0;display:flex;overflow-y:auto}.sidebar-nav-link{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);color:var(--text-sidebar);font-size:var(--text-md);font-weight:var(--weight-medium);transition:background var(--transition-fast), color var(--transition-fast);text-decoration:none;display:flex}.sidebar-nav-link:hover{background:var(--bg-sidebar-hover);color:#fff}.sidebar-nav-link.active{background:var(--bg-sidebar-active);color:var(--c-primary-300);font-weight:var(--weight-semibold)}.sidebar-nav-link svg{opacity:.7;flex-shrink:0;width:16px;height:16px}.sidebar-nav-link.active svg{opacity:1}.sidebar-nav-section-label{padding:var(--sp-4) var(--sp-3) var(--sp-1);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-sidebar-muted);text-transform:uppercase;letter-spacing:.05em}.nav-group{flex-direction:column;display:flex}.nav-group-header{width:100%;color:var(--text-sidebar);text-align:left;font-size:var(--text-md);font-weight:var(--weight-medium);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);transition:background var(--transition-fast);background:0 0;border:none;justify-content:space-between;align-items:center;font-family:inherit;display:flex}.nav-group-header:hover{background:var(--bg-sidebar-hover)}.nav-group-header.active{color:var(--c-primary-300);font-weight:var(--weight-semibold)}.nav-group-arrow{transition:transform var(--transition-fast);color:var(--text-sidebar-muted);font-size:10px}.nav-group-arrow.open{transform:rotate(90deg)}.nav-group-items{padding-left:var(--sp-2);flex-direction:column;gap:1px;margin-top:1px;display:flex}.nav-group-items a{align-items:center;gap:var(--sp-2);font-size:var(--text-base);padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-sm);color:var(--text-sidebar-muted);transition:background var(--transition-fast), color var(--transition-fast);text-decoration:none;display:flex}.nav-group-items a svg{opacity:.6;flex-shrink:0;width:14px;height:14px}.nav-group-items a:hover svg,.nav-group-items a.active svg{opacity:1}.nav-group-items a:hover{background:var(--bg-sidebar-hover);color:var(--text-sidebar)}.nav-group-items a.active{background:var(--bg-sidebar-active);color:var(--c-primary-300)}.sidebar-user{align-items:center;gap:var(--sp-2);padding:var(--sp-3);border-top:1px solid var(--border-sidebar);flex-shrink:0;display:flex}.sidebar-actions-inline{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--border-sidebar)}.sidebar-user-avatar{border-radius:var(--radius-full);background:var(--c-primary-600);color:#fff;width:28px;height:28px;font-size:var(--text-xs);font-weight:var(--weight-bold);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-user-info{flex:1;min-width:0}.sidebar-user-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:#fff;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sidebar-user-role{font-size:var(--text-xs);color:var(--text-sidebar-muted)}.sidebar-logout{color:var(--text-sidebar-muted);padding:var(--sp-1);border-radius:var(--radius-sm);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;align-items:center;display:flex}.sidebar-logout:hover{background:var(--bg-sidebar-hover);color:var(--c-danger-500)}.sidebar-logout svg{width:16px;height:16px}.topbar{height:var(--topbar-height);background:var(--bg-topbar);border-bottom:1px solid var(--border-color);padding:0 var(--content-padding);z-index:10;flex-shrink:0;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.topbar-left{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);color:var(--text-secondary);display:flex}.topbar-right{align-items:center;gap:var(--sp-3);display:flex}.topbar-icon-btn{border-radius:var(--radius-md);width:32px;height:32px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.topbar-icon-btn:hover{background:var(--bg-subtle);color:var(--text-primary)}.topbar-icon-btn svg{width:18px;height:18px}.topbar-avatar{border-radius:var(--radius-full);background:var(--c-primary-600);color:#fff;width:28px;height:28px;font-size:var(--text-xs);font-weight:var(--weight-bold);justify-content:center;align-items:center;display:flex}.content-wrapper{flex-direction:column;flex:1;min-width:0;display:flex}.content{padding:var(--content-padding);max-width:var(--content-max-width);flex:1;width:100%;overflow:auto}.tabs{border-bottom:1px solid var(--border-color);margin-bottom:var(--sp-4);gap:0;display:flex;overflow-x:auto}.tab{padding:var(--sp-2) var(--sp-4);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary);cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:var(--weight-semibold)}.room-detail-header{gap:var(--sp-3);margin-bottom:var(--sp-5);flex-direction:column;display:flex}.room-detail-title{align-items:center;gap:var(--sp-2);display:flex}.room-detail-back{border-radius:var(--radius-md);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;text-decoration:none;display:flex}.room-detail-back:hover{background:var(--bg-subtle);color:var(--text-primary)}.room-detail-meta{gap:var(--sp-4);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.room-detail-meta-item{flex-direction:column;gap:2px;display:flex}.room-detail-meta-label{font-size:var(--text-xs);color:var(--text-muted);font-weight:var(--weight-medium);text-transform:uppercase;letter-spacing:.03em}.room-detail-meta-value{font-size:var(--text-sm);color:var(--text-primary);font-weight:var(--weight-medium)}.page-header{justify-content:space-between;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-5);flex-wrap:wrap;display:flex}.page-header h1{font-size:var(--text-xl);font-weight:var(--weight-bold);color:var(--text-primary)}.page-header-actions{align-items:center;gap:var(--sp-2);display:flex}button:not(.modal-close):not(.menu-toggle):not(.nav-group-header):not(.sidebar-logout):not(.topbar-icon-btn):not(.room-picker-toggle):not(.room-picker-actions button):not(.calendar-cell):not(.sidebar-brand-icon):not(.btn):not(.filter-button){justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--accent);color:var(--text-on-primary);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;line-height:1;display:inline-flex}button:not(.modal-close):not(.menu-toggle):not(.nav-group-header):not(.sidebar-logout):not(.topbar-icon-btn):not(.room-picker-toggle):not(.room-picker-actions button):not(.calendar-cell):not(.sidebar-brand-icon):not(.btn):not(.filter-button):hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}button:not(.modal-close):not(.menu-toggle):not(.nav-group-header):not(.sidebar-logout):not(.topbar-icon-btn):not(.room-picker-toggle):not(.room-picker-actions button):not(.calendar-cell):not(.sidebar-brand-icon):not(.btn):not(.filter-button):disabled{opacity:.5;cursor:not-allowed}button:not(.modal-close):not(.menu-toggle):not(.nav-group-header):not(.sidebar-logout):not(.topbar-icon-btn):not(.room-picker-toggle):not(.room-picker-actions button):not(.calendar-cell):not(.sidebar-brand-icon):not(.btn):not(.filter-button):focus-visible{box-shadow:var(--focus-ring);outline:none}button[type=button]:not(.modal-close):not(.menu-toggle):not(.nav-group-header):not(.sidebar-logout):not(.topbar-icon-btn):not(.room-picker-toggle):not(.room-picker-actions button):not(.calendar-cell):not(.sidebar-brand-icon):not(.btn):not(.filter-button){background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-color-strong)}button[type=button]:not(.modal-close):not(.menu-toggle):not(.nav-group-header):not(.sidebar-logout):not(.topbar-icon-btn):not(.room-picker-toggle):not(.room-picker-actions button):not(.calendar-cell):not(.sidebar-brand-icon):not(.btn):not(.filter-button):hover:not(:disabled){background:var(--bg-subtle);border-color:var(--c-gray-400)}.btn{justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;border:1px solid #0000;line-height:1;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.btn-primary{background:var(--accent);color:var(--text-on-primary);border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-color-strong)}.btn-secondary:hover:not(:disabled){background:var(--bg-subtle);border-color:var(--c-gray-400)}.btn-ghost{color:var(--text-secondary);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--bg-subtle);color:var(--text-primary)}.btn-danger{background:var(--c-danger-600);color:#fff;border-color:var(--c-danger-600)}.btn-danger:hover:not(:disabled){background:var(--c-danger-700);border-color:var(--c-danger-700)}.btn-sm{padding:var(--sp-1) var(--sp-2);font-size:var(--text-xs)}.btn-icon{padding:var(--sp-2);width:32px;height:32px}.btn-icon.btn-sm{width:28px;height:28px;padding:var(--sp-1)}.btn svg{flex-shrink:0;width:16px;height:16px}.filter-button{padding:var(--sp-2) var(--sp-4);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--accent);color:var(--text-on-primary);font-weight:var(--weight-medium);font-size:var(--text-sm);cursor:pointer;transition:all var(--transition-fast);align-self:flex-end}.filter-button:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.filter-button:disabled{opacity:.5;cursor:not-allowed}.input,.select,.textarea{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-color-strong);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-primary);background:var(--bg-surface);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);width:100%}.input:focus,.select:focus,.textarea:focus{border-color:var(--c-primary-400);box-shadow:0 0 0 2px var(--c-primary-100);outline:none}.input::placeholder{color:var(--text-muted)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--bg-subtle);color:var(--text-muted);cursor:not-allowed}.badge{padding:2px var(--sp-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);background:var(--bg-subtle);color:var(--text-secondary);white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.badge-confirmed{background:var(--c-info-100);color:var(--c-info-700)}.badge-checked_in{background:var(--c-success-100);color:var(--c-success-700)}.badge-checked_out{background:var(--c-gray-100);color:var(--c-gray-600)}.badge-canceled{background:var(--c-danger-100);color:var(--c-danger-700)}.badge-no_show{background:var(--c-warning-100);color:var(--c-warning-700)}.badge-modified{background:var(--c-purple-100);color:var(--c-purple-700)}.badge-new{background:var(--c-primary-100);color:var(--c-primary-700)}.badge-pending{background:var(--c-warning-100);color:var(--c-warning-700)}.source-badge{background:var(--c-purple-50);color:var(--c-purple-700);border:1px solid var(--c-purple-100);border-radius:var(--radius-sm);padding:2px var(--sp-2);font-size:var(--text-xs);font-weight:var(--weight-medium)}.card,.panel{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow-xs)}.panel h2,.card-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-primary);margin:0 0 var(--sp-4)}.panel-grid{gap:var(--sp-4);margin-bottom:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));display:grid}.stat-grid{gap:var(--sp-3);margin-bottom:var(--sp-5);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.stat-card{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--sp-3) var(--sp-4);color:inherit;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);flex-direction:column;gap:2px;text-decoration:none;display:flex}.stat-card:hover{border-color:var(--c-primary-300);box-shadow:var(--shadow-sm)}.stat-value{font-size:var(--text-xl);font-weight:var(--weight-bold);color:var(--text-primary)}.stat-label{font-size:var(--text-xs);color:var(--text-secondary);font-weight:var(--weight-medium)}.table-wrapper{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);overflow:auto}table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}th,td{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-color);text-align:left;white-space:nowrap}th{background:var(--bg-subtle);font-weight:var(--weight-semibold);font-size:var(--text-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;z-index:1;position:sticky;top:0}tbody tr{transition:background var(--transition-fast)}tbody tr:hover{background:var(--bg-hover)}tfoot th{background:var(--bg-subtle);border-top:2px solid var(--border-color-strong);font-weight:var(--weight-semibold);color:var(--text-primary);text-transform:none;letter-spacing:0;font-size:var(--text-sm)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}td input[type=number],td input[type=date],td input[type=text],td select{box-sizing:border-box}td input[type=number]{width:80px;max-width:80px}td input[type=date]{width:120px;max-width:120px}td input[type=text],td select{width:100%;max-width:160px}@media (width<=768px){td input[type=number]{width:60px;max-width:60px;padding:var(--sp-1);font-size:var(--text-xs)}td input[type=date]{width:100px;max-width:100px;padding:var(--sp-1);font-size:var(--text-xs)}td input[type=text],td select{min-width:80px;max-width:120px;padding:var(--sp-1);font-size:var(--text-xs)}th,td{padding:var(--sp-1) var(--sp-2)}}.top-row{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);margin-bottom:var(--sp-5);flex-wrap:wrap;display:flex}.top-row .stat-grid{flex-wrap:wrap;justify-content:flex-end;width:auto;margin-bottom:0;margin-left:auto;display:flex}.top-row .stat-grid .stat-card{flex:none;width:140px}.date-filter{gap:var(--sp-2);flex-wrap:wrap;align-items:flex-end;display:flex}.date-filter label{font-size:var(--text-xs);color:var(--text-secondary);font-weight:var(--weight-medium);flex-direction:column;gap:4px;display:flex}.date-filter input,.date-filter select{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-color-strong);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-primary);background:var(--bg-surface);transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.date-filter input:focus,.date-filter select:focus{border-color:var(--c-primary-400);box-shadow:0 0 0 2px var(--c-primary-100);outline:none}.room-picker{flex-direction:column;gap:4px;display:flex;position:relative}.room-picker-label-top{font-size:var(--text-xs);color:var(--text-secondary);font-weight:var(--weight-medium)}.room-picker-toggle{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-color-strong);border-radius:var(--radius-md);background:var(--bg-surface);font-size:var(--text-sm);color:var(--text-primary);cursor:pointer;text-align:left;min-width:160px;transition:border-color var(--transition-fast)}.room-picker-toggle:hover{border-color:var(--c-gray-400)}.room-picker-toggle:focus{border-color:var(--c-primary-400);box-shadow:0 0 0 2px var(--c-primary-100);outline:none}.room-picker-dropdown{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:30;width:240px;padding:var(--sp-2);margin-top:4px;position:absolute;top:100%;left:0}.room-picker-actions{gap:var(--sp-2);margin-bottom:var(--sp-2);display:flex}.room-picker-actions button{padding:var(--sp-1) var(--sp-2);border:1px solid var(--border-color);border-radius:var(--radius-sm);background:var(--bg-surface);font-size:var(--text-xs);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);flex:1}.room-picker-actions button:hover{background:var(--bg-subtle);color:var(--text-primary)}.room-picker-list{flex-direction:column;gap:2px;max-height:240px;display:flex;overflow-y:auto}.date-filter .room-picker-item{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);padding:var(--sp-1) 2px;cursor:pointer;border-radius:var(--radius-sm);flex-direction:row;display:flex}.room-picker-item:hover{background:var(--bg-hover)}.room-picker-item input[type=checkbox]{flex:none;margin:0}.room-picker-item span{text-align:left;color:var(--text-primary);flex:1}.manage-hint{color:var(--text-secondary);font-size:var(--text-sm);margin-bottom:var(--sp-4)}.manage-form{gap:var(--sp-3);grid-template-columns:repeat(2,1fr);display:grid}.manage-form label{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-secondary);flex-direction:column;gap:4px;display:flex}.manage-form label:has(input[type=checkbox]){align-items:center;gap:var(--sp-2);font-size:var(--text-sm);color:var(--text-primary);cursor:pointer;flex-direction:row}.manage-form label:has(input[type=checkbox]) input[type=checkbox]{cursor:pointer;width:16px;height:16px;accent-color:var(--accent);flex-shrink:0;margin:0}.manage-form-full{grid-column:1/-1}.manage-form input,.manage-form textarea,.manage-form select{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-color-strong);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-primary);background:var(--bg-surface);transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.manage-form input:focus,.manage-form textarea:focus,.manage-form select:focus{border-color:var(--c-primary-400);box-shadow:0 0 0 2px var(--c-primary-100);outline:none}.manage-form-actions{gap:var(--sp-2);grid-column:1/-1;display:flex}.manage-form-actions button{padding:var(--sp-2) var(--sp-4);border:1px solid var(--accent);border-radius:var(--radius-md);cursor:pointer;background:var(--accent);color:var(--text-on-primary);font-weight:var(--weight-medium);font-size:var(--text-sm);transition:all var(--transition-fast)}.manage-form-actions button:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.manage-form-actions button:disabled{opacity:.5;cursor:not-allowed}.manage-form-actions button[type=button]{background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-color-strong)}.manage-form-actions button[type=button]:hover{background:var(--bg-subtle);border-color:var(--c-gray-400)}.alert{font-size:var(--text-sm);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md)}.alert-error{color:var(--c-danger-700);background:var(--c-danger-50);border:1px solid var(--c-danger-100)}.alert-warning{color:var(--c-warning-700);background:var(--c-warning-50);border:1px solid var(--c-warning-100)}.alert-info{color:var(--c-info-700);background:var(--c-info-50);border:1px solid var(--c-info-100)}.alert-success{color:var(--c-success-700);background:var(--c-success-50);border:1px solid var(--c-success-100)}.error{color:var(--c-danger-700);font-size:var(--text-sm);padding:var(--sp-2) var(--sp-3);background:var(--c-danger-50);border:1px solid var(--c-danger-100);border-radius:var(--radius-md)}.sync-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.sync-card{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--sp-4);box-shadow:var(--shadow-xs)}.sync-card button{padding:var(--sp-2) var(--sp-3);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--accent);color:var(--text-on-primary);cursor:pointer;width:100%;font-weight:var(--weight-medium);font-size:var(--text-sm);transition:all var(--transition-fast)}.sync-card button:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.sync-card button:disabled{opacity:.5;cursor:not-allowed}.sync-month-row{gap:var(--sp-2);margin-bottom:var(--sp-3);display:flex}.sync-month-row label{flex:1}.sync-month-row select,.sync-month-row input{width:100%}.sync-status{margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--text-secondary)}.metric-list{gap:var(--sp-3);flex-direction:column;display:flex}.metric-row{justify-content:space-between;align-items:baseline;gap:var(--sp-3);border-bottom:1px solid var(--border-color);padding-bottom:var(--sp-2);display:flex}.metric-row:last-child{border-bottom:none;padding-bottom:0}.metric-value{font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--text-primary);white-space:nowrap;font-variant-numeric:tabular-nums}.metric-label{font-size:var(--text-xs);color:var(--text-secondary);text-align:right;font-weight:var(--weight-medium)}.bar-list{gap:var(--sp-2);flex-direction:column;display:flex}.bar-list-scroll{max-height:260px;padding-right:var(--sp-1);overflow-y:auto}.bar-row{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);grid-template-columns:100px 1fr 40px;display:grid}.bar-track{background:var(--bg-subtle);border-radius:var(--radius-sm);height:8px;overflow:hidden}.bar-fill{background:var(--accent);border-radius:var(--radius-sm);height:100%}.bar-count{text-align:right;font-variant-numeric:tabular-nums;font-weight:var(--weight-medium)}.checkin-list{gap:var(--sp-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.checkin-list li{justify-content:space-between;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);border-bottom:1px solid var(--border-color);padding-bottom:var(--sp-2);display:flex}.chart-container{width:100%;position:relative}.chart-container-tall{height:280px}.chart-container-doughnut{max-width:320px;height:220px;margin:0 auto}.chart-container-scroll{max-height:320px;overflow-y:auto}.revenue-chart-panel{margin-top:var(--sp-4)}.revenue-chart{align-items:flex-end;gap:var(--sp-1);padding-bottom:var(--sp-1);display:flex;overflow-x:auto}.revenue-chart-bar{flex-direction:column;flex:1 0 auto;align-items:center;min-width:32px;display:flex}.revenue-chart-value{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--accent);white-space:nowrap;margin-bottom:var(--sp-1)}.revenue-chart-plot{align-items:flex-end;height:140px;display:flex}.revenue-chart-fill{background:var(--accent);border-radius:var(--radius-sm) var(--radius-sm) 0 0;width:20px;min-height:2px}.revenue-chart-label{margin-top:var(--sp-1);color:var(--text-muted);white-space:nowrap;font-size:10px}.calendar-panel{padding:var(--sp-4)}.calendar-legend{gap:var(--sp-4);margin-bottom:var(--sp-3);font-size:var(--text-sm);color:var(--text-secondary);display:flex}.legend-item{align-items:center;gap:var(--sp-1);display:inline-flex}.legend-dot{border-radius:var(--radius-sm);width:10px;height:10px;display:inline-block}.legend-occupied{background:var(--c-danger-500)}.legend-available{background:var(--c-success-500)}.legend-paid{background:var(--c-warning-500)}.calendar-grid{gap:var(--sp-1);grid-template-columns:repeat(7,1fr);display:grid}.calendar-weekday{text-align:center;font-weight:var(--weight-semibold);font-size:var(--text-xs);color:var(--text-muted);padding:var(--sp-1) 0;text-transform:uppercase;letter-spacing:.05em}.calendar-cell{border:1px solid var(--border-color);border-radius:var(--radius-md);min-height:92px;padding:var(--sp-1);background:var(--bg-surface);gap:var(--sp-1);cursor:pointer;text-align:left;font:inherit;color:inherit;transition:box-shadow var(--transition-fast), transform 50ms;flex-direction:column;display:flex}.calendar-cell.empty{background:var(--bg-subtle);border-color:var(--border-color);cursor:default}.calendar-cell.full{background:var(--c-danger-50);border-color:var(--c-danger-100)}.calendar-cell:hover{box-shadow:0 0 0 2px var(--c-primary-400) inset}.calendar-cell:active{transform:scale(.98)}.calendar-day-num{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-primary)}.calendar-cell-metrics{font-size:var(--text-xs);flex-direction:column;gap:2px;display:flex}.calendar-metric{align-items:baseline;gap:var(--sp-1);padding:1px var(--sp-1);border-radius:var(--radius-sm);display:flex;position:relative;overflow:hidden}.calendar-metric-fill{z-index:0;border-radius:var(--radius-sm);position:absolute;inset:0}.calendar-metric-fill.fill-occupied{background:var(--c-danger-50)}.calendar-metric-fill.fill-available{background:var(--c-success-50)}.calendar-metric .metric-num,.calendar-metric .metric-text{z-index:1;position:relative}.metric-num{font-weight:var(--weight-semibold)}.metric-num.occupied{color:var(--c-danger-700)}.metric-num.available{color:var(--c-success-700)}.metric-num.paid{color:var(--c-warning-700)}.metric-text{color:var(--text-muted);font-size:10px}@media (width<=900px){.calendar-cell{min-height:80px;padding:var(--sp-1)}.calendar-cell-metrics{font-size:10px}}.modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:var(--sp-10) var(--sp-4);z-index:1000;background:#0f172a80;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.link-button{color:var(--accent);font-size:inherit;font-weight:var(--weight-semibold);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}.link-button:hover{color:var(--accent-hover)}.invoice-cell{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.invoice-cell .btn-sm{padding:2px 8px;font-size:11px}.cell-danger{background:var(--c-danger-50);font-weight:600}.cell-success{background:var(--c-success-50);font-weight:600}.modal{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:760px;padding:var(--sp-5) var(--sp-6) var(--sp-7)}.modal-header{margin-bottom:var(--sp-4);justify-content:space-between;align-items:center;display:flex}.modal-header h2{font-size:var(--text-lg);font-weight:var(--weight-semibold);margin:0}.modal-close{font-size:var(--text-xl);cursor:pointer;color:var(--text-muted);padding:0 var(--sp-1);border-radius:var(--radius-sm);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;line-height:1}.modal-close:hover{color:var(--text-primary);background:var(--bg-subtle)}.day-reservations{gap:var(--sp-4);flex-direction:column;display:flex}.day-reservation{border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:var(--sp-3) var(--sp-4);background:var(--bg-subtle)}.day-reservation-header{margin-bottom:var(--sp-2);justify-content:space-between;align-items:center;display:flex}.day-reservation-header-right{align-items:center;gap:var(--sp-2);display:flex}.day-reservation-meta{gap:var(--sp-3);font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}.balance-due{color:var(--c-danger-700);font-weight:var(--weight-semibold)}.day-rooms-table{border-collapse:collapse;width:100%;font-size:var(--text-xs);background:var(--bg-surface)}.day-rooms-table th,.day-rooms-table td{border:1px solid var(--border-color);padding:var(--sp-1) var(--sp-2);text-align:left}.day-rooms-table th{background:var(--bg-subtle);font-weight:var(--weight-semibold)}.day-rooms-groups{gap:var(--sp-3);flex-direction:column;display:flex}.day-rooms-group-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--c-primary-600);margin-bottom:var(--sp-1)}.login-page{background:var(--bg-app);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-form{gap:var(--sp-3);background:var(--bg-surface);padding:var(--sp-8);border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);flex-direction:column;width:360px;display:flex}.login-form h1{font-size:var(--text-lg);font-weight:var(--weight-bold);text-align:center;margin-bottom:var(--sp-2)}.login-form label{gap:var(--sp-1);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary);flex-direction:column;display:flex}.login-form input{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-color-strong);border-radius:var(--radius-md);font-size:var(--text-sm);transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.login-form input:focus{border-color:var(--c-primary-400);box-shadow:0 0 0 2px var(--c-primary-100);outline:none}.login-form button{padding:var(--sp-3);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--accent);color:var(--text-on-primary);cursor:pointer;font-weight:var(--weight-semibold);font-size:var(--text-sm);transition:all var(--transition-fast);margin-top:var(--sp-2)}.login-form button:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.login-form button:disabled{opacity:.5;cursor:not-allowed}.meter-photo-thumb{object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border-color);width:48px;height:48px;display:block}.label-sheet{gap:var(--sp-2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.meter-label{border:1px dashed var(--c-gray-400);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);background:var(--bg-surface);break-inside:avoid;overflow:hidden}.meter-label-type{font-size:var(--text-sm);font-weight:var(--weight-bold);letter-spacing:.05em;color:var(--c-primary-600)}.meter-label-room-id{font-size:var(--text-md);font-weight:var(--weight-bold);margin:var(--sp-1) 0;white-space:nowrap;overflow:hidden}.meter-label-room-name{font-size:var(--text-xs);color:var(--text-secondary)}.menu-toggle,.sidebar-overlay{display:none}.units-status-grid{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}@media (width<=768px){.units-status-grid{grid-template-columns:1fr}.app-layout{flex-direction:column}.menu-toggle{top:var(--sp-2);left:var(--sp-2);z-index:30;border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-surface);width:36px;height:36px;color:var(--text-primary);font-size:var(--text-md);cursor:pointer;box-shadow:var(--shadow-sm);justify-content:center;align-items:center;display:flex;position:fixed}.sidebar-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:15;background:#0f172a80;display:block;position:fixed;inset:0}.sidebar{height:100dvh;width:var(--sidebar-width);transition:transform var(--transition-base);z-index:20;position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.content{padding:56px var(--sp-3) var(--sp-3);width:100%}.sync-grid,.manage-form{grid-template-columns:1fr}}@media print{.no-print,.menu-toggle,.sidebar,.sidebar-overlay,.topbar{display:none!important}.content{width:100%;padding:0}h1,.manage-hint{display:none}.label-sheet{grid-template-columns:repeat(3,1fr)}.meter-label{border:1px solid #000}}
