/* Octans: granite, ember and one night */
@font-face { font-family: "Wittgenstein"; src: url("/assets/fonts/specimen/wittgenstein-var.woff2") format("woff2"); font-weight: 400 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Wittgenstein"; src: url("/assets/fonts/specimen/wittgenstein-var-italic.woff2") format("woff2"); font-weight: 400 900; font-style: italic; font-display: swap; }
@font-face { font-family: "Scoutie Sans"; src: url("/assets/fonts/specimen/scoutie-sans-var.woff2") format("woff2"); font-weight: 200 800; font-style: normal; font-display: swap; }

body.spec-octans { margin: 0; background: #D3D0C8; }
.spec-octans {
  --oc-granite: #D3D0C8; --oc-ink: #16171B; --oc-ink-2: #45464B;
  --oc-ember: #F2870D; --oc-night: #0E1522; --oc-land: #070A11;
  --oc-steel: #8E9196; --oc-steel-hi: #E4E4E0; --oc-steel-lo: #4E5157;
  --oc-serif: "Wittgenstein", "Iowan Old Style", Georgia, serif;
  --oc-sans: "Scoutie Sans", "Segoe UI", system-ui, sans-serif;
  --oc-m: clamp(16px, 4vw, 64px);
  --oc-gut: clamp(12px, 1.6vw, 24px);
  --oc-nav-h: 52px;
  --oc-top: calc(var(--bar-h, 40px) + var(--oc-nav-h));
  --oc-stage-h: max(440px, calc(100svh - var(--oc-top)));
  --oc-ease: cubic-bezier(.2, .7, .1, 1);
  --oc-rule: 1.5px;
}
@media (max-resolution: 1.49dppx) { .spec-octans { --oc-rule: 2px; } }

.oc-page {
  position: relative; isolation: isolate; color: var(--oc-ink); background: var(--oc-granite);
  font: 400 clamp(1rem, .96rem + .2vw, 1.125rem)/1.6 var(--oc-sans); letter-spacing: .003em;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
.oc-page::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: .32;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='280' height='280'%3E%3Cg fill='%233A3936'%3E%3Ccircle cx='116.1' cy='86.4' r='0.7'/%3E%3Ccircle cx='235.4' cy='45.6' r='0.8'/%3E%3Ccircle cx='40.6' cy='217.6' r='0.5'/%3E%3Ccircle cx='120.6' cy='254.3' r='0.6'/%3E%3Ccircle cx='239.7' cy='253.4' r='0.6'/%3E%3Ccircle cx='202.3' cy='225.5' r='0.7'/%3E%3Ccircle cx='205' cy='279.3' r='0.8'/%3E%3Ccircle cx='216.7' cy='194.9' r='0.5'/%3E%3Ccircle cx='270.1' cy='76.3' r='0.4'/%3E%3Ccircle cx='2.3' cy='124.6' r='0.4'/%3E%3Ccircle cx='58.8' cy='113.4' r='0.4'/%3E%3Ccircle cx='251.1' cy='123.9' r='0.3'/%3E%3Ccircle cx='197.6' cy='178.5' r='0.4'/%3E%3Ccircle cx='23.2' cy='87.1' r='0.4'/%3E%3Ccircle cx='161.7' cy='57.4' r='0.4'/%3E%3Ccircle cx='21.2' cy='220.5' r='0.7'/%3E%3Ccircle cx='165.5' cy='68.7' r='0.4'/%3E%3Ccircle cx='85.6' cy='240.6' r='0.4'/%3E%3Ccircle cx='48.5' cy='38.4' r='0.7'/%3E%3Ccircle cx='71.8' cy='5.1' r='0.8'/%3E%3Ccircle cx='6.9' cy='15.7' r='0.7'/%3E%3Ccircle cx='228' cy='13.3' r='0.5'/%3E%3Ccircle cx='81.6' cy='136.3' r='0.7'/%3E%3Ccircle cx='143.1' cy='218.7' r='0.3'/%3E%3Ccircle cx='198.8' cy='243.1' r='0.5'/%3E%3Ccircle cx='131.1' cy='164.9' r='0.7'/%3E%3Ccircle cx='178.1' cy='201.9' r='0.4'/%3E%3Ccircle cx='157' cy='158.2' r='0.8'/%3E%3Ccircle cx='239.9' cy='103.9' r='0.5'/%3E%3Ccircle cx='14.3' cy='262.3' r='0.5'/%3E%3Ccircle cx='8.8' cy='73' r='0.6'/%3E%3Ccircle cx='47.6' cy='167' r='0.5'/%3E%3Ccircle cx='0.9' cy='157.3' r='0.4'/%3E%3Ccircle cx='222.1' cy='268.3' r='0.7'/%3E%3Ccircle cx='201.9' cy='159.4' r='0.8'/%3E%3Ccircle cx='205.2' cy='108.9' r='0.7'/%3E%3Ccircle cx='145' cy='62.4' r='0.3'/%3E%3Ccircle cx='51.7' cy='114' r='0.6'/%3E%3Ccircle cx='201.2' cy='160.7' r='0.6'/%3E%3Ccircle cx='243' cy='115.3' r='0.3'/%3E%3Ccircle cx='46.9' cy='84' r='0.3'/%3E%3Ccircle cx='161.6' cy='26.7' r='0.7'/%3E%3Ccircle cx='53.6' cy='6.2' r='0.3'/%3E%3Ccircle cx='149.3' cy='30.5' r='0.7'/%3E%3Ccircle cx='88.3' cy='183.2' r='0.5'/%3E%3Ccircle cx='22' cy='182.4' r='0.7'/%3E%3Ccircle cx='185.5' cy='55.7' r='0.5'/%3E%3Ccircle cx='72.7' cy='134.5' r='0.5'/%3E%3Ccircle cx='96.6' cy='164.9' r='0.6'/%3E%3Ccircle cx='145.1' cy='15.7' r='0.6'/%3E%3Ccircle cx='18.5' cy='78.2' r='0.5'/%3E%3Ccircle cx='173.6' cy='265.5' r='0.4'/%3E%3Ccircle cx='181.7' cy='242.6' r='0.6'/%3E%3Ccircle cx='85.7' cy='141.7' r='0.4'/%3E%3Ccircle cx='231.5' cy='40.4' r='0.6'/%3E%3Ccircle cx='185.8' cy='195.4' r='0.8'/%3E%3Ccircle cx='157.1' cy='241.8' r='0.8'/%3E%3Ccircle cx='138.4' cy='204.1' r='0.4'/%3E%3Ccircle cx='38.9' cy='234.2' r='0.7'/%3E%3Ccircle cx='203' cy='0.1' r='0.6'/%3E%3Ccircle cx='50' cy='117' r='0.7'/%3E%3Ccircle cx='77.8' cy='221' r='0.6'/%3E%3Ccircle cx='23.6' cy='1.1' r='0.6'/%3E%3Ccircle cx='166.2' cy='9.7' r='0.5'/%3E%3Ccircle cx='217' cy='27.5' r='0.4'/%3E%3Ccircle cx='84.2' cy='144.1' r='0.6'/%3E%3Ccircle cx='112.3' cy='228.3' r='0.7'/%3E%3Ccircle cx='16.4' cy='125.3' r='0.7'/%3E%3Ccircle cx='21.7' cy='36.3' r='0.5'/%3E%3Ccircle cx='93.5' cy='74' r='0.7'/%3E%3C/g%3E%3Cg fill='%23D9C6BB'%3E%3Ccircle cx='277' cy='265.1' r='1'/%3E%3Ccircle cx='18.8' cy='91.5' r='1.1'/%3E%3Ccircle cx='101.5' cy='125.7' r='0.7'/%3E%3Ccircle cx='7.5' cy='62.1' r='0.9'/%3E%3Ccircle cx='156.8' cy='14.7' r='1.1'/%3E%3Ccircle cx='264' cy='165.8' r='0.7'/%3E%3Ccircle cx='63.1' cy='210.7' r='1'/%3E%3Ccircle cx='125' cy='117' r='0.9'/%3E%3Ccircle cx='125.2' cy='34.8' r='1.1'/%3E%3Ccircle cx='108.6' cy='62.5' r='1.1'/%3E%3Ccircle cx='143.4' cy='237.5' r='1'/%3E%3Ccircle cx='36.4' cy='27.3' r='0.6'/%3E%3Ccircle cx='122.4' cy='209.7' r='1.1'/%3E%3Ccircle cx='192.3' cy='135' r='0.6'/%3E%3Ccircle cx='253.3' cy='214.7' r='1'/%3E%3Ccircle cx='128.4' cy='134.8' r='1.2'/%3E%3Ccircle cx='112.9' cy='257.3' r='0.8'/%3E%3Ccircle cx='140.4' cy='40.6' r='0.7'/%3E%3Ccircle cx='90.8' cy='120.4' r='0.7'/%3E%3Ccircle cx='51.9' cy='239.4' r='1'/%3E%3Ccircle cx='255.2' cy='275.7' r='0.9'/%3E%3Ccircle cx='48.1' cy='260' r='1'/%3E%3Ccircle cx='238.4' cy='187.3' r='0.5'/%3E%3Ccircle cx='258.7' cy='49.2' r='1'/%3E%3Ccircle cx='257' cy='23.4' r='0.5'/%3E%3Ccircle cx='241.1' cy='2.7' r='0.5'/%3E%3Ccircle cx='192.2' cy='265.3' r='1'/%3E%3Ccircle cx='166.2' cy='136.2' r='0.7'/%3E%3Ccircle cx='122.1' cy='193.5' r='1'/%3E%3Ccircle cx='273.8' cy='118.3' r='0.7'/%3E%3Ccircle cx='170.3' cy='38.6' r='0.8'/%3E%3Ccircle cx='23.6' cy='31.2' r='1.1'/%3E%3Ccircle cx='26.5' cy='158.6' r='0.9'/%3E%3Ccircle cx='13.6' cy='19.3' r='1.2'/%3E%3Ccircle cx='86.4' cy='156.7' r='0.7'/%3E%3Ccircle cx='260.8' cy='110.5' r='0.9'/%3E%3Ccircle cx='189.4' cy='173' r='1.2'/%3E%3Ccircle cx='165.3' cy='12.4' r='0.9'/%3E%3Ccircle cx='10.6' cy='147.2' r='0.9'/%3E%3Ccircle cx='128.3' cy='118.8' r='1.1'/%3E%3C/g%3E%3C/svg%3E");
  background-size: 280px 280px;
}
.oc-page a { color: var(--oc-ink); text-decoration-thickness: 1px; text-underline-offset: .18em; }
.oc-page :focus-visible { outline: 2px solid var(--oc-ink); outline-offset: 3px; }
:where(.oc-page) :where(p, ul, ol, h1, h2, figure) { margin: 0; }
:where(.oc-page) :where(ul, ol) { padding: 0; list-style: none; }

.oc-lift { position: relative; }
.oc-lift-mark { position: absolute; left: 0; top: 0; width: 1px; height: 1px; pointer-events: none; }

/* ---------- nav ---------- */
.oc-nav {
  position: sticky; top: var(--bar-h, 40px); z-index: 800; height: var(--oc-nav-h); box-sizing: border-box;
  display: flex; align-items: center; gap: clamp(12px, 2.4vw, 40px); padding: 0 var(--oc-m);
  background: var(--oc-granite);
}
.oc-brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; margin-right: auto; }
.oc-mark { width: 28px; height: 28px; flex: none; fill: var(--oc-ink); }
.oc-mark .oc-mk-trail { fill: none; stroke: var(--oc-ink); stroke-width: 2.4; stroke-linecap: round; }
.oc-mark .oc-mk-door { fill: var(--oc-granite); }
.oc-brand-name { font: 760 1.3125rem/1 var(--oc-serif); letter-spacing: -.01em; }
.oc-links { display: flex; gap: clamp(16px, 2.2vw, 36px); }
.oc-links a, .oc-menu a { font: 500 .9375rem/1 var(--oc-sans); text-decoration: none; padding: 8px 0; }
.oc-links a:hover { text-decoration: underline; }
.oc-cta, .oc-btn {
  display: inline-flex; align-items: center; min-height: 36px; box-sizing: border-box; padding: 0 16px;
  border: 1.5px solid var(--oc-ink); border-radius: 0; background: transparent; color: var(--oc-ink);
  font: 600 .9375rem/1 var(--oc-sans); text-decoration: none; cursor: pointer;
  transition: background-color .35s var(--oc-ease), color .35s var(--oc-ease);
}
.oc-page .oc-cta { text-decoration: none; }
.oc-cta:hover, .oc-btn:hover { background: var(--oc-ink); color: var(--oc-granite); }
.oc-cta-short { display: none; }
.oc-menu-btn {
  display: none; min-height: 36px; padding: 0 4px; border: 0; background: none; color: var(--oc-ink);
  font: 600 .9375rem/1 var(--oc-sans); text-decoration: underline; text-underline-offset: .2em; cursor: pointer;
}
.oc-menu {
  position: absolute; left: 0; right: 0; top: var(--oc-nav-h); background: var(--oc-granite);
  padding: 16px var(--oc-m) 32px; box-shadow: 0 1px 0 var(--oc-ink);
}
.oc-menu a { display: block; font: 620 1.625rem/1.1 var(--oc-serif); padding: 10px 0; }
@media (max-width: 899px) {
  .oc-links { display: none; }
  .oc-menu-btn { display: inline-flex; align-items: center; }
  .oc-cta-long { display: none; }
  .oc-cta-short { display: inline; }
  .oc-cta { padding: 0 12px; }
  .oc-nav { gap: 12px; }
}
@media (max-width: 359px) {
  .oc-brand-name { font-size: 1.125rem; }
  .oc-brand { gap: 7px; }
  .oc-cta { padding: 0 9px; }
}

/* ---------- hero: from the bed ---------- */
/* Two compositions. Canvas: the whole headline on the cloth either side of the door, reading across in
   rows. Band: on narrow or portrait screens it stands on granite above the photograph, and the pole rises
   to meet it. The script picks one by measuring; without it, the media queries below pick. */
.oc-lift { --oc-h0: calc(var(--oc-stage-h) * .53); }
.oc-tent {
  --oc-pole-x: 51vw; --oc-h1-fs: clamp(2.2rem, 1rem + 3.4vw, 4.2rem); --oc-hook-h: 36px; --oc-hook-top: 6px; --oc-band: 0px;
  position: relative; height: var(--oc-stage-h); z-index: 2;
}
.oc-photo { position: absolute; inset: 0; overflow: hidden; background: #8a7258 linear-gradient(#d2b78f 0 30%, #a8875f 55%, #4b3d34 88%); }
.oc-photo::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: var(--oc-band); background: var(--oc-granite); }
.oc-view {
  position: absolute; inset: var(--oc-band) 0 0 0; overflow: hidden; touch-action: pan-y;
  background: #8a7258 linear-gradient(#d2b78f 0 30%, #a8875f 55%, #4b3d34 88%);
}
.oc-view:focus-visible { outline: 2px solid var(--oc-granite); outline-offset: -6px; }
.oc-poster img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 0%;
  transform: scale(1.08); transform-origin: 50% 30%;
}
.oc-pane { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; transition: opacity .45s var(--oc-ease); }
.oc-view.is-live .oc-pane { opacity: 1; }

