/* Three-dimensional manuscript preview.
   Cover imagery is the author-supplied paperback wrap. Museum art and edge
   textures are source-locked in museum-artwork-rights-v1.json. */

.book-journey {
    --book-ink: #1a110c;
    --book-night: #090604;
    --book-umber: #28170f;
    --book-gold: #c99a4d;
    --book-gold-bright: #efd49b;
    --book-paper: #eee2ca;
    --book-paper-shadow: #c5ab80;
    position: absolute;
    inset: 0;
    z-index: 30;
    overflow: hidden;
    color: var(--book-paper);
    background: var(--book-night);
    isolation: isolate;
    pointer-events: auto;
    transform: translateZ(0);
}

body.book-review-mode {
    overflow: hidden !important;
}

body.book-review-mode .story-progress,
body.book-review-mode .k-cursor,
body.book-review-mode #loader-layer,
body.book-review-mode #threshold-layer {
    visibility: hidden !important;
}

body.book-review-mode #scene-5,
body.book-review-mode #scene-5 * {
    visibility: visible !important;
}

.book-journey-sky,
.book-journey-sky::before,
.book-journey-sky::after {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.book-journey-sky {
    z-index: 0;
    overflow: hidden;
    background: #0b0705 url('/static/book/opening-providence-desktop-v1.webp') center 54% / cover no-repeat;
}

.book-journey-sky::before {
    content: '';
    background:
        radial-gradient(circle at 50% 48%, rgba(76, 38, 18, 0.2), transparent 38%),
        linear-gradient(100deg, rgba(7, 4, 3, 0.97), rgba(18, 9, 5, 0.9) 48%, rgba(6, 4, 3, 0.97));
}

.book-journey-sky::after {
    content: '';
    opacity: 0.34;
    background-image: url('/static/book/providence-mediterranean-night-v1.webp');
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    mix-blend-mode: soft-light;
}

.book-journey-halo {
    position: absolute;
    z-index: 1;
    top: 48%;
    left: 50%;
    width: min(58vw, 820px);
    aspect-ratio: 1;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(238, 179, 78, 0.2), rgba(104, 47, 21, 0.12) 42%, transparent 72%);
    box-shadow: 0 0 90px rgba(238, 179, 78, 0.1);
    transform: translate(-50%, -50%) scale(0.86);
    animation: bookHaloBreath 6.2s ease-in-out infinite alternate;
}

.book-journey-stars {
    position: absolute;
    z-index: 2;
    inset: 10% 7%;
    opacity: 0.52;
    background: url('/static/book/jewel-glint-v1.webp') 8% 34% / 14px 27px no-repeat;
    filter: sepia(0.45) saturate(0.72);
}

.book-journey-stars::before,
.book-journey-stars::after {
    content: '';
    position: absolute;
    width: 9px;
    height: 17px;
    background: url('/static/book/jewel-glint-v1.webp') center / contain no-repeat;
    animation: bookStarPulse 3.1s ease-in-out infinite alternate;
}

.book-journey-stars::before { top: 10%; right: 18%; }
.book-journey-stars::after { bottom: 17%; left: 18%; animation-delay: 1.25s; }

.book-journey-header {
    position: absolute;
    z-index: 90;
    top: clamp(20px, 3.4vh, 40px);
    left: clamp(20px, 4vw, 68px);
    right: clamp(20px, 4vw, 68px);
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 2rem;
    color: var(--book-gold-bright);
}

.book-journey-eyebrow,
.book-journey-chapter,
.book-journey-instruction,
.book-page-kicker,
.book-page-folio,
.book-art-caption,
.book-word-notes,
.book-buy-note,
.book-nav-arrow {
    font-family: 'Space Grotesk', Arial, sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.17em;
}

.book-journey-eyebrow {
    font-size: clamp(0.52rem, 0.61vw, 0.68rem);
    color: rgba(238, 224, 196, 0.62);
}

.book-journey-header h2 {
    margin: 0;
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(1.05rem, 1.5vw, 1.65rem);
    font-weight: 500;
    letter-spacing: 0.07em;
    text-align: center;
    white-space: nowrap;
}

.book-journey-chapter {
    justify-self: end;
    display: flex;
    align-items: center;
    gap: 0.8rem;
    font-size: clamp(0.5rem, 0.56vw, 0.63rem);
    color: rgba(238, 224, 196, 0.64);
}

