/* Refinement of the established festival world: photography, hierarchy, practical details. */
:root{--space-section:clamp(64px,7vw,112px);--motion-quick:160ms;--motion-enter:650ms}
html{scrollbar-color:var(--gold) var(--ink);scrollbar-width:thin}
body{overflow-x:clip}
a,button,summary{outline-offset:5px;text-underline-offset:.22em}
.button{box-shadow:0 7px 15px #001e2b26}
.button:focus-visible,.text-link:focus-visible{outline-width:3px}
.cta-short{display:none}
.header-cta .cta-short,.header-cta .cta-full{font-size:inherit;line-height:inherit}
.header-cta:hover{background:var(--ivory);color:var(--ink);border-color:var(--ivory)}
.hero{isolation:isolate}
.hero .hero-name{font-size:25vw;top:17px;letter-spacing:-.035em}
.hero-mascot{width:36%;left:7%;top:17%;z-index:4}
.hero .hero-media{left:39%;width:57%;top:7%}
.hero .hero-tent-wrap{right:2%;width:22%;opacity:.7}
.scene-curtain.curtain-left{transform:translateX(-96%)}
.scene-curtain.curtain-right{transform:translateX(96%)}
.hero .hero-copy{bottom:72px;max-width:59%}
.hero-brandline{font-size:12px;line-height:1.5;color:var(--gold);margin-bottom:13px}
.hero-copy h2{font-size:clamp(56px,6vw,96px);line-height:1.08}
.hero .hero-description{margin:15px 0 8px;font-size:clamp(16px,1.35vw,21px)}
.hero-season{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-size:14px;margin:0 0 15px;color:var(--ivory);border-bottom:1px solid #fff4de55}
.hero-season>span:first-child{font-weight:700}
.hero-season>span:nth-child(3){color:var(--gold)}
.hero-season:hover{border-bottom-color:var(--gold)}
.hero-actions .button{min-width:220px}
.scene-tools{bottom:11px;font-size:12px}
.scene-tools>a{display:none}
.scene-note{display:none}
.festival-bunting{width:19%;opacity:.85}
.stage-marquee{padding-block:13px}
.marquee-track{animation:none;will-change:transform}
.marquee-track>span{font-size:24px;gap:28px}
.scene-lights .light-left,.scene-lights .light-right{animation-duration:2s;animation-iteration-count:2;animation-fill-mode:forwards}
.hero .hero-tent{animation-duration:1.4s;animation-iteration-count:2}
.hero-mascot img{animation-duration:2.2s;animation-iteration-count:2}
.paper-star,.finale .circus-star{animation:none}
.section{padding-block:var(--space-section)}
.section-intro h2{font-size:clamp(52px,6.5vw,96px);line-height:1.06;letter-spacing:-.02em}
.section-intro .eyebrow,.legacy-copy .eyebrow,.glimpse-copy .eyebrow,.visit-intro .eyebrow{display:none}
.functions{column-gap:6%;align-items:center}
.functions::after{top:auto;bottom:8%;height:35px;opacity:.13}
.functions .section-intro{padding-top:0;align-self:center}
.functions .section-intro h2{font-size:clamp(54px,6vw,96px)}
.functions .section-intro>p:last-child{max-width:30ch}
.ticket{display:grid;grid-template-columns:1.5fr 1fr;gap:25px;padding:34px;transform:rotate(.5deg);box-shadow:7px 12px 30px #001e2b24;align-items:stretch}
.ticket h3{font-size:clamp(56px,5.2vw,84px);line-height:1.1}
.ticket-country{font-size:12px;letter-spacing:.12em}
.ticket-status{font-family:'DM Sans',sans-serif;font-size:15px;font-weight:700;letter-spacing:.06em;display:inline-flex;border:1px solid #f4c54299;padding:7px 11px;margin:20px 0 15px;color:var(--ivory)}
.ticket-description{font-size:16px;margin-bottom:24px;max-width:30ch}
.ticket-main .button{padding:13px 16px;min-height:50px;font-size:14px;gap:13px}
.ticket-stub{position:relative;right:auto;bottom:auto;width:100%;height:auto;min-height:325px;display:block;transform:none;border:0;background:var(--ink);box-shadow:none;overflow:hidden}
.ticket-stub img{height:100%;position:absolute;inset:0;object-position:50% 9%}
.ticket-stub p{font-size:12px;line-height:1.6;padding:55px 15px 18px;background:linear-gradient(transparent,#001522 70%)}
.functions-links{margin-top:32px}
.show .section-intro{margin-bottom:46px}
.show .section-intro h2{font-size:clamp(54px,6.5vw,96px)}
.show-story h3{font-size:clamp(35px,3.4vw,54px)}
.show-story>p:not(.program-note){font-size:17px;max-width:32ch}
.show-photo figcaption{font-size:14px;line-height:1.6}
.legacy-year{font-size:clamp(112px,15vw,240px);color:var(--red);line-height:1}
.legacy h2{font-size:clamp(44px,4.4vw,72px)}
.legacy-copy>p:not(.legacy-year){max-width:35ch}
.legacy-stamp{display:none}
.glimpse{padding-block:72px;gap:8%}
.glimpse h2{font-size:clamp(44px,4.8vw,76px)}
.glimpse-copy .text-link{color:var(--ivory)}
.glimpse-copy .text-link:hover{color:var(--ivory);border-color:var(--ivory)}
.reel-link{max-width:330px;border-width:5px;transform:rotate(-1.5deg)}
.reel-link>img{height:390px}
.gallery .section-intro{text-align:left}
.gallery .section-intro h2{font-size:clamp(56px,7vw,104px)}
.gallery .section-intro>p{background:none;transform:none;padding:0;font-size:17px;margin-top:17px;max-width:38ch}
.gallery-grid{grid-template-columns:1fr 1fr 1fr;gap:38px 26px}
.gallery-grid .gallery-item:nth-child(n){padding:0;transform:none}
.gallery-grid .gallery-item:nth-child(2),.gallery-grid .gallery-item:nth-child(5){padding-top:36px}
.gallery-item img{aspect-ratio:3/4;object-fit:cover;object-position:50% 24%}
.gallery-item a[data-gallery="carpa"] img{object-position:50% 7%}
.gallery-poster img{object-fit:contain;background:#071d2c}
.gallery-item figcaption{margin-top:15px;font-size:15px}
.gallery-hover{background:#001e2bf2;border-color:#fff4de80;transition:background var(--motion-quick)}
.gallery-item a:hover .gallery-hover,.gallery-item a:focus-visible .gallery-hover{background:var(--red)}
.gallery-controls button:disabled{opacity:.42;border-color:#fff4de88;color:var(--ivory);cursor:default}
.gallery-controls button:disabled:hover{background:transparent}
.gallery-controls [data-gallery-position]{font-variant-numeric:tabular-nums;color:var(--ivory)}
.visit-intro h2{font-size:clamp(45px,4.6vw,76px)}
.visit-intro>p:not(.eyebrow){max-width:34ch}
.mascot-welcome{width:min(100%,390px);margin-top:35px}
.faq details{border-color:#001e2b44}
.faq summary{min-height:76px;line-height:1.5}
.faq details[open] summary{color:#951b27}
.finale h2{font-size:clamp(44px,5.5vw,88px);line-height:1.12}
.finale{padding-block:76px}
.photo-dialog{overscroll-behavior:contain}
.photo-status{font-size:14px;line-height:1.5;margin:10px 0;color:var(--ivory)}
.photo-dialog [data-photo-image][aria-busy="true"]{opacity:.35}
.menu-dialog{overscroll-behavior:contain}
.menu-dialog nav a{min-height:48px}
@media(min-width:1700px){.hero-mascot{width:34%;top:19%;left:8%}.hero .hero-copy{bottom:88px}.hero .hero-media{width:55%;left:39%}}
@media(min-width:601px) and (max-width:1100px){.ticket{grid-template-columns:1fr;padding:28px}.ticket-stub{min-height:150px}.ticket-stub img{object-position:50% 12%}.ticket-stub p{max-width:26ch;padding-top:50px}.hero .hero-copy{max-width:75%}.hero-mascot{width:47%;left:3%;top:auto;bottom:300px}.hero .hero-media{left:28%;width:80%;top:7%}.hero-copy h2{font-size:8vw}.gallery-grid{gap:30px 20px}}
@media(max-width:600px){
 :root{--gutter:24px;--space-section:64px}
 .site-header{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));gap:10px}
 .header-actions{gap:10px}
 .header-cta{display:inline-flex;min-height:44px;font-size:12px;padding:10px 12px;gap:7px}
 .cta-full{display:none}.cta-short{display:inline}
 .hero{height:max(790px,calc(100svh - 74px));min-height:790px}
 .hero .hero-name{font-size:28vw;top:18px}
 .hero .hero-media{width:114%;left:-3%;top:7%;height:76%}
 .hero .hero-copy{left:var(--gutter);right:var(--gutter);bottom:65px;max-width:none}
 .hero-copy h2{font-size:11.6vw;line-height:1.14;white-space:normal}
 .hero-brandline{font-size:11px;margin:0 0 9px;max-width:32ch}
 .hero .hero-description{font-size:15px;line-height:1.55;margin:10px 0 0}
 .hero-season{font-size:13px;margin:0 0 14px;gap:8px;min-height:43px}
 .hero-mascot{width:75%;left:24%;top:auto;bottom:321px;z-index:4}
 .hero .hero-tent-wrap{width:40%;height:27%;right:0;bottom:27%;opacity:.5}
 .festival-bunting{width:31%;top:1%;opacity:.75}
 .scene-curtain{width:54%}
 .hero-actions{gap:12px}
 .hero-actions .button{min-width:0;width:100%;min-height:54px;padding:13px 18px;font-size:15px;justify-content:space-between}
 .hero-actions .text-link{font-size:13px;min-height:44px}
 .scene-tools{left:24px;bottom:8px;right:24px}
 .scene-tools button{font-size:11px}
 .hero-copy::before{inset:-32px -24px -65px}
 .stage-marquee{padding-block:12px}.marquee-track>span{font-size:20px;gap:22px}
 .functions .section-intro{margin-bottom:30px}.functions .section-intro h2{font-size:13.7vw}
 .functions .section-intro>p:last-child{font-size:16px;max-width:30ch;margin-top:18px}
 .ticket{display:block;margin:0;padding:26px 24px 0;transform:none;box-shadow:0 10px 22px #001e2b24}
 .ticket h3{font-size:18vw;line-height:1.1;margin-top:10px}
 .ticket-country{font-size:12px}.ticket-status{font-size:14px;margin:17px 0 14px;padding:6px 10px}
 .ticket-description{font-size:15px;max-width:29ch;line-height:1.65;margin:0 0 21px}
 .ticket-main .button{margin-bottom:27px;min-height:50px;width:100%;justify-content:space-between}
 .ticket-stub{margin-inline:-24px;width:calc(100% + 48px);min-height:118px;display:grid;grid-template-columns:92px 1fr;align-items:center;gap:19px;padding:14px 24px;background:var(--ink);overflow:hidden}
 .ticket-stub img{position:static;inset:auto;width:92px;height:90px;object-fit:cover;object-position:50% 10%}
 .ticket-stub p{position:static;inset:auto;background:none;padding:0;font-size:13px;line-height:1.65;text-align:left}
 .functions::after{bottom:10%;height:27px}
 .functions-links{margin-top:26px;gap:25px}.functions-links>p{font-size:13px}
 .show .section-intro{margin-bottom:32px}.show .section-intro h2{font-size:13vw}
 .show-composition{gap:26px 14px}.photo-artist .portrait-arch{height:280px}.show-photo.photo-globe .portrait-arch{height:320px}
 .show-photo figcaption{font-size:13px}.show-story h3{font-size:33px;line-height:1.18}.show-story h3 br{display:none}
 .show-story .act-list{font-size:15px;line-height:1.9}.show-story .program-note{font-size:13px}
 .legacy-year{font-size:37vw;margin-bottom:22px}.legacy h2{font-size:11.7vw;line-height:1.13}
 .legacy-photo{margin-top:30px}.legacy-photo figcaption{font-size:13px}
 .glimpse{padding-block:58px;gap:28px}.glimpse h2{font-size:12vw;line-height:1.13}
 .reel-link{width:100%;max-width:none;margin:0;transform:none}.reel-link>img{height:260px;object-position:50% 38%}
 .glimpse-copy>p:not(.eyebrow){font-size:16px;margin-top:19px}
 .gallery .section-intro h2{font-size:14vw;line-height:1.12}.gallery .section-intro>p{font-size:16px;margin-top:16px;padding:0;max-width:29ch}
 .gallery-controls{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:18px}
 .gallery-controls>p{font-size:12px;line-height:1.5}.gallery-hint{display:block}
 .gallery-grid{gap:18px;padding-bottom:16px;scroll-snap-type:x proximity}
 .gallery-grid .gallery-item:nth-child(n){padding:0;flex:0 0 88%;transform:none}
 .gallery-item figcaption{font-size:14px;line-height:1.6}.gallery-hover{font-size:12px;padding:11px 13px}
 .gallery .gallery-poster img{aspect-ratio:3/4;object-fit:contain}
 .visit-intro h2{font-size:12.5vw;line-height:1.13}.visit-intro>p:not(.eyebrow){font-size:16px;margin-top:20px}
 .mascot-welcome{width:90%;margin-top:35px}.mascot-welcome figcaption{font-size:19px}
 .faq{margin-top:45px}.faq summary{font-size:16px;min-height:76px}.faq details>p{font-size:15px}
 .finale{padding-block:58px}.finale h2{font-size:11.6vw;line-height:1.16}.finale p{font-size:11px;line-height:1.6}
 .site-footer nav{flex-wrap:wrap;gap:15px 24px;justify-content:flex-start}.footer-bottom{font-size:11px;line-height:1.6}
}
@media(max-width:370px){:root{--gutter:20px}.site-header{padding-inline:12px}.site-header .brand{width:96px}.site-header .brand img{width:96px;height:96px}.header-actions{gap:5px}.header-cta{font-size:11px;padding-inline:9px}.hero-copy h2{font-size:11.4vw}.hero-brandline{font-size:10px}.hero-mascot{width:78%;left:22%;bottom:327px}.ticket{padding-inline:22px}.ticket-stub{margin-inline:-22px;width:calc(100% + 44px);padding-inline:22px}.gallery-hint{font-size:11px}}
@media(prefers-reduced-motion:reduce){.marquee-track{transform:none!important}.hero-mascot img{animation:none}.scene-curtain,.scene-lights{display:none}.gallery-grid{scroll-snap-type:none}}
@media print{.hero-season,.gallery-controls{display:none}.ticket{display:block}.ticket-stub{position:static;min-height:120px}.ticket-stub img{position:static;width:120px;height:100px}.ticket-stub p{position:static;color:black;background:none}}

/* Mobile QA: complete photographs and reachable short-screen controls. */
.gallery-item img,.show-photo .portrait-arch img{object-fit:contain;background:var(--night)}
.photo-dialog figure img{height:auto;max-height:max(100px,calc(100dvh - 240px));object-fit:contain}
.photo-toolbar{position:sticky;top:0;z-index:1;background:var(--ink)}
.photo-status{margin-block:12px}
.menu-top{position:sticky;top:0;z-index:1;background:var(--ink)}
.desktop-nav a{min-height:44px;display:inline-flex;align-items:center}
.hero-season{min-height:44px}
.faq details>p a{text-decoration:underline;text-underline-offset:.2em}
@media(max-width:600px){
 .hero .hero-media{width:100%;left:0;top:10%}
 .hero-mascot{width:70%;left:24%}
 .hero-brandline{display:none}
 .ticket-stub img{object-fit:contain}
 .hero .hero-description,.ticket-description,.faq details>p{font-size:16px}
}
@media(max-height:520px) and (max-width:900px){
 .menu-dialog{padding-block:12px}
 .menu-top{margin-bottom:12px}
 .menu-top button{min-height:44px;padding-block:5px}
 .menu-dialog nav{gap:4px}
 .menu-dialog nav a{font-size:24px;min-height:44px;padding-block:6px;line-height:1.2}
 .menu-dialog>.circus-star,.menu-dialog>p{display:none}
}
@media(max-width:900px){
 html:not(.js) .site-header{position:relative;height:auto;min-height:76px;flex-wrap:wrap;padding-block:8px}
 html:not(.js) .desktop-nav{order:3;flex-basis:100%;justify-content:flex-start;white-space:normal;gap:4px 20px}
 html:not(.js) .desktop-nav a{font-size:14px}
}
