/* Shared public-page layout; the member workspace keeps its own application shell. */
.site-header nav { flex-wrap: wrap; }
.public-header .nav nav { gap: 20px; font: 15px/1.25 var(--serif); }
/* Use the editorial typeface for action labels, keeping metadata monospace. */
.btn, .text-button, .scene-play, .scene-tabs button, .dialog-top button {
  font-family: var(--serif);
  font-size: 15px;
  font-weight: 400;
  line-height: 1.3;
  letter-spacing: .01em;
}
.site-header nav a[aria-current="page"] { text-decoration: underline; text-underline-offset: 6px; }
/* Only the rightmost Contribute entry is a button; all other destinations are peers. */
.header-action { position: relative; isolation: isolate; overflow: hidden; display: inline-flex; align-items: center; gap: 18px; min-height: 42px; padding: 11px 15px; border: 1px solid var(--ink); white-space: nowrap; }
.header-action > span { position: relative; z-index: 1; }
.header-contribute { background: var(--ink); color: var(--paper); }
.header-action::before { content: ""; position: absolute; inset: 0; z-index: 0; transform: translateY(102%); transition: transform 280ms cubic-bezier(.22,1,.36,1); }
.header-contribute::before { background: var(--paper); }
.header-action > span { transition: color 180ms ease; }
.header-action .header-arrow { transition: transform 280ms cubic-bezier(.22,1,.36,1), color 180ms ease; }
.public-header nav .header-action[aria-current="page"] { text-decoration: none; outline: 1px solid var(--ink); outline-offset: 3px; }
.header-link { position: relative; padding-block: 10px; white-space: nowrap; }
.header-link::after { content: ""; position: absolute; inset: auto 0 3px; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform 220ms ease; }
.public-header nav .header-link[aria-current="page"] { text-decoration: none; }
.header-link[aria-current="page"]::after, .header-link:focus-visible::after { transform: scaleX(1); }
.header-action:focus-visible::before { transform: translateY(0); }
.header-contribute:focus-visible > span { color: var(--ink); }
.header-action:focus-visible .header-arrow { transform: translate(3px,-3px); }
@media (hover: hover) and (pointer: fine) {
  .header-action:hover::before { transform: translateY(0); }
  .header-contribute:hover > span { color: var(--ink); }
  .header-action:hover .header-arrow { transform: translate(3px,-3px); }
  .header-link:hover::after { transform: scaleX(1); }
}
@media (max-width: 650px) {
  .public-header .nav nav { gap: 12px; font-size: 13px; }
  .public-header .nav nav { justify-content: flex-start; width: 100%; }
  .public-header .header-contribute { margin-left: auto; }
  .btn, .text-button, .scene-play, .scene-tabs button, .dialog-top button { font-size: 14px; }
  .header-action { min-height: 40px; padding: 10px 11px; gap: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .header-action::before, .header-action > span, .header-arrow, .header-link::after { transition: none !important; }
  .header-action:hover .header-arrow, .header-action:focus-visible .header-arrow { transform: none; }
}
.preview-note { margin: 0; padding: 10px 24px; background: var(--ink); color: var(--paper); font: 11px/1.6 var(--mono); text-align: center; }
.page-hero { padding-block: 76px 64px; max-width: 1240px; }
.page-hero h1 { max-width: 900px; font-size: clamp(52px, 8vw, 104px); letter-spacing: -.045em; line-height: 1.04; }
.page-intro { max-width: 640px; color: var(--muted); font: 20px/1.7 var(--serif); }
.page-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.page-status { display: inline-block; padding: 8px 12px; border: 1px solid var(--line); font: 11px/1.5 var(--mono); }
.page-body { padding-bottom: 72px; }
.world-cover { margin: 0; border: 1px solid var(--line); }
.world-cover img { width: 100%; height: auto; background: var(--light); }
.world-cover figcaption { padding: 16px 20px; color: var(--muted); font: 12px/1.7 var(--serif); border-top: 1px solid var(--line); }
.world-notes { padding-top: 24px; max-width: 720px; }
.world-notes summary { font-size: 13px; }
.world-notes p { color: var(--muted); font: 16px/1.7 var(--serif); }
.world-notes a { text-decoration: underline; text-underline-offset: 4px; }
.coming-soon { min-height: 58vh; }
.page-footer { border-top: 1px solid var(--line); }
@media (max-width: 1000px) { .site-header .nav { height: auto; min-height: 74px; padding-block: 16px; flex-wrap: wrap; } }
@media (max-width: 650px) {
  .site-header nav { justify-content: flex-start; gap: 14px 18px; font-size: 11px; }
  .page-hero { padding-block: 48px 40px; }
  .page-intro { font-size: 18px; }
  .page-hero h1 { letter-spacing: -.04em; }
  .page-body { padding-bottom: 48px; }
}

.world-cover > .world-image-placeholder { width:100%; aspect-ratio:1500 / 830; background:var(--light); }

/* A compact, secondary town entry immediately precedes the contribution section. */
.world-section.world-section-building { padding-block: 42px 48px; }
.world-section-building .section-label { margin-bottom: 20px; }
.world-building { color: var(--muted); font: 11px/1.5 var(--mono); }
.world-entry { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-top: 24px; border-top: 1px solid var(--line); }
.world-entry h2 { margin: 0; font: 36px/1.2 var(--serif); letter-spacing: -1px; }
.world-entry .text-button { white-space: nowrap; }
@media (max-width: 650px) {
  .world-section.world-section-building { padding-block: 30px 36px; }
  .world-entry { flex-wrap: wrap; gap: 18px; }
  .world-entry h2 { font-size: 30px; }
}

/* Frosted shared navigation fades with scroll travel; upward scrolling restores it sooner. */
.site-header.public-header {
  position: sticky;
  top: 0;
  z-index: 30;
  background: rgba(246, 246, 243, .92);
  border-bottom: 1px solid rgba(209, 209, 202, .6);
  box-shadow: 0 3px 18px rgba(21, 21, 21, .035);
  opacity: calc(1 - var(--public-header-fade, 0));
  transform: translateY(calc(-6px * var(--public-header-fade, 0)));
  transition: opacity 120ms linear, transform 120ms linear;
}
@supports ((backdrop-filter: blur(18px)) or (-webkit-backdrop-filter: blur(18px))) {
  .site-header.public-header {
    background: rgba(246, 246, 243, .7);
    -webkit-backdrop-filter: blur(18px) saturate(125%);
    backdrop-filter: blur(18px) saturate(125%);
  }
}
.site-header.public-header.is-header-hidden { pointer-events: none; }
/* Let the first film extend beneath the glass without covering its title. */
.project-home .hero.hero-video {
  margin-top: calc(-1 * var(--public-header-height, 74px));
  min-height: min(854px, calc(100svh - 40px));
  padding-top: calc(100px + var(--public-header-height, 74px));
}
@media (max-width: 650px) {
  .project-home .hero.hero-video {
    min-height: calc(640px + var(--public-header-height, 142px));
    padding-top: calc(70px + var(--public-header-height, 142px));
  }
}
@media (prefers-reduced-motion: reduce) {
  .site-header.public-header { transition: none; transform: none; }
}
