html { scroll-behavior: smooth; scroll-padding-top: 100px; }
* { box-sizing: border-box; }
.skip-link { position: fixed; z-index: 100; top: 12px; left: 16px; padding: 12px 18px; background: var(--paper); color: var(--ink); transform: translateY(-180%); }
.skip-link:focus { transform: none; }
.topbar { position: absolute; align-items: center; gap: 24px; }
.topbar nav { align-items: center; flex-wrap: wrap; gap: 18px; }
.topbar a { min-height: 44px; display: inline-flex; align-items: center; font-size: 15px; }
.topbar .nav-beta { padding: 10px 17px; color: var(--paper); background: var(--forest); border: 1px solid var(--forest); border-radius: 3px 7px 4px 8px; }
.theme-toggle { min-height: 44px; min-width: 44px; font-size: 12px; letter-spacing: .06em; }
.hero { width: min(510px, calc(100vw - 112px)); bottom: 9vh; }
.hero h1 { font-size: clamp(38px, 4.1vw, 58px); line-height: 1.09; }
.hero__support { max-width: 40ch; }
.beta-eyebrow { color: var(--forest); font-size: 14px; letter-spacing: .09em; text-transform: uppercase; margin: 0 0 16px; }
.hero__actions { align-items: center; gap: 18px; }
.sign { min-height: 48px; font-size: 17px; }
.sign--primary { background: var(--forest); color: var(--paper); border-color: var(--forest); }
.hero .sign--secondary { background: none; border: 0; box-shadow: none; transform: none; padding: 10px 0; font-size: 16px; color: var(--ink); text-decoration: underline; text-underline-offset: 5px; }
.hero--stood-down { opacity: 0; visibility: hidden; }
.return-intro { position: absolute; z-index: 7; left: 40px; top: 100px; min-height: 44px; padding: 10px 15px; border: 1px solid var(--ink-soft); background: var(--paper); color: var(--ink); font: inherit; border-radius: 4px 7px 3px 6px; cursor: pointer; }
.panel__close { min-width: 44px; min-height: 44px; }
.panel { max-height: calc(100svh - 170px); overflow-y: auto; }
.panel .chips { margin-block: 16px; }
.studio__head { max-width: 690px; }
.studio__head h2 { max-width: 24ch; margin-inline: auto; }
.studio__note { font-size: 16px; }
.studio__sample { display: none; }
.demo-caption { font-size: 14px; line-height: 1.5; color: var(--ink-soft); margin: 0 0 20px; }
.feats__head .demo-caption { margin-top: 20px; }
.dial label, .dial__ends, .studio__hint, .matches__meta, .matches__score { font-size: 14px; letter-spacing: .02em; }
.dial input[type=range] { min-height: 44px; margin-top: 2px; }
.eyebrow, .feat__eg-label, .vibe__chip, .split__label, .split__opt, .split__learns, .memory__meta, .memory__sensory span { font-size: 14px; letter-spacing: .035em; }
.vibe__chip, .split__opt { min-height: 44px; }
.feat { padding-block: clamp(30px, 5vw, 58px); }
.feat__aside { position: static; }
.feat__body { min-width: 0; }
.feature-details { margin-top: 20px; }
.feature-details summary { cursor: pointer; min-height: 44px; padding: 12px 0; color: var(--forest); font-size: 16px; text-decoration: underline; text-underline-offset: 5px; }
.feature-details[open] summary { margin-bottom: 8px; }
.feature-details .feat__demo { margin-top: 20px; }
.feature-origin { margin: 22px 0 0; padding: 16px 20px; border-left: 2px solid var(--forest); background: var(--paper); }
.feature-origin .eyebrow { margin: 0 0 8px; }
.feature-origin p:last-child { margin: 0; max-width: 55ch; font-size: 17px; line-height: 1.5; font-style: italic; color: var(--ink-soft); }
.handoff { scroll-margin-top: 0; padding-bottom: 24px; }
.handoff__inner { max-width: 760px; }
.handoff h2 { text-wrap: balance; }
.handoff__support { max-width: 49ch; margin-inline: auto; }
.beta-form { max-width: 660px; margin: 30px auto 0; text-align: left; }
.beta-form label { display: block; font-size: 16px; margin-bottom: 8px; }
.beta-form__row { display: flex; gap: 10px; }
.beta-form input { min-width: 0; flex: 1; border: 1px solid var(--ink-soft); border-radius: 4px; padding: 14px 16px; background: var(--paper-warm); color: var(--ink); font: inherit; font-size: 18px; min-height: 54px; }
.beta-form .sign { white-space: nowrap; cursor: pointer; }
.beta-form button:disabled { opacity: .7; cursor: wait; }
.beta-note { font-size: 14px; line-height: 1.5; color: var(--ink-soft); margin: 12px 0 0; }
.beta-status { min-height: 24px; font-size: 18px; line-height: 1.5; }
.beta-status.success { border: 1px solid var(--forest); padding: 24px; background: var(--paper-warm); }
.beta-status.error { color: var(--ink); }
.back-to-top { display: inline-block; padding: 12px; font-size: 16px; color: var(--ink-soft); text-underline-offset: 4px; }
.beta-footer { max-width: 1180px; margin: 60px auto 0; padding-top: 24px; border-top: 1px solid var(--ink-soft); display: flex; justify-content: space-between; gap: 20px; color: var(--ink-soft); font-size: 16px; }
:focus-visible { outline: 3px solid var(--forest); outline-offset: 4px; }
@media (max-width: 819px) {
  .topbar { padding: 12px 20px; gap: 12px; align-items: flex-start; }
  .topbar nav { gap: 6px 12px; justify-content: flex-end; }
  .topbar .nav-secondary { display: none; }
  .topbar .nav-beta { font-size: 14px; padding: 10px 12px; }
  .wordmark { padding-top: 9px; }
  .hero { top: 100px; left: 20px; right: 20px; bottom: auto; width: auto; }
  .hero h1 { font-size: clamp(32px, 8vw, 42px); }
  .hero__support { max-width: 37ch; }
  .hero__actions { gap: 4px; }
  .hero__reassure { display: block; font-size: 14px; margin-top: 8px; }
  .beta-eyebrow { margin-bottom: 12px; }
  .return-intro { top: 76px; left: 20px; }
  .counter { top: 90px; }
  .panel { max-height: 65svh; padding-top: 26px; }
  .panel h2 { padding-right: 32px; }
  .beta-form__row { flex-direction: column; }
  .beta-form .sign { width: 100%; }
  .studio__stage { min-height: 260px; }
  .beta-footer { margin-top: 40px; align-items: baseline; }
}
@media (max-height: 680px) and (min-width: 820px) {
  .stage { min-height: 720px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero { transition: none; }
}

.topbar--solid { position: sticky; }
.studio__hint { max-width: calc(100% - 28px); font-size: 12px; line-height: 1.4; text-align: right; letter-spacing: .02em; pointer-events: none; }
.studio__stage canvas:focus-visible { outline-offset: -5px; }
.studio__sweetness { position: absolute; top: 14px; left: 14px; max-width: calc(100% - 28px); padding: 8px 12px; border: 1px solid color-mix(in srgb, var(--forest) 24%, transparent); border-radius: 4px 8px 5px 7px; background: color-mix(in srgb, var(--paper-warm) 92%, transparent); pointer-events: none; }
.studio__sweetness output { display: block; font-size: 16px; line-height: 1.4; color: var(--ink); }
.studio__sweetness span { display: block; font-size: 14px; line-height: 1.4; color: var(--ink-soft); }
/* Stationary atmosphere: the illustrated valley and controls stay crisp. */
:root {
  --atmosphere-cream: #faf2e3;
  --atmosphere-peach: 232, 173, 137;
  --atmosphere-sage: 155, 177, 132;
  --atmosphere-caramel: 196, 134, 73;
}
:root[data-theme=evening] {
  --atmosphere-cream: #fcece1;
  --atmosphere-peach: 226, 139, 119;
  --atmosphere-sage: 176, 153, 142;
  --atmosphere-caramel: 206, 123, 72;
}
:root[data-theme=dark] {
  --atmosphere-cream: #21222b;
  --atmosphere-peach: 107, 72, 67;
  --atmosphere-sage: 64, 83, 73;
  --atmosphere-caramel: 141, 96, 62;
}
.stage {
  background:
    radial-gradient(ellipse at 88% 14%, rgba(var(--atmosphere-peach), .48), rgba(var(--atmosphere-peach), 0) 58%),
    radial-gradient(ellipse at 12% 92%, rgba(var(--atmosphere-sage), .30), rgba(var(--atmosphere-sage), 0) 64%),
    linear-gradient(155deg, var(--atmosphere-cream), var(--paper) 78%);
}
.hero::before {
  right: -24px;
  background: radial-gradient(ellipse at 28% 50%, rgba(var(--scrim), .97), rgba(var(--scrim), .9) 40%, rgba(var(--scrim), .34) 70%, rgba(var(--scrim), 0) 100%);
  -webkit-mask-image: linear-gradient(to right, #000 0 68%, rgba(0,0,0,.82) 78%, transparent 100%);
  mask-image: linear-gradient(to right, #000 0 68%, rgba(0,0,0,.82) 78%, transparent 100%);
  clip-path: polygon(0 0, 100% 0, 100% 36%, 78% 62%, 61% 100%, 0 100%);
  pointer-events: none;
}
.stage > .trail-viewport .ferret { z-index: 6; }
.stage:not(.stage--tour) .facorn--read .facorn__label,
.stage:not(.stage--tour) .facorn--later .facorn__label { opacity: 0; transform: translateY(4px); }
.stage:not(.stage--tour) .facorn--read:hover .facorn__label,
.stage:not(.stage--tour) .facorn--read:focus-visible .facorn__label,
.stage:not(.stage--tour) .facorn--later:hover .facorn__label,
.stage:not(.stage--tour) .facorn--later:focus-visible .facorn__label { opacity: 1; transform: none; }
.studio {
  background: linear-gradient(180deg, var(--paper), var(--atmosphere-cream) 34%, var(--paper) 100%);
}
.studio__stage {
  background:
    radial-gradient(ellipse at 52% 53%, rgba(var(--atmosphere-caramel), .28), rgba(var(--atmosphere-caramel), .10) 34%, rgba(var(--atmosphere-caramel), 0) 67%),
    linear-gradient(150deg, var(--paper-warm), var(--atmosphere-cream));
}
.studio__hint { opacity: 1; }
.handoff {
  background:
    radial-gradient(ellipse at 96% 75%, rgba(var(--atmosphere-peach), .36), rgba(var(--atmosphere-peach), 0) 62%),
    radial-gradient(ellipse at 0% 95%, rgba(var(--atmosphere-sage), .26), rgba(var(--atmosphere-sage), 0) 60%),
    linear-gradient(180deg, var(--paper-warm), var(--atmosphere-cream));
}
.waitlist-ferret { display: block; margin: 0 0 20px; overflow: visible; }
:root[data-theme=dark] .waitlist-ferret { filter: brightness(1.2); }
@media (max-width: 819px) {
  .stage {
    background:
      radial-gradient(ellipse at 100% 49%, rgba(var(--atmosphere-peach), .40), rgba(var(--atmosphere-peach), 0) 62%),
      radial-gradient(ellipse at 0% 95%, rgba(var(--atmosphere-sage), .28), rgba(var(--atmosphere-sage), 0) 60%),
      linear-gradient(180deg, var(--atmosphere-cream), var(--paper));
  }
}
@media (max-width: 620px) { .topbar--solid { flex-wrap: wrap; } .topbar--solid .topbar__right { width: 100%; flex-wrap: wrap; gap: 8px; } .topbar--solid nav { justify-content: flex-start; gap: 10px; } .travel__mode, .travel__slider input { min-height: 44px; } }

/* One demo, two views: the existing travel city takes the cheesecake's place. */
#dish { scroll-margin-top: 20px; }
.craving-find { width: 100%; min-height: 48px; margin-top: 22px; cursor: pointer; }
.travel--embedded { max-width: 1180px; grid-template-columns: minmax(0,1.05fr) minmax(320px,.95fr); gap: clamp(26px,4vw,58px); }
.travel--embedded .travel__stage { aspect-ratio: 1.16; min-height: 300px; }
.travel__stage canvas { touch-action: none; cursor: grab; }
.travel__stage canvas:active { cursor: grabbing; }
.travel__stage canvas:focus-visible { outline: 2px solid var(--forest); outline-offset: -4px; }
.travel--embedded .travel__stage canvas { pointer-events: auto; }
.travel--embedded .pin { pointer-events: none; cursor: default; }
.travel--embedded .pin__cap { display: none; }
.travel--embedded .pin.is-sel .pin__cap, .travel--embedded .pin--home .pin__cap { display: block; max-width: 190px; white-space: normal; text-align: center; }
.travel--embedded .pin.is-sel .pin__dot { width: 15px; height: 15px; box-shadow: 0 0 0 5px color-mix(in srgb,var(--earth) 18%,transparent); }
.travel--embedded .travel__panel { border: 0; background: transparent; padding: 0; min-width: 0; }
.travel--embedded .travel__hud { max-width: calc(100% - 32px); padding: 10px 13px; pointer-events: none; }
.travel--embedded .travel__count { font-size: 16px; }
.travel--embedded .travel__count b { font-size: 21px; }
.travel--embedded .travel__legend { margin-top: 7px; }
.travel--embedded .travel__fallback { inset: 20px 20px auto; }
.craving-recap { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; font-size: 14px; color: var(--ink-soft); }
.return-craving { display: inline-flex; align-items: center; min-height: 44px; padding: 9px 14px; border: 1.5px solid var(--forest); border-radius: 3px 7px 4px 6px; background: var(--paper); color: var(--forest); font: inherit; font-size: 15px; cursor: pointer; box-shadow: 0 2px 0 color-mix(in srgb,var(--ink) 12%,transparent); transition: transform .16s ease,box-shadow .16s ease,background .16s ease; }
.return-craving:hover { background: var(--paper-warm); transform: translateY(-1px); box-shadow: 0 3px 0 color-mix(in srgb,var(--ink) 16%,transparent); }
.return-craving:active { transform: none; box-shadow: none; }
.travel-question { font-size: clamp(25px,3vw,36px); font-weight: 400; line-height: 1.13; margin: 18px 0 24px; text-wrap: balance; }
.travel-question:focus { outline: none; }
.travel-budget { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.travel-budget output { font-size: 24px; font-variant-numeric: tabular-nums; }
.travel-budget select { min-height: 44px; padding: 8px 30px 8px 12px; font: inherit; font-size: 16px; color: var(--ink); background: var(--paper-warm); border: 1px solid color-mix(in srgb,var(--ink) 25%,transparent); border-radius: 20px; cursor: pointer; }
.craving-time { display: block; width: 100%; height: 44px; margin: 10px 0 0; accent-color: var(--earth); cursor: pointer; }
.travel-shortcuts { display: flex; justify-content: space-between; margin: -4px -8px 8px; }
.travel-shortcuts button { min-width: 52px; min-height: 44px; padding: 8px; font: inherit; color: var(--ink-soft); background: none; border: 0; cursor: pointer; }
.craving-result { position: relative; min-height: 185px; padding: 22px 76px 18px 0; border-top: 1px solid color-mix(in srgb,var(--ink) 20%,transparent); }
.craving-result h4 { margin: 7px 0; font-size: 25px; font-weight: 400; }
.craving-result p { margin: 9px 0; line-height: 1.45; }
.craving-result .eyebrow { font-size: 10px; }
.craving-result__meta { font-size: 14px; color: var(--forest); }
.craving-scout { position: absolute; right: 0; top: 35px; overflow: visible; animation: scout-arrives .5s ease-out both; }
@keyframes scout-arrives { from { transform: translateX(-12px) rotate(-4deg); opacity: 0; } to { transform: none; opacity: 1; } }
.travel-loading { max-width: 1180px; min-height: 350px; margin: auto; text-align: center; padding-top: 70px; }
.travel--embedded :is(button,select,input):focus-visible { outline: 2px solid var(--forest); outline-offset: 4px; }
@media (max-width: 900px) {
 .travel--embedded { grid-template-columns: minmax(0,1fr); gap: 16px; }
 .travel--embedded .travel__stage { aspect-ratio: 1.4; min-height: 250px; max-height: 340px; }
 .travel-question { margin: 8px 0 16px; }
 .craving-result { min-height: 160px; }
}
@media (prefers-reduced-motion: reduce) { .craving-scout { animation: none; } }
.travel-budget .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.travel--embedded .travel__stage { animation: travel-reveal .45s ease-out both; }
@keyframes travel-reveal { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .travel--embedded .travel__stage { animation: none; } }

/* Added by scripts/import-site.mjs: phone layer. */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
/* site.css set none, so a thumb landing on the map could not scroll the page.
   pan-y hands vertical swipes to the page; sideways drag still orbits and a
   pinch still reaches the scene's two-pointer zoom. Touch has no scroll wheel. */
@media (pointer: coarse) {
  .travel__stage canvas { touch-action: pan-y; }
  .travel__hint { font-size: 0; }
  .travel__hint::after { content: "Drag sideways to orbit · pinch to zoom"; font-size: 12px; }
  .sign:hover { transform: none; box-shadow: 1px 2px #5a4c3729; }
  .sign--primary:hover { background: var(--forest); transform: rotate(.4deg); box-shadow: 1px 2px #2e3c2e4d; }
  /* The track is a 5px pseudo-element; the input around it is what a thumb has to hit. */
  .dial input[type=range], .travel__slider input[type=range] { min-height: 44px; }
}
@media (max-width: 819px) {
  /* /travel: one row that scrolls away, not a 169px sticky block over the controls.
     The wordmark already goes home, so "Back to the valley" is dropped here. */
  .topbar--solid { position: relative; flex-wrap: nowrap; align-items: center; gap: 8px; padding: 6px 12px; }
  .topbar--solid .topbar__right { display: flex; flex-direction: row; align-items: center; width: auto; flex-wrap: nowrap; gap: 4px; margin-left: auto; }
  .topbar--solid nav { flex-wrap: nowrap; gap: 0 12px; }
  .topbar--solid nav a[href="./index.html"] { display: none; }
  .topbar--solid .wordmark { padding-top: 0; }
  .wordmark { display: inline-flex; align-items: center; min-width: 44px; min-height: 44px; }
  .theme-toggle { justify-content: center; }
  /* Touch targets: 44px tall without moving the underline off the words. */
  .scroll-cue, .back-to-top { display: inline-flex; align-items: center; min-height: 44px; }
  .linky { display: inline-block; padding: 13px 0; border-bottom: 0; text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--ink) 34%, transparent); text-underline-offset: 4px; }
  .trail-back { min-width: 44px; padding: 10px 8px; }
  /* Nothing under 12px. */
  .dial__ends span, .studio__sample, .vibe__legend em, .memory__again,
  .pin__cap, .pin__cap b, .travel__legend-k span, .travel__mode small,
  .travel__ticks span, .travel__card-meta span { font-size: 12px; }
  .vibe__axis-label { font-size: 13px; }
  /* The waitlist card: less dead space between the form and its alternatives. */
  #waitlist.handoff { padding-top: 44px; }
  #waitlist .beta-section__alternatives { margin-top: 4px; }
}
/* The home pin's caption sat under the map's HUD on narrow screens. */
@media (max-width: 640px) { .pin--home:not(.is-sel) .pin__cap { display: none; } }
/* Landscape phones: the stage was one 390px screen and cut the hero off; pin captions collided. */
@media (max-height: 500px) and (orientation: landscape) {
  .stage { height: auto; min-height: 640px; }
  .pin:not(.is-sel) .pin__cap { display: none; }
}
