@charset "UTF-8";
/* Holidays and seasons (/holidays/, server/templates/holiday*.php). Colours per season: --hx (generated block at the end). */
.hx{--ink:#16222a;--paper:#efeee6;--lime:#d9f264;--hot:#ff6b2b;--soft:#5a676b;--hx:#ff6b2b;background:var(--paper);color:var(--ink)}
.hx-shell{width:min(1360px,calc(100% - 96px));margin-inline:auto}
.hx-kicker{margin:0 0 10px;font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--hot)}
.hx h1{margin:0;font-size:clamp(40px,6.4vw,92px);line-height:.92;letter-spacing:-.055em}
.hx h2{margin:0 0 18px;font-size:clamp(28px,3.6vw,48px);letter-spacing:-.045em;line-height:1}
.hx-button{display:inline-flex;align-items:center;gap:8px;background:var(--lime);color:var(--ink);font-weight:800;text-decoration:none;border-radius:999px;padding:14px 22px;border:2px solid var(--ink);box-shadow:0 5px 0 var(--ink);transition:transform .15s,box-shadow .15s}
.hx-button:hover{transform:translateY(-2px);box-shadow:0 7px 0 var(--ink)}
.hx-button-ghost{background:#fff}
.hx-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,600px);gap:clamp(24px,4vw,64px);align-items:center;padding:clamp(40px,6vw,80px) 0 30px}
.hx-lead{font-size:clamp(17px,1.6vw,21px);line-height:1.5;max-width:620px;margin:22px 0}
.hx-now-strip{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;background:#fff;border:1px solid #16222a22;border-radius:999px;padding:9px 16px;font-size:15px}
.hx-now-strip a{font-weight:800;color:var(--ink)}
.hx-pulse{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--hot);box-shadow:0 0 0 0 #ff6b2b99;animation:hx-pulse 1.8s infinite}
.hx-hero-actions{margin:26px 0 0}
.hx-wheel-wrap{margin:0}
.hx-wheel-wrap figcaption{text-align:center;font-size:13px;color:var(--soft);margin-top:6px}
.hx-wheel{display:block;width:100%;height:auto;font-family:inherit}
.hx-wheel-face{fill:#16222a}
.hx-wheel-tick{stroke:#ffffff30;stroke-width:1}
.hx-wheel-month{fill:#ffffffb3;font-size:11.5px;font-weight:700;text-anchor:middle;dominant-baseline:middle;letter-spacing:.06em;text-transform:uppercase}
.hx-arc{fill:none;stroke:var(--hx);stroke-width:16;stroke-linecap:round;opacity:.72;transition:opacity .2s,stroke-width .2s}
.hx-arc-active .hx-arc{opacity:1;stroke-width:18}
.hx-arc-link:hover .hx-arc,.hx-arc-link:focus .hx-arc{opacity:1;stroke-width:21}
.hx-arc-link:focus{outline:none}
.hx-arc-link:focus-visible .hx-arc{stroke:#fff}
.hx-arc-label{fill:#fff;font-size:10.5px;font-weight:800;text-anchor:middle;dominant-baseline:central;pointer-events:none;paint-order:stroke;stroke:#16222a66;stroke-width:2px}
.hx-needle{stroke:var(--lime);stroke-width:3}
.hx-needle-dot{fill:var(--lime);stroke:#16222a;stroke-width:3}
.hx-wheel-hub{fill:#fbfbf6}
.hx-hub-kicker{fill:var(--hot);font-size:12px;font-weight:800;text-anchor:middle;letter-spacing:.14em;text-transform:uppercase}
.hx-hub-name{fill:#16222a;font-size:22px;font-weight:900;text-anchor:middle;letter-spacing:-.03em}
.hx-hub-count{fill:#5a676b;font-size:14px;font-weight:700;text-anchor:middle}
.hx-section{padding:34px 0}
.hx-section-lead{margin:-8px 0 22px;color:var(--soft);font-size:16px;max-width:760px}
.hx-grid{display:grid;gap:18px}
.hx-grid-now{grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}
.hx-grid-soon{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.hx-grid-later{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.hx-card{display:flex;flex-direction:column;text-decoration:none;color:var(--ink);background:#fbfbf6;border-radius:22px;overflow:hidden;border:1px solid #16222a1a;box-shadow:0 14px 34px -26px #16222a;transition:transform .2s,box-shadow .2s;scroll-margin-top:90px}
.hx-card:hover,.hx-card:focus-visible{transform:translateY(-4px);box-shadow:0 22px 40px -24px #16222a}
.hx-card figure{position:relative;margin:0;aspect-ratio:16/10;background:linear-gradient(135deg,var(--hx),#16222a);overflow:hidden}
.hx-card-big figure{aspect-ratio:16/9}
.hx-card figure img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s}
.hx-card:hover figure img{transform:scale(1.04)}
.hx-card figure::after{content:"";position:absolute;inset:auto 0 0;height:6px;background:var(--hx)}
.hx-badge{position:absolute;top:12px;left:12px;background:#fff;color:var(--ink);font-size:12px;font-weight:800;border-radius:999px;padding:6px 11px;box-shadow:0 4px 14px -6px #000}
.hx-badge-now{background:var(--hot);color:#fff}
.hx-card-body{padding:16px 18px 20px}
.hx-when{margin:0 0 6px;font-size:13px;font-weight:700;color:var(--soft)}
.hx-card h3{margin:0 0 6px;font-size:22px;letter-spacing:-.03em;line-height:1.08}
.hx-card-big h3{font-size:clamp(26px,2.6vw,34px)}
.hx-tagline{margin:0;font-size:15px;color:#2f3d42}
.hx-stats{margin:12px 0 0;font-size:13px;font-weight:800;color:var(--hx)}
.hx-mono{display:grid;place-items:center;width:100%;height:100%;font-size:72px;font-weight:900;color:#ffffffd9;background:linear-gradient(135deg,var(--hx),#16222a)}
.hx-mono-small{font-size:26px;width:96px;height:64px;border-radius:8px;flex:none}
/* season page */
.hx-banner{position:relative;min-height:min(78vh,760px);display:flex;align-items:flex-end;background:#16222a;color:#fff;overflow:hidden}
.hx-banner-photo{position:absolute;inset:0;margin:0}
.hx-banner-photo img{width:100%;height:100%;object-fit:cover}
.hx-banner-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#16222a33 0%,#16222a00 30%,#16222acc 72%,#16222a 100%)}
.hx-banner-photo figcaption{position:absolute;right:14px;top:14px;z-index:2;font-size:10px;background:#16222acc;color:#fff;padding:5px 9px;border-radius:8px}
.hx-banner-photo figcaption a{color:#fff}
.hx-banner-copy{position:relative;z-index:1;padding:120px 0 44px}
.hx-banner .hx-kicker{color:var(--lime)}
.hx-crumbs{margin:0 0 18px}
.hx-crumbs a{color:#fff;font-weight:700;font-size:14px}
.hx-question{font-size:clamp(20px,2.4vw,30px);font-weight:700;letter-spacing:-.02em;margin:14px 0 0;max-width:820px}
.hx-countdown{display:inline-flex;align-items:baseline;gap:10px;margin-top:24px;padding:12px 20px;border-radius:18px;background:#ffffff14;border:1px solid #ffffff33;backdrop-filter:blur(6px)}
.hx-countdown strong{font-size:clamp(40px,5vw,64px);line-height:1;letter-spacing:-.05em;color:var(--lime)}
.hx-countdown span{font-weight:700}
.hx-live{display:inline-flex;align-items:center;gap:12px;font-size:clamp(26px,3vw,40px)!important}
.hx-page .hx-banner::before{content:"";position:absolute;left:0;right:0;bottom:0;height:8px;background:var(--hx);z-index:2}
.hx-intro{display:flex;flex-wrap:wrap;align-items:center;gap:20px 40px;padding:34px 0 8px}
.hx-intro>p{flex:1 1 520px;margin:0;font-size:clamp(18px,1.7vw,22px);line-height:1.55}
.hx-facts{display:flex;gap:12px;margin:0;padding:0;list-style:none}
.hx-facts li{background:#fff;border-radius:18px;padding:14px 18px;border:1px solid #16222a1a;font-weight:700;color:var(--soft);text-align:center;min-width:110px}
.hx-facts b{display:block;font-size:34px;letter-spacing:-.04em;color:var(--hx)}
.hx-empty{font-size:18px;background:#fff;border-radius:18px;padding:22px;border:2px dashed #16222a33}
.hx-events{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.hx-event{display:flex;flex-direction:column;text-decoration:none;color:var(--ink);background:#fbfbf6;border-radius:18px;overflow:hidden;border:1px solid #16222a1a;transition:transform .2s}
.hx-event:hover{transform:translateY(-3px)}
.hx-event figure{margin:0;aspect-ratio:3/2;background:#dedfd7;overflow:hidden}
.hx-event figure img{width:100%;height:100%;object-fit:cover;display:block}
.hx-event figure.media-contain img{object-fit:contain}
.hx-event>div{padding:14px 16px 18px}
.hx-event time{display:block;font-size:13px;font-weight:800;color:var(--hx);margin-bottom:6px}
.hx-event time::first-letter{text-transform:uppercase}
.hx-event h3{margin:0 0 6px;font-size:18px;line-height:1.2;letter-spacing:-.02em}
.hx-event p{margin:0;color:var(--soft);font-size:14px}
.hx-event-lead{grid-column:span 2;grid-row:span 2}
.hx-event-lead figure{aspect-ratio:16/10}
.hx-event-lead h3{font-size:clamp(22px,2.4vw,32px)}
.hx-dates{display:inline-block;margin:8px 6px 0 0;font-style:normal;font-size:12px;font-weight:800;background:#16222a;color:#d9f264;border-radius:999px;padding:3px 9px}
.hx-free{display:inline-block;margin-top:8px;font-style:normal;font-size:12px;font-weight:800;background:#d7f3df;color:#185c30;border-radius:999px;padding:3px 9px}
.hx-more{margin:22px 0 0;text-align:center}
.hx-classics{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(420px,1fr))}
.hx-classic{display:grid;grid-template-columns:minmax(0,200px) 1fr;gap:18px;background:#fff;border-radius:20px;padding:16px;border:1px solid #16222a1a}
.hx-classic:not(:has(figure)){grid-template-columns:1fr}
.hx-classic figure{margin:0;border-radius:14px;overflow:hidden;background:#dedfd7;position:relative;align-self:start}
.hx-classic figure img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
.hx-classic figcaption,.hx-place figcaption{font-size:9px;padding:4px 6px;color:var(--soft)}
.hx-classic h3{margin:4px 0 6px;font-size:22px;letter-spacing:-.03em;line-height:1.1}
.hx-classic p{margin:0 0 8px;font-size:15px;line-height:1.5}
.hx-classic-when{color:var(--hx);font-weight:700}
.hx-classic-when b{color:var(--ink)}
.hx-classic-timing{font-size:14px!important;color:var(--soft)}
.hx-links{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin-top:10px!important}
.hx-links a{font-weight:800;color:var(--ink)}
.hx-places{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px}
.hx-place{display:flex;flex-direction:column;background:#fff;border-radius:20px;overflow:hidden;border:1px solid #16222a1a}
.hx-place figure{position:relative;margin:0;aspect-ratio:16/10;background:linear-gradient(135deg,var(--hx),#16222a);overflow:hidden}
.hx-place figure img{width:100%;height:100%;object-fit:cover;display:block}
.hx-place>div{padding:14px 18px 18px}
.hx-place-kinds{margin:0 0 4px;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--hx)}
.hx-place h3{margin:0 0 4px;font-size:21px;letter-spacing:-.03em}
.hx-place-city{margin:0 0 10px;color:var(--soft);font-size:14px}
.hx-place p{font-size:15px;line-height:1.5;margin:0 0 10px}
.hx-place dl{display:grid;gap:4px;margin:0;font-size:14px}
.hx-place dl div{display:grid;grid-template-columns:110px 1fr;gap:8px}
.hx-place dt{font-weight:800}
.hx-place dd{margin:0}
.hx-place-closed{opacity:.72}
.hx-place-closed figure img{filter:grayscale(1)}
.hx-archive details{background:#fff;border-radius:18px;border:1px solid #16222a1a;margin:0 0 10px;padding:4px 18px}
.hx-archive summary{cursor:pointer;padding:12px 0;display:flex;align-items:baseline;gap:12px;list-style:none}
.hx-archive summary::-webkit-details-marker{display:none}
.hx-archive summary b{font-size:28px;letter-spacing:-.04em}
.hx-archive summary span{color:var(--soft);font-weight:700}
.hx-archive summary::after{content:"+";margin-left:auto;font-size:24px;font-weight:800}
.hx-archive details[open] summary::after{content:"–"}
.hx-year-list{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.hx-year-list a{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--ink);padding:6px;border-radius:12px}
.hx-year-list a:hover{background:#f3f3ea}
.hx-year-list img{width:96px;height:64px;object-fit:cover;border-radius:8px;flex:none}
.hx-year-list span{display:flex;flex-direction:column;min-width:0}
.hx-year-list time{font-size:12px;font-weight:800;color:var(--hx)}
.hx-year-list strong{font-size:15px;line-height:1.25}
.hx-year-list em{font-style:normal;font-size:13px;color:var(--soft)}
.hx-neighbours{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:30px 0}
@keyframes hx-pulse{0%{box-shadow:0 0 0 0 #ff6b2b99}70%{box-shadow:0 0 0 12px #ff6b2b00}100%{box-shadow:0 0 0 0 #ff6b2b00}}
@media (prefers-reduced-motion:reduce){.hx *{animation:none!important;transition:none!important}}
@media (max-width:1050px){.hx-hero{grid-template-columns:1fr}.hx-wheel-wrap{max-width:560px;margin-inline:auto;width:100%}.hx-events{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){
 .hx-shell{width:calc(100% - 32px)}
 .hx-grid-now,.hx-grid-soon{grid-template-columns:1fr}
 .hx-grid-later{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
 .hx-grid-later .hx-card h3{font-size:17px}
 .hx-grid-later .hx-tagline{display:none}
 .hx-events{grid-template-columns:1fr}
 .hx-event-lead{grid-column:auto;grid-row:auto}
 .hx-classics,.hx-places{grid-template-columns:1fr}
 .hx-classic{grid-template-columns:96px 1fr;gap:12px}
 .hx-neighbours{grid-template-columns:1fr}
 .hx-banner{min-height:560px}
 .hx-banner-copy{padding:90px 0 30px}
 .hx-facts li{min-width:0;padding:10px 12px}
 .hx-facts b{font-size:26px}
 .hx-year-list{grid-template-columns:1fr}
}
/* seasons:start (generated by tools/seasons_config.py) */
.fx-season-winter,.hx-winter{--fx-season:#5b8bd6;--hx:#5b8bd6}
.fx-season-lunar-new-year,.hx-lunar-new-year{--fx-season:#d33b2f;--hx:#d33b2f}
.fx-season-valentines,.hx-valentines{--fx-season:#e0457b;--hx:#e0457b}
.fx-season-black-history-month,.hx-black-history-month{--fx-season:#c99a2e;--hx:#c99a2e}
.fx-season-st-patricks,.hx-st-patricks{--fx-season:#2e9b57;--hx:#2e9b57}
.fx-season-easter,.hx-easter{--fx-season:#b38fd6;--hx:#b38fd6}
.fx-season-cinco-de-mayo,.hx-cinco-de-mayo{--fx-season:#e5892b;--hx:#e5892b}
.fx-season-spring,.hx-spring{--fx-season:#7cb85a;--hx:#7cb85a}
.fx-season-memorial-day,.hx-memorial-day{--fx-season:#3b5ba5;--hx:#3b5ba5}
.fx-season-pride,.hx-pride{--fx-season:#8e44ad;--hx:#8e44ad}
.fx-season-juneteenth,.hx-juneteenth{--fx-season:#b5452b;--hx:#b5452b}
.fx-season-july-4,.hx-july-4{--fx-season:#c0392b;--hx:#c0392b}
.fx-season-summer,.hx-summer{--fx-season:#f0a202;--hx:#f0a202}
.fx-season-labor-day,.hx-labor-day{--fx-season:#2c7a7b;--hx:#2c7a7b}
.fx-season-oktoberfest,.hx-oktoberfest{--fx-season:#b8860b;--hx:#b8860b}
.fx-season-fall,.hx-fall{--fx-season:#c8641e;--hx:#c8641e}
.fx-season-halloween,.hx-halloween{--fx-season:#e2711d;--hx:#e2711d}
.fx-season-dia-de-muertos,.hx-dia-de-muertos{--fx-season:#d9467a;--hx:#d9467a}
.fx-season-thanksgiving,.hx-thanksgiving{--fx-season:#a0522d;--hx:#a0522d}
.fx-season-hanukkah,.hx-hanukkah{--fx-season:#2f6fbf;--hx:#2f6fbf}
.fx-season-christmas,.hx-christmas{--fx-season:#b22234;--hx:#b22234}
.fx-season-kwanzaa,.hx-kwanzaa{--fx-season:#2e7d32;--hx:#2e7d32}
.fx-season-new-years-eve,.hx-new-years-eve{--fx-season:#d4af37;--hx:#d4af37}
/* seasons:end */
