/* Premium look — loaded only when a client's setup.json has "style": "premium".
   Layers on top of style.css. Plain CSS, no libraries, no build step, no web fonts.
   Motion is opt-in by browser support and always off under prefers-reduced-motion. */

/* Display face: Fraunces (SIL Open Font Licence 1.1), self-hosted, latin subset,
   one weight, 34KB. Nothing is requested from Google at page load. See FONTS.md. */
@font-face {
  font-family: "Fraunces";
  src: url("fonts/fraunces-latin.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --pr-ink: #12161c;
  --pr-ink-soft: #55606e;
  --pr-paper: #fbf9f6;
  --pr-paper-2: #ffffff;
  --pr-line: #e4ded5;
  --pr-accent: var(--brand, #b4420f);
  --pr-accent-soft: #f5e7dd;
  --pr-deep: var(--brand-deep, #15202c);
  --pr-deep-2: var(--brand-deep-2, #1e2f40);
  --pr-serif: "Fraunces", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
  --pr-shadow-sm: 0 1px 2px rgba(18, 22, 28, 0.06), 0 4px 12px rgba(18, 22, 28, 0.06);
  --pr-shadow-lg: 0 2px 4px rgba(18, 22, 28, 0.08), 0 18px 40px rgba(18, 22, 28, 0.14);
  --pr-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

/* ---------- Ground ---------- */

.style-premium {
  background: var(--pr-paper);
  color: var(--pr-ink);
  font-size: 17px;
}

.style-premium h1,
.style-premium h2,
.style-premium h3,
.style-premium h4 {
  font-family: var(--pr-serif);
  font-weight: 600;
  font-optical-sizing: auto;
  color: var(--pr-ink);
  letter-spacing: -0.02em;
  text-wrap: balance;
}

.style-premium a { color: var(--pr-accent); text-underline-offset: 3px; }

/* Browser surfaces: the parts we did not draw still carry the design. */
.style-premium ::selection { background: var(--pr-accent); color: #fff; }
.style-premium { caret-color: var(--pr-accent); scrollbar-color: var(--pr-line) var(--pr-paper); }
.style-premium :focus-visible {
  outline: 2px solid var(--pr-accent);
  outline-offset: 3px;
  border-radius: 3px;
}
.style-premium .tel-number { font-variant-numeric: tabular-nums; }

.style-premium .wrap { max-width: 1140px; padding: 0 24px; }
.style-premium section { padding: 72px 0; }
.style-premium section.alt { background: var(--pr-paper-2); }

/* ---------- Header ---------- */

.style-premium .site-header {
  background: rgba(251, 249, 246, 0.86);
  backdrop-filter: saturate(1.4) blur(10px);
  border-bottom: 1px solid var(--pr-line);
}

.style-premium .logo {
  font-family: var(--pr-serif);
  font-size: 1.32rem;
  letter-spacing: -0.02em;
  color: var(--pr-ink);
}
.style-premium .logo span { color: var(--pr-accent); }

.style-premium nav.main-nav a {
  color: var(--pr-ink-soft);
  font-weight: 500;
  font-size: 0.95rem;
  padding-bottom: 2px;
  border-bottom: 1px solid transparent;
  transition: color 160ms var(--pr-ease), border-color 160ms var(--pr-ease);
}
.style-premium nav.main-nav a:hover,
.style-premium nav.main-nav a.active {
  color: var(--pr-ink);
  border-bottom-color: var(--pr-accent);
}

/* ---------- Buttons ---------- */

.style-premium .btn {
  border-radius: 6px;
  font-weight: 600;
  letter-spacing: 0.005em;
  padding: 13px 22px;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  transition: transform 180ms var(--pr-ease), box-shadow 180ms var(--pr-ease),
    background-color 180ms var(--pr-ease), color 180ms var(--pr-ease);
}
.style-premium .btn svg { width: 17px; height: 17px; flex: 0 0 auto; }

/* Buttons are links, so they must beat `.style-premium a { color }`. */
.style-premium a.btn-primary,
.style-premium a.btn-secondary { color: #fff; }
.style-premium a.btn-outline { color: var(--pr-ink); }
.style-premium a.btn-outline:hover { color: #fff; }
.style-premium .call-band a.btn-outline { color: #fff; border-color: rgba(255,255,255,0.4); background: transparent; }
.style-premium .call-band a.btn-outline:hover { background: #fff; color: var(--pr-ink); }

.style-premium .btn-primary {
  background: var(--pr-accent);
  border-color: var(--pr-accent);
  box-shadow: var(--pr-shadow-sm);
}
.style-premium .btn-primary:hover {
  background: var(--brand-dark, #97370b);
  border-color: var(--brand-dark, #97370b);
  transform: translateY(-1px);
  box-shadow: var(--pr-shadow-lg);
}
.style-premium .btn-primary:active { transform: translateY(0); }

.style-premium .btn-secondary {
  background: var(--pr-ink);
  border-color: var(--pr-ink);
}
.style-premium .btn-secondary:hover { background: #000; transform: translateY(-1px); }

.style-premium .btn-outline {
  border-color: var(--pr-line);
  color: var(--pr-ink);
  background: var(--pr-paper-2);
}
.style-premium .btn-outline:hover {
  background: var(--pr-ink);
  border-color: var(--pr-ink);
  color: #fff;
  transform: translateY(-1px);
}

/* ---------- Hero: editorial, asymmetric, one authored moment ---------- */

.style-premium .hero {
  position: relative;
  isolation: isolate;
  background: var(--pr-deep);
  padding: 104px 0 96px;
  overflow: hidden;
}

.style-premium .hero::before {
  content: "";
  position: absolute;
  inset: -20% -10% auto auto;
  width: 70vw;
  height: 70vw;
  max-width: 900px;
  max-height: 900px;
  background: radial-gradient(circle at 60% 40%, rgba(180, 66, 15, 0.55), rgba(180, 66, 15, 0) 62%);
  background: radial-gradient(circle at 60% 40%, color-mix(in srgb, var(--pr-accent) 55%, transparent), transparent 62%);
  z-index: -2;
}

.style-premium .hero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  opacity: 0.35;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='120' height='120' filter='url(%23n)' opacity='0.5'/></svg>");
  mix-blend-mode: soft-light;
}

.style-premium .hero .wrap {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 4fr);
  gap: 48px;
  align-items: end;
}

.style-premium .hero h1 {
  color: #fff;
  font-size: clamp(2.4rem, 6.2vw, 4.4rem);
  line-height: 1.02;
  letter-spacing: -0.035em;
  margin: 0 0 22px;
  max-width: 14ch;
}

.style-premium .hero p.lede {
  color: #d6ddE4;
  font-size: 1.1rem;
  line-height: 1.6;
  max-width: 46ch;
  margin-bottom: 30px;
}

.style-premium .hero-ctas { gap: 14px; }

.style-premium .hero-aside {
  border-left: 1px solid rgba(255, 255, 255, 0.16);
  padding-left: 28px;
  color: #cfd8e2;
}
.style-premium .hero-aside .rating-line {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}
.style-premium .hero-aside .rating-line svg { width: 18px; height: 18px; color: #f0a24b; }
.style-premium .hero-aside .rating-value {
  font-family: var(--pr-serif);
  font-size: 1.5rem;
  color: #fff;
  font-variant-numeric: tabular-nums;
}
.style-premium .hero-aside p { margin: 0; font-size: 0.95rem; line-height: 1.55; }

/* ---------- Section heads: left-aligned, ruled ---------- */

.style-premium .section-head {
  max-width: none;
  text-align: left;
  margin-bottom: 40px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--pr-line);
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
}
.style-premium .section-head h2 {
  font-size: clamp(1.7rem, 3.4vw, 2.5rem);
  margin: 0;
  letter-spacing: -0.03em;
}
.style-premium .section-head p {
  margin: 0;
  color: var(--pr-ink-soft);
  max-width: 46ch;
  font-size: 0.98rem;
}

/* ---------- Services as ruled rows, not a card grid ---------- */

.style-premium .grid {
  display: block;
}

.style-premium .card {
  background: none;
  border: 0;
  border-top: 1px solid var(--pr-line);
  border-radius: 0;
  box-shadow: none;
  padding: 26px 0;
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 28px;
  align-items: baseline;
  transition: background-color 200ms var(--pr-ease);
}
.style-premium .card:first-child { border-top: 0; }
.style-premium .card:hover { background: rgba(180, 66, 15, 0.035); }

.style-premium .card h3 {
  font-size: 1.32rem;
  margin: 0;
  letter-spacing: -0.02em;
}
.style-premium .card p {
  margin: 0;
  color: var(--pr-ink-soft);
  font-size: 1rem;
  line-height: 1.6;
  max-width: 62ch;
}

/* Service-area pills read as a list, not as cards */
.style-premium .area-list .card {
  display: inline-block;
  border: 1px solid var(--pr-line);
  border-radius: 999px;
  padding: 8px 18px;
  margin: 0 8px 10px 0;
  background: var(--pr-paper-2);
}
.style-premium .area-list .card h3 {
  font-family: var(--pr-font, inherit);
  font-size: 0.95rem;
  font-weight: 600;
}
.style-premium .area-list { display: block; }

/* ---------- Reviews as pull quotes ---------- */

.style-premium .reviews-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 32px;
}

.style-premium .review-card {
  background: none;
  border: 0;
  border-top: 2px solid var(--pr-ink);
  border-radius: 0;
  box-shadow: none;
  padding: 22px 0 0;
}
.style-premium .review-card p {
  font-family: var(--pr-serif);
  font-size: 1.24rem;
  line-height: 1.45;
  letter-spacing: -0.015em;
  margin: 12px 0 14px;
}
.style-premium .review-card .name {
  font-size: 0.88rem;
  color: var(--pr-ink-soft);
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.style-premium .review-card .sample-tag {
  background: var(--pr-accent-soft);
  color: #8c3208;
}
.style-premium .stars { display: inline-flex; gap: 3px; align-items: center; letter-spacing: normal; }
.style-premium .stars svg { width: 16px; height: 16px; color: #d98a1f; }

/* ---------- FAQ ---------- */

.style-premium .faq-item {
  border-bottom: 1px solid var(--pr-line);
  padding: 22px 0;
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 28px;
}
.style-premium .faq-item h3 { font-size: 1.14rem; margin: 0; }
.style-premium .faq-item p { margin: 0; color: var(--pr-ink-soft); max-width: 62ch; }

/* Section-closing links sit with the content, not centred under it.
   (!important beats the template's inline text-align for the simple look.) */
.style-premium section .wrap > p { text-align: left !important; margin-top: 28px !important; }

/* ---------- Closing call band ---------- */

.style-premium .call-band {
  background: var(--pr-deep-2);
  color: #fff;
  padding: 56px 0;
}
.style-premium .call-band .wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  align-items: center;
  justify-content: space-between;
}
.style-premium .call-band h2 {
  color: #fff;
  font-size: clamp(1.6rem, 3.2vw, 2.2rem);
  margin: 0 0 6px;
}
.style-premium .call-band p { margin: 0; color: #c3ceda; }

/* ---------- Forms, offers, footer ---------- */

.style-premium form.quote-form {
  background: var(--pr-paper-2);
  border: 1px solid var(--pr-line);
  border-radius: 10px;
  box-shadow: var(--pr-shadow-sm);
  padding: 30px;
}
.style-premium .form-row input,
.style-premium .form-row select,
.style-premium .form-row textarea {
  border-radius: 6px;
  border-color: var(--pr-line);
  background: var(--pr-paper);
  font-size: 1rem;
  padding: 12px 13px;
}
.style-premium .form-row input:focus,
.style-premium .form-row select:focus,
.style-premium .form-row textarea:focus {
  outline: 2px solid var(--pr-accent);
  outline-offset: 1px;
  background: var(--pr-paper-2);
}

.style-premium .offer-box {
  background: var(--pr-paper-2);
  border: 1px solid var(--pr-line);
  border-radius: 12px;
  box-shadow: var(--pr-shadow-lg);
  padding: 36px 30px;
}
.style-premium .offer-code {
  background: var(--pr-deep);
  border-color: var(--pr-deep);
  color: #fff;
  border-radius: 6px;
  font-family: var(--pr-serif);
  letter-spacing: 0.08em;
}

.style-premium .thanks-box {
  background: var(--pr-paper-2);
  border: 1px solid var(--pr-line);
  border-radius: 12px;
  box-shadow: var(--pr-shadow-sm);
}

.style-premium footer.site-footer {
  background: var(--pr-deep);
  color: #b9c4d0;
  margin-top: 0;
}
.style-premium footer.site-footer h2.foot-h { font-family: var(--pr-serif); font-size: 1.02rem; }
.style-premium footer.site-footer a { color: #d8e0e8; }

.style-premium #consent-banner { background: var(--pr-deep); }
.style-premium #consent-accept { background: #fff; color: var(--pr-deep); }

/* ---------- Motion: one authored moment + quiet section rises ---------- */

/* Motion never hides content: every animation moves an already-visible element.
   If animations are throttled, blocked or unsupported, the page still reads. */
@media (prefers-reduced-motion: no-preference) {
  .style-premium .hero h1,
  .style-premium .hero p.lede,
  .style-premium .hero-ctas,
  .style-premium .hero-aside {
    animation: pr-rise 700ms var(--pr-ease) backwards;
  }
  .style-premium .hero p.lede { animation-delay: 70ms; }
  .style-premium .hero-ctas { animation-delay: 130ms; }
  .style-premium .hero-aside { animation-delay: 190ms; }

  @keyframes pr-rise {
    from { transform: translateY(16px); }
    to { transform: none; }
  }

  /* Scroll-linked reveals only where the browser supports them natively.
     Everything stays fully visible by default, so no support means no loss. */
  @supports (animation-timeline: view()) {
    .style-premium section:not(.hero) .section-head,
    .style-premium .card,
    .style-premium .review-card,
    .style-premium .faq-item {
      animation: pr-fade-in linear both;
      animation-timeline: view();
      animation-range: entry 6% cover 20%;
    }
    @keyframes pr-fade-in {
      from { transform: translateY(12px); }
      to { transform: none; }
    }
  }
}

/* ---------- Responsive ---------- */

@media (max-width: 860px) {
  .style-premium .hero { padding: 72px 0 64px; }
  .style-premium .hero .wrap { grid-template-columns: 1fr; gap: 32px; align-items: start; }
  .style-premium .hero-aside { border-left: 0; border-top: 1px solid rgba(255,255,255,0.16); padding: 22px 0 0; }
  .style-premium .card,
  .style-premium .faq-item { grid-template-columns: 1fr; gap: 10px; }
  .style-premium section { padding: 56px 0; }
}

@media (max-width: 480px) {
  .style-premium { font-size: 16px; }
  .style-premium .hero h1 { max-width: none; }
  .style-premium .section-head { flex-direction: column; align-items: flex-start; }
}

@media print {
  .style-premium .call-band { display: none; }
}

/* ---------- Photos (optional): images.hero, services[].image, gallery ----------
   Editorial, not a photo banner: the words keep the dark hero to themselves, and the
   hero photo sits below them as one wide plate that overlaps the hero's bottom edge.
   Without photos none of this renders and the look is exactly as above. */

.style-premium .pr-eyebrow {
  margin: 0 0 18px;
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--brand-bright, #f0a24b);
}

.style-premium .hero.pr-has-photo { padding-bottom: 200px; }

/* The second hero button reads as an outline on the dark ground (a near-black fill disappears there). */
.style-premium .hero a.btn-secondary { background: transparent; border-color: rgba(255, 255, 255, 0.5); }
.style-premium .hero a.btn-secondary:hover { background: #fff; border-color: #fff; color: var(--pr-ink); }

.pr-hero-figure { position: relative; z-index: 1; margin-top: -150px; }
.pr-hero-figure img {
  width: 100%;
  height: auto;
  aspect-ratio: 21 / 9;
  object-fit: cover;
  border-radius: 4px;
  box-shadow: var(--pr-shadow-lg);
}
.style-premium .pr-hero-figure + section { padding-top: 88px; }

/* Service rows with a photo: small plate | name | description */
.style-premium .card:has(> img) {
  grid-template-columns: 220px minmax(0, 4fr) minmax(0, 6fr);
  align-items: center;
}
.style-premium .card > img {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 3px;
}

/* Recent work: one large plate, four smaller ones, captions in the serif */
.style-premium section.pr-gallery { background: var(--pr-paper); }
.pr-gallery-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 28px 24px;
}
.pr-gallery-grid figure { margin: 0; }
.pr-gallery-grid figure:first-child { grid-row: span 2; }
.pr-gallery-grid img {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 3px;
}
.pr-gallery-grid figure:first-child img { aspect-ratio: auto; height: calc(100% - 34px); }
.pr-gallery-grid figcaption {
  margin-top: 10px;
  font-family: var(--pr-serif);
  font-size: 0.95rem;
  color: var(--pr-ink-soft);
}

@media (prefers-reduced-motion: no-preference) {
  .pr-hero-figure img { animation: pr-rise 900ms 160ms var(--pr-ease) backwards; }
}

@media (max-width: 860px) {
  .style-premium .hero.pr-has-photo { padding-bottom: 120px; }
  .pr-hero-figure { margin-top: -84px; }
  .pr-hero-figure img { aspect-ratio: 16 / 10; }
  .style-premium .card:has(> img) { grid-template-columns: 1fr; }
  .pr-gallery-grid { grid-template-columns: 1fr 1fr; }
  .pr-gallery-grid figure:first-child { grid-row: auto; grid-column: 1 / -1; }
  .pr-gallery-grid figure:first-child img { height: auto; aspect-ratio: 16 / 10; }
}

/* ---------- Hero variant: full-bleed photo (layout.hero "fullbleed") ----------
   The photo fills the width. A short serif headline sits on its lower part over a soft
   scrim (white text on the darkest scrim stop stays above 7:1). A slim bar under it
   carries the rating, the towns, and the main button. With no photo, the deep brand
   color fills the frame and the words read the same. */
.style-premium section.pr-full {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: flex-end;
  min-height: clamp(500px, 74vh, 740px);
  padding: 0 0 64px;
  background: var(--pr-deep);
  overflow: hidden;
}
.pr-full-img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.pr-full::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(to top, rgba(10, 16, 12, 0.88) 0%, rgba(10, 16, 12, 0.66) 38%, rgba(10, 16, 12, 0.18) 68%, rgba(10, 16, 12, 0) 100%);
}
.pr-full.no-photo::after { display: none; }
.pr-full-copy { width: 100%; }
.style-premium .pr-full h1 {
  color: #fff;
  font-size: clamp(2.6rem, 5.6vw, 4.7rem);
  line-height: 1.02;
  letter-spacing: -0.035em;
  max-width: 15ch;
  margin: 0 0 16px;
}
.style-premium .pr-full .lede { color: #eef1ec; font-size: 1.12rem; line-height: 1.55; max-width: 44ch; margin: 0; }
.style-premium .pr-full .pr-eyebrow { color: #fff; text-shadow: 0 1px 12px rgba(0, 0, 0, 0.5); }
.style-premium .pr-full h1 { text-shadow: 0 2px 24px rgba(0, 0, 0, 0.25); }

.pr-bar { background: var(--pr-paper-2); border-bottom: 1px solid var(--pr-line); }
.pr-bar-grid { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 32px; padding-top: 18px; padding-bottom: 18px; }
.pr-bar-rating { margin: 0; display: flex; align-items: center; gap: 8px; color: var(--pr-ink-soft); font-size: 0.95rem; white-space: nowrap; }
.pr-bar-rating strong { font-family: var(--pr-serif); font-size: 1.3rem; font-weight: 600; color: var(--pr-ink); font-variant-numeric: tabular-nums; }
.pr-bar-towns { list-style: none; margin: 0; padding: 0 0 0 32px; border-left: 1px solid var(--pr-line); display: flex; flex-wrap: wrap; gap: 4px 0; color: var(--pr-ink); font-size: 0.95rem; flex: 1 1 320px; }
.pr-bar-towns li + li::before { content: "\00B7"; margin: 0 10px; color: var(--pr-ink-soft); }
.pr-bar-ctas { margin-left: auto; }

/* Editorial rhythm for the full-bleed layout: more air between sections. */
.style-premium.pr-editorial main > section:not(.pr-full) { padding: 104px 0; }
.style-premium.pr-editorial .call-band { padding: 72px 0; }

/* ---------- Services variant: editorial (layout.services "editorial") ----------
   Large photo on one side, the words on the other, alternating. No cards. */
.pr-feature { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 64px; align-items: center; margin-top: 64px; }
.pr-feature:first-of-type { margin-top: 0; }
.pr-feature:nth-of-type(even) { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.pr-feature:nth-of-type(even) img { order: 2; }
.pr-feature img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 3px; }
.pr-feature.no-photo { grid-template-columns: minmax(0, 1fr); padding-top: 28px; border-top: 1px solid var(--pr-line); }
.style-premium .pr-feature h3 { font-size: clamp(1.7rem, 3vw, 2.3rem); letter-spacing: -0.03em; margin: 0 0 14px; }
.pr-feature p { margin: 0; color: var(--pr-ink-soft); font-size: 1.08rem; line-height: 1.65; max-width: 38ch; }

/* Two gallery photos read as a wide pair, not a big plate with a hole beside it. */
.pr-gallery-grid:has(> figure:nth-child(2):last-child) { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); }
.pr-gallery-grid:has(> figure:nth-child(2):last-child) figure:first-child { grid-row: auto; }
.pr-gallery-grid:has(> figure:nth-child(2):last-child) img,
.pr-gallery-grid:has(> figure:nth-child(2):last-child) figure:first-child img { height: 420px; aspect-ratio: auto; }

@media (max-width: 860px) {
  .style-premium section.pr-full { min-height: 520px; padding-bottom: 40px; }
  .pr-bar-towns { padding-left: 0; border-left: 0; flex-basis: 100%; }
  .pr-bar-ctas { margin-left: 0; flex-wrap: wrap; }
  .style-premium.pr-editorial main > section:not(.pr-full) { padding: 64px 0; }
  .pr-feature, .pr-feature:nth-of-type(even) { grid-template-columns: 1fr; gap: 22px; margin-top: 44px; }
  .pr-feature:nth-of-type(even) img { order: 0; }
  .pr-gallery-grid:has(> figure:nth-child(2):last-child) { grid-template-columns: 1fr; }
  .pr-gallery-grid:has(> figure:nth-child(2):last-child) img,
  .pr-gallery-grid:has(> figure:nth-child(2):last-child) figure:first-child img { height: auto; aspect-ratio: 4 / 3; }
}

@media (prefers-reduced-motion: no-preference) {
  .style-premium .pr-full h1, .style-premium .pr-full .lede { animation: pr-rise 700ms var(--pr-ease) backwards; }
  .style-premium .pr-full .lede { animation-delay: 80ms; }
}
