/* Scroll gallery and mobile repairs. Loaded after the supplied design. */
html { scroll-padding-top:90px; }
body { overflow-x:clip; }
html[data-theme=render] {
 --bg:#080b10; --bg-2:#111720; --fg:#f3f1ec; --fg-2:#bdc2ca; --fg-3:#a0a8b4;
 --line:#e6dbbe25; --accent:#dbc7a0; --on-accent:#080b10; --mark:#dbc7a0;
 --glass:#111720db; --menu-bg:#0d131b; --menu-fg:#f3f1ec;
}
html[data-theme=render] .bg-fallback { background:radial-gradient(ellipse at 80% 18%,#293a4c77,transparent 60%),radial-gradient(ellipse at 20% 75%,#29342e55,transparent 65%),#080b10; }
html[data-theme=render] .ctrl,html[data-theme=render] .chip { border-radius:30px; }
html[data-theme=render] .ctrl__swatch { background:linear-gradient(145deg,#121d29,#dbc7a0)!important; }
html[data-theme=render] .pill--solid { background:#e7dcc4; color:#10151c; border-color:#e7dcc4; }
html[data-theme=render] .hero__l2 { color:#f3f1ec; }
html[data-theme=render] .hero__l2 em { color:#dac9ac; }
html[data-theme=render] .hero__backtype { -webkit-text-stroke-color:#e7dcc413; }
.hero__eyebrow { font-size:12px; line-height:1.6; }
.hero__lede { font-size:16px; }
.hero__copy { min-width:0; }
.hero__title,.section-title { overflow-wrap:normal; }
.hero__l2 { font-size:clamp(64px,6.8vw,120px); line-height:1.08; }
.hero__l1 { font-size:16px; line-height:1.55; }
.hero__ctas { flex-wrap:wrap; }
.hero__specimen { top:14%; bottom:22%; width:47vw; right:2vw; }
.orbit__caption,.orbit__note { font-size:12px; }
.hero__meta { font-size:12px; line-height:1.5; }
.work { padding-top:90px!important; }
.work__masthead { position:sticky; top:var(--header-h); z-index:6; padding:16px 0 22px; margin-bottom:35px; isolation:isolate; }
.work__masthead:before { content:""; position:absolute; inset:-2px calc(-1 * var(--pad)) 0; z-index:-1; pointer-events:none; background:linear-gradient(var(--bg) 0%,color-mix(in srgb,var(--bg) 96%,transparent) 76%,transparent); }
.work__masthead .section-head { margin-bottom:22px; align-items:center; gap:10px 18px; }
.work__masthead .section-head>.label:first-child { display:none; }
.work__masthead .section-title { font-weight:450; font-size:clamp(36px,4vw,64px); line-height:1.12; letter-spacing:-.045em; }
.work__masthead .section-head__count { font-size:14px; color:var(--fg-2); }
.work__bar { gap:14px 24px; margin:0!important; align-items:center; flex-wrap:wrap; }
.filters { min-width:0; max-width:100%; display:flex; flex-wrap:nowrap; gap:6px; overflow-x:auto; padding:3px 1px; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
.filters::-webkit-scrollbar { display:none; }
.filter,.view-btn { white-space:nowrap; min-height:44px; font-size:14px; border-radius:30px; padding:10px 16px; }
.filter { flex:0 0 auto; }
.views { gap:6px; }
.work__grid { --gutter:clamp(24px,3vw,46px); overflow:visible; }
.work__row { align-items:start; }
.card { scroll-margin-top:280px; }
.card__media { border-radius:14px; }
/* A decoded DOM poster must not sit flat over its curved GPU counterpart. */
html.has-webgl .work__grid .card__media video { opacity:0!important; pointer-events:none; }
html.is-scrolled .header:before { background:var(--bg); opacity:.98; bottom:0; }
.card__info { position:relative; background:transparent; border-radius:0; padding:16px 2px 20px; border-bottom:1px solid var(--line); gap:5px 14px; }
.card__title { font-size:clamp(18px,1.65vw,28px); font-weight:500; line-height:1.25; }
.card__cat { font-size:14px; line-height:1.45; }
.card__index,.card__year { font-size:12px; }
.card__frame { transform:none!important; }
.work__list .row__title { line-height:1.2; }
.main>section:not(.hero):not(.work):not(.story),.main>footer { scroll-margin-top:85px; }
.passmenu { max-height:calc(100dvh - var(--header-h) - 20px); overflow-y:auto; overscroll-behavior:contain; }
.passopt small { font-size:14px; line-height:1.45; }
.menu { padding-bottom:max(24px,env(safe-area-inset-bottom)); overflow-y:auto; overscroll-behavior:contain; min-height:0; }
.menu__nav { gap:14px; }
.menu__link { font-weight:450; line-height:1.2; }
.menu__email { overflow-wrap:anywhere; }
.menu-open,.lightbox-open { overflow:hidden!important; }
.experience-viewer,.experience-info,.pie,.menu,.lightbox { touch-action:pan-y; }
.experience-viewer,.experience-info { overscroll-behavior:contain; }
.experience-viewer__close,.experience-info__close { top:max(20px,env(safe-area-inset-top)); }
.experience-viewer__footer { padding-bottom:env(safe-area-inset-bottom); }
.header { padding-top:env(safe-area-inset-top); }
.filter:focus-visible,.view-btn:focus-visible,.ctrl:focus-visible,.menu-btn:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
@media(max-width:1000px) {
 .header__nav { display:none; }
 .header__controls { margin-left:auto; }
 .menu-btn { display:flex; }
 .work__bar { flex-direction:column; align-items:flex-start; }
 .work__masthead { padding-bottom:18px; }
}
@media(max-width:760px) {
 html { --pad:20px; --header-h:74px; scroll-padding-top:80px; }
 .header { gap:12px; padding-inline:max(16px,env(safe-area-inset-left)); }
 .logo__word { font-size:24px; }
 .logo__sub { display:none; }
 .header__controls { gap:6px; min-width:0; }
 .ctrl { padding-inline:11px; min-height:44px; border-radius:24px; }
 .ctrl__text { font-size:11px; line-height:1.35; }
 .ctrl__k,.ctrl__kbd,.ctrl__state { display:none; }
 .ctrl--icon,.menu-btn { flex:0 0 40px; width:40px; padding:0; min-height:44px; }
 .ctrl__swatch { flex:0 0 12px; width:12px; height:12px; }
 .ctrl--pass { max-width:155px; }
 .hero { min-height:auto; display:flex; flex-direction:column; padding:95px var(--pad) 40px!important; overflow:hidden; }
 .hero__specimen { position:relative; top:auto; bottom:auto; left:auto; right:auto; width:100%; height:clamp(180px,28svh,260px); order:1; }
 .hero__copy { order:2; width:100%; max-width:none; padding:22px 0 28px; gap:16px; }
 .hero__title { max-width:none; gap:14px; }
 .hero__l2 { font-size:clamp(44px,12vw,78px); line-height:1.09; letter-spacing:-.045em; }
 .hero__l2 em { letter-spacing:-.065em; }
 .hero__l1 { font-size:15px; line-height:1.5; max-width:28ch; }
 .hero__eyebrow { font-size:12px; letter-spacing:.06em; }
 .hero__lede { font-size:16px; max-width:36ch; }
 .hero__ctas { gap:10px; }
 .hero__ctas .pill { font-size:14px; min-height:48px; padding:12px 20px; }
 .passhud { position:relative; order:3; inset:auto; width:100%; margin-bottom:20px; display:flex; flex-wrap:wrap; gap:10px; min-height:48px; }
 .passhud__actions { margin-left:auto; }
 .passhud__name { font-size:14px; }
 .passhud__id .label { font-size:11px; }
 .passhud__actions .chip { min-height:44px; font-size:12px; }
 .hero__meta { position:relative; order:4; bottom:auto; margin:0; font-size:11px; }
 .hero__backtype { bottom:20%; font-size:45vw; }
 .orbit__note { font-size:11px; bottom:0; }
 .orbit__caption { font-size:11px; }
 .main>section:not(.hero):not(.story),.main>footer { padding:76px var(--pad); }
 .story__pin { height:auto!important; min-height:0; padding:65px var(--pad); display:flex; flex-direction:column; gap:28px; }
 .story__head .section-title { font-size:36px; line-height:1.15; }
 .story__stage { display:none; }
 .story__wipe { display:none!important; }
 .story__steps { flex-direction:column; margin:0; gap:24px; width:100%; }
 .story__steps li { position:relative!important; inset:auto!important; max-width:none; width:100%; opacity:1!important; visibility:visible!important; transform:none!important; }
 .story__steps p { font-size:16px; line-height:1.65; }
 .story__try { display:block; }
 .story__passes { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
 .story__passes button { min-height:44px; font-size:12px; }
 .work { padding-top:40px!important; }
 .work__masthead { margin-bottom:24px; padding:14px 0 18px; }
 .work__masthead .section-title { font-size:36px; line-height:1.15; }
 .work__masthead .section-head { margin-bottom:12px; }
 .work__bar { gap:8px; }
 .filters { width:100%; }
 .filter { padding:10px 14px; font-size:14px; }
 .view-btn { padding:8px 14px; font-size:12px; min-height:40px; }
 .work__grid { --gutter:28px; }
 .work__row--land,.work__row--port { grid-template-columns:minmax(0,1fr); }
 .card__media { max-height:65svh; }
 .card__info { padding:14px 1px 18px; }
 .card__title { font-size:21px; }
 .section-title { font-size:clamp(32px,9vw,46px); line-height:1.12; }
 .nowrap { white-space:normal; }
 .studio__grid,.contact__grid { grid-template-columns:minmax(0,1fr); gap:26px; }
 .studio__statement,.studio__copy { font-size:18px; line-height:1.65; }
 .studio__fig,.studio__col { grid-column:auto; }
 .studio__fig video { border-radius:12px; }
 .service { grid-template-columns:30px minmax(0,1fr); gap:12px; }
 .service__title { font-size:25px; line-height:1.2; }
 .service__tags { grid-column:2; font-size:14px; line-height:1.65; }
 .reel { height:auto!important; min-height:0; }
 .reel__sticky { position:relative; height:auto; min-height:0; padding:0; }
 .reel__media { width:100%; transform:none!important; }
 .reel__label { display:none; }
 .brief input,.brief textarea,.brief select { font-size:16px; }
 .contact__title { font-size:clamp(34px,10vw,54px); line-height:1.15; }
 .contact__email { font-size:clamp(18px,5vw,24px); overflow-wrap:anywhere; }
 .menu { padding:calc(var(--header-h) + 28px) var(--pad) max(28px,env(safe-area-inset-bottom)); gap:38px; }
 .menu__link { font-size:clamp(32px,9vw,48px); min-height:48px; }
 .menu__foot { gap:20px; }
 .passmenu { position:fixed; top:calc(var(--header-h) + 8px + env(safe-area-inset-top)); left:16px; right:16px; width:auto; max-height:calc(100dvh - var(--header-h) - 32px); background:var(--bg); backdrop-filter:none; -webkit-backdrop-filter:none; }
 .passmenu__opt { min-height:58px; }
 .cursor,.list-preview,.service-preview { display:none!important; }
 html.has-cursor,html.has-cursor a,html.has-cursor button { cursor:auto!important; }
 .pie__ring { gap:9px; }
 .pie__opt { min-height:48px; }
 .pie__center { top:10%; }
 .lightbox { padding:max(76px,env(safe-area-inset-top)) 16px max(24px,env(safe-area-inset-bottom)); }
 .lightbox__video { max-height:75svh; width:100%; object-fit:contain; }
 .lightbox__close { top:16px; right:16px; min-height:44px; }
 .hud { display:none; }
 .project { padding-top:90px; }
 .project__title { font-size:clamp(38px,11vw,60px); line-height:1.12; }
 .project__gallery { gap:24px; }
 .backstage { overflow-x:auto; max-width:100%; }
 .backstage__table { min-width:600px; }
}
@media(max-width:380px) {
 html { --pad:16px; }
 .ctrl--pass { max-width:130px; padding-inline:9px; }
 .header__controls { gap:4px; }
 .ctrl--icon,.menu-btn { flex-basis:36px; width:36px; }
 .hero__l2 { font-size:43px; }
 .work__masthead .section-title { font-size:31px; }
}
@media(prefers-reduced-motion:reduce) { .card__media,.work__masthead * { animation:none!important; transition:none!important; } }

/* A native sticky scene: swiping remains normal while the actual 3D L rotates. */
.story.is-mobile-story { height:300svh; min-height:0; position:relative; overflow:clip; }
.is-mobile-story .story__pin {
 position:sticky!important; top:calc(var(--header-h) + env(safe-area-inset-top));
 height:calc(100svh - var(--header-h) - env(safe-area-inset-top))!important;
 min-height:0; padding:18px var(--pad) 16px; display:grid;
 grid-template-columns:minmax(0,1fr); grid-template-rows:auto auto minmax(130px,1fr) auto auto;
 gap:12px; overflow:visible;
}
.is-mobile-story .story__head { grid-area:auto; z-index:2; }
.is-mobile-story .story__head>.label { font-size:10px; margin-bottom:8px; }
.is-mobile-story .story__head .section-title { font-size:clamp(28px,8vw,38px); line-height:1.05; margin:0; }
.story__phase-nav { position:relative; z-index:2; display:flex; gap:6px; padding-bottom:7px; border-bottom:1px solid var(--line); }
.story__phase-nav:after { content:""; position:absolute; left:0; bottom:-1px; height:1px; width:100%; background:var(--accent); transform:scaleX(var(--phase-progress,0)); transform-origin:left; }
.story__phase { flex:1; min-width:0; min-height:40px; padding:6px 4px; border:1px solid transparent; border-radius:24px; color:var(--fg-2); background:transparent; font-family:var(--f-mono); font-size:11px; letter-spacing:.04em; transition:background .2s,color .2s,border-color .2s; }
.story__phase[aria-pressed=true] { color:var(--fg); background:var(--glass); border-color:var(--line); }
.story__phase:active { background:color-mix(in srgb,var(--accent) 20%,transparent); }
.story__phase:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.is-mobile-story .story__stage { display:block; position:relative; inset:auto; width:100%; height:100%; min-height:130px; grid-area:auto; }
.is-mobile-story .story__wipe { display:flex!important; z-index:1; transition:none; }
.is-mobile-story .story__wipe span { display:none; }
.is-mobile-story .story__steps { grid-area:auto; display:grid; grid-template-columns:minmax(0,1fr); margin:0; width:100%; gap:0; align-self:stretch; z-index:2; }
.is-mobile-story .story__steps li { grid-area:1/1; position:relative!important; inset:auto!important; width:100%; max-width:none; padding-left:14px; opacity:0!important; visibility:hidden!important; transform:none!important; pointer-events:none; transition:opacity .18s; }
.is-mobile-story .story__steps li.is-active { opacity:1!important; visibility:visible!important; pointer-events:auto; }
.is-mobile-story .story__steps li>.label { font-size:10px; }
.is-mobile-story .story__steps h3 { font-size:24px; margin:2px 0 5px; }
.is-mobile-story .story__steps p { font-size:14px; line-height:1.5; margin:0; }
.is-mobile-story .story__try { grid-area:auto; display:flex; flex-wrap:nowrap; gap:8px; padding-top:10px; border-top:1px solid var(--line); margin:0; }
.is-mobile-story .story__try>.label { max-width:90px; font-size:9px; line-height:1.5; }
.is-mobile-story .story__passes { display:flex; flex-wrap:nowrap; gap:6px; margin:0; }
.is-mobile-story .story__passes button { min-height:40px; padding:8px 12px; font-size:10px; }
.is-mobile-story .story__passes button:nth-child(n+3) { display:none; }
/* Motion-off and unavailable-WebGL keep the logo and all descriptions visible. */
.story.is-mobile-story.is-static-story { height:auto; }
.is-static-story .story__pin { position:relative!important; top:auto; height:auto!important; padding-block:36px; grid-template-rows:auto auto auto auto; }
.is-static-story .story__phase-nav { display:none; }
.is-static-story .story__stage { height:260px; }
.is-static-story .story__steps { display:flex; flex-direction:column; gap:24px; }
.is-static-story .story__steps li { opacity:1!important; visibility:visible!important; pointer-events:auto; }
.is-static-story .story__wipe { display:none!important; }
@media(max-height:700px) {
 .is-mobile-story .story__pin { gap:8px; padding-top:12px; padding-bottom:10px; }
 .is-mobile-story .story__head .section-title { font-size:28px; }
 .is-mobile-story .story__head>.label { display:none; }
 .is-mobile-story .story__steps p { font-size:13px; line-height:1.45; }
 .is-mobile-story .story__steps h3 { font-size:22px; }
 .is-mobile-story .story__steps li>.label { display:none; }
 .is-mobile-story .story__try { padding-top:6px; }
}
@media(max-width:599px) and (max-height:580px) {
 .is-mobile-story .story__pin { grid-template-rows:auto auto minmax(100px,1fr) auto; }
 .is-mobile-story .story__head .section-title { font-size:26px; }
 .is-mobile-story .story__stage { min-height:100px; }
 .is-mobile-story .story__try { display:none; }
 .is-static-story .story__try { display:flex; }
}
@media(min-width:600px) and (max-height:500px) {
 .is-mobile-story .story__pin { grid-template-columns:minmax(0,1fr) minmax(0,1fr); grid-template-rows:auto auto minmax(100px,1fr) auto; gap:8px 20px; padding-block:12px; }
 .is-mobile-story .story__head { grid-area:1/1/2/2; }
 .is-mobile-story .story__head .section-title { font-size:25px; }
 .is-mobile-story .story__phase-nav { grid-area:2/1/3/2; }
 .is-mobile-story .story__stage { grid-area:1/2/5/3; min-height:150px; }
 .is-mobile-story .story__steps { grid-area:3/1/4/2; }
 .is-mobile-story .story__try { grid-area:4/1/5/2; }
 .is-static-story .story__pin { display:flex; }
}