.oc-hang { position: absolute; inset: 0; pointer-events: none; will-change: transform; }
.oc-hook {
  position: absolute; z-index: 1; left: calc(var(--oc-pole-x) - var(--oc-hook-h) * .326); top: var(--oc-hook-top);
  width: calc(var(--oc-hook-h) * .652); height: var(--oc-hook-h); filter: drop-shadow(0 1px 1px rgba(22, 23, 27, .35));
}
.oc-h1 {
  position: absolute; inset: 0; font: 820 var(--oc-h1-fs)/1.05 var(--oc-serif); letter-spacing: -.015em; color: var(--oc-ink);
  font-kerning: normal;
}
.oc-g { position: absolute; white-space: nowrap; }
/* without the script: the cloth on landscape screens, granite above the photograph otherwise */
@media (min-width: 901px) and (min-aspect-ratio: 5/4) {
  .oc-tent:not(.is-band):not(.is-canvas) .oc-g1 { left: calc(var(--oc-pole-x) - 12vw - 4.3em); top: calc(var(--oc-hook-h) + 10px); }
  .oc-tent:not(.is-band):not(.is-canvas) .oc-g2 { left: calc(var(--oc-pole-x) + 16vw); top: calc(var(--oc-hook-h) + 10px); }
  .oc-tent:not(.is-band):not(.is-canvas) .oc-g3 { left: calc(var(--oc-pole-x) + 16vw); top: calc(var(--oc-hook-h) + 10px + 1.05em); }
  .oc-tent:not(.is-band):not(.is-canvas) .oc-g2, .oc-tent:not(.is-band):not(.is-canvas) .oc-g3 { font-size: min(1em, 3.6vw); }
}
@media (max-width: 900px), (max-aspect-ratio: 5/4) {
  .oc-tent:not(.is-canvas) {
    --oc-h1-fs: clamp(1.625rem, 9vw, 2.75rem);
    --oc-hook-top: calc(var(--oc-band) - 10px); --oc-hook-h: 28px;
  }
  .oc-tent:not(.is-canvas) .oc-h1 { top: 18px; text-align: center; }
  .oc-tent:not(.is-canvas) .oc-g { position: static; display: block; }
}
.oc-tent.is-band .oc-h1 { top: 0; text-align: left; }
.oc-tent.is-band .oc-g { position: absolute; display: inline; }
.oc-tent.is-measure .oc-h1 .oc-g { position: static; display: inline-block; }

