:root{--gold:#c9a75f;--gold-light:#f0dca8;--line:rgba(240,220,168,.2);--panel:rgba(11,11,11,.94)}
*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#000;color:#f7f2e8;font-family:Arial,"Segoe UI",sans-serif;overscroll-behavior:none}
button,select{font:inherit}
.app{height:100%;height:100dvh;display:grid;grid-template-rows:minmax(0,1fr) 60px;gap:7px;padding:7px;background:#000}
.viewer{position:relative;min-width:0;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:16px;background:#000;touch-action:none;user-select:none;-webkit-user-select:none}
.canvas{position:relative;flex:none;transform-origin:center center;will-change:transform}
.canvas.smooth{transition:transform .18s ease-out}
.spread{width:100%;height:100%;display:flex;align-items:stretch;justify-content:center;gap:8px;transform-origin:center center;will-change:transform,opacity,filter}
.spread.leave-next{animation:leaveNext .16s ease-in forwards}.spread.enter-next{animation:enterNext .28s cubic-bezier(.2,.75,.25,1)}
.spread.leave-prev{animation:leavePrev .16s ease-in forwards}.spread.enter-prev{animation:enterPrev .28s cubic-bezier(.2,.75,.25,1)}
@keyframes leaveNext{to{opacity:0;transform:translateX(-24px);filter:brightness(.45)}}
@keyframes enterNext{from{opacity:0;transform:translateX(24px);filter:brightness(.45)}to{opacity:1;transform:none;filter:none}}
@keyframes leavePrev{to{opacity:0;transform:translateX(24px);filter:brightness(.45)}}
@keyframes enterPrev{from{opacity:0;transform:translateX(-24px);filter:brightness(.45)}to{opacity:1;transform:none;filter:none}}
.page{position:relative;height:100%;overflow:hidden;flex:none;border:1px solid rgba(240,220,168,.12);border-radius:3px;background:#030303;box-shadow:0 18px 48px rgba(0,0,0,.72)}
.page img{display:block;width:100%;height:100%;object-fit:contain;background:#000;-webkit-user-drag:none}
.page::after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 18px rgba(0,0,0,.24)}
.page+.page::before{content:"";position:absolute;z-index:2;left:0;top:0;bottom:0;width:18px;background:linear-gradient(90deg,rgba(0,0,0,.35),transparent);pointer-events:none}
.edge{position:absolute;z-index:8;top:0;bottom:0;width:11%;max-width:120px;border:0;padding:0;color:var(--gold-light);font-size:42px;cursor:pointer;opacity:.16;transition:opacity .18s;background:transparent}
.edge:hover,.edge:focus-visible{opacity:.9}.edge.left{left:0;background:linear-gradient(90deg,rgba(0,0,0,.58),transparent)}.edge.right{right:0;background:linear-gradient(270deg,rgba(0,0,0,.58),transparent)}
.edge:disabled{opacity:0;cursor:default;pointer-events:none}
.zoom-tools{position:absolute;z-index:12;right:10px;top:10px;display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:12px;background:rgba(8,8,8,.84);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.zoom-btn{height:36px;min-width:36px;border:1px solid var(--line);border-radius:8px;padding:0 7px;background:rgba(255,255,255,.04);color:var(--gold-light);cursor:pointer;font-size:18px}
.zoom-btn:hover,.zoom-btn:focus-visible{border-color:var(--gold);background:rgba(201,167,95,.14)}
#zoomValue{min-width:52px;font-size:10px}
.loader{position:absolute;z-index:30;inset:0;display:grid;place-items:center;background:#000;text-align:center;transition:opacity .2s}
.loader.hidden{opacity:0;pointer-events:none}
.loader.error{opacity:1;pointer-events:auto}
.spinner{width:42px;height:42px;margin:auto;border:3px solid rgba(255,255,255,.1);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loader p{margin:13px 0 0;color:#9b9487;font-size:11px;line-height:1.7;letter-spacing:.1em}.loader strong{color:var(--gold-light)}
.toolbar{min-width:0;display:flex;align-items:center;justify-content:center;gap:6px;padding:7px 9px;border:1px solid var(--line);border-radius:14px;background:var(--panel);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.tool-btn,.catalog-select{height:44px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.035);color:var(--gold-light)}
.tool-btn{width:44px;padding:0;display:grid;place-items:center;font-size:18px;cursor:pointer}
.tool-btn:hover,.tool-btn:focus-visible,.tool-btn.active{border-color:var(--gold);background:rgba(201,167,95,.14)}
.tool-btn:disabled{opacity:.3;cursor:default}
.catalog-select{width:132px;padding:0 10px;outline:0;font-size:11px;cursor:pointer}
.page-info{min-width:90px;height:42px;display:grid;place-items:center;border-left:1px solid var(--line);border-right:1px solid var(--line);color:var(--gold-light);font-size:12px;letter-spacing:.05em}
.help{position:absolute;z-index:7;left:50%;bottom:9px;transform:translateX(-50%);padding:6px 10px;border-radius:8px;background:rgba(0,0,0,.68);color:#978e7e;font-size:10px;white-space:nowrap;opacity:0;animation:helpShow 4.5s ease forwards;pointer-events:none}
@keyframes helpShow{0%,8%{opacity:0}18%,72%{opacity:1}100%{opacity:0}}
@media(max-width:720px){
  .app{grid-template-rows:minmax(0,1fr) 52px;gap:0;padding:0}.viewer{border:0;border-radius:0}.spread{gap:0}.page{border:0;border-radius:0;box-shadow:none}
  .toolbar{gap:4px;padding:5px;border-radius:12px}.tool-btn,.catalog-select{height:40px}.tool-btn{width:40px}.catalog-select{width:104px;padding:0 7px;font-size:10px}.page-info{min-width:70px;height:38px;font-size:11px}
  .edge{width:17%;font-size:36px}.zoom-tools{right:7px;top:7px}.zoom-btn{height:34px;min-width:34px}#zoomValue{min-width:47px}
}
@media(max-width:390px){.toolbar{gap:3px}.tool-btn{width:36px}.catalog-select{width:88px}.page-info{min-width:60px}.help{display:none}}
@media(max-width:330px){.catalog-select{width:74px}.tool-btn{width:33px}.page-info{min-width:52px;font-size:10px}}
@media(prefers-reduced-motion:reduce){.spread.leave-next,.spread.enter-next,.spread.leave-prev,.spread.enter-prev{animation:none}.canvas.smooth{transition:none}}