.book-journey-chapter-number {
    color: var(--book-gold);
    font-variant-numeric: tabular-nums;
}

.book-stage {
    position: absolute;
    z-index: 20;
    inset: 8.5% 0 11.5%;
    display: grid;
    place-items: center;
    perspective: 2300px;
    perspective-origin: 50% 46%;
}

.book-volume {
    position: relative;
    width: min(92vw, calc(75vh * 1.286), 900px);
    aspect-ratio: 1.286;
    transform-style: preserve-3d;
    transform-origin: center center;
    will-change: transform;
}

.book-shadow {
    position: absolute;
    z-index: -5;
    left: 5%;
    right: 5%;
    bottom: -6%;
    height: 15%;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.76);
    filter: blur(27px);
    transform: translateZ(-52px) rotateX(76deg);
    transition: left 400ms ease, right 400ms ease;
}

.book-volume[data-book-step='0'] .book-shadow { left: 48%; right: 1%; }
.book-volume[data-book-step='8'] .book-shadow { left: 1%; right: 48%; }

.book-binding-bed {
    position: absolute;
    z-index: 1;
    inset: 0.8% 0.35%;
    display: grid;
    grid-template-columns: 1fr 1fr;
    transform: translateZ(4px);
    transform-style: preserve-3d;
    pointer-events: none;
    opacity: 1;
    transition: opacity 180ms ease;
}

.book-volume[data-book-step='0'] .book-binding-bed,
.book-volume[data-book-step='8'] .book-binding-bed { opacity: 0; }

.book-binding-page {
    border: 1px solid rgba(93, 61, 33, 0.34);
    background:
        linear-gradient(90deg, rgba(81, 47, 22, 0.14), transparent 12%, transparent 88%, rgba(81, 47, 22, 0.1)),
        #dfd1b5;
    box-shadow: inset 0 0 32px rgba(75, 40, 17, 0.12);
}

.book-binding-page--left { border-radius: 4px 0 0 4px; }
.book-binding-page--right { border-radius: 0 4px 4px 0; }

.book-binding-seam {
    position: absolute;
    top: 0;
    bottom: 0;
    left: calc(50% - 4px);
    width: 8px;
    background: linear-gradient(90deg, rgba(30, 14, 7, 0.64), rgba(151, 102, 55, 0.18) 50%, rgba(29, 13, 6, 0.64));
    box-shadow: -11px 0 20px rgba(29, 13, 6, 0.16), 11px 0 20px rgba(29, 13, 6, 0.15);
}

.book-page-block,
.book-leaf,
.book-front-cover,
.book-back-cover {
    position: absolute;
    top: 0;
    left: 50%;
    width: 50%;
    height: 100%;
    transform-style: preserve-3d;
}

.book-page-block {
    z-index: 2;
    top: 1.15%;
    width: 49.25%;
    height: 97.7%;
    background: #e3d6bc;
    border: 1px solid rgba(103, 73, 45, 0.32);
    border-radius: 0 4px 4px 0;
    box-shadow: 7px 8px 18px rgba(0, 0, 0, 0.32), inset -8px 0 16px rgba(101, 73, 43, 0.11);
    transform: translateZ(5px);
    will-change: opacity;
}

.book-page-block-edge,
.book-cover-edge {
    position: absolute;
    display: block;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}

.book-page-block-edge--fore {
    top: 0;
    left: 100%;
    width: 24px;
    height: 100%;
    transform-origin: 0 50%;
    transform: rotateY(90deg);
    background: #e7dcc8 url('/static/book/book-page-edge-fore-v2.webp') center / 100% 100% no-repeat;
    box-shadow: inset 0 0 8px rgba(64, 37, 18, 0.3);
}

.book-page-block-edge--head,
.book-page-block-edge--tail {
    left: 0;
    width: 100%;
    height: 24px;
    background: #e7dcc8 url('/static/book/book-page-edge-head-v2.webp') center / 100% 100% no-repeat;
    box-shadow: inset 0 0 7px rgba(64, 37, 18, 0.24);
}

.book-page-block-edge--head {
    top: 0;
    transform-origin: 50% 0;
    transform: rotateX(-90deg);
}

.book-page-block-edge--tail {
    bottom: 0;
    transform-origin: 50% 100%;
    transform: rotateX(90deg);
}

