.intro-animated-gradient__root {
    padding-top: clamp(4rem, 12vw, 10rem);
    padding-bottom: clamp(4rem, 12vw, 10rem);
    min-height: min(32rem, 85vh);
}

@keyframes intro-animated-gradient-spin {
    to {
        transform: rotate(360deg);
    }
}

.intro-animated-gradient__spin--left,
.intro-animated-gradient__spin--right {
    width: 85%;
    height: 85%;
    top: 7.5%;
    animation-name: intro-animated-gradient-spin;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
    transform-origin: 50% 50%;
}

.intro-animated-gradient__spin--left {
    left: -18%;
    animation-duration: 48s;
}

.intro-animated-gradient__spin--right {
    right: -18%;
    animation-duration: 60s;
    animation-direction: reverse;
}

.intro-animated-gradient__area {
    max-width: 48rem;
}


.passage-chapter__visual--glow:hover { transform: scale(1.05); transition: transform .2s ease; }

.passage-chapter__prompt--glow:hover { transform: scale(1.05); transition: transform .2s ease; }

.content-heading-gap {
    margin-bottom: 2rem;
}

.content-img-compact {
    display: block;
    width: 100%;
    height: 12rem;
    min-height: 12rem;
    flex-shrink: 0;
    object-fit: cover;
}
@media (min-width: 768px) {
    .content-img-compact {
        height: 14rem;
        min-height: 14rem;
    }
}

.content-col-grow {
    flex: 1 1 0%;
    min-width: 0;
}

.content-img-ratio {
    display: block;
    width: 100%;
    height: 100%;
    min-width: 0;
    object-fit: cover;
    flex-shrink: 0;
}

.editorial-document__text-panel-inset {
    padding: 4rem;
}

.content-column__body {
    column-gap: 2.5rem;
}

.content-column__body p {
    break-inside: avoid;
}

@media (min-width: 768px) {
    .content-column__body {
        column-count: 2;
    }
}

@media (min-width: 1200px) {
    .content-column__body {
        column-count: 3;
    }
}

/* Decor geometry (layout only; colors stay in Blade / @sem) */
.leaflet-document__decor-1 {
    position: absolute;
    width: 8rem;
    height: 8rem;
    top: 0;
    left: 0;
    transform: translate(-4rem, -4rem);
    z-index: 0;
    pointer-events: none;
}

.leaflet-document__decor-2 {
    position: absolute;
    width: 12rem;
    height: 12rem;
    bottom: 0;
    right: 0;
    transform: translate(6rem, 6rem);
    z-index: 0;
    pointer-events: none;
}

.leaflet-document__decor-3 {
    position: absolute;
    width: 6rem;
    height: 6rem;
    top: 50%;
    right: 0;
    transform: translate(3rem, -50%);
    z-index: 0;
    pointer-events: none;
}

.leaflet-document__decor-4 {
    position: absolute;
    width: 4rem;
    height: 4rem;
    left: 25%;
    bottom: 25%;
    transform: translate(-50%, 50%);
    z-index: 0;
    pointer-events: none;
}

.leaflet-document__divider-bar {
    height: 0.25rem;
}

.leaflet-document__title-trail { margin-bottom: 2rem; }

.leaflet-document__rule-trail { margin-bottom: 3rem; }

.leaflet-document__wrapper-section-pad {
    padding-top: 6rem;
    padding-bottom: 6rem;
}

.content-prose-measure {
    max-width: 48rem;
    margin-left: auto;
    margin-right: auto;
    width: 100%;
}

.content-heading-gap {
    margin-bottom: 2rem;
}

/* gallery v18 — hero + three frames.
   Geometry shared by both CSS frameworks (Bootstrap has no grid-template / aspect utilities). */
.gallery-cascade-grid__section {
    padding-top: 6rem;
    padding-bottom: 6rem;
}

.mxw-5xl {
    max-width: 64rem !important;
}

.mxw-2xl {
    max-width: 42rem !important;
}

.gallery-cascade-grid__head {
    margin-bottom: 2.5rem;
}

.gallery-cascade-grid__title {
    font-size: 1.875rem;
    margin-bottom: 0.75rem;
}

.gallery-cascade-grid__lead {
    font-size: 1.125rem;
}

.gallery-cascade-grid__hero {
    aspect-ratio: 16 / 7;
}

.gallery-cascade-grid__thumb {
    aspect-ratio: 1 / 1;
}

.gallery-cascade-grid__img {
    object-fit: cover;
    transition: transform 300ms ease;
}

/* hover zoom — `:where()` keeps specificity at 0-1-0 so Tailwind's hover:scale-105 wins there */
:where(.gallery-cascade-grid__img):hover {
    transform: scale(1.05);
}

/* caption scrim: Bootstrap has no gradient utility, so the flat fill is toned down instead */
.gallery-cascade-grid__caption {
    --bs-bg-opacity: 0.55;
}

.gallery-cascade-grid__row {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
}

@media (min-width: 640px) {
    .gallery-cascade-grid__row {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (min-width: 768px) {
    .gallery-cascade-grid__title {
        font-size: 2.25rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    :where(.gallery-cascade-grid__img):hover {
        transform: none;
    }
}

.content-col-grow {
    flex: 1 1 0%;
    min-width: 0;
}

.content-img-fill {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 16rem;
    min-width: 0;
    object-fit: cover;
    flex-shrink: 0;
}

.copy-document__text-panel-inset {
    padding: 4rem;
}

.content-details-leaf__summary {
    cursor: pointer;
}

.content-details-leaf__summary::marker {
    font-size: 0.85em;
}

.content-details-leaf__item[open] {
    transform: translateY(-0.0625rem);
}

.content-details-leaf__orb {
    width: 16rem;
    height: 16rem;
    filter: blur(4rem);
}

