/* ---------------- studio scene ---------------- */
.st-root{position:relative;width:1000px;height:720px;color:var(--paper)}
.st-world{position:absolute;left:200px;top:130px;width:600px;height:600px;transform-origin:50% 50%;transform:rotateX(60deg) rotateZ(45deg);transform-style:preserve-3d}
.st-box{position:absolute;transform-style:preserve-3d}
.st-f{position:absolute;left:0;top:0}
.st-in3{position:absolute;left:0;top:0;width:100%;height:100%;transform-style:preserve-3d}
.st-bb,.st-fig,.st-headpos,.st-head3d,.st-nod{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d}
.st-fig{transition:none}
.st-head3d{transition:transform .7s cubic-bezier(.3,.7,.2,1)}
.st-nod{animation:st-nod 8s ease-in-out infinite}
.st-tapL{animation:st-tap .34s ease-in-out infinite alternate}
.st-tapR{animation:st-tap .3s ease-in-out .14s infinite alternate}
.st-blink{animation:st-blink 1.1s steps(1) infinite}
@keyframes st-tap{from{transform:translateZ(0)}to{transform:translateZ(2.2px)}}
@keyframes st-nod{0%,55%,100%{transform:rotateZ(0) rotateY(0)}62%,84%{transform:rotateZ(14deg) rotateY(-4deg)}}
@keyframes st-bob{from{transform:translateZ(0)}to{transform:translateZ(1.6px)}}
@keyframes st-swingA{from{transform:rotateY(-24deg)}to{transform:rotateY(24deg)}}
@keyframes st-swingB{from{transform:rotateY(24deg)}to{transform:rotateY(-24deg)}}
@keyframes st-blink{0%{opacity:1}50%{opacity:0}}
.still .st-fig *,.still .st-zz span{animation:none!important}
.paused *{animation-play-state:paused!important}
@media (prefers-reduced-motion:reduce){.st-fig *,.scr *,.tv-game *,.st-steam i,.st-rain,.st-belt,.st-zz span{animation:none!important}.st-head3d{transition:none}}