.book-gutter {
    position: absolute;
    z-index: 58;
    top: 0.7%;
    bottom: 0.7%;
    left: calc(50% - 3px);
    width: 6px;
    opacity: 0;
    background: linear-gradient(90deg, rgba(25, 12, 7, 0.72), rgba(125, 81, 43, 0.18), rgba(24, 11, 6, 0.68));
    box-shadow: -15px 0 25px rgba(20, 9, 4, 0.28), 15px 0 25px rgba(20, 9, 4, 0.24);
    transform: translateZ(28px);
}

.book-leaf {
    transform-origin: 0 50%;
    will-change: transform;
}

.book-leaf--01 { z-index: 26; transform: translateZ(29px); }
.book-leaf--02 { z-index: 25; transform: translateZ(25px); }
.book-leaf--03 { z-index: 24; transform: translateZ(21px); }
.book-leaf--04 { z-index: 23; transform: translateZ(17px); }
.book-leaf--05 { z-index: 22; transform: translateZ(13px); }
.book-leaf--06 { z-index: 21; transform: translateZ(9px); }

.book-leaf-face,
.book-cover-face {
    position: absolute;
    inset: 0;
    overflow: hidden;
    margin: 0;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}

.book-leaf-face {
    color: var(--book-ink);
    background:
        linear-gradient(90deg, rgba(112, 73, 35, 0.11), transparent 9%, transparent 88%, rgba(102, 65, 32, 0.08)),
        var(--book-paper);
    border: 1px solid rgba(99, 66, 37, 0.31);
    box-shadow: inset 0 0 36px rgba(96, 57, 25, 0.12), 2px 3px 5px rgba(32, 17, 8, 0.16);
}

.book-leaf-face::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 12;
    pointer-events: none;
    box-shadow: inset 0 0 26px rgba(65, 35, 17, 0.09);
}

.book-leaf-face--front {
    border-radius: 0 4px 4px 0;
    transform: rotateY(0deg) translateZ(1px);
}

.book-leaf-face--back {
    border-radius: 4px 0 0 4px;
    transform: rotateY(180deg) translateZ(1px);
}

.book-front-cover,
.book-back-cover {
    transform-origin: 0 50%;
    will-change: transform;
}

.book-front-cover { z-index: 40; transform: translateZ(30px); }
.book-back-cover { z-index: 3; transform: translateZ(7px); }

.book-cover-face {
    border: 1px solid rgba(226, 182, 98, 0.48);
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.48);
}

.book-cover-face img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.book-cover-face--front,
.book-cover-face--back-inside {
    border-radius: 0 5px 5px 0;
    transform: rotateY(0deg) translateZ(3px);
}

.book-cover-face--inside,
.book-cover-face--back-exterior {
    border-radius: 5px 0 0 5px;
    transform: rotateY(180deg) translateZ(3px);
}

.book-cover-face--inside {
    display: grid;
    align-content: center;
    gap: clamp(11px, 1.9vh, 20px);
    padding: clamp(28px, 5vh, 56px);
    color: rgba(239, 211, 159, 0.76);
    background: #1a100b;
    box-shadow: inset 0 0 70px rgba(0, 0, 0, 0.72);
}

.book-cover-face--inside h3 {
    max-width: 11ch;
    margin: 0;
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(1.65rem, 3.5vh, 2.9rem);
    font-weight: 500;
    line-height: 0.98;
}

.book-cover-face--inside > p:last-child {
    margin: 0;
    font-family: 'Space Grotesk', Arial, sans-serif;
    font-size: clamp(0.5rem, 0.8vh, 0.68rem);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(239, 211, 159, 0.52);
}

.book-cover-face--back-exterior {
    background: #100b08;
}

.book-cover-face--endpaper,
.book-page--endpaper {
    background: #1a0f0b;
    box-shadow: inset 0 0 72px rgba(0, 0, 0, 0.68);
}

.book-cover-edge--fore {
    top: 0;
    left: 100%;
    width: 7px;
    height: 100%;
    transform-origin: 0 50%;
    transform: rotateY(90deg) translateZ(0);
    background: #1a0f0a url('/static/book/book-cover-board-edge-v2.webp') center / auto 100% no-repeat;
}

.book-cover-edge--head,
.book-cover-edge--tail {
    left: 0;
    width: 100%;
    height: 7px;
    background: #1a0f0a url('/static/book/book-cover-board-edge-v2.webp') center / 100% 100% no-repeat;
}

