/* Lighter presentation: motion follows an action, and reading surfaces stay opaque.
   Scoped selectors intentionally outrank route styles even when those load later. */
.ambient-scene[hidden]{display:none!important}
body.scene-detail .ambient-scene{display:none;filter:none;transition:none}
body.scene-detail #main{background:#07080a;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}
body.immersive .scene-dock{background:#111318;backdrop-filter:none;-webkit-backdrop-filter:none}
body.immersive .signal-drawer{background:#0c0e12;backdrop-filter:none;-webkit-backdrop-filter:none}
body.immersive .scene-close-detail{background:#090b0f;backdrop-filter:none;-webkit-backdrop-filter:none}
body.immersive dialog::backdrop{background:#000d;backdrop-filter:none;-webkit-backdrop-filter:none}

/* Keep route-specific entrance opt-outs; any enabled entrance is short and sharp. */
body.scene-detail .page-enter{animation-duration:.2s;filter:none}
@keyframes detailOpen{from{opacity:.9;transform:translateY(4px)}to{opacity:1;transform:none}}
.route-loading{max-width:760px;margin:24px auto;padding:24px clamp(18px,4vw,36px);min-height:140px;color:#e8e5e7}
.route-load-status{pointer-events:auto;margin:0 0 14px;padding:12px 16px;background:#150d10;border:1px solid #68313c;color:#eed6db;font-size:13px;line-height:1.7}
.scene-home .route-load-status{max-width:min(720px,calc(100% - 40px));margin:112px auto 0}
.route-load-status p{margin:0 0 10px;color:inherit;font-size:inherit;line-height:inherit}
.route-load-status button,.route-load-status a{display:inline-flex;align-items:center;min-height:40px;padding:8px 14px;border:1px solid #b84c5d;background:#36121a;color:#ffe3e8;font-size:12px;text-decoration:none;cursor:pointer}
.route-load-status button:hover,.route-load-status a:hover{background:#521b28}
.route-load-status button:focus-visible,.route-load-status a:focus-visible{outline:2px solid #ff667a;outline-offset:3px}

/* Video cards arrive once and lift on interaction, instead of moving constantly. */
.security-media .media-grid{perspective:none}
.security-media .media-float-surface{animation:none;transform:none;transition:border-color .18s}
.security-media .media-scan{display:none;animation:none}
.security-media .media-wave path{animation:none}
.security-media .media-visible{animation:perf-media-arrive .24s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--media-index)*18ms)}
.security-media .media-image,
.security-media .media-play:hover .media-image,
.security-media .media-play:focus-visible .media-image{filter:none;transition:transform .24s cubic-bezier(.16,1,.3,1)}
.security-media .media-play{transition:translate .2s cubic-bezier(.16,1,.3,1)}
.security-media .media-play:hover,
.security-media .media-play:focus-visible{translate:0 -3px}
.security-media .media-play:hover .media-float-surface,
.security-media .media-play:focus-visible .media-float-surface{box-shadow:none}
.news-dashboard .nd-video{animation:none}
.news-dashboard .nd-video-play img,
.news-dashboard .nd-video-play:hover img,
.news-dashboard .nd-video-play:focus-visible img{filter:none;transition:transform .24s cubic-bezier(.16,1,.3,1)}
@keyframes perf-media-arrive{from{opacity:.85;transform:translateY(6px)}to{opacity:1;transform:none}}

/* Keep the diagram's geometry and selection; stop decorative rotation and glow. */
.security-scene .ss-orbit,
.security-scene .ss-core-halo,
.security-scene .ss-node-core:before,
.security-scene .ss-layer,
.security-scene .ss-live-mark:before,
.security-scene .ss-source-pulse:after,
.security-scene .ss-route-packet,
.security-scene .ss-route-inner,
.security-scene .ss-relation .ss-edge-flow,
.security-scene .ss-coverage-line,
.security-scene .ss-source-ray{animation:none}
.security-scene .ss-orbit-hot,
.security-scene .ss-route-packet,
.security-scene .ss-core-button>svg,
.security-scene.ss-protected .ss-core-button>svg,
.security-scene .ss-coverage-line.is-selected,
.security-scene .ss-layer-dot,
.security-scene .ss-budget-value,
.security-scene .ss-budget-hand,
.security-scene .ss-source-center{filter:none}
.security-scene .ss-live-mark:before{box-shadow:none}
.security-scene .ss-node{transition:opacity .2s,color .2s}
.security-scene .ss-node-core{transition:border-color .2s,transform .2s,color .2s}
.security-scene .ss-budget-hand{transition:transform .6s cubic-bezier(.22,1,.36,1)}
.security-scene .ss-route.is-selected .ss-route-packet,
.security-scene .ss-relation.is-selected .ss-edge-flow,
.security-scene .ss-coverage-line.is-selected,
.security-scene .ss-source-ray.is-selected{animation:ssFlow 1.2s ease-out 1}

/* Article diagrams stay readable; a single sweep acknowledges hover/focus. */
body.immersive .article-art .art-orbit,
body.immersive .article-art .art-travel,
body.immersive .analysis-mini:before,
body.immersive .analysis-mini i,
body.immersive .analysis-flow>div:after,
body.scene-detail #main .journey-node.defended,
body.scene-detail #main .concept-relation:after{animation:none}
body.scene-detail #main .news-card .article-art:after,
body.scene-detail #main .timeline-event .article-art:after{animation:none;transform:translateX(-140%)}
body.scene-detail #main .news-card:hover .article-art:after,
body.scene-detail #main .news-card:focus-within .article-art:after{animation:perf-article-sweep .5s ease-out 1}
@keyframes perf-article-sweep{from{transform:translateX(-140%)}to{transform:translateX(140%)}}

/* Existing pause/reduced-motion controls apply equally to the new short motions. */
.motion-paused .security-media .media-visible,
.media-paused .media-visible,
.media-suspended .media-visible{animation:none!important;opacity:1;transform:none}
.motion-paused .security-scene *,
.motion-paused .security-scene *:before,
.motion-paused .security-scene *:after,
.security-scene.ss-paused *,
.security-scene.ss-paused *:before,
.security-scene.ss-paused *:after{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){
 .security-media .media-visible,
 body.scene-detail #main .news-card:hover .article-art:after,
 body.scene-detail #main .news-card:focus-within .article-art:after{animation:none!important}
 .security-media .media-play:hover,.security-media .media-play:focus-visible{translate:none}
 .security-scene .ss-budget-hand{transition:none}
}

/* v26: settle decorative loops; interaction and loading feedback remain available. */
body.immersive .coordinate-dot,
body.immersive .scene-counter::after,
body.immersive .scene-instruction svg,
body.immersive .live-dot::after,
body.immersive .journey-arrow,
body.immersive .defense-banner .banner-stamp{animation:none}
/* Legacy floating emblems must never cover the reading surface. */
.security-page-orb,.page-orb-reopen,.page-orb-anchor{display:none!important;pointer-events:none!important}
body.immersive .reading-progress{width:100%;transform:scaleX(0);transform-origin:left;transition:none}
