@font-face{font-family:MyCustomFont;src:url('/nc_assets/fonts/myfonttypwrtr.ttf') format('truetype');font-weight:normal;font-style:normal;font-display:swap}
:root{--ink:#111;--muted:#777;--paper:#fff;--soft:#f5f5f3;--line:#e4e4e1;--accent:#000;--reader:#ececea;--panel:#fff}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden}
body{font:14px/1.5 MyCustomFont,monospace;color:var(--ink);background:var(--reader);display:flex;flex-direction:column}
button,input,select{font:inherit}button,select{cursor:pointer}button,a,select,input{outline-offset:3px}
button{background:var(--paper);border:1px solid var(--line);border-radius:2px;color:var(--ink);padding:7px 11px;white-space:nowrap}
button:hover{background:#f4f4f4;border-color:#bbb}button:disabled{opacity:.35;cursor:default}
.primary{background:#000;color:#fff;border-color:#000;padding:9px 16px}.primary:hover{background:#333;color:#fff}
.readerHeader{height:68px;flex:0 0 68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:10px 22px;z-index:20}
.brand{display:flex;gap:12px;align-items:center;flex-shrink:0}.mark{font-size:38px;line-height:1}.brand strong{font-size:21px;font-weight:normal}.brand small{display:block;color:#888;font-size:8px;letter-spacing:2px;margin-top:1px}
.documentHeading{flex:1;min-width:0;text-align:center;display:flex;flex-direction:column;line-height:1.2}.headingLabel{font-size:8px;letter-spacing:2px;color:#aaa;text-transform:uppercase}.documentHeading #fileTitle{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.headActions{display:flex;align-items:center;gap:7px}.headActions a{color:#555;text-decoration:none;font-size:12px}
.readerToolbar{height:56px;flex:0 0 56px;display:flex;align-items:center;gap:12px;padding:8px 14px;background:#fff;border-bottom:1px solid var(--line);z-index:15}
.group{display:flex;align-items:center;gap:5px}.pageTools{flex-shrink:0}.viewTools{margin-left:auto}.search{min-width:250px}
.pageLabel{display:flex;gap:7px;align-items:center;color:#777}.pageLabel input{width:52px;text-align:center}
input,select{border:1px solid var(--line);border-radius:2px;background:#fff;padding:7px;color:var(--ink)}#query{width:145px}#matches{font-size:10px;min-width:34px;color:#777}
.readerMain{position:relative;display:flex;flex:1;min-height:0;background:var(--reader)}
#sidebar{width:190px;flex:0 0 190px;overflow:auto;background:#fff;border-right:1px solid var(--line);z-index:10;transition:width .18s ease,flex-basis .18s ease}
#sidebar[hidden]{display:block!important;width:0;flex-basis:0;border:0;overflow:hidden}
.sideTitle{height:42px;padding:9px 12px;display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:2px;position:sticky;top:0;background:#fff;border-bottom:1px solid var(--line);z-index:2}.sideTitle button{padding:1px 7px}
#thumbs{padding:12px 17px}.thumb{display:block;width:100%;padding:6px;margin-bottom:12px;border:1px solid transparent;background:#f3f3f1;border-radius:2px}.thumb canvas{width:100%;height:auto;display:block;background:#fff}.thumb span{display:block;font-size:10px;padding-top:5px;text-align:center}.thumb.current{border:2px solid #000;background:#eee}
#reading{position:relative;flex:1;min-width:0;background:var(--reader)}
#viewerContainer{position:absolute;inset:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;background:#ececea}
.pdfViewer{--page-margin:28px auto 32px}.pdfViewer .page{border:0;box-shadow:0 2px 18px #00000022}.pdfViewer .textLayer{opacity:1}
#welcome{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;background:#fff;z-index:2}.welcomeInner{max-width:620px;padding:30px}.bookSymbol{font-size:52px;border:1px solid #ddd;border-radius:2px;width:82px;height:82px;display:grid;place-items:center;margin:0 auto 18px}.eyebrow{font-size:9px!important;letter-spacing:.13em;color:#777}.welcomeInner h1{font-size:clamp(30px,5vw,52px);font-weight:normal;letter-spacing:-.04em;margin:10px 0 12px}.welcomeInner p{color:#777;font-size:15px;line-height:1.8}.welcomeActions{display:flex;justify-content:center;gap:8px;margin:22px 0 4px}.privacy{font-size:11px!important;margin-top:22px!important}
footer{height:42px;flex:0 0 42px;background:#fff;border-top:1px solid var(--line);display:flex;gap:12px;align-items:center;padding:7px 14px;font-size:10px;color:#777;z-index:15}footer #status{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}footer button{padding:4px 8px;font-size:10px}#status.error{color:#a33}

/* Scribd-like collection surface */
.catalogueDialog{width:min(1180px,94vw);height:min(88vh,900px);max-width:none;max-height:none;padding:0;border:1px solid #ddd;border-radius:2px;background:#fff;color:#111;box-shadow:0 18px 60px #0003}
.catalogueDialog::backdrop{background:#0008}.catalogueShell{height:100%;display:flex;flex-direction:column}.catalogueTop{display:flex;justify-content:space-between;gap:20px;padding:26px 30px 18px;border-bottom:1px solid #e8e8e5}.catalogueTop h2{font-size:34px;font-weight:normal;margin:3px 0}.catalogueIntro{color:#777;margin:0}.dialogClose{font-size:24px;border:0;background:transparent;height:36px;width:36px}.catalogueSearchWrap{padding:14px 30px}.catalogueSearchWrap input{width:min(420px,100%)}
.catalogueGrid{flex:1;overflow:auto;padding:4px 30px 35px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px 22px;align-content:start}.catalogueRow{display:flex;flex-direction:column;min-width:0}.cataloguePreview{background:#f2f2f0;border:1px solid #e2e2df;aspect-ratio:3/4;display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:0 2px 8px #0000000b}.cataloguePreview canvas{display:block;width:100%;height:auto}.cataloguePreview canvas.failed{display:none}.catalogueThumbError{font-size:10px;color:#999}.catalogueInfo{padding-top:9px}.catalogueRow .docOpen{width:100%;border:0;padding:0;background:transparent;text-align:left;font-size:15px;white-space:normal;line-height:1.35}.catalogueRow .docOpen:hover{background:transparent;text-decoration:underline}.catalogueRow .docOpen small{display:block;color:#888;font-size:10px;margin-top:4px}.catalogueActions{margin-top:8px;display:flex;gap:6px}.catalogueActions button{font-size:10px;padding:5px 9px}

#catalogueItems:empty{min-height:100px}#catalogueItems{color:#777}
dialog{border:1px solid var(--line);border-radius:3px;padding:25px;max-width:90vw}dialog input{display:block;width:100%;margin:15px 0}dialog form>div{display:flex;justify-content:flex-end;gap:8px}dialog::backdrop{background:#0008}[hidden]{display:none!important}
body.dropping #reading{outline:4px dashed #777;outline-offset:-6px}body:fullscreen{width:100vw;height:100vh}

body.dark{--ink:#fff;--muted:#888;--paper:#000;--soft:#111;--line:#2b2b2b;--reader:#0d0d0d;background:#000;color:#fff}
.dark .readerHeader,.dark .readerToolbar,.dark footer,.dark #sidebar,.dark .sideTitle,.dark #welcome{background:#000;color:#fff}.dark #viewerContainer{background:#0d0d0d}.dark button,.dark input,.dark select,.dark dialog{background:#000;color:#fff;border-color:#333}.dark button:hover{background:#191919}.dark .primary{background:#fff;color:#000}.dark .thumb{background:#111}.dark .thumb.current{background:#222;border-color:#fff}.dark .catalogueDialog{background:#000;color:#fff;border-color:#333}.dark .catalogueTop{border-color:#333}.dark .cataloguePreview{background:#111;border-color:#333}.dark .catalogueRow .docOpen{color:#fff}.dark .catalogueIntro,.dark .eyebrow,.dark .catalogueRow .docOpen small{color:#888}

@media(max-width:1050px){.catalogueGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px 18px}.headActions a{display:none}.search{min-width:0}.search #query{width:120px}}
@media(max-width:800px){
  .readerHeader{height:62px;flex-basis:62px;padding:8px 10px;gap:10px}.brand strong{font-size:17px}.brand small{font-size:7px}.mark{font-size:31px}.documentHeading{display:none}.headActions{margin-left:auto}.headActions button{padding:6px 8px;font-size:11px}.headActions #open,.headActions #theme{display:none}
  .readerToolbar{height:auto;min-height:52px;flex-basis:auto;flex-wrap:wrap;padding:6px;gap:5px;justify-content:center}.viewTools{margin-left:0}.search{order:3;width:100%;justify-content:center}.search #query{flex:1;max-width:320px;width:auto}
  #sidebar{position:absolute;left:0;top:0;bottom:0;z-index:30;box-shadow:8px 0 24px #0002}.catalogueGrid{grid-template-columns:repeat(2,minmax(0,1fr));padding-left:18px;padding-right:18px}.catalogueTop{padding:20px 18px 14px}.catalogueSearchWrap{padding:10px 18px}.catalogueTop h2{font-size:27px}
  .welcomeInner{padding:20px}.welcomeInner h1{font-size:34px}.welcomeActions{flex-direction:column}.welcomeActions button{width:100%}.pdfViewer{--page-margin:14px auto 20px}footer{height:38px;flex-basis:38px;padding:6px 8px}#progressText{display:none}
}
@media(max-width:480px){.catalogueGrid{grid-template-columns:1fr}.catalogueDialog{width:96vw;height:92vh}.pageTools .pageLabel{display:none}.viewTools #rotate{display:none}.viewTools #mode{max-width:75px}.viewTools #scale{max-width:125px}.catalogueTop h2{font-size:24px}}


/* v11 real book / polished physical leaf turn */
#bookView{position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,#fffefa 0%,#ecece8 52%,#dcdcd8 100%);display:flex;align-items:center;justify-content:center;overflow:hidden;z-index:8}
#bookStage{position:relative;width:min(1200px,calc(100% - 44px));height:min(820px,calc(100% - 44px));perspective:2200px;transform-style:preserve-3d;filter:drop-shadow(0 18px 30px #00000020)}
.bookPage{position:absolute;top:0;height:100%;background:#fff;overflow:hidden;display:flex;align-items:center;justify-content:center;border:1px solid #d2d2cf;box-shadow:0 5px 20px #00000017;backface-visibility:hidden}
.bookPage canvas{display:block;max-width:100%;max-height:100%;object-fit:contain;background:#fff}
#bookLeft{left:0;width:50%;border-radius:5px 0 0 5px;border-right:1px solid #c4c4c0}
#bookRight{left:50%;width:50%;border-radius:0 5px 5px 0;border-left:1px solid #c4c4c0}
#bookCover{left:25%;width:50%;border-radius:5px;box-shadow:0 9px 30px #0000002c;z-index:10}
#bookStage.spread:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:5px;transform:translateX(-50%);background:linear-gradient(90deg,#0000,#00000018 30%,#fff 50%,#00000016 70%,#0000);pointer-events:none;z-index:8}
#bookStage.singleLast #bookLeft{left:25%;width:50%;border-radius:5px;box-shadow:0 5px 20px #00000017}
#bookStage.singleLast:before{display:none}
#bookTurn{position:absolute;inset:0;z-index:20;display:none;pointer-events:none;transform-style:preserve-3d}
#bookTurn.active{display:block}
.turnDest{position:absolute;top:0;height:100%;width:50%;background:#fff;overflow:hidden;display:flex;align-items:center;justify-content:center;border:1px solid #d2d2cf;box-shadow:0 5px 20px #00000017;z-index:0}
.turnDestLeft{left:0;border-radius:5px 0 0 5px;border-right:1px solid #c4c4c0}
.turnDestRight{left:50%;border-radius:0 5px 5px 0;border-left:1px solid #c4c4c0}
.turnDest canvas{display:block;max-width:100%;max-height:100%;object-fit:contain;background:#fff}
.turnSheet{position:absolute;top:0;left:50%;width:50%;height:100%;transform-style:preserve-3d;backface-visibility:visible;will-change:transform;z-index:3}
.turnSheet:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#00000000 0%,#00000000 70%,#00000018 88%,#00000032 100%);opacity:.0;z-index:5;transform:translateZ(1px);}
.turnFace{position:absolute;inset:0;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid #d2d2cf;backface-visibility:hidden;transform-style:preserve-3d;box-shadow:0 8px 26px #00000020}
.turnFace:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#fff0 0%,#fff0 62%,#00000008 82%,#00000022 100%);opacity:.45}
.turnFace canvas{display:block;max-width:100%;max-height:100%;object-fit:contain;background:#fff}
.turnFront{transform:rotateY(0deg)}
.turnBack{transform:rotateY(180deg)}
.bookTurn.pageForward .turnSheet{transform-origin:left center;animation:bookForward 760ms cubic-bezier(.18,.78,.22,1) both}
.bookTurn.pageBackward .turnSheet{left:0;transform-origin:right center;animation:bookBackward 760ms cubic-bezier(.18,.78,.22,1) both}
.bookTurn.pageForward .turnSheet:after{animation:turnShadeForward 760ms ease-out both}
.bookTurn.pageBackward .turnSheet:after{transform:scaleX(-1);animation:turnShadeBackward 760ms ease-out both}
.bookTurn.coverForward .turnSheet{left:25%;width:50%;transform-origin:left center;animation:coverForward 800ms cubic-bezier(.18,.78,.22,1) both}
.bookTurn.coverForward .turnSheet:after{animation:coverShade 800ms ease-out both}
.bookTurn.pageForward .turnDest,.bookTurn.pageBackward .turnDest{opacity:1}
.bookTurn.coverForward .turnDest{opacity:1}
.bookTurn.coverForward .turnDestLeft{z-index:0}
.bookTurn.coverForward .turnDestRight{z-index:0}
.bookTurn.coverForward .turnSheet{z-index:4}
@keyframes bookForward{
  0%{transform:rotateY(0deg) translateZ(0) rotateZ(0deg);filter:brightness(1)}
  24%{transform:rotateY(-32deg) translateZ(18px) rotateZ(-.25deg);filter:brightness(.995)}
  48%{transform:rotateY(-88deg) translateZ(34px) rotateZ(-.45deg);filter:brightness(.97)}
  72%{transform:rotateY(-142deg) translateZ(16px) rotateZ(-.25deg);filter:brightness(.99)}
  100%{transform:rotateY(-180deg) translateZ(0) rotateZ(0deg);filter:brightness(1)}
}
@keyframes bookBackward{
  0%{transform:rotateY(0deg) translateZ(0) rotateZ(0deg);filter:brightness(1)}
  24%{transform:rotateY(32deg) translateZ(18px) rotateZ(.25deg);filter:brightness(.995)}
  48%{transform:rotateY(88deg) translateZ(34px) rotateZ(.45deg);filter:brightness(.97)}
  72%{transform:rotateY(142deg) translateZ(16px) rotateZ(.25deg);filter:brightness(.99)}
  100%{transform:rotateY(180deg) translateZ(0) rotateZ(0deg);filter:brightness(1)}
}
@keyframes coverForward{
  0%{transform:rotateY(0deg) translateZ(0) rotateZ(0deg);filter:brightness(1)}
  25%{transform:rotateY(-28deg) translateZ(16px) rotateZ(-.2deg);filter:brightness(.99)}
  52%{transform:rotateY(-90deg) translateZ(32px) rotateZ(-.4deg);filter:brightness(.96)}
  78%{transform:rotateY(-150deg) translateZ(14px) rotateZ(-.2deg);filter:brightness(.99)}
  100%{transform:rotateY(-180deg) translateZ(0) rotateZ(0deg);filter:brightness(1)}
}
@keyframes turnShadeForward{0%,15%{opacity:0}35%{opacity:.45}55%{opacity:.8}100%{opacity:.05}}
@keyframes turnShadeBackward{0%,15%{opacity:0}35%{opacity:.45}55%{opacity:.8}100%{opacity:.05}}
@keyframes coverShade{0%,15%{opacity:0}40%{opacity:.55}60%{opacity:.85}100%{opacity:.05}}
.dark #bookView{background:radial-gradient(circle at 50% 45%,#282828 0%,#111 60%,#080808 100%)}
.dark .bookPage,.dark .turnDest,.dark .turnFace{background:#111;border-color:#333}.dark .bookPage canvas,.dark .turnDest canvas,.dark .turnFace canvas{background:#fff}
@media(max-width:800px){#bookStage{width:calc(100% - 14px);height:calc(100% - 24px)}}
@media(prefers-reduced-motion:reduce){#bookTurn{display:none!important}}

#bookTurn.singleDest .turnDestRight{display:none}
#bookTurn.singleDest .turnDestLeft{left:0;width:50%;border-radius:5px 0 0 5px}
#bookTurn.closingCover .turnDestRight{display:none}
#bookTurn.closingCover .turnDestLeft{left:25%;width:50%;border-radius:5px}
.bookTurn.closingCover .turnSheet{left:0;width:50%;transform-origin:right center}
.bookTurn.closingCover .turnDestLeft{z-index:0}

/* v13: keep destination content hidden until the physical leaf has nearly
   completed its turn. The old spread remains visible underneath, so no new
   page text can flash in at the start of the animation. */
#bookTurn .turnDest{opacity:0;transition:none}
#bookTurn.turning.pageForward .turnDestRight{animation:revealDestination 760ms linear both}
#bookTurn.revealBack.pageForward .turnBack{animation:revealTurnBackForward 760ms linear both}
#bookTurn.revealBack.pageBackward .turnBack{animation:revealTurnBackBackward 760ms linear both}
#bookTurn.revealBack.coverForward .turnBack{animation:revealTurnBackCover 800ms linear both}
#bookTurn.turning.pageBackward .turnDestLeft{animation:revealDestination 760ms linear both}
#bookTurn.turning.coverForward .turnDestLeft,
#bookTurn.turning.coverForward .turnDestRight{animation:revealDestination 800ms linear both}
#bookTurn.turning.closingCover .turnDestLeft{animation:revealDestination 760ms linear both}

@keyframes revealTurnBackForward{0%,56%{opacity:0}57%,100%{opacity:1}}
@keyframes revealTurnBackBackward{0%,56%{opacity:0}57%,100%{opacity:1}}
@keyframes revealTurnBackCover{0%,56%{opacity:0}57%,100%{opacity:1}}
@keyframes revealDestination{
  0%,44%{opacity:0}
  55%{opacity:.12}
  68%{opacity:.62}
  80%,100%{opacity:1}
}

/* v16: preserve the smoother v14 physical motion; reveal the reverse face as a discrete handoff instead of a fade. */
#bookTurn.revealBack .turnBack{transition:none!important}
