:root {
  --ink: #102d3d;
  --ink-deep: #08212e;
  --paper: #f5efe5;
  --cream: #fff8eb;
  --coral: #ed8f70;
  --coral-dark: #ce6f52;
  --sky: #9bc5cb;
  --line: rgba(16, 45, 61, 0.18);
  --sans: "DM Sans", sans-serif;
  --display: "Manrope", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); overflow-x: hidden; }
a { color: inherit; text-decoration: none; }
button, input { font: inherit; }
button { color: inherit; }

.site-header {
  height: 82px; padding: 0 clamp(22px, 5vw, 74px); display: grid; grid-template-columns: 1fr auto 1fr;
  align-items: center; position: absolute; z-index: 10; width: 100%; color: var(--cream); border-bottom: 1px solid rgba(255,255,255,.18);
}
.brand { display: inline-flex; align-items: center; gap: 11px; font: 600 18px/1 var(--display); letter-spacing: .24em; width: max-content; }
.brand svg { width: 27px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.brand svg circle { fill: currentColor; stroke: none; }
.site-header nav { display: flex; gap: 38px; font-size: 13px; }
.site-header nav a, .team-link { position: relative; }
.site-header nav a::after, .team-link::after { content: ""; position: absolute; left: 0; bottom: -6px; width: 0; height: 1px; background: currentColor; transition: width .2s; }
.site-header nav a:hover::after, .team-link:hover::after { width: 100%; }
.team-link { justify-self: end; font-size: 12px; text-transform: uppercase; letter-spacing: .12em; }

.hero { min-height: 850px; height: 96vh; max-height: 1040px; padding: 82px clamp(22px, 7vw, 108px) 70px; background: var(--ink); color: var(--cream); position: relative; display: flex; align-items: center; overflow: hidden; }
.hero::before { content: ""; position: absolute; inset: 0; opacity: .24; background-image: linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px); background-size: 80px 80px; }
.hero-copy { position: relative; z-index: 2; max-width: 740px; margin-top: 30px; }
.eyebrow { margin: 0 0 25px; text-transform: uppercase; letter-spacing: .18em; font-size: 11px; font-weight: 600; }
.eyebrow.dark { color: var(--coral-dark); }
.hero h1 { font: 400 clamp(66px, 8.5vw, 136px)/.89 var(--display); letter-spacing: -.06em; margin: 0 0 38px; max-width: 800px; }
.hero h1 em, .statement em { color: var(--coral); font-style: italic; font-weight: 400; }
.hero-lede { max-width: 540px; font-size: clamp(17px, 1.5vw, 22px); line-height: 1.6; color: rgba(255,248,235,.75); }
.hero-actions { display: flex; align-items: center; gap: 30px; margin-top: 42px; }
.button { display: inline-flex; justify-content: center; align-items: center; min-height: 50px; padding: 0 24px; font-size: 12px; text-transform: uppercase; letter-spacing: .12em; transition: transform .2s, background .2s; }
.button:hover { transform: translateY(-2px); }
.button-light { background: var(--cream); color: var(--ink); }
.button-coral { background: var(--coral); color: var(--ink-deep); }
.text-link { font-size: 13px; border-bottom: 1px solid rgba(255,255,255,.45); padding-bottom: 5px; }
.text-link span { margin-left: 8px; }

