/* Shared presentation layer. All data and image content is unchanged. */
.fx-reading-progress{position:fixed;inset:0 0 auto;height:2px;z-index:100;pointer-events:none;transform-origin:left;transform:scaleX(0);background:linear-gradient(90deg,#52c6db,#80f4e3 70%,#b6a3ff);box-shadow:0 0 12px #69e9e690}
.fx-scrolled .topbar{box-shadow:0 12px 40px #0005;border-bottom-color:#45616b80}
.fx-light-surface{isolation:isolate}
.fx-pointer-glow{position:absolute;inset:0;z-index:5;pointer-events:none;border-radius:inherit;opacity:0;background:radial-gradient(350px circle at var(--fx-x,50%) var(--fx-y,50%),#73f1ec12,transparent 75%);transition:opacity .4s}
.fx-pointer-active>.fx-pointer-glow{opacity:1}
.fx-image-stage{position:relative;isolation:isolate;overflow:hidden;min-width:0;line-height:0}
.fx-image-stage>img{display:block;width:100%;height:auto}
.fx-image-stage:before{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.9;background:linear-gradient(#8cf3e4,#8cf3e4) left top/22px 1px no-repeat,linear-gradient(#8cf3e4,#8cf3e4) left top/1px 22px no-repeat,linear-gradient(#8cf3e4,#8cf3e4) right top/22px 1px no-repeat,linear-gradient(#8cf3e4,#8cf3e4) right top/1px 22px no-repeat,linear-gradient(#8cf3e4,#8cf3e4) left bottom/22px 1px no-repeat,linear-gradient(#8cf3e4,#8cf3e4) left bottom/1px 22px no-repeat,linear-gradient(#8cf3e4,#8cf3e4) right bottom/22px 1px no-repeat,linear-gradient(#8cf3e4,#8cf3e4) right bottom/1px 22px no-repeat}
.fx-image-stage:after{content:'';position:absolute;inset:-30% 0 auto;height:28%;z-index:2;pointer-events:none;background:linear-gradient(transparent,#79f7e408 85%,#79f7e465 99%,transparent);opacity:0;transform:translateY(0);animation:fx-scan 9s cubic-bezier(.4,0,.3,1) infinite;animation-play-state:paused}
.fx-image-stage.fx-in-view:after{animation-play-state:running}
.evidence-strip .fx-image-stage:after{animation-duration:12s}
.evidence-strip:nth-child(even) .fx-image-stage:after{animation-delay:-5s}
.hist-bar{transform-box:fill-box;transform-origin:center bottom}
.fx-orbit-rings{position:absolute;inset:4% 7%;z-index:0;pointer-events:none;overflow:hidden;opacity:.75}
.fx-orbit-rings i{position:absolute;display:block;aspect-ratio:1;left:50%;top:50%;width:84%;border-radius:50%;border:1px solid transparent;border-top-color:#73dfd256;border-left-color:#73dfd20e;transform:translate(-50%,-50%) rotate(0deg);animation:fx-ring 42s linear infinite;animation-play-state:paused}
.fx-orbit-rings i:after{content:'';position:absolute;top:13%;right:13%;width:4px;height:4px;border-radius:50%;background:#83eae0;box-shadow:0 0 12px #83eae0}
.fx-orbit-rings i:nth-child(2){width:95%;border-color:transparent;border-bottom-color:#aaa5ff38;animation-duration:64s;animation-direction:reverse}
.fx-orbit-rings i:nth-child(2):after{background:#b2abff;box-shadow:0 0 10px #a39aff80;width:3px;height:3px}
.fx-orbit-rings.fx-in-view i{animation-play-state:running}
.fx-paused .fx-image-stage:after,.fx-paused .fx-orbit-rings i{animation-play-state:paused!important}
.fx-light-surface .btn,.report-teaser .teaser-open,.dimension,.psych-card,.metric-card{transition:background .25s,border-color .25s,box-shadow .25s,transform .25s}
.report-teaser:hover .teaser-open{background:#67e2df13;color:#c6fff6}
.psych-card:hover,.metric-card:hover{border-color:#4d747c;box-shadow:0 7px 28px #0002,inset 0 1px #a5f7ed06}
.modal-backdrop{animation:fx-modal-backdrop .22s ease-out}
.modal{animation:fx-modal .32s cubic-bezier(.22,1,.36,1)}
@keyframes fx-scan{0%,12%{opacity:0;transform:translateY(0)}16%{opacity:1}45%{opacity:.8}52%,100%{opacity:0;transform:translateY(470%)}}
@keyframes fx-ring{to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes fx-modal-backdrop{from{opacity:0}to{opacity:1}}
@keyframes fx-modal{from{opacity:.4;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:640px){.fx-image-stage:before{background-size:14px 1px,1px 14px,14px 1px,1px 14px,14px 1px,1px 14px,14px 1px,1px 14px}.fx-pointer-glow{display:none}.fx-orbit-rings{inset:2% 12%}.fx-image-stage:after{animation-duration:12s}}
@media(prefers-reduced-motion:reduce){.fx-image-stage:after,.fx-orbit-rings,.fx-pointer-glow{display:none}.fx-reading-progress{box-shadow:none}.modal,.modal-backdrop{animation:none}}
@media print{.fx-reading-progress,.fx-pointer-glow,.fx-orbit-rings,.fx-image-stage:before,.fx-image-stage:after{display:none}}
