.festival-history {max-width: 1280px; margin: 0 auto; padding: 80px 32px 100px; box-sizing: border-box;}
.festival-history-intro {display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); gap: 56px; align-items: start;}
.festival-history-copy {padding-top: 56px;}
.festival-history-copy h2 {margin: 0; color: #171b18; font-size: clamp(32px, 3.2vw, 44px); font-weight: 800; line-height: 1.22; letter-spacing: -2px; word-break: keep-all;}
.festival-history-copy h2 span {color: #ed702c;}
.festival-history-description {margin-top: 64px; color: #555; font-size: 16px; line-height: 1.8; letter-spacing: -0.6px; word-break: keep-all; overflow-wrap: break-word;}
.festival-history-description p {margin: 0 0 24px;}
.festival-history-description .festival-history-lead {font-weight: 700; color: #3e4640;}
.festival-history-poster img {display: block; width: 100%; height: auto;}
.festival-history-archive {margin-top: 100px; padding-top: 56px; border-top: 1px solid #e9e5df;}
.festival-history-archive h2 {margin: 0 0 36px; font-size: 32px; font-weight: 700; letter-spacing: -1px; color: #202923;}
.festival-history-grid {display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 36px 24px; align-items: start;}
.festival-history-item {margin: 0; min-width: 0;}
.festival-history-item img {display: block; width: 100%; height: auto;}
.festival-history-item figcaption {padding-top: 14px; font-size: 18px; font-weight: 700; color: #505950;}
@media (max-width: 1100px) {
    .festival-history-intro {gap: 32px;}
    .festival-history-copy {padding-top: 24px;}
    .festival-history-description {font-size: 15px; margin-top: 40px;}
    .history-desktop-break {display: none;}
}
@media (max-width: 768px) {
    .festival-history {padding: 44px 24px 64px;}
    .festival-history-intro {grid-template-columns: minmax(0, 1fr); gap: 32px;}
    .festival-history-copy {padding-top: 0;}
    .festival-history-copy h2 {font-size: 34px; letter-spacing: -1.5px;}
    .festival-history-description {margin-top: 28px; line-height: 1.85;}
    .festival-history-description p:last-child {margin-bottom: 0;}
    .festival-history-archive {margin-top: 56px; padding-top: 32px;}
    .festival-history-archive h2 {font-size: 26px; margin-bottom: 24px;}
    .festival-history-grid {grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 16px;}
}

/* Match festival.php branding without importing its page layout. */
.festival-history-brand {margin-bottom: 40px;}
.festival-history-brand img {display: block; width: 185px; max-width: 100%; height: auto;}

/* Float the wrapper; keep hover transforms on the image for smooth composition. */
.festival-history-poster {
    --history-poster-rise: -8px;
    animation: history-poster-float 7s ease-in-out infinite;
}
.festival-history-poster img {
    transform-origin: center;
    transition: transform .5s ease, box-shadow .5s ease;
}
@keyframes history-poster-float {
    0%, 100% {transform: translateY(0) rotate(0deg);}
    50% {transform: translateY(var(--history-poster-rise)) rotate(.35deg);}
}
@media (hover: hover) and (pointer: fine) {
    .festival-history-poster:hover img {
        transform: scale(1.012);
        box-shadow: 0 14px 28px rgba(32, 41, 35, .12);
    }
}
@media (max-width: 767px) {
    .festival-history-brand {margin-bottom: 25px;}
    .festival-history-brand img {width: 158px;}
    .festival-history-poster {--history-poster-rise: -4px;}
}
@media (prefers-reduced-motion: reduce) {
    .festival-history-poster {animation: none;}
    .festival-history-poster img,
    .festival-history-poster:hover img {transition: none; transform: none;}
}