/* Caldera — one place, one day. Flat page at golden hour by default; html.motion lets scroll move the sun.
   Everything that changes with the hour reads a custom property set on <html>: --sun (0→1 = 06:00→23:00),
   --warmth, --lamps, --dark, the sky colours, the sun/moon position and the shadow offset. */

@font-face { font-family: "Cormorant Garamond"; font-weight: 300 500; font-style: normal; font-display: swap; src: url("fonts/cormorant.woff2") format("woff2"); }
@font-face { font-family: "Cormorant Garamond"; font-weight: 300 400; font-style: italic; font-display: swap; src: url("fonts/cormorant-italic.woff2") format("woff2"); }
@font-face { font-family: "Inter Tight"; font-weight: 300 700; font-style: normal; font-display: swap; src: url("fonts/inter-tight.woff2") format("woff2"); }

:root {
  /* golden hour, 17:30: the flat page and the first frame */
  --sun: 0.676;
  --warmth: 0.5;
  --lamps: 0.2;
  --dark: 0.1;
  --sky-a: #7b6fa8;
  --sky-b: #e9a46a;
  --sky-c: #f6c58c;
  --ink: #16213b;
  --ink-soft: rgba(22, 33, 59, 0.8);
  --paper: rgba(233, 220, 195, 0.9);
  --frame: #e9dcc3;
  --sun-x: 86%;
  --sun-y: 70%;
  --sun-o: 1;
  --sun-tint: #ffb46a;
  --moon-x: 50%;
  --moon-y: 30%;
  --moon-o: 0;
  --sdx: -18px;
  --sdy: 22px;
  --sand: #e9dcc3;
  --sea: #2f6f6a;
  --night: #0b1630;
  --display: "Cormorant Garamond", "Times New Roman", Georgia, serif;
  --body: "Inter Tight", system-ui, -apple-system, sans-serif;
  --pad: clamp(18px, 5vw, 64px);
}

* { box-sizing: border-box; }
html { background: var(--sky-b); color: var(--ink); font-family: var(--body); font-weight: 400; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%; }
body { margin: 0; min-height: 100vh; }
a { color: inherit; }
:focus-visible { outline: 2px solid var(--ink); outline-offset: 4px; }
.skip { position: fixed; top: 12px; left: 12px; z-index: 30; padding: 8px 12px; background: var(--night); color: var(--sand); font-size: 13px; text-decoration: none; transform: translateY(-200%); }
.skip:focus-visible { transform: none; }

