@charset "UTF-8";
:root {
  color-scheme: dark;
  --night: #080f12;
  --paper: #eee5d3;
  --gold: #d3b982;
  --quiet: #b6beb8;
  --edge: clamp(24px, 5.4vw, 100px);
  --serif: Georgia, 'Times New Roman', serif;
  --sans: Arial, Helvetica, sans-serif;
  --mono: 'Courier New', monospace;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--night); }
body { margin: 0; color: var(--paper); background: var(--night); font-family: var(--sans); -webkit-font-smoothing: antialiased; }
[hidden] { display: none !important; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; cursor: pointer; background: transparent; border: 0; }
a, button { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
a:focus-visible, button:focus-visible { outline: 1px solid #ead6a7; outline-offset: 7px; }
::selection { background: #d3b982; color: #080f12; }
.skip { position: fixed; left: 24px; top: 18px; z-index: 100; background: var(--paper); color: var(--night); padding: 16px; transform: translateY(-160%); }
.skip:focus { transform: none; }
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.artwork { position: fixed; inset: 0; z-index: 0; overflow: hidden; background: #080f12 url('./eternity-poster.webp') center / cover no-repeat; }
#eternity { display: block; width: 100%; height: 100%; }
.artwork-shade { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, #050c0f66, transparent 20%, transparent 47%, #050c0f44 68%, #050c0fd9 91%, #050c0ff0); }
.artwork-shade::before, .artwork-shade::after { content: ''; position: absolute; inset: 0; }
.artwork-shade::before { background: linear-gradient(90deg, #050c0ff5, #050c0fd9 32%, #050c0f20 62%, transparent); opacity: var(--left-scrim, 0); }
.artwork-shade::after { background: linear-gradient(270deg, #050c0ff5, #050c0fd9 33%, #050c0f20 67%, transparent); opacity: var(--right-scrim, 0); }
.frame-mark { position: absolute; top: 50%; width: 18px; height: 1px; background: #c8b68d70; }
.frame-mark-a { left: 0; }
.frame-mark-b { right: 0; }
.gallery-header { position: fixed; z-index: 20; top: 0; left: 0; width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 30px; padding: 30px var(--edge); background: linear-gradient(#060d10de, #060d1000); }
.signature { display: flex; align-items: baseline; gap: 12px; min-height: 44px; padding-top: 8px; }
.signature > span { font: 27px/1 var(--serif); letter-spacing: -.8px; }
.signature small { font: 9px/1 var(--mono); color: var(--gold); }
.gallery-caption { position: absolute; left: 50%; transform: translateX(-50%); color: var(--quiet); font: 9px/1.5 var(--mono); letter-spacing: 2px; }
.gallery-header nav { display: flex; gap: 33px; align-items: center; }
.gallery-header nav a { min-height: 44px; display: flex; align-items: center; gap: 12px; font-size: 11px; letter-spacing: .3px; }
.gallery-header a:hover { color: var(--gold); }
main { position: relative; z-index: 2; }
.movement { position: relative; min-height: 100vh; min-height: 100svh; isolation: isolate; }
.movement-mark { position: absolute; left: var(--edge); top: 134px; display: flex; align-items: center; gap: 25px; font: 9px/1.6 var(--mono); letter-spacing: 1.5px; color: var(--quiet); }
.movement-mark > span:first-child { color: var(--gold); }
.arrival-lockup { position: absolute; left: var(--edge); top: 27%; text-align: left; width: min(780px, 55%); }
h1 { margin: 0; font: normal clamp(56px, 6.1vw, 116px)/1.04 var(--serif); letter-spacing: -.055em; text-shadow: 0 8px 70px #040a0d80; }
h1 em { font-weight: normal; color: var(--gold); }
.arrival-descriptor { margin: 0 0 28px; font: 12px/1.7 var(--sans); color: var(--quiet); letter-spacing: .3px; }
.arrival-links { display: flex; flex-wrap: wrap; gap: 10px 28px; margin-top: 27px; font-size: 12px; }
.arrival-links a { display: inline-flex; gap: 16px; align-items: center; min-height: 44px; border-bottom: 1px solid #d3b98266; }
.arrival-links a:first-child { color: var(--gold); }
.arrival-links a:hover { border-color: var(--gold); }
.art-caption { position: absolute; right: var(--edge); bottom: 122px; width: 280px; }
.art-caption p { margin: 0 0 7px; color: #d5d9ca; font: italic 17px/1.5 var(--serif); }
.art-source { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; color: var(--quiet); font: 9px/1.7 var(--mono); }
.art-source:hover { color: var(--gold); }
/* All quotations share a grid cell: the longest reserves the reading space. */
.arrival-quotes { max-width: 460px; margin-top: 28px; }
.arrival-quote-stack { display: grid; }
.arrival-quote { grid-area: 1 / 1; margin: 0; visibility: hidden; opacity: 0; transition: opacity .45s ease, visibility .45s; }
.arrival-quote.is-current { visibility: visible; opacity: 1; }
.arrival-quote blockquote { margin: 0; }
.arrival-quote p { margin: 0; color: #c6d0c7; font: 18px/1.6 var(--serif); }
.arrival-quote figcaption { margin-top: 14px; color: var(--quiet); font: 9px/1.6 var(--mono); }
.next-quote { display: flex; align-items: center; gap: 18px; min-height: 44px; margin-top: 4px; padding: 0 10px 0 0; color: var(--quiet); font: 10px/1.5 var(--mono); }
.next-quote:hover { color: var(--gold); }
.scroll-invitation { position: absolute; left: var(--edge); bottom: 115px; display: flex; align-items: center; gap: 18px; min-height: 44px; color: var(--quiet); font: 10px/1.5 var(--mono); }
.scroll-stroke { width: 42px; height: 1px; background: linear-gradient(90deg, #c5ad7e, #c5ad7e20); transform-origin: left; }
.scroll-invitation:hover .scroll-stroke { transform: scaleX(1.3); transition: transform .4s; }
.imprint, .aperture { display: flex; align-items: center; padding: 150px var(--edge); }
.aperture { justify-content: flex-end; }
.passage { position: relative; width: min(530px, 43vw); }
.passage::before { content: ''; position: absolute; inset: -65px -24px; z-index: -1; pointer-events: none; background: radial-gradient(ellipse, #050c0fdd 12%, #050c0fac 44%, transparent 72%); }
.passage-label { display: block; color: var(--gold); font: 9px/1.8 var(--mono); letter-spacing: 2.8px; margin-bottom: 34px; }
.passage h2 { margin: 0; font: normal clamp(34px, 3.65vw, 66px)/1.24 var(--serif); letter-spacing: -.035em; text-wrap: balance; }
.passage-caption { margin: 29px 0 0; color: #c6d0c7; font: 15px/1.9 var(--sans); }
.passage-link { display: inline-flex; align-items: center; justify-content: space-between; gap: 42px; min-height: 44px; margin-top: 38px; padding-bottom: 9px; border-bottom: 1px solid #ad977569; font-size: 11px; color: #d9c597; }
.passage-link:hover { border-bottom-color: var(--gold); }
.aperture .passage { width: min(620px, 48vw); }
.aperture .passage-label { margin-bottom: 24px; }
.aperture h2 { font-size: clamp(30px, 3.2vw, 50px); line-height: 1.22; }
.aperture .reciprocity-quote { margin: 30px 0 0; }
.aperture blockquote { margin: 0; color: var(--gold); font: italic clamp(20px, 1.6vw, 24px)/1.5 var(--serif); }
.aperture blockquote p { margin: 0; }
.aperture figcaption { margin-top: 12px; color: var(--quiet); font: 11px/1.7 var(--mono); }
.aperture .passage-caption { margin-top: 24px; font-size: 14px; line-height: 1.85; }
.aperture .reciprocity-ending { margin: 24px 0 0; font: normal 36px/1.2 var(--serif); }
.aperture .passage-link { margin-top: 24px; gap: 24px; }
.marginalia { position: absolute; right: var(--edge); bottom: 133px; margin: 0; text-align: right; color: var(--quiet); font: italic 13px/1.8 var(--serif); }
.remaining-lockup { position: absolute; width: calc(100% - 2 * var(--edge)); left: var(--edge); top: 51%; text-align: center; }
.remaining-lockup > .passage-label { margin-bottom: 25px; text-align: left; }
.remaining h2 { margin: 0; font: normal clamp(80px, 13.2vw, 210px)/.95 var(--serif); letter-spacing: -.055em; color: var(--paper); }
.ending-links { display: flex; justify-content: center; flex-wrap: wrap; gap: 24px 55px; margin-top: 45px; }
.ending-links a { display: inline-flex; gap: 25px; padding: 12px 0; border-bottom: 1px solid #b29a725c; font-size: 12px; color: #d9c597; }
.remaining-lockup > button { margin-top: 20px; min-height: 44px; font: italic 15px/1.6 var(--serif); color: #c5cec4; }
.remaining-lockup > button span { display: inline-block; margin-left: 13px; font: 15px var(--sans); }
.colophon { position: absolute; left: var(--edge); right: var(--edge); bottom: 123px; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px 20px; color: #a8b4ad; font: 8px/1.6 var(--mono); letter-spacing: .6px; }
.gallery-dock { position: fixed; left: var(--edge); right: var(--edge); bottom: 26px; z-index: 25; display: flex; align-items: center; justify-content: space-between; gap: 32px; padding-top: 13px; border-top: 1px solid #ced0b52a; }
.movement-navigation { display: flex; gap: 18px; }
.movement-navigation a { display: flex; align-items: center; gap: 12px; min-height: 44px; color: #a8b4ad; font: 9px/1.5 var(--mono); }
.movement-navigation i { display: block; width: 26px; height: 1px; background: #869a894a; transition: width .8s, background .8s; }
.movement-navigation a[aria-current] { color: #e7d6ad; }
.movement-navigation a[aria-current] i { width: 65px; background: #d3b982; }
.motion-controls { display: flex; align-items: center; gap: 32px; }
.motion-controls button { min-height: 44px; font-size: 11px; }
.motion-controls button span:last-child { margin-left: 7px; }
.pause-symbol { display: inline-block; width: 15px; font-size: 10px; }
button:disabled { cursor: default; color: #bdc7c0; }
.silence-controls { position: fixed; inset: auto var(--edge) 28px; z-index: 35; display: flex; gap: 30px; align-items: center; justify-content: flex-end; padding-top: 15px; border-top: 1px solid #ced0b526; }
.silence-controls button { min-height: 44px; font-size: 12px; }
.silence-caption { margin-right: auto; font: 9px/1.6 var(--mono); letter-spacing: 2px; color: #b6beb8; }
body.silent { overflow: hidden; }
body.silent .gallery-header, body.silent main, body.silent .gallery-dock, body.silent .frame-mark { visibility: hidden; }
body.silent .artwork-shade { opacity: 0; transition: opacity 1.2s; }
body.no-webgl #silence-pause { display: none; }
.print-only { display: none; }
@media (min-width: 1800px) {
  .arrival-lockup { top: 25%; }
  .passage { width: 620px; }
}
@media (max-height: 800px) and (min-width: 800px) {
  .arrival-lockup { top: 23%; }
  h1 { font-size: clamp(54px, 6vw, 80px); }
  .arrival-quotes { margin-top: 20px; }
  .scroll-invitation { display: none; }
  .movement-mark { top: 110px; }
  .remaining-lockup { top: 40%; }
  .remaining h2 { font-size: 140px; }
  .ending-links { margin-top: 24px; }
  .colophon { bottom: 95px; }
}
@media (max-width: 720px) {
  :root { --edge: 24px; }
  .artwork { background-image: url('./eternity-poster-portrait.webp'); }
  .gallery-header { padding-top: 18px; gap: 20px; }
  .signature { gap: 8px; }
  .signature > span { font-size: 25px; }
  .gallery-caption { display: none; }
  .gallery-header nav { gap: 16px; }
  .gallery-header nav a { font-size: 11px; }
  .movement-mark { top: 105px; gap: 16px; font-size: 8px; }
  .arrival { min-height: max(970px, 112svh); }
  .arrival-lockup { top: calc(45svh + 24px); left: var(--edge); width: calc(100% - 2 * var(--edge)); text-align: left; }
  .arrival-descriptor { margin: 0 0 18px; font-size: 12px; line-height: 1.6; color: #c6d0c7; }
  h1 { font-size: clamp(36px, 10.7vw, 70px); line-height: 1.06; }
  .arrival-quotes { margin-top: 23px; }
  .arrival-quote p { font-size: 15px; line-height: 1.6; }
  .arrival-links { gap: 6px 18px; margin-top: 17px; font-size: 11px; }
  .art-caption { display: none; }
  .scroll-invitation { display: none; }
  .scroll-stroke { width: 23px; }
  .imprint, .aperture { align-items: flex-end; padding: 155px var(--edge) 150px; }
  .passage { width: 100%; max-width: 480px; }
  .passage h2 { font-size: clamp(31px, 7.8vw, 48px); line-height: 1.28; }
  .passage-label { margin-bottom: 22px; font-size: 8px; }
  .passage-caption { font-size: 14px; margin-top: 22px; }
  .passage-link { margin-top: 22px; font-size: 11px; }
  .aperture .passage { width: 100%; max-width: 540px; }
  .aperture h2 { font-size: clamp(28px, 6.4vw, 40px); line-height: 1.25; }
  .aperture .reciprocity-quote { margin-top: 24px; }
  .marginalia { display: none; }
  .artwork-shade::before, .artwork-shade::after { background: linear-gradient(0deg, #050c0ff5 0%, #050c0ff0 34%, #050c0fb8 59%, transparent 85%); }
  .remaining-lockup { top: 47%; }
  .remaining h2 { font-size: clamp(64px, 15vw, 108px); }
  .remaining-lockup > .passage-label { margin-bottom: 26px; text-align: center; }
  .ending-links { flex-direction: column; align-items: center; gap: 8px; margin-top: 30px; }
  .ending-links a { font-size: 11px; }
  .remaining-lockup > button { font-size: 14px; margin-top: 12px; }
  .colophon { bottom: 112px; justify-content: center; font-size: 8px; text-align: center; }
  .colophon > span:first-child, .colophon > a { display: none; }
  .gallery-dock { bottom: 15px; gap: 8px; padding-top: 9px; }
  .movement-navigation { gap: 9px; }
  .movement-navigation a { gap: 5px; font-size: 8px; }
  .movement-navigation i { width: 8px; }
  .movement-navigation a[aria-current] i { width: 23px; }
  .motion-controls { gap: 15px; }
  .motion-controls button { font-size: 10px; }
  #pause-art .pause-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .silence-caption { position: absolute; bottom: 74px; left: 0; font-size: 8px; }
  .silence-controls { bottom: 18px; justify-content: space-between; }
  .frame-mark { width: 10px; }
}
@media (max-height: 700px) and (max-width: 720px) {
  .arrival { min-height: 860px; }
  .arrival-lockup { top: calc(48svh + 32px); }
  .arrival-lockup::before { content: ''; position: absolute; inset: -30px -16px; z-index: -1; pointer-events: none; background: radial-gradient(ellipse, #050c0ff5 12%, #050c0fdf 55%, transparent 76%); }
  .arrival-descriptor { margin-bottom: 15px; }
  .arrival-links { margin-top: 12px; }
  .arrival-quotes { margin-top: 20px; }
  .imprint, .aperture { padding-bottom: 105px; }
  .passage h2 { font-size: 28px; }
  .passage-caption { font-size: 12px; }
  .remaining-lockup { top: 35%; }
  .remaining h2 { font-size: 60px; }
  .colophon { bottom: 87px; }
  .movement-mark { top: 95px; }
}
@media (max-width: 360px) {
  .gallery-header { gap: 12px; }
  .gallery-header nav { gap: 12px; }
  .gallery-header nav a { font-size: 10px; }
  .arrival-links { gap: 12px; font-size: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}
@media print {
  @page { size: A4; margin: 17mm 16mm; }
  html, body { color-scheme: light; background: white; color: black; }
  .artwork, .gallery-header, main, .gallery-dock, .silence-controls, .skip, #art-status { display: none !important; }
  .print-only { display: block; color: black; white-space: pre-wrap; font: 9pt/1.5 'Courier New', monospace; overflow-wrap: break-word; }
  .print-only h1 { color: black; font: 20pt/1.3 var(--serif); letter-spacing: 0; text-shadow: none; }
  .print-only a { text-decoration: underline; }
}
