/* ---------- nav ---------- */
.nav { position: sticky; top: 0; z-index: 20; background: rgba(22,36,58,.96); backdrop-filter: blur(8px); color: #fff; }
.nav-in { display: flex; align-items: center; gap: 24px; height: 64px; }
.logo { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; font-weight: 600; letter-spacing: .2em; font-size: 14px; color: #fff; }
.logo-m { display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--gold); color: var(--gold); border-radius: 50%; font-family: var(--serif); font-size: 19px; letter-spacing: 0; font-weight: 500; }
.links { display: flex; gap: 22px; margin-left: auto; }
.links a { text-decoration: none; color: rgba(255,255,255,.78); font-size: 15px; }
.links a:hover { color: #fff; }
@media (max-width: 720px) { .links { display: none; } .nav .btn { margin-left: auto; } }

/* ---------- hero ---------- */
.hero { background: radial-gradient(ellipse at 85% 0%, rgba(201,169,110,.22), transparent 55%), var(--navy); color: #fff; position: relative; overflow: hidden; }
.hero-in { padding: 72px 20px 80px; position: relative; z-index: 1; }
.hero h1 { font-size: clamp(44px, 8vw, 84px); font-weight: 500; margin: 14px 0 18px; }
.hero h1 em { color: var(--gold-2); font-weight: 400; }
.hero .eyebrow { color: var(--gold); }
.lede { max-width: 540px; color: rgba(255,255,255,.8); font-size: 18px; margin: 0 0 28px; }
.hero-cta { display: flex; gap: 12px; flex-wrap: wrap; }
.btn.ghost.light { color: #fff; border-color: rgba(255,255,255,.3); }
.btn.ghost.light:hover { background: rgba(255,255,255,.08); }
.facts { display: flex; gap: 36px; flex-wrap: wrap; margin: 44px 0 0; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.14); max-width: 560px; }
.facts dt { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: rgba(255,255,255,.55); }
.facts dd { margin: 4px 0 0; font-family: var(--serif); font-size: 22px; }
.hero-map { position: absolute; right: max(20px, calc((100vw - 1120px) / 2 + 20px)); top: 40px; bottom: 30px; width: 260px; }
.goa { width: 100%; height: 100%; }
.goa .coast { fill: none; stroke: rgba(201,169,110,.55); stroke-width: 1.5; stroke-dasharray: 2 5; stroke-linecap: round; }
.goa .sea { fill: rgba(255,255,255,.3); font: italic 13px var(--serif); writing-mode: vertical-rl; letter-spacing: .2em; }
.goa .link { stroke: rgba(255,255,255,.18); stroke-width: 1; stroke-dasharray: 4 4; }
.goa .pin circle { fill: var(--gold); stroke: rgba(201,169,110,.35); stroke-width: 8; }
.goa .pin text { fill: #fff; font: 500 18px var(--serif); }
.goa .pin text.sub { fill: rgba(255,255,255,.55); font: 500 10px var(--sans); letter-spacing: .14em; text-transform: uppercase; }
@media (max-width: 900px) { .hero-map { display: none; } }

/* ---------- sections ---------- */
.sec-head { margin-bottom: 28px; max-width: 640px; }
.sec-head h2 { font-size: clamp(32px, 5vw, 46px); margin-top: 8px; }
.sec-head p:not(.eyebrow) { margin: 12px 0 0; }
.sec-head.light { color: #fff; }
.sec-head.light p:not(.eyebrow) { color: rgba(255,255,255,.75); }
.stays { padding: 80px 20px 40px; }

.prop { margin-bottom: 72px; scroll-margin-top: 80px; }
.prop-head { display: grid; grid-template-columns: 1.2fr 1fr; gap: 32px; align-items: end; padding-bottom: 24px; border-bottom: 1px solid var(--line); margin-bottom: 26px; }
.prop-head h3 { font-size: clamp(30px, 4.5vw, 42px); }
.prop-head .area { color: var(--gold-ink); font-weight: 500; margin: 6px 0 12px; font-size: 15px; }
.prop-head p { margin: 0; }
.hl { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px 18px; font-size: 14px; }
.hl li { padding-left: 18px; position: relative; }
.hl li::before { content: ""; position: absolute; left: 0; top: .62em; width: 8px; height: 1px; background: var(--gold); }
.map-link { display: inline-block; margin-top: 14px; font-size: 14px; color: var(--navy); font-weight: 500; }
@media (max-width: 800px) { .prop-head { grid-template-columns: 1fr; gap: 18px; } }

.units { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 22px; }
.unit { background: var(--card); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); display: flex; flex-direction: column; }
.u-media { aspect-ratio: 4 / 3; position: relative; background: var(--navy); overflow: hidden; }
.u-media img { width: 100%; height: 100%; object-fit: cover; }
.u-ph { position: absolute; inset: 0; display: grid; place-items: center; background:
  radial-gradient(circle at 30% 20%, rgba(201,169,110,.28), transparent 55%), linear-gradient(160deg, var(--navy-2), var(--navy)); color: var(--gold-2); text-align: center; }
.u-ph b { display: block; font: 400 88px/1 var(--serif); letter-spacing: .04em; }
.u-ph span { font-size: 12px; letter-spacing: .24em; text-transform: uppercase; color: rgba(255,255,255,.6); }
.u-nav { position: absolute; inset: auto 10px 10px auto; display: flex; gap: 6px; }
.u-nav button { width: 32px; height: 32px; border-radius: 50%; border: 0; background: rgba(255,255,255,.88); cursor: pointer; font-size: 18px; }
.u-count { position: absolute; left: 10px; bottom: 12px; background: rgba(0,0,0,.45); color: #fff; font-size: 12px; padding: 2px 8px; border-radius: 99px; }
.u-body { padding: 20px 20px 22px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.u-type { font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.u-body h4 { font: 500 26px/1.1 var(--serif); margin: 0; }
.u-body p { margin: 0; font-size: 15px; color: #444956; }
.amen { list-style: none; padding: 0; margin: 2px 0 0; display: flex; flex-wrap: wrap; gap: 6px; }
.amen li { font-size: 12.5px; padding: 4px 10px; border-radius: 99px; background: var(--paper); border: 1px solid var(--line); }
.u-foot { display: flex; align-items: end; justify-content: space-between; margin-top: auto; padding-top: 14px; border-top: 1px solid var(--line); gap: 12px; }
.price small { display: block; font-size: 12px; color: var(--muted); }
.price b { font: 600 26px/1 var(--serif); }
.price span { font-size: 13px; color: var(--muted); }

.recs { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; margin-top: 26px; }
.recs details { background: var(--card); border-radius: var(--radius); padding: 4px 18px; border: 1px solid var(--line); }
.recs summary { cursor: pointer; padding: 14px 0; font-weight: 500; list-style: none; display: flex; justify-content: space-between; }
.recs summary::after { content: "+"; color: var(--gold-ink); font-size: 20px; line-height: 1; }
.recs details[open] summary::after { content: "–"; }
.recs ul { list-style: none; margin: 0 0 14px; padding: 0; font-size: 14.5px; }
.recs li { padding: 7px 0; border-top: 1px dashed var(--line); display: flex; justify-content: space-between; gap: 12px; }
.recs li span { color: var(--muted); text-align: right; }
@media (max-width: 720px) { .recs { grid-template-columns: 1fr; } }

/* ---------- booking ---------- */
.book { background: var(--navy); padding: 80px 0; scroll-margin-top: 64px; }
.book-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
@media (max-width: 860px) { .book-grid { grid-template-columns: 1fr; } }
.panel { background: var(--paper); border-radius: var(--radius); padding: 22px; display: grid; gap: 16px; align-content: start; }
.cal-head { display: flex; align-items: center; justify-content: space-between; margin-top: 4px; }
.cal-title { font: 500 22px var(--serif); }
.icon { width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line); background: #fff; cursor: pointer; font-size: 20px; line-height: 1; display: grid; place-items: center; }
.icon:hover { border-color: var(--gold); }
.icon[disabled] { opacity: .35; pointer-events: none; }
.cal { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
.cal .dow { text-align: center; font-size: 11px; font-weight: 600; color: var(--muted); letter-spacing: .08em; padding: 4px 0; }
.cal button { aspect-ratio: 1; border: 0; background: #fff; border-radius: 8px; cursor: pointer; font-size: 15px; position: relative; }
.cal button:hover:not([disabled]) { outline: 1px solid var(--gold); }
.cal button[disabled] { background: transparent; color: #b7b9c0; cursor: not-allowed; }
.cal button.off { background: repeating-linear-gradient(135deg, #ece7df 0 4px, #f4f0ea 4px 8px); color: #a9a59c; text-decoration: line-through; }
.cal button.co { cursor: pointer; } /* a booked night can still be a check-out day */
.cal button.in-range { background: var(--gold-2); border-radius: 0; }
.cal button.start, .cal button.end { background: var(--navy); color: #fff; }
.cal button.start { border-radius: 8px 0 0 8px; }
.cal button.end { border-radius: 0 8px 8px 0; }
.cal button.start.end { border-radius: 8px; }
.cal button.today::after { content: ""; position: absolute; left: 50%; bottom: 5px; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: var(--gold); }
.cal-legend { display: flex; gap: 18px; font-size: 13px; color: var(--muted); }
.lg { display: inline-block; width: 12px; height: 12px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; }
.lg.sel { background: var(--navy); }
.lg.off { background: repeating-linear-gradient(135deg, #ddd6ca 0 3px, #f4f0ea 3px 6px); }
.dates { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.dates div { background: #fff; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; }
.dates small, .quote small { display: block; font-size: 12px; color: var(--muted); }
.stepper { display: flex; align-items: center; gap: 14px; }
.stepper output { font: 600 22px var(--serif); min-width: 22px; text-align: center; }
.small { font-size: 13px; }
.quote { background: #fff; border-radius: 12px; border: 1px solid var(--line); padding: 14px 16px; font-size: 14.5px; }
.quote .row { display: flex; justify-content: space-between; padding: 3px 0; }
.quote .total { border-top: 1px solid var(--line); margin-top: 6px; padding-top: 8px; font-weight: 600; font-size: 16px; }
.quote .warn { color: var(--bad); font-weight: 500; }
.two { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 480px) { .two { grid-template-columns: 1fr; } }
.btn.block { width: 100%; padding: 14px; font-size: 16px; }
.fine { font-size: 12.5px; color: var(--muted); margin: -4px 0 0; }
.done { background: var(--paper); border-radius: var(--radius); padding: 36px 28px; text-align: center; max-width: 620px; margin: 0 auto; }
.done h3 { font-size: 36px; margin: 10px 0; }
.done .ref { font: 600 30px var(--serif); letter-spacing: .08em; color: var(--navy); background: #fff; border: 1px dashed var(--gold); display: inline-block; padding: 8px 18px; border-radius: 10px; margin: 8px 0 14px; }
.done .acts { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 18px; }

/* ---------- guests ---------- */
.guests { padding: 80px 20px; }
.g-grid { display: grid; grid-template-columns: 1fr 1.1fr; gap: 56px; }
@media (max-width: 860px) { .g-grid { grid-template-columns: 1fr; gap: 40px; } }
.status-form { display: grid; gap: 14px; max-width: 420px; }
.status-form .btn { justify-self: start; }
.status-card { background: #fff; border-radius: 12px; border: 1px solid var(--line); padding: 16px; display: grid; gap: 6px; font-size: 15px; }
.rules { margin: 0; padding: 0; list-style: none; counter-reset: r; display: grid; gap: 10px; }
.rules li { counter-increment: r; position: relative; padding-left: 38px; font-size: 15px; }
.rules li::before { content: counter(r); position: absolute; left: 0; top: 0; width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--gold); color: var(--gold-ink); font: 600 14px/24px var(--serif); text-align: center; }
#notes { margin-top: 22px; display: grid; gap: 10px; }
.note { background: #fff; border-left: 3px solid var(--gold); border-radius: 0 10px 10px 0; padding: 12px 14px; font-size: 14.5px; }
.note b { display: block; margin-bottom: 2px; }

/* ---------- footer ---------- */
.foot { background: #0f1a2b; color: #fff; padding: 56px 0 24px; }
.foot-in { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 28px; }
.foot h3 { font: 600 12px var(--sans); letter-spacing: .2em; text-transform: uppercase; color: var(--gold); margin-bottom: 10px; }
.foot p { margin: 0; line-height: 1.9; }
.foot a { color: rgba(255,255,255,.82); text-decoration: none; }
.foot a:hover { color: #fff; }
.muted-l { color: rgba(255,255,255,.55); margin-top: 10px !important; }
.copy { margin-top: 40px; padding-top: 18px; border-top: 1px solid rgba(255,255,255,.1); font-size: 13px; color: rgba(255,255,255,.5); }
.copy a { color: rgba(255,255,255,.5); }
@media (max-width: 720px) { .foot-in { grid-template-columns: 1fr; } }

/* ---------- booking via Stayflexi ---------- */
.book-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 760px) { .book-cards { grid-template-columns: 1fr; } }
.bcard { background: var(--paper); border-radius: var(--radius); padding: 26px; display: grid; gap: 14px; align-content: start; }
.bcard h3 { font-size: 32px; }
.bcard .area { color: var(--gold-ink); font-weight: 500; font-size: 14.5px; margin: -6px 0 0; }
.bcard ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.bcard li { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-top: 1px solid var(--line); font-size: 15px; }
.bcard li span { color: var(--muted); font-size: 14px; }
.bcard .btn { justify-self: start; }
.bcard .fine { margin: 0; }
.book-help { color: rgba(255,255,255,.75); margin: 22px 0 0; font-size: 15px; }
.book-help a { color: var(--gold-2); }
.guide-help { background: #fff; border-radius: 12px; border: 1px solid var(--line); padding: 18px; display: grid; gap: 12px; max-width: 440px; }
.guide-help p { margin: 0; }
.guide-help .btn { justify-self: start; }
.cap { font-size: 13.5px; color: var(--muted); }
