/* Interactive home and service stage. Ordinary content views use styles.css. */
.experience.lab-shell{grid-template-rows:76px minmax(0,1fr) 32px 100px}
.experience>.stage{isolation:isolate;background:#121210}
.scene-layer{position:absolute;inset:0;z-index:0;overflow:hidden;visibility:visible;opacity:1;transition:opacity .24s ease}
.experience:is([data-view=work],[data-view=about],[data-view=contact]) .scene-layer{visibility:hidden;opacity:0;pointer-events:none}
.scene-layer .ambient{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(90deg,#121210aa,transparent 62%),url('/lab/studio-v1.webp');background-size:100% 100%;background-position:center;transform:scale(1.025)}
.scene-layer .art{position:absolute;inset:0 0 0 32%;mask-image:linear-gradient(90deg,transparent,#000 15%);touch-action:pan-y}
.scene-layer .art canvas{position:relative;z-index:1;display:block;width:100%;height:100%;opacity:0;transition:opacity .35s ease}
.scene-layer .art[data-ready=true] canvas{opacity:1}
.scene-layer .art[data-fallback=true] canvas{opacity:0}
.scene-layer .fallback{position:absolute;left:20%;top:18%;width:60%;height:64%;object-fit:contain;object-position:center;opacity:0;pointer-events:none}
.scene-layer .art[data-fallback=true] .fallback{opacity:1}
.scene-layer .art[data-ready=true]:not([data-fallback=true]) .fallback{opacity:0}
#scene-loader{position:absolute;inset:0;z-index:3;display:grid;place-items:center;pointer-events:none;opacity:1;visibility:visible;transition:opacity .25s ease,visibility 0s linear .25s}
#scene-loader .scene-loader-mark{width:43px;height:38px;object-fit:contain;transform-origin:center;animation:scene-loader-turn 1.2s linear infinite}
#scene-loader-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap}
#scene-loader:is([data-state=ready],[data-state=error],[data-state=hidden]),.art:is([data-ready=true],[data-fallback=true]) #scene-loader{opacity:0;visibility:hidden}
#scene-loader:not([data-state=loading]) .scene-loader-mark{animation-play-state:paused}
@keyframes scene-loader-turn{to{transform:rotate(360deg)}}
.scene-view{pointer-events:none;z-index:1}
.scene-view .copy{position:absolute;left:5%;top:50%;width:40%;max-width:520px;transform:translateY(-50%);pointer-events:none}
.scene-view .copy :is(a,button){pointer-events:auto}
.scene-view .eyebrow{font-size:9px;letter-spacing:.2em;color:#bca48e;margin-bottom:25px}
.scene-view #heading{font-weight:500;letter-spacing:-.055em;line-height:1.06;font-size:clamp(42px,4.8vw,70px);margin-bottom:27px;text-wrap:balance}
.scene-view #heading>span{display:inline;color:#d8a77d}
.scene-view #description{max-width:365px;font-size:13px;line-height:1.85;color:#b6afa5}
.scene-view #description p{line-height:1.75}
.scene-view #description .trinity{font-size:15px;font-weight:500;color:var(--ink);margin-bottom:5px;letter-spacing:-.015em}
.scene-view .hint{font-size:10px;color:#bba58f;margin-top:28px;letter-spacing:.025em;line-height:1.7}
.experience[data-selected=true] .scene-view #heading{font-size:clamp(32px,3.5vw,50px)}
.experience[data-selected=true] .scene-view .hint{display:none}
.scene-view .brand-details{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:26px;padding-top:17px;border-top:1px solid #eee7da24;width:100%;max-width:390px;color:#ba9475;font-size:9px;line-height:1.5}
.scene-view .brand-details b{display:block;margin-top:7px;font-size:11px;font-weight:500;color:var(--ink)}
.scene-view .reveal-button{display:inline-flex;align-items:center;gap:28px;padding:11px 0;margin-top:21px;border-bottom:1px solid #a6653f88;font-size:11px;color:#e8c5a4}
.scene-view .reveal-button span{font-size:19px}
.scene-view .reveal-button:hover{color:#fff4e6;border-color:#e8c5a4}
.scene-layer .hover-label{position:absolute;bottom:28px;right:7%;z-index:4;padding:9px 12px;color:#eee7da;background:#11110fe6;border:1px solid #eee7da2e;font-size:10px;letter-spacing:.12em;line-height:1.4;pointer-events:none}
.scene-layer .scene-status{position:absolute;bottom:25px;left:5%;z-index:4;max-width:42%;font-size:10px;line-height:1.6;color:#c1b09f;pointer-events:none}
.stage-controls.caption{justify-content:space-between;min-width:0;gap:16px}
.stage-controls.caption .stage-caption{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stage-controls.caption .privacy-link{flex-shrink:0;margin-left:auto;padding:6px 0;font-size:9px;letter-spacing:0}
.service-dock.dock .dock-item{appearance:none;width:100%;text-align:left;font-family:inherit}
.service-dock.dock .dock-item[data-hover=true]{background:#201b16}
.service-dock.dock .dock-item[aria-pressed=true]{background:#251d17}
.service-dock.dock .dock-item[aria-pressed=true]:before{opacity:1}
.service-dock.dock .dock-item[aria-pressed=true] :is(.sector-0 .top,.sector-1 .left,.sector-2 .right){fill:var(--warm)}
.service-dock.dock .dock-item:focus-visible{outline:2px solid var(--warm);outline-offset:-6px}

/* The copper pointer belongs to the interactive stage, not to text entry. */
.copper-cursor{position:fixed;left:0;top:0;width:30px;height:30px;margin:-15px;border:1px solid #dba272a8;border-radius:50%;pointer-events:none;z-index:100;opacity:0;display:grid;place-items:center;transition:width .18s,height .18s,margin .18s,border-color .18s;box-shadow:0 0 16px #d99d6218}
.cursor-core{width:4px;height:4px;background:#f2c398;border-radius:50%}
.cursor-arrow{display:none;font:16px Manrope,Arial,sans-serif;color:#ffe0bd}
.copper-cursor[data-action=true]{width:44px;height:44px;margin:-22px;border-color:#e8b58a;background:#b5784920}
.copper-cursor[data-action=true] .cursor-core{display:none}
.copper-cursor[data-action=true] .cursor-arrow{display:block}
.copper-cursor.pressed{border-color:#fff0d8;background:#d09a6538}
.cursor-trail{position:fixed;top:0;left:0;width:5px;height:5px;margin:-2.5px;border-radius:50%;background:#daa471;box-shadow:0 0 7px #daa47170;pointer-events:none;z-index:99;opacity:0}
body.custom-pointer:is([data-view=home],[data-view=brands],[data-view=websites],[data-view=software]),body.custom-pointer:is([data-view=home],[data-view=brands],[data-view=websites],[data-view=software]) :is(button,a,canvas){cursor:none!important}
body:is([data-view=work],[data-view=about],[data-view=contact]) :is(.copper-cursor,.cursor-trail){display:none}
body.custom-pointer dialog[open]{cursor:auto!important}
body.custom-pointer dialog[open] :is(button,a){cursor:pointer!important}

@media(min-width:761px) and (max-height:760px){
 .experience.lab-shell{grid-template-rows:66px minmax(0,1fr) 30px 90px}
 .scene-view .eyebrow{margin-bottom:18px}
 .scene-view #heading{font-size:clamp(40px,4.8vw,65px);margin-bottom:22px}
 .scene-view .brand-details{margin-top:20px;padding-top:13px}
}
@media(min-width:761px) and (max-height:580px){
 .experience.lab-shell{grid-template-rows:54px minmax(0,1fr) 26px 72px}
 .scene-view .copy{max-height:calc(100% - 28px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:#765038 #151310;pointer-events:auto;padding-right:12px}
 .scene-view .eyebrow{margin-bottom:12px}
 .scene-view #heading{font-size:38px;margin-bottom:15px}
 .experience[data-selected=true] .scene-view #heading{font-size:32px}
 .scene-view #description{font-size:12px;line-height:1.7}
 .scene-view .hint{margin-top:15px}
 .scene-view .brand-details{margin-top:14px;padding-top:10px}
}
@media(max-width:760px){
 .experience.lab-shell{grid-template-rows:66px minmax(0,1fr) 28px 84px}
 .scene-layer .art{inset:0 0 37%;mask-image:linear-gradient(0deg,transparent,#000 15%)}
 .scene-layer .ambient{bottom:37%;mask-image:linear-gradient(0deg,transparent,#000 15%);background-size:cover;background-position:70% center}
 .scene-view .copy{left:26px;top:auto;bottom:26px;width:calc(100% - 52px);max-width:none;transform:none}
 .scene-view .eyebrow{font-size:8px;margin-bottom:15px}
 .scene-view #heading{font-size:40px;margin-bottom:17px}
 .experience[data-selected=true] .scene-view #heading{font-size:29px;max-width:360px}
 .scene-view #description{font-size:11px;line-height:1.7;max-width:360px}
 .scene-view #description .trinity{font-size:13px;margin-bottom:4px}
 .scene-view .hint{font-size:9px;margin-top:18px}
 .scene-view .brand-details{margin-top:16px;padding-top:11px;gap:16px;font-size:8px;max-width:380px}
 .scene-view .brand-details b{font-size:10px;margin-top:4px}
 .scene-view .reveal-button{font-size:10px;margin-top:12px;padding:6px 0;gap:20px}
 .scene-layer .scene-status{bottom:auto;top:16px;left:26px;max-width:calc(100% - 52px);font-size:9px}
 .scene-layer .hover-label{display:none}
 .stage-controls.caption{padding:0 24px;gap:12px;font-size:6px;letter-spacing:.1em}
 .stage-controls.caption .privacy-link{font-size:8px;padding:5px 0}
 .service-dock.dock .dock-item{padding:12px 16px;gap:9px}
}
@media(max-width:760px) and (max-height:700px){
 .experience.lab-shell{grid-template-rows:58px minmax(0,1fr) 25px 73px}
 .scene-layer .art,.scene-layer .ambient{bottom:39%}
 .scene-view .copy{bottom:18px}
 .scene-view .eyebrow{margin-bottom:10px}
 .scene-view #heading{font-size:31px;margin-bottom:12px}
 .experience[data-selected=true] .scene-view #heading{font-size:24px}
 .scene-view #description{font-size:10px;line-height:1.65}
 .scene-view #description .trinity{font-size:12px}
 .scene-view .hint{font-size:8px;margin-top:12px}
 .scene-view .brand-details{margin-top:10px;padding-top:8px;gap:12px;font-size:7px}
 .scene-view .brand-details b{margin-top:3px;font-size:9px}
 .service-dock.dock .dock-item{padding:9px 14px;gap:5px}
 .stage-controls.caption{padding:0 20px}
}
@media(max-width:760px) and (max-height:500px){
 .scene-view .copy{max-height:calc(100% - 24px);overflow-y:auto;pointer-events:auto;padding-right:10px;scrollbar-width:thin;scrollbar-color:#765038 #151310}
 .scene-layer .art{inset:0 0 0 40%;mask-image:linear-gradient(90deg,transparent,#000 15%)}
 .scene-layer .ambient{inset:0;mask-image:none;background-position:70% center}
 .scene-view .copy{left:22px;width:44%;top:50%;bottom:auto;transform:translateY(-50%)}
 .scene-view #heading{font-size:28px}
 .scene-view .brand-details{grid-template-columns:1fr;gap:5px}
 .scene-view .brand-details span{display:flex;gap:7px;align-items:baseline}
 .scene-view .brand-details b{margin:0}
}
@media(max-width:760px){
 body[data-contact-keyboard=true] .experience.lab-shell{height:var(--contact-viewport);grid-template-rows:52px minmax(0,1fr)}
}
@media(prefers-reduced-motion:reduce){
 .scene-layer,.scene-layer .art canvas,.copper-cursor{transition:none}
 .copper-cursor,.cursor-trail{display:none}
 body.custom-pointer,body.custom-pointer :is(button,a,canvas){cursor:auto!important}
 body.custom-pointer :is(button,a){cursor:pointer!important}
}
@media(forced-colors:active){
 .scene-layer,.copper-cursor,.cursor-trail{display:none}
 body.custom-pointer,body.custom-pointer :is(button,a,canvas){cursor:auto!important}
 body.custom-pointer :is(button,a){cursor:pointer!important}
 .service-dock.dock .dock-item[aria-pressed=true]{outline:2px solid Highlight;outline-offset:-4px}
 .service-dock.dock .dock-item:focus-visible{outline-color:Highlight}
}

/* Reserve independent mobile space for the artwork and enlarged copy. */
@media(max-width:760px){
 .experience.lab-shell{grid-template-rows:66px minmax(0,1fr) 30px 92px;--mobile-copy-space:clamp(230px,43%,300px)}
 .experience.lab-shell[data-selected=true]{--mobile-copy-space:clamp(272px,49%,340px)}
 .scene-layer .art,.scene-layer .ambient{bottom:var(--mobile-copy-space)}
 .scene-view .copy{left:22px;bottom:22px;width:calc(100% - 44px);max-height:calc(var(--mobile-copy-space) - 36px);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#765038 #151310;pointer-events:auto;text-align:center}
 .scene-view .eyebrow{font-size:9.2px;justify-content:center}
 .scene-view #heading{font-size:46px}
 .experience[data-selected=true] .scene-view #heading{font-size:33.35px;max-width:none}
 .scene-view #description{font-size:12.65px;max-width:420px;margin-left:auto;margin-right:auto}
 .scene-view #description .trinity{font-size:14.95px}
 .scene-view .hint{font-size:10.35px}
 .scene-view .brand-details{font-size:9.2px;max-width:none;text-align:center}
 .scene-view .brand-details b{font-size:11.5px}
 .scene-view .reveal-button{font-size:11.5px}
 .scene-layer .scene-status{font-size:10.35px;text-align:center}
 .stage-controls.caption{font-size:6.9px;text-align:center;justify-content:center}
 .stage-controls.caption .privacy-link{font-size:9.2px;margin-left:0;text-align:center}
 .service-dock.dock .dock-item{padding-left:8px;padding-right:8px;align-items:center;text-align:center}
 .service-dock.dock .dock-text{align-items:center;text-align:center}
}
@media(max-width:760px) and (max-height:700px){
 .experience.lab-shell{grid-template-rows:58px minmax(0,1fr) 28px 81px;--mobile-copy-space:clamp(212px,46%,248px)}
 .experience.lab-shell[data-selected=true]{--mobile-copy-space:clamp(250px,55%,290px)}
 .scene-view .copy{bottom:18px;max-height:calc(var(--mobile-copy-space) - 30px)}
 .scene-view #heading{font-size:35.65px}
 .experience[data-selected=true] .scene-view #heading{font-size:27.6px}
 .scene-view #description{font-size:11.5px}
 .scene-view #description .trinity{font-size:13.8px}
 .scene-view .hint{font-size:9.2px}
 .scene-view .brand-details{font-size:8.05px}
 .scene-view .brand-details b{font-size:10.35px}
}
@media(max-width:760px) and (max-height:500px){
 .scene-layer .art{inset:0 0 0 47%}
 .scene-layer .ambient{inset:0}
 .scene-view .copy{left:16px;width:44%;top:50%;bottom:auto;max-height:calc(100% - 24px)}
 .scene-view #heading{font-size:32.2px}
 .scene-view .brand-details{grid-template-columns:1fr}
 .scene-view .brand-details span{justify-content:center}
}
@media(max-width:760px){
 body[data-contact-keyboard=true] .experience.lab-shell{grid-template-rows:52px minmax(0,1fr)}
}
@media(prefers-reduced-motion:reduce){
 #scene-loader{transition:none}
 #scene-loader .scene-loader-mark{animation:none}
}
