:root{--void: #020202;--charcoal: #080909;--iron: #161817;--ash: #d6d2c8;--ash-dim: #878277;--blood: #a81616;--blood-low: #3a0505;--sick: #8a9b72;--mono: "Courier New", "Lucida Console", monospace;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--void);color:var(--ash);font-family:var(--mono);user-select:none;-webkit-user-select:none;cursor:crosshair}#app,.lab-shell,.transmission{position:fixed;inset:0;overflow:hidden}.noise-canvas{position:fixed;inset:0;width:100%;height:100%;image-rendering:pixelated;opacity:.42}.signal-depth{position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at var(--mx, 50%) var(--my, 48%),rgba(168,22,22,.17),transparent 16rem),radial-gradient(circle at 50% 46%,rgba(138,155,114,.08),transparent 24rem),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.026) 1px,transparent 1px),radial-gradient(ellipse at center,transparent 24%,rgba(0,0,0,.72) 72%,#000 100%);background-size:auto,auto,44px 44px,44px 44px,auto;mix-blend-mode:screen}.transmission{--mx: 50%;--my: 48%;display:grid;grid-template-rows:minmax(64px,12vh) 1fr minmax(116px,22vh);padding:clamp(18px,3vw,42px);isolation:isolate}.transmission:before,.transmission:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:8}.transmission:before{background:repeating-linear-gradient(to bottom,transparent 0 2px,rgba(0,0,0,.34) 2px 3px);opacity:.78}.transmission:after{background:linear-gradient(transparent,rgba(168,22,22,.05),transparent);animation:scan 5.8s linear infinite}.readout{position:fixed;top:clamp(14px,2.4vw,32px);z-index:12;display:grid;gap:7px;max-width:min(42vw,430px);color:var(--ash-dim);font-size:clamp(10px,1.1vw,13px);letter-spacing:0;text-transform:uppercase}.readout-left{left:clamp(14px,2.4vw,32px)}.readout-right{right:clamp(14px,2.4vw,32px);text-align:right}.portal-field{position:relative;grid-row:2;display:flex;align-items:center;justify-content:center;gap:clamp(38px,11vw,160px);min-height:0;filter:drop-shadow(0 0 14px rgba(168,22,22,.16))}.portal-frame{position:relative;width:clamp(96px,15vw,210px);height:clamp(170px,36vh,420px);border:1px solid rgba(214,210,200,.22);background:linear-gradient(90deg,transparent 12%,rgba(168,22,22,.1),transparent 88%),radial-gradient(ellipse at center,rgba(168,22,22,.08),transparent 60%);transform:perspective(800px) rotateY(var(--tilt));animation:frame-breathe 4.6s ease-in-out infinite}.portal-frame-a{--tilt: 11deg}.portal-frame-b{--tilt: -11deg;animation-delay:-1.7s}.portal-frame:before,.portal-frame:after,.portal-frame span:before,.portal-frame span:after{content:"";position:absolute;background:#d6d2c847;box-shadow:0 0 22px #a816164d}.portal-frame:before,.portal-frame:after{left:7%;right:7%;height:1px}.portal-frame:before{top:9%}.portal-frame:after{bottom:9%}.portal-frame span:before,.portal-frame span:after{top:7%;bottom:7%;width:1px}.portal-frame span:before{left:11%}.portal-frame span:after{right:11%}.portal-frame span{position:absolute;inset:0}.portal-frame span:nth-child(2){transform:scale(.78);opacity:.58}.absence{position:absolute;left:50%;top:50%;width:min(23vmin,190px);aspect-ratio:1;display:grid;place-items:center;border-radius:50%;color:#a8161694;font-size:clamp(32px,7vw,92px);text-shadow:0 0 12px rgba(168,22,22,.58);background:radial-gradient(circle,rgba(0,0,0,.9) 0 28%,rgba(168,22,22,.14) 29%,transparent 62%);transform:translate(-50%,-50%);animation:absence 3.7s ease-in-out infinite}.is-awake .portal-frame{border-color:#a81616b8;box-shadow:0 0 26px #a816162e,inset 0 0 22px #a816161a}@keyframes frame-breathe{0%,to{opacity:.42;transform:perspective(800px) rotateY(var(--tilt)) scaleY(.98)}50%{opacity:.84;transform:perspective(800px) rotateY(var(--tilt)) scaleY(1.03)}}@keyframes absence{0%,to{opacity:.28;transform:translate(-50%,-50%) scale(.94)}50%{opacity:.68;transform:translate(-50%,-50%) scale(1.04)}}@keyframes scan{0%{transform:translateY(-100%)}to{transform:translateY(100%)}}@media (max-width: 760px){html,body{cursor:default}.transmission{grid-template-rows:92px 1fr 230px;padding:16px}.readout{max-width:calc(50vw - 20px);gap:5px}.portal-field{gap:24px;transform:translateY(-3vh)}.portal-frame{width:clamp(74px,24vw,110px);height:clamp(138px,34vh,250px)}}
