/* One FX plane attached to each physical sheet. It inherits page turns,
   80lb text curl/cover pivots, 2-page spine geometry, zoom and spatial pose. */
.cr-page>.cr-paper-panel-fx,
.cr-spread-page-frame>.cr-paper-panel-fx,
.cr-swipe-turn-page>.cr-paper-panel-fx{
 position:absolute!important;inset:auto!important;
  left:var(--cr-fx-left,0px)!important;top:var(--cr-fx-top,0px)!important;
  right:auto!important;bottom:auto!important;display:block!important;
 width:var(--cr-fx-width,100%)!important;height:var(--cr-fx-height,100%)!important;
  max-width:none!important;
 z-index:5!important;object-fit:fill!important;pointer-events:none!important;
 user-select:none!important;overflow:hidden!important;
 transform:none!important;filter:none!important;
 opacity:1!important;mix-blend-mode:normal!important;
 contain:paint!important;
}
/* The panel FX never recolor pixels of the underlying artwork and cannot
   escape from its own bound sheet onto adjacent pages, buttons or gutters. */
.cr-swipe-turn-page>.cr-paper-panel-fx{
 backface-visibility:hidden!important;
 transform-origin:inherit!important;
}
.cr-page>.cr-cover-foil,
.cr-spread-page-frame>.cr-cover-foil,
.cr-swipe-turn-page>.cr-cover-foil{z-index:7!important;}
.cr-page[data-page-load="loading"]>.cr-paper-panel-fx,
.cr-spread-page-frame[data-page-load="loading"]>.cr-paper-panel-fx{display:none!important;}
@media(prefers-reduced-motion:reduce){
 .cr-paper-panel-fx{animation:none!important;transition:none!important}
}
/* r11 / physical-sheet signature and hard transition gate.
   Map is never allowed to remain on an inactive page, a preview or a bend. */
.cr-shell[data-view="reader"]:not([data-panel-fx-state="verified"]) .cr-paper-panel-fx,
.cr-shell[data-view="reader"].cr-live-swipe .cr-paper-panel-fx,
.cr-shell[data-view="reader"].cr-turn-active .cr-paper-panel-fx,
.cr-shell[data-view="reader"][data-page-state="flipping"] .cr-paper-panel-fx,
.cr-shell[data-view="reader"][data-page-state="user_fold"] .cr-paper-panel-fx,
.cr-paper-bending>.cr-paper-panel-fx,
.cr-spread-preview .cr-paper-panel-fx,
.cr-swipe-spread-preview .cr-paper-panel-fx,
.cr-swipe-underlay .cr-paper-panel-fx,
.cr-swipe-turn-page .cr-paper-panel-fx{
 display:none!important;
}
/* Keep a validated line in page UV space. Spatial moves only artwork
   internals, never this registered gutter mask or its physical page. */
.cr-page>.cr-paper-panel-fx,
.cr-spread-page-frame>.cr-paper-panel-fx{
 transform:none!important;
 transform-origin:center!important;
 contain:strict!important;
}

/* R12: high-contrast luminance rails are composited normally onto the
   verified local gutter. Screen blend washed out smoke, mist and snow against
   bright printed artwork. No FX plane receives hit testing or 3D ownership. */
.cr-shell[data-view="reader"][data-panel-fx-state="verified"]
 :is(.cr-page,.cr-spread-page-frame)>.cr-paper-panel-fx{
 opacity:1!important;mix-blend-mode:normal!important;
 isolation:isolate!important;
 pointer-events:none!important;
}

/* Gutter-only mask follows the identical pose as its original art image. */
.cr-shell[data-comic-mask-mode="gutter-only"][data-view="reader"][data-spatial="true"][data-prime-comic-spatial-level="inside"]
 :is(.cr-page,.cr-spread-page-frame)>.cr-paper-panel-fx{
 transform:translate3d(var(--cr-inner-pan-x,0%),var(--cr-inner-pan-y,0%),0)
  rotateX(var(--cr-inner-rx,0deg)) rotateY(var(--cr-inner-ry,0deg))
  scale(var(--cr-inner-scale,1))!important;
 transform-origin:center center!important;
}
@media(prefers-reduced-motion:reduce){
 .cr-shell[data-comic-mask-mode="gutter-only"] .cr-paper-panel-fx{
  transform:none!important;will-change:auto!important;
 }
}

/* Spatial gutter FX must composite ABOVE the stage-portaled PMAP canvas.
   The page remains physically flat; only the verified FX canvas is portaled.
   Visibility still obeys reader/turn state gates already defined above. */
.cr-shell[data-view="reader"]>.cr-stage>.cr-paper-panel-fx[data-panel-fx-portal="true"]{
 position:absolute!important;inset:auto!important;
 left:var(--cr-fx-left,0px)!important;top:var(--cr-fx-top,0px)!important;
 width:var(--cr-fx-width,0px)!important;height:var(--cr-fx-height,0px)!important;
 z-index:6!important;pointer-events:none!important;display:block;
 max-width:none!important;max-height:none!important;
 margin:0!important;padding:0!important;border:0!important;
 opacity:1!important;mix-blend-mode:normal!important;
 transform:none!important;contain:paint!important;
}
