/* A full-width film plane extends the existing type, space and graphite palette. */
html{scrollbar-gutter:stable}
[hidden]{display:none!important}
.showreel{padding-block:96px 110px;background:none}
.showreel::before{display:none}
.showreel-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:30px;position:relative;z-index:1}
.showreel-heading .eyebrow{font-size:14px;font-weight:400}
.work-return{font-size:14px;letter-spacing:.10em;line-height:1.4;display:inline-flex;align-items:center;gap:16px;padding-block:14px;position:relative}
.work-return::after{content:'';position:absolute;left:0;right:0;bottom:8px;height:1px;background:#d8d8d8;transform:scaleX(.16);transform-origin:left;opacity:.5;transition:transform .65s var(--ease),opacity .65s}
.work-return:hover::after,.work-return:focus-visible::after{transform:scaleX(1);opacity:.9}
.showreel-frame{display:block;position:relative;width:100%;aspect-ratio:16/9;max-height:min(82svh,calc(100svh - 180px));overflow:hidden;border-radius:0;background:#080808;isolation:isolate}
.showreel-video{display:block;width:100%;height:100%;object-fit:cover}
.film-transition{position:fixed;inset:0;z-index:100;overflow:hidden;pointer-events:none;isolation:isolate}
.entering-projects{overflow:hidden}
.entering-projects .site-header{opacity:0!important;transition:opacity .35s!important}
.work-view .project-1 .project-image img{backface-visibility:hidden}
.work-view #projects-title:focus:not(:focus-visible){outline:none}
.projects-active .site-header{--header-opacity:1!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important}
.projects-active .site-header.quiet{transform:none;visibility:visible!important;pointer-events:auto!important}
.projects-active .ambient{opacity:.35}
/* Equal films, held together in one quiet editorial composition. */
.work-view{position:relative;min-height:100svh;padding:146px var(--gutter) 48px;background:radial-gradient(ellipse at 50% 4%,#17221d2e,transparent 66%),#050505}
.work-view-heading{position:relative;max-width:1320px;margin:0 auto 28px;display:flex;justify-content:space-between;align-items:center;gap:20px}
.work-view-heading h1{font-size:14px;font-weight:400;letter-spacing:.12em}
.work-total{color:#949d97;margin-left:12px;letter-spacing:0}
.work-view .projects{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;max-width:1320px;margin-inline:auto}
.work-view .project{width:100%;max-width:none;margin:0;min-width:0;opacity:1!important;transform:none!important}
.work-view .project-link{display:block;border-radius:16px}
.work-view .project-image{width:100%;height:auto;min-height:0;max-height:none;aspect-ratio:4/3;border-radius:16px;border:1px solid #ffffff12;background:#101211}
.work-view .project-image img{width:100%;height:100%;object-fit:cover;filter:none;transform:scale(1);transition:transform 1.1s var(--ease),filter .9s}
.work-view .project-image::after{z-index:2;border:none;background:radial-gradient(ellipse 240px 210px at var(--light-x,50%) var(--light-y,40%),#ffffff42 0%,#effff016 34%,transparent 72%);opacity:calc(.13 + var(--light-on,0)*.87);mix-blend-mode:screen;transition:opacity .7s}
.work-view .project-link:hover .project-image{box-shadow:0 0 0 1px #dbe8df29,0 20px 50px #0005}
.work-view .project-link:hover .project-image img,.work-view .project-link:focus-visible .project-image img{transform:scale(1.035);filter:brightness(1.08)}
.work-view .project-link:focus-visible .project-image::after{opacity:1}
.work-view .project-info{position:relative;inset:auto;display:grid;grid-template-columns:minmax(0,1fr) 18px;gap:8px 10px;padding:17px 2px 0}
.work-view .project h3{font-size:20px;line-height:1.2;letter-spacing:-.025em}
.work-view .project-title>p{font-size:14px;line-height:1.4;margin-top:6px;color:#b9c1bb}
.work-view .project-meta{font-size:12px;line-height:1.5;color:#87938b;margin-top:0;display:flex;flex-wrap:wrap;gap:3px 10px}
.work-view .project-meta>p+p::before{content:'·';margin-right:8px}
.work-view .project-arrow{font-size:18px;color:#99a49c}
.work-view .watch-film{z-index:3;right:12px;bottom:12px;gap:8px;font-size:12px;padding:8px 10px;background:#05080777;backdrop-filter:blur(12px);border-radius:100px;border:1px solid #ffffff20}
.work-view-end{display:flex;justify-content:space-between;align-items:center;gap:24px;width:100%;max-width:1320px;margin:44px auto 0;padding:22px 0 0;border-top:1px solid #ffffff12;font-size:14px}
@media(max-width:1099px){.work-view{padding-top:122px}.work-view .projects{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 22px;max-width:900px}.work-view-heading,.work-view-end{max-width:900px}.work-view .project-image{aspect-ratio:16/9}}
@media(max-width:700px){
 .showreel{padding-block:54px 66px}.showreel-heading{margin-bottom:20px;gap:10px}.showreel-heading .eyebrow{font-size:12px}.showreel-frame{aspect-ratio:4/3;max-height:none}
 .work-view{padding:108px 20px 32px}.work-view-heading{gap:12px;margin-bottom:22px}.work-view-heading h1,.work-return{font-size:12px;letter-spacing:.075em}.work-total{margin-left:6px}
 .work-view .projects{gap:26px 14px}.work-view .project-image{border-radius:12px;aspect-ratio:4/3}.work-view .project-info{padding-top:12px;grid-template-columns:minmax(0,1fr);gap:7px}.work-view .project h3{font-size:17px}.work-view .project-title>p{font-size:13px}.work-view .project-meta{font-size:12px;gap:2px}.work-view .project-arrow{display:none}.work-view .watch-film{right:8px;bottom:8px;padding:5px 8px}.work-view-end{margin-top:28px;gap:14px;flex-wrap:wrap;font-size:13px}
}

/* A persistent centered invitation, with a soft lens response on the film. */
.showreel-frame,.portal-film{--film-vignette:linear-gradient(180deg,#030504d1 0%,#0305042b 22%,#0305041a 48%,#03050438 76%,#030504d9 100%),radial-gradient(ellipse at 50% 48%,transparent 45%,#0008 100%)}
.showreel-frame::after{content:'';position:absolute;inset:0;z-index:1;background:var(--film-vignette);opacity:.48;pointer-events:none;transition:opacity 1.1s cubic-bezier(.22,1,.36,1)}
.showreel-frame .showreel-video{transition:filter 1.1s cubic-bezier(.22,1,.36,1),transform 1.3s cubic-bezier(.22,1,.36,1)}
.showreel-frame .showreel-cta{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);white-space:nowrap;font-size:clamp(19px,2.1vw,30px);font-weight:500;letter-spacing:.12em;line-height:1.4;color:#fff;text-shadow:0 2px 22px #0009;pointer-events:none;transition:text-shadow .9s}
.showreel-frame:focus-visible{outline:2px solid #eee;outline-offset:6px}
.showreel-frame:focus-visible .showreel-video{filter:blur(6px);transform:scale(1.035)}
.showreel-frame:focus-visible::after{opacity:.72}
@media(hover:hover){.showreel-frame:hover .showreel-video{filter:blur(6px);transform:scale(1.035)}.showreel-frame:hover::after{opacity:.72}.showreel-frame:hover .showreel-cta{text-shadow:0 2px 28px #ffffff25,0 2px 22px #0009}}
@media(prefers-reduced-motion:reduce){.showreel-frame .showreel-video,.showreel-frame::after,.showreel-frame .showreel-cta{transition:none}.showreel-frame:hover .showreel-video,.showreel-frame:focus-visible .showreel-video{transform:none}}

.showreel-cta .portal-letter,.portal-type .portal-letter{display:inline-block;line-height:1;letter-spacing:0;margin-right:.12em}
.showreel-glow{position:absolute;z-index:1;left:var(--light-x,50%);top:var(--light-y,50%);width:clamp(300px,52vw,720px);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,#fff5 0%,#f1f5ff20 28%,#ffffff06 48%,transparent 70%);mix-blend-mode:screen;opacity:0;pointer-events:none;transition:opacity .75s ease}
.showreel-frame[data-pointer="true"] .showreel-glow{opacity:1}
.showreel-frame::after{z-index:0}
.portal-shade{position:absolute;inset:0;background:#030404;opacity:0}
.portal-camera{position:absolute;inset:0;transform-origin:0 0;will-change:transform}
.portal-film{position:absolute;overflow:hidden;background:#080808}
.portal-film .showreel-video{width:100%;height:100%;object-fit:cover}
.portal-film::after{content:'';position:absolute;inset:0;background:var(--film-vignette);opacity:var(--film-shade-opacity,.48)}
.portal-type{position:absolute;white-space:nowrap;color:#fff;transform-origin:0 0;text-shadow:none}
.portal-window{position:absolute;inset:0;overflow:hidden;will-change:clip-path;opacity:0;background:#050505}
.portal-arrival-view{position:absolute;left:0;top:0;width:100%;margin:0;opacity:0;pointer-events:none}.portal-arrival-view .project-image::after{opacity:.13}.portal-arrival-view .watch-film{opacity:0}
.portal-gallery{position:absolute;inset:0;pointer-events:none}
.portal-tile{position:absolute;min-width:0;min-height:0;overflow:hidden;background:#111;will-change:transform}
.portal-tile img{width:100%;height:100%;object-fit:cover;display:block}
.portal-tile::after{content:'';position:absolute;inset:0;background:linear-gradient(140deg,#ffffff09,transparent 36%,#0002)}
@media(prefers-reduced-motion:reduce){.showreel-glow{display:none}.portal-camera,.portal-window{will-change:auto}}

.portal-baseline{display:inline-block;width:0;height:0;padding:0;margin:0;vertical-align:baseline}

/* Light catches the aperture once as the camera passes through its plane. */
.portal-lens{position:absolute;pointer-events:none;z-index:4;opacity:0;mix-blend-mode:screen;transform:translate(-50%,-50%);width:min(86vw,1040px);height:140px;background:radial-gradient(ellipse 50% 2% at center,#fff9, #d8fff238 22%,transparent 74%),radial-gradient(ellipse 18% 24% at center,#eafff33b,transparent 75%);filter:blur(.8px)}
.portal-rim{position:absolute;pointer-events:none;z-index:3;opacity:0;border-radius:50%;padding:2px;background:conic-gradient(from var(--rim-angle,0deg),transparent 10%,#defff00a 23%,#f1fffaa6 34%,transparent 43%,transparent 70%,#bfe0ff3b 82%,transparent 91%);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;filter:drop-shadow(0 0 10px #e1ffee30)}
@media(prefers-reduced-motion:reduce){.work-view .project-link:hover .project-image img{transform:none}.portal-tile{will-change:auto}}

.portal-arrival-view .project-image{transition:none}

/* A fine rounded contour is drawn around the invitation, catching a quiet moving light. */
.showreel-outline{position:absolute;left:-28px;top:-17px;width:calc(100% + 56px);height:calc(100% + 34px);overflow:visible;opacity:0;transition:opacity .65s ease;filter:drop-shadow(0 0 7px #e7fff014)}
.showreel-outline rect{x:1px;y:1px;width:calc(100% - 2px);height:calc(100% - 2px);rx:18px;fill:none;stroke-width:clamp(1.6px,.16vw,2.2px);stroke-linecap:round;vector-effect:non-scaling-stroke}
.showreel-outline-trace{stroke:url(#showreel-edge);stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset 1.85s cubic-bezier(.33,0,.2,1)}
.showreel-outline-glint{stroke:#f0fff8;stroke-width:clamp(1.6px,.16vw,2.2px)!important;stroke-dasharray:5 95;stroke-dashoffset:100;opacity:0}
.showreel-frame:is(:focus-visible,.is-opening) .showreel-outline{opacity:1}
.showreel-frame:is(:focus-visible,.is-opening) .showreel-outline-trace{stroke-dashoffset:0}
.showreel-frame:is(:focus-visible,.is-opening) .showreel-outline-glint{animation:showreel-edge-drift 6s linear 1.6s infinite,showreel-edge-appear 1.2s ease 1.6s forwards}
@media(hover:hover){.showreel-frame:hover .showreel-outline{opacity:1}.showreel-frame:hover .showreel-outline-trace{stroke-dashoffset:0}.showreel-frame:hover .showreel-outline-glint{animation:showreel-edge-drift 6s linear 1.6s infinite,showreel-edge-appear 1.2s ease 1.6s forwards}}
@keyframes showreel-edge-drift{to{stroke-dashoffset:0}}
@keyframes showreel-edge-appear{to{opacity:.6}}
@media(max-width:700px){.showreel-outline{left:-21px;top:-14px;width:calc(100% + 42px);height:calc(100% + 28px)}.showreel-outline rect{rx:15px}}
@media(prefers-reduced-motion:reduce){.showreel-outline,.showreel-outline-trace{transition:none}.showreel-outline-glint{display:none}}

@media(max-width:700px){.work-view .project-meta>p+p::before{display:none}}
