:root{--brand:#5b4df7;--brand2:#8b5cf6;--cyan:#0ea5e9;--teal:#10b981;--amber:#f59e0b;--rose:#f43f5e;--ink:#172033;--muted:#64748b;--soft:#f6f7fb;--line:#e8ebf2;--navy:#161a2f}*{box-sizing:border-box}body{color:var(--ink);background:#fff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.navbar-pro{border-bottom:1px solid rgba(15,23,42,.06);backdrop-filter:saturate(180%) blur(14px)}.brand-mark{width:38px;height:38px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,var(--brand),var(--cyan));box-shadow:0 8px 20px rgba(91,77,247,.25)}.btn-brand{border:0;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;box-shadow:0 8px 20px rgba(91,77,247,.18)}.btn-brand:hover,.btn-brand:focus{color:#fff;transform:translateY(-1px);box-shadow:0 12px 28px rgba(91,77,247,.28)}.btn-soft{background:#f1f3f9;border:1px solid #e7eaf3;color:#344054}.btn-soft:hover{background:#e9ecf5;color:#111827}.hero{position:relative;overflow:hidden;background:radial-gradient(circle at 85% 15%,rgba(14,165,233,.5),transparent 25%),radial-gradient(circle at 10% 90%,rgba(139,92,246,.55),transparent 30%),linear-gradient(135deg,#171d48,#4338ca 55%,#2563eb);color:#fff;padding:6.5rem 0 6rem}.hero:after{content:"";position:absolute;inset:auto -10% -65px;width:120%;height:130px;background:#fff;border-radius:50% 50% 0 0/35% 35% 0 0}.hero-kicker{display:inline-flex;gap:.5rem;align-items:center;padding:.5rem .8rem;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.1);border-radius:999px;font-size:.85rem;font-weight:600}.search-card{position:relative;z-index:2;margin-top:-4rem;border:0;border-radius:1.4rem;box-shadow:0 25px 65px rgba(17,24,39,.13)}.search-card .form-control{border-radius:.85rem}.property-card{border:1px solid var(--line);border-radius:1.25rem;overflow:hidden;transition:.25s;background:#fff}.property-card:hover{transform:translateY(-5px);box-shadow:0 20px 45px rgba(30,41,59,.12);border-color:#dfe3ef}.property-cover{height:245px;object-fit:cover;width:100%;background:#edf0f5}.property-image-wrap{position:relative}.property-badge{position:absolute;left:14px;top:14px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);padding:.45rem .7rem;border-radius:999px;font-size:.78rem;font-weight:700;box-shadow:0 5px 15px rgba(0,0,0,.1)}.feature-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.38rem .65rem;border-radius:999px;background:#f6f7fb;color:#475467;font-size:.78rem}.gallery-main-image{height:520px;object-fit:cover}.gallery-thumb{height:155px;object-fit:cover;width:100%}.gallery-caption{font-size:.9rem;background:rgba(0,0,0,.55);color:#fff;padding:.35rem .6rem}.rich-editor{border:1px solid #dee2e6;border-radius:.8rem;overflow:hidden;background:#fff}.rich-toolbar{display:flex;gap:.35rem;flex-wrap:wrap;padding:.6rem;border-bottom:1px solid #dee2e6;background:#f8f9fa}.rich-toolbar button{border:1px solid #ced4da;background:#fff;border-radius:.45rem;padding:.3rem .6rem}.rich-area{min-height:260px;padding:1rem;outline:0;overflow:auto}.homestay-description img{max-width:100%;height:auto;border-radius:.75rem}.site-footer{background:linear-gradient(135deg,#11162d,#242b55);color:#fff}.footer-link{color:#fff;text-decoration:none}.footer-link:hover{color:#c7d2fe}
/* Admin */.admin-body{background:#f4f6fb}.admin-navbar{background:linear-gradient(120deg,#11162d,#242b55);box-shadow:0 8px 28px rgba(15,23,42,.18)}.admin-navbar .navbar-brand small{font-size:.67rem;letter-spacing:.08em;text-transform:uppercase;color:#a5b4fc}.admin-brand-mark{width:40px;height:40px}.admin-navbar .nav-link{display:flex;align-items:center;gap:.45rem;border-radius:.65rem;padding:.55rem .7rem;color:#cbd5e1}.admin-navbar .nav-link:hover,.admin-navbar .nav-link.active{color:#fff;background:rgba(255,255,255,.1)}.admin-main{max-width:1700px}.page-title{font-weight:750;letter-spacing:-.025em}.admin-stat{border:0;border-radius:1.1rem;overflow:hidden;position:relative}.admin-stat:after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;right:-28px;top:-28px;background:currentColor;opacity:.08}.stat-icon{width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.2rem}.stat-violet{color:#6d5dfc;background:#eeecff}.stat-cyan{color:#0284c7;background:#e0f2fe}.stat-green{color:#059669;background:#d1fae5}.stat-orange{color:#d97706;background:#fef3c7}.card-pro{border:1px solid #e7eaf2;border-radius:1.1rem;box-shadow:0 8px 30px rgba(30,41,59,.055)}.table-pro thead th{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:#667085;background:#f8fafc;border-bottom-color:#eaecf0}.badge-soft-success{background:#dcfce7;color:#166534}.badge-soft-warning{background:#fef3c7;color:#92400e}.badge-soft-danger{background:#ffe4e6;color:#9f1239}.badge-soft-info{background:#e0f2fe;color:#075985}.calendar-wrap{background:#fff;padding:1rem;border:1px solid #e7eaf2;border-radius:1.1rem;box-shadow:0 8px 30px rgba(30,41,59,.055)}.ical-box{background:linear-gradient(135deg,#f8f9ff,#eef8ff);border:1px solid #e3e8ff;border-radius:1rem}.copy-input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem}.ota-logo{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.1rem}.ota-airbnb{background:#fff0f2;color:#ff385c}.ota-agoda{background:#eef2ff;color:#4f46e5}.ota-other{background:#ecfeff;color:#0891b2}.form-control,.form-select{border-color:#dfe3eb}.form-control:focus,.form-select:focus{border-color:#8b80fa;box-shadow:0 0 0 .22rem rgba(91,77,247,.12)}
@media(max-width:991px){.admin-navbar .nav-link{padding:.65rem .8rem}.hero{padding:5rem 0}.gallery-main-image{height:390px}}@media(max-width:767px){.hero{padding:4rem 0 4.5rem}.hero h1{font-size:2.25rem}.search-card{margin-top:-2.5rem}.property-cover{height:220px}.gallery-main-image{height:300px}.rich-area{min-height:220px}.mobile-sticky{position:sticky;bottom:0;background:#fff;padding:.75rem;box-shadow:0 -5px 20px rgba(0,0,0,.08);z-index:20}.admin-main{padding-left:.85rem!important;padding-right:.85rem!important}}
/* Public availability date-range calendar */
.booking-panel{z-index:5}.availability-picker{border:1px solid var(--line);border-radius:1rem;padding:.85rem;background:#fbfcff}.availability-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.7rem}.availability-toolbar strong{text-align:center;font-size:.9rem}.availability-legend{display:flex;flex-wrap:wrap;gap:.85rem;font-size:.75rem;color:var(--muted)}.availability-legend span{display:inline-flex;align-items:center;gap:.35rem}.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.legend-dot.available{background:#dcfce7;border:1px solid #86efac}.legend-dot.unavailable{background:#fee2e2;border:1px solid #fca5a5}.legend-dot.selected{background:#ddd6fe;border:1px solid #8b5cf6}.availability-calendars{display:grid;grid-template-columns:1fr;gap:.8rem}.availability-month{min-width:0}.availability-month h3{font-size:.82rem;font-weight:700;text-align:center;margin:0 0 .45rem}.calendar-weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.calendar-weekdays span{text-align:center;font-size:.62rem;font-weight:700;color:#94a3b8;padding:.15rem 0}.calendar-day{border:0;border-radius:.5rem;aspect-ratio:1/1;min-width:0;padding:0;font-size:.72rem;font-weight:650;background:#fff;color:#334155;display:flex;align-items:center;justify-content:center}.calendar-day.free{background:#f0fdf4;color:#166534;border:1px solid #dcfce7}.calendar-day.busy{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca;text-decoration:line-through;cursor:not-allowed}.calendar-day.past{background:#f8fafc;color:#cbd5e1;cursor:not-allowed}.calendar-day.in-range{background:#ede9fe;color:#5b21b6;border-color:#c4b5fd}.calendar-day.selected-edge{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff!important;border-color:transparent;box-shadow:0 3px 8px rgba(91,77,247,.2)}.calendar-day:not(:disabled):hover{outline:2px solid rgba(91,77,247,.22);outline-offset:1px}.selected-dates-card{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.6rem;padding:.8rem;border-radius:.85rem;background:#f6f7fb;border:1px solid #e8ebf2}.selected-dates-card>div{min-width:0}.selected-dates-card small{display:block;color:#64748b;font-size:.68rem}.selected-dates-card strong{display:block;font-size:.83rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.selected-dates-card>div:last-child{text-align:right}
@media(min-width:1400px){.booking-panel .availability-calendars{grid-template-columns:1fr 1fr}.booking-panel{min-width:430px;margin-left:-30px}.booking-panel .calendar-day{font-size:.7rem}}
@media(max-width:991px){.availability-calendars{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-day{font-size:.78rem}}
@media(max-width:575px){.availability-calendars{grid-template-columns:1fr}.availability-month:nth-child(2){display:none}.calendar-day{font-size:.82rem;min-height:38px;aspect-ratio:auto}.availability-picker{padding:.7rem}}

/* Home live-availability calendar */
.home-availability{border-top:1px solid var(--line);padding-top:1.25rem}.home-calendar-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}.home-calendar-grid .availability-month{border:1px solid var(--line);border-radius:1rem;padding:1rem;background:#fff}.home-calendar-grid .calendar-day{min-height:42px;aspect-ratio:auto;font-size:.86rem}.calendar-day.limited{background:#fff7ed;color:#9a3412;border:1px solid #fed7aa}.legend-dot.limited{background:#ffedd5;border:1px solid #fdba74}.date-display{min-height:58px;border:1px solid #dfe3eb;border-radius:.85rem;padding:.65rem .85rem;background:#fff;display:flex;flex-direction:column;justify-content:center}.date-display strong{font-size:1rem}.date-display small{color:var(--muted);font-size:.72rem}
@media(max-width:767px){.home-calendar-grid{grid-template-columns:1fr}.home-calendar-grid .availability-month:nth-child(2){display:none}.home-calendar-grid .calendar-day{min-height:44px;font-size:.9rem}}

/* Professional public booking calendar v3 */
.booking-calendar-shell{background:#fff;border:1px solid #e7eaf2;border-radius:1.35rem;padding:1.35rem;box-shadow:0 14px 36px rgba(15,23,42,.07)}
.booking-calendar-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1.25rem;padding-bottom:1rem;border-bottom:1px solid #eef0f5}
.booking-calendar-eyebrow{display:inline-flex;align-items:center;gap:.45rem;color:#5b4df7;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.booking-calendar-title{font-size:1.35rem;font-weight:800;letter-spacing:-.02em;margin:.25rem 0 .2rem;color:#172033}
.booking-calendar-subtitle{color:#667085;font-size:.9rem}
.booking-calendar-selection{display:grid;grid-template-columns:minmax(120px,1fr) auto minmax(120px,1fr);align-items:center;gap:.7rem;background:#f8f9fd;border:1px solid #eaecf4;border-radius:1rem;padding:.7rem .85rem;min-width:330px}
.booking-calendar-selection>div{min-width:0}.booking-calendar-selection span{display:block;color:#7c8494;font-size:.67rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700}.booking-calendar-selection strong{display:block;color:#172033;font-size:.88rem;margin-top:.08rem}.booking-calendar-selection i{color:#98a2b3}
.booking-calendar-legend{display:flex;flex-wrap:wrap;gap:.55rem;margin:1rem 0}.status-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .65rem;border-radius:999px;font-size:.74rem;font-weight:700;border:1px solid transparent}.status-pill i{width:9px;height:9px;border-radius:50%}.status-available{background:#effcf5;color:#16784a;border-color:#d8f3e4}.status-available i{background:#22a06b}.status-limited{background:#fff8e8;color:#9a6700;border-color:#ffebc0}.status-limited i{background:#e9a23b}.status-unavailable{background:#fff1f2;color:#b42318;border-color:#ffd6da}.status-unavailable i{background:#ef5f6c}.status-selected{background:#f1efff;color:#5b4df7;border-color:#ddd7ff}.status-selected i{background:#6d5dfc}
.booking-calendar-nav{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:.75rem;margin:.25rem 0 .9rem}.booking-calendar-nav strong{text-align:center;font-size:.98rem;color:#344054}.calendar-nav-btn{width:42px;height:42px;border:1px solid #e1e5ee;border-radius:.8rem;background:#fff;color:#475467;display:grid;place-items:center;transition:.18s}.calendar-nav-btn:hover{border-color:#c7c2ff;color:#5b4df7;background:#f8f7ff}
.booking-months{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.booking-month{border:1px solid #e7eaf2;border-radius:1.1rem;overflow:hidden;background:#fff;min-width:0}.booking-month-header{text-align:center;font-size:1rem;font-weight:800;color:#172033;padding:.85rem;background:#fafbfe;border-bottom:1px solid #edf0f5}.booking-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));padding:.55rem .55rem .2rem;gap:4px}.booking-weekdays span{text-align:center;color:#8a93a3;font-size:.67rem;font-weight:800;text-transform:uppercase}.booking-days{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:5px!important;padding:.45rem .55rem .7rem!important}.booking-day{appearance:none!important;-webkit-appearance:none!important;position:relative!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;min-width:0!important;width:100%!important;min-height:58px!important;border-radius:.72rem!important;border:1px solid #edf0f4!important;background:#fff!important;color:#344054!important;padding:.25rem!important;font:inherit!important;line-height:1.1!important;cursor:pointer!important;transition:.16s!important;overflow:hidden!important}.booking-day-number{font-size:.93rem;font-weight:800}.booking-day-state{font-size:.53rem;font-weight:700;margin-top:.22rem;white-space:nowrap;opacity:.75}.booking-day.is-free{background:#f2fbf6!important;border-color:#d8f1e3!important;color:#176b45!important}.booking-day.is-limited{background:#fff8e8!important;border-color:#ffe3a3!important;color:#8a5b00!important}.booking-day.is-busy{background:#fff1f2!important;border-color:#ffd5d9!important;color:#b42318!important;cursor:not-allowed!important}.booking-day.is-busy .booking-day-number{text-decoration:line-through;text-decoration-thickness:1px}.booking-day.is-past{background:#fafafa!important;color:#c0c5ce!important;border-color:#f0f1f3!important;cursor:not-allowed!important}.booking-day.is-past .booking-day-state{display:none}.booking-day.is-range{background:#efedff!important;border-color:#cfc9ff!important;color:#5546d8!important}.booking-day.is-start,.booking-day.is-end{background:linear-gradient(135deg,#5b4df7,#7c4dff)!important;border-color:transparent!important;color:#fff!important;box-shadow:0 5px 14px rgba(91,77,247,.2)!important}.booking-day.is-today:not(.is-start):not(.is-end):after{content:"";position:absolute;bottom:5px;width:4px;height:4px;border-radius:50%;background:#5b4df7}.booking-day:not(:disabled):hover{transform:translateY(-1px);border-color:#8e84fb!important;box-shadow:0 5px 14px rgba(42,52,72,.08)}.booking-day-empty{visibility:hidden!important;pointer-events:none!important}.booking-calendar-hint{display:flex;align-items:center;gap:.5rem;margin-top:.9rem;color:#667085;font-size:.8rem}.booking-calendar-hint i{color:#5b4df7}
@media(max-width:991px){.booking-calendar-topbar{flex-direction:column}.booking-calendar-selection{width:100%;min-width:0}}
@media(max-width:767px){.booking-calendar-shell{padding:.9rem;border-radius:1rem}.booking-months{grid-template-columns:1fr}.booking-month:nth-child(2){display:none}.booking-calendar-selection{grid-template-columns:1fr auto 1fr}.booking-day{min-height:52px!important}.booking-day-state{display:none}.booking-calendar-title{font-size:1.15rem}.booking-calendar-subtitle{font-size:.82rem}.booking-calendar-legend{gap:.4rem}.status-pill{font-size:.68rem;padding:.34rem .52rem}}
@media(max-width:420px){.booking-weekdays{padding-left:.25rem;padding-right:.25rem}.booking-days{gap:3px!important;padding-left:.25rem!important;padding-right:.25rem!important}.booking-day{min-height:46px!important;border-radius:.6rem!important}.booking-day-number{font-size:.86rem}.booking-calendar-selection{gap:.35rem;padding:.55rem}.booking-calendar-selection strong{font-size:.78rem}}