.book-cover-edge--head {
    top: 0;
    transform-origin: 50% 0;
    transform: rotateX(-90deg);
}

.book-cover-edge--tail {
    bottom: 0;
    transform-origin: 50% 100%;
    transform: rotateX(90deg);
}

.book-spine {
    position: absolute;
    z-index: 52;
    top: 0;
    left: calc(50% - 7px);
    width: 14px;
    height: 100%;
    overflow: hidden;
    border-left: 1px solid rgba(239, 201, 127, 0.24);
    border-right: 1px solid rgba(17, 8, 4, 0.68);
    box-shadow: 0 0 13px rgba(0, 0, 0, 0.5);
    transform: translateZ(31px);
}

.book-spine img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.book-page--invitation,
.book-page--chapter-copy,
.book-page--closing-copy,
.book-page--purchase {
    padding: clamp(24px, 3.6vh, 44px) clamp(24px, 2.8vw, 44px);
}

.book-page-folio {
    position: absolute;
    top: 4.3%;
    right: 7%;
    margin: 0;
    font-size: clamp(0.46rem, 0.53vw, 0.62rem);
    color: rgba(69, 42, 24, 0.51);
}

.book-page-kicker {
    margin: 0 0 clamp(12px, 2vh, 21px);
    font-size: clamp(0.46rem, 0.59vw, 0.67rem);
    font-weight: 700;
    line-height: 1.5;
    color: #85592d;
}

.book-page--invitation h3,
.book-page--chapter-copy h3,
.book-page--closing-copy h3,
.book-page--purchase h3 {
    margin: 0;
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-weight: 500;
    letter-spacing: -0.035em;
    text-wrap: balance;
}

.book-page--invitation h3 {
    max-width: 9ch;
    font-size: clamp(1.9rem, 4.1vh, 3.35rem);
    line-height: 0.92;
}

.book-page-lede {
    margin: clamp(15px, 2.5vh, 28px) 0 0;
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(0.9rem, 1.5vh, 1.18rem);
    line-height: 1.42;
}

.book-page-note {
    max-width: 29ch;
    margin: clamp(18px, 3vh, 32px) 0 0;
    font-family: 'Space Grotesk', Arial, sans-serif;
    font-size: clamp(0.52rem, 0.84vh, 0.7rem);
    line-height: 1.62;
    letter-spacing: 0.045em;
    color: rgba(25, 16, 11, 0.6);
}

.book-chapter-index {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    margin-top: clamp(20px, 3.8vh, 40px);
    border-top: 1px solid rgba(93, 56, 28, 0.32);
    border-bottom: 1px solid rgba(93, 56, 28, 0.32);
}

.book-chapter-index span {
    padding: clamp(9px, 1.25vh, 13px) 0;
    font-family: 'Space Grotesk', Arial, sans-serif;
    font-size: clamp(0.52rem, 0.72vw, 0.72rem);
    letter-spacing: 0.1em;
    text-align: center;
    color: #8b5e2d;
    border-right: 1px solid rgba(93, 56, 28, 0.22);
}

.book-chapter-index span:last-child { border-right: 0; }

.book-page--chapter-copy h3 {
    max-width: 10ch;
    font-size: clamp(1.7rem, 3.7vh, 3.05rem);
    line-height: 0.93;
}

.book-page--chapter-copy blockquote {
    margin: clamp(14px, 2.1vh, 23px) 0 0;
    padding: 0 0 0 clamp(10px, 1vw, 15px);
    border-left: 1px solid #a4763c;
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(0.75rem, 1.14vh, 0.94rem);
    font-style: italic;
    line-height: 1.38;
    color: rgba(30, 18, 12, 0.76);
}

.book-page--chapter-copy > p:not(.book-page-kicker) {
    margin: clamp(13px, 2vh, 22px) 0 0;
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(0.76rem, 1.18vh, 0.97rem);
    line-height: 1.43;
    color: rgba(26, 17, 12, 0.81);
}

.book-word-notes {
    margin: clamp(15px, 2.4vh, 26px) 0 0;
    border-top: 1px solid rgba(93, 56, 28, 0.3);
}

.book-word-notes div {
    display: grid;
    grid-template-columns: 5.8rem 1fr;
    gap: 0.65rem;
    padding: clamp(7px, 1vh, 10px) 0;
    border-bottom: 1px solid rgba(93, 56, 28, 0.2);
}

