/* Additive local study. All brand, broadcast and control styling stays in style.css. */
html{scroll-behavior:auto;scrollbar-width:none;height:100%;overflow:hidden;overscroll-behavior:none}
html::-webkit-scrollbar{display:none}
body{position:fixed;inset:0;width:100%;height:100%;min-height:0;overflow:hidden;overscroll-behavior:none}
.transition-scroll{position:absolute;inset:0;height:100%;min-height:0;overflow:hidden;touch-action:pinch-zoom}
.room{position:absolute;inset:0;height:100%;min-height:0}
.motion-filter-defs{position:absolute;pointer-events:none}
.room-motion{position:absolute;inset:0;z-index:0;isolation:isolate;filter:url(#room-handoff-blur);will-change:filter}
.front-world{position:absolute;inset:0;z-index:0;overflow:clip}
#transition-film,#transition-fallback{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:0;filter:var(--room-grade)}
#transition-fallback{overflow:hidden;background:#a64b20;display:none}
#transition-fallback img{position:absolute;display:block;max-width:none}
#profile-atmosphere{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;opacity:0;filter:var(--room-grade)}
.introduction,.room-footer{z-index:2}
.studio-note{line-height:1.2}
.broadcast-controls [hidden]{display:none}
.front-portfolio-art{position:absolute;z-index:4;pointer-events:none;filter:var(--room-grade)}
.profile-controls{position:absolute;inset:0;z-index:3;pointer-events:none}
.tv-control{position:absolute;z-index:5;min-width:44px;min-height:44px;transform:translate(-50%,-50%);border-radius:50%;background:transparent;padding:0;pointer-events:auto;outline-offset:2px}
.tv-control:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%,4px);width:max-content;max-width:220px;padding:8px 10px;background:#25180eef;border-radius:3px;color:var(--cream);font-size:11px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}
.tv-control:hover:after,.tv-control:focus-visible:after{opacity:1;transform:translate(-50%,0)}
.tv-control:hover{box-shadow:0 0 20px #ffeab91f}
.tv-control:active{background:#fff6e91a}
.portfolio-control{--control-ring:38px}
.portfolio-control:hover{box-shadow:none}
.portfolio-control:before{content:"";position:absolute;left:50%;top:50%;width:calc(var(--control-ring)*1.4);height:calc(var(--control-ring)*1.4);border-radius:50%;background:radial-gradient(circle,#ff6e3b66 0%,#ff412444 24%,#ff301515 46%,transparent 70%);mix-blend-mode:screen;filter:blur(3px);opacity:0;transform:translate(-50%,-50%) scale(.75);pointer-events:none;transition:opacity .3s ease,transform .5s cubic-bezier(.16,1,.3,1)}
.portfolio-ring{position:absolute;left:50%;top:50%;width:calc(var(--control-ring)*3.8);height:calc(var(--control-ring)*3.8);overflow:visible;pointer-events:none;opacity:0;transform:translate(-50%,-50%) rotate(-35deg);transition:opacity .18s ease,width .65s cubic-bezier(.16,1,.3,1),height .65s cubic-bezier(.16,1,.3,1),transform .65s cubic-bezier(.16,1,.3,1)}
.portfolio-ring circle{fill:none;stroke:var(--cream);stroke-width:1.15;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .6s cubic-bezier(.22,1,.36,1)}
.portfolio-control:focus-visible .portfolio-ring{opacity:.95;width:var(--control-ring);height:var(--control-ring);transform:translate(-50%,-50%) rotate(0deg)}
.portfolio-control:focus-visible .portfolio-ring circle{stroke-dashoffset:0;stroke-width:1.8}
.portfolio-control:focus-visible:before{opacity:1;transform:translate(-50%,-50%) scale(1)}
.portfolio-control:focus-visible{outline:none}
.portfolio-control.is-inviting .portfolio-ring{animation:portfolio-invitation 1.8s both;transition:none}
.portfolio-control.is-inviting .portfolio-ring circle{stroke-dasharray:none;stroke-dashoffset:0;stroke-width:2;transition:none}
.portfolio-control.is-inviting:before{animation:portfolio-invitation-glow 1.8s both;transition:none}
@keyframes portfolio-invitation{
 0%{opacity:0;width:calc(var(--control-ring)*5.5);height:calc(var(--control-ring)*5.5);transform:translate(-50%,-50%)}
 10%{opacity:.85;width:calc(var(--control-ring)*5.2);height:calc(var(--control-ring)*5.2);transform:translate(-50%,-50%);animation-timing-function:cubic-bezier(.22,1,.36,1)}
 62%,78%{opacity:.95;width:var(--control-ring);height:var(--control-ring);transform:translate(-50%,-50%)}
 100%{opacity:0;width:var(--control-ring);height:var(--control-ring);transform:translate(-50%,-50%)}
}
@keyframes portfolio-invitation-glow{
 0%,32%{opacity:0;transform:translate(-50%,-50%) scale(.7)}
 63%,78%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}
 100%{opacity:0;transform:translate(-50%,-50%) scale(.9)}
}
@media(hover:hover){
 .portfolio-control:hover .portfolio-ring{opacity:.85;width:var(--control-ring);height:var(--control-ring);transform:translate(-50%,-50%) rotate(0deg)}
 .portfolio-control:hover .portfolio-ring circle{stroke-dashoffset:0}
 .portfolio-control:hover:before{opacity:1;transform:translate(-50%,-50%) scale(1)}
}
@media(prefers-reduced-motion:reduce){
 .portfolio-ring,.portfolio-ring circle,.portfolio-control:before{transition:none;animation:none!important}
 .portfolio-ring{width:var(--control-ring);height:var(--control-ring);transform:translate(-50%,-50%)}
}
.contact-launch{position:relative;display:block;width:22px;height:22px;flex:none;pointer-events:none}
.contact .contact-launch svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;transform:none;transition:none}
.contact .contact-arrow{transform-origin:center}
.contact .contact-flight{opacity:0;stroke:none;pointer-events:none}
.contact-flight .flight-trail{fill:none;stroke:#fbc078;stroke-width:1.2;stroke-linecap:round;stroke-dasharray:2 5}
.contact-flight .flight-spark{fill:none;stroke:#fff6e9;stroke-width:1.2;stroke-linecap:round}
.contact-flight .rocket-shell{fill:#fff6e9;stroke:#fff6e9;stroke-width:.8;stroke-linejoin:round}
.contact-flight .rocket-window{fill:#a4450b;stroke:#a4450b;stroke-width:.8}
.contact-flight .rocket-flame{fill:#fbc078;stroke:none}
@media(prefers-reduced-motion:reduce){.contact:hover .contact-arrow,.contact:focus-visible .contact-arrow{transform:translate(2px,-2px)}}
/* Both copy treatments occupy the original copy's footprint. The contact link
   and brand stay anchored while the words follow the room's reversible turn. */
.copy-stage{position:relative;display:flow-root}
.copy-panel--profile{position:absolute;inset:18px auto auto 0;width:100%;visibility:hidden}
.copy-line,.copy-ink{display:block}
.copy-line{white-space:nowrap;perspective:800px}
.copy-ink{position:relative;transform-origin:0 55%}
.signal-face{display:block}
.signal-slice{position:absolute;inset:0;display:block;visibility:hidden;pointer-events:none;transform-origin:0 55%}
.copy-scan{position:absolute;left:0;top:0;width:min(100%,490px);height:1px;opacity:0;pointer-events:none;transform-origin:0 50%;background:linear-gradient(90deg,#9ee9de00,#9ee9dec9 15%,#fff6e9 48%,#fbc078bf 85%,#fbc07800);box-shadow:0 0 7px #fff6e94d}
/* Flex prevents the slice masks' negative margins from collapsing and adding
   extra space between lines. Their padding remains available to the effect. */
.copy-panel--profile h1{display:flex;flex-direction:column;font-size:clamp(50px,6.3vw,100px);line-height:.9;letter-spacing:-.06em}
.copy-panel--profile .copy-line{overflow:clip;padding:.12em .2em .2em;margin:-.12em -.2em -.2em}
.capabilities{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5em .55em;margin:0;max-width:100%;font-size:clamp(10px,.88vw,13px);line-height:1.5;font-weight:500;letter-spacing:.085em;color:var(--cream)}
.capability{display:inline-block;overflow:clip;padding:.08em 0}
.capability-pair{display:inline-flex;gap:.55em}
.capability>span{display:block;white-space:nowrap;transform-origin:0 50%}
.capability b{font-weight:400;color:#fbc078;margin-left:.45em}
.room[data-transition="moving"] .copy-ink,.room[data-transition="moving"] .signal-slice,.room[data-transition="moving"] .copy-panel--front .intro-copy,.room[data-transition="moving"] .capability>span{will-change:transform,opacity}
.scroll-cue{position:absolute;left:50%;bottom:24px;z-index:2;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:3px;color:#fff6e9e6;opacity:0;pointer-events:none;transition:opacity .2s ease;filter:drop-shadow(0 1px 4px #3a180a66)}
.scroll-cue>span{font-size:11px;letter-spacing:.055em}
.scroll-cue-arrows{display:block;width:28px;height:42px;overflow:visible}
.scroll-cue-arrows path{stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;opacity:.8;animation:scroll-arrow-drift 1.3s ease-in-out infinite;animation-play-state:paused}
.scroll-cue-arrows path+path{animation-delay:.1s}
.room[data-transition="front"] .scroll-cue,.room[data-transition="seated"] .scroll-cue{opacity:1}
.room[data-transition="front"] .scroll-cue-arrows path,.room[data-transition="seated"] .scroll-cue-arrows path{animation-play-state:running}
.room[data-transition="seated"] .scroll-cue-arrows{transform:rotate(180deg)}
@keyframes scroll-arrow-drift{0%,100%{opacity:.7;transform:translateY(-2px)}48%{opacity:1;transform:translateY(5px)}}
@media(prefers-reduced-motion:reduce){.scroll-cue-arrows path{animation:none;opacity:.65}}
.room[data-transition="moving"] .front-world{pointer-events:none}
@media(max-width:760px),(max-aspect-ratio:1/1){
 .room{height:100%;min-height:0}
 .contact-launch{width:19px;height:19px}
 .copy-panel--profile{top:12px}
 .copy-panel--profile h1{font-size:clamp(40px,13vw,78px)}
 .capabilities{font-size:clamp(10px,2.45vw,12px);letter-spacing:.055em;max-width:440px;column-gap:.48em;row-gap:.2em}
 .room-footer{flex-wrap:wrap;row-gap:12px}
 .scroll-cue{bottom:18px;gap:2px}
 .scroll-cue>span{font-size:10px}
 .scroll-cue-arrows{width:24px;height:36px}
}
@media(max-width:360px){.room-footer{justify-content:flex-start}}
