@import"https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;500;600;700&display=swap";.h-admin-page{min-height:100vh;background:#f7f5f2;color:#262220}.h-admin-topbar{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 48px;background:#fff;border-bottom:1px solid #e8e3de}.h-admin-topbar>div{display:flex;align-items:center;gap:12px}.h-admin-topbar strong{font-size:18px}.h-admin-topbar span{padding-left:12px;border-left:1px solid #e8e3de;color:#b5654a;font-size:13px;font-weight:700}.h-admin-hero,.h-admin-create,.h-admin-list{max-width:1240px;margin:0 auto}.h-admin-hero{display:flex;justify-content:space-between;align-items:end;padding:48px 0 32px;border-bottom:1px solid #dcd5cf}.h-admin-hero h1{margin:5px 0 8px;font-size:36px;letter-spacing:-1.2px}.h-admin-hero>div>p:last-child{margin:0;color:#7a716c}.h-admin-eyebrow{margin:0;color:#b5654a;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.h-admin-stats{display:grid;grid-template-columns:repeat(3,132px);border-left:1px solid #e8e3de}.h-admin-stats div{padding:0 0 0 20px;border-right:1px solid #e8e3de}.h-admin-stats b{display:block;font-size:28px;font-variant-numeric:tabular-nums}.h-admin-stats span{color:#7a716c;font-size:12px}.h-admin-create{margin-top:28px;padding:24px;border:1px solid #e8e3de;border-radius:14px;background:#fff}.h-admin-section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:20px}.h-admin-section-heading h2{margin:4px 0 0;font-size:20px}.h-admin-section-heading>span{color:#7a716c;font-size:13px}.h-admin-create .ant-form{display:grid;grid-template-columns:1.15fr 1.2fr 1.1fr 1.25fr .8fr auto;gap:10px;align-items:start}.h-admin-create .ant-form-item{margin-bottom:0}.h-admin-create .ant-btn{height:40px}.h-admin-list{margin-top:20px;padding:24px;border:1px solid #e8e3de;border-radius:14px;background:#fff}.h-admin-list .ant-table{font-variant-numeric:tabular-nums}.h-admin-list .ant-table-thead>tr>th{background:#f6ece6;color:#625b56;font-size:12px;font-weight:700;text-transform:uppercase}.h-admin-list .ant-table-tbody>tr>td{padding-top:18px!important;padding-bottom:18px!important}.h-admin-list small{color:#7a716c}.h-admin-list .ant-switch{min-width:96px}.h-admin-list .ant-input-number{width:92px}.h-admin-list .ant-btn{border-radius:8px}@media(max-width:900px){.h-admin-topbar{padding:0 20px}.h-admin-hero,.h-admin-create,.h-admin-list{margin-left:20px;margin-right:20px}.h-admin-hero{align-items:start;gap:24px;flex-direction:column}.h-admin-stats{width:100%;grid-template-columns:repeat(3,1fr)}.h-admin-create .ant-form{grid-template-columns:1fr 1fr}.h-admin-create .ant-btn{width:100%}}@media(max-width:560px){.h-admin-hero{padding-top:32px}.h-admin-hero h1{font-size:30px}.h-admin-create .ant-form{grid-template-columns:1fr}.h-admin-section-heading{align-items:start;gap:8px;flex-direction:column}.h-admin-list{padding:14px;overflow:hidden}.h-admin-list .ant-table-wrapper{overflow-x:auto}}.booking-drawer-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.booking-form-section{margin:0 0 8px;padding:10px 16px;border-radius:10px;background:#f6ece6}.booking-form-section h3{display:flex;gap:7px;align-items:center;margin:0 0 6px;color:#b5654a;font-size:14px}.price-tags{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}.price-tags .ant-tag{cursor:pointer;margin-inline-end:0;padding:3px 8px;border:1px solid #e8e3de;border-radius:6px;background:#fff;color:#78716c;line-height:20px;white-space:nowrap}.price-hint-label{margin:0 0 6px;color:#7a716c;font-size:12px}.price-tags .price-tag-active{background:#f6ece6;font-weight:600;border-color:#b5654a!important;color:#b5654a!important}.app-drawer .ant-drawer-content{border-top:4px solid #b5654a}.app-drawer .ant-drawer-body{padding:20px}.booking-drawer .ant-drawer-body{padding:12px 20px}.booking-drawer .ant-form-item{margin-bottom:6px}.booking-drawer .ant-form-item-label{padding:0 0 2px}.booking-drawer .form-grid{row-gap:6px}.booking-drawer .price-tags{margin-bottom:6px}.drawer-section{margin:0 0 16px;padding:16px;border-radius:10px;background:#f6ece6}.drawer-section h3{display:flex;align-items:center;gap:7px;margin:0 0 12px;color:#b5654a;font-size:14px}.customer-history-section .ant-table-wrapper{overflow-x:auto}@media(max-width:767px){.app-drawer .ant-drawer-content-wrapper{width:100%!important}}.continuous .slot.booking{height:58px!important;margin:5px 0!important;padding:0!important;overflow:visible!important;background:transparent!important;border-top:1.5px solid transparent!important;border-bottom:1.5px solid transparent!important;border-left:0!important;border-right:0!important;color:#262220!important;cursor:pointer}.continuous .slot.booking.booked{background:#eaf2f8!important;border-color:#3e7cb1!important}.continuous .slot.booking.checked_in{background:#e9f7f0!important;border-color:#2e9e6b!important}.continuous .slot.booking.completed{background:#f1efec!important;border-color:#8a8580!important}.continuous .slot.booking.booking-start{border-left-width:1.5px!important;border-left-style:solid!important;border-top-left-radius:6px;border-bottom-left-radius:6px;margin-left:0!important;box-shadow:inset 2px 0 #fff}.continuous .slot.booking.booking-end{border-right-width:1.5px!important;border-right-style:solid!important;border-top-right-radius:6px;border-bottom-right-radius:6px;margin-right:0!important}.continuous .slot.booking.booking-start+.slot.booking{border-left:0!important}.continuous .booking-content{position:absolute!important;z-index:2;inset:0 auto auto 0!important;display:flex;flex-direction:column;gap:1px;padding:5px 5px 4px!important;overflow:hidden;color:#262220!important;line-height:1.2;pointer-events:none}.continuous .booking-name{display:block;overflow:hidden;font-size:11px;font-weight:600;white-space:nowrap;text-overflow:ellipsis}.continuous .booking-time,.continuous .booking-phone{display:block;overflow:hidden;font-size:10px;color:#625b56;white-space:nowrap;text-overflow:ellipsis}.continuous .booking-content-1,.continuous .booking-content-2{display:grid;place-items:center;padding:0!important}.continuous .booking-content-1 .booking-name,.continuous .booking-content-2 .booking-name{font-size:12px}.continuous .payment-dot{position:absolute;top:5px;right:5px;width:7px;height:7px;border:1px solid rgba(38,34,32,.16);border-radius:50%}.continuous .payment-dot.unpaid{background:#d64545}.continuous .payment-dot.deposited{background:#e0a63a}.continuous .payment-dot.paid{background:#2e9e6b}.days,.legend{margin-bottom:12px!important}.matrix{margin-top:0}.continuous .room-row{height:68px!important}.continuous .room-cell{padding:10px 12px!important}.app-nav{display:flex;align-items:center;justify-content:flex-start;gap:20px;padding:12px 32px;background:#fff;border-bottom:1px solid #e8e3de;position:sticky;top:0;z-index:20}.app-nav>.ant-space{margin-left:auto}.app-nav>b{font-size:18px}.app-nav{position:relative}.user-avatar{display:grid;place-items:center;width:38px;height:38px;border:0;border-radius:50%;background:linear-gradient(135deg,#b5654a,#7c3f2c);color:#fff;font-family:inherit;font-size:16px;font-weight:700;cursor:pointer;box-shadow:0 4px 10px #b5654a38}.user-avatar:hover{transform:translateY(-1px)}.account-menu{display:flex;flex-direction:column;gap:2px;min-width:170px}.account-menu span{color:#7a716c;font-size:12px}.header-welcome{display:flex;flex-direction:column;gap:1px;line-height:1}.header-welcome>span{color:#9a8e88;font-size:10px;font-weight:600}.header-welcome b{font-size:17px}.header-welcome em{color:#b5654a;font-style:normal;position:relative}.header-welcome em:after{position:absolute;right:0;bottom:-2px;left:0;height:5px;background:#f0c9b8;content:"";z-index:-1;transform:skew(-18deg)}.phase-content{max-width:1440px;margin:0 auto;padding:32px}.view-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.metric-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:18px}.metric-grid .ant-statistic{background:#fff;border:1px solid #e8e3de;padding:16px;border-radius:10px}.metric-grid .ant-statistic-content{font-size:20px;font-variant-numeric:tabular-nums}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.chart-card,.upcoming-card{background:#fff;border:1px solid #e8e3de;border-radius:10px;padding:16px}.chart-card h2,.upcoming-card h2{font-size:15px;margin:0 0 14px}.upcoming-card{grid-column:1/-1}.filter-panel{display:flex;gap:8px;flex-wrap:wrap;padding:12px;background:#fff;border:1px solid #e8e3de;border-radius:10px;margin-bottom:16px}.filter-panel .ant-select{min-width:145px}.booking-search{width:260px}.table-subtext{display:block;color:#7a716c;margin-top:2px}.booking-code,.booking-stay b,.booking-room-package b{font-variant-numeric:tabular-nums}.booking-stay,.booking-room-package,.booking-payment-summary{display:flex;min-width:135px;flex-direction:column;gap:2px}.booking-payment-summary{min-width:205px}.booking-payment-summary .ant-tag{width:fit-content;margin:0 0 2px}.booking-stay small,.booking-room-package small,.booking-payment-summary small{color:#7a716c;font-size:12px;line-height:1.35}.phase-content .ant-table-wrapper{background:#fff;border:1px solid #e8e3de;border-radius:10px;overflow:hidden}@media(max-width:900px){.metric-grid{grid-template-columns:repeat(3,1fr)}.dashboard-grid{grid-template-columns:1fr}.app-nav{padding:10px 16px}.phase-content{padding:20px 16px}}@media(max-width:560px){.metric-grid{grid-template-columns:repeat(2,1fr)}.app-nav{align-items:flex-start;flex-direction:column}.booking-search{width:100%}}.continuous .room-head{width:var(--matrix-room-header-px);min-width:var(--matrix-room-header-px);flex:0 0 var(--matrix-room-header-px);z-index:6}.continuous .time-head>.room-head{padding:9px 12px;text-align:left}.continuous .room-cell{z-index:6}.drag-range-preview{position:absolute;top:0;height:68px;z-index:5;pointer-events:none}.drag-pill{position:absolute;top:7px;display:grid;place-items:center;min-width:42px;padding:4px 7px;background:#b5654a;color:#fff;border-radius:6px;font-size:11px;font-weight:700;line-height:1.15;white-space:nowrap;font-variant-numeric:tabular-nums}.drag-pill-start{left:3px}.drag-pill-end{right:3px}.drag-pill small{display:block;margin-top:2px;font-size:9px;font-weight:500}.drag-duration{position:absolute;top:26px;left:50%;transform:translate(-50%);padding:3px 6px;border-radius:6px;background:#b5654a;color:#fff;font-size:10px;font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}.drag-range-preview.touch .drag-pill-end{top:-40px;right:-2px}.continuous{max-width:none}.continuous .timeline{position:relative}.continuous .day-head,.continuous .time-head{display:flex;position:sticky;left:0;width:100%;background:#fbf9f7;z-index:3}.continuous .day-head{top:0;height:34px;border-bottom:1px solid #e8e3de}.continuous .time-head{top:34px;height:34px;z-index:2}.continuous .day-label{position:absolute;height:34px;padding:9px 10px;border-left:2px solid #c9beb6;font-size:11px;font-weight:600}.continuous .room-head-spanning{display:grid;height:68px;place-items:center;padding:0;text-align:center;font-size:13px;font-weight:600}.continuous .room-header-spacer{width:var(--matrix-room-header-px);min-width:var(--matrix-room-header-px);flex:0 0 var(--matrix-room-header-px)}.continuous .time-slot,.continuous .slot{width:var(--matrix-slot-px);min-width:var(--matrix-slot-px)}.continuous .time-slot{padding:9px 2px;border-left:1px solid #f1efec;font-size:10px}.continuous .spacer{min-width:0;flex:none}.continuous .room-row{display:flex;min-width:0;width:100%;position:relative}.continuous .room-cell{width:var(--matrix-room-header-px);min-width:var(--matrix-room-header-px);position:sticky;left:0;z-index:6}.continuous .slot{height:68px;flex:none}.continuous .day-edge{border-left:2px solid #c9beb6}.continuous .slot.booking{border-left-color:transparent}.continuous .slot.booking.booking-start{border-left:2px solid #fff}.continuous .now-line{position:absolute;top:0;bottom:0;width:2px;background:#d64545;z-index:4;pointer-events:none}.continuous .now-line:before{content:"";position:absolute;top:2px;left:-3px;width:8px;height:8px;border-radius:50%;background:#d64545}*{box-sizing:border-box}body{margin:0;background:#f7f5f2;color:#262220;font-family:Be Vietnam Pro,sans-serif}.page{padding:32px;min-height:100vh}header{display:flex;justify-content:space-between;align-items:center;max-width:1440px;margin:auto auto 24px}.eyebrow{margin:0 0 4px;color:#7a716c;font-size:13px}h1{margin:0;font-size:28px}.days,.legend{max-width:1440px;margin:0 auto 14px;display:flex;align-items:center;gap:8px}.days{overflow:hidden}.days>.ant-btn,.days .day-pills button{flex:0 0 auto}.days .calendar-control{display:grid;width:36px;min-width:36px;padding-inline:0;place-items:center}.day-pills{display:flex;min-width:0;flex:1 1 auto;gap:8px;overflow-x:auto;scrollbar-width:thin}.days .day-pills button{white-space:nowrap;border:1px solid #e8e3de;background:#fff;border-radius:8px;padding:8px 12px;color:#7a716c;font:inherit;font-size:13px}.days .day-pills button.today{border-color:#b5654a;color:#b5654a;box-shadow:inset 0 0 0 1px #b5654a}.days .day-pills button.active{background:#b5654a;color:#fff;border-color:#b5654a}.legend{font-size:12px;color:#7a716c}.matrix{max-width:1440px;margin:auto;background:#fff;border:1px solid #e8e3de;border-radius:12px;overflow:auto;box-shadow:0 1px 3px #0000000f;-webkit-user-select:none;user-select:none}.time-head,.room-row{display:grid;grid-template-columns:var(--matrix-room-header-px) repeat(48,minmax(var(--matrix-slot-px),1fr));min-width:calc(var(--matrix-room-header-px) + 48 * var(--matrix-slot-px))}.time-head{position:sticky;top:0;z-index:2;background:#fbf9f7;border-bottom:1px solid #e8e3de;height:40px;font-size:11px;color:#7a716c}.time-head>div{padding:12px 3px;text-align:left;border-left:1px solid #f1efec}.room-head,.room-cell{position:sticky;left:0;background:#fbf9f7;z-index:1;border-right:1px solid #e8e3de}.room-cell{padding:10px 12px;display:flex;flex-direction:column;justify-content:center}.room-cell small{font-size:10px;color:#7a716c;margin-top:3px}.room-row{height:68px}.slot{position:relative;border-left:1px solid #f1efec;cursor:crosshair}.slot.hour{border-left-color:#e8e3de}.slot:hover{background:#f6ece6}.slot.past{background:repeating-linear-gradient(135deg,#f1efec 0 2px,#fbf9f7 2px 6px);cursor:not-allowed}.slot.selected{background:#b5654a66;outline:1px dashed #9a5240;outline-offset:-2px}.slot.booking{cursor:pointer;padding:5px 2px;color:#fff;overflow:hidden}.slot.booking span{position:absolute;left:3px;top:25px;white-space:nowrap;font-size:11px;font-weight:600}.slot.booked{background:#3e7cb1}.slot.checked_in{background:#2e9e6b}.slot.completed{background:#8a8580}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.form-item-full{grid-column:1 / -1}.login{min-height:100vh;display:grid;place-items:center}.login section{background:#fff;padding:32px;border-radius:16px;width:min(400px,calc(100vw - 32px));box-shadow:0 1px 3px #0000000f}.login h1{margin-bottom:6px}.login p{color:#7a716c;margin:0 0 24px}@media(max-width:960px){.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.page{padding:16px}header{align-items:flex-start;gap:16px}header .ant-btn{margin-top:4px}.form-grid{grid-template-columns:1fr}.legend span{display:none}}.continuous .time-slot,.continuous .slot{box-sizing:border-box}.continuous .time-slot.hour,.continuous .slot.hour{border-left:1px solid #d6d0c9}.continuous .time-slot.half-hour,.continuous .slot.half-hour{border-left:1px dashed #efebe6}.continuous .time-slot.hour-even,.continuous .slot.hour-even{background:#fff}.continuous .time-slot.hour-odd,.continuous .slot.hour-odd{background:#fbf9f7}.continuous .time-slot{padding:9px 0 0 4px;text-align:left}.continuous .slot.past{background:repeating-linear-gradient(135deg,#f1efec 0 2px,#fbf9f7 2px 6px)}.continuous .slot.booking{background-clip:padding-box}.continuous .slot.booked{background:#3e7cb1}.continuous .slot.checked_in{background:#2e9e6b}.continuous .slot.completed{background:#8a8580}.continuous .room-row{height:68px;border:0}.continuous .room-cell,.continuous .slot{height:68px;border-bottom:1px solid #e8e3de}.continuous .room-cell{box-sizing:border-box}.continuous .slot.booking.booking-start{border-left:1px solid #fff}