.oc-base {
  position: absolute; left: var(--oc-m); right: var(--oc-m); bottom: clamp(16px, 2.6vh, 28px);
  display: flex; align-items: flex-end; justify-content: space-between; gap: 24px 40px;
  color: var(--oc-granite); text-shadow: 0 1px 14px rgba(22, 23, 27, .6), 0 0 3px rgba(22, 23, 27, .55);
}
.oc-sub { max-width: 30em; font: italic 420 clamp(1.125rem, .95rem + .55vw, 1.5rem)/1.28 var(--oc-serif); text-wrap: pretty; }
.oc-hint { flex: none; max-width: 17em; text-align: right; font: 450 .875rem/1.45 var(--oc-sans); letter-spacing: .01em; }
.oc-hint-tilt {
  display: none; min-height: 32px; padding: 0; border: 0; background: none;
  color: var(--oc-granite); font: 500 .875rem/1 var(--oc-sans); cursor: pointer; text-shadow: inherit;
  text-decoration: underline; text-underline-offset: .22em; text-decoration-thickness: 1px;
}
@media (hover: none) and (pointer: coarse) {
  .oc-hint-pointer { display: none; }
  .oc-hint-tilt { display: inline-flex; align-items: center; }
}
@media (max-width: 700px) {
  .oc-base { flex-direction: column; align-items: flex-start; gap: 6px; }
  .oc-hint { text-align: left; max-width: none; }
}
/* Band: the sub-line stands on the granite under the headline, never over the ranges; only the hint stays on
   the photograph, down on the blanket. (The script sets the band and the line's place by measuring; without
   it, the media query estimates them.) */
.oc-tent.is-band { --oc-sub-fs: clamp(1rem, .9rem + .45vw, 1.1875rem); }
.oc-tent.is-band .oc-base { top: 0; display: block; pointer-events: none; }
.oc-tent.is-band .oc-sub {
  position: absolute; top: var(--oc-sub-top, 0px); left: 0; right: 0; margin: 0 auto; max-width: 24em;
  translate: var(--oc-sub-dx, 0px) 0; text-align: center; color: var(--oc-ink); text-shadow: none;
  font-size: var(--oc-sub-fs); line-height: 1.3;
}
.oc-tent.is-band .oc-hint { position: absolute; right: 0; bottom: 0; pointer-events: auto; }
@media (max-width: 700px) { .oc-tent.is-band .oc-hint { right: auto; left: 0; } }
.oc-tent.is-band.is-short .oc-hint {
  top: var(--oc-hint-top, 0px); bottom: auto; left: 0; right: 0; max-width: none; text-align: center;
  color: var(--oc-ink); text-shadow: none;
}
.oc-tent.is-band.is-short .oc-hint-tilt { color: var(--oc-ink); min-height: 24px; }
@media (max-width: 900px), (max-aspect-ratio: 5/4) {
  .oc-tent:not(.is-canvas):not(.is-band) {
    --oc-sub-fs: clamp(1rem, .9rem + .45vw, 1.1875rem);
    --oc-sub-top: calc(18px + var(--oc-h1-fs) * 3.15 + 8px);
    --oc-band: calc(var(--oc-sub-top) + var(--oc-sub-fs) * 3.9 + 20px);
  }
  .oc-tent:not(.is-canvas):not(.is-band) .oc-base { top: 0; display: block; pointer-events: none; }
  .oc-tent:not(.is-canvas):not(.is-band) .oc-sub {
    position: absolute; top: var(--oc-sub-top); left: 0; right: 0; margin: 0 auto; max-width: 24em;
    text-align: center; color: var(--oc-ink); text-shadow: none; font-size: var(--oc-sub-fs); line-height: 1.3;
  }
  .oc-tent:not(.is-canvas):not(.is-band) .oc-hint { position: absolute; left: 0; bottom: 0; pointer-events: auto; }
}

/* ---------- sections and their horizon ---------- */
.oc-sec {
  --h: var(--hz); --sec-h: 100svh;
  --pad: max(0px, calc((100vw - 2 * var(--oc-m) - 1320px) / 2));
  position: relative; box-sizing: border-box; padding: 0 var(--oc-m);
}
@media (max-width: 700px) {
  .oc-sec { --h: var(--hzm); --sec-h: 84svh; }
  .oc-ground { padding-bottom: 72px; }
  .oc-sky { padding-top: 56px; }
}
.oc-sky {
  box-sizing: border-box; min-height: calc(var(--h) * var(--sec-h));
  display: flex; flex-direction: column; justify-content: flex-end; gap: 24px; padding: 72px var(--pad) 20px;
}
.oc-ground { position: relative; box-sizing: border-box; min-height: calc((1 - var(--h)) * var(--sec-h)); padding: 32px var(--pad) 80px; }
.oc-hz {
  position: absolute; z-index: 2; left: calc(-1 * var(--oc-m)); right: calc(-1 * var(--oc-m)); top: calc(var(--oc-rule) / -2);
  height: var(--oc-rule); background: var(--oc-ink); pointer-events: none;
}
.oc-g12 { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--oc-gut); }
.oc-h2 { font: 860 clamp(1.9rem, 1.1rem + 3.3vw, 4.25rem)/1 var(--oc-serif); letter-spacing: -.01em; max-width: 14em; text-wrap: balance; }
.oc-h2-small { font: italic 460 clamp(1.2rem, 1rem + .8vw, 1.7rem)/1.15 var(--oc-serif); }
.oc-h2-light { font-style: italic; font-weight: 420; }
.oc-h2-night { font-style: italic; font-weight: 400; }
.oc-h2-ask { font-size: clamp(2.4rem, 1.2rem + 5vw, 6rem); font-weight: 880; line-height: .96; letter-spacing: -.018em; }
.oc-center { text-align: center; margin-inline: auto; }
.oc-skyline { font: italic 420 clamp(1.3rem, 1rem + 1.3vw, 2.125rem)/1.2 var(--oc-serif); max-width: 22em; text-wrap: pretty; }
.oc-right { align-self: flex-end; text-align: right; }
.oc-lede { font: 420 clamp(1.125rem, 1rem + .45vw, 1.3125rem)/1.5 var(--oc-sans); max-width: 30em; text-wrap: pretty; }
.oc-body { max-width: 36em; text-wrap: pretty; }
.oc-small { font: 450 .875rem/1.45 var(--oc-sans); letter-spacing: .01em; }
.oc-cols { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--oc-gut); row-gap: 24px; }
.oc-cols > :first-child { grid-column: 1 / span 5; }
.oc-cols > :nth-child(2) { grid-column: 7 / span 5; }
@media (max-width: 800px) { .oc-cols > :first-child, .oc-cols > :nth-child(2) { grid-column: 1 / -1; } }
:where(.oc-page) :where(img, picture) { display: block; }

