/* Interaction fidelity. Hero composition, type and portrait crop remain in composition.css. */
.header.journey-away{opacity:0;pointer-events:none}
.header{transition:background .35s,box-shadow .35s,opacity .4s}

/* The timeline keeps native scrolling, a travelling dot and a rolling clock. */
.story{position:relative}.story-ambient{position:sticky;top:0;height:100svh;margin-bottom:-100svh;z-index:0;pointer-events:none;overflow:hidden}
.story-ambient:after{content:"";position:absolute;inset:0;background:radial-gradient(54% 66% at 50% 50%,#fcfaf8e6,#fcfaf8aa 46%,transparent 80%)}
.story-ambient>i{position:absolute;inset:-8%;opacity:0;background:radial-gradient(46% 54% at 0 14%,var(--light-a),transparent 74%),radial-gradient(42% 48% at 100% 86%,var(--light-b),transparent 74%);transition:opacity 1.2s;animation:story-drift 24s ease-in-out infinite alternate;animation-play-state:paused}
.story-ambient>i.is-active{opacity:1;animation-play-state:running}
.story-ambient>i:nth-child(1){--light-a:#e27a3abf;--light-b:#5c84ca99}.story-ambient>i:nth-child(2){--light-a:#84ae68bf;--light-b:#5c84ca99}.story-ambient>i:nth-child(3){--light-a:#b26a94bf;--light-b:#e27a3a99}.story-ambient>i:nth-child(4){--light-a:#e2b246bf;--light-b:#b28e8499}
.story-pin{position:relative;z-index:1}
.story-tunnel{position:absolute;left:-40%;top:0;width:180%;height:100%;z-index:-1;pointer-events:none;opacity:.65;mask:radial-gradient(closest-side,#000 55%,transparent)}
@media(max-width:767.98px){.story-tunnel{display:none}}
.story-year{display:flex;align-items:center;min-height:1em}.year-digit{height:1em;overflow:hidden;contain:paint;clip-path:inset(0);padding-right:.02em;display:block;line-height:1}
.year-reel{display:flex;flex-direction:column;transform:translateY(calc(var(--digit,0)*-1em));transition:transform .9s cubic-bezier(.65,0,.2,1)}
.year-digit:nth-child(2) .year-reel{transition-delay:.04s}.year-digit:nth-child(3) .year-reel{transition-delay:.08s}.year-digit:nth-child(4) .year-reel{transition-delay:.12s}
.year-reel>i{display:block;flex:none;height:1em;font-style:normal;line-height:1;text-align:center}.story-year-word{display:none}
.story-year .story-year-word{display:none}.story-year.is-word .year-digit{display:none}.story-year.is-word .story-year-word{display:block}
.story-window{position:relative}.story-track:before,.story-track>li:before{display:none}
.story-rail{position:absolute;left:.45rem;top:var(--rail-start,0px);height:var(--rail-length,100%);width:2px;background:color-mix(in srgb,var(--ink) 14%,transparent);pointer-events:none}
.story-rail-fill{position:absolute;inset:0;background:var(--ink);transform:scaleY(var(--rail-progress,0));transform-origin:top}
.story-dot-track{position:absolute;left:calc(.45rem + 1px - 1.25rem);top:calc(var(--rail-start,0px) - 1rem);height:calc(var(--rail-length,100%) + 2rem);width:2.5rem;padding:.45rem 0;pointer-events:none}
.story-traveller{position:sticky;display:block;top:var(--story-focus,calc(50svh - .55rem));margin:0 auto;width:1.1rem;height:1.1rem;border-radius:50%;background:var(--ink);box-shadow:0 0 0 .4rem color-mix(in srgb,var(--ink) 8%,transparent);transition:background .4s,box-shadow .4s}
.story.is-current .story-traveller{background:#7fb069;box-shadow:0 0 0 .45rem #7fb0692e}
.story-date{min-height:1.4em}
html[data-theme=dark] .story-ambient:after{display:none}html[data-theme=dark] .story-ambient{opacity:.45}
@keyframes story-drift{from{transform:translate(-2%,-1.5%) scale(1)}to{transform:translate(2.5%,2%) scale(1.06)}}

/* The dark closing page, shared by standalone and embedded rooms. */
.grand-footer.contact{position:relative;overflow:hidden;isolation:isolate;padding:0;margin-top:0;border-radius:2rem 2rem 0 0;background:#1a1818;color:#e8e4e0}
.grand-footer:before{display:none}.grand-footer-inner{position:relative;z-index:1;padding-top:7rem;padding-bottom:1.75rem}
.footer-eyebrow{display:flex;align-items:center;gap:.6rem;font-size:.8125rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:#e8e4e099}
.footer-eyebrow>i{width:.5rem;height:.5rem;flex:none;border-radius:50%;background:#8fbf7a;box-shadow:0 0 0 0 #8fbf7a66;animation:footer-pulse 2.2s ease-out infinite}
.grand-footer h2{margin:1.4rem 0 1.25rem;line-height:.98}.grand-footer h2>span{color:#e8e4e06b}
.grand-footer .contact-copy{color:#e8e4e0b3;max-width:46ch;font-size:1.0625rem;line-height:1.6}
.grand-footer .contact-actions{margin-top:2.25rem;flex-wrap:wrap}
.grand-footer .pill.primary{background:#e8e4e0;color:#1a1818}.grand-footer .pill.primary i{background:#1a1818;color:#e8e4e0}
.grand-footer .pill.outline{border-color:#e8e4e033;color:#e8e4e0}
.footer-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:2.25rem 1.5rem;margin-top:5rem;padding-top:2.5rem;border-top:1px solid #e8e4e01f}
.footer-columns h3{font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#e8e4e0a8;margin:0 0 1rem}
.footer-columns ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem;font-size:.9375rem;line-height:1.4;color:#e8e4e0d9}
.footer-columns a,.footer-columns button{padding:0;text-align:left;font-size:inherit;min-height:1.5rem}.footer-columns a:hover,.footer-columns button:hover{color:white}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-top:2rem;min-height:3rem;color:#e8e4e0ad;font-size:.8125rem}
.footer-bottom button{min-height:44px;font-size:inherit}
html[data-theme=dark] .grand-footer{background:#0f0e0e;box-shadow:inset 0 1px #e8e4e01f}
@keyframes footer-pulse{70%{box-shadow:0 0 0 .55rem #8fbf7a00}100%{box-shadow:0 0 0 0 #8fbf7a00}}
.to-top{--top-bg:#1a1818;--top-fg:#e8e4e0;position:fixed;right:max(1.25rem,env(safe-area-inset-right));bottom:max(1.25rem,env(safe-area-inset-bottom));z-index:60;width:3.25rem;height:3.25rem;display:grid;place-items:center;padding:0;border-radius:50%;background:var(--top-bg);color:var(--top-fg);box-shadow:0 .625rem 1.875rem -.625rem #0007,0 0 0 1px #e8e4e024;opacity:0;visibility:hidden;transform:translateY(.75rem) scale(.9);transition:opacity .35s,visibility .35s,transform .45s,background .3s,color .3s}
.to-top.is-visible{opacity:1;visibility:visible;transform:none}.to-top.is-on-dark{--top-bg:#e8e4e0;--top-fg:#1a1818}
.top-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.top-ring circle{fill:none;stroke:currentColor;stroke-width:1.8;stroke-dasharray:150.796;stroke-dashoffset:calc(150.796*(1 - var(--page-progress,0)));opacity:.85}
.top-label{position:absolute;right:calc(100% + .6rem);padding:.4rem .75rem;white-space:nowrap;border-radius:999px;background:var(--top-bg);color:var(--top-fg);font-size:.8125rem;opacity:0;transform:translateX(.4rem);transition:opacity .25s,transform .35s}
@media(hover:hover){.to-top:hover{transform:translateY(-3px)}.to-top:hover .top-label{opacity:1;transform:none}}
.to-top:focus-visible{outline:2px solid #c4b0b0;outline-offset:4px}

/* One continuous visit through a door, backed by the same standalone routes. */
@media(min-width:640px){.doors{will-change:transform}}
@media(max-width:639.98px){.doors-pin{will-change:transform}}
.doors.is-approaching{z-index:5}
.door-transition{z-index:180;overflow:hidden;isolation:isolate}.door-transition[hidden]{display:none}
.journey-scene{position:absolute!important;max-width:none!important;width:100%!important;margin:0!important;transform-origin:0 0;will-change:transform}
.journey-shade{position:absolute;inset:0;background:var(--paper);opacity:0;pointer-events:none}
.door-room:has(.room-threshold){isolation:isolate}
.room-threshold{position:absolute;inset:0;z-index:1;background:var(--paper);opacity:0;pointer-events:none}
.room-arrival{position:fixed;inset:0;z-index:180;background:var(--paper);opacity:0;pointer-events:none}
.room-arrival[hidden]{display:none}
.room-stage{position:fixed;inset:0;z-index:181;background:var(--paper);opacity:0;overscroll-behavior:contain}
.room-stage[hidden]{display:block;visibility:hidden}.room-stage.is-live{opacity:1}
.room-stage.is-entering-room{background:transparent}
.room-stage iframe{position:absolute;inset:0;visibility:hidden;width:100%;height:100%;border:0;background:var(--paper)}
.room-stage:not([hidden]) iframe.is-current{visibility:visible}.room-stage:focus-visible{outline:none}
:root.door-snapshot-flight::view-transition{background:var(--paper)}
:root.door-snapshot-flight::view-transition-group(root){animation:none}
:root.door-snapshot-flight::view-transition-old(root),
:root.door-snapshot-flight::view-transition-new(root){animation:none;mix-blend-mode:normal}
:root.door-snapshot-flight::view-transition-new(root){opacity:0}
.door-return,.door-return body,.room-handoff{background:var(--paper)}
.door-return :is(#main,.header,.loader,.to-top){visibility:hidden}
.room-handoff{position:fixed;inset:0;z-index:190}
html.embedded-room .theme-switch{display:none}html.embedded-room .room-main{animation:none}
body.in-room .to-top{opacity:0;visibility:hidden}
.room-page .room-main{padding-bottom:5rem}.room-page>.grand-footer{border-radius:2rem 2rem 0 0}
.room-page .project{position:sticky;top:6.5rem;box-shadow:0 -.3rem 2rem #0000000d;transform-origin:center top}
.room-page .project-visual{perspective:70rem}.room-page .monitor-screen{transform:rotateY(-8deg) rotateX(2deg);transform-style:preserve-3d;box-shadow:.5rem .3rem 0 #353535,1rem 1rem 2.5rem #0004}
.room-page .project:nth-child(even) .monitor-screen{transform:rotateY(8deg) rotateX(2deg);box-shadow:-.5rem .3rem 0 #353535,-1rem 1rem 2.5rem #0004}
@media(max-width:767.98px){
  .story-rail{left:.35rem}.story-dot-track{left:calc(.35rem + 1px - 1.25rem)}
  .story-ambient:after{background:radial-gradient(80% 60% at 50% 50%,#fcfaf8e6,transparent 85%)}
  .grand-footer-inner{padding-top:5.5rem}.footer-eyebrow{font-size:.65rem}
  .footer-columns{gap:2.25rem 1.5rem;margin-top:3.5rem}
  .footer-columns ul{gap:0}.footer-columns a,.footer-columns button{min-height:44px;display:inline-flex;align-items:center}.footer-columns li{min-height:2rem}
  .footer-bottom{font-size:.65rem;flex-wrap:wrap}.grand-footer .contact-copy{font-size:.9375rem}
  .room-page .project{position:relative;top:auto}.room-page .monitor-screen{transform:rotateY(-5deg)}
}
@media(max-width:399.98px){.footer-columns{grid-template-columns:1fr;gap:2rem}}
@media(prefers-reduced-motion:reduce){
  .year-reel,.story-ambient>i{transition:none}
  .story-ambient>i,.footer-eyebrow>i{animation:none}
  .room-stage{transition:none}
}
@media(forced-colors:active){.grand-footer,.to-top{forced-color-adjust:none}}
