/* V3.7: full-spread view everywhere; panorama ONLY mobile/tablet landscape fullscreen. */
:root{--gbp1-aspect:2.5011}
#readerApp,.reader-experience,.book,.slides{width:100%;height:100%;height:100dvh}
.reader-experience{background:#071624;overflow:hidden}
.book{background:#071624;touch-action:none}
.scene .bleed{filter:blur(19px) brightness(.43) saturate(.76)}
.scene .visual{left:0;width:100%;height:100%;overflow:hidden;transform:none!important;animation:none!important;will-change:transform}
.scene.active .visual{animation:none!important}
.scene .poster,.scene video,.scene .last-frame{position:absolute;width:100%;height:100%;inset:0;object-fit:contain;object-position:center;pointer-events:none}
.scene .last-frame{z-index:5;object-fit:contain}
.gb-pan-active .scene .visual{left:50%;width:max(100%, calc(100dvh * var(--gbp1-aspect)));height:100%;transform:translate3d(calc(-50% + var(--gb-pan,0px)),0,0)!important}
.gb-pan-active .scene .poster,.gb-pan-active .scene video,.gb-pan-active .scene .last-frame{object-fit:cover;width:100%;height:100%}
.gb-pan-active .scene .bleed{display:none}
.reader-top-controls{position:absolute;z-index:15;left:max(12px,env(safe-area-inset-left));top:max(10px,env(safe-area-inset-top));display:flex;gap:7px;opacity:0;pointer-events:none;transition:opacity .55s ease}
.reader-top-controls button{border:1px solid #ffffff77;background:#0a223de0;backdrop-filter:blur(12px);color:white;border-radius:999px;min-height:43px;min-width:48px;font-size:27px;cursor:pointer;box-shadow:0 4px 17px #0007}
.gbp1-show-controls .reader-top-controls,.reader-top-controls:focus-within{opacity:.94;pointer-events:auto}
.reader-exit,.reader-footer,.edge{opacity:0!important;pointer-events:none!important;transition:opacity .58s ease!important}
.gbp1-show-controls .reader-exit,.reader-exit:focus-visible,.gbp1-show-controls .reader-footer,.reader-footer:focus-within,.gbp1-show-controls .edge:not(:disabled),.edge:focus-visible{opacity:.88!important;pointer-events:auto!important}
.gbp1-show-controls .edge:not(:disabled){opacity:.26!important}
.gbp1-show-controls .edge:hover{opacity:.9!important}
.reader-exit{z-index:18;font-size:14px;min-height:43px;display:flex;align-items:center}
.reader-footer{bottom:max(10px,env(safe-area-inset-bottom));z-index:18}
.reader-ending-actions{position:absolute;z-index:11;bottom:clamp(64px,15vh,128px);left:50%;transform:translateX(-50%);width:min(470px,92vw);color:#fff;text-align:center;padding:18px 20px;background:#091b35c4;border:1px solid #e5d0a37a;border-radius:20px;backdrop-filter:blur(14px);box-shadow:0 12px 36px #0009;line-height:1.5}
.reader-ending-actions>span{font-family:Georgia,serif;font-size:clamp(19px,2.3vw,26px)}
.reader-ending-actions>div{margin-top:12px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.reader-ending-actions button,.load-error button{border:1px solid #e6cb99;color:#fff;background:#173d61;border-radius:99px;padding:10px 16px;cursor:pointer;font-size:14px}
.load-error{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:500px;z-index:30}
.reader-experience .sound-hint{max-width:min(450px,85vw);font-size:13px;bottom:74px}
.rotate-gate{display:none!important}
@media (max-width:680px){.reader-footer{width:min(94vw,460px)}.reader-top-controls button{min-height:38px;min-width:42px}.reader-exit{top:8px}.reader-ending-actions{bottom:14%}}
@media (prefers-reduced-motion:reduce){.reader-top-controls,.reader-exit,.reader-footer,.edge{transition:none!important}}

/* Accessibility and failure-state correctness: hidden wins over component display rules. */
#readerApp [hidden]{display:none!important}

/* Keep the normal 2.5:1 spread entirely visible on desktop and all non-panorama modes. */
.reader-experience:not(.gb-pan-active) .scene .visual{left:0;width:100%;height:100%;transform:none!important}
.reader-experience.gb-pan-active .scene .visual{overflow:visible}

/* V3.7.1 fullscreen enters with all reader controls hidden. A deliberate top-edge
   tap can temporarily reveal them; leaving fullscreen restores normal chrome. */
.reader-experience.gbp1-immersive:not(.gbp1-show-controls) .reader-top-controls,
.reader-experience.gbp1-immersive:not(.gbp1-show-controls) .reader-footer,
.reader-experience.gbp1-immersive:not(.gbp1-show-controls) .reader-exit,
.reader-experience.gbp1-immersive:not(.gbp1-show-controls) .edge{opacity:0!important;pointer-events:none!important}
