/* Ambient movement stays in the artwork; the text and action hitboxes never move. */
#glitchAtmosphere{display:none;position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 75% 24%,#66dce51c,transparent 60%)}
.glitchFX #glitchAtmosphere{display:block}
#glitchAtmosphere::before,#glitchAtmosphere::after{content:"";position:absolute;pointer-events:none}
#glitchAtmosphere::before{inset:-20%;background:linear-gradient(115deg,transparent 30%,#abecff0c 45%,transparent 62%);animation:gfxDaylight 18s ease-in-out infinite alternate}
#glitchAtmosphere::after{inset:0;background:linear-gradient(0deg,#030c16a6,transparent 65%)}
#glitchAtmosphere i{position:absolute;left:calc(10% + var(--i)*15%);top:calc(20% + var(--i)*9%);width:3px;height:3px;border-radius:50%;background:#d4f8ff;opacity:.18;box-shadow:0 0 14px #98e5ff70;animation:gfxDrift 12s ease-in-out infinite alternate;animation-delay:calc(var(--i)*-2s)}
#glitchAtmosphere[data-mood=everyday]{background:radial-gradient(ellipse at 70% 16%,#e8b98120,transparent 65%)}
#glitchAtmosphere[data-mood=everyday] i{width:32px;height:90px;border-radius:50%;background:linear-gradient(0deg,transparent,#bddce712,transparent);filter:blur(7px);opacity:.4;animation-duration:16s}
#glitchAtmosphere[data-mood=uneasy]::before{background:repeating-linear-gradient(90deg,transparent 0 90px,#9de8ff09 91px 92px);animation-duration:24s}
#glitchAtmosphere[data-mood=fracture]::before{background:repeating-linear-gradient(0deg,transparent 0 44px,#86cfff12 45px 46px),linear-gradient(120deg,transparent,#7ddfef10,transparent);animation-duration:20s}
#glitchEffectsToggle{position:absolute;right:12px;top:12px;z-index:5;min-height:44px;padding:8px 12px;border:1px solid #b5e7f04d;border-radius:22px;background:#06141dd9;color:#bcdce4;font:inherit;font-size:12px;line-height:1.4;cursor:pointer;touch-action:manipulation}
#glitchEffectsToggle:focus-visible{outline:2px solid #b1f4ff;outline-offset:3px}
.gfxRecord{position:relative;isolation:isolate;box-sizing:border-box;overflow:hidden;margin:24px 0;padding:18px 20px;border:1px solid #4f8e9d66;border-radius:12px;background:linear-gradient(145deg,#0b202c,#08121d);color:#cce6ea;font:13px/1.8 ui-monospace,Consolas,monospace;pointer-events:none}
.gfxRecordHead{display:flex;justify-content:space-between;gap:16px;margin-bottom:12px;color:#8fe5ee;letter-spacing:.06em}
.gfxRecordHead span{font-size:11px;opacity:.7}.gfxRecordLabel{font-size:11px;color:#8aadb8;margin-top:8px}.gfxOriginal{margin:3px 0 14px;color:#c5d3d8}.gfxRecordLine{position:relative;min-height:32px;padding:4px 0;overflow-wrap:anywhere}.gfxRecordValue{position:relative}.gfxRecordGhost{position:absolute;left:0;top:4px;opacity:0;color:#ffb2c3;pointer-events:none}
.gfxRecord--phone .gfxRecordLine{font-size:32px;line-height:1.5;font-variant-numeric:tabular-nums;letter-spacing:.12em}
.gfxRecordChanged .gfxRecordGhost{animation:gfxErase 1.1s ease-out both}.gfxRecordChanged .gfxRecordValue{animation:gfxRewrite .55s ease-out both}
.gfxFault1 #visual{animation:gfxFaultSoft .6s ease-out}.gfxFault2 #visual,.gfxFault2 .gfxRecord{animation:gfxFaultMedium .65s ease-out}.gfxFault3 #visual,.gfxFault3 .gfxRecord{animation:gfxFaultMedium .7s ease-out}
.gfxFault3 #storyText{animation:gfxInkEcho .7s ease-out}
@keyframes gfxDaylight{from{transform:translateX(-3%);opacity:.45}to{transform:translateX(3%);opacity:.85}}
@keyframes gfxDrift{from{transform:translate3d(0,14px,0);opacity:.1}to{transform:translate3d(8px,-18px,0);opacity:.32}}
@keyframes gfxErase{0%{opacity:.55;transform:translateX(0)}35%{opacity:.2;transform:translateX(3px)}100%{opacity:0;transform:translateX(6px)}}
@keyframes gfxRewrite{0%{opacity:.2;filter:blur(1px)}100%{opacity:1;filter:none}}
@keyframes gfxFaultSoft{0%,100%{filter:none}30%{filter:sepia(.15) hue-rotate(12deg)}}
@keyframes gfxFaultMedium{0%,100%{filter:none}30%{filter:sepia(.25) hue-rotate(32deg);box-shadow:inset 3px 0 #8aeaff55,inset -3px 0 #ff91bb33}}
@keyframes gfxInkEcho{0%,100%{text-shadow:none}25%{text-shadow:1px 0 #89eeff77,-1px 0 #ff96bd55}}
.glitchFXPaused #glitchAtmosphere,.glitchFXPaused #glitchAtmosphere *,.glitchFXPaused #glitchAtmosphere::before{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){#glitchAtmosphere *,#glitchAtmosphere::before,.gfxRecord *,#gameScreen.gfxFault1 #visual,#gameScreen.gfxFault2 #visual,#gameScreen.gfxFault3 #visual,#gameScreen.gfxFault3 #storyText{animation:none!important}.gfxRecordGhost{display:none}}
/* Scene-bound camera and memory illustrations. No text or controls are obscured. */
.gfxCameraPair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.gfxCameraPair span{font-size:11px;color:#a2bdc6}.gfxCameraRoom{height:130px;position:relative;overflow:hidden;border:1px solid #376074;border-radius:5px;background:linear-gradient(0deg,#142735 0 24%,#091823 25% 100%)}
.gfxCameraRoom::after{content:"";position:absolute;inset:15px 15px 35%;border:1px solid #81a6b51c;pointer-events:none}.gfxObject{position:absolute;left:42%;bottom:22%;width:27px;height:48px;color:#aac8d5;transition:opacity .8s,filter .8s}.gfxObject.chair{border:3px solid currentColor;border-bottom:0;border-radius:3px 3px 0 0}.gfxObject.chair::after{content:"";position:absolute;left:-7px;right:-7px;top:27px;border-top:4px solid currentColor}.gfxObject.lamp{width:3px;height:79px;background:currentColor}.gfxObject.lamp::after{content:"";position:absolute;top:0;left:-10px;width:25px;height:8px;border-radius:50%;background:#d5eacf;box-shadow:0 6px 20px #cde9bc80}.gfxCameraMissing .gfxCameraPreview .gfxObject{opacity:0;filter:blur(3px)}.gfxScan{position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 4px,#91eaff09 5px);pointer-events:none}
.gfxLifeStage{height:135px;position:relative;display:flex;align-items:center;justify-content:center;gap:12px;overflow:hidden;background:radial-gradient(ellipse,#61829023,transparent 70%)}.gfxLifeStage i{display:block;width:65px;height:85px;border:1px solid #95bbcb88;border-radius:3px;background:linear-gradient(145deg,#aec5bf25,#112536);box-shadow:0 3px 16px #0005}.gfxLifeStage i:nth-child(2){position:absolute;transform:translate(8px,-3px);opacity:.2;border-color:#edbfc7}.gfxLifeStage i:nth-child(3){position:absolute;transform:translate(-9px,4px);opacity:.15}.gfxLifeStage.photo i::after{content:"";display:block;width:18px;height:18px;border-radius:50%;margin:15px auto;background:#a3b6b9;box-shadow:0 21px 0 6px #6a828c}.gfxLifeStage.cups i{width:43px;height:46px;border-radius:4px 4px 16px 16px}.gfxLifeStage.cups i:first-child{transform:translateX(-26px)}.gfxLifeStage.cups i:nth-child(2){transform:translateX(29px);opacity:.65}.gfxLifeStage.identity i{width:110px;height:65px;background:linear-gradient(90deg,#7596a838 35%,transparent 36%),repeating-linear-gradient(0deg,#88b2c81c 0 1px,transparent 1px 15px)}.gfxLifeStage.mirror i{border-radius:50% 50% 4px 4px}
.gfxLifeOverlap .gfxLifeStage i:nth-child(2),.gfxLifeOverlap .gfxLifeStage i:nth-child(3){animation:gfxLifeMemory 2.8s ease-in-out}.gfxStill #glitchAtmosphere{filter:brightness(.45);transition:filter .6s}.gfxStill #glitchAtmosphere *,.gfxStill #glitchAtmosphere::before{animation-play-state:paused!important}.gfxStill #choiceBox{box-shadow:0 -12px 35px #0002;transition:box-shadow .5s}
#glitchSaveScar{margin:12px 0;padding:12px 14px;border-left:2px solid #a3c3c8;background:#081720;color:#bbd2d9;font:12px/1.7 ui-monospace,Consolas,monospace;position:relative;overflow:hidden}#glitchSaveScar small{display:block;color:#92acb8;font-size:11px}.gfxSaveBefore{position:absolute;opacity:0;color:#e9afbb;pointer-events:none}.gfxSaveRewrite .gfxSaveBefore{animation:gfxErase 2.4s both}.gfxSaveRewrite>span:nth-child(2){animation:gfxRewrite 2.4s both}
@keyframes gfxLifeMemory{0%,100%{opacity:.15;filter:none}35%{opacity:.6;filter:blur(1px)}65%{opacity:.35;filter:blur(2px)}}
@media(prefers-reduced-motion:reduce){.gfxLifeOverlap .gfxLifeStage i,#glitchSaveScar span{animation:none!important}.gfxObject{transition:none}.gfxStill #glitchAtmosphere,.gfxStill #choiceBox{transition:none}}
#gameScreen.gfxFault1::before,#gameScreen.gfxFault2::before,#gameScreen.gfxFault3::before{content:'';position:fixed;inset:0;z-index:9998;pointer-events:none;box-shadow:inset 5px 0 #7cd9e9aa,inset -5px 0 #e987a0aa;background:linear-gradient(90deg,#79e9ff12,transparent 12% 88%,#ff91b312);animation:gfxViewportFault 2.4s ease-out both}
#gameScreen.gfxFault2::before{box-shadow:inset 9px 0 #7cd9e9bb,inset -9px 0 #e987a0bb}#gameScreen.gfxFault3::before{box-shadow:inset 13px 0 #7cd9e9cc,inset -13px 0 #e987a0cc}
@keyframes gfxViewportFault{0%{opacity:0}12%,75%{opacity:1}100%{opacity:0}}@media(prefers-reduced-motion:reduce){#gameScreen.gfxFault1::before,#gameScreen.gfxFault2::before,#gameScreen.gfxFault3::before{animation:none;display:none}}
