/* VSN / PROJECT ROOMS. Optional spatial layout; the document remains the timeline. */
:root { --iw-ready:1; }
html.iw-restoring { overflow-anchor:none; }
.discipline-page .dp-work.iw-enabled { overflow:clip; }
.iw-enabled .iw-journey { position:relative;margin-top:clamp(60px,8vw,120px); }
.discipline-page[data-page] .iw-enabled .dp-projects.iw-stage {
  position:sticky;top:0;display:block!important;height:100svh;min-height:700px;
  width:100vw;max-width:none;margin:0 0 0 calc(50% - 50vw)!important;padding:0;
  perspective:1550px;perspective-origin:50% 43%;isolation:isolate;overflow:clip;
  background:radial-gradient(ellipse at 50% 56%,color-mix(in srgb,var(--dc) 7%,transparent),transparent 66%),var(--bg);
}
.iw-stage::before { content:'';position:absolute;inset:0;pointer-events:none;z-index:8;background:linear-gradient(90deg,var(--bg),transparent 9%,transparent 91%,var(--bg)); }
.iw-room { position:absolute;inset:-2%;pointer-events:none;z-index:0;color:var(--fg);transform:translate3d(var(--iw-room-shift,0px),0,0); }
.iw-room svg { width:100%;height:100%;display:block; }
.iw-room-plane { fill:var(--dc);opacity:.055; }
.iw-room-metal { fill:currentColor;opacity:.085; }
.iw-room-edge { fill:currentColor;opacity:.17; }
.iw-room-shadow { fill:currentColor;opacity:.035; }
.iw-floor { position:absolute;left:10%;right:10%;top:69%;height:22%;pointer-events:none;background:radial-gradient(ellipse,color-mix(in srgb,var(--dc) 16%,transparent),transparent 68%);filter:blur(18px);transform:rotateX(65deg);transform-origin:center top; }
.iw-floor::after { content:'';position:absolute;left:17%;right:17%;top:13%;height:25%;border-radius:50%;background:#000;opacity:.38;filter:blur(20px); }
.iw-enabled .iw-stage .dp-project:nth-child(n) {
  position:absolute!important;inset:0!important;width:100%;height:100%;margin:0!important;padding:0!important;
  display:block!important;opacity:1!important;transform:none!important;transition:none!important;
  overflow:visible;background:none;border:0;pointer-events:none;transform-style:preserve-3d;
}
.iw-enabled .iw-stage .iw-mount {
  position:absolute;top:43%;left:50%;width:min(76vw,calc(58svh * var(--iw-ratio,1.78)),1180px);
  height:min(58svh,calc(76vw / var(--iw-ratio,1.78)),calc(1180px / var(--iw-ratio,1.78)));
  transform-origin:50% 55%;transform-style:preserve-3d;will-change:transform,opacity;
  background:color-mix(in srgb,var(--fg) 5%,var(--bg));
  box-shadow:0 35px 70px -35px #000b,0 0 0 1px color-mix(in srgb,var(--fg) 15%,transparent);
}
.iw-mount::before { content:'';position:absolute;inset:0;pointer-events:none;transform:translateZ(-11px) translateX(9px);background:color-mix(in srgb,var(--dc) 13%,#151619);box-shadow:inset -5px 0 7px #0007; }
.iw-mount::after { content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,#fff0,#fff1 48%,#fff0 68%);opacity:var(--iw-sheen,0); }
.discipline-page[data-page] .iw-enabled .dp-project .ph {
  width:100%;height:100%;aspect-ratio:auto!important;margin:0!important;border:0!important;
  transform:none!important;clip-path:none!important;box-shadow:none!important;background:var(--bg);
}
.discipline-page[data-page] .iw-enabled .dp-project .ph img { width:100%;height:100%;object-fit:contain;transform:none!important;transition:none!important; }
.iw-enabled .iw-stage .dp-project.iw-current .iw-mount { pointer-events:auto; }
.iw-enabled .iw-stage .dp-project .ph:focus-visible { outline:2px solid var(--fg);outline-offset:8px; }
.discipline-page[data-page] .iw-enabled .dp-project .work-meta {
  position:absolute;inset:auto clamp(34px,7vw,130px) 128px!important;
  margin:0!important;padding:0!important;display:block!important;transform:none!important;
  border:0;background:none;pointer-events:none;
}
.iw-caption { display:grid;grid-template-columns:38px minmax(0,1fr);column-gap:20px;row-gap:8px;max-width:100%; }
.discipline-page[data-page] .iw-enabled .work-meta b { font-size:clamp(26px,3.2vw,49px);line-height:1.08;max-width:31ch; }
.discipline-page[data-page] .iw-enabled .work-meta .wm-r { grid-column:2;color:var(--fg-dim);font-size:11px;letter-spacing:.06em;line-height:1.5; }
.discipline-page[data-page] .iw-enabled .dp-project-index { grid-row:1/3;font-size:10px;color:var(--fg-dim);padding-top:5px; }
.iw-topline { position:absolute;left:clamp(34px,7vw,130px);right:clamp(34px,7vw,130px);top:88px;z-index:10;display:flex;justify-content:space-between;gap:24px;pointer-events:none;color:var(--fg-dim);font:400 9px/1.4 var(--disp);letter-spacing:.14em;text-transform:uppercase; }
.iw-controls { position:absolute;left:clamp(34px,7vw,130px);right:clamp(34px,7vw,130px);bottom:28px;z-index:10;display:flex;align-items:center;gap:12px;border-top:1px solid var(--hair);padding-top:20px;color:var(--fg); }
.iw-step { font:400 11px/1 var(--disp);letter-spacing:.08em;min-width:72px;font-variant-numeric:tabular-nums; }
.iw-button { display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--hair);border-radius:50%;background:var(--bg);color:var(--fg);font-size:20px;cursor:pointer;transition:background .2s,color .2s; }
.iw-button:hover { background:var(--fg);color:var(--bg); }
.iw-button:disabled { opacity:.28;cursor:default; }
.iw-button:focus-visible,.iw-skip:focus-visible { outline:2px solid var(--fg);outline-offset:5px; }
.iw-skip { margin-left:auto;display:inline-flex;gap:25px;align-items:center;padding:12px 0;color:var(--fg);font:400 10px/1.5 var(--disp);letter-spacing:.07em;text-transform:uppercase; }
.iw-skip span { font-size:20px; }
.iw-end { display:block;height:1px;width:1px;overflow:hidden;outline:none; }
@media(min-width:761px) and (max-width:999px) {
 .iw-enabled .iw-stage .iw-mount { top:42%;height:min(53svh,calc(88vw / var(--iw-ratio,1.78)));width:min(88vw,calc(53svh * var(--iw-ratio,1.78))); }
 .discipline-page[data-page] .iw-enabled .dp-project .work-meta { bottom:145px!important; }
 .discipline-page[data-page] .iw-enabled .work-meta b { font-size:clamp(30px,4.5vw,42px);max-width:27ch; }
 .iw-controls { bottom:37px; }
}
@media(min-width:1000px) and (max-height:800px) {
 .iw-enabled .iw-stage .iw-mount { top:41%;height:min(53svh,calc(76vw / var(--iw-ratio,1.78)),calc(1180px / var(--iw-ratio,1.78)));width:min(76vw,calc(53svh * var(--iw-ratio,1.78)),1180px); }
}
@media(prefers-reduced-motion:reduce) { .iw-mount,.iw-caption { transition:none!important; } }
