:root{--pb-midnight:#121827;--pb-slate:#1b2231;--pb-bluegray:#2b3548;--pb-brass:#c79a57;--pb-brass-light:#e2bc78;--pb-parchment:#f4f1ec;--pb-heading:#f4f1ec;--pb-mist:#f4f1ec;--pb-border:rgba(199,154,87,.68)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--pb-midnight);color:var(--pb-parchment)}h1,h2,h3,h4,h5,h6{color:var(--pb-heading)}a{transition:color .2s ease,border-color .2s ease,background .2s ease}.alignwide{width:min(1180px,calc(100% - 3rem));margin-inline:auto}.pb-site-header{border-bottom:1px solid var(--pb-border);background:#0f1523}.pb-header-inner{min-height:88px}.pb-brand a{font-family:Spectral,serif;color:var(--pb-brass-light);font-size:clamp(1.55rem,2.8vw,2.25rem);letter-spacing:.045em;font-weight:400}.pb-brand a:after{content:'Stories That Endure';display:block;font:400 .62rem/1.4 Roboto,sans-serif;color:var(--pb-parchment);letter-spacing:.32em;text-transform:uppercase;margin-top:.18rem}.pb-main-nav{font-family:Roboto,sans-serif;text-transform:uppercase}.pb-main-nav a{color:var(--pb-parchment)!important}.pb-main-nav a:hover{color:var(--pb-brass-light)!important}.pb-site-footer{border-top:1px solid var(--pb-border);padding:2rem 0;background:#0f1523}.pb-standard-main{padding-block:5rem}.pb-section{padding:4.25rem 0;background:radial-gradient(circle at 50% 20%,#1c2738 0,var(--pb-midnight) 64%)}.pb-section__inner{position:relative}.pb-section-heading{text-align:center;margin-bottom:2.4rem}.pb-section-heading h2{margin:.15rem 0;font-size:2.2rem;text-transform:uppercase;letter-spacing:.02em}.pb-section-heading p{color:var(--pb-brass-light);margin:.5rem 0}.pb-heading-rule{display:inline-flex;align-items:center;width:120px;color:var(--pb-brass);vertical-align:middle}.pb-heading-rule:before,.pb-heading-rule:after{content:'';height:1px;background:var(--pb-brass);flex:1}.pb-heading-rule span{font-size:.7rem;margin:0 .35rem}.pb-section-heading .pb-heading-rule,.pb-section-heading h2{display:inline-flex}.pb-button{display:inline-block;border:1px solid var(--pb-brass);color:var(--pb-parchment);padding:.85rem 1.35rem;font:500 .78rem/1 Roboto,sans-serif;letter-spacing:.08em;text-transform:uppercase}.pb-button:hover{background:rgba(199,154,87,.16);color:var(--pb-brass-light)}.pb-text-link{font:400 .84rem Roboto,sans-serif;color:var(--pb-brass-light)}.pb-kicker{font:500 .76rem Roboto,sans-serif;text-transform:uppercase;letter-spacing:.18em;color:var(--pb-brass-light)}.pb-ornament{color:var(--pb-brass);display:flex;align-items:center}.pb-ornament--line{width:115px;margin:1rem 0 1.3rem}.pb-ornament--line:before,.pb-ornament--line:after{content:'';height:1px;background:currentColor;flex:1}.pb-ornament--line span{padding:0 .35rem}.pb-ornament--crown{width:135px;justify-content:center;margin-bottom:.7rem}.pb-ornament--crown:before,.pb-ornament--crown:after{content:'';height:1px;background:currentColor;flex:1}.pb-ornament--crown span{border:1px solid currentColor;transform:rotate(45deg);width:22px;height:22px;display:grid;place-items:center;margin:0 .65rem;font-size:.6rem}.pb-ornament--crown span::first-letter{transform:rotate(-45deg)}
.pb-hero{min-height:620px;position:relative;background-color:#111a23;background-size:cover;background-position:center;border-bottom:1px solid var(--pb-border);display:flex;align-items:center}.pb-hero__shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,14,20,.76) 0%,rgba(8,14,20,.48) 43%,rgba(8,14,20,.08) 78%),linear-gradient(0deg,rgba(8,14,20,.28),transparent 50%)}.pb-hero__inner{position:relative;z-index:2;padding-block:5rem}.pb-hero h1{font-size:clamp(3.4rem,7vw,5.6rem);font-weight:400;letter-spacing:.01em;margin:.1rem 0;text-transform:uppercase}.pb-hero__subtitle{font-family:Spectral,serif;text-transform:uppercase;letter-spacing:.14em;color:var(--pb-brass-light);font-size:1.2rem;margin:.5rem 0}.pb-hero__copy{max-width:420px;font-size:1.08rem}.pb-hero__copy p{margin:0 0 1.5rem}
.pb-book-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3rem;max-width:820px;margin:0 auto}.pb-book{text-align:center}.pb-book__cover{aspect-ratio:2/3;border:1px solid rgba(224,216,205,.2);box-shadow:0 15px 35px rgba(0,0,0,.35);overflow:hidden;background:#141b22}.pb-book__cover img{width:100%;height:100%;object-fit:cover}.pb-book h3{color:var(--pb-brass-light);font-size:1.2rem;margin:1rem 0 .1rem}.pb-book p{margin:.1rem 0 .5rem}.pb-cover-placeholder{height:100%;display:grid;place-items:center;padding:1.5rem;background:linear-gradient(160deg,#1a2732,#0c1319 65%);color:var(--pb-parchment);font-size:1.7rem;text-transform:uppercase;letter-spacing:.08em}.pb-section-action{text-align:center;margin:2rem 0 0}
.pb-serial__panel{border:1px solid var(--pb-border);background:linear-gradient(135deg,rgba(22,33,43,.97),rgba(10,16,22,.97));display:grid;grid-template-columns:minmax(220px,34%) 1fr;min-height:420px;box-shadow:0 20px 60px rgba(0,0,0,.2)}.pb-serial__cover{padding:2.2rem;display:flex;align-items:center;justify-content:center}.pb-serial__cover img,.pb-serial__cover .pb-cover-placeholder{width:min(100%,270px);height:auto;aspect-ratio:2/3;object-fit:cover;box-shadow:0 20px 45px rgba(0,0,0,.35)}.pb-serial__content{padding:3.5rem 4rem;align-self:center}.pb-serial__content h2{font-size:2.4rem;margin:.3rem 0}.pb-serial__latest{font:500 .78rem Roboto,sans-serif;color:var(--pb-brass-light);text-transform:uppercase;letter-spacing:.06em}.pb-serial__copy{max-width:620px}.pb-serial--card .pb-serial__panel{grid-template-columns:1fr;position:relative;overflow:hidden;min-height:440px}.pb-serial--card .pb-serial__cover{position:absolute;right:0;top:0;bottom:0;width:42%;opacity:.35;filter:saturate(.8)}.pb-serial--card .pb-serial__cover img,.pb-serial--card .pb-serial__cover .pb-cover-placeholder{width:100%;height:100%;max-width:none;aspect-ratio:auto;object-fit:cover;box-shadow:none}.pb-serial--card .pb-serial__content{position:relative;z-index:2;width:68%;padding:4rem}
.pb-split-panel{border:1px solid var(--pb-border);display:grid;grid-template-columns:1fr 1fr;min-height:360px;background:#111a22}.pb-split-panel__copy{padding:3rem;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}.pb-split-panel__copy h2,.pb-author__content h2{font-size:2rem;text-transform:uppercase;margin:0}.pb-split-panel__image{min-height:360px}.pb-split-panel__image img{width:100%;height:100%;object-fit:cover}.pb-split-panel--image-left .pb-split-panel__image{order:-1}.pb-image-placeholder{height:100%;display:grid;place-items:center;background:linear-gradient(150deg,#24323e,#111820);color:var(--pb-mist)}
.pb-author__panel{border:1px solid var(--pb-border);min-height:340px;display:grid;grid-template-columns:38% 1fr;background:#111a22}.pb-author__portrait{display:grid;place-items:center;padding:2.3rem}.pb-author__portrait img,.pb-portrait-placeholder{width:190px;height:190px;border-radius:50%;border:1px solid var(--pb-brass);object-fit:cover}.pb-portrait-placeholder{background:radial-gradient(circle at 50% 35%,#4a535b,#17212a 58%,#0b1117)}.pb-author__content{padding:3rem;display:flex;flex-direction:column;justify-content:center;align-items:flex-start}.pb-author__content p{max-width:510px}
.pb-newsletter{padding:2.2rem 0;background:#14212b;border-top:1px solid var(--pb-border);border-bottom:1px solid rgba(224,216,205,.1)}.pb-newsletter__inner{display:grid;grid-template-columns:auto 260px 1fr;gap:2rem;align-items:center}.pb-newsletter__icon{width:72px;height:72px;border:1px solid var(--pb-brass);border-radius:50%;display:grid;place-items:center;color:var(--pb-brass-light);font-size:1.5rem}.pb-newsletter h2{font-size:1.2rem;text-transform:uppercase;margin:0}.pb-newsletter p{margin:.35rem 0}.pb-newsletter__placeholder{display:flex}.pb-newsletter__placeholder span{flex:1;border:1px solid rgba(224,216,205,.25);padding:.8rem 1rem;color:var(--pb-mist);font:400 .8rem Roboto,sans-serif}.pb-newsletter__placeholder button{border:0;background:var(--pb-brass);color:var(--pb-midnight);padding:.8rem 1.7rem;text-transform:uppercase;letter-spacing:.06em}
@media(max-width:800px){.alignwide{width:min(100% - 2rem,1180px)}.pb-header-inner{padding-block:1rem}.pb-hero{min-height:520px}.pb-hero__shade{background:rgba(11,16,29,.58)}.pb-book-grid{grid-template-columns:1fr;max-width:320px}.pb-serial__panel,.pb-split-panel,.pb-author__panel{grid-template-columns:1fr}.pb-serial__cover{padding-bottom:0}.pb-serial__content{padding:2rem}.pb-serial--card .pb-serial__cover{position:absolute;width:100%;opacity:.18}.pb-serial--card .pb-serial__content{width:100%;padding:2.5rem}.pb-split-panel__image{min-height:300px}.pb-author__portrait{padding-bottom:0}.pb-newsletter__inner{grid-template-columns:auto 1fr}.pb-newsletter__form{grid-column:1/-1}.pb-heading-rule{width:65px}}

/* Homepage paired Library + Author cards */
.pb-home-duo{padding:4.25rem 0;background:radial-gradient(circle at 50% 20%,#1c2738 0,var(--pb-midnight) 64%)}
.pb-home-duo>.wp-block-columns{margin:0 auto;gap:0;align-items:stretch}
.pb-home-duo>.wp-block-columns>.wp-block-column{display:flex}
.pb-home-duo .wp-block-column>.pb-section{padding:0;background:none;width:100%;display:flex}
.pb-home-duo .wp-block-column>.pb-section>.pb-section__inner{width:100%;margin:0;height:100%}
.pb-home-duo .pb-split-panel,.pb-home-duo .pb-author__panel{height:100%;min-height:390px}
.pb-home-duo .wp-block-column:first-child .pb-split-panel{border-right:0}
@media(max-width:900px){.pb-home-duo>.wp-block-columns{gap:1.25rem;flex-wrap:wrap}.pb-home-duo>.wp-block-columns>.wp-block-column{flex-basis:100%!important}.pb-home-duo .wp-block-column:first-child .pb-split-panel{border-right:1px solid var(--pb-border)}}


/* Width controls */
.pb-width{margin-inline:auto}
.pb-width--content{width:min(760px,calc(100% - 3rem))}
.pb-width--wide{width:min(1180px,calc(100% - 3rem))}
.pb-width--full{width:100%}

/* Custom Patrick Bran blocks stretch to equal height when placed in Columns. */
.wp-block-columns>.wp-block-column{align-self:stretch}
.wp-block-columns>.wp-block-column>.pb-section{width:100%;height:100%;display:flex}
.wp-block-columns>.wp-block-column>.pb-section>.pb-section__inner{width:100%;height:100%}
.wp-block-columns>.wp-block-column .pb-split-panel,
.wp-block-columns>.wp-block-column .pb-author__panel{height:100%}

@media(max-width:800px){
}


/* v1.1.7 — alignment behavior without changing the established v1.1.5 proportions. */
.wp-block-columns:not(.alignwide):not(.alignfull){
  width:min(1180px,calc(100% - 3rem));
  margin-left:auto;
  margin-right:auto;
}
.wp-block-columns.alignfull{width:100%;max-width:none;margin-left:0;margin-right:0}

/* Full alignment expands the actual Patrick Bran content panel, not only its section background. */
.wp-block-patrick-bran-book-grid.alignfull > .pb-section__inner,
.wp-block-patrick-bran-serial-fiction.alignfull > .pb-section__inner,
.wp-block-patrick-bran-image-text.alignfull > .pb-section__inner,
.wp-block-patrick-bran-author-intro.alignfull > .pb-section__inner{
  width:100%;
  max-width:none;
  margin-left:0;
  margin-right:0;
}
.wp-block-patrick-bran-book-grid.alignfull .pb-book-grid{max-width:none;padding-left:1.5rem;padding-right:1.5rem}

/* A Patrick Bran block inside a Column fills that column; the Columns block owns the pair's width. */
.wp-block-column > .wp-block-patrick-bran-image-text,
.wp-block-column > .wp-block-patrick-bran-author-intro,
.wp-block-column > .wp-block-patrick-bran-book-grid,
.wp-block-column > .wp-block-patrick-bran-serial-fiction,
.wp-block-column > .wp-block-patrick-bran-hero,
.wp-block-column > .wp-block-patrick-bran-newsletter{width:100%;max-width:none;margin:0}


/* Motion system — v1.1.23
   Uses the existing rendered elements directly: no JS-created wrappers, no layout mutation. */
@media (prefers-reduced-motion: no-preference) {

  /* HERO --------------------------------------------------------------- */
  .pb-hero {
    overflow: hidden;
    background-image: none !important;
    background-color: #111a23;
    isolation: isolate;
  }

  .pb-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: var(--pb-hero-bg);
    background-size: cover;
    background-position: center;
    opacity: 0;
    animation: pbHeroImageIn 1.8s ease-out .35s forwards;
    z-index: 0;
    pointer-events: none;
  }

  .pb-hero__shade { z-index: 1; }
  .pb-hero__inner { z-index: 2; }

  .pb-hero .pb-ornament--crown,
  .pb-hero h1,
  .pb-hero__subtitle,
  .pb-hero .pb-ornament--line,
  .pb-hero__copy,
  .pb-hero .pb-button {
    opacity: 0;
    transform: translateY(28px);
    animation: pbHeroTextUp 1.18s cubic-bezier(.16,.72,.24,1) forwards;
  }

  .pb-hero .pb-ornament--crown,
  .pb-hero h1,
  .pb-hero__subtitle { animation-delay: 1.38s; }

  .pb-hero .pb-ornament--line,
  .pb-hero__copy { animation-delay: 1.66s; }

  .pb-hero .pb-button { animation-delay: 1.94s; }

  /* SCROLL STAGE 1: headings + filigree ------------------------------- */
  /* Prep selectors apply before footer JS runs, preventing the prior blink. */
  html.pb-motion-prep .pb-books .pb-section-heading,
  html.pb-motion-ready .pb-scroll-heading,
  html.pb-motion-prep .pb-serial__content > .pb-kicker,
  html.pb-motion-prep .pb-serial__content > h2,
  html.pb-motion-prep .pb-serial__content > .pb-ornament--line,
  html.pb-motion-prep .pb-split-panel__copy > h2,
  html.pb-motion-prep .pb-split-panel__copy > .pb-ornament--line,
  html.pb-motion-prep .pb-author__content > h2,
  html.pb-motion-prep .pb-author__content > .pb-ornament--line,
  html.pb-motion-prep .pb-newsletter__copy > h2,
  html.pb-motion-ready .pb-scroll-heading-piece {
    opacity: 0;
    transform: translateY(28px);
  }

  html.pb-motion-ready .pb-scroll-heading,
  html.pb-motion-ready .pb-scroll-heading-piece {
    transition:
      opacity 1.2s ease-out,
      transform 1.2s cubic-bezier(.16,.72,.24,1);
  }

  html.pb-motion-ready .pb-scroll-heading.is-visible,
  html.pb-motion-ready .pb-scroll-heading-piece.is-visible {
    opacity: 1;
    transform: translateY(0);
  }

  /* Filigree lines open as the heading settles. */
  html.pb-motion-prep .pb-books .pb-section-heading .pb-heading-rule::before,
  html.pb-motion-prep .pb-books .pb-section-heading .pb-heading-rule::after,
  html.pb-motion-ready .pb-scroll-heading .pb-heading-rule::before,
  html.pb-motion-ready .pb-scroll-heading .pb-heading-rule::after,
  html.pb-motion-ready .pb-scroll-heading-piece.pb-ornament--line::before,
  html.pb-motion-ready .pb-scroll-heading-piece.pb-ornament--line::after {
    transform-origin: center;
    transform: scaleX(.18);
    opacity: .18;
    transition:
      transform 1.2s cubic-bezier(.16,.72,.24,1),
      opacity 1.2s ease-out;
  }

  html.pb-motion-ready .pb-scroll-heading.is-visible .pb-heading-rule::before,
  html.pb-motion-ready .pb-scroll-heading.is-visible .pb-heading-rule::after,
  html.pb-motion-ready .pb-scroll-heading-piece.pb-ornament--line.is-visible::before,
  html.pb-motion-ready .pb-scroll-heading-piece.pb-ornament--line.is-visible::after {
    transform: scaleX(1);
    opacity: 1;
  }

  /* SCROLL STAGE 2: body + buttons fade only -------------------------- */
  html.pb-motion-prep .pb-serial__latest,
  html.pb-motion-prep .pb-serial__copy,
  html.pb-motion-prep .pb-serial__content > .pb-button,
  html.pb-motion-prep .pb-split-panel__copy > p,
  html.pb-motion-prep .pb-split-panel__copy > .pb-button,
  html.pb-motion-prep .pb-author__content > p,
  html.pb-motion-prep .pb-author__content > .pb-button,
  html.pb-motion-prep .pb-newsletter__copy > p,
  html.pb-motion-prep .pb-newsletter__form,
  html.pb-motion-ready .pb-scroll-content {
    opacity: 0;
  }

  html.pb-motion-ready .pb-scroll-content {
    transition: opacity 1s ease;
  }

  html.pb-motion-ready .pb-scroll-content.is-visible {
    opacity: 1;
  }

  /* FEATURE / SERIAL VISUALS ------------------------------------------ */
  html.pb-motion-prep .pb-book,
  html.pb-motion-prep .pb-serial__cover,
  html.pb-motion-ready .pb-scroll-visual {
    opacity: 0;
    transform: translateY(48px);
  }

  html.pb-motion-ready .pb-scroll-visual {
    transition:
      opacity 1.15s cubic-bezier(.16,.72,.24,1),
      transform 1.15s cubic-bezier(.16,.72,.24,1);
  }

  html.pb-motion-ready .pb-scroll-visual.is-visible {
    opacity: 1;
    transform: translateY(0);
  }

  /* Keep the approved book hover, with 6px travel. */
  .pb-book {
    transition:
      opacity 1.15s cubic-bezier(.16,.72,.24,1),
      transform .55s cubic-bezier(.16,.72,.24,1),
      box-shadow .55s ease;
  }

  html.pb-motion-ready .pb-book.pb-scroll-visual.is-visible:hover,
  .pb-book:hover {
    transform: translateY(-6px);
  }

  .pb-book__cover {
    transition:
      transform .55s cubic-bezier(.16,.72,.24,1),
      box-shadow .55s ease,
      border-color .8s ease-in-out;
  }

  .pb-book:hover .pb-book__cover {
    transform: scale(1.024);
    box-shadow: 0 24px 48px rgba(0,0,0,.44);
    border-color: rgba(226,188,120,.82);
  }

  /* BORDER PULSE ------------------------------------------------------- */
  .pb-split-panel,
  .pb-author__panel,
  .pb-serial__panel {
    transition:
      border-color .8s ease-in-out,
      box-shadow .8s ease-in-out;
  }

  .pb-split-panel:hover,
  .pb-author__panel:hover,
  .pb-serial__panel:hover {
    border-color: rgba(226,188,120,.95);
    box-shadow: 0 0 0 1px rgba(226,188,120,.10), 0 0 16px rgba(199,154,87,.06);
  }

  .pb-hero,
  .pb-newsletter {
    transition: border-color .8s ease-in-out, box-shadow .8s ease-in-out;
  }

  .pb-hero:hover,
  .pb-newsletter:hover {
    border-color: rgba(226,188,120,.72);
    box-shadow: inset 0 -1px 0 rgba(226,188,120,.12);
  }

  .pb-button,
  .pb-text-link,
  .pb-main-nav a {
    transition:
      color .28s ease,
      background-color .28s ease,
      border-color .28s ease,
      transform .28s ease,
      text-shadow .28s ease;
  }

  .pb-button:hover { transform: translateY(-2px); }

  .pb-text-link:hover,
  .pb-main-nav a:hover {
    text-shadow: 0 0 12px rgba(226,188,120,.22);
  }

  @keyframes pbHeroImageIn {
    from { opacity: 0; }
    to   { opacity: 1; }
  }

  @keyframes pbHeroTextUp {
    from { opacity: 0; transform: translateY(28px); }
    to   { opacity: 1; transform: translateY(0); }
  }
}

@media (prefers-reduced-motion: reduce) {
  .pb-hero { background-image: var(--pb-hero-bg) !important; }
  .pb-hero::before { display: none !important; }

  .pb-hero .pb-ornament--crown,
  .pb-hero h1,
  .pb-hero__subtitle,
  .pb-hero .pb-ornament--line,
  .pb-hero__copy,
  .pb-hero .pb-button,
  .pb-scroll-heading,
  .pb-scroll-heading-piece,
  .pb-scroll-content,
  .pb-scroll-visual {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }
}


/* v1.1.23 — featured book hover refinement */
@media (prefers-reduced-motion: no-preference) {
  /* Keep the card itself and all text/link content stationary. */
  html.pb-motion-ready .pb-book.pb-scroll-visual.is-visible:hover,
  .pb-book:hover {
    transform: translateY(0) !important;
  }

  .pb-book__cover {
    transform: translateY(0) scale(1) !important;
    transition:
      transform .48s cubic-bezier(.16,.72,.24,1),
      box-shadow .55s ease,
      border-color .8s ease-in-out !important;
  }

  .pb-book:hover .pb-book__cover {
    transform: translateY(-7px) scale(1) !important;
    box-shadow: 0 24px 48px rgba(0,0,0,.44);
    border-color: rgba(226,188,120,.82);
  }

  .pb-book__content,
  .pb-book__title,
  .pb-book__meta,
  .pb-book__link,
  .pb-book p,
  .pb-book a {
    transform: none !important;
  }
}


/* v1.1.23 — softer hover travel */
@media (prefers-reduced-motion: no-preference) {
  .pb-button {
    transition:
      color .28s ease,
      background-color .28s ease,
      border-color .28s ease,
      transform .42s cubic-bezier(.16,.72,.24,1),
      text-shadow .28s ease !important;
  }

  .pb-button:hover {
    transform: translateY(-1px) !important;
  }

  .pb-book__cover {
    transition:
      transform .5s cubic-bezier(.16,.72,.24,1),
      box-shadow .55s ease,
      border-color .8s ease-in-out !important;
  }

  .pb-book:hover .pb-book__cover {
    transform: translateY(-4px) scale(1) !important;
  }
}


/* v1.1.26 — Book Page pattern ----------------------------------------- */
.pb-book-page__section {
  margin-block: 0;
  padding-block: 4.75rem;
}
.pb-book-page__section + .pb-book-page__section {
  padding-top: 1.25rem;
}
.pb-book-page__hero {
  padding-top: 5.5rem;
  padding-bottom: 4.5rem;
}
.pb-book-page__hero-columns,
.pb-book-page__cta-columns,
.pb-book-page__story-columns,
.pb-book-page__works {
  gap: 3rem;
}
.pb-book-page__cover {
  margin: 0;
}
.pb-book-page__cover img {
  display: block;
  width: min(100%, 340px);
  margin-inline: auto;
  height: auto;
  border: 1px solid rgba(224,216,205,.18);
  box-shadow: 0 22px 54px rgba(0,0,0,.38);
}
.pb-book-page__title {
  font-size: clamp(3rem, 6vw, 4.8rem);
  margin: .2rem 0 .75rem;
}
.pb-book-page__tagline {
  color: var(--pb-brass-light);
  font-size: 1.17rem;
  margin: 0 0 1rem;
}
.pb-book-page__description {
  max-width: 700px;
  font-size: 1.08rem;
}
.pb-book-page__facts,
.pb-book-page__online-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .3rem .8rem;
  align-items: center;
  font-size: .92rem;
  opacity: .92;
}
.pb-book-page__facts span,
.pb-book-page__online-meta span {
  color: var(--pb-brass);
}
.pb-book-page__cta-columns {
  align-items: stretch;
}
.pb-book-page__cta-column {
  display: flex;
}
.pb-book-page__cta-card {
  width: 100%;
  min-height: 320px;
  padding: 2.6rem 2.75rem;
  border: 1px solid var(--pb-border);
  background: linear-gradient(135deg, rgba(22,33,43,.86), rgba(10,16,22,.92));
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.pb-book-page__cta-card h2 {
  font-size: 2rem;
  margin: .25rem 0 .8rem;
}
.pb-book-page__cta-card .wp-block-buttons {
  margin-top: 1.2rem;
}
.pb-book-page__retailer-buttons {
  align-items: center;
}
.pb-book-page__retailer-note {
  margin-top: 1rem;
  font-size: .86rem;
  color: var(--pb-brass-light);
}
.pb-book-page__primary-button .wp-block-button__link {
  background: var(--pb-brass);
  border-color: var(--pb-brass);
  color: var(--pb-midnight);
  min-width: min(100%, 320px);
  text-align: center;
}
.pb-book-page__primary-button .wp-block-button__link:hover {
  background: var(--pb-brass-light);
  border-color: var(--pb-brass-light);
  color: var(--pb-midnight);
}
.pb-book-page .wp-block-button__link,
.pb-book-page__section .wp-block-button__link {
  border: 1px solid var(--pb-brass);
  background: transparent;
  color: var(--pb-parchment);
  padding: .85rem 1.35rem;
  font: 500 .78rem/1 Roboto, sans-serif;
  letter-spacing: .08em;
  text-transform: uppercase;
  border-radius: 0;
  transition:
    color .28s ease,
    background-color .28s ease,
    border-color .28s ease,
    transform .42s cubic-bezier(.16,.72,.24,1),
    text-shadow .28s ease;
}
.pb-book-page .wp-block-button__link:hover,
.pb-book-page__section .wp-block-button__link:hover {
  color: var(--pb-brass-light);
  background: rgba(199,154,87,.16);
  transform: translateY(-1px);
}
.pb-book-page__story-columns {
  border: 1px solid var(--pb-border);
  background: linear-gradient(135deg, rgba(22,33,43,.82), rgba(10,16,22,.9));
  overflow: hidden;
}
.pb-book-page__story-copy {
  padding: 3.4rem;
}
.pb-book-page__story-copy h2 {
  font-size: 2rem;
  margin: .25rem 0 1rem;
}
.pb-book-page__story-visual,
.pb-book-page__story-image {
  margin: 0;
  min-height: 390px;
}
.pb-book-page__story-image img {
  width: 100%;
  height: 100%;
  min-height: 390px;
  object-fit: cover;
  display: block;
}
.pb-book-page__more {
  padding-block: 5rem;
}
.pb-book-page__more-inner {
  width: min(1180px, calc(100% - 3rem));
}
.pb-book-page__section-heading {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 0 0 2.5rem;
  font-size: 2rem;
}
.pb-book-page__section-heading::after {
  content: "";
  height: 1px;
  background: var(--pb-brass);
  flex: 1;
  opacity: .8;
}
.pb-book-page__work {
  min-height: 230px;
  padding: 1.8rem;
  border-top: 1px solid rgba(224,216,205,.12);
}
.pb-book-page__work h3 {
  color: var(--pb-brass-light);
  margin-top: 0;
}
.pb-book-page__work .wp-block-buttons {
  margin-top: 1.4rem;
}

/* Let one purchase/read card fill the row cleanly if the other column is removed. */
.pb-book-page__cta-columns > .wp-block-column:only-child {
  flex-basis: 100% !important;
}

/* Match the homepage's restrained border pulse. */
@media (prefers-reduced-motion: no-preference) {
  .pb-book-page__cta-card,
  .pb-book-page__story-columns {
    transition:
      border-color .8s ease-in-out,
      box-shadow .8s ease-in-out;
  }

  .pb-book-page__cta-card:hover,
  .pb-book-page__story-columns:hover {
    border-color: rgba(226,188,120,.95);
    box-shadow: 0 0 0 1px rgba(226,188,120,.10), 0 0 16px rgba(199,154,87,.06);
  }
}

@media (max-width: 900px) {
  .pb-book-page__section {
    padding-block: 3.5rem;
  }
  .pb-book-page__hero-columns,
  .pb-book-page__cta-columns,
  .pb-book-page__story-columns,
  .pb-book-page__works {
    flex-wrap: wrap !important;
    gap: 1.5rem;
  }
  .pb-book-page__hero-columns > .wp-block-column,
  .pb-book-page__cta-columns > .wp-block-column,
  .pb-book-page__story-columns > .wp-block-column,
  .pb-book-page__works > .wp-block-column {
    flex-basis: 100% !important;
  }
  .pb-book-page__story-copy {
    padding: 2.25rem;
  }
}

@media (max-width: 600px) {
  .pb-book-page__section {
    padding-block: 2.75rem;
  }
  .pb-book-page__hero {
    padding-top: 3.5rem;
  }
  .pb-book-page__cta-card {
    min-height: 0;
    padding: 2rem 1.5rem;
  }
  .pb-book-page__story-copy {
    padding: 2rem 1.5rem;
  }
  .pb-book-page__more-inner {
    width: min(100% - 2rem, 1180px);
  }
}


/* v1.1.27 — standard Page alignment fix.
 *
 * The Page template previously constrained the entire Post Content block to
 * contentSize, preventing nested alignwide/alignfull groups from expanding.
 * Post Content now has a default layout; these rules preserve readable normal
 * content while allowing native Gutenberg Wide and Full alignments to work.
 */
body.page:not(.home) .wp-block-post-content {
  width: 100%;
  max-width: none;
}

body.page:not(.home) .wp-block-post-content > :where(
  :not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright)
) {
  width: min(760px, calc(100% - 3rem));
  margin-left: auto;
  margin-right: auto;
}

body.page:not(.home) .wp-block-post-content > .alignwide {
  width: min(1180px, calc(100% - 3rem));
  max-width: none;
  margin-left: auto;
  margin-right: auto;
}

body.page:not(.home) .wp-block-post-content > .alignfull {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}

.pb-page-title-wrap {
  width: min(1180px, calc(100% - 3rem));
  margin-inline: auto;
}

@media (max-width: 800px) {
  body.page:not(.home) .wp-block-post-content > :where(
    :not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright)
  ),
  body.page:not(.home) .wp-block-post-content > .alignwide,
  .pb-page-title-wrap {
    width: min(100% - 2rem, 1180px);
  }
}


/* v1.1.28 — titleless Book Page template */
.pb-standard-main--book {
  padding-top: 0;
}


/* v1.1.29 — page display + Book Page alignment/section rhythm -------- */

/* Gutenberg Page Display toggle. */
body.pb-hide-page-title .pb-page-title-wrap {
  display: none;
}

/*
 * Book landing pages provide their own vertical rhythm. This also prevents
 * the generic Page wrapper from adding a large empty band below a full-width
 * newsletter before the footer.
 */
body.page:has(.pb-book-page__hero) .pb-standard-main {
  padding-top: 0;
  padding-bottom: 0;
}

/* Top-level Book Page sections genuinely honor Gutenberg Wide / Full. */
body.page:not(.home) .wp-block-post-content > .pb-book-page__section.alignfull {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}
body.page:not(.home) .wp-block-post-content > .pb-book-page__section.alignwide {
  width: min(1180px, calc(100% - 3rem));
  max-width: none;
  margin-left: auto;
  margin-right: auto;
}

/* Section bands mirror the homepage: backgrounds belong to the section,
   while inner Columns/Groups own the 1180px content width. */
.pb-book-page__section {
  padding-block: 5rem;
}
.pb-book-page__hero {
  background: radial-gradient(circle at 50% 20%, #1c2738 0, var(--pb-midnight) 68%);
}
.pb-book-page__availability {
  background: var(--pb-slate);
}
.pb-book-page__story {
  background: var(--pb-midnight);
}
.pb-book-page__more {
  background: var(--pb-bluegray);
}

/* Keep inner layout wide even when an outer section is Full.
   If the outer section itself is changed to Wide, these naturally fit inside it. */
.pb-book-page__section > .alignwide,
.pb-book-page__section > .wp-block-columns.alignwide,
.pb-book-page__more-inner {
  width: min(1180px, calc(100% - 3rem));
  max-width: none;
  margin-left: auto;
  margin-right: auto;
}

/* The About section is intentionally open rather than another gold box. */
.pb-book-page__story-columns {
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  overflow: visible;
}
.pb-book-page__story-columns:hover {
  border-color: transparent !important;
  box-shadow: none !important;
}
.pb-book-page__story-copy {
  padding: 2rem 3.5rem 2rem 0;
}
.pb-book-page__story-image img {
  border: 1px solid rgba(224,216,205,.14);
  box-shadow: 0 20px 48px rgba(0,0,0,.28);
}

/* CTA cards remain the deliberate bordered/pulsing elements. */
.pb-book-page__cta-card {
  background: rgba(15,21,35,.48);
}

/* The newsletter should terminate the page exactly as it does on home. */
body.page:has(.pb-book-page__hero) .wp-block-post-content > .wp-block-patrick-bran-newsletter:last-child {
  margin-bottom: 0;
}

/* Book page H1 is the semantic visible page title when the WP title is hidden. */
.pb-book-page__title {
  text-wrap: balance;
}

@media (max-width: 900px) {
  .pb-book-page__section {
    padding-block: 4rem;
  }
  .pb-book-page__story-copy {
    padding: 1rem 0 2rem;
  }
}

@media (max-width: 800px) {
  body.page:not(.home) .wp-block-post-content > .pb-book-page__section.alignwide,
  .pb-book-page__section > .alignwide,
  .pb-book-page__section > .wp-block-columns.alignwide,
  .pb-book-page__more-inner {
    width: min(100% - 2rem, 1180px);
  }
}


/* v1.1.30 — standard Pages use homepage-style block flow --------------- */

/*
 * The generic Page template no longer adds padding around the entire post.
 * Individual sections own their spacing, exactly as on the homepage.
 */
.pb-standard-main {
  padding-block: 0;
}

/* The automatic page title, when shown, gets its own section spacing. */
.pb-page-title-wrap {
  width: min(1180px, calc(100% - 3rem));
  margin-inline: auto;
  padding-top: 4.25rem;
  padding-bottom: 2.4rem;
}

/* Gutenberg Page Display toggle added in 1.1.29 remains the only special
   treatment needed for book landing pages. */
body.pb-hide-page-title .pb-page-title-wrap {
  display: none;
}

/* Remove the now-obsolete special Book template behavior. */
.pb-standard-main--book {
  padding-top: 0;
}

/* Standard core alignment behavior on ordinary Pages. */
body.page:not(.home) .wp-block-post-content {
  width: 100%;
  max-width: none;
}
body.page:not(.home) .wp-block-post-content > .alignwide {
  width: min(1180px, calc(100% - 3rem));
  max-width: none;
  margin-left: auto;
  margin-right: auto;
}
body.page:not(.home) .wp-block-post-content > .alignfull {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}

/* Book pattern uses the same full-width section + wide-inner structure
   as the homepage. */
.pb-book-page__section {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 4.25rem 0;
}
.pb-book-page__section > .pb-section__inner {
  width: min(1180px, calc(100% - 3rem));
  max-width: none;
  margin-inline: auto;
}

/* Same palette shifts used by the rest of the site rather than gold boxes
   defining every section. */
.pb-book-page__hero {
  background: radial-gradient(circle at 50% 20%, #1c2738 0, var(--pb-midnight) 64%);
}
.pb-book-page__availability {
  background: var(--pb-deep-slate, #1b2231);
}
.pb-book-page__story {
  background: var(--pb-midnight);
}
.pb-book-page__more {
  background: var(--pb-blue-gray, #2b3548);
}

/* CTA cards are the intentionally framed elements. */
.pb-book-page__cta-card {
  min-height: 320px;
  border: 1px solid var(--pb-border);
  background: #111a22;
  padding: 2.75rem;
}

/* About the Story is open, like the homepage's larger image/text areas. */
.pb-book-page__story-columns {
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  overflow: visible;
}
.pb-book-page__story-columns:hover {
  border-color: transparent !important;
  box-shadow: none !important;
}
.pb-book-page__story-copy {
  padding: 2rem 3.5rem 2rem 0;
}

/* Newsletter spacing is now identical on a Page and the homepage because
   there is no enclosing page-level bottom padding. */
body.page:not(.home) .wp-block-post-content > .wp-block-patrick-bran-newsletter:last-child {
  margin-bottom: 0;
}

@media(max-width:800px) {
  .pb-page-title-wrap,
  body.page:not(.home) .wp-block-post-content > .alignwide,
  .pb-book-page__section > .pb-section__inner {
    width: min(100% - 2rem, 1180px);
  }
  .pb-book-page__story-copy {
    padding: 1rem 0 2rem;
  }
}


/* v1.1.31 — Book Page now follows the homepage's continuous background model. */

/* Every Book Page section uses the SAME outer background as .pb-section on home.
   The visible separation comes from spacing around the darker panels, not
   alternating full-width background bands. */
.pb-book-page__hero,
.pb-book-page__availability,
.pb-book-page__story,
.pb-book-page__more {
  background: radial-gradient(circle at 50% 20%, #1c2738 0, var(--pb-midnight) 64%) !important;
}

/* Keep visible homepage-style breathing room between the dark content elements. */
.pb-book-page__section {
  padding: 2.15rem 0 !important;
}
.pb-book-page__hero {
  padding-top: 4.25rem !important;
}
.pb-book-page__more {
  padding-bottom: 4.25rem !important;
}

/* Main Book Page content panels use the same darker-on-background relationship
   as the homepage panels. About the Story deliberately has no gold frame. */
.pb-book-page__panel {
  background: #111a22;
}
.pb-book-page__hero-panel {
  padding: 3.25rem;
  border: 1px solid var(--pb-border);
}
.pb-book-page__story-panel {
  padding: 0;
  border: 0;
  overflow: hidden;
}
.pb-book-page__more-panel {
  padding: 3.25rem;
  border: 0;
}

/* CTA blocks already are their own darker panels and remain the intentionally
   gold-framed pair. */
.pb-book-page__cta-card {
  background: #111a22 !important;
}

/* About the Story stays open and unboxed in gold, but still sits as a darker
   panel over the common homepage background. */
.pb-book-page__story-columns {
  background: #111a22 !important;
}

/* More Works uses dark work cards inside the darker panel without adding a
   second gold outline around every item. */
.pb-book-page__work {
  background: rgba(8, 14, 20, .34);
  padding: 2rem;
  min-height: 100%;
  border: 1px solid rgba(224,216,205,.10);
}

/* The newsletter remains the same actual homepage block, with no page-level
   spacing added below it. */
body.page:not(.home) .wp-block-post-content > .wp-block-patrick-bran-newsletter:last-child {
  margin-bottom: 0;
}

@media(max-width:900px) {
  .pb-book-page__section {
    padding: 1.5rem 0 !important;
  }
  .pb-book-page__hero {
    padding-top: 3rem !important;
  }
  .pb-book-page__more {
    padding-bottom: 3rem !important;
  }
  .pb-book-page__hero-panel,
  .pb-book-page__more-panel {
    padding: 2rem;
  }
}


/* v1.1.32 — full-width Book Page hero/story + header seam fix ---------- */

/*
 * WordPress can add its global block gap between the header template part and
 * the following main block. The design wants the first section to begin
 * directly at the header's bottom border on every template.
 */
.wp-site-blocks > header + main,
.wp-site-blocks > .wp-block-template-part + main,
header.wp-block-template-part + main {
  margin-block-start: 0 !important;
}

/*
 * Hero is a true full-width visual panel by default. Its content remains at
 * the site's normal 1180px wide measure.
 */
.pb-book-page__hero {
  padding-top: 0 !important;
}
.pb-book-page__hero-panel {
  width: 100% !important;
  max-width: none !important;
  margin-inline: 0 !important;
  padding: 3.25rem 0 !important;
}
.pb-book-page__hero-panel > .pb-book-page__hero-columns {
  width: min(1180px, calc(100% - 3rem)) !important;
  max-width: none !important;
  margin-inline: auto !important;
}

/*
 * About the Story is also a true full-width panel by default. The dark panel
 * spans the viewport while the copy/image composition stays aligned to the
 * same 1180px grid as the homepage.
 */
.pb-book-page__story-panel {
  width: 100% !important;
  max-width: none !important;
  margin-inline: 0 !important;
}
.pb-book-page__story-panel > .pb-book-page__story-columns {
  width: min(1180px, calc(100% - 3rem)) !important;
  max-width: none !important;
  margin-inline: auto !important;
}

/* Do not let the general Book Page wide-inner rule re-constrain panels that
   are explicitly set to Full in Gutenberg. */
.pb-book-page__section > .pb-book-page__panel.alignfull {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* The Book Page pattern inserts the existing newsletter as Full by default. */
body.page:not(.home) .wp-block-post-content > .wp-block-patrick-bran-newsletter.alignfull {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

@media(max-width:800px) {
  .pb-book-page__hero-panel > .pb-book-page__hero-columns,
  .pb-book-page__story-panel > .pb-book-page__story-columns {
    width: min(100% - 2rem, 1180px) !important;
  }
}


/* v1.1.33 — restore front-page widths + remove header/hero double line ---- */

/*
 * The static front page also carries WordPress's `page` body class. Generic
 * Page content-width rules must never apply to it. The earlier selectors are
 * now scoped to body.page:not(.home); these explicit safeguards keep the
 * homepage pattern at its original widths.
 */
body.home .wp-block-post-content {
  width: 100%;
  max-width: none;
}
body.home .wp-block-post-content > * {
  max-width: none;
}
body.home .wp-block-post-content > .wp-block-patrick-bran-hero,
body.home .wp-block-post-content > .wp-block-patrick-bran-book-grid,
body.home .wp-block-post-content > .wp-block-patrick-bran-serial-fiction,
body.home .wp-block-post-content > .pb-home-duo,
body.home .wp-block-post-content > .wp-block-patrick-bran-newsletter {
  width: 100%;
  margin-left: 0;
  margin-right: 0;
}

/* No theme block-gap is allowed between the header template part and main. */
.wp-site-blocks > main,
.wp-site-blocks > header + main,
.wp-site-blocks > .wp-block-template-part + main {
  margin-block-start: 0 !important;
  margin-top: 0 !important;
}

/*
 * The header already supplies the gold divider. The Book Page hero must not
 * add a second gold line at its top edge.
 */
.pb-book-page__hero-panel {
  border-top: 0 !important;
}


/* v1.1.34 — About the Story uses a true edge-reaching split panel -------- */

/*
 * About the Story should read like the homepage serial feature: the dark panel
 * spans full width, and the image is allowed to run to the panel's right edge
 * instead of being trapped inside the 1180px wide-content measure.
 */
.pb-book-page__story-panel {
  width: 100% !important;
  max-width: none !important;
  margin-inline: 0 !important;
  overflow: hidden;
}

.pb-book-page__story-panel > .pb-book-page__story-columns {
  width: 100% !important;
  max-width: none !important;
  margin-inline: 0 !important;
  gap: 0 !important;
  align-items: stretch !important;
}

.pb-book-page__story-copy {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 3.5rem 3rem;
}

.pb-book-page__story-copy-inner {
  width: min(100%, 566px);
  margin-left: auto;
  margin-right: 0;
}

.pb-book-page__story-visual {
  display: flex;
  min-height: 420px;
}

.pb-book-page__story-image {
  width: 100%;
  height: 100%;
  margin: 0 !important;
}

.pb-book-page__story-image img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

/* This supersedes the prior v1.1.32 rule that intentionally kept the story
   columns on the 1180px grid. */
.pb-book-page__story-panel > .pb-book-page__story-columns {
  width: 100% !important;
}

@media(max-width:900px) {
  .pb-book-page__story-panel > .pb-book-page__story-columns {
    width: 100% !important;
  }

  .pb-book-page__story-copy {
    padding: 2.5rem 1rem;
    justify-content: center;
  }

  .pb-book-page__story-copy-inner {
    width: min(100%, 760px);
    margin-inline: auto;
  }

  .pb-book-page__story-visual {
    min-height: 320px;
  }
}


/* v1.1.35 — About Story border behavior + newsletter/footer seam -------- */

/*
 * About the Story follows the same border logic as the homepage serial panel:
 * - Full width: only top and bottom gold rules remain visible.
 * - Wide/content width: the panel receives a complete gold frame.
 */
.pb-book-page__story-panel.alignfull {
  border-top: 1px solid var(--pb-border) !important;
  border-bottom: 1px solid var(--pb-border) !important;
  border-left: 0 !important;
  border-right: 0 !important;
}

.pb-book-page__story-panel:not(.alignfull) {
  border: 1px solid var(--pb-border) !important;
}

/*
 * The footer owns the single divider between the newsletter and footer.
 * Remove the newsletter's bottom rule, and remove any global block gap between
 * main content and the footer template part across the site.
 */
.pb-newsletter {
  border-bottom: 0 !important;
}

.wp-site-blocks > main + footer,
.wp-site-blocks > main + .wp-block-template-part,
.wp-site-blocks > .wp-block-group + footer.wp-block-template-part {
  margin-block-start: 0 !important;
  margin-top: 0 !important;
}

/* Guard against a final post-content block margin creating a visible strip. */
.wp-block-post-content > :last-child {
  margin-bottom: 0;
}


/* v1.1.36 — default Book Page hero artwork + cover frame ---------------- */

/*
 * The Book Page pattern now ships with a generic atmospheric hero background.
 * It remains replaceable in the editor; this styling simply makes the bundled
 * default behave like a restrained site-wide hero backdrop.
 */
.pb-book-page__hero {
  background-color: var(--pb-midnight) !important;
  background-size: cover !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
  position: relative;
}

.pb-book-page__hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(10, 16, 24, .18);
  pointer-events: none;
}

.pb-book-page__hero > * {
  position: relative;
  z-index: 1;
}

/* The book page now expects flat cover artwork rather than a rendered 3-D
   book mockup. Give that cover the same restrained gold framing language used
   elsewhere in the theme. */
.pb-book-page__cover {
  margin: 0;
}

.pb-book-page__cover img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--pb-border);
  box-shadow: 0 18px 40px rgba(0,0,0,.34);
}


/* v1.1.37 — repair Book Page hero default image + single cover border ---- */

/*
 * Keep the bundled default hero art out of serialized block markup.
 * Referencing it from the theme stylesheet avoids Gutenberg block-validation
 * mismatches and still gives every Book Page pattern instance the default.
 * global.css lives in assets/css, so ../images resolves within the theme.
 */
.pb-book-page__hero {
  background-image: url("../images/book-hero-background.png") !important;
}

/*
 * One border only: the figure owns the gold frame; the img itself is explicitly
 * borderless. This replaces the older image-border rule from v1.1.26.
 */
.pb-book-page__cover {
  width: min(100%, 340px);
  margin-inline: auto !important;
  border: 1px solid var(--pb-border) !important;
  padding: 0 !important;
  box-shadow: 0 22px 54px rgba(0,0,0,.38);
  overflow: hidden;
}

.pb-book-page__cover img {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
}


/* v1.1.38 — Book hero background belongs to the panel around the columns ---- */

/*
 * The previous version put the default image on the outer hero section, but
 * the full-width .pb-book-page__hero-panel sits over that section with its own
 * opaque background. Put the artwork on the actual Group that surrounds the
 * hero Columns—the same Group an editor targets when setting a background
 * manually.
 */
.pb-book-page__hero-panel {
  background-color: #111a22 !important;
  background-image:
    linear-gradient(rgba(10,16,24,.18), rgba(10,16,24,.18)),
    url("../images/book-hero-background.png") !important;
  background-size: cover !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
}

/* Do not also paint the image on the outer section. */
.pb-book-page__hero {
  background-image: none !important;
}

/*
 * A newly inserted pattern uses a generic placeholder image. That placeholder
 * previously contained a gold line in the pixels themselves. The asset has
 * been cleaned so this CSS border is now the only frame.
 */
.pb-book-page__cover {
  border: 1px solid var(--pb-border) !important;
}

.pb-book-page__cover img {
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
}


/* v1.1.39 — default About the Story image */
.pb-book-page__story-image,
.pb-book-page__story-image img {
  border: 0 !important;
  outline: 0 !important;
}
.pb-book-page__story-image img { box-shadow: none !important; }


/* v1.1.40 — Book Page mirrors the homepage motion language ------------- */
@media (prefers-reduced-motion: no-preference) {

  /* Book hero: cover + literary heading rise in, body follows softly. */
  html.pb-motion-prep .pb-book-page__cover,
  html.pb-motion-ready .pb-book-hero-visual,
  html.pb-motion-prep .pb-book-page__hero-copy > .pb-kicker,
  html.pb-motion-prep .pb-book-page__hero-copy > .pb-book-page__title,
  html.pb-motion-prep .pb-book-page__hero-copy > .pb-book-page__tagline,
  html.pb-motion-ready .pb-book-hero-heading {
    opacity: 0;
    transform: translateY(28px);
  }

  html.pb-motion-ready .pb-book-hero-visual {
    transform: translateY(42px);
  }

  html.pb-motion-ready .pb-book-hero-visual,
  html.pb-motion-ready .pb-book-hero-heading {
    transition:
      opacity 1.18s ease-out,
      transform 1.18s cubic-bezier(.16,.72,.24,1);
  }

  html.pb-motion-ready .pb-book-hero-visual.is-visible,
  html.pb-motion-ready .pb-book-hero-heading.is-visible {
    opacity: 1;
    transform: translateY(0);
  }

  html.pb-motion-prep .pb-book-page__hero-copy > .pb-book-page__description,
  html.pb-motion-prep .pb-book-page__hero-copy > .pb-book-page__facts,
  html.pb-motion-ready .pb-book-hero-content {
    opacity: 0;
  }

  html.pb-motion-ready .pb-book-hero-content {
    transition: opacity 1s ease;
  }

  html.pb-motion-ready .pb-book-hero-content.is-visible {
    opacity: 1;
  }

  /*
   * The existing pb-scroll classes now drive:
   * - the two availability cards,
   * - About the Story image/copy,
   * - More Works heading/cards,
   * - the existing Newsletter animation.
   */
  .pb-book-page__cta-card,
  .pb-book-page__story-panel,
  .pb-book-page__work {
    transition:
      border-color .8s ease-in-out,
      box-shadow .8s ease-in-out;
  }

  .pb-book-page__cta-card:hover,
  .pb-book-page__story-panel:hover,
  .pb-book-page__work:hover {
    border-color: rgba(226,188,120,.95);
    box-shadow: 0 0 0 1px rgba(226,188,120,.10), 0 0 16px rgba(199,154,87,.06);
  }

  /* Keep card copy stationary on hover, as with Featured Books. */
  .pb-book-page__work.pb-scroll-visual.is-visible:hover,
  .pb-book-page__cta-card.pb-scroll-visual.is-visible:hover {
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .pb-book-hero-visual,
  .pb-book-hero-heading,
  .pb-book-hero-content {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }
}


/* v1.1.41 — Book Page opening sequence refinement ---------------------- */
@media (prefers-reduced-motion: no-preference) {

  /*
   * Availability cards sit close enough to the initial viewport that they can
   * paint before JS assigns pb-scroll-visual. Hide the raw cards during
   * pb-motion-prep, exactly as the homepage Featured heading is pre-hidden.
   * This removes the visible -> disappear -> slide-in flash.
   */
  html.pb-motion-prep .pb-book-page__cta-card {
    opacity: 0;
    transform: translateY(48px);
  }

  /* Once motion is ready, the normal pb-scroll-visual transition takes over. */
  html.pb-motion-ready .pb-book-page__cta-card.pb-scroll-visual {
    opacity: 0;
    transform: translateY(48px);
  }

  html.pb-motion-ready .pb-book-page__cta-card.pb-scroll-visual.is-visible {
    opacity: 1;
    transform: translateY(0);
  }
}


/* v1.1.42 — faster Book hero start + fade-only About image ------------- */
@media (prefers-reduced-motion: no-preference) {

  /*
   * About the Story image is intentionally different from the other visual
   * entrances: no upward travel, only a slow opacity fade.
   * Pre-hide the raw image selector so there is no first-paint flash.
   */
  html.pb-motion-prep .pb-book-page__story-image,
  html.pb-motion-ready .pb-story-image-fade {
    opacity: 0;
    transform: none !important;
  }

  html.pb-motion-ready .pb-story-image-fade {
    transition: opacity 1.35s ease;
  }

  html.pb-motion-ready .pb-story-image-fade.is-visible {
    opacity: 1;
    transform: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .pb-story-image-fade,
  .pb-book-page__story-image {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* v1.1.44 — reusable Works Listing Page pattern ------------------------ */
.pb-listing-page__hero {
  padding-top: 5.25rem;
  padding-bottom: 4.75rem;
  border-bottom: 1px solid var(--pb-border);
  background-color: #111a22;
  background-image:
    linear-gradient(rgba(10,16,24,.22), rgba(10,16,24,.22)),
    url("../images/book-hero-background.png");
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
}
.pb-listing-page__hero-inner {
  text-align: center;
}
.pb-listing-page__title {
  margin: .25rem 0 .7rem;
  font-size: clamp(3rem, 6vw, 4.8rem);
  font-weight: 400;
  text-transform: uppercase;
}
.pb-listing-page__tagline {
  margin: 0;
  color: var(--pb-brass-light);
  font-size: 1.17rem;
}
.pb-listing-page__hero-ornament {
  margin: 1.35rem auto 1.5rem;
}
.pb-listing-page__intro {
  max-width: 820px;
  margin-inline: auto;
  font-size: 1.08rem;
}
.pb-listing-page__items {
  padding-top: 4.25rem;
  padding-bottom: 4.25rem;
}
.pb-listing-page__items-inner {
  width: min(1180px, calc(100% - 3rem));
  margin-inline: auto;
  gap: 3rem !important;
}
.pb-listing-card {
  border: 1px solid var(--pb-border);
  background: #111a22;
  box-shadow: 0 20px 60px rgba(0,0,0,.18);
  overflow: hidden;
}
.pb-listing-card__columns {
  width: 100%;
  max-width: none;
  margin: 0;
  gap: 0;
  min-height: 390px;
}
.pb-listing-card__image-column,
.pb-listing-card__copy-column {
  display: flex;
  align-items: center;
}
.pb-listing-card__image-column {
  justify-content: center;
  padding: 2.35rem;
}
.pb-listing-card__copy-column {
  padding: 3rem 3.5rem;
}
.pb-listing-card__image {
  margin: 0;
  width: 100%;
}
.pb-listing-card__image img {
  display: block;
  width: min(100%, 270px);
  height: auto;
  margin-inline: auto;
  border: 1px solid var(--pb-brass);
  box-shadow: 0 20px 45px rgba(0,0,0,.35);
}
.pb-listing-card__copy {
  width: 100%;
  max-width: 660px;
  margin: 0;
}
.pb-listing-card__copy h2 {
  margin: .2rem 0 .8rem;
  font-size: clamp(2rem, 3.4vw, 2.7rem);
}
.pb-listing-card__copy > p:not(.pb-kicker):not(.pb-listing-card__meta) {
  font-size: 1.04rem;
  max-width: 620px;
}
.pb-listing-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: .3rem .75rem;
  align-items: center;
  margin-top: 1rem;
  font-size: .92rem;
  opacity: .92;
}
.pb-listing-card__meta span {
  color: var(--pb-brass);
}
.pb-listing-card .wp-block-buttons {
  margin-top: 1.25rem;
}

@media (prefers-reduced-motion: no-preference) {
  .pb-listing-card {
    transition: border-color .8s ease-in-out, box-shadow .8s ease-in-out;
  }
  .pb-listing-card:hover {
    border-color: rgba(226,188,120,.95);
    box-shadow: 0 0 0 1px rgba(226,188,120,.10), 0 0 16px rgba(199,154,87,.06), 0 20px 60px rgba(0,0,0,.18);
  }

  /* Prevent first-paint flashes before motion.js assigns its classes. */
  html.pb-motion-prep .pb-listing-page__hero-kicker,
  html.pb-motion-prep .pb-listing-page__title,
  html.pb-motion-prep .pb-listing-page__tagline,
  html.pb-motion-prep .pb-listing-page__hero-ornament,
  html.pb-motion-prep .pb-listing-page__intro {
    opacity: 0;
    transform: translateY(28px);
  }
  html.pb-motion-prep .pb-listing-card {
    opacity: 0;
    transform: translateY(48px);
  }

  html.pb-motion-ready .pb-listing-hero-heading,
  html.pb-motion-ready .pb-listing-hero-content,
  html.pb-motion-ready .pb-listing-card.pb-scroll-visual {
    opacity: 0;
  }
  html.pb-motion-ready .pb-listing-hero-heading,
  html.pb-motion-ready .pb-listing-hero-content {
    transform: translateY(28px);
    transition: opacity 1.05s ease, transform 1.15s cubic-bezier(.16,.72,.24,1);
  }
  html.pb-motion-ready .pb-listing-card.pb-scroll-visual {
    transform: translateY(48px);
    transition: opacity 1.05s ease, transform 1.15s cubic-bezier(.16,.72,.24,1), border-color .8s ease-in-out, box-shadow .8s ease-in-out;
  }
  html.pb-motion-ready .pb-listing-hero-heading.is-visible,
  html.pb-motion-ready .pb-listing-hero-content.is-visible,
  html.pb-motion-ready .pb-listing-card.pb-scroll-visual.is-visible {
    opacity: 1;
    transform: translateY(0);
  }
  .pb-listing-card.pb-scroll-visual.is-visible:hover {
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .pb-listing-hero-heading,
  .pb-listing-hero-content,
  .pb-listing-card {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

@media (max-width: 800px) {
  .pb-listing-page__hero {
    padding-top: 4rem;
    padding-bottom: 3.75rem;
  }
  .pb-listing-page__items-inner {
    width: min(1180px, calc(100% - 2rem));
  }
  .pb-listing-card__columns {
    flex-wrap: wrap;
    min-height: 0;
  }
  .pb-listing-card__columns > .wp-block-column {
    flex-basis: 100% !important;
  }
  .pb-listing-card__image-column {
    padding: 2rem 2rem 0;
  }
  .pb-listing-card__copy-column {
    padding: 2.2rem 2rem 2.5rem;
  }
  .pb-listing-card__image img {
    width: min(100%, 230px);
  }
}

/* Visible keyboard focus on both light and dark surfaces. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid #e4bb76;
  outline-offset: 4px;
  box-shadow: 0 0 0 2px #101522;
}
.wp-block-navigation__responsive-container.is-menu-open { overflow-y: auto; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* The novels index gives each book a full editorial section. */
.pb-novels-intro { padding-block: clamp(3rem, 7vw, 6rem) 2rem; }
.pb-novels-intro h1 { margin: .3rem 0 1rem; font-size: clamp(2.6rem, 6vw, 4.8rem); line-height: 1.1; }
.pb-novels-intro > p:last-child { max-width: 38rem; color: var(--pb-parchment); }
.wp-block-columns.pb-novel-row {
  display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
  gap: clamp(2rem, 6vw, 6rem); align-items: center;
  padding-block: clamp(3rem, 6vw, 5rem); margin-block: 0;
  border-bottom: 1px solid var(--pb-border);
}
.pb-novel-row > .wp-block-column { min-width: 0; width: 100%; margin: 0; }
.pb-novel-row__cover figure { margin: 0; }
.pb-novel-row__cover img { display: block; width: min(100%, 360px); height: auto; margin-inline: auto; box-shadow: 0 20px 55px #0005; }
.pb-novel-row__copy h2 { margin: .4rem 0 1.3rem; font-size: clamp(2.25rem, 4vw, 3.7rem); line-height: 1.1; }
.pb-novel-row__copy > p { max-width: 36rem; }
.pb-novel-row__hook { color: var(--pb-brass-light); font-size: 1.3rem; }
.pb-novel-row__copy .wp-block-buttons { gap: 1rem; margin-top: 2rem; }
.pb-novel-row__series { margin-top: 1.5rem; font-size: .95rem; }
.pb-novel-row--reverse .pb-novel-row__cover { grid-column: 2; grid-row: 1; }
.pb-novel-row--reverse .pb-novel-row__copy { grid-column: 1; grid-row: 1; }
.pb-reading-library { width: min(1180px, calc(100% - 3rem)); margin-inline: auto; padding-bottom: 4rem; }
.pb-library-entry { padding-block: 2.5rem; border-top: 1px solid var(--pb-border); display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center; }
.pb-library-entry__cover img { display: block; width: 100%; height: auto; }
.pb-library-entry__copy { min-width: 0; }
.pb-library-entry:not(:has(.pb-library-entry__cover)) { grid-template-columns: minmax(0, 1fr); }
.pb-library-entry h2 { margin-top: .5rem; font-size: clamp(1.9rem, 4vw, 3rem); }
.pb-library-entry > p { max-width: 45rem; }
@media (max-width: 600px) {
  .pb-library-entry { grid-template-columns: minmax(0, 1fr); }
  .pb-library-entry__cover { width: min(100%, 220px); }
}
@media (max-width: 781px) {
  .wp-block-patrick-bran-hero.pb-hero { background-image: var(--pb-hero-bg-mobile, var(--pb-hero-bg)) !important; }
  .wp-block-columns.pb-novel-row { grid-template-columns: minmax(0, 1fr); }
  .pb-novel-row--reverse .pb-novel-row__cover,
  .pb-novel-row--reverse .pb-novel-row__copy { grid-column: auto; grid-row: auto; }
  .pb-novel-row__cover img { width: min(100%, 290px); }
}
/* Compact Novels index header; reuses the book-page texture and reveal. */
.page-id-303 .pb-standard-main, .page-id-309 .pb-standard-main, .page-id-717 .pb-standard-main { padding-top: 0; }
.pb-listing-page__hero.pb-novels-hero { min-height: 300px; padding-block: 3rem; display: flex; align-items: center; }
.pb-novels-hero .pb-listing-page__hero-inner { width: min(1180px, calc(100% - 3rem)); }
.pb-novels-hero .pb-listing-page__title { font-size: clamp(2.3rem, 4.5vw, 3.8rem); line-height: 1.15; }
.pb-novels-hero .pb-listing-page__hero-kicker { margin-top: 0; }
.pb-novels-hero .pb-listing-page__tagline { max-width: 750px; margin-inline: auto; }
@media (max-width: 600px) { .pb-listing-page__hero.pb-novels-hero { min-height: 280px; padding-block: 2.5rem; } }
/* Prepare listing entries before their shared scroll reveal initializes. */
@media (prefers-reduced-motion: no-preference) {
  html.pb-motion-prep .pb-novel-row__cover,
  html.pb-motion-prep .pb-novel-row__copy,
  html.pb-motion-prep .pb-library-entry__cover,
  html.pb-motion-prep .pb-library-entry__copy { opacity: 0; transform: translateY(48px); }
}
/* The newsletter is the first full-width section of the shared footer. */
footer.wp-block-template-part { margin-block-start: 0; }
footer.wp-block-template-part > .pb-site-footer { margin-block-start: 0; }
/* A slow background-only drift; the text and controls stay stationary. */
.pb-hero__motion-toggle { position: absolute; z-index: 3; right: 1rem; bottom: 1rem; padding: .5rem .7rem; border: 1px solid #c79a5780; border-radius: 2px; background: #0f1523df; color: #f4f1ec; font: 400 .75rem/1.4 Roboto, sans-serif; cursor: pointer; }
.pb-hero__motion-toggle[hidden] { display: none; }
@media (prefers-reduced-motion: no-preference) {
  .home .pb-hero--ambient-motion::before { transform: scale(1.05); transform-origin: 50% 65%; animation: pbHeroImageIn 1.8s ease-out .35s forwards, pbHeroBackgroundDrift 5.5s ease-in-out 2.15s infinite; }
  .home .pb-hero--ambient-motion.pb-hero--paused::before { animation-play-state: running, paused; }
  @keyframes pbHeroBackgroundDrift { 0%, 100% { transform: scale(1.05) translate(0, 0) rotate(0deg); } 25% { transform: scale(1.05) translate(.035%, .19%) rotate(.085deg); } 50% { transform: scale(1.05) translate(0, -.04%) rotate(.0125deg); } 75% { transform: scale(1.05) translate(-.035%, -.17%) rotate(-.085deg); } }
  @media (max-width: 800px) { .home .wp-block-patrick-bran-hero.pb-hero { background-image: none !important; } .home .pb-hero::before { background-image: var(--pb-hero-bg-mobile, var(--pb-hero-bg)); } }
}
@media (prefers-reduced-motion: reduce) { .pb-hero__motion-toggle { display: none; } }
.pb-search-results > * { width: min(900px, calc(100% - 2rem)); margin-inline: auto; }
.pb-search-result { padding-block: 1.5rem; border-bottom: 1px solid var(--pb-border); }
.pb-search-result h2 { font-size: clamp(1.5rem, 4vw, 2rem); }
.pb-search-results .wp-block-search__input { min-width: 0; }
.pb-search-results { overflow-wrap: anywhere; }