/* ---------- the sky ---------- */
.ground, .sky { position: fixed; inset: 0; z-index: 0; overflow: hidden; background: linear-gradient(180deg, var(--sky-a) 0%, var(--sky-b) 62%, var(--sky-c) 100%); }
.sky { pointer-events: none; }
.sun {
  position: absolute; left: var(--sun-x); top: var(--sun-y); width: 11vmin; height: 11vmin; margin: -5.5vmin 0 0 -5.5vmin; border-radius: 50%;
  background: radial-gradient(circle, #fff7e4 0 34%, var(--sun-tint) 36% 52%, transparent 54%);
  box-shadow: 0 0 10vmin 4vmin color-mix(in srgb, var(--sun-tint) 45%, transparent);
  opacity: var(--sun-o);
}
.moon {
  position: absolute; left: var(--moon-x); top: var(--moon-y); width: 6vmin; height: 6vmin; margin: -3vmin 0 0 -3vmin; border-radius: 50%;
  background: radial-gradient(circle at 40% 40%, #fff9ea 0 55%, #e6dcc6 56% 100%);
  box-shadow: 0 0 6vmin 2vmin rgba(240, 236, 220, 0.25);
  opacity: var(--moon-o);
}
.stars {
  position: absolute; inset: 0; opacity: var(--moon-o);
  background-image:
    radial-gradient(1.5px 1.5px at 12% 18%, #fff 50%, transparent 52%),
    radial-gradient(1px 1px at 28% 9%, #fff 50%, transparent 52%),
    radial-gradient(1.5px 1.5px at 41% 24%, #fff 50%, transparent 52%),
    radial-gradient(1px 1px at 57% 12%, #fff 50%, transparent 52%),
    radial-gradient(1.5px 1.5px at 73% 20%, #fff 50%, transparent 52%),
    radial-gradient(1px 1px at 88% 8%, #fff 50%, transparent 52%),
    radial-gradient(1px 1px at 21% 34%, #fff 50%, transparent 52%),
    radial-gradient(1.5px 1.5px at 66% 31%, #fff 50%, transparent 52%),
    radial-gradient(1px 1px at 93% 27%, #fff 50%, transparent 52%),
    radial-gradient(1px 1px at 8% 44%, #fff 50%, transparent 52%);
  animation: twinkle 5s ease-in-out infinite;
}
@keyframes twinkle { 0%, 100% { opacity: var(--moon-o); } 50% { opacity: calc(var(--moon-o) * 0.5); } }
/* lamps on the paths: three warm pools of light low in the frame, opacity = --lamps */
.lampglow {
  position: absolute; inset: 0; opacity: var(--lamps); mix-blend-mode: screen;
  background:
    radial-gradient(28vmin 18vmin at 12% 96%, rgba(255, 176, 92, 0.55), transparent 70%),
    radial-gradient(22vmin 14vmin at 48% 100%, rgba(255, 160, 80, 0.4), transparent 70%),
    radial-gradient(30vmin 18vmin at 90% 94%, rgba(255, 176, 92, 0.5), transparent 70%);
}

/* ---------- header, clock ---------- */
.top { position: fixed; top: 0; left: 0; right: 0; z-index: 20; display: flex; align-items: center; justify-content: space-between; padding: 18px var(--pad); pointer-events: none; }
.top > * { pointer-events: auto; }
.wordmark { font-family: var(--display); font-weight: 500; font-size: clamp(26px, 3vw, 36px); letter-spacing: 0.08em; text-transform: uppercase; text-decoration: none; }
.clock { display: flex; align-items: center; gap: 10px; font-variant-numeric: tabular-nums; font-size: 15px; letter-spacing: 0.06em; }
.clock__face { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; }
.clock__hand { transform-origin: 16px 16px; animation: hand 60s linear infinite; }
@keyframes hand { to { transform: rotate(360deg); } }

/* ---------- the arch (the film) ---------- */
.film { position: relative; z-index: 1; margin: 0; padding: 0; }
.film__frame {
  position: relative; overflow: hidden; background: var(--night);
  border: 10px solid var(--frame); border-radius: 50% 50% 0 0 / 28% 28% 0 0;
  box-shadow: var(--sdx) var(--sdy) 40px rgba(11, 22, 48, 0.28);
  aspect-ratio: 9 / 15;
}
.clip { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 0.9s ease; }
.clip.is-on { opacity: 1; }
.film__warm { position: absolute; inset: 0; background: linear-gradient(180deg, #ffc27a, #ff8a4a); mix-blend-mode: soft-light; opacity: var(--warmth); pointer-events: none; }
.film__dark { position: absolute; inset: 0; background: linear-gradient(180deg, #0b1630, #2a1f3a); mix-blend-mode: multiply; opacity: var(--dark); pointer-events: none; }
.sconce {
  position: absolute; bottom: 14%; width: 26%; height: 30%; border-radius: 50%; pointer-events: none; opacity: var(--lamps); mix-blend-mode: screen;
  background: radial-gradient(closest-side, rgba(255, 190, 110, 0.9), rgba(255, 170, 90, 0.25) 55%, transparent);
}
.sconce--l { left: -8%; }
.sconce--r { right: -8%; }
.film__cap { margin: 14px 0 0; font-family: var(--display); font-style: italic; font-weight: 400; font-size: clamp(20px, 2.1vw, 26px); line-height: 1.3; color: var(--ink); }

/* ---------- the day (flat layout) ---------- */
.day { position: relative; z-index: 1; }
.hour { padding: 0 var(--pad); }
.hour__inner { max-width: 640px; margin: 0 auto; padding: 12vh 0 6vh; }
.hour__when { margin: 0 0 14px; font-size: 13px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.display { margin: 0; font-family: var(--display); font-weight: 400; font-size: clamp(34px, 5.2vw, 64px); line-height: 1.04; letter-spacing: -0.012em; text-wrap: balance; }
h1.display { font-size: clamp(38px, 6vw, 76px); }
.lead { margin: 22px 0 0; max-width: 46ch; font-size: clamp(16px, 1.3vw, 19px); line-height: 1.55; color: var(--ink); }
.note { margin: 18px 0 0; font-size: 13px; line-height: 1.5; color: var(--ink-soft); }
.still { display: block; width: min(100%, 320px); height: auto; margin: 32px 0 0; border: 8px solid var(--frame); border-radius: 50% 50% 0 0 / 22% 22% 0 0; box-shadow: var(--sdx) var(--sdy) 40px rgba(11, 22, 48, 0.25); }

.rooms { list-style: none; margin: 28px 0 0; padding: 0; display: grid; gap: 12px; }
.room {
  padding: 18px 20px; background: var(--paper); border-radius: 4px;
  box-shadow: var(--sdx) var(--sdy) 30px rgba(11, 22, 48, 0.18);
}
.room h3 { margin: 0; font-family: var(--display); font-weight: 500; font-size: 26px; line-height: 1.1; }
.room p { margin: 6px 0 0; font-size: 15px; line-height: 1.5; color: var(--ink-soft); }
.room__rate { font-variant-numeric: tabular-nums; }
.room__rate b { font-weight: 600; color: var(--ink); }

.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 22px; margin: 28px 0 0; }
.btn {
  display: inline-flex; align-items: baseline; gap: 10px; padding: 14px 22px; background: var(--ink); color: var(--sky-c); text-decoration: none;
  font-family: var(--display); font-weight: 500; font-size: 22px; letter-spacing: 0.02em; border-radius: 999px;
  box-shadow: var(--sdx) var(--sdy) 30px rgba(11, 22, 48, 0.25);
}
.btn small { font-family: var(--body); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; opacity: 0.7; }
.btn:hover, .btn:focus-visible { background: var(--sea); color: #fff; }
.link { font-size: 16px; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.link:hover { color: var(--sea); }

.foot { margin-top: 48px; font-size: 13px; color: var(--ink-soft); }
.foot p { margin: 0; }
.foot a { color: var(--ink); }

/* flat layout: the arch sits under the header, the sections follow */
.film { max-width: 420px; margin: 0 auto; padding: 96px var(--pad) 0; }
@media (min-width: 900px) {
  .film { max-width: 1120px; display: grid; grid-template-columns: 1fr 1fr; align-items: end; gap: 48px; }
  .film__frame { max-width: 440px; }
  .film__cap { padding-bottom: 8px; }
}

/* ---------- motion: scroll moves the sun ---------- */
html.motion { background: var(--night); }
html.motion .still { display: none; }
/* phone: the sky is drawn twice. The lower copy is the page background; the upper copy sits above the text,
   clipped to the arch band, so outgoing sections vanish behind the sky instead of crossing the footage. */
html.motion .sky { z-index: 2; clip-path: inset(0 0 calc(50vh - 140px) 0); }
html.motion .film {
  position: fixed; z-index: 3; margin: 0; padding: 0; max-width: none; display: block;
  left: var(--pad); right: var(--pad); top: 76px; height: 50vh; pointer-events: none;
}
html.motion .film__frame { height: 100%; aspect-ratio: auto; max-width: none; width: min(100%, 50vh * 9 / 14); margin: 0 auto; }
html.motion .film__cap { position: absolute; left: 0; right: 0; top: calc(100% + 10px); text-align: center; font-size: clamp(16px, 2vw, 22px); margin: 0; }
html.motion .day { padding-top: calc(50vh + 76px + 72px); }
html.motion .hour { min-height: var(--h, 90vh); padding: 0 var(--pad) 14vh; }
html.motion .hour__inner { padding: 0; }
/* the last screen: the arch shrinks (html.late) so the booking block has the room it needs */
html.motion .hour--book { min-height: 100vh; padding-top: calc(30vh + 76px + 72px); padding-bottom: 0; }
html.motion .hour--book .hour__inner { min-height: calc(100vh - (30vh + 76px + 72px)); display: flex; flex-direction: column; padding-bottom: 24px; }
html.motion .foot { margin-top: auto; padding-top: 32px; }
html.motion.late .film { height: 30vh; }
html.motion.late .film__frame { width: min(100%, 30vh * 9 / 14); }
html.motion.late .sky { clip-path: inset(0 0 calc(70vh - 140px) 0); }
html.motion .film, html.motion .film__frame { transition: height 0.7s ease, width 0.7s ease; }
html.motion .sky { transition: clip-path 0.7s ease; }
html.motion .display { font-size: clamp(28px, 4.2vw, 56px); }
html.motion h1.display { font-size: clamp(30px, 4.8vw, 64px); }
html.motion .lead { font-size: clamp(15px, 1.2vw, 18px); margin-top: 14px; }
html.motion .rooms { margin-top: 16px; gap: 8px; }
html.motion .room { padding: 12px 16px; }
html.motion .room h3 { font-size: 22px; }
html.motion .room p { font-size: 14px; margin-top: 3px; }

@media (min-width: 900px) {
  /* desktop: the arch on the right, the day on the left, both in view all the time */
  html.motion .sky { z-index: 0; clip-path: none; }
  html.motion .film { left: auto; right: var(--pad); top: 0; height: 100vh; width: 44vw; display: grid; align-content: center; }
  html.motion .film__frame { height: 78vh; width: auto; aspect-ratio: 9 / 14; max-width: 100%; margin: 0 auto; }
  html.motion .film__cap { position: static; margin: 16px 0 0; text-align: center; }
  html.motion .day { padding-top: 0; width: 50vw; }
  html.motion .hour { min-height: var(--h, 160vh); }
  html.motion .hour--book { padding-top: 0; }
  html.motion .hour__inner { position: sticky; top: 0; min-height: 100vh; display: flex; flex-direction: column; justify-content: center; max-width: 560px; margin: 0 0 0 auto; padding: 0 24px 0 0; }
  html.motion .hour--book .hour__inner { min-height: 100vh; padding-bottom: 28px; }
  html.motion .hour--book .hour__inner > :first-child { margin-top: auto; }
  html.motion .display { font-size: clamp(34px, 3.6vw, 60px); }
  html.motion h1.display { font-size: clamp(38px, 4.2vw, 68px); }
}

@media (max-width: 899px) and (max-height: 700px) {
  html.motion .sky { clip-path: inset(0 0 calc(58vh - 132px) 0); }
  html.motion .film { height: 42vh; }
  html.motion .film__frame { width: min(100%, 42vh * 9 / 14); }
  html.motion .day { padding-top: calc(42vh + 76px + 64px); }

}

/* phone: the sky's lamps sit lower, the sun arc is a little tighter */
@media (max-width: 899px) {
  .top { padding: 14px var(--pad); }
  .wordmark { font-size: 24px; }
  .clock { font-size: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .clock__hand, .stars { animation: none; }
  .clip { transition: none; }
}