/* ---------- 2 · camp: the h2 standing clear of the line, the hill and its six folds below it ---------- */
.oc-camp .oc-sky { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: auto 1fr; column-gap: var(--oc-gut); }
/* the descenders stand clear of the horizon, never through it */
.oc-camp .oc-sky > .oc-h2 { grid-column: 1 / span 7; grid-row: 2; align-self: end; margin-bottom: .2em; }
.oc-camp .oc-skyline { grid-column: 7 / -1; grid-row: 1; align-self: start; justify-self: end; text-align: right; max-width: 20em; font-size: clamp(1.125rem, .9rem + .75vw, 1.625rem); padding-top: 20px; }
.oc-camp .oc-sky { padding-bottom: 0; }
.oc-camp .oc-ground { padding-top: 28px; padding-bottom: 64px; }
.oc-folds { position: relative; margin: 0 0 40px; --fh: clamp(150px, 15vw, 220px); }
.oc-fold-box { position: relative; height: var(--fh); margin-bottom: 76px; font-variant-numeric: tabular-nums lining-nums; }
.oc-fold-svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.oc-fold-v { display: none; }
.oc-hill { fill: none; stroke: var(--oc-ink); stroke-width: 1.6; vector-effect: non-scaling-stroke; stroke-linejoin: round; }
.oc-fold { fill: var(--oc-ink); opacity: 0; transition: opacity .35s var(--oc-ease); }
.oc-sight { fill: none; stroke: var(--oc-ink); stroke-width: 1.2; stroke-dasharray: 3 5; vector-effect: non-scaling-stroke; opacity: 0; transition: opacity .35s var(--oc-ease); }
.oc-folds[data-on="1"] .oc-fold-1, .oc-folds[data-on="2"] .oc-fold-2, .oc-folds[data-on="3"] .oc-fold-3,
.oc-folds[data-on="4"] .oc-fold-4, .oc-folds[data-on="5"] .oc-fold-5, .oc-folds[data-on="6"] .oc-fold-6 { opacity: .1; }
.oc-folds[data-on="1"] .oc-sight-1, .oc-folds[data-on="2"] .oc-sight-2, .oc-folds[data-on="3"] .oc-sight-3,
.oc-folds[data-on="4"] .oc-sight-4, .oc-folds[data-on="5"] .oc-sight-5, .oc-folds[data-on="6"] .oc-sight-6 { opacity: .9; }
.oc-line { position: absolute; inset: 0; }
.oc-line li { --g: calc((190 - var(--y) * 170) / 200); position: absolute; left: calc(var(--x) * 100%); top: calc(var(--g) * 100%); width: 0; height: 0; }
.oc-tb { position: absolute; left: -18px; top: -30px; width: 36px; height: 32px; padding: 0; border: 0; background: none; color: inherit; font: inherit; cursor: pointer; }
.oc-tg { position: absolute; left: -16px; bottom: -2px; display: block; width: 32px; height: 28px; }
.oc-tb .oc-tg { left: 2px; top: 2px; bottom: auto; }
.oc-tb .oc-tl { left: 18px; top: 30px; }
.oc-glyph {
  display: block; width: 100%; height: 100%; overflow: visible; transition: transform .3s var(--oc-ease);
  fill: none; stroke: var(--oc-ink); stroke-width: 1.5; stroke-linecap: square; stroke-linejoin: miter;
}
.oc-glyph circle { fill: var(--oc-ember); stroke: none; }
.oc-lk .oc-tg { left: -20px; width: 42px; }
/* each label hangs on a dotted leader straight down from its tent to one row under the hill */
.oc-tl {
  position: absolute; left: 0; top: 0; padding-top: calc((1 - var(--g)) * var(--fh) + 22px); transform: translateX(-50%);
  display: grid; justify-items: center; white-space: nowrap; text-align: center;
  background: linear-gradient(var(--oc-ink-2), var(--oc-ink-2)) 50% 6px / 1px calc((1 - var(--g)) * var(--fh) + 8px) no-repeat;
}
.oc-tn { font: italic 480 1.0625rem/1.25 var(--oc-serif); }
.oc-td { font: 560 .875rem/1.35 var(--oc-sans); color: var(--oc-ink-2); }
.oc-lk .oc-tl { transform: none; justify-items: start; background-position: 0 6px; padding-left: 0; }
.oc-line li:last-child .oc-tl { transform: translateX(calc(-100% + 16px)); justify-items: end; background-position: calc(100% - 16px) 6px; }
.oc-tb:hover .oc-glyph, .oc-tb[aria-pressed="true"] .oc-glyph { transform: translateY(-4px); }
.oc-tb[aria-pressed="true"] .oc-tn { text-decoration: underline; text-underline-offset: .18em; text-decoration-thickness: 1px; }
.oc-tb:focus-visible { outline: none; }
.oc-tb:focus-visible .oc-tg { outline: 2px solid var(--oc-ink); outline-offset: 4px; }
.oc-fold-cap { max-width: 44em; min-height: 3em; font: italic 420 clamp(1.0625rem, .98rem + .4vw, 1.3125rem)/1.45 var(--oc-serif); }
.oc-fold-cap strong { font-style: normal; font-weight: 720; }
@media (max-width: 1100px) and (min-width: 701px) {
  .oc-tn { font-size: .9375rem; }
  .oc-td { font-size: .8125rem; }
}
/* phones: the hill stands on its end and runs down the page, with every label beside its tent */
@media (max-width: 700px) {
  .oc-camp .oc-sky > .oc-h2 { grid-column: 1 / -1; grid-row: 2; }
  .oc-camp .oc-skyline { grid-column: 1 / -1; grid-row: 1; justify-self: start; text-align: left; font-size: 1.125rem; margin-bottom: 20px; }
  .oc-camp .oc-ground { padding-top: 28px; }
  .oc-fold-box { --fw: 36cqw; }
  .oc-fold-box { height: 560px; margin-bottom: 20px; container-type: inline-size; }
  .oc-fold-h { display: none; }
  .oc-fold-v { display: block; width: var(--fw); }
  .oc-line li { --g: calc((var(--y) * 170 + 10) / 200); left: calc(var(--g) * var(--fw)); top: calc(var(--x) * 100%); }
  .oc-tg { left: 6px; bottom: auto; top: -14px; width: 28px; height: 24px; }
  .oc-lk .oc-tg { left: 6px; width: 36px; }
  .oc-tb { left: 4px; top: -16px; width: 34px; height: 30px; }
  .oc-tb .oc-tg { left: 2px; top: 2px; }
  .oc-tl, .oc-lk .oc-tl, .oc-line li:last-child .oc-tl {
    transform: translateY(-50%); justify-items: start; text-align: left; padding: 0 0 0 calc(var(--fw) - var(--g) * var(--fw) + 26px);
    left: 0; top: 0; background: linear-gradient(var(--oc-ink-2), var(--oc-ink-2)) 42px 50% / calc(var(--fw) - var(--g) * var(--fw) - 18px) 1px no-repeat;
  }
  .oc-tb .oc-tl { left: -4px; top: 16px; }
  .oc-line .oc-tl { white-space: normal; box-sizing: border-box; width: calc(100cqw - var(--g) * var(--fw) - 4px); }
}

