.door-stage{border-bottom:2px solid var(--border-strong);width:min(520px,100%);height:190px;position:relative;overflow:hidden;container-type:inline-size}.door-stage__door{border:2px solid var(--border-strong);background:var(--surface);transform-origin:bottom;border-bottom:0;border-radius:10px 10px 0 0;width:74px;height:132px;position:absolute;bottom:0;right:8cqw}.door-stage__door:before{content:"";border:2px solid var(--border);border-radius:5px;position:absolute;inset:10px 10px 54px}.door-stage__door:after{content:"";background:var(--accent);border-radius:50%;width:8px;height:8px;position:absolute;top:74px;left:9px}.door-stage__sign{z-index:1;white-space:nowrap;background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:2px 6px;font-size:10px;font-weight:600;position:absolute;top:18px;left:50%;transform:translate(-50%)}.door-stage__rope{border-left:4px solid var(--border-strong);width:18px;height:46px;position:absolute;bottom:0;right:28cqw}.door-stage__helsa,.door-stage__sneaker{animation-duration:16s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;position:absolute;bottom:0;left:0}.door-stage__helsa{z-index:2;animation-name:helsa-patrol}.door-stage__sneaker{animation-name:sneaker-tiptoe}@keyframes helsa-patrol{0%{transform:translate(52cqw)scaleX(1)}14%{transform:translate(62cqw)scaleX(1)}15%{transform:translate(62cqw)scaleX(-1)}30%{transform:translate(52cqw)scaleX(-1)}38%{transform:translate(52cqw)scaleX(-1)}45%{transform:translate(34cqw)scaleX(-1)}62%{transform:translate(34cqw)scaleX(-1)}63%{transform:translate(34cqw)scaleX(1)}to{transform:translate(52cqw)scaleX(1)}}@keyframes sneaker-tiptoe{0%,4%{transform:translate(-14cqw)scaleX(1)}40%{transform:translate(18cqw)scaleX(1)}47%{transform:translate(18cqw)scaleX(1)}48%{transform:translate(18cqw)scaleX(-1)}60%,to{transform:translate(-14cqw)scaleX(-1)}}.door-stage__tiptoe{animation:.5s ease-in-out infinite sneaker-bob}@keyframes sneaker-bob{50%{transform:translateY(-3px)}}.door-stage__alarm{color:var(--accent);opacity:0;font-size:20px;font-weight:800;animation:16s linear infinite sneaker-alarm;position:absolute;top:-20px;left:50%;transform:translate(-50%)}@keyframes sneaker-alarm{0%,39%{opacity:0}40%,52%{opacity:1}53%,to{opacity:0}}.door-stage[data-phase=fight] .door-stage__helsa{animation:6s ease-in-out both helsa-confront}.door-stage[data-phase=fight] .door-stage__sneaker{animation:6s ease-in-out both intruder-face-off}.door-stage[data-phase=fight][data-intruder=thief] .door-stage__helsa{animation-name:helsa-charge}.door-stage[data-phase=fight][data-intruder=thief] .door-stage__sneaker{animation-name:thief-charge;animation-timing-function:ease-in}.door-stage[data-phase=fight][data-intruder=hacker] .door-stage__sneaker{animation-name:intruder-shocked}.door-stage[data-phase=fight] .door-stage__alarm{opacity:0;animation:none}.door-stage[data-phase=fight] .door-stage__door{animation:.4s ease-in-out 3.6s 4 door-rattle}.door-stage[data-phase=won] .door-stage__helsa{animation:3s ease-in-out both helsa-victory}.door-stage[data-phase=won] .door-stage__sneaker{opacity:0;animation:none}@keyframes helsa-confront{0%{transform:translate(52cqw)scaleX(-1)}18%,72%{transform:translate(36cqw)scaleX(-1)}74%{transform:translate(36cqw)scaleX(1)}to{transform:translate(44cqw)scaleX(1)}}@keyframes intruder-face-off{0%{transform:translate(-14cqw)}18%,70%{transform:translate(14cqw)}71%{transform:translate(14cqw)scaleX(-1)}to{transform:translate(-24cqw)scaleX(-1)}}@keyframes intruder-shocked{0%{transform:translate(-14cqw)}18%,44%{transform:translate(14cqw)}46%,54%,62%{transform:translate(13cqw)translateY(-5px)rotate(-5deg)}50%,58%,66%{transform:translate(15cqw)translateY(-2px)rotate(5deg)}70%{transform:translate(14cqw)}71%{transform:translate(14cqw)scaleX(-1)}to{transform:translate(-24cqw)scaleX(-1)}}@keyframes helsa-charge{0%{opacity:1;transform:translate(52cqw)}16%,18%{opacity:1;transform:translate(38cqw)scaleX(-1)}20%,72%{opacity:0;transform:translate(38cqw)scaleX(-1)}74%{opacity:1;transform:translate(38cqw)}to{opacity:1;transform:translate(44cqw)}}@keyframes thief-charge{0%{opacity:1;transform:translate(-14cqw)}18%{opacity:1;transform:translate(30cqw)}20%,72%{opacity:0;transform:translate(30cqw)}74%{opacity:1;transform:translate(30cqw)rotate(0)}to{opacity:1;transform:translate(-24cqw)translateY(-130px)rotate(-900deg)}}@keyframes helsa-victory{0%,to{transform:translate(44cqw)}25%{transform:translate(44cqw)translateY(-18px)}50%{transform:translate(44cqw)}75%{transform:translate(44cqw)translateY(-18px)}}@keyframes door-rattle{25%{transform:rotate(-1.4deg)}75%{transform:rotate(1.4deg)}}.door-stage__brawl{z-index:3;opacity:0;pointer-events:none;width:130px;height:100px;position:absolute;bottom:4px;left:28cqw}.door-stage[data-phase=fight] .door-stage__brawl{animation:6s linear both brawl-show}@keyframes brawl-show{0%,19%{opacity:0;transform:scale(.3)}23%,70%{opacity:1;transform:scale(1)}74%,to{opacity:0;transform:scale(1.3)}}.door-stage[data-phase=fight] .door-stage__cloud{transform-origin:65px 58px;animation:.5s linear infinite brawl-spin}@keyframes brawl-spin{25%{transform:translate(3px,-3px)rotate(8deg)}50%{transform:translate(-3px,2px)rotate(-6deg)}75%{transform:translate(2px,3px)rotate(5deg)}}.door-stage__word{z-index:4;opacity:0;white-space:nowrap;color:#fff;background:#dc2626;border-radius:4px;padding:1px 6px;font-size:15px;font-weight:800;animation:1.8s ease-out both word-pop;position:absolute;top:18px;rotate:-7deg}.door-stage__word[data-at=left]{left:12cqw}.door-stage__word[data-at=top]{left:32cqw}.door-stage__word[data-at=right]{left:50cqw;rotate:7deg}.door-stage__word[data-tone=amber]{background:#d97706}.door-stage__word[data-tone=accent]{background:var(--accent)}.door-stage__code{z-index:3;opacity:0;color:#4ade80;white-space:nowrap;background:#111827;border-radius:3px;padding:0 4px;font-family:ui-monospace,monospace;font-size:10px;animation:2.2s ease-out both code-rise;position:absolute;bottom:62px;left:16cqw}@keyframes code-rise{0%{opacity:0;transform:translateY(0)}20%,70%{opacity:1}to{opacity:0;transform:translateY(-46px)}}.door-stage__bolt{z-index:3;opacity:0;width:16cqw;height:44px;animation:6s step-end both bolt-flash;position:absolute;bottom:44px;left:24cqw}@keyframes bolt-flash{0%,42%{opacity:0}44%,50%,56%,62%{opacity:1}47%,53%,59%,66%,to{opacity:0}}.door-stage__guess{z-index:3;opacity:0;border:1px solid var(--border-strong);background:var(--surface);color:var(--fg);white-space:nowrap;border-radius:4px;padding:0 5px;font-family:ui-monospace,monospace;font-size:11px;animation:1.9s ease-in both guess-fly;position:absolute;bottom:44px;left:18cqw}@keyframes guess-fly{0%{opacity:0;transform:translate(0)translateY(-22px)}10%{opacity:1}62%{opacity:1;transform:translate(48cqw)translateY(-40px)rotate(4deg)}to{opacity:0;transform:translate(40cqw)translateY(30px)rotate(70deg)}}.door-stage__scan{z-index:3;opacity:0;background:linear-gradient(to left, var(--accent), transparent);clip-path:polygon(100% 30%,0 0,0 100%,100% 60%);width:24cqw;height:84px;animation:6s ease-in-out both scan-sweep;position:absolute;bottom:0;left:15cqw}@keyframes scan-sweep{0%,20%{opacity:0}26%,50%{opacity:.45}38%{opacity:.2}54%,to{opacity:0}}.door-stage[data-phase=fight] .door-stage__moustache{transform-box:fill-box;animation:6s ease-in both moustache-fall}@keyframes moustache-fall{0%,54%{opacity:1;transform:translateY(0)rotate(0)}70%{opacity:1;transform:translateY(48px)rotate(40deg)}to{opacity:0;transform:translateY(48px)rotate(40deg)}}@keyframes word-pop{0%{opacity:0;scale:.3}20%{opacity:1;scale:1.25}80%{opacity:1;scale:1}to{opacity:0;scale:1}}@media (prefers-reduced-motion:reduce){.door-stage__helsa,.door-stage[data-phase] .door-stage__helsa{animation:none;transform:translate(58cqw)}.door-stage__sneaker,.door-stage__alarm,.door-stage__brawl,.door-stage__word,.door-stage__code,.door-stage__bolt,.door-stage__guess,.door-stage__scan{display:none}.door-stage__door,.door-stage[data-phase] .door-stage__door{animation:none}}.door-stage[data-handoff] .door-stage__helsa{transition:transform .8s ease-in-out;animation:none;transform:translate(46cqw)scaleX(-1)}.door-stage[data-handoff=welcome] .door-stage__helsa{transform:translate(46cqw)translateY(-6px)scaleX(1)}.door-stage[data-handoff=refused] .door-stage__helsa{animation:.8s ease-in-out 3 helsa-no}@keyframes helsa-no{25%{transform:translate(45cqw)scaleX(-1)rotate(-5deg)}75%{transform:translate(47cqw)scaleX(-1)rotate(5deg)}}.door-stage__room{background:linear-gradient(to top, var(--accent), var(--accent-soft));opacity:0;border-radius:10px 10px 0 0;width:74px;height:132px;transition:opacity .9s ease-out;position:absolute;bottom:0;right:8cqw}.door-stage[data-handoff=welcome] .door-stage__room{opacity:1}.door-stage[data-handoff] .door-stage__door{transform-origin:100%;transition:transform 1.6s ease-in-out .4s}.door-stage[data-handoff=welcome] .door-stage__door{transform:perspective(420px)rotateY(68deg)}.door-stage[data-handoff=refused] .door-stage__door{animation:.5s ease-in-out 4 door-rattle}.door-stage__guest{z-index:3;animation:2s ease-out both guest-arrive;position:absolute;bottom:0;left:0}.door-stage[data-handoff=welcome] .door-stage__guest{animation:3s ease-in-out 1.6s both guest-enter}.door-stage[data-handoff=refused] .door-stage__guest{animation:2.4s ease-in 2s both guest-leave}@keyframes guest-arrive{0%{transform:translate(-14cqw)}to{transform:translate(26cqw)}}@keyframes guest-enter{0%{opacity:1;transform:translate(26cqw)}82%{opacity:1;transform:translate(78cqw)scale(.9)}to{opacity:0;transform:translate(82cqw)scale(.75)}}@keyframes guest-leave{0%{transform:translate(26cqw)scaleX(1)}1%{transform:translate(26cqw)scaleX(-1)}to{transform:translate(-20cqw)scaleX(-1)}}.door-stage__pass{z-index:4;border:2px solid var(--border-strong);background:var(--surface);color:#fff;border-radius:4px;place-items:center;width:34px;height:22px;font-size:13px;font-weight:800;animation:.5s ease-out 1.8s both pass-show;display:grid;position:absolute;bottom:42px;left:37cqw;overflow:hidden}.door-stage__pass:after{content:"";background:var(--accent);width:6px;animation:1.1s ease-in-out infinite alternate pass-scan;position:absolute;top:0;bottom:0;left:0}.door-stage__pass[data-result]{animation:.6s ease-out both pass-pop}.door-stage__pass[data-result]:after{display:none}.door-stage__pass[data-result=ok]{background:#16a34a;border-color:#16a34a}.door-stage__pass[data-result=no]{background:#dc2626;border-color:#dc2626}@keyframes pass-show{0%{opacity:0;transform:scale(.4)}}@keyframes pass-scan{to{left:calc(100% - 6px)}}@keyframes pass-pop{50%{transform:scale(1.35)}}@media (prefers-reduced-motion:reduce){.door-stage__guest,.door-stage[data-handoff] .door-stage__guest,.door-stage__pass,.door-stage__pass:after,.door-stage[data-handoff=refused] .door-stage__helsa,.door-stage[data-handoff=refused] .door-stage__door{animation:none}.door-stage[data-handoff] .door-stage__door{transition:none}.door-stage__guest{transform:translate(26cqw)}}