.book-word-notes dt,
.book-word-notes dd {
    margin: 0;
    font-size: clamp(0.43rem, 0.67vh, 0.58rem);
    line-height: 1.35;
}

.book-word-notes dt { color: #8b5d2d; }
.book-word-notes dd { color: rgba(26, 17, 12, 0.66); }

.book-page--art {
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto;
    background: #130e0a;
}

.book-page--art > img {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: contain;
    background: #130e0a;
}

.book-page--art-rachel > img { background: #35281b; }
.book-page--art-angel > img { background: #e8dfcc; }

.book-art-caption {
    position: relative;
    z-index: 13;
    display: grid;
    gap: 0.38rem;
    padding: clamp(13px, 2vh, 20px) clamp(15px, 1.75vw, 24px);
    color: #f2dfbd;
    background: #160f0b;
    border-top: 1px solid rgba(222, 174, 92, 0.45);
    font-size: clamp(0.42rem, 0.59vh, 0.54rem);
    line-height: 1.35;
    letter-spacing: 0.075em;
}

.book-art-caption strong {
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(0.95rem, 1.65vh, 1.28rem);
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
}

.book-art-chapter { color: #dda959; }

.book-art-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 0.85rem;
    margin-top: 0.2rem;
}

.book-art-links a {
    min-height: 24px;
    color: rgba(242, 223, 189, 0.72);
    text-underline-offset: 3px;
}

.book-art-links a:hover,
.book-art-links a:focus-visible { color: #fff0cf; }

.book-page--closing-copy {
    display: grid;
    align-content: center;
    color: #f0d8ad;
    background: #28140e;
    box-shadow: inset 0 0 55px rgba(0, 0, 0, 0.34);
}

.book-page--closing-copy .book-page-folio,
.book-page--closing-copy .book-page-kicker { color: #d1a25c; }

.book-page--closing-copy h3 {
    max-width: 10ch;
    font-size: clamp(1.85rem, 4vh, 3.25rem);
    line-height: 0.92;
}

.book-page--closing-copy .book-page-lede,
.book-page--closing-copy .book-page-note { color: rgba(240, 216, 173, 0.7); }

.book-page--purchase {
    display: grid;
    place-items: center;
    color: #f4dfba;
    background: #1b0f0b;
    box-shadow: inset 0 0 58px rgba(116, 53, 24, 0.34);
}

.book-purchase-copy {
    position: relative;
    z-index: 2;
    align-self: center;
}

.book-page--purchase h3 {
    max-width: 9ch;
    font-size: clamp(1.8rem, 3.8vh, 3.25rem);
    line-height: 0.91;
}

.book-page--purchase p:not(.book-page-kicker):not(.book-buy-note) {
    max-width: 29ch;
    margin: clamp(14px, 2.4vh, 25px) 0 0;
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(0.78rem, 1.22vh, 0.98rem);
    line-height: 1.45;
    color: rgba(244, 223, 186, 0.72);
}

.book-buy-button {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: min(100%, 310px);
    min-height: 48px;
    margin-top: clamp(19px, 3.2vh, 35px);
    padding: 0.85rem 1rem;
    color: #160d08;
    background: #dfb56a;
    border: 1px solid #f2d79b;
    text-decoration: none;
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.28);
    transition: transform 220ms ease, background-color 220ms ease, box-shadow 220ms ease;
}

.book-buy-button:hover,
.book-buy-button:focus-visible {
    color: #100a06;
    background: #f0d28f;
    transform: translateY(-2px);
    box-shadow: 0 18px 38px rgba(0, 0, 0, 0.36);
}

.book-buy-button span,
.book-buy-button small {
    font-family: 'Space Grotesk', Arial, sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.book-buy-button span { font-size: clamp(0.52rem, 0.7vw, 0.68rem); font-weight: 700; }
.book-buy-button small { font-size: clamp(0.41rem, 0.51vw, 0.5rem); opacity: 0.64; }

.book-buy-note {
    margin: 0.7rem 0 0 !important;
    font-size: clamp(0.42rem, 0.48vw, 0.54rem) !important;
    color: rgba(244, 223, 186, 0.46) !important;
}

.book-final-purchase {
    position: absolute;
    z-index: 88;
    top: 50%;
    right: clamp(28px, 5vw, 88px);
    width: min(25vw, 320px);
    padding: clamp(20px, 2.7vw, 34px);
    color: #f4dfba;
    background: rgba(19, 10, 7, 0.9);
    border: 1px solid rgba(224, 178, 93, 0.46);
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.5), inset 0 0 42px rgba(126, 61, 25, 0.18);
    translate: 0 -50%;
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
}

.book-final-purchase h3 {
    max-width: 9ch;
    margin: 0;
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(1.65rem, 2.7vw, 2.85rem);
    font-weight: 500;
    line-height: 0.93;
    letter-spacing: -0.035em;
}

.book-final-purchase > p:not(.book-page-kicker):not(.book-buy-note) {
    margin: clamp(14px, 2vh, 21px) 0 0;
    font-family: 'Cormorant Garamond', Georgia, serif;
    font-size: clamp(0.78rem, 1vw, 0.98rem);
    line-height: 1.45;
    color: rgba(244, 223, 186, 0.72);
}

.book-final-purchase .book-buy-button {
    width: 100%;
}

.book-journey-controls {
    position: absolute;
    z-index: 100;
    left: 50%;
    bottom: clamp(20px, 3.3vh, 38px);
    display: flex;
    align-items: center;
    gap: clamp(10px, 1.5vw, 22px);
    transform: translateX(-50%);
}

.book-nav-arrow,
.book-progress-dots button {
    appearance: none;
    -webkit-appearance: none;
    color: rgba(244, 223, 186, 0.62);
    background: transparent;
    border: 0;
    cursor: pointer;
}

.book-nav-arrow {
    min-width: 70px;
    min-height: 44px;
    padding: 0 0.55rem;
    font-size: clamp(0.46rem, 0.55vw, 0.6rem);
    transition: color 180ms ease, transform 180ms ease;
}

.book-nav-arrow:hover,
.book-nav-arrow:focus-visible {
    color: var(--book-gold-bright);
    transform: translateY(-1px);
}

.book-nav-arrow:disabled {
    opacity: 0.24;
    cursor: default;
    transform: none;
}

.book-progress-dots {
    display: flex;
    align-items: center;
}

.book-progress-dots button {
    display: grid;
    place-items: center;
    width: 28px;
    height: 44px;
    padding: 0;
}

.book-progress-dots button::before {
    content: '';
    width: 5px;
    height: 5px;
    border: 1px solid rgba(236, 200, 132, 0.72);
    border-radius: 50%;
    transition: background-color 180ms ease, transform 180ms ease;
}

.book-progress-dots button.is-active::before {
    background: var(--book-gold-bright);
    transform: scale(1.45);
}

.book-progress-dots button:focus-visible,
.book-nav-arrow:focus-visible,
.book-buy-button:focus-visible,
.book-art-links a:focus-visible {
    outline: 1px solid var(--book-gold-bright);
    outline-offset: 2px;
}

.book-journey-instruction {
    position: absolute;
    z-index: 90;
    right: clamp(22px, 4vw, 70px);
    bottom: clamp(25px, 4vh, 46px);
    margin: 0;
    font-size: clamp(0.46rem, 0.52vw, 0.6rem);
    color: rgba(238, 224, 196, 0.42);
}

.book-journey-instruction span { color: var(--book-gold); }

@keyframes bookHaloBreath {
    from { opacity: 0.55; transform: translate(-50%, -50%) scale(0.84); }
    to { opacity: 0.94; transform: translate(-50%, -50%) scale(1.02); }
}

@keyframes bookStarPulse {
    from { opacity: 0.25; transform: scale(0.72) rotate(-7deg); }
    to { opacity: 0.92; transform: scale(1.1) rotate(7deg); }
}

@media (max-width: 900px) {
    .book-journey-header { grid-template-columns: 1fr auto; }
    .book-journey-header h2 { display: none; }
    .book-journey-instruction { display: none; }
    .book-stage { inset: 14% 0 17%; }
    .book-volume { width: min(96vw, calc(65vh * 1.286)); }

    .book-page--invitation,
    .book-page--chapter-copy,
    .book-page--closing-copy,
    .book-page--purchase { padding: 4.1vw 3.8vw; }

    .book-page--invitation h3,
    .book-page--chapter-copy h3,
    .book-page--closing-copy h3,
    .book-page--purchase h3 { font-size: clamp(1.25rem, 5vw, 2rem); }

    .book-page-lede,
    .book-page--chapter-copy > p:not(.book-page-kicker),
    .book-page--purchase p:not(.book-page-kicker):not(.book-buy-note) {
        font-size: clamp(0.6rem, 1.95vw, 0.82rem);
        line-height: 1.36;
    }

    .book-page--chapter-copy blockquote { font-size: clamp(0.57rem, 1.72vw, 0.76rem); }
    .book-page-note { font-size: clamp(0.47rem, 1.45vw, 0.62rem); }
    .book-word-notes { margin-top: 1.7vw; }
    .book-word-notes div { grid-template-columns: 4.8rem 1fr; padding: 0.8vw 0; }
    .book-art-caption { gap: 0.24rem; padding: 1.3vw 1.6vw; }
    .book-art-caption strong { font-size: clamp(0.65rem, 2.35vw, 0.95rem); }
    .book-art-links a { min-height: 20px; }
    .book-buy-button { min-height: 44px; margin-top: 2.7vw; padding: 0.65rem 0.7rem; }
    .book-final-purchase {
        top: auto;
        right: 5vw;
        bottom: -14vh;
        width: min(55vw, 300px);
        padding: clamp(14px, 3.5vw, 24px);
        translate: none;
    }
    .book-final-purchase h3 { font-size: clamp(1.2rem, 4.7vw, 1.9rem); }
    .book-final-purchase > p:not(.book-page-kicker):not(.book-buy-note) { font-size: clamp(0.62rem, 1.9vw, 0.8rem); }
    .book-journey-controls { bottom: 4.8vh; }
}

@media (max-width: 520px) {
    .book-journey-header {
        top: 3vh;
        left: 5vw;
        right: 5vw;
    }

    .book-journey-eyebrow { max-width: 18ch; line-height: 1.5; }
    .book-journey-chapter-name { display: none; }
    .book-stage { inset: 18% 0 23%; }
    .book-volume { width: 96vw; }
    .book-page-kicker { margin-bottom: 1.6vw; font-size: 1.35vw; }
    .book-page-folio { font-size: 1.35vw; }

    .book-page--invitation h3,
    .book-page--chapter-copy h3,
    .book-page--closing-copy h3,
    .book-page--purchase h3 { font-size: 4.65vw; }

    .book-page-lede,
    .book-page--chapter-copy > p:not(.book-page-kicker),
    .book-page--purchase p:not(.book-page-kicker):not(.book-buy-note) { font-size: 1.9vw; }

    .book-page--chapter-copy blockquote {
        margin-top: 1.6vw;
        padding-left: 1.5vw;
        font-size: 1.62vw;
    }

    .book-word-notes div { grid-template-columns: 3.8rem 1fr; }
    .book-word-notes dt,
    .book-word-notes dd { font-size: 1.18vw; }
    .book-page-note { margin-top: 2vw; font-size: 1.35vw; }
    .book-chapter-index { margin-top: 3vw; }
    .book-chapter-index span { padding: 1.5vw 0; font-size: 1.4vw; }
    .book-art-caption { font-size: 1.05vw; }
    .book-art-caption strong { font-size: 2.4vw; }
    .book-art-links { gap: 0.2rem 0.45rem; }
    .book-art-links a { min-height: 18px; }
    .book-buy-button { gap: 0.3rem; margin-top: 2.2vw; padding: 0.45rem 0.5rem; }
    .book-buy-button span { font-size: 1.45vw; }
    .book-buy-button small { font-size: 1.15vw; }
    .book-buy-note { display: none; }
    .book-final-purchase {
        right: 4vw;
        bottom: -14.5vh;
        width: 58vw;
        padding: 3.3vw;
    }
    .book-final-purchase .book-page-kicker { margin-bottom: 1.2vw; }
    .book-final-purchase h3 { font-size: 4.2vw; }
    .book-final-purchase > p:not(.book-page-kicker):not(.book-buy-note) { margin-top: 1.8vw; font-size: 1.78vw; }
    .book-final-purchase .book-buy-button { margin-top: 2vw; }
    .book-nav-arrow { min-width: 56px; padding: 0 0.25rem; font-size: 0.46rem; }
    .book-progress-dots button { width: 20px; }
}

@media (prefers-reduced-motion: reduce) {
    .book-journey-halo,
    .book-journey-stars::before,
    .book-journey-stars::after { animation: none !important; }

    .book-volume,
    .book-front-cover,
    .book-back-cover,
    .book-leaf,
    .book-shadow { transition: none !important; }
}
