.oll-library,.oll-viewer{--oll-accent:#f97316;--oll-navy:#0f172a;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.oll-archive{padding:38px 18px;background:#f8fafc}.oll-library{max-width:1240px;margin:auto}.oll-hero{padding:46px;border-radius:30px;background:linear-gradient(135deg,#0f172a,#1e293b);color:#fff;box-shadow:0 25px 65px #0f172a25}.oll-hero span{color:var(--oll-accent);font-weight:900;letter-spacing:.08em}.oll-hero h2{color:#fff;font-size:clamp(34px,5vw,58px);margin:10px 0}.oll-hero p{color:#cbd5e1;font-size:18px}.oll-tools{margin:22px 0;padding:15px;background:#fff;border:1px solid #e2e8f0;border-radius:20px}.oll-search{width:100%;height:48px;border:1px solid #e2e8f0;border-radius:14px;padding:0 14px}.oll-filters{display:flex;gap:8px;overflow:auto;margin-top:12px}.oll-filters button{border:1px solid #e2e8f0;border-radius:999px;background:#fff;padding:9px 13px;font-weight:800;white-space:nowrap}.oll-filters button.active{background:var(--oll-accent);border-color:var(--oll-accent);color:#fff}.oll-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.oll-card{overflow:hidden;background:#fff;border:1px solid #e2e8f0;border-radius:24px;box-shadow:0 14px 35px #0f172a12}.oll-card[hidden]{display:none}.oll-cover{position:relative;display:block;aspect-ratio:2/3;background:#111827;overflow:hidden}.oll-cover img,.oll-cover-image{width:100%;height:100%;object-fit:cover;display:block}.oll-placeholder{display:grid;place-items:center;height:100%;color:#fff;font-size:52px;font-weight:900}.oll-cover b{position:absolute;left:12px;top:12px;background:#0f172ad9;color:#fff;border-radius:999px;padding:6px 9px;font-size:11px}.oll-body{padding:19px}.oll-body small{color:var(--oll-accent);font-weight:900}.oll-body h3{font-size:21px;margin:7px 0}.oll-body h3 a{color:#0f172a;text-decoration:none}.oll-body p{color:#64748b;min-height:60px}.oll-body>div{display:flex;justify-content:space-between;border-top:1px solid #e2e8f0;padding-top:14px}.oll-body>div a{color:var(--oll-accent);font-weight:900;text-decoration:none}.oll-empty{grid-column:1/-1;padding:40px;background:#fff;border-radius:20px;text-align:center}

.oll-viewer{max-width:1440px;width:calc(100% - 24px);margin:28px auto;border-radius:24px;overflow:hidden;background:#fff;box-shadow:0 25px 65px #0f172a25;outline:none}.oll-top{display:grid;grid-template-columns:minmax(170px,1fr) minmax(180px,2fr) minmax(120px,1fr);gap:15px;align-items:center;background:linear-gradient(135deg,#0b1220,#17233a);color:#fff;padding:13px 16px}.oll-top a{color:#cbd5e1;text-decoration:none}.oll-top strong{text-align:center}.oll-top button{justify-self:end;border:1px solid #ffffff33;border-radius:11px;background:#ffffff12;color:#fff;padding:9px 13px;font-weight:850}.oll-top button:hover{background:#ffffff20}.oll-toolbar{display:grid;grid-template-columns:auto auto auto;align-items:center;justify-content:center;gap:14px;padding:12px 16px;border-bottom:1px solid #e2e8f0;background:#fff}.oll-nav-group,.oll-zoom-group,.oll-view-group{display:flex;align-items:center;gap:8px}.oll-toolbar button{border:1px solid #d7dfeb;border-radius:11px;background:#fff;min-height:42px;padding:9px 12px;font-weight:850;color:#111827;transition:.18s ease}.oll-toolbar button:hover:not(:disabled){transform:translateY(-1px);border-color:#a9b7ca;box-shadow:0 6px 16px #0f172a12}.oll-toolbar button:disabled{opacity:.38;cursor:not-allowed}.oll-toolbar button.active{background:var(--oll-accent);color:#fff;border-color:var(--oll-accent);box-shadow:0 8px 20px color-mix(in srgb,var(--oll-accent) 28%,transparent)}.oll-nav-button{display:inline-flex;align-items:center;gap:8px;padding-inline:14px!important}.oll-nav-button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2}.oll-page-status{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:12px;background:#f3f6fa;color:#334155;font-weight:800}.oll-toolbar input{width:58px;height:34px;border:1px solid #dbe3ef;border-radius:8px;text-align:center;font-weight:800;background:#fff}.oll-zoom-value{min-width:54px;text-align:center;color:#334155}.oll-more{position:relative;display:none}.oll-more-menu{display:none;position:absolute;right:0;top:calc(100% + 8px);z-index:20;min-width:210px;padding:8px;background:#fff;border:1px solid #dbe3ef;border-radius:14px;box-shadow:0 18px 50px #0f172a30}.oll-more-menu.open{display:grid;gap:6px}.oll-more-menu button{width:100%;justify-content:flex-start}.oll-stage{display:grid;place-items:start center;min-height:650px;height:min(76vh,900px);padding:25px;background:radial-gradient(circle at top,#f4f7fb,#e6ebf2 70%);overflow:auto;max-width:100%;box-sizing:border-box;overscroll-behavior:contain;touch-action:pan-x pan-y}.canvases{display:none;gap:16px;max-width:none;align-items:flex-start;justify-content:center;margin:auto}.canvases.show{display:flex}.canvases.book .c2{display:block}.c1,.c2{background:#fff;box-shadow:0 14px 38px #0f172a33;max-width:none;height:auto}.c2{display:none}.loading{align-self:center;justify-self:center;padding:14px 18px;border-radius:14px;background:#ffffffd9;box-shadow:0 10px 28px #0f172a14;font-weight:800;color:#475569}.loading[hidden]{display:none}.progress{display:flex;align-items:center;gap:12px;padding:13px 16px;position:relative}.progress:before{content:"";flex:1;height:9px;background:#e2e8f0;border-radius:99px}.progress span{position:absolute;left:16px;height:9px;background:var(--oll-accent);border-radius:99px;width:0;max-width:calc(100% - 170px)}.oll-ppt{width:100%;height:78vh;min-height:680px;border:0;background:#111}.oll-content{max-width:960px;margin:25px auto;padding:0 18px}.oll-viewer:fullscreen{max-width:none;width:100%;height:100%;margin:0;border-radius:0}.oll-viewer:fullscreen .oll-stage{height:calc(100vh - 152px);min-height:0}.oll-viewer:fullscreen .progress{display:none}.oll-viewer:fullscreen .oll-ppt{height:calc(100vh - 58px)}

@media(max-width:1100px){.oll-nav-label{display:none}.oll-toolbar{gap:9px}.oll-toolbar button{padding-inline:10px}.oll-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.oll-grid{grid-template-columns:1fr}.oll-hero{padding:28px 22px}.oll-viewer{width:100%;margin:0;border-radius:0;box-shadow:none}.oll-top{grid-template-columns:1fr auto;padding:10px 12px}.oll-top strong{grid-column:1/-1;grid-row:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.oll-top a{grid-column:1;grid-row:2;font-size:14px}.oll-top button{grid-column:2;grid-row:2;padding:8px 10px}.oll-toolbar{position:sticky;top:0;z-index:12;grid-template-columns:1fr auto;padding:9px 8px;gap:8px;justify-content:stretch;box-shadow:0 5px 18px #0f172a12}.oll-nav-group{justify-content:space-between}.oll-nav-button{min-width:48px;padding:8px!important}.oll-nav-label{display:none}.oll-page-status{flex:1;justify-content:center;padding-inline:8px}.oll-zoom-group,.oll-view-group{display:none}.oll-more{display:block}.oll-more-toggle{width:44px;padding:8px!important;font-size:22px;line-height:1}.oll-toolbar .book{display:none}.oll-stage{height:calc(100dvh - 190px);min-height:430px;padding:10px 6px;overflow:auto;scrollbar-width:thin}.canvases{gap:0;margin:auto}.c1,.c2{max-width:none}.progress{padding:9px 12px;font-size:12px}.oll-cover{aspect-ratio:2/3}}
@media(max-width:760px) and (orientation:landscape){.oll-top{display:none}.oll-toolbar{grid-template-columns:1fr auto;padding:6px 8px}.oll-stage{height:calc(100dvh - 66px);min-height:250px;padding:6px}.progress{display:none}.oll-viewer:not(:fullscreen){position:relative}.oll-viewer:fullscreen .oll-stage{height:calc(100dvh - 54px)}.oll-more-menu{max-height:70vh;overflow:auto}}

/* v1.3.1 gesture + page transition refinements */
.oll-stage{touch-action:pan-y;overscroll-behavior-y:auto;overscroll-behavior-x:contain}
.oll-stage.is-zoomed{touch-action:none;cursor:grab;overscroll-behavior:contain}
.oll-stage.is-zoomed:active{cursor:grabbing}
.canvases{transform-origin:center center;will-change:transform}
.canvases.pinching{transition:none!important}
.canvases.flip-next{animation:ollFlipNext .44s cubic-bezier(.22,.8,.22,1)}
.canvases.flip-prev{animation:ollFlipPrev .44s cubic-bezier(.22,.8,.22,1)}
@keyframes ollFlipNext{0%{opacity:.35;transform:perspective(1400px) rotateY(-8deg) translateX(28px) scale(.985)}100%{opacity:1;transform:perspective(1400px) rotateY(0) translateX(0) scale(1)}}
@keyframes ollFlipPrev{0%{opacity:.35;transform:perspective(1400px) rotateY(8deg) translateX(-28px) scale(.985)}100%{opacity:1;transform:perspective(1400px) rotateY(0) translateX(0) scale(1)}}
.flip-toggle.active{background:#0f172a!important;color:#fff!important;border-color:#0f172a!important}
@media(max-width:760px){
  .oll-stage{overflow-x:hidden;overflow-y:visible;height:auto;min-height:430px;max-height:none}
  .oll-viewer:fullscreen .oll-stage,.oll-stage.is-zoomed{overflow:auto;height:calc(100dvh - 126px);max-height:none}
  .oll-stage.is-zoomed{padding-bottom:24px}
  .oll-more-menu .flip-toggle{display:flex}
}
@media(max-width:760px) and (orientation:landscape){
  .oll-stage{height:auto;min-height:calc(100dvh - 66px)}
  .oll-viewer:fullscreen .oll-stage,.oll-stage.is-zoomed{height:calc(100dvh - 54px);min-height:0}
}
@media(prefers-reduced-motion:reduce){.canvases.flip-next,.canvases.flip-prev{animation:none}}