/* ---------- 3 · the night: one plate of dark glass standing on a low line ---------- */
.oc-night .oc-sky {
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--oc-gut); align-content: end; padding-top: 32px; padding-bottom: 0;
}
.oc-plate {
  grid-column: 1 / span 9; grid-row: 1; position: relative; margin: 0; aspect-ratio: 3 / 2; border-radius: 3px; overflow: hidden;
  background: var(--oc-night); isolation: isolate;
  box-shadow: 0 1px 0 rgba(255, 255, 255, .18) inset, 0 0 0 1px rgba(22, 23, 27, .6), 0 26px 44px -26px rgba(22, 23, 27, .7);
}
.oc-plate::after { content: ""; position: absolute; inset: 0; border-radius: 3px; pointer-events: none; box-shadow: inset 0 1px 0 rgba(228, 228, 224, .16), inset 0 0 0 1px rgba(228, 228, 224, .05); }
.oc-plate-poster img, .oc-plate-c { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.oc-plate-c { opacity: 0; transition: opacity .3s var(--oc-ease); }
.oc-plate.is-live .oc-plate-c { opacity: 1; }
/* with WebGL the plate arrives unexposed: the finished poster stays hidden unless the plate cannot be built */
.oc-plate.is-waiting .oc-plate-poster { visibility: hidden; }
.oc-night .oc-h2 { grid-column: 10 / -1; grid-row: 1; align-self: start; max-width: 5.2em; font-size: clamp(1.9rem, 1rem + 2.6vw, 3.6rem); line-height: 1.02; }
.oc-night .oc-ground { padding-top: 0; }
.oc-night:not(.has-gl) .oc-shutter { display: none; }
.oc-shutter { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--oc-gut); align-items: start; }
.oc-release {
  grid-column: 1 / span 2; position: relative; width: 96px; height: 150px; padding: 0; margin: 0 0 0 clamp(0px, 1vw, 12px);
  border: 0; background: none; cursor: pointer; touch-action: none; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none;
}
.oc-release svg { display: block; width: 100%; height: 100%; overflow: visible; }
.oc-release .oc-cable { fill: none; stroke: #2B2D32; stroke-width: 4.2; stroke-linecap: round; }
.oc-release .oc-cable-braid { fill: none; stroke: #8E9196; stroke-width: 2.2; stroke-dasharray: 1.4 1.8; stroke-linecap: butt; }
.oc-release .oc-plunger { transition: transform .18s var(--oc-ease); }
.oc-night[data-state="exposing"] .oc-plunger { transform: translateY(6px); }
.oc-release:focus-visible { outline-offset: 0; }
.oc-length { grid-column: 3 / span 6; padding-top: 28px; display: grid; grid-template-columns: 1fr auto; column-gap: 16px; row-gap: 10px; align-items: center; }
.oc-length label { grid-column: 1 / -1; font: 500 .9375rem/1.3 var(--oc-sans); }
.oc-rail { grid-column: 1 / -1; display: flex; align-items: center; gap: 16px; }
.oc-rail output { flex: none; min-width: 3.6em; font: 560 1.0625rem/1 var(--oc-sans); font-variant-numeric: tabular-nums lining-nums; text-align: right; }
.oc-hint-n { font: 450 .9375rem/1.45 var(--oc-sans); color: var(--oc-ink-2); }
.oc-fresh {
  justify-self: end; min-height: 36px; padding: 0; border: 0; background: none; color: var(--oc-ink);
  font: 500 .9375rem/1 var(--oc-sans); text-decoration: underline; text-underline-offset: .2em; cursor: pointer;
}
#oc-length { flex: 1; min-width: 0; height: 32px; margin: 0; background: transparent; -webkit-appearance: none; appearance: none; cursor: pointer; }
#oc-length::-webkit-slider-runnable-track { height: 6px; border-radius: 3px; background: linear-gradient(#E4E4E0, #8E9196 55%, #4E5157); box-shadow: inset 0 0 0 1px rgba(22, 23, 27, .45); }
#oc-length::-moz-range-track { height: 6px; border-radius: 3px; background: linear-gradient(#E4E4E0, #8E9196 55%, #4E5157); }
#oc-length::-webkit-slider-thumb {
  -webkit-appearance: none; width: 16px; height: 28px; margin-top: -11px; border-radius: 2px; border: 1px solid #16171B;
  background: repeating-linear-gradient(90deg, #4E5157 0 1px, #E4E4E0 1px 3px), #8E9196; box-shadow: 0 2px 3px rgba(22, 23, 27, .35);
}
#oc-length::-moz-range-thumb { width: 16px; height: 28px; border-radius: 2px; border: 1px solid #16171B; background: repeating-linear-gradient(90deg, #4E5157 0 1px, #E4E4E0 1px 3px); }
#oc-length:focus-visible { outline: 2px solid var(--oc-ink); outline-offset: 3px; }
.oc-sentence {
  margin: 40px 0 0; padding-left: calc((100% + var(--oc-gut)) * 2 / 12); max-width: 34em;
  font: italic 420 clamp(1.0625rem, .98rem + .4vw, 1.3125rem)/1.5 var(--oc-sans); font-variant-numeric: tabular-nums lining-nums;
  min-height: 3em;
}
.oc-night-cols { margin-top: 56px; }
.oc-night-cols > :first-child { grid-column: 2 / span 5; }
.oc-night-cols > :nth-child(2) { grid-column: 8 / span 4; }
@media (max-width: 1180px) {
  .oc-night .oc-sky { row-gap: 32px; }
  .oc-night .oc-h2 { grid-column: 1 / -1; grid-row: 1; max-width: none; }
  .oc-plate { grid-column: 1 / -1; grid-row: 2; }
  .oc-length { grid-column: 3 / span 8; }
}
@media (max-width: 800px) { .oc-night-cols > :first-child, .oc-night-cols > :nth-child(2) { grid-column: 1 / -1; } }
@media (max-width: 700px) {
  .oc-plate { aspect-ratio: 4 / 5; justify-self: center; width: min(100%, 58svh * 4 / 5); }
  .oc-shutter { grid-template-columns: 72px 1fr; column-gap: 16px; }
  .oc-release { grid-column: 1; width: 64px; height: 100px; margin: 0; }
  .oc-length { grid-column: 2; padding-top: 18px; }
  .oc-sentence { padding-left: 0; }
}

/* ---------- 4 · walks: a sliver of sky, then the map from the door ---------- */
.oc-walks .oc-sky { padding-top: 40px; }
.oc-walks .oc-ground { padding-top: 40px; }
.oc-walks-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--oc-gut); row-gap: 32px; align-items: start; }
.oc-walks-grid > .oc-h2 { grid-column: 1 / span 8; grid-row: 1; max-width: 12em; margin-bottom: -8px; }
.oc-mapfig { grid-column: 1 / span 7; grid-row: 2; margin: 0 0 0 -8px; }
.oc-map { display: block; width: 100%; height: auto; overflow: visible; }
.oc-map-land path { fill: none; stroke: var(--oc-ink-2); stroke-opacity: .35; stroke-width: 1; }
.oc-map-creek { fill: none; stroke: var(--oc-ink-2); stroke-opacity: .7; stroke-width: 1.2; stroke-dasharray: 1 3; stroke-linecap: round; }
.oc-map-pool { fill: none; stroke: var(--oc-ink); stroke-width: 1.2; }
.oc-map-trig { fill: var(--oc-ink); }
.oc-map-door path { fill: none; stroke: var(--oc-ink); stroke-width: 1.6; }
.oc-map-door path + path { stroke-width: 1.2; }
.oc-map-km path { fill: none; stroke: var(--oc-ink); stroke-width: 1.2; }
.oc-map-km text, .oc-map-d { font: 560 15px var(--oc-sans); fill: var(--oc-ink-2); font-variant-numeric: tabular-nums lining-nums; }
.oc-map-n, .oc-map-you { font: italic 500 19px var(--oc-serif); fill: var(--oc-ink); }
.oc-map-you { font-size: 15px; }
.oc-mm { fill: none; stroke: #fff; stroke-width: 16; stroke-linecap: round; stroke-linejoin: round; }
.oc-route, .oc-sw path { fill: none; stroke: var(--oc-ink); stroke-linecap: round; stroke-linejoin: round; }
.oc-route-fence, .oc-sw-fence path { stroke-width: 2.6; stroke-dasharray: .5 4.5; }
.oc-route-creek, .oc-sw-creek path { stroke-width: 2.2; stroke-dasharray: 7 4; }
.oc-route-gorge, .oc-sw-gorge path { stroke-width: 2.6; }
.oc-route-ridge, .oc-sw-ridge path { stroke-width: 2.2; stroke-dasharray: 14 5 2 5; }
.oc-gorge {
  position: relative; grid-column: 9 / -1; grid-row: 1 / span 2; align-self: end; aspect-ratio: 2 / 3; overflow: hidden; background: #8a6a4e;
}
.oc-gorge .oc-poster img { transform: scale(1.06); transform-origin: 50% 50%; object-position: 50% 50%; }
.oc-walklist {
  grid-column: 1 / span 8; grid-row: 3; display: grid; grid-template-columns: 1fr 1fr; gap: 24px var(--oc-gut);
  font-variant-numeric: tabular-nums lining-nums; max-width: 50em;
}
.oc-walklist li { display: grid; grid-template-columns: 40px 1fr; column-gap: 14px; align-items: start; }
.oc-sw { width: 40px; height: 10px; margin-top: .7em; overflow: visible; }
.oc-wn { display: block; margin-bottom: 2px; font: 700 clamp(1.125rem, 1rem + .5vw, 1.4rem)/1.2 var(--oc-serif); }
.oc-walks-body { grid-column: 9 / -1; grid-row: 3; }
@media (max-width: 900px) {
  .oc-walks-grid > .oc-h2, .oc-mapfig, .oc-walklist { grid-column: 1 / -1; }
  .oc-gorge { grid-column: 1 / span 6; grid-row: auto; aspect-ratio: 4 / 5; }
  .oc-walks-body { grid-column: 7 / -1; grid-row: auto; align-self: end; }
}
@media (max-width: 700px) {
  .oc-mapfig { margin: 0 -8px; }
  .oc-map-n { font-size: 24px; } .oc-map-d, .oc-map-km text { font-size: 19px; } .oc-map-you { font-size: 19px; }
  .oc-walklist { grid-template-columns: 1fr; gap: 20px; }
  .oc-gorge { grid-column: 1 / -1; aspect-ratio: 4 / 5; }
  .oc-gorge .oc-poster img { object-position: 50% 60%; transform-origin: 50% 60%; }
  .oc-walks-body { grid-column: 1 / -1; }
}
/* the routes draw themselves out from the door as the map comes up */
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .oc-mm { stroke-dasharray: 1 1; animation: oc-draw linear both; animation-timeline: --oc-sec; }
    .oc-mm-fence { animation-range: entry 55% cover 38%; }
    .oc-mm-creek { animation-range: entry 60% cover 42%; }
    .oc-mm-gorge { animation-range: entry 65% cover 48%; }
    .oc-mm-ridge { animation-range: entry 70% cover 55%; }
  }
}
@keyframes oc-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
@keyframes oc-wipe { from { clip-path: inset(-8px 100% -8px -8px); } to { clip-path: inset(-8px -8px -8px -8px); } }

