:root{--bg: #eff4f8;--card: rgba(255, 255, 255, .92);--card-border: rgba(84, 104, 125, .14);--text: #17324a;--muted: #678198;--accent: #0d7c86;--accent-strong: #0b5f66;--accent-soft: #dff4f2;--booked: #c96551;--booked-text: #7b2f22;--surface: #f8fbfd;--line: rgba(103, 129, 152, .18);--success: #1d8b63;--danger: #a74f3d;--shadow: 0 24px 60px rgba(20, 47, 74, .12);--radius-xl: 28px;--radius-lg: 22px;--radius-md: 18px;--radius-sm: 14px}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}body{font-family:Manrope,sans-serif;background:radial-gradient(circle at top left,rgba(13,124,134,.16),transparent 30%),radial-gradient(circle at bottom right,rgba(11,95,102,.12),transparent 28%),linear-gradient(180deg,#f7fafc 0%,var(--bg) 100%);color:var(--text)}body.modal-open{overflow:hidden}button{font:inherit}.app-shell{min-height:100dvh;padding:16px;display:flex}.calendar-card{width:min(80vw,1360px);max-width:100%;min-height:calc(100dvh - 32px);margin:auto;padding:18px;display:grid;grid-template-rows:auto auto 1fr auto;gap:16px;background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius-xl);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.apartment-hero{position:relative;overflow:hidden;display:grid;border-radius:30px;background:linear-gradient(135deg,#10344c,#144e5a 48%,#0d7c86);color:#fff;box-shadow:0 26px 54px #0f30482e}.apartment-hero__media{position:relative;min-height:220px;background:linear-gradient(180deg,#0b1c2b0a,#0b1c2b80),url(https://images.unsplash.com/photo-1505693416388-ac5ce068fe85?auto=format&fit=crop&w=1200&q=80) center/cover no-repeat}.apartment-hero__media:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at top right,rgba(255,255,255,.2),transparent 26%),linear-gradient(180deg,#09182514,#0918259e)}.apartment-hero__badge{position:absolute;top:16px;left:16px;z-index:1;padding:10px 14px;border-radius:999px;background:#ffffff29;border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:.82rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.apartment-hero__content{position:relative;display:grid;gap:16px;padding:22px}.apartment-hero__content:before{content:"";position:absolute;inset:-120px -40px auto auto;width:220px;height:220px;border-radius:999px;background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 72%);pointer-events:none}.apartment-hero__headline{position:relative;display:grid;gap:10px}.apartment-hero__subtitle{margin:0;max-width:60ch;color:#ffffffd1;font-size:1rem;line-height:1.6;font-weight:600}.apartment-hero__meta{display:flex;flex-wrap:wrap;gap:10px}.apartment-pill{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border-radius:999px;background:#ffffff24;border:1px solid rgba(255,255,255,.18);color:#fff;font-size:.9rem;font-weight:700;letter-spacing:.01em}.topbar,.calendar-toolbar,.selection-panel,.selection-dates,.selection-actions{display:flex;gap:12px}.topbar,.selection-panel{flex-direction:column}.topbar{justify-content:space-between;align-items:flex-start}.eyebrow,.month-caption,.selection-label{margin:0;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;font-weight:800}h1,h2,h3{margin:0}h1{margin-top:4px;font-size:clamp(1.8rem,4vw,2.75rem);font-weight:800}h2{font-size:clamp(1.2rem,3vw,1.9rem);font-weight:800}.legend{display:flex;flex-wrap:wrap;gap:10px 14px;color:var(--muted);font-size:.88rem;font-weight:600}.legend span{display:inline-flex;align-items:center;gap:8px}.legend-swatch{width:14px;height:14px;border-radius:999px;display:inline-block}.legend-available{background:#fff;border:1px solid var(--line)}.legend-selected{background:#2b8d55}.legend-booked{background:#c96551}.legend-owned{background:linear-gradient(180deg,#38b36b,#2b8d55)}.legend-invalid{background:#c96551}.calendar-panel{display:grid;grid-template-rows:auto auto 1fr;gap:14px;min-height:0}.calendar-toolbar{align-items:center;justify-content:space-between}.month-block{text-align:center}.nav-btn,.primary-btn,.secondary-btn{border:none;border-radius:999px;transition:transform .14s ease,box-shadow .14s ease,opacity .14s ease,background .14s ease}.nav-btn{width:48px;height:48px;background:var(--surface);color:var(--text);border:1px solid var(--line);box-shadow:inset 0 1px #ffffffb3}.nav-btn:hover:not(:disabled),.primary-btn:hover:not(:disabled),.secondary-btn:hover:not(:disabled){transform:translateY(-1px)}.nav-btn:disabled,.primary-btn:disabled,.secondary-btn:disabled{opacity:.45;cursor:not-allowed}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekdays{gap:8px}.weekdays span{text-align:center;font-size:.82rem;font-weight:700;color:var(--muted)}.calendar-grid{gap:8px;min-height:0;grid-auto-rows:minmax(0,1fr)}.day-cell,.day-filler{min-height:0}.day-cell{position:relative;border:1px solid transparent;border-radius:var(--radius-md);background:#fff;color:var(--text);padding:12px 10px;display:flex;flex-direction:column;justify-content:space-between;text-align:left;box-shadow:inset 0 0 0 1px #fff9}.day-cell:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 1px #0d7c8600;transition:box-shadow .14s ease}.day-cell:hover:not(:disabled):after{box-shadow:inset 0 0 0 1px #0d7c8647}.day-filler{border-radius:var(--radius-md);background:#ffffff40}.day-number{font-size:clamp(1rem,2vw,1.2rem);font-weight:800}.day-note{font-size:.72rem;font-weight:700;color:var(--muted)}.day-cell.is-today{border-color:#0d7c863d}.day-cell.is-past,.day-cell.is-booked{background:linear-gradient(180deg,#f8d7d1,#c96551);color:#7b2f22;cursor:not-allowed}.day-cell.is-past:disabled,.day-cell.is-booked:disabled{background:linear-gradient(180deg,#f8d7d1,#c96551);color:#7b2f22;opacity:1;-webkit-text-fill-color:#7b2f22}.day-cell.is-owned-booking{border-color:#2b8d556b;box-shadow:inset 0 0 0 2px #2b8d5580,inset 0 0 0 1px #ffffffa6}.day-cell.is-owned-booking:before{content:"";position:absolute;top:8px;right:8px;width:10px;height:10px;border-radius:999px;background:linear-gradient(180deg,#44c777,#2b8d55);box-shadow:0 0 0 2px #ffffffe6,0 4px 10px #2b8d5557;pointer-events:none}.day-cell.is-owned-booking .day-note{color:#2b8d55}.day-cell.is-past .day-note,.day-cell.is-booked .day-note{color:inherit}.day-cell.is-range{background:linear-gradient(180deg,#edf9f1,#d7f0e0);border-color:#2b8d5538}.day-cell.is-invalid-range{background:linear-gradient(180deg,#fff6f3,#ffe9e2);border-color:#a74f3d2e}.day-cell.is-invalid-range:after{box-shadow:inset 0 0 0 2px #a74f3dc2}.day-cell.is-invalid-range .day-number,.day-cell.is-invalid-range .day-note{color:#9a4738}.day-cell.is-start,.day-cell.is-end{background:linear-gradient(180deg,#38b36b,#2b8d55);color:#fff;box-shadow:0 16px 30px #2b8d553d}.day-cell.is-start:disabled,.day-cell.is-end:disabled{background:linear-gradient(180deg,#38b36b,#2b8d55);color:#fff;opacity:1;-webkit-text-fill-color:#ffffff}.day-cell.is-invalid-range.is-start,.day-cell.is-invalid-range.is-end{background:linear-gradient(180deg,#c96551,#a74f3d);color:#fff;box-shadow:0 16px 30px #a74f3d3d}.day-cell.is-invalid-range.is-start .day-note,.day-cell.is-invalid-range.is-end .day-note,.day-cell.is-start .day-note,.day-cell.is-end .day-note{color:#ffffffd1}.selection-panel{padding:14px;border-radius:var(--radius-lg);background:linear-gradient(180deg,#f8fbfdf5,#edf4f8f2);border:1px solid var(--line);justify-content:space-between}.selection-copy{padding:14px;border-radius:var(--radius-lg);background:linear-gradient(180deg,#fffffffa,#f0f8faf5);border:1px solid rgba(103,129,152,.14);box-shadow:inset 0 1px #ffffffb8}.pricing-panel{padding:14px;border-radius:var(--radius-lg);background:linear-gradient(180deg,#fffffff5,#f2f8faf5);border:1px solid rgba(103,129,152,.14);display:grid;gap:12px}.pricing-title{margin-top:4px;font-size:1.2rem;font-weight:800}.pricing-rate,.pricing-item{padding:12px 14px;border-radius:var(--radius-sm);background:#fff;border:1px solid rgba(103,129,152,.12)}.pricing-rate strong,.pricing-item strong{display:block;margin-top:4px;font-size:1rem}.pricing-list{display:grid;gap:8px}.pricing-item{display:flex;align-items:center;justify-content:space-between;gap:12px}.pricing-item span{color:var(--muted);font-size:.9rem;font-weight:700}.pricing-item.is-active{border-color:#0d7c8652;background:linear-gradient(180deg,#f0fbfa 0%,var(--accent-soft) 100%)}.selection-dates{flex-direction:column;gap:10px}.selection-chip{padding:14px 16px;border-radius:var(--radius-sm);background:linear-gradient(180deg,#fff,#f6fbfc);border:1px solid rgba(103,129,152,.12);box-shadow:0 10px 22px #142f4a0f}.selection-chip strong{margin-top:4px;display:block;font-size:1.02rem;color:var(--text)}.status-message{margin:14px 0 0;min-height:24px;color:var(--muted);font-size:.95rem;font-weight:600;line-height:1.5}.selection-total{margin:14px 0 0;padding:14px 16px;border-radius:var(--radius-md);background:linear-gradient(180deg,#0d7c8624,#0d7c8638);border:1px solid rgba(13,124,134,.18);color:var(--accent-strong);font-size:1.05rem;font-weight:800;letter-spacing:.01em;box-shadow:inset 0 1px #ffffff73;display:grid;gap:8px}.selection-total-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.selection-total-label{color:var(--accent-strong);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;font-weight:800}.status-message.is-success{color:var(--success)}.status-message.is-error{color:var(--danger)}.selection-actions{flex-direction:column}.primary-btn,.secondary-btn{min-height:52px;padding:0 18px;font-weight:800}.primary-btn{background:linear-gradient(180deg,var(--accent) 0%,var(--accent-strong) 100%);color:#fff;box-shadow:0 14px 28px #0d7c8638}.secondary-btn{background:#fff;color:var(--text);border:1px solid var(--line)}.booking-modal{position:fixed;inset:0;display:grid;place-items:center;padding:20px;opacity:0;pointer-events:none;transition:opacity .18s ease;z-index:20}.booking-modal.is-open{opacity:1;pointer-events:auto}.booking-modal__backdrop{position:absolute;inset:0;background:radial-gradient(circle at top,rgba(13,124,134,.25),transparent 35%),#0a1b2d99;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.booking-modal__dialog{position:relative;width:min(100%,520px);overflow:hidden;border-radius:32px;border:1px solid rgba(255,255,255,.22);background:linear-gradient(145deg,#fffffffa,#ecf9f7f2 48%,#dff4f2fa);box-shadow:0 34px 80px #081f3057,inset 0 1px #ffffffb3;transform:translateY(18px) scale(.96);transition:transform .22s ease}.booking-modal.is-open .booking-modal__dialog{transform:translateY(0) scale(1)}.booking-modal[data-tone=error] .booking-modal__dialog{background:linear-gradient(145deg,#fffaf9fa,#ffeee9f5 48%,#ffe1d8fa)}.booking-modal__glow{position:absolute;inset:-20% auto auto 50%;width:220px;height:220px;border-radius:999px;transform:translate(-50%);background:radial-gradient(circle,rgba(13,124,134,.38) 0%,rgba(13,124,134,.16) 40%,transparent 72%);filter:blur(10px);pointer-events:none}.booking-modal[data-tone=error] .booking-modal__glow{background:radial-gradient(circle,rgba(167,79,61,.4) 0%,rgba(167,79,61,.16) 40%,transparent 72%)}.booking-modal__content{position:relative;padding:68px 24px 24px;text-align:center}.booking-modal__title{font-size:clamp(1.8rem,6vw,2.4rem);font-weight:800;letter-spacing:-.03em}.booking-modal__message{margin:16px auto 0;max-width:30ch;color:var(--muted);font-size:1rem;font-weight:600;line-height:1.6}.booking-modal[data-tone=error] .booking-modal__message{color:#865549}.booking-modal__action{min-width:180px;margin-top:24px}.booking-modal[data-tone=error] .booking-modal__action{background:linear-gradient(180deg,#c96551,#a74f3d);box-shadow:0 14px 28px #a74f3d3d}.booking-modal__close{position:absolute;top:14px;right:14px;width:42px;height:42px;border:0;border-radius:999px;background:#ffffffc7;color:var(--text);box-shadow:0 12px 24px #142f4a24;z-index:1}.booking-modal__close span{font-size:1.4rem;line-height:1}.booking-customer-modal .booking-modal__dialog{width:min(100%,760px)}.booking-customer-modal__content{text-align:left}.booking-customer-modal__hint{margin:8px 0 0;color:var(--muted);font-size:.92rem;font-weight:600}.booking-customer-form{margin-top:18px;display:grid;gap:12px}.booking-customer-form__error{margin:0;padding:12px 14px;border-radius:12px;background:linear-gradient(180deg,#fff6f3,#ffe9e2);border:1px solid rgba(167,79,61,.24);color:var(--danger);font-size:.9rem;font-weight:700;line-height:1.45}.booking-customer-grid{display:grid;gap:12px;grid-template-columns:1fr}.booking-field{display:grid;gap:6px}.booking-field span{font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:800}.booking-field input,.booking-field textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:10px 12px;font:inherit;color:var(--text);background:#fff}.booking-field .coupon-code-input{text-transform:none;font-variant-caps:normal}.booking-field input:focus,.booking-field textarea:focus{outline:none;border-color:#0d7c8673;box-shadow:0 0 0 3px #0d7c8624}.field-error{color:var(--danger);font-size:.8rem;font-weight:700}.booking-customer-total{margin:6px 0 0;padding:12px 14px;border-radius:12px;background:#0d7c861a;border:1px solid rgba(13,124,134,.2);color:var(--accent-strong);font-weight:800;display:grid;gap:8px}.booking-customer-actions{display:grid;gap:10px;grid-template-columns:1fr;margin-top:6px}.cancellation-policy{padding:16px;border-radius:var(--radius-lg);background:linear-gradient(180deg,#fff,#f4fafb);border:2px solid rgba(13,124,134,.28);box-shadow:0 12px 26px #142f4a14}.cancellation-policy__title{font-size:1.1rem;font-weight:800;color:var(--accent-strong)}.cancellation-policy__intro,.cancellation-policy__label{margin:10px 0 0;color:var(--text);line-height:1.55;font-size:.95rem;font-weight:600}.cancellation-policy__label{font-weight:800}.cancellation-policy__list{margin:10px 0 0;padding-left:18px;display:grid;gap:6px;color:var(--text);line-height:1.5;font-size:.92rem;font-weight:600}@media(min-width:768px){.app-shell{padding:22px}.calendar-card{min-height:calc(100dvh - 44px);padding:22px;grid-template-rows:auto auto 1fr auto;grid-template-columns:minmax(0,1fr) 320px;grid-template-areas:"hero hero" "header header" "calendar sidebar" "footer footer";gap:20px}.apartment-hero{grid-area:hero;grid-template-columns:minmax(320px,.95fr) minmax(0,1.05fr);min-height:250px}.topbar{grid-area:header;flex-direction:row;align-items:center}.calendar-panel{grid-area:calendar}.selection-panel{grid-area:sidebar}.cancellation-policy{grid-area:footer}.selection-actions{margin-top:auto}.selection-chip strong{font-size:1.05rem}.booking-customer-grid,.booking-customer-actions{grid-template-columns:1fr 1fr}}@media(max-width:767px){.app-shell{padding:10px}.calendar-card{width:100%;min-height:calc(100dvh - 20px);padding:12px;gap:12px;grid-template-rows:auto auto minmax(360px,1fr) auto}.apartment-hero{border-radius:24px}.apartment-hero__media{min-height:180px}.apartment-hero__content{padding:18px;gap:14px}.apartment-hero__subtitle{font-size:.92rem;line-height:1.5}.apartment-pill{min-height:36px;padding:0 12px;font-size:.82rem}.topbar{gap:10px}.legend{gap:8px 12px;font-size:.8rem}.calendar-panel{gap:10px;grid-template-rows:auto auto minmax(300px,1fr)}.calendar-toolbar{gap:8px}.month-caption{font-size:.64rem}h2{font-size:1.1rem}.nav-btn{width:42px;height:42px}.weekdays{gap:4px}.weekdays span{font-size:.7rem;letter-spacing:.02em}.calendar-grid{gap:4px}.day-cell{min-height:52px;padding:8px 6px;border-radius:14px;justify-content:center;align-items:center;text-align:center}.day-number{font-size:1rem}.day-note{display:none}.day-filler{border-radius:14px}.selection-panel,.selection-copy,.pricing-panel{padding:12px}.selection-chip,.pricing-rate,.pricing-item,.selection-total{padding:12px 14px}.cancellation-policy{padding:14px}.booking-modal__content{padding:64px 20px 20px}}
