:root{--navy:#102c46;--navy-2:#183d5f;--ink:#17283a;--muted:#617080;--line:#d9e3eb;--paper:#f4f7f9;--panel:#fff;--accent:#8a7138;--focus:#2f77a8;--shadow:0 14px 38px rgba(13,37,57,.14)}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font:14px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.skip-link{position:fixed;left:12px;top:-100px;z-index:30;background:#fff;color:var(--navy);padding:10px 14px}.skip-link:focus{top:12px}.reader-shell{min-height:100%;display:grid;grid-template-rows:auto auto 1fr}.reader-header{height:66px;background:var(--navy);color:#fff;display:grid;grid-template-columns:1fr minmax(240px,1.6fr) 1fr;align-items:center;padding:0 18px;gap:16px}.reader-brand{display:flex;align-items:baseline;gap:10px;white-space:nowrap}.reader-brand a{font:700 1.1rem Georgia,serif;color:#fff;text-decoration:none}.reader-brand span{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:#b9cad8}.reader-title{text-align:center;display:grid;line-height:1.25}.reader-title strong{font:600 .92rem Georgia,serif}.reader-title span{font-size:.73rem;color:#c3d1dd;margin-top:2px}.header-actions{justify-self:end;display:flex;gap:7px}.icon-button,.toolbar button,.toolbar a{border:1px solid transparent;background:transparent;color:inherit;font:600 .8rem/1 inherit;min-height:32px;padding:7px 9px;border-radius:3px;text-decoration:none;cursor:pointer}.icon-button{font-size:1.35rem;line-height:1;min-width:34px;text-align:center;color:#fff}.icon-button:hover,.toolbar button:hover,.toolbar a:hover{background:rgba(16,44,70,.07);border-color:var(--line)}.toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:8px 14px;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 2px 8px rgba(16,44,70,.04);position:relative;z-index:2}.tool-group{display:flex;align-items:center;gap:4px;padding-right:10px;border-right:1px solid var(--line)}.tool-group:last-child{margin-left:auto;border:0;padding-right:0}.toolbar button,.toolbar a{color:var(--navy)}.toolbar button:focus-visible,.toolbar a:focus-visible,.icon-button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.page-field{white-space:nowrap;color:var(--muted);font-size:.8rem}.page-field input{width:52px;padding:6px 4px;text-align:center;border:1px solid var(--line);border-radius:3px;color:var(--navy);font:inherit}.zoom-tools output{min-width:42px;text-align:center;color:var(--muted);font-size:.79rem}.reader-layout{min-height:0;display:grid;grid-template-columns:282px 1fr}.reader-sidebar{background:#fbfcfd;border-right:1px solid var(--line);min-height:0;display:grid;grid-template-rows:auto 1fr}.sidebar-tabs{display:grid;grid-template-columns:1fr 1fr 1fr;border-bottom:1px solid var(--line)}.sidebar-tab{padding:12px 7px;background:transparent;border:0;border-bottom:2px solid transparent;color:var(--muted);font:700 .71rem/1.2 inherit;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}.sidebar-tab.active{color:var(--navy);border-bottom-color:var(--accent)}.side-panel{overflow:auto;padding:16px}.panel-heading{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:13px}.panel-heading h2{font:600 1rem Georgia,serif;color:var(--navy);margin:0}.panel-heading span{font-size:.72rem;color:var(--muted)}.text-button{border:0;background:transparent;color:var(--navy);text-decoration:underline;cursor:pointer;font:inherit;font-size:.75rem}.outline,.outline ul{list-style:none;margin:0;padding:0}.outline ul{padding-left:11px;border-left:1px solid var(--line);margin-left:5px}.outline button{display:block;width:100%;text-align:left;border:0;background:transparent;color:#344a5e;padding:7px 6px;border-radius:3px;cursor:pointer;font:inherit;font-size:.82rem;line-height:1.35}.outline button:hover,.outline button:focus{background:#e8f0f5;color:var(--navy);outline:0}.outline .fallback-title{padding:8px 5px;font-size:.83rem;color:var(--muted)}.saved-list{display:grid;gap:8px}.saved-item{display:grid;grid-template-columns:1fr auto;background:#fff;border:1px solid var(--line);border-radius:4px;padding:9px;gap:7px}.saved-item button:first-child{border:0;background:transparent;padding:0;text-align:left;color:var(--navy);font:600 .82rem/1.3 inherit;cursor:pointer}.saved-item small{display:block;color:var(--muted);font-weight:400;margin-top:3px}.delete-item{align-self:start;border:0;background:transparent;color:var(--muted);font-size:1rem;cursor:pointer}.empty-state{color:var(--muted);font-size:.82rem;margin:5px 0}.document-area{min-width:0;min-height:0;display:grid;grid-template-rows:auto 1fr}.search-panel{padding:12px max(18px,calc((100vw - 1100px)/2));background:#eaf1f5;border-bottom:1px solid var(--line)}.search-panel label{display:block;color:var(--navy);font-size:.76rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px}.search-row{display:flex;gap:6px;max-width:720px}.search-row input{min-width:0;flex:1;padding:9px 10px;border:1px solid #b9c8d4;border-radius:3px;background:#fff;color:var(--ink);font:inherit}.search-row button{border:1px solid #b9c8d4;border-radius:3px;background:#fff;color:var(--navy);min-width:34px;cursor:pointer}.search-panel p{margin:7px 0 0;color:var(--muted);font-size:.78rem}.reader-viewport{min-height:0;overflow:auto;padding:34px;background:linear-gradient(135deg,#dfe8ee,#eef3f6 50%,#e1e9ef);display:flex;justify-content:center;align-items:flex-start}.page-stage{position:relative;box-shadow:var(--shadow);background:#fff;line-height:0;margin-bottom:20px}.page-stage canvas{display:block;max-width:none}.loading-card{margin-top:8vh;text-align:center;color:var(--navy);font:1rem Georgia,serif}.loading-card span{display:inline-block;width:26px;height:26px;border:3px solid #b7c8d5;border-top-color:var(--navy);border-radius:50%;animation:spin .8s linear infinite}.loading-card p{margin-top:10px}.reader-dialog{width:min(560px,calc(100vw - 34px));padding:0;border:0;border-radius:6px;box-shadow:0 24px 60px rgba(8,31,49,.3);color:var(--ink)}.reader-dialog::backdrop{background:rgba(11,33,50,.48)}.reader-dialog form{padding:20px}.dialog-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:15px}.dialog-heading h2{margin:0;font:1.3rem Georgia,serif;color:var(--navy)}.dialog-heading button{border:0;background:transparent;color:var(--navy);font-size:1.5rem;cursor:pointer}.reader-dialog label{display:block;color:var(--navy);font-weight:700;font-size:.8rem;margin-bottom:6px}.reader-dialog textarea{width:100%;resize:vertical;border:1px solid #b6c4cf;border-radius:3px;padding:9px;color:var(--ink);font:inherit}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:14px}.primary-button,.quiet-button{border-radius:3px;padding:9px 13px;font:700 .8rem inherit;cursor:pointer}.primary-button{border:1px solid var(--navy);background:var(--navy);color:#fff}.quiet-button{border:1px solid var(--line);background:#fff;color:var(--navy)}.dialog-note{color:var(--muted);font-size:.8rem}.toast{position:fixed;right:18px;bottom:18px;max-width:320px;background:#102c46;color:#fff;padding:10px 13px;border-radius:4px;box-shadow:var(--shadow);opacity:0;transform:translateY(12px);pointer-events:none;transition:.18s ease;font-size:.83rem}.toast.show{opacity:1;transform:translateY(0)}body.theme-night{--paper:#17212b;--panel:#22313e;--ink:#e7eef3;--muted:#aabac5;--line:#3a4e5e;--navy:#0d1f2f;--navy-2:#254b6e;--accent:#d8b967;--focus:#78b9e7}.theme-night .toolbar,.theme-night .reader-sidebar,.theme-night .saved-item,.theme-night .search-row input,.theme-night .search-row button,.theme-night .reader-dialog{background:var(--panel);color:var(--ink)}.theme-night .toolbar button,.theme-night .toolbar a,.theme-night .outline button,.theme-night .saved-item button:first-child,.theme-night .sidebar-tab,.theme-night .panel-heading h2,.theme-night .reader-dialog label,.theme-night .dialog-heading h2,.theme-night .dialog-heading button{color:var(--ink)}.theme-night .reader-viewport{background:#182530}.theme-night .page-stage{filter:brightness(.88) contrast(.96)}body.theme-sepia{--paper:#f0eadc;--panel:#fffdf7;--ink:#3f3525;--muted:#756b5b;--line:#ded3bd;--navy:#493c2c;--navy-2:#64513a;--accent:#987d42;--focus:#81704d}.theme-sepia .toolbar,.theme-sepia .reader-sidebar,.theme-sepia .saved-item,.theme-sepia .search-row input,.theme-sepia .search-row button,.theme-sepia .reader-dialog{background:var(--panel)}.theme-sepia .reader-viewport{background:#e6dcc8}.theme-sepia .page-stage{filter:sepia(.18)}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:900px){.reader-header{grid-template-columns:1fr auto;height:58px}.reader-title{display:none}.reader-layout{grid-template-columns:1fr;grid-template-rows:auto 1fr}.reader-sidebar{border-right:0;border-bottom:1px solid var(--line);grid-template-rows:auto;max-height:200px}.side-panel{max-height:152px}.toolbar{gap:5px;padding:7px 9px}.tool-group{padding-right:5px}.document-tools{margin-left:0!important}.reader-viewport{padding:18px}}@media(max-width:590px){.reader-brand span{display:none}.toolbar{justify-content:space-between}.tool-group{border:0;padding:0}.zoom-tools output,.zoom-tools #fitWidth,.document-tools #printButton{display:none}.research-tools button{padding-inline:6px;font-size:.73rem}.document-tools a{padding-inline:6px;font-size:.73rem}.reader-sidebar{max-height:165px}.side-panel{padding:10px 14px;max-height:120px}.reader-viewport{padding:11px;align-items:flex-start}.header-actions{gap:2px}.icon-button{padding:5px}.page-field input{width:45px}.navigation-tools button{padding-inline:7px}}
/* Keep the cover and progress visible during the first PDF request. */
.loading-card{display:flex;align-items:center;gap:24px;margin:5vh auto 0;padding:24px;max-width:min(620px,100%);background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 48px rgba(13,37,57,.12);font:inherit;text-align:left}
.loading-card img{display:block;max-width:34%;height:auto;aspect-ratio:9/13;object-fit:contain;box-shadow:0 7px 22px rgba(0,0,0,.18)}
.loading-card>div{min-width:0}
.loading-card .loading-spinner{display:inline-block;width:25px;height:25px;border:3px solid #b7c8d5;border-top-color:var(--navy);border-radius:50%;animation:spin .8s linear infinite}
.loading-card p{font:600 1.08rem Georgia,serif;margin:12px 0 3px}
.loading-card small{color:var(--muted);font:inherit;font-size:.8rem}
.loading-card.ready{display:block;text-align:center;box-shadow:none;background:transparent;border:0}
.loading-card.ready img{display:none}
@media(max-width:590px){.loading-card{gap:14px;padding:15px;margin-top:3vh}.loading-card img{max-width:35%}}
@media(prefers-reduced-motion:reduce){.loading-card .loading-spinner{animation:none;border-color:var(--navy)}}
.loading-card[hidden]{display:none}
body.theme-slate{--paper:#e9eef2;--panel:#f7fafc;--ink:#1d3142;--muted:#526675;--line:#b9c8d4;--navy:#17354c;--navy-2:#2e5b76;--accent:#977c43;--focus:#286f9a}.theme-slate .toolbar,.theme-slate .reader-sidebar,.theme-slate .saved-item,.theme-slate .search-row input,.theme-slate .search-row button,.theme-slate .reader-dialog{background:var(--panel)}.theme-slate .reader-viewport{background:#c9d5de}.outline-row{display:flex;align-items:start}.outline-row>button:not(.outline-toggle){flex:1}.outline-toggle{width:25px;height:25px;margin-top:4px;border:1px solid var(--line);background:var(--panel);color:var(--navy);cursor:pointer;border-radius:3px;line-height:1}.research-tools button[aria-pressed=true]{background:var(--navy);color:#fff;border-color:var(--navy)}

/* Reader repair: lock the application to the viewport and give each pane its own scroll context. */
html,body{height:100%;overflow:hidden}.reader-shell{height:100dvh;min-height:0;grid-template-rows:auto auto minmax(0,1fr)}.reader-layout{grid-template-columns:282px minmax(0,1fr)}.reader-sidebar{overflow:hidden;grid-template-rows:auto minmax(0,1fr)}.side-panel{min-height:0;overflow:auto;overscroll-behavior:contain}.reader-viewport{overscroll-behavior:contain}.scroll-stage{position:relative;width:100%;min-height:100%;overflow:hidden}.scroll-page{position:absolute;left:50%;transform:translateX(-50%);background:#fff;box-shadow:var(--shadow);line-height:0}.scroll-page canvas{display:block}.pdf-link-layer{position:absolute;inset:0;line-height:normal}.page-stage.turn-next{animation:page-next .22s ease-out}.page-stage.turn-prev{animation:page-prev .22s ease-out}@keyframes page-next{from{opacity:.25;transform:perspective(1100px) rotateY(-10deg) translateX(4%)}to{opacity:1;transform:none}}@keyframes page-prev{from{opacity:.25;transform:perspective(1100px) rotateY(10deg) translateX(-4%)}to{opacity:1;transform:none}}@media(max-width:900px){.reader-layout{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.reader-sidebar{grid-template-rows:auto minmax(0,1fr);max-height:42vh}.side-panel{max-height:none}}@media(max-width:590px){.reader-sidebar{max-height:38vh}.side-panel{max-height:none}}

/* Completed reading modes and mobile Book Map drawer. */
#bookMapOpen,.book-map-close{display:none}body[data-reading-mode=spread] .page-stage{display:flex;gap:18px;align-items:flex-start;padding:0;background:transparent;box-shadow:none}body[data-reading-mode=spread] .page-stage>canvas{background:#fff;box-shadow:var(--shadow)}.spread-second{position:relative;display:block;flex:none;line-height:0;background:#fff;box-shadow:var(--shadow)}.spread-second canvas{display:block}@media(max-width:900px){#bookMapOpen{display:inline-block}.book-map-close{display:block;width:100%;border:0;border-bottom:1px solid var(--line);padding:12px 16px;text-align:right;background:var(--panel);color:var(--navy);font:700 .78rem/1 inherit}.reader-sidebar{display:none}.book-map-open .reader-sidebar{display:grid;position:fixed;inset:0;z-index:40;max-height:none;height:100dvh;background:var(--panel);border:0;grid-template-rows:auto auto minmax(0,1fr)}.book-map-open .reader-sidebar .side-panel{max-height:none;min-height:0}.book-map-open .reader-sidebar .sidebar-tabs{grid-row:2}.book-map-open .reader-sidebar .side-panel{grid-row:3}.book-map-open .reader-sidebar .side-panel:not(.active){display:none!important}}@media(max-width:590px){body[data-reading-mode=spread] .page-stage{display:block}body[data-reading-mode=spread] .spread-second{margin-top:16px}}