.hero-card { position: absolute; right: 8vw; top: 19%; width: min(32vw, 440px); aspect-ratio: .72; background: #eaa07f; color: var(--ink); overflow: hidden; padding: 34px; display: flex; flex-direction: column; justify-content: flex-end; box-shadow: 0 50px 110px rgba(0,0,0,.3); }
.hero-card p { margin: 0 0 8px; text-transform: uppercase; letter-spacing: .16em; font-size: 10px; position: relative; }
.hero-card strong { font: 500 clamp(30px, 3vw, 44px)/1.1 var(--display); position: relative; }
.hero-card > span { font-size: 13px; margin-top: 8px; position: relative; }
.sun-disc { position: absolute; width: 72%; aspect-ratio: 1; border-radius: 50%; background: #ffd99a; top: 10%; left: 14%; box-shadow: 0 0 90px #ffd99a; }
.coast-lines { position: absolute; width: 140%; height: 55%; left: -20%; bottom: 17%; transform: rotate(-10deg); background: repeating-radial-gradient(ellipse at center bottom, transparent 0 18px, rgba(16,45,61,.42) 19px 21px); }
.hero-side { position: absolute; right: 3vw; bottom: 70px; writing-mode: vertical-rl; text-transform: uppercase; letter-spacing: .2em; font-size: 9px; opacity: .55; }
.hero-orbit { position: absolute; border: 1px solid rgba(237,143,112,.28); border-radius: 50%; }
.orbit-one { width: 720px; height: 720px; right: -260px; top: -190px; }
.orbit-two { width: 1100px; height: 1100px; right: -520px; top: -380px; }

.intro { padding: 130px clamp(24px, 9vw, 140px) 145px; display: grid; grid-template-columns: .35fr 1.5fr .55fr; gap: 56px; align-items: start; }
.statement { margin: 0; font: 400 clamp(36px, 5vw, 74px)/1.14 var(--display); letter-spacing: -.045em; }
.intro-note { border-top: 1px solid var(--line); padding-top: 18px; margin-top: 10px; font-size: 13px; line-height: 1.65; }
.intro-note span { color: var(--coral-dark); font-size: 10px; }

.stays { padding: 110px clamp(22px, 5vw, 75px) 135px; background: #e8dfd2; }
.section-heading { display: flex; justify-content: space-between; align-items: end; margin-bottom: 56px; }
.section-heading h2, .finder-copy h2, .circle h2 { margin: 0; font: 400 clamp(42px, 5.5vw, 78px)/1.05 var(--display); letter-spacing: -.05em; }
.section-heading > p { max-width: 330px; line-height: 1.65; font-size: 14px; }
.stay-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.stay-card { min-width: 0; }
.stay-card .card-art { aspect-ratio: .78; margin-bottom: 20px; position: relative; overflow: hidden; transition: transform .35s; }
.stay-card:hover .card-art { transform: translateY(-6px); }
.stay-card p { margin: 0 0 12px; font-size: 9px; letter-spacing: .15em; text-transform: uppercase; }
.stay-card h3 { margin: 0 0 5px; font: 500 clamp(21px, 2vw, 30px)/1.2 var(--display); }
.stay-card > span { font-size: 12px; opacity: .65; }
.card-art i { position: absolute; display: block; }
.coast .card-art { background: #8fc0c6; }
.coast .card-art i:first-child { width: 75%; aspect-ratio: 1; border-radius: 50%; background: #ffcb86; left: 12%; top: 13%; }
.coast .card-art i:nth-child(2) { inset: 53% -20% -20%; background: repeating-radial-gradient(ellipse at top, transparent 0 17px, var(--ink) 18px 20px); transform: rotate(-5deg); }
.alpine .card-art { background: #c4c9bd; }
.alpine .card-art i:first-child { width: 74%; height: 65%; left: -4%; bottom: -2%; background: #486165; clip-path: polygon(48% 0,100% 100%,0 100%); }
.alpine .card-art i:nth-child(2) { width: 82%; height: 73%; right: -25%; bottom: -3%; background: var(--ink); clip-path: polygon(48% 0,100% 100%,0 100%); }
.alpine .card-art i:nth-child(3) { width: 45%; height: 28%; left: 30%; bottom: 0; background: #e5d1b6; clip-path: polygon(50% 0,100% 100%,0 100%); }
.city .card-art { background: #e9b29a; }
.city .card-art i:first-child { width: 52%; height: 78%; left: 14%; bottom: 0; background: var(--cream); }
.city .card-art i:nth-child(2) { width: 42%; height: 62%; right: 8%; bottom: 0; background: var(--ink); }
.city .card-art i:nth-child(3) { width: 110%; height: 1px; background: rgba(16,45,61,.4); transform: rotate(-30deg); top: 50%; left: -5%; }
.desert .card-art { background: #d47e5f; }
.desert .card-art i:first-child { width: 90%; height: 60%; border-radius: 50% 50% 0 0; background: #efb580; bottom: -20%; left: -20%; }
.desert .card-art i:nth-child(2) { width: 78%; height: 52%; border-radius: 50% 50% 0 0; background: #934c3a; bottom: -20%; right: -18%; }
.desert .card-art i:nth-child(3) { width: 36%; aspect-ratio: 1; border-radius: 50%; background: #ffd093; top: 15%; right: 16%; }

.finder-wrap { min-height: 720px; display: grid; grid-template-columns: .9fr 1.1fr; background: var(--ink-deep); color: var(--cream); }
.finder-copy { padding: 110px clamp(28px, 7vw, 110px); display: flex; flex-direction: column; justify-content: center; }
.finder-copy > p:last-child { max-width: 450px; line-height: 1.7; color: rgba(255,248,235,.66); margin-top: 34px; }
.stay-finder { border-left: 1px solid rgba(255,255,255,.14); padding: 110px clamp(28px, 6vw, 90px); display: flex; flex-direction: column; justify-content: center; }
.finder-question { text-transform: uppercase; letter-spacing: .15em; font-size: 10px; margin-bottom: 20px; }
.mood-list { display: flex; flex-wrap: wrap; gap: 10px; }
.mood-chip { border: 1px solid rgba(255,255,255,.28); border-radius: 40px; background: transparent; color: var(--cream); padding: 11px 17px; cursor: pointer; font-size: 12px; }
.mood-chip.active { background: var(--coral); color: var(--ink-deep); border-color: var(--coral); }
.finder-result { margin-top: 48px; padding-top: 44px; border-top: 1px solid rgba(255,255,255,.15); display: grid; grid-template-columns: 90px 1fr; gap: 4px 24px; align-items: center; }
.result-symbol { grid-row: 1 / 3; width: 86px; height: 86px; display: grid; place-items: center; border: 1px solid var(--coral); border-radius: 50%; color: var(--coral); font: 400 38px/1 var(--display); }
.finder-result span { font-size: 9px; text-transform: uppercase; letter-spacing: .15em; color: var(--coral); }
.finder-result h3 { margin: 3px 0; font: 500 30px/1.15 var(--display); }
.finder-result p { margin: 0; }
#stayPlace { font-size: 12px; opacity: .6; }
#stayNote { grid-column: 2; max-width: 430px; border-top: 1px solid rgba(255,255,255,.11); padding-top: 18px; margin-top: 18px; line-height: 1.65; font-size: 14px; color: rgba(255,248,235,.75); }

.circle { min-height: 610px; padding: 100px clamp(28px, 8vw, 120px); background: #c9d7d3; display: grid; grid-template-columns: .6fr 1.2fr .8fr; gap: 50px; align-items: center; }
.circle .eyebrow { color: var(--coral-dark); }
.circle-copy p { line-height: 1.7; margin-bottom: 32px; }
.circle-mark { width: min(20vw, 250px); aspect-ratio: 1; position: relative; }
.circle-mark span { position: absolute; inset: 0; border: 1px solid var(--ink); border-radius: 50%; }
.circle-mark span:nth-child(2) { transform: translateX(28%); }
.circle-mark span:nth-child(3) { transform: translateX(14%) scale(.55); background: var(--coral); border: 0; }

footer { background: var(--ink); color: var(--cream); padding: 70px clamp(24px, 6vw, 90px) 40px; display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 40px; }
.footer-brand { font-size: 25px; }
footer > p { font: 400 21px/1.45 var(--display); margin: 0; }
footer > div { display: flex; flex-direction: column; gap: 12px; font-size: 13px; justify-self: end; }
footer small { grid-column: 1/-1; padding-top: 35px; border-top: 1px solid rgba(255,255,255,.15); color: rgba(255,255,255,.5); font-size: 10px; }

#chatLaunch { position: fixed; z-index: 90; right: 26px; bottom: 24px; border: 0; border-radius: 999px; background: var(--coral); color: var(--ink-deep); padding: 15px 22px; box-shadow: 0 12px 40px rgba(8,33,46,.28); cursor: pointer; font-weight: 600; }
#chatLaunch span { font-weight: 400; opacity: .7; }
#chatPanel { position: fixed; z-index: 100; right: 24px; bottom: 24px; width: min(390px, calc(100vw - 32px)); height: min(590px, calc(100vh - 48px)); background: var(--cream); box-shadow: 0 28px 80px rgba(8,33,46,.35); display: flex; flex-direction: column; opacity: 0; visibility: hidden; transform: translateY(16px) scale(.98); transition: opacity .2s, transform .2s, visibility .2s; }
#chatPanel.open { opacity: 1; visibility: visible; transform: none; }
#chatPanel > header { background: var(--ink); color: var(--cream); padding: 19px 20px; display: flex; align-items: center; justify-content: space-between; }
#chatPanel > header > div { display: grid; grid-template-columns: 30px auto; column-gap: 10px; }
#chatPanel header i { grid-row: 1/3; width: 30px; height: 30px; border-radius: 50%; background: var(--coral); position: relative; }
#chatPanel header i::after { content: ""; position: absolute; width: 8px; height: 8px; background: var(--cream); border-radius: 50%; inset: 11px; }
#chatPanel header span { font-weight: 600; }
#chatPanel header small { opacity: .6; font-size: 10px; }
#chatClose { border: 0; background: none; color: var(--cream); font-size: 24px; cursor: pointer; }
#chatLog { flex: 1; overflow-y: auto; padding: 20px; display: flex; flex-direction: column; gap: 12px; }
.msg { max-width: 84%; padding: 11px 14px; line-height: 1.5; font-size: 13px; }
.msg.bot { background: #e9e2d7; align-self: flex-start; }
.msg.user { background: var(--ink); color: var(--cream); align-self: flex-end; }
.msg.system { align-self: stretch; max-width: none; background: #f4d6cb; color: #783d2c; font-size: 12px; }
.msg.typing { opacity: .58; }
#chatForm { border-top: 1px solid var(--line); padding: 12px; display: flex; gap: 8px; }
#chatInput { flex: 1; min-width: 0; border: 1px solid var(--line); background: white; padding: 11px 12px; color: var(--ink); }
#chatSend { border: 0; background: var(--coral); padding: 0 16px; cursor: pointer; }
#chatSend:disabled { opacity: .5; }

@media (max-width: 980px) {
  .site-header { grid-template-columns: 1fr 1fr; }
  .site-header nav { display: none; }
  .hero { min-height: 760px; height: auto; align-items: flex-start; padding-top: 180px; }
  .hero-copy { max-width: 57%; }
  .hero-card { right: 5vw; width: 36vw; top: 26%; }
  .intro { grid-template-columns: 1fr 3fr; }
  .intro-note { grid-column: 2; max-width: 350px; }
  .stay-grid { grid-template-columns: repeat(2, 1fr); gap: 48px 18px; }
  .circle { grid-template-columns: .55fr 1fr; }
  .circle-copy { grid-column: 2; }
}

@media (max-width: 680px) {
  .site-header { height: 68px; padding: 0 18px; }
  .brand { font-size: 15px; }
  .brand svg { width: 23px; }
  .team-link { font-size: 9px; }
  .hero { min-height: 800px; padding: 130px 22px 40px; align-items: flex-start; }
  .hero-copy { max-width: none; }
  .hero h1 { font-size: clamp(59px, 18vw, 82px); max-width: 100%; }
  .hero-lede { max-width: 90%; font-size: 16px; }
  .hero-card { width: 54vw; height: 270px; aspect-ratio: auto; top: auto; right: 22px; bottom: 50px; padding: 20px; }
  .hero-card strong { font-size: 26px; }
  .hero-side { display: none; }
  .hero-actions { gap: 17px; }
  .button { min-height: 46px; padding: 0 18px; }
  .text-link { font-size: 11px; }
  .intro { padding: 88px 22px 100px; display: block; }
  .statement { font-size: 40px; }
  .intro-note { margin-top: 45px; }
  .stays { padding: 85px 18px 100px; }
  .section-heading { display: block; }
  .section-heading h2 { font-size: 43px; }
  .section-heading > p { margin-top: 20px; }
  .stay-grid { grid-template-columns: 1fr 1fr; gap: 38px 10px; }
  .stay-card h3 { font-size: 18px; }
  .stay-card > span { font-size: 10px; }
  .finder-wrap { grid-template-columns: 1fr; }
  .finder-copy, .stay-finder { padding: 78px 22px; }
  .stay-finder { border-left: 0; border-top: 1px solid rgba(255,255,255,.14); }
  .finder-result { grid-template-columns: 66px 1fr; gap: 4px 16px; }
  .result-symbol { width: 64px; height: 64px; font-size: 27px; }
  .finder-result h3 { font-size: 24px; }
  #stayNote { grid-column: 1/-1; }
  .circle { padding: 80px 22px; grid-template-columns: 1fr; }
  .circle-mark { width: 155px; }
  .circle-copy { grid-column: auto; }
  footer { grid-template-columns: 1fr; }
  footer > div { justify-self: start; }
  footer small { grid-column: 1; }
  #chatLaunch { right: 14px; bottom: 14px; }
  #chatPanel { right: 8px; bottom: 8px; width: calc(100vw - 16px); height: min(650px, calc(100vh - 16px)); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: .01ms !important; }
}
