/* Book library: real editorial covers, calm reading and browser-native PDFs. */
.sh-books-hero .sh-page-hero__inner { min-height: 280px; padding-block: 64px; }
.sh-books__body { padding-block: 44px 80px; }
.sh-book-filters { display: grid; grid-template-columns: minmax(0, 1fr) minmax(180px, .45fr) auto; align-items: end; gap: 18px; padding: 24px; border: 1px solid var(--sh-line); border-radius: var(--sh-radius-md); background: var(--sh-white); box-shadow: var(--sh-shadow-sm); }
.sh-book-filters label { display: block; margin-bottom: 8px; font-size: .84rem; font-weight: 700; }
.sh-book-filters input, .sh-book-filters select { width: 100%; min-height: 50px; padding: 10px 14px; border: 1px solid var(--sh-line); border-radius: 9px; color: var(--sh-ink); background: var(--sh-ivory-50); font: inherit; font-size: .86rem; }
.sh-book-filters input:focus, .sh-book-filters select:focus { outline: 2px solid var(--sh-gold-500); outline-offset: 2px; }
.sh-book-filters .sh-button { min-height: 50px; white-space: nowrap; }
.sh-book-filters .sh-button svg, .sh-book-actions .sh-button svg { width: 20px; height: 20px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.sh-books__results-heading { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding-block: 22px; font-size: .86rem; color: var(--sh-muted); }
.sh-books__results-heading p { margin: 0; }
.sh-books__results-heading a { color: var(--sh-ink); text-underline-offset: 4px; }
.sh-book-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(18px, 2.5vw, 30px); }
.sh-book-grid--featured { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sh-books-home { padding-block: clamp(54px, 7vw, 86px) 0; }
.sh-books-home__empty { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: clamp(24px, 4vw, 48px); padding: clamp(28px, 4vw, 48px); border: 1px solid var(--sh-line); border-radius: var(--sh-radius-md); background: var(--sh-ivory-100); }
.sh-books-home__icon { width: 88px; height: 88px; fill: none; stroke: #9d7831; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
.sh-books-home__empty h3 { margin: 0 0 10px; color: var(--sh-navy-900); font-size: clamp(1.1rem, 2vw, 1.5rem); }
.sh-books-home__empty p { max-width: 610px; margin: 0; color: var(--sh-muted); font-size: .9rem; line-height: 1.9; }
.sh-books-home__empty .sh-button { white-space: nowrap; }
.sh-book-card { overflow: hidden; border: 1px solid var(--sh-line); border-radius: var(--sh-radius-md); background: var(--sh-white); box-shadow: var(--sh-shadow-sm); transition: transform 180ms ease, box-shadow 180ms ease; }
.sh-book-card:hover, .sh-book-card:focus-within { transform: translateY(-4px); box-shadow: var(--sh-shadow-md); }
.sh-book-card__link { display: flex; height: 100%; flex-direction: column; color: inherit; text-decoration: none; }
.sh-book-cover { position: relative; aspect-ratio: 3 / 4; overflow: hidden; background: #e9e5db; }
.sh-book-cover img { display: block; width: 100%; height: 100%; object-fit: contain; }
.sh-book-card__cover { margin: 16px 16px 0; border-radius: 8px; box-shadow: 0 8px 18px rgba(4, 17, 23, .1); }
.sh-book-card__format { position: absolute; inset-block-end: 10px; inset-inline-end: 10px; padding: 3px 8px; border: 1px solid rgba(217, 180, 95, .6); border-radius: 5px; color: var(--sh-gold-300); background: var(--sh-navy-900); font: 700 10px/1.6 Arial, sans-serif; letter-spacing: .09em; }
.sh-book-cover__fallback { display: flex; width: 100%; height: 100%; padding: 22px; align-items: center; justify-content: center; flex-direction: column; gap: 24px; border: 10px solid var(--sh-navy-700); color: var(--sh-gold-400); background: linear-gradient(150deg, var(--sh-navy-700), var(--sh-navy-950)); }
.sh-book-cover__fallback::before { position: absolute; inset: 20px; border: 1px solid rgba(217, 180, 95, .3); content: ''; }
.sh-book-cover__fallback > span { font: 700 12px/1.6 Arial, sans-serif; letter-spacing: .18em; }
.sh-book-cover__fallback svg { width: 74px; height: 74px; fill: none; stroke: currentColor; stroke-width: 1.2; stroke-linecap: round; stroke-linejoin: round; }
.sh-book-cover__fallback > i { width: 42px; border-top: 1px solid rgba(217, 180, 95, .5); }
.sh-book-card__body { display: flex; padding: 20px; flex: 1; flex-direction: column; align-items: stretch; }
.sh-book-card__topic { margin-bottom: 7px; color: #8b6a25; font-size: .7rem; font-weight: 700; }
.sh-book-card h3 { margin: 0; color: var(--sh-ink); font-size: 1rem; line-height: 1.7; }
.sh-book-card__author { margin: 6px 0 0; color: var(--sh-muted); font-size: .8rem; }
.sh-book-card__meta { display: flex; flex-wrap: wrap; gap: 14px; margin: 12px 0 0; color: var(--sh-muted); font-size: .74rem; }
.sh-book-card__read { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 18px; color: var(--sh-navy-800); font-size: .8rem; font-weight: 700; }
.sh-book-card__read svg, .sh-book-back svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.5; }
html[dir=rtl] .sh-book-card__read svg, html[dir=rtl] .sh-book-back svg { transform: rotate(180deg); }
.sh-books-empty > svg { width: 64px; height: 64px; margin: 0 auto 22px; fill: none; stroke: #9b7830; stroke-width: 1.2; }
.sh-book-intro { padding-block: 34px 56px; border-bottom: 1px solid var(--sh-line); background: linear-gradient(145deg, var(--sh-ivory-100), var(--sh-white)); }
.sh-book-back { display: inline-flex; margin-bottom: 30px; align-items: center; gap: 9px; color: var(--sh-muted); font-size: .82rem; text-decoration: none; }
.sh-book-back:hover { color: var(--sh-navy-900); }
.sh-book-intro__layout { display: grid; grid-template-columns: minmax(190px, .38fr) minmax(0, 1fr); align-items: start; gap: clamp(32px, 6vw, 76px); }
.sh-book-intro__cover { width: 100%; max-width: 310px; border-radius: 8px 15px 15px 8px; box-shadow: 0 20px 42px rgba(4, 17, 23, .18); }
.sh-book-intro__content { padding-block: 10px; }
.sh-book-intro .sh-eyebrow { color: #8b6a25; }
.sh-book-intro h1 { margin: 0; color: var(--sh-navy-900); font-size: clamp(1.85rem, 3.5vw, 3.2rem); line-height: 1.4; }
.sh-book-intro__summary { margin: 20px 0 0; color: var(--sh-muted); font-size: 1rem; line-height: 1.9; }
.sh-book-topics { display: flex; margin-top: 20px; flex-wrap: wrap; gap: 8px; }
.sh-book-topics a { padding: 4px 12px; border: 1px solid var(--sh-line); border-radius: 30px; color: var(--sh-navy-800); background: var(--sh-ivory-100); font-size: .73rem; text-decoration: none; }
.sh-book-metadata { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 28px 0 0; padding-top: 22px; gap: 18px 22px; border-top: 1px solid var(--sh-line); }
.sh-book-metadata dt { margin-bottom: 4px; color: var(--sh-muted); font-size: .73rem; }
.sh-book-metadata dd { margin: 0; color: var(--sh-ink); font-size: .88rem; font-weight: 700; overflow-wrap: anywhere; }
.sh-book-actions { display: flex; margin-top: 30px; gap: 12px; flex-wrap: wrap; }
.sh-book-actions .sh-button { white-space: nowrap; }
.sh-book-download { border: 1px solid var(--sh-line); color: var(--sh-navy-900); background: var(--sh-white); }
.sh-book-single__body { padding-block: 46px 80px; }
.sh-book-description { max-width: 850px; margin-bottom: 48px; }
.sh-book-description h2 { margin: 0 0 18px; color: var(--sh-navy-900); font-size: 1.6rem; }
.sh-book-description .sh-content-language-note { margin-block: 0 20px; }
.sh-book-reader { scroll-margin-top: 100px; overflow: hidden; border: 1px solid var(--sh-line); border-radius: var(--sh-radius-md); background: var(--sh-white); box-shadow: var(--sh-shadow-sm); }
.sh-book-reader__toolbar { display: flex; min-height: 76px; padding: 18px 22px; align-items: center; justify-content: space-between; gap: 16px; color: var(--sh-white); background: var(--sh-navy-900); }
.sh-book-reader__toolbar > div:first-child { display: flex; align-items: center; gap: 12px; }
.sh-book-reader__label { padding: 4px 7px; border: 1px solid rgba(217, 180, 95, .6); border-radius: 4px; color: var(--sh-gold-400); font: 700 10px/1.4 Arial, sans-serif; }
.sh-book-reader__toolbar h2 { margin: 0; font-size: 1rem; }
.sh-book-reader__controls { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.sh-book-reader__controls a, .sh-book-reader__controls button { color: var(--sh-gold-300); font: inherit; font-size: .78rem; text-underline-offset: 4px; }
.sh-book-reader__controls button { padding: 7px 10px; border: 1px solid rgba(217, 180, 95, .4); border-radius: 7px; background: transparent; cursor: pointer; }
.sh-book-reader__document { display: block; width: 100%; height: min(82vh, 1000px); min-height: 480px; border: 0; background: #e4e5e6; }
.sh-book-reader__fallback { display: grid; min-height: 300px; padding: 30px; place-content: center; justify-items: center; gap: 15px; text-align: center; }
.sh-book-reader__hint { margin: 0; padding: 16px 22px; color: var(--sh-muted); font-size: .8rem; line-height: 1.8; }
.sh-book-reader:fullscreen { display: flex; width: 100%; height: 100%; flex-direction: column; border: 0; border-radius: 0; }
.sh-book-reader:fullscreen .sh-book-reader__document { min-height: 0; height: auto; flex: 1; }
.sh-pdf-controls { display: flex; padding: 12px 20px; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px 20px; border-bottom: 1px solid var(--sh-line); color: var(--sh-ink); background: var(--sh-ivory-50); }
.sh-pdf-controls__pages, .sh-pdf-controls__zoom { display: flex; align-items: center; gap: 9px; font-size: .78rem; }
.sh-pdf-controls button { display: inline-flex; min-width: 36px; min-height: 36px; padding: 6px 9px; align-items: center; justify-content: center; border: 1px solid var(--sh-line); border-radius: 7px; color: var(--sh-ink); background: var(--sh-white); font: inherit; font-size: 1rem; cursor: pointer; }
.sh-pdf-controls button:disabled { opacity: .38; cursor: default; }
.sh-pdf-controls button:not(:disabled):hover { border-color: var(--sh-gold-500); background: var(--sh-gold-300); }
.sh-pdf-controls button:focus-visible, .sh-pdf-controls input:focus-visible, .sh-pdf-viewport:focus-visible { outline: 2px solid var(--sh-gold-500); outline-offset: 2px; }
.sh-pdf-controls button svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.6; }
html[dir=rtl] .sh-pdf-controls button svg { transform: rotate(180deg); }
.sh-pdf-controls input { width: 60px; min-height: 36px; padding: 5px; border: 1px solid var(--sh-line); border-radius: 7px; color: var(--sh-ink); background: var(--sh-white); font: inherit; text-align: center; direction: ltr; }
.sh-pdf-controls .sh-pdf-fit { font-size: .75rem; }
.sh-pdf-controls [data-sh-pdf-zoom] { min-width: 43px; text-align: center; }
.sh-pdf-message { padding: 18px 22px; text-align: center; }
.sh-pdf-message p { margin: 0; color: var(--sh-muted); font-size: .82rem; line-height: 1.8; }
.sh-pdf-message .sh-button { min-height: 40px; margin-top: 12px; padding-block: 7px; font-size: .8rem; }
.sh-book-reader[data-sh-reader-state=error] .sh-pdf-message { background: #fff5e9; }
.sh-book-reader[data-sh-reader-state=ready] .sh-pdf-message { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); padding: 0; white-space: nowrap; }
.sh-pdf-viewport { height: min(82vh, 1000px); min-height: 420px; padding: 24px; overflow: auto; overscroll-behavior: contain; direction: ltr; background: #dedfdc; }
.sh-pdf-page { position: relative; margin-inline: auto; background: white; box-shadow: 0 4px 24px rgba(4, 17, 23, .18); }
.sh-pdf-page canvas { display: block; }
/* Scoped equivalent of PDF.js 6.4 text-layer base styles (Apache-2.0). */
.sh-pdf-text-layer { position: absolute; inset: 0; overflow: clip; text-align: initial; opacity: 1; line-height: 1; letter-spacing: normal; word-spacing: normal; text-size-adjust: none; forced-color-adjust: none; transform-origin: 0 0; caret-color: CanvasText; --min-font-size: 1; --text-scale-factor: calc(var(--total-scale-factor) * var(--min-font-size)); --min-font-size-inv: calc(1 / var(--min-font-size)); }
.sh-pdf-text-layer :is(span, br) { position: absolute; color: transparent; white-space: pre; cursor: text; transform-origin: 0 0; user-select: text; }
.sh-pdf-text-layer > :not(.markedContent), .sh-pdf-text-layer .markedContent span:not(.markedContent) { z-index: 1; --font-height: 0; font-size: calc(var(--text-scale-factor) * var(--font-height)); --scale-x: 1; --rotate: 0deg; transform: rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--min-font-size-inv)); }
.sh-pdf-text-layer .markedContent { display: contents; }
.sh-pdf-text-layer span[role=img] { user-select: none; cursor: default; }
.sh-pdf-text-layer ::selection { color: transparent; background: rgba(39, 111, 151, .28); }
.sh-book-reader:fullscreen .sh-pdf-viewport { min-height: 0; height: auto; flex: 1; }
.sh-book-reader:fullscreen .sh-book-reader__toolbar, .sh-book-reader:fullscreen .sh-pdf-controls, .sh-book-reader:fullscreen .sh-book-reader__hint { flex: none; }
@media (max-width: 760px) { .sh-pdf-viewport { height: 72vh; min-height: 360px; padding: 12px; } .sh-pdf-controls { padding: 10px 12px; gap: 10px; } .sh-pdf-controls__pages, .sh-pdf-controls__zoom { gap: 6px; } }
@media (max-width: 480px) { .sh-pdf-controls { justify-content: center; } .sh-pdf-controls__pages, .sh-pdf-controls__zoom { justify-content: center; } }
@media (max-width: 1020px) { .sh-book-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .sh-book-filters { grid-template-columns: minmax(0, 1fr) minmax(160px, .65fr); } .sh-book-filters .sh-button { grid-column: 1 / -1; justify-self: start; } }
@media (max-width: 760px) { .sh-book-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .sh-books-home__empty { grid-template-columns: auto minmax(0, 1fr); } .sh-books-home__empty .sh-button { grid-column: 1 / -1; justify-self: start; } .sh-book-intro__layout { grid-template-columns: 1fr; gap: 28px; } .sh-book-intro__cover { max-width: 250px; margin-inline: auto; } .sh-book-metadata { grid-template-columns: repeat(2, minmax(0, 1fr)); } .sh-book-reader__toolbar { align-items: start; flex-direction: column; } .sh-book-reader__document { height: 68vh; min-height: 420px; } .sh-book-reader__controls { width: 100%; justify-content: space-between; } }
@media (max-width: 480px) { .sh-book-filters { grid-template-columns: 1fr; padding: 18px; gap: 14px; } .sh-book-filters .sh-button { justify-self: stretch; } .sh-books-home__empty { grid-template-columns: 1fr; } .sh-books-home__icon { width: 66px; height: 66px; } .sh-books-home__empty .sh-button { justify-self: stretch; } .sh-book-card__cover { margin: 10px 10px 0; } .sh-book-card__body { padding: 13px; } .sh-book-card h3 { font-size: .9rem; } .sh-book-card__read { font-size: .72rem; } .sh-book-cover__fallback { padding: 12px; border-width: 6px; gap: 15px; } .sh-book-cover__fallback::before { inset: 12px; } .sh-book-cover__fallback svg { width: 54px; height: 54px; } .sh-book-actions .sh-button { width: 100%; } }
@media (prefers-reduced-motion: reduce) { .sh-book-card { transition: none; } .sh-book-card:hover, .sh-book-card:focus-within { transform: none; } }