/* ---------------- the house ---------------- */
.st-view{position:absolute;inset:0}
.st-layer{position:absolute;left:0;top:0;width:600px;height:600px;transform-style:preserve-3d}
.st-glow{position:absolute;left:120px;top:360px;width:760px;height:360px;border-radius:50%;background:radial-gradient(closest-side,rgba(56,98,190,.2),rgba(56,98,190,.06) 60%,transparent)}
.st-blob{border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.5),transparent)}
.st-overlay{position:absolute;inset:0;pointer-events:none}
.st-anchor{position:absolute;width:0;height:0;z-index:3}
.st-anchor.door::after{display:none}
.st-door{position:absolute;left:0;bottom:12px;transform:translateX(-50%);display:flex;align-items:center;gap:8px;height:32px;padding:0 12px;border-radius:10px;background:rgba(10,14,22,.66);border:1px solid rgba(169,184,255,.2);color:#C9D1DE;font:500 13px/1 var(--sans);white-space:nowrap;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 22px rgba(0,0,0,.4);transition:border-color .2s,background .2s,color .2s}
.st-door .ar{font:500 12px/1 var(--mono);color:var(--signal2)}
.st-root.compact .st-door{height:64px;padding:0 22px;font-size:26px;border-radius:20px;gap:14px;bottom:20px}
.st-root.compact .st-door .ar{font-size:22px}
.st-zz{position:absolute;width:0;height:0}
.st-zz span{position:absolute;font:600 16px/1 var(--mono);color:var(--peri);animation:st-z 3s ease-out infinite}
.st-zz span:nth-child(2){left:10px;font-size:12px;animation-delay:1s}.st-zz span:nth-child(3){left:20px;font-size:10px;animation-delay:2s}
@keyframes st-z{0%{opacity:0;transform:translate(0,0)}30%{opacity:1}100%{opacity:0;transform:translate(16px,-36px)}}
/* steam, water, belts */
.st-steam{position:absolute;width:0;height:0}
.st-steam i{position:absolute;left:-13px;bottom:0;width:26px;height:26px;border-radius:50%;background:radial-gradient(closest-side,rgba(230,236,250,.45),transparent);animation:st-rise 3.2s ease-out infinite}
.st-steam i:nth-child(2){left:5px;animation-delay:1s}.st-steam i:nth-child(3){left:-29px;animation-delay:2s}.st-steam i:nth-child(4){left:-7px;animation-delay:2.6s}
.st-steam.sm i{width:14px;height:14px;left:-7px}
@keyframes st-rise{0%{opacity:0;transform:translate(0,0) scale(.6)}30%{opacity:.75}100%{opacity:0;transform:translate(-14px,-70px) scale(1.6)}}
.st-rain{animation:st-rain .5s linear infinite}
@keyframes st-rain{from{background-position:0 0}to{background-position:7px 0}}
.st-drip{position:absolute;left:-1px;bottom:-14px;width:2px;height:14px;background:linear-gradient(180deg,rgba(160,200,255,.8),rgba(160,200,255,0));animation:st-drip .6s linear infinite}
@keyframes st-drip{from{opacity:1}to{opacity:.4}}
.st-belt{animation:st-belt .4s linear infinite}
@keyframes st-belt{from{background-position:0 0}to{background-position:8px 0}}
/* TV */
.tv-game{position:absolute;inset:0}
.tv-game i{position:absolute;width:5px;height:5px;border-radius:50%;background:#4C8DFF;animation:st-play 5s ease-in-out infinite alternate}
.tv-game i:nth-child(1){left:60px;top:40px}.tv-game i:nth-child(2){left:120px;top:70px;background:#E05A5A;animation-delay:-1.4s}.tv-game i:nth-child(3){left:90px;top:30px;animation-delay:-2.1s}.tv-game i:nth-child(4){left:140px;top:44px;background:#E05A5A;animation-delay:-.7s}
.tv-game b{position:absolute;left:96px;top:52px;width:4px;height:4px;border-radius:50%;background:#fff;animation:st-ball 3.1s ease-in-out infinite alternate}
@keyframes st-play{from{transform:translate(-14px,6px)}to{transform:translate(16px,-8px)}}
@keyframes st-ball{0%{transform:translate(-40px,10px)}50%{transform:translate(30px,-18px)}100%{transform:translate(60px,14px)}}
.tv-pause{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;gap:6px;padding:10px 12px;border-radius:8px;background:rgba(9,12,18,.7)}
.tv-pause i{width:6px;height:22px;border-radius:2px;background:#fff}
.tv-film{animation:st-film 18s ease-in-out infinite alternate}
@keyframes st-film{from{filter:brightness(.9)}to{filter:brightness(1.1)}}
/* desk screens */
.scr{position:absolute;inset:0;overflow:hidden;font-size:0}
.scr-m{position:absolute;inset:4px;display:none}
.scr[data-mode="code"] .scr-code,.scr[data-mode="read"] .scr-read,.scr[data-mode="board"] .scr-board,.scr[data-mode="flow"] .scr-flow{display:block}
.scr-code i{display:block;height:2px;margin:3.4px 0;border-radius:1px;background:#5B8CFF;opacity:.85}
.scr-code i:nth-child(2n){background:#A9B8FF}.scr-code i:nth-child(3n){background:#E8C97A}
.scr-code .ty{width:0;background:#C3E88D;animation:scr-type 5s steps(20) infinite}
@keyframes scr-type{0%{width:0}60%,100%{width:46%}}
.scr-read{display:none}
.scr[data-mode="read"] .scr-read{display:flex;gap:4px}
.scr-read .rd{flex:1;overflow:hidden}
.scr-read .rd b{display:block;width:70%;height:3px;margin:2px 0 5px;background:#EDF1FA}
.scr-read .rd i{display:block;height:1.6px;margin:2.8px 0;background:#243049;animation:scr-scroll 12s ease-in-out infinite alternate}
.scr-read .rd i.hl{background:linear-gradient(90deg,rgba(224,184,60,.8),rgba(224,184,60,.8)) no-repeat 0 0/0 100%,#243049;animation:scr-hl 12s ease-in-out infinite}
@keyframes scr-scroll{from{transform:translateY(0)}to{transform:translateY(-14px)}}
@keyframes scr-hl{0%,40%{background-size:0 100%,auto}60%,100%{background-size:100% 100%,auto}}
.scr-read .nt{width:30%;border-left:1px solid #1C2536;padding-left:3px}
.scr-read .nt i{display:block;height:8px;margin:3px 0;border-radius:2px;background:rgba(169,184,255,.16)}
.scr-read .nt i.new{animation:scr-in 12s ease-out infinite}
@keyframes scr-in{0%,55%{opacity:0}65%,100%{opacity:1}}
.scr[data-mode="board"] .scr-board{display:grid;grid-template-columns:repeat(3,1fr);gap:3px}
.scr-board div{border-radius:2px;background:#0F1828;padding:2px}
.scr-board i{display:block;height:7px;margin-bottom:2px;border-radius:1.5px;background:#1E2B44}
.scr-board i.mv{background:#4C8DFF;animation:scr-mv 6s ease-in-out infinite}
@keyframes scr-mv{0%,30%{transform:translate(0,0)}60%,100%{transform:translate(34px,-9px)}}
.scr-flow .n{position:absolute;width:20px;height:10px;border-radius:2px;background:#152035;box-shadow:inset 0 0 0 1px rgba(169,184,255,.25)}
.scr-flow .a{left:2px;top:22px}.scr-flow .b{left:34px;top:22px;animation:scr-node 4s ease-in-out infinite}.scr-flow .c{left:68px;top:10px;animation:scr-node 4s ease-in-out 2s infinite}.scr-flow .d{left:68px;top:36px}
.scr-flow .e{position:absolute;height:1px;background:rgba(169,184,255,.35)}.scr-flow .e1{left:22px;top:27px;width:12px}.scr-flow .e2{left:54px;top:21px;width:14px;transform:rotate(-30deg)}
.scr-flow b{position:absolute;left:22px;top:25px;width:4px;height:4px;border-radius:50%;background:#7FA6FF;box-shadow:0 0 6px #4C8DFF;animation:scr-dot 4s linear infinite}
@keyframes scr-node{0%,100%{box-shadow:inset 0 0 0 1px rgba(169,184,255,.25)}50%{box-shadow:inset 0 0 0 1px #7FA6FF,0 0 8px rgba(76,141,255,.6)}}
@keyframes scr-dot{0%{transform:translate(0,0)}40%{transform:translate(12px,0)}60%{transform:translate(20px,0)}100%{transform:translate(46px,-12px)}}
.scr-logs .lg{position:absolute;inset:4px;animation:scr-logs 8s linear infinite}
.scr-logs i{display:block;width:80%;height:1.6px;margin:3px 0;background:rgba(95,211,154,.55)}
.scr-logs i:nth-child(3n){background:rgba(169,184,255,.5)}
@keyframes scr-logs{from{transform:translateY(0)}to{transform:translateY(-20px)}}
.scr-idle i{position:absolute;left:40%;top:40%;width:14px;height:8px;border-radius:2px;background:rgba(76,141,255,.25);animation:scr-idle 14s ease-in-out infinite alternate}
@keyframes scr-idle{from{transform:translate(-30px,-14px)}to{transform:translate(30px,14px)}}
/* poses */
.st-stir{animation:st-stir 1.2s ease-in-out infinite alternate}.st-stir2{animation:st-stir 1.1s ease-in-out .3s infinite alternate}
@keyframes st-stir{from{transform:translate3d(0,-3px,0)}to{transform:translate3d(0,3px,0)}}
.st-fiddle{animation:st-fiddle 2.4s ease-in-out infinite}.st-fiddle2{animation:st-fiddle 2.1s ease-in-out .6s infinite}
@keyframes st-fiddle{0%,100%{transform:translateZ(0)}50%{transform:translateZ(3px)}}
.st-brush{animation:st-brush .28s ease-in-out infinite alternate}
@keyframes st-brush{from{transform:translate3d(0,-2px,0)}to{transform:translate3d(0,2px,0)}}
.st-reach{animation:st-reach 2.6s ease-in-out infinite}
@keyframes st-reach{0%,100%{transform:translateZ(0)}50%{transform:translateZ(8px)}}
.st-rub{animation:st-rub .6s ease-in-out infinite alternate}.st-rub2{animation:st-rub .6s ease-in-out .3s infinite alternate}
@keyframes st-rub{from{transform:translateX(0)}to{transform:translateX(-6px)}}
.st-throw{animation:st-throw 1.6s ease-in-out infinite}
@keyframes st-throw{0%,60%,100%{transform:rotateY(0)}75%{transform:rotateY(-70deg)}}
.st-wave{animation:st-wave .5s ease-in-out infinite alternate}
@keyframes st-wave{from{transform:rotateX(-18deg)}to{transform:rotateX(18deg)}}
.st-gestL{animation:st-gest 1.4s ease-in-out infinite alternate}
@keyframes st-gest{0%{transform:translateZ(0) translateX(0)}100%{transform:translateZ(8px) translateX(-4px)}}
.st-curlL{animation:st-curl 1.6s ease-in-out infinite}.st-curlR{animation:st-curl 1.6s ease-in-out .8s infinite}
@keyframes st-curl{0%,100%{transform:translateZ(0)}50%{transform:translateZ(22px) translateX(6px)}}
.st-swing{animation:st-swingk 1.4s ease-in-out infinite}
@keyframes st-swingk{0%,100%{transform:translateZ(0) translateX(10px)}50%{transform:translateZ(26px) translateX(-6px)}}
.st-sway{animation:st-sway 2.8s ease-in-out infinite alternate}
@keyframes st-sway{from{transform:rotateX(-8deg)}to{transform:rotateX(8deg)}}
.st-scrub{animation:st-scrub .7s ease-in-out infinite alternate}.st-scrub2{animation:st-scrub .7s ease-in-out .35s infinite alternate}
@keyframes st-scrub{from{transform:rotateY(-12deg)}to{transform:rotateY(12deg)}}
.st-press{animation:st-press 3.6s ease-in-out infinite}.st-pressArm{animation:st-pressArm 3.6s ease-in-out infinite}
@keyframes st-press{0%,18%,100%{transform:translateZ(0)}48%,62%{transform:translateZ(18px)}}
@keyframes st-pressArm{0%,18%,100%{transform:scaleZ(1)}48%,62%{transform:scaleZ(1.45)}}
.st-squatTop{animation:st-squatT 3.4s ease-in-out infinite}.st-squatLeg{animation:st-squatL 3.4s ease-in-out infinite}
@keyframes st-squatT{0%,20%,100%{transform:translateZ(0)}50%,60%{transform:translateZ(-12px)}}
@keyframes st-squatL{0%,20%,100%{transform:scaleZ(1)}50%,60%{transform:scaleZ(.62)}}
.st-page{animation:st-page 7s ease-in-out infinite}
@keyframes st-page{0%,85%,100%{transform:rotateZ(0)}92%{transform:rotateZ(160deg)}}
.st-eat{animation:st-eat 2.2s ease-in-out infinite}
@keyframes st-eat{0%,100%{transform:translateZ(0)}45%,55%{transform:translateZ(20px) translateX(10px)}}
.running .st-legL,.running .st-legR,.running .st-armL,.running .st-armR{animation-duration:.25s!important}
.lying .st-nod{animation:none}

/* Shubur mount sizing and the portfolio scene's original night palette. */
.portfolio-world-stage{position:relative;width:100%;aspect-ratio:25/18;overflow:hidden;border:2px solid var(--ink);border-radius:18px;background:#090C12}
.portfolio-world-stage>.st-root{position:absolute;left:0;top:0;transform-origin:top left;background:radial-gradient(ellipse 820px 520px at 63% 56%,rgba(36,58,108,.30),transparent 70%),radial-gradient(ellipse 700px 260px at 30% -10%,rgba(169,184,255,.05),transparent 70%),#090C12;--paper:#EDF1FA;--fog:#98A3B5;--signal2:#7FA6FF;--peri:#A9B8FF;--sans:ui-sans-serif,system-ui,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,monospace}
.portfolio-world-stage .st-world{z-index:1}
.apartment-ui{position:absolute;inset:0;z-index:4;color:#EDF1FA;font-family:ui-sans-serif,system-ui,sans-serif;pointer-events:none}
.apt-copy,.apt-controls,.apt-status,.apt-object-detail{position:absolute;border:1px solid rgba(169,184,255,.24);border-radius:14px;background:rgba(8,12,20,.86);box-shadow:0 12px 28px rgba(0,0,0,.32);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:auto}
.apt-copy{left:22px;top:20px;width:min(430px,43%);padding:16px 18px}
.apt-kicker{margin:0 0 8px;color:#a9b8ff;font:700 10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.15em;text-transform:uppercase}
.apt-copy h2{margin:0 0 8px;font-size:clamp(18px,2.15vw,27px);line-height:1.04;letter-spacing:-.045em}
.apt-copy p:last-child{margin:0;color:#c1c9d7;font-size:clamp(10px,1.1vw,13px);line-height:1.45}
.apt-controls{top:20px;right:20px;display:grid;grid-template-columns:1fr;gap:8px;width:min(230px,23%);padding:12px}
.apt-controls label{display:grid;gap:4px;color:#98a3b5;font:700 9px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.09em;text-transform:uppercase}
.apt-controls select{width:100%;min-height:34px;padding:5px 28px 5px 9px;border:1px solid rgba(169,184,255,.34);border-radius:8px;background:#111a29;color:#edf1fa;font:650 12px/1.2 ui-sans-serif,system-ui,sans-serif;letter-spacing:0;text-transform:none}
.apt-controls select:focus-visible,.apt-hotspot:focus-visible{outline:3px solid #c9f36a;outline-offset:2px}
.apt-status{left:22px;bottom:20px;width:min(330px,32%);padding:12px 15px}
.apt-status span{display:block;margin-bottom:5px;color:#98a3b5;font:700 9px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase}
.apt-status strong{display:block;color:#f5f7fc;font-size:13px;line-height:1.3}
.apt-hotspots{position:absolute;inset:0;pointer-events:none}
.apt-hotspot{position:absolute;transform:translate(-50%,-50%);max-width:130px;padding:5px 8px;border:1px solid rgba(201,243,106,.65);border-radius:999px;background:rgba(13,21,29,.86);color:#dff6ad;font:700 10px/1 ui-sans-serif,system-ui,sans-serif;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;box-shadow:0 3px 12px rgba(0,0,0,.42);cursor:pointer;pointer-events:auto}
.apt-hotspot.is-selected{background:#c9f36a;color:#172320;border-color:#c9f36a}
.apt-object-detail{right:20px;bottom:20px;display:grid;gap:5px;width:min(410px,40%);max-height:34%;overflow:auto;padding:12px 15px;color:#c1c9d7;font-size:10px;line-height:1.35}
.apt-object-detail strong{color:#f5f7fc;font-size:13px}
.apt-object-detail span{overflow-wrap:anywhere}
.apt-object-detail .apt-hint{color:#a9b8ff}
@media(max-width:600px){
  .apartment-experience{--scene-h:calc(72vw - 22px)}
  .portfolio-world-stage{aspect-ratio:auto;height:calc(var(--scene-h) + 430px)}
  .apartment-ui{inset:0}
  .apt-copy{left:8px;right:8px;top:calc(var(--scene-h) + 8px);width:auto;max-height:none;overflow:visible;padding:12px 14px;border-radius:10px}
  .apt-kicker{margin-bottom:5px;font-size:8px}
  .apt-copy h2{margin-bottom:6px;font-size:18px}
  .apt-copy p:last-child{font-size:10px;line-height:1.35}
  .apt-controls{top:calc(var(--scene-h) + 170px);left:8px;right:8px;grid-template-columns:1fr 1fr;width:auto;gap:8px;padding:9px 10px;border-radius:10px}
  .apt-controls label{font-size:7px}
  .apt-controls select{min-height:30px;padding:4px 5px;font-size:10px}
  .apt-status{left:8px;right:8px;bottom:138px;width:auto;padding:9px 11px;border-radius:10px}
  .apt-status span{font-size:7px}
  .apt-status strong{font-size:10px}
  .apt-hotspot{max-width:90px;padding:4px 6px;font-size:8px}
  .apt-hotspots{top:0;bottom:auto;height:var(--scene-h)}
  .apt-object-detail{left:8px;right:8px;bottom:8px;width:auto;max-height:120px;gap:3px;padding:9px 11px;border-radius:10px;font-size:9px}
  .apt-object-detail strong{font-size:10px}
}
