.programme{background:#fffdf8}.programme-intro{display:grid;grid-template-columns:1.1fr 1fr;gap:4rem;align-items:center;margin-bottom:2.7rem}.programme-intro h2{font-size:clamp(2.4rem,4.5vw,4.15rem);max-width:14ch;margin-bottom:0}.programme-intro-copy{font:1.08rem/1.65 system-ui,sans-serif;color:var(--muted)}.programme-intro-copy strong{color:var(--purple-900)}.programme-intro-copy .text-link{margin-top:0}.programme-calendar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem;margin-bottom:2.5rem}.programme-calendar a{position:relative;text-decoration:none;padding:1.25rem 2rem 1.25rem 1.2rem;background:var(--tint);border-top:4px solid var(--show);border-radius:.3rem .3rem .9rem .9rem;color:var(--show)}.calendar-period{display:block;font:700 .86rem/1.4 system-ui,sans-serif;margin-bottom:.6rem}.programme-calendar strong{display:block;font-size:1.12rem;line-height:1.3}.programme-calendar a>span:last-child{position:absolute;right:.8rem;bottom:1rem;font-size:1.2rem}.programme-calendar a:hover{box-shadow:0 5px 18px #29133e18}.programme-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.programme-card{overflow:hidden;border:1px solid #e5d9e8;border-radius:1.6rem;background:white;display:flex;flex-direction:column;scroll-margin-top:6.5rem;box-shadow:0 14px 35px #30114c0a}.programme-card-top{position:relative;padding:2rem;background:var(--tint);border-top:7px solid var(--show);min-height:255px}.programme-date{color:var(--show);font:800 .88rem/1.5 system-ui,sans-serif;letter-spacing:.035em;margin-bottom:1.2rem;padding-right:2rem}.programme-number{position:absolute;right:1.6rem;top:1.6rem;color:var(--show);opacity:.23;font-size:2.4rem;font-weight:900;line-height:1}.programme-card h3{font-size:clamp(2rem,3.3vw,2.9rem);color:var(--show);max-width:17ch;margin-bottom:1rem}.programme-strap{font-size:1rem;color:var(--show);margin-bottom:0;line-height:1.5}.programme-card-copy{padding:2rem;display:flex;flex-direction:column;flex:1;color:var(--muted);font:1rem/1.7 system-ui,sans-serif}.programme-lead{font-size:1.12rem;color:var(--ink);font-weight:600}.theme-tags{display:flex;flex-wrap:wrap;list-style:none;padding:0;gap:.5rem;margin:.7rem 0 1.8rem}.theme-tags li{padding:.35rem .7rem;border-radius:.4rem;background:var(--tint);color:var(--show);font-size:.88rem;line-height:1.5}.show-enquiry{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-top:auto;background:transparent;border:0;border-top:1px solid #eee5ed;padding:1.1rem 0 0;color:var(--show);text-align:left;font-weight:800;font-size:1rem;cursor:pointer}.show-enquiry:hover{text-decoration:underline}.year-booking{display:grid;grid-template-columns:1.25fr .75fr;gap:3rem;align-items:center;margin:2.5rem 0;padding:2.5rem;border-radius:1.5rem;background:#40147a;color:white}.year-booking h3{color:white;font-size:2.2rem}.year-booking .section-kicker{color:#ffdc77}.year-booking p{margin-bottom:0}.year-booking .section-kicker{margin-bottom:.7rem}.year-booking .button{background:#fff;color:#40147a;width:100%}.booking-detail{font: .9rem/1.6 system-ui,sans-serif;color:#eee4f8;margin-top:1rem}.year-booking>div>p:not([class]){font:1.05rem/1.65 system-ui,sans-serif}.enquiry-choice{font-weight:700;color:#40147a}.hero h1{font-size:clamp(2.6rem,5vw,4.5rem);max-width:13ch}.hero-actions{grid-template-columns:1fr}.hero-actions .button{width:fit-content}.portrait-window{height:auto;aspect-ratio:4/5;overflow:hidden;background:#ece7e3}.portrait-window img{object-fit:cover;object-position:50% 25%;transform:scale(1.13);transform-origin:50% 30%}.portrait-card:nth-child(2) .portrait-window img{object-position:50% 20%;transform:scale(1.05);transform-origin:50% 20%}.portrait-card:nth-child(3) .portrait-window img{transform:scale(1.6);transform-origin:50% 22%;object-position:50% 0}.portrait-card:nth-child(4) .portrait-window img{object-position:50% 22%;transform:scale(1.08);transform-origin:50% 22%}.portrait-card:nth-child(5) .portrait-window img{transform:scale(1.12);transform-origin:50% 30%}.portrait-card:nth-child(6) .portrait-window img{transform:scale(1.3);transform-origin:50% 45%}.portrait-caption{min-height:155px}.portrait-card:nth-child(5) .character-nickname{display:inline-block;border-bottom:2px solid #d4ac4c;padding-bottom:.3rem}
@media(max-width:850px){.programme-intro{grid-template-columns:1fr;gap:1.5rem}.programme-intro h2{max-width:none}.programme-calendar{grid-template-columns:1fr 1fr}.programme-card-top{padding:1.5rem;min-height:260px}.programme-card-copy{padding:1.5rem}.programme-grid{gap:1.2rem}.year-booking{gap:2rem;padding:2rem}.programme-date{font-size:.85rem}.programme-number{font-size:1.8rem;right:1rem}.programme-card h3{font-size:2rem}}
@media(max-width:600px){.programme-grid{grid-template-columns:1fr;gap:1.5rem}.programme-card-top{min-height:0;padding:1.6rem}.programme-card h3{font-size:2.35rem}.programme-card-copy{padding:1.6rem}.programme-calendar{gap:.6rem}.programme-calendar a{padding:1rem 1.6rem 1rem .9rem}.programme-calendar strong{font-size:1rem}.calendar-period{font-size:.82rem}.year-booking{grid-template-columns:1fr;gap:1.5rem;padding:1.6rem}.year-booking h3{font-size:2rem}.programme-intro h2{font-size:2.6rem}.hero h1{font-size:3rem}.portrait-window{height:auto}.portrait-caption{min-height:0}}

#demo-contact{max-width:44rem;max-height:90svh;overflow:auto;padding:2rem}#school-enquiry{margin-top:1.5rem}#school-enquiry .field{margin-bottom:1rem}#school-enquiry .button{margin-top:1.2rem;width:100%}#enquiry-season{background:#f5eff9;color:#542785}#enquiry-result{margin-top:1.5rem}#enquiry-summary dt{font-weight:800;color:#40147a;margin-top:.9rem}#enquiry-summary dd{margin-left:0;white-space:pre-wrap;overflow-wrap:anywhere}#demo-contact [hidden]{display:none!important}@media(max-width:550px){#demo-contact{padding:1.4rem;max-height:92svh}#demo-contact h2{font-size:1.8rem}}

#enquiry-dialog{max-width:44rem;max-height:90svh;overflow:auto;padding:2rem}#enquiry-dialog h2{font-size:2rem}#enquiry-dialog [hidden]{display:none!important}#form-home{scroll-margin-top:6rem}#form-status{font-weight:700;margin-top:1rem}#school-enquiry button:disabled{opacity:.6;cursor:wait}
