.frame{position:absolute;inset:0;overflow:hidden;background:var(--bg)}
.view{position:absolute;inset:6% 8% 25%;overflow:hidden;border:1px solid var(--line);background:linear-gradient(180deg,var(--accent-2),#9bb6ad 55%,#ddcda6)}
.rails{position:absolute;left:5%;right:5%;bottom:0;height:72%;background:repeating-linear-gradient(90deg,transparent 0 16%,rgba(255,255,255,.2) 16.5% 17%,transparent 17.5% 32%);clip-path:polygon(43% 0,57% 0,100% 100%,0 100%)}
.door{position:absolute;left:40%;top:14%;width:20%;height:77%;border:2px solid var(--surface);border-bottom:0;transform-origin:center bottom}
.d1{animation:near 4s ease-in-out infinite}
.d2{left:45%;top:30%;width:10%;height:52%;border-color:var(--accent-3);animation:far 4s ease-in-out infinite}
.subject{position:absolute;left:50%;top:49%;width:clamp(22px,12vmin,65px);aspect-ratio:1;display:grid;place-items:center;border-radius:50%;background:var(--accent);color:var(--surface);transform:translate(-50%,-50%);animation:subject 4s ease-in-out infinite}
.subject i{width:31%;aspect-ratio:1;border-radius:50%;background:var(--surface)}
.subject b{position:absolute;top:120%;font:700 clamp(7px,1.8vmin,10px) ui-monospace,monospace;letter-spacing:.06em;color:var(--fg);white-space:nowrap}
.axis{position:absolute;left:8%;right:8%;bottom:7%;height:10%;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--muted);font:700 clamp(8px,2vmin,12px) ui-monospace,monospace;letter-spacing:.12em}
.axis i{position:absolute;left:50%;width:clamp(30px,17vmin,90px);height:2px;background:var(--accent);animation:travel 4s ease-in-out infinite}
@keyframes near{0%,8%{transform:scale(.72)}52%{transform:scale(1.16)}92%,100%{transform:scale(.72)}}
@keyframes far{0%,8%{transform:scale(.78)}52%{transform:scale(1.02)}92%,100%{transform:scale(.78)}}
@keyframes subject{0%,8%{width:clamp(22px,12vmin,65px)}52%{width:clamp(44px,23vmin,120px)}92%,100%{width:clamp(22px,12vmin,65px)}}
@keyframes travel{0%,8%{transform:translateX(-45%)}52%{transform:translateX(45%)}92%,100%{transform:translateX(-45%)}}