*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#f4f7fb;color:#172033}.app-shell{max-width:1800px;margin:0 auto;padding:24px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.topbar h1{margin:0 0 6px;font-size:28px}.topbar p{margin:0;color:#667085}.topbar-actions{display:flex;gap:10px}.card{background:#fff;border:1px solid #e7ebf2;border-radius:14px;box-shadow:0 6px 22px rgba(16,24,40,.04)}.toolbar{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));gap:12px;padding:16px;align-items:end}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:13px;font-weight:600;color:#475467}.field input,.field select{width:100%;height:40px;border:1px solid #d7deea;border-radius:9px;padding:0 10px;background:#fff;color:#172033}.field-inline{justify-content:flex-end;padding-bottom:10px}.field-inline label{display:flex;align-items:center;gap:8px}.field-inline input{width:auto;height:auto}.field-actions{flex-direction:row}.btn{height:40px;border-radius:9px;border:0;padding:0 14px;font-weight:700;cursor:pointer}.btn.primary{background:#2563eb;color:white}.btn.secondary{background:#eef2f7;color:#26354d}.btn:disabled{opacity:.5;cursor:not-allowed}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:16px 0}.stat{padding:16px}.stat span{display:block;font-size:13px;color:#667085;margin-bottom:8px}.stat strong{font-size:24px}.sync-panel{padding:16px;margin-bottom:16px}.sync-head{display:flex;justify-content:space-between;gap:16px;margin-bottom:10px}.progress{height:8px;background:#edf1f7;border-radius:999px;overflow:hidden}.progress-bar{height:100%;width:0;background:#2563eb;transition:width .2s}.sync-log{max-height:160px;overflow:auto;background:#0f172a;color:#dbeafe;padding:10px;border-radius:10px;font-size:12px;white-space:pre-wrap}.hidden{display:none!important}.calendar-card{padding:0;overflow:hidden}.calendar-head{display:flex;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid #edf0f5}.calendar-head h2{margin:0 0 4px}.calendar-head p{margin:0;color:#667085;font-size:13px}.legend{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:12px;color:#667085}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.dot.booked{background:#2563eb}.dot.staying{background:#16a34a}.dot.pending{background:#f59e0b}.dot.completed{background:#64748b}.dot.cancelled{background:#ef4444}.dot.available{background:#bbf7d0}.calendar-wrap{overflow:auto;min-height:520px;position:relative}.empty-state{display:flex;align-items:center;justify-content:center;min-height:520px;color:#98a2b3}.calendar-grid{min-width:max-content}.calendar-row{display:grid;grid-template-columns:240px repeat(var(--days), 72px);min-height:54px;border-bottom:1px solid #edf0f5}.calendar-row.header{position:sticky;top:0;z-index:20;background:white}.calendar-room{position:sticky;left:0;z-index:10;background:white;border-right:1px solid #e7ebf2;padding:8px 12px}.calendar-row.header .calendar-room{z-index:30}.room-name{font-weight:700;font-size:13px}.room-class{font-size:11px;color:#667085;margin-top:4px}.day-head{border-right:1px solid #edf0f5;padding:7px 4px;text-align:center;font-size:11px;color:#667085;background:#fff}.day-head strong{display:block;color:#172033;font-size:13px;margin-top:3px}.day-cell{border-right:1px solid #edf0f5;position:relative;background:#fff}.day-cell.weekend{background:#fafcff}.day-cell.range-focus{background:#f0fdf4}.day-cell.today{box-shadow:inset 2px 0 0 #2563eb}.booking-layer{grid-column:2/-1;grid-row:1;position:relative;height:54px;pointer-events:none}.booking-block{position:absolute;top:8px;height:38px;border-radius:8px;padding:6px 8px;color:#fff;font-size:11px;font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;pointer-events:auto;box-shadow:0 3px 8px rgba(16,24,40,.12)}.booking-block.status-1{background:#2563eb}.booking-block.status-2{background:#16a34a}.booking-block.status-3{background:#64748b}.booking-block.status-4{background:#ef4444}.booking-block.status-5{background:#f59e0b}.room-available .calendar-room{background:#f0fdf4}.room-unavailable .calendar-room{background:#fff7ed}.modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center}.modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.45)}.modal-panel{position:relative;width:min(560px,94vw);background:#fff;border-radius:14px;box-shadow:0 24px 70px rgba(15,23,42,.25);overflow:hidden}.modal-panel.large{width:min(780px,94vw)}.modal-head,.modal-footer{padding:14px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #edf0f5}.modal-footer{border-bottom:0;border-top:1px solid #edf0f5;justify-content:flex-end;gap:10px}.modal-head h3{margin:0}.modal-body{padding:16px}.icon-btn{border:0;background:transparent;font-size:26px;cursor:pointer}.notice{margin-top:10px;padding:10px;background:#fff7ed;border:1px solid #fed7aa;border-radius:9px;color:#9a3412;font-size:12px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.detail-item{padding:10px;background:#f8fafc;border-radius:9px}.detail-item span{display:block;font-size:11px;color:#667085;margin-bottom:4px}.detail-item strong{font-size:13px}@media(max-width:1100px){.toolbar{grid-template-columns:repeat(3,1fr)}.summary-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.app-shell{padding:12px}.topbar{align-items:flex-start;flex-direction:column}.toolbar{grid-template-columns:1fr}.summary-grid{grid-template-columns:1fr}.calendar-head{flex-direction:column}.calendar-row{grid-template-columns:170px repeat(var(--days),64px)}}