/* ---------- 5 · kitchen: the line is the hot plate's front edge ---------- */
.oc-kitchen {
  --sec-h: 150svh; --oc-edge: .501; --oc-strip-h: clamp(320px, 38vw, 600px);
}
.oc-kitchen .oc-sky {
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: auto 1fr auto; column-gap: var(--oc-gut);
  padding-bottom: calc(var(--oc-edge) * var(--oc-strip-h) + 32px);
}
.oc-kitchen .oc-h2 { grid-column: 1 / span 6; grid-row: 1; align-self: start; max-width: 8em; }
.oc-table-ph { grid-column: 7 / -1; grid-row: 1 / span 3; align-self: end; margin-bottom: 16px; }
.oc-table-ph img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; }
.oc-table { grid-column: 1 / span 5; grid-row: 3; align-self: end; font: 620 clamp(1.3rem, 1.05rem + .9vw, 1.9rem)/1.28 var(--oc-serif); }
.oc-table strong, .oc-sources strong { font-weight: 800; }
.oc-kitchen .oc-ground { padding-top: 0; display: flow-root; }
.oc-hotplate {
  position: relative; height: var(--oc-strip-h); overflow: hidden;
  margin: calc(-1 * var(--oc-edge) * var(--oc-strip-h)) calc(-1 * (var(--oc-m) + var(--pad))) 0;
}
.oc-hotplate img { width: 100%; height: 100%; object-fit: cover; object-position: 50% calc(var(--oc-edge) * 100%); }
.oc-kitchen-foot { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--oc-gut); row-gap: 32px; padding-top: 32px; }
.oc-sources { grid-column: 1 / span 5; font: italic 420 clamp(1.3rem, 1.05rem + .9vw, 1.9rem)/1.28 var(--oc-serif); }
.oc-kitchen-foot .oc-body { grid-column: 7 / span 5; padding-top: 6px; }
@media (max-width: 1180px) and (min-width: 701px) { .oc-table-ph { grid-column: 7 / -1; } }
@media (max-width: 700px) {
  .oc-kitchen { --sec-h: 96svh; --oc-strip-h: min(72vw, 52svh); }
  .oc-kitchen .oc-sky { grid-template-rows: auto auto auto; row-gap: 24px; }
  .oc-kitchen .oc-h2 { grid-column: 1 / -1; }
  .oc-table-ph { grid-column: 1 / -1; grid-row: 2; margin: 0; }
  .oc-table-ph img { aspect-ratio: 4 / 3; }
  .oc-table { grid-column: 1 / -1; }
  .oc-sources, .oc-kitchen-foot .oc-body { grid-column: 1 / -1; }
}

/* ---------- 6 · cold: the season's night lows, with the horizon as zero ---------- */
.oc-cold { --sec-h: 104svh; }
.oc-cold .oc-sky { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--oc-gut); row-gap: 20px; align-content: end; padding-bottom: 0; }
.oc-cold .oc-h2 { grid-column: 1 / span 6; grid-row: 1; align-self: start; font-size: clamp(2rem, 1.2rem + 3vw, 4rem); }
.oc-cold .oc-skyline { font-size: clamp(1.15rem, .98rem + .8vw, 1.6rem); max-width: 18em; }
.oc-w1 { grid-column: 1 / span 4; grid-row: 2; align-self: end; }
.oc-w2 { grid-column: 7 / span 5; grid-row: 1 / span 2; align-self: end; }
.oc-lows { grid-column: 1 / -1; grid-row: 3; position: relative; margin: 8px calc(-1 * (var(--oc-m) + var(--pad))) 0; height: clamp(150px, 16vw, 230px); }
.oc-lows-svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.oc-lows-l { fill: none; stroke: var(--oc-ink); stroke-width: 2; vector-effect: non-scaling-stroke; stroke-linecap: round; }
.oc-lows-t {
  position: absolute; left: calc(var(--x) * 100%); top: calc(var(--y) * 100%); transform: translate(-50%, calc(-100% - 12px));
  font: 560 .9375rem/1 var(--oc-sans); font-variant-numeric: tabular-nums lining-nums; white-space: nowrap;
}
.oc-lows-t-low { transform: translate(-50%, calc(-100% - 12px)); }
.oc-frost { position: absolute; left: calc(var(--x) * 100%); bottom: 1px; width: 120px; height: 14px; transform: translateX(-50%); fill: none; stroke: var(--oc-ink-2); stroke-width: 1; stroke-linecap: round; }
.oc-lows-m { position: absolute; left: 0; right: 0; top: calc(100% + 12px); height: 1.2em; }
.oc-lows-m li { position: absolute; left: calc(var(--x) * 100%); transform: translateX(-50%); font: 600 .8125rem/1 var(--oc-sans); letter-spacing: .04em; color: var(--oc-ink-2); }
.oc-lows-c { position: absolute; right: calc(var(--oc-m) + var(--pad)); top: calc(100% + 44px); max-width: 24em; text-align: right; font: italic 420 .9375rem/1.4 var(--oc-serif); color: var(--oc-ink-2); }
.oc-cold .oc-ground { padding-top: 104px; }
.oc-cold-foot { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--oc-gut); row-gap: 32px; align-items: start; }
.oc-pack { grid-column: 1 / span 6; grid-row: 1; font: 400 clamp(1.35rem, 1.05rem + 1.2vw, 2.25rem)/1.22 var(--oc-serif); }
.oc-pack li { font-weight: var(--wt); }
.oc-cold-foot .oc-body { grid-column: 1 / span 5; grid-row: 2; }
.oc-dusk { grid-column: 8 / -1; grid-row: 1 / span 2; }
.oc-dusk img { width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 60%; }
@media (max-width: 900px) {
  .oc-cold .oc-h2 { grid-column: 1 / -1; }
  .oc-w1 { grid-column: 1 / span 6; grid-row: 2; }
  .oc-w2 { grid-column: 7 / -1; grid-row: 2; }
  .oc-pack { grid-column: 1 / span 7; }
  .oc-cold-foot .oc-body { grid-column: 1 / span 7; }
  .oc-dusk { grid-column: 8 / -1; }
}
@media (max-width: 700px) {
  .oc-cold { --sec-h: 84svh; }
  .oc-w1, .oc-w2 { grid-column: 1 / -1; grid-row: auto; margin: 0; }
  .oc-lows { grid-row: auto; height: 150px; margin-top: 16px; }
  .oc-lows-m li { font-size: .6875rem; }
  .oc-lows-c { left: var(--oc-m); right: var(--oc-m); text-align: left; }
  .oc-lows-t:first-of-type { left: var(--oc-m); transform: translate(0, calc(-100% - 12px)); }
  .oc-lows-t:nth-of-type(3) { left: auto; right: var(--oc-m); transform: translate(0, calc(-100% - 12px)); }
  .oc-cold .oc-ground { padding-top: 120px; }
  .oc-pack, .oc-cold-foot .oc-body { grid-column: 1 / -1; grid-row: auto; }
  .oc-dusk { grid-column: 1 / -1; grid-row: auto; }
}

/* ---------- 7 · gate: the way in drawn across the sky, then one sentence that thickens as it lands ---------- */
.oc-gate { --sec-h: 96svh; }
.oc-gate .oc-sky { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--oc-gut); grid-template-rows: auto 1fr auto; row-gap: 28px; padding-bottom: 0; }
.oc-gate .oc-h2-small { grid-column: 1 / span 4; grid-row: 1; }
.oc-track { grid-column: 1 / -1; grid-row: 2; align-self: center; margin: 0; }
.oc-gt { display: block; width: 100%; height: auto; overflow: visible; }
.oc-gt-v { display: none; }
.oc-gt text { font: 500 15px var(--oc-sans); fill: var(--oc-ink-2); }
.oc-gt-road { fill: none; stroke: var(--oc-ink); stroke-width: 7; }
.oc-gt-road-c { fill: none; stroke: var(--oc-granite); stroke-width: 1.2; stroke-dasharray: 8 7; }
.oc-gt-gravel { fill: none; stroke: var(--oc-ink); stroke-width: 2.2; stroke-dasharray: 6 5; stroke-linecap: round; }
.oc-gt-walk { fill: none; stroke: var(--oc-ink); stroke-width: 2.4; stroke-dasharray: .5 5; stroke-linecap: round; }
.oc-gt-gate path, .oc-gt-ute path, .oc-gt-tent path { fill: var(--oc-granite); stroke: var(--oc-ink); stroke-width: 1.6; stroke-linejoin: round; }
.oc-gt-ute circle { fill: var(--oc-ink); }
.oc-gt-tent path { fill: none; }
.oc-gt-tent circle { fill: var(--oc-ember); }
.oc-gm { fill: none; stroke: #fff; stroke-width: 60; stroke-linecap: round; stroke-linejoin: round; }
.oc-gate-p {
  grid-column: 1 / span 9; grid-row: 3; font: 880 clamp(1.5rem, 1rem + 2vw, 2.9rem)/1.18 var(--oc-serif); letter-spacing: -.005em;
  max-width: 22em; margin-bottom: .32em;
}
.oc-gate-p .oc-wd { font-weight: var(--w); }
.oc-gate-p .oc-ln { display: block; white-space: nowrap; }
.oc-gate-p.oc-measure .oc-wd { animation: none !important; font-weight: var(--w); }
.oc-gate .oc-ground { padding-top: 28px; }
.oc-gate-body { margin-left: calc((100% + var(--oc-gut)) / 12); max-width: 30em; }
@media (max-width: 900px) { .oc-gate-p { grid-column: 1 / -1; } .oc-gate-body { margin-left: 0; } }
@media (max-width: 700px) {
  .oc-gate { --sec-h: auto; }
  .oc-gate .oc-sky { min-height: 0; }
  .oc-gt-h { display: none; }
  .oc-gt-v { display: block; max-width: 330px; }
  .oc-gt text { font-size: 15px; }
}
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .oc-gm { stroke-dasharray: 1 1; animation: oc-draw linear both; animation-timeline: --oc-sec; animation-range: entry 40% cover 50%; }
    /* the lows line keeps a non-scaling stroke, so it is wiped in with a clip rather than a dash (a dash
       would be measured in screen px and stop short on wide charts) */
    .oc-lows-svg { animation: oc-wipe linear both; animation-timeline: --oc-sec; animation-range: entry 30% cover 45%; }
  }
}

/* ---------- 8 · sheep ---------- */
.oc-sheep .oc-sky { padding-bottom: 0; }
.oc-sheep .oc-h2 { max-width: none; margin-bottom: .22em; }
.oc-ridge { margin: 72px calc(-1 * (var(--oc-m) + var(--pad))) 0; }
.oc-ridge img { width: 100%; height: 50vw; object-fit: cover; object-position: 50% 30%; }
.oc-sheep-cols { margin-top: 56px; }
.oc-sheep-cols > :first-child { grid-column: 2 / span 5; }
.oc-sheep-cols > :nth-child(2) { grid-column: 8 / span 4; }
.oc-country { margin-top: 64px; max-width: 40em; color: var(--oc-ink-2); }
@media (max-width: 800px) { .oc-sheep-cols > :nth-child(2), .oc-sheep-cols > :first-child { grid-column: 1 / -1; grid-row: auto; } }
@media (max-width: 700px) { .oc-ridge img { height: auto; aspect-ratio: 4 / 3; } }

/* ---------- 9 · ask ---------- */
.oc-ask .oc-sky { padding-bottom: 0; }
.oc-ask .oc-h2-ask { max-width: none; margin-bottom: .12em; }
.oc-ask .oc-ground { padding-top: 48px; }
/* ---------- the form ---------- */
.oc-form { display: grid; grid-template-columns: 1fr 1fr; gap: 32px var(--oc-gut); max-width: 1000px; font-size: 1rem; }
.oc-field { display: grid; gap: 6px; align-content: start; margin: 0; padding: 0; border: 0; min-width: 0; }
.oc-field label, .oc-field legend { font: 500 .9375rem/1.3 var(--oc-sans); padding: 0; }
.oc-field input:not([type="radio"]), .oc-field select, .oc-field textarea {
  box-sizing: border-box; width: 100%; min-height: 44px; padding: 8px 0; border: 0; border-bottom: 1px solid var(--oc-ink);
  border-radius: 0; background: transparent; color: var(--oc-ink); font: 450 1.0625rem/1.4 var(--oc-sans);
}
.oc-field textarea { resize: vertical; }
.oc-radios label { display: flex; align-items: center; gap: 10px; min-height: 32px; font-weight: 450; }
.oc-radio-row { display: flex; flex-wrap: wrap; gap: 4px 28px; }
.oc-radios input { accent-color: var(--oc-ink); width: 18px; height: 18px; margin: 0; }
.oc-help { font: 450 .875rem/1.45 var(--oc-sans); color: var(--oc-ink-2); }
.oc-wide { grid-column: 1 / -1; }
.oc-send { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; }
.oc-btn { min-height: 48px; padding: 0 24px; font-size: 1rem; }
.oc-form-status { font: 450 .9375rem/1.45 var(--oc-sans); min-height: 1.45em; }
@media (max-width: 899px) { .oc-form { grid-template-columns: 1fr; } }
.oc-btn { font: 760 1.25rem/1 var(--oc-serif); letter-spacing: -.005em; min-height: 52px; padding: 0 28px; }
/* the season: twelve months from now, the closed summer drawn dotted, each new moon a dark disc */
.oc-when input { max-width: 16em; }
.oc-cal { margin-top: 18px; }
.oc-cal-m { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 0 6px; }
.oc-cal-m li { position: relative; display: grid; grid-template-rows: 13px 12px auto; row-gap: 6px; min-height: 64px; }
.oc-cal-n { font: 500 .8125rem/1 var(--oc-sans); letter-spacing: .02em; }
.oc-cal-b { align-self: center; height: 0; border-top: 3px solid var(--oc-ink); }
.is-closed .oc-cal-b { border-top: 2px dotted var(--oc-ink-2); }
.is-closed .oc-cal-n, .oc-cal-x { color: var(--oc-ink-2); }
.oc-cal-x { font: italic 420 .8125rem/1 var(--oc-serif); }
.oc-nm {
  position: absolute; top: 19px; left: calc(var(--p) * 100%); transform: translateX(-50%);
  display: grid; justify-items: center; row-gap: 7px; padding: 0 2px; border: 0; background: none; cursor: pointer;
  font: 600 .8125rem/1 var(--oc-sans); color: var(--oc-ink); font-variant-numeric: tabular-nums lining-nums;
}
.oc-nm::before { content: ""; width: 12px; height: 12px; border-radius: 50%; background: var(--oc-night); box-shadow: 0 0 0 2px var(--oc-granite); }
.oc-nm[aria-pressed="true"] { text-decoration: underline; text-underline-offset: .2em; }
.oc-nm[aria-pressed="true"]::before { box-shadow: 0 0 0 2px var(--oc-granite), 0 0 0 3.5px var(--oc-ink); }
.oc-nm:focus-visible { outline: 2px solid var(--oc-ink); outline-offset: 2px; }
.oc-nm-key { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--oc-night); vertical-align: -1px; margin-right: 4px; }
@media (max-width: 700px) {
  .oc-cal-m { grid-template-columns: repeat(4, minmax(0, 1fr)); row-gap: 14px; }
  .oc-in text { font-size: 19px; } .oc-in-meet text { font-size: 20px; }
}
/* coming in: the track, and where we'll meet you */
.oc-in { display: block; width: 100%; max-width: 560px; height: auto; margin-top: 14px; overflow: visible; }
.oc-in-road { fill: none; stroke: var(--oc-ink); stroke-width: 7; }
.oc-in-road-c { fill: none; stroke: var(--oc-granite); stroke-width: 1.2; stroke-dasharray: 8 7; }
.oc-in-gravel { fill: none; stroke: var(--oc-ink); stroke-width: 2.2; stroke-dasharray: 6 5; }
.oc-in text { font: 500 13px var(--oc-sans); fill: var(--oc-ink-2); }
.oc-in-meet circle { fill: none; stroke: var(--oc-ink); stroke-width: 1.6; }
.oc-in-meet text { fill: var(--oc-ink); font-style: italic; font-family: var(--oc-serif); font-size: 14px; }
.oc-in-meet { opacity: 0; transition: opacity .3s var(--oc-ease); }
.oc-radios:has(input[value="any"]:checked) .oc-in-road-m, .oc-radios:has(input[value="unsure"]:checked) .oc-in-road-m,
.oc-radios:has(input[value="4wd"]:checked) .oc-in-gate-m { opacity: 1; }
.oc-radios:not(:has(input:checked)) .oc-in-road-m { opacity: 1; }

/* ---------- footer ---------- */
.oc-foot { position: relative; padding: 72px var(--oc-m) 48px; }
.oc-foot .oc-hz { left: 0; right: 0; top: 24px; }
.oc-foot-in { display: flex; flex-wrap: wrap; align-items: baseline; gap: 12px 40px; }
.oc-foot-brand { display: inline-flex; align-items: center; gap: 10px; font: 760 1.3125rem/1 var(--oc-serif); }
.oc-foot-links { display: flex; flex-wrap: wrap; gap: 8px 24px; margin-left: auto; font-weight: 500; }
.oc-foot-links a { text-decoration: none; }
.oc-foot-links a:hover { text-decoration: underline; }

/* ---------- the horizon moves (scroll-driven) ---------- */
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .oc-sec { view-timeline: --oc-sec block; }
    .oc-sec:not(.oc-camp) .oc-hz {
      animation: oc-hz linear both; animation-timeline: --oc-sec; animation-range: entry 0% entry 78%;
    }
    .oc-sec:not(.oc-camp) .oc-sky > .oc-h2:last-child {
      animation: oc-land linear both; animation-timeline: --oc-sec; animation-range: entry 0% entry 78%;
    }
    .oc-sec:not(.oc-camp) .oc-sky > .oc-h2-night:last-child { animation-name: oc-land-night; }
    .oc-sec:not(.oc-camp) .oc-sky > :not(.oc-h2):not(.oc-gate-p) {
      animation: oc-down linear both; animation-timeline: --oc-sec; animation-range: entry 8% entry 70%;
    }
    .oc-sec:not(.oc-camp) .oc-sky > .oc-plate.oc-plate { animation-name: oc-drop; }
    .oc-sec:not(.oc-camp) .oc-ground > :not(.oc-hz):not(.oc-hotplate) {
      animation: oc-up linear both; animation-timeline: --oc-sec; animation-range: entry 8% entry 70%;
    }
    /* the gate: each word lands a little later than the one before, and heavier */
    .oc-gate-p .oc-wd {
      animation: oc-wt linear both; animation-timeline: --oc-sec;
      animation-range: entry calc(15% + var(--i) * .8%) cover calc(25% + var(--i) * .8%);
    }
  }
}
@keyframes oc-hz { from { translate: 0 calc((var(--hzp) - var(--h)) * var(--sec-h)); } to { translate: 0 0; } }
@keyframes oc-land { from { font-weight: 480; } to { font-weight: 860; } }
@keyframes oc-land-night { from { font-weight: 700; font-style: italic; } to { font-weight: 400; font-style: italic; } }
@keyframes oc-down { from { translate: 0 -24px; opacity: .35; } to { translate: 0 0; opacity: 1; } }
@keyframes oc-drop { from { translate: 0 -24px; } to { translate: 0 0; } }
@keyframes oc-up { from { translate: 0 24px; opacity: .35; } to { translate: 0 0; opacity: 1; } }
@keyframes oc-wt { from { font-weight: 380; } to { font-weight: var(--w); } }

/* the lift: the tent's photograph rises off the camp, and its horizon stays on the granite */
@supports (animation-timeline: scroll()) {
  @media (prefers-reduced-motion: no-preference) {
    .oc-lift { --oc-lift-x: 72svh; }
    .oc-lift .oc-tent { position: sticky; top: var(--oc-top); pointer-events: none; }
    .oc-lift .oc-photo { pointer-events: auto; animation: oc-lift linear both; animation-timeline: scroll(root); animation-range: 0px var(--oc-lift-x); }
    .oc-lift .oc-camp {
      --sec-h: var(--oc-stage-h);
      position: sticky; top: var(--oc-top); z-index: 1; margin-top: calc(-1 * var(--oc-stage-h)); min-height: var(--oc-stage-h);
    }
    .oc-lift .oc-camp .oc-sky { height: auto; min-height: calc(var(--h) * var(--sec-h)); padding-top: 12px; overflow: visible; }
    .oc-lift::after { content: ""; display: block; height: var(--oc-lift-x); }
    .oc-lift-mark { top: calc(var(--oc-lift-x) + 50vh - var(--oc-top)); }
    .oc-camp .oc-hz, .oc-camp .oc-sky > .oc-h2 {
      animation: oc-hz0 linear both; animation-timeline: scroll(root); animation-range: 0px var(--oc-lift-x);
    }
    .oc-camp .oc-sky > .oc-h2 { animation-name: oc-hz0, oc-land; }
    .oc-camp .oc-sky > :not(.oc-h2) { animation: oc-down linear both; animation-timeline: scroll(root); animation-range: calc(var(--oc-lift-x) * .45) var(--oc-lift-x); }
    .oc-camp .oc-ground > :not(.oc-hz) { animation: oc-up linear both; animation-timeline: scroll(root); animation-range: calc(var(--oc-lift-x) * .45) var(--oc-lift-x); }
  }
}
@keyframes oc-lift { to { translate: 0 -100%; } }
@keyframes oc-hz0 { from { translate: 0 var(--oc-from, calc(var(--oc-h0) - var(--h) * var(--sec-h))); } to { translate: 0 0; } }


@media (prefers-reduced-motion: reduce) {
  .oc-page *, .oc-page *::before { transition: none !important; }
}
