/* Scroll-controlled Higgsfield logo entrance. */
.logo-portal { height:320svh; position:relative; background:#000; scroll-margin-top:0; --portal-copy:1; --portal-flat:1; }
.logo-portal-stage { position:sticky; top:0; height:100svh; overflow:hidden; display:grid; place-items:center; background:#000; isolation:isolate; }
.logo-portal video,.portal-frame { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; pointer-events:none; opacity:0; filter:grayscale(1); transform:scale(var(--portal-fill,1)); transform-origin:center; }
.logo-portal.portal-frame-ready .portal-frame { opacity:1; }
.logo-portal.portal-frame-ready .portal-original { opacity:0; }
.portal-original { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; z-index:1; opacity:1; pointer-events:none; }
.logo-portal:not(.portal-frame-ready) .portal-original { opacity:1; }
.portal-wordmark { position:absolute; left:var(--gutter); bottom:100px; margin:0; font-size:clamp(40px,6vw,90px); font-weight:400; letter-spacing:-.055em; opacity:var(--portal-copy); }
.portal-caption { position:absolute; right:var(--gutter); bottom:116px; text-align:right; color:var(--gray); opacity:var(--portal-copy); }
.portal-footer { position:absolute; left:var(--gutter); right:var(--gutter); bottom:26px; display:flex; justify-content:space-between; gap:24px; align-items:center; color:var(--gray); }
.portal-footer a { padding:12px 0; color:var(--white); }
.portal-still { height:100svh; }
.portal-still video { display:none; }
.logo-portal.portal-still .portal-original { opacity:1; }
@media(max-width:700px) {
 .logo-portal video,.portal-frame { width:160%; max-width:none; left:-30%; }
 .portal-original { width:160%; max-width:none; left:-30%; }
 .portal-wordmark { bottom:145px; font-size:56px; }
 .portal-caption { left:var(--gutter); right:auto; bottom:103px; text-align:left; font-size:9px; }
 .portal-footer { font-size:9px; gap:15px; }
}
@media(prefers-reduced-motion:reduce) { .logo-portal { height:100svh; } .logo-portal video { display:none; } }

/* Fixed-screen portfolio: gestures change the scene, never the viewport. */
html.screen-mode,body.screen-mode { height:100%; overflow:hidden; overscroll-behavior:none; }
.screen-mode #main { position:fixed; inset:0; height:100dvh; }
.screen-mode .screen-page { position:absolute; inset:0; width:100%; max-width:none; height:100%; min-height:0; margin:0; padding:calc(var(--screen-header,100px) + 20px) var(--gutter) 90px; display:flex; flex-direction:column; overflow:hidden; opacity:0; pointer-events:none; transition:opacity .4s ease; background:var(--black,#050505); }
.screen-mode .screen-page.is-current { opacity:1; pointer-events:auto; }
.screen-mode .screen-introduction.is-portal-preview { opacity:var(--eye-reveal,0); clip-path:circle(calc(var(--eye-reveal,0) * 75vmax) at 50% 50%); transition:none; pointer-events:none; z-index:2; }
.screen-mode .screen-page[hidden],.screen-controls[hidden] { display:none!important; }
.screen-mode .screen-logo { padding:0; background:#000; }
.screen-mode .logo-portal-stage { position:absolute; inset:0; height:100%; }
.screen-controls { position:fixed; z-index:25; bottom:16px; left:var(--gutter); right:var(--gutter); display:flex; align-items:center; justify-content:space-between; gap:15px; border-top:1px solid var(--line); padding-top:10px; background:var(--black,#050505); }
.screen-controls button { color:var(--white); background:none; border:1px solid var(--line); width:44px; height:44px; cursor:pointer; font-size:20px; }
.screen-controls button:disabled { opacity:.2; cursor:default; }
.screen-controls span { text-align:center; font-size:9px; color:var(--gray); }
.screen-heading { flex:none; margin-bottom:20px; }
.screen-heading p { color:var(--gray); margin-bottom:9px; font-size:10px; }
.screen-heading h2 { font-weight:400; font-size:clamp(26px,4vw,54px); line-height:1.05; letter-spacing:-.045em; }
.screen-body { display:flex; flex-direction:column; flex:1; min-height:0; }
.screen-project .project-card { display:flex; flex-direction:column; height:100%; min-height:0; padding:0; }
.screen-project .card-media,.screen-project .card-media.card-media--contain { flex:1; min-height:0; aspect-ratio:auto; }
.screen-project .card-media img,.screen-project .card-media video { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; }
.screen-project .card-caption { flex:none; padding-bottom:4px; }
.screen-feature .feature-media { flex:1; min-height:0; aspect-ratio:auto; }
.screen-feature .feature-media>img,.screen-feature .feature-media>video { width:100%; height:100%; object-fit:contain; }
.screen-feature .project-meta { flex:none; margin-top:18px; }
.screen-index .discipline-list { width:100%; margin:auto 0; }
.screen-index .discipline-list a { padding:clamp(14px,3vh,30px) 0; }
.screen-event .event-row { display:flex; flex-direction:column; flex:1; min-height:0; padding:0; gap:15px; align-items:stretch; border:0; }
.screen-event .event-row img { flex:1; min-height:0; width:100%; object-fit:contain; }
.screen-event .event-row>.meta,.screen-event .event-row>.event-arrow { display:none; }
.screen-event .event-row-copy { flex:none; }
.screen-event .event-row h3 { margin-bottom:8px; }
.screen-bts .bts-clip { display:flex; flex-direction:column; height:100%; min-height:0; }
.screen-bts .bts-clip video { flex:1; min-height:0; height:0; width:100%; aspect-ratio:auto; object-fit:contain; }
.screen-bts .bts-clip figcaption { flex:none; padding:15px 0 0; border:0; }
.screen-about .screen-body { justify-content:center; }
.screen-about .about-copy { max-width:800px; }
.screen-about .about-copy>p { font-size:clamp(14px,2vh,20px); line-height:1.6; margin-bottom:20px; }
.screen-about .about-copy .large-copy { font-size:clamp(26px,4.5vh,48px); line-height:1.15; }
.screen-portrait .portrait-scene { flex:1; height:100%; min-height:0; margin:0; --background-progress:1!important; --subject-progress:1!important; }
.screen-portrait .about-photo { position:relative; top:auto; height:100%; width:100%; max-width:700px; display:flex; flex-direction:column; align-items:center; }
.screen-portrait .about-photo-frame { flex:1; min-height:0; width:auto; max-width:100%; aspect-ratio:var(--portrait-aspect,3/4); }
.screen-portrait .about-photo-frame>img:first-child { width:100%; height:100%; object-fit:contain; }
.screen-portrait .about-photo figcaption { flex:none; width:100%; font-size:9px; }
.screen-portrait.is-current .portrait-background { animation:scene-background .7s both; }
.screen-portrait.is-current .portrait-foreground { animation:scene-subject 1.3s .25s both; }
@keyframes scene-background { from{opacity:0}to{opacity:1} }
@keyframes scene-subject { from{opacity:0;clip-path:inset(100% 0 0)}to{opacity:1;clip-path:inset(0)} }
.screen-contact .screen-body { justify-content:center; }
.screen-contact .contact-row { display:flex; flex-direction:column; gap:35px; align-items:flex-start; }
.screen-contact [data-contact-links] { display:flex; flex-direction:column; align-items:flex-start; gap:20px; overflow-wrap:anywhere; }
.screen-mode .screen-introduction .hero-introduction { min-height:0; margin:24px 0; }
.screen-mode .screen-introduction .hero-intro-copy { padding:25px 0; }
.screen-mode .screen-introduction .hero-intro-copy h1 { font-size:clamp(64px,12vw,150px); }
.screen-mode .screen-introduction .hero-bottom { flex:none; }
@media(max-width:700px) {
 .screen-mode .screen-page { padding-top:calc(var(--screen-header,100px) + 15px); }
 .screen-mode .screen-logo { padding:0; }
 .screen-project .card-caption { flex-direction:column; gap:8px; margin-top:13px; }
 .screen-project .card-caption h3 { font-size:22px; }
 .screen-feature .project-meta>.meta { display:none; }
 .screen-mode .screen-introduction .hero-intro-copy h1 { font-size:clamp(60px,20vw,100px); }
}
@media(max-height:650px) {
 .screen-heading { margin-bottom:10px; }
 .screen-heading h2 { font-size:26px; }
 .screen-index .discipline-list a { padding:10px 0; }
 .screen-about .about-copy>p { font-size:13px; margin-bottom:12px; }
 .screen-about .about-copy .large-copy { font-size:23px; }
 .screen-project .card-caption { margin-top:8px; }
 .screen-project .card-caption h3 { font-size:18px; }
}
@media(prefers-reduced-motion:reduce) {
 .screen-mode .screen-page { transition:none; }
 .screen-portrait.is-current .portrait-background,.screen-portrait.is-current .portrait-foreground { animation:none; }
}

/* One category screen, with previews directly below each link. */
.screen-index .screen-heading { margin-bottom:clamp(12px,2vh,24px); }
.screen-index .screen-body { display:block; overflow-y:auto; overscroll-behavior:contain; scrollbar-width:thin; }
.screen-index .discipline-list { margin:0; }
.screen-index .discipline-list li { position:relative; }
.screen-index .discipline-list a { grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) 24px; gap:16px; padding:clamp(9px,1.5vh,14px) 0; }
.screen-index .discipline-title { font-size:clamp(18px,2.1vw,27px); }
.screen-index .discipline-description { font-size:9px; line-height:1.4; }
.screen-index .discipline-arrow { grid-column:auto; grid-row:auto; font-size:22px; }
.discipline-preview { display:grid; grid-template-rows:0fr; opacity:0; transition:grid-template-rows .35s ease,opacity .35s ease; }
.discipline-preview-strip { min-height:0; overflow:hidden; display:flex; gap:8px; }
.discipline-preview img { height:clamp(70px,13vh,120px); width:calc((100% - 16px) / 3); object-fit:cover; filter:grayscale(1); padding-bottom:10px; }
.discipline-preview-toggle { display:none; }
@media(hover:hover) and (min-width:701px) {
 .discipline-list li:hover .discipline-preview { grid-template-rows:1fr; opacity:1; }
 .discipline-list li:hover .discipline-preview img { filter:grayscale(0); }
}
.discipline-list li:has(a:focus-visible) .discipline-preview,.discipline-list li.preview-open .discipline-preview { grid-template-rows:1fr; opacity:1; }
.screen-index.is-current .screen-heading,.screen-index.is-current .discipline-list a { animation:category-fade .7s both; animation-delay:var(--entry-delay,0ms); }
@keyframes category-fade { from { opacity:0; transform:translateY(8px); filter:blur(3px); } to { opacity:1; transform:translateY(0); filter:blur(0); } }
@media(max-width:700px) {
 .screen-index .discipline-list a { grid-template-columns:minmax(0,1fr) 22px; gap:4px 12px; }
 .screen-index .discipline-description { grid-column:1; }
 .screen-index .discipline-arrow { grid-column:2; grid-row:1 / 3; }
 .screen-index .screen-heading h2 { font-size:30px; }
}
@media(hover:none), (max-width:700px) {
 .screen-index .discipline-list a { padding-right:48px; }
 .discipline-preview-toggle { display:block; position:absolute; right:0; top:4px; width:40px; height:40px; border:1px solid var(--line); background:transparent; color:var(--white); font-size:22px; cursor:pointer; }
 .discipline-preview-toggle[aria-expanded=true] { transform:rotate(45deg); }
}
@media(prefers-reduced-motion:reduce) {
 .screen-index.is-current .screen-heading,.screen-index.is-current .discipline-list a { animation:none; }
 .discipline-preview { transition:none; }
}

/* Biography lives on the portraits, above a soft black glass panel. */
.portrait-bio { position:absolute; z-index:3; bottom:0; left:0; right:0; padding:clamp(18px,3vw,30px); color:#fff; background:linear-gradient(180deg,rgba(0,0,0,.48),rgba(0,0,0,.88)); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px); border-top:1px solid rgba(255,255,255,.14); }
.portrait-bio h2 { margin:8px 0 14px; font-size:clamp(26px,3.5vw,40px); font-weight:400; letter-spacing:-.045em; line-height:1.05; }
.portrait-bio p { margin:0 0 12px; font-size:clamp(12px,1.5vw,15px); line-height:1.5; }
.portrait-bio .large-copy { font-size:clamp(16px,1.8vw,20px); line-height:1.3; }
.portrait-bio .meta { font-size:9px; color:#fff; line-height:1.5; }
.portrait-bio .about-location { display:block; margin-top:15px; }
.screen-portrait-bio.is-current .portrait-bio { animation:category-fade .8s .25s both; }
@media(max-height:650px) {
 .portrait-bio { padding:12px 16px; }
 .portrait-bio h2 { font-size:24px; margin:6px 0 8px; }
 .portrait-bio p { font-size:11px; margin-bottom:7px; line-height:1.35; }
 .portrait-bio .large-copy { font-size:14px; }
 .portrait-bio .about-location { margin-top:8px; font-size:8px; }
}
@media(prefers-reduced-motion:reduce) { .screen-portrait-bio.is-current .portrait-bio { animation:none; } }

/* Keep the entrance copy above the opaque logo poster and decoded frames. */
.portal-wordmark,.portal-caption,.portal-footer { z-index:2; }
.portal-wordmark { line-height:1.1; }
.portal-caption { max-width:calc(100% - 2 * var(--gutter)); line-height:1.5; }
.contact-name { flex-basis:100%; margin:0; font-size:clamp(18px,2.5vw,26px); line-height:1.3; }
.screen-contact .contact-name { flex-basis:auto; }
.screen-contact .screen-body { overflow-y:auto; }
.screen-contact .contact-row { padding-bottom:0; gap:24px; }
@media(max-width:700px) {
 .portal-wordmark { bottom:160px; font-size:clamp(44px,14vw,56px); }
 .portal-caption { bottom:112px; }
 .portal-footer { align-items:flex-end; bottom:max(26px,env(safe-area-inset-bottom)); }
 .portal-footer > * { flex:1; }
 .portal-footer a { text-align:right; }
 .screen-contact [data-contact-links] { gap:16px; }
}

/* The eye approach fills the viewport without a header or footer cutting it. */
.screen-mode .site-header { transition:opacity .35s ease; }
.screen-mode.portal-active .site-header { opacity:var(--portal-chrome,1); transition:none; }
.portal-footer { opacity:var(--portal-copy,1); }
.screen-mode.portal-immersed .site-header,
.screen-mode.portal-immersed .portal-footer { pointer-events:none; }
@media(prefers-reduced-motion:reduce) { .screen-mode .site-header { transition:none; } }
