/* clubZone NYE guide styles (approved design, v1) */
:root{
  --sponsor-chip:#fff; /* 2.2.2: behind the sponsor's logo in every theme, so its own colours stay readable */
  --night:#06070f; --navy:#0b1130; --navy2:#111a44; --panel:#10152e; --panel2:#161d3d;
  --ink:#f8f3e8; --muted:#b4b9cf; --dim:#8a90aa;
  --gold:#e8c873; --gold-hi:#f6e3a8; --gold-deep:#b98f3a; --champagne:#f3dfa2;
  --cz:#2ab3e6; --rose:#ff6f9c; --green:#5fd39a; --amber:#ffb547; --red:#ff6b6b;
  --line:rgba(243,223,162,.16); --line2:rgba(255,255,255,.08);
  --r:16px; --r-sm:10px;
  --shadow:0 18px 50px -18px rgba(0,0,0,.7);
  --serif:"Bodoni Moda","Didot","Playfair Display","P052","Palatino Linotype",Georgia,serif;
  --sans:"Inter","Helvetica Neue","Nimbus Sans","Liberation Sans",Arial,sans-serif;
  --narrow:"Nimbus Sans Narrow","Arial Narrow","Roboto Condensed",var(--sans);
  --gold-grad:linear-gradient(135deg,#f6e3a8 0%,#e8c873 38%,#b98f3a 70%,#f3dfa2 100%);
  /* colour channels: alpha variants use rgba(var(--x-rgb),a), so a theme can re-tint every shade at once */
  --night-rgb:6,7,15; --navy-rgb:11,17,48; --gold-rgb:232,200,115; --cz-rgb:42,179,230; --hi-rgb:255,255,255; --shade-rgb:0,0,0;
  --red-rgb:255,107,107; --amber-rgb:255,181,71; --green-rgb:95,211,154; --rose-rgb:255,111,156;
  --deep:#0a0f26; --navy3:#121a46; --on-gold:#1a1205;
  --red-ink:#ffc0c0; --green-ink:#bff0d6; --cz-ink:#bfe9fb; --amber-ink:#ffd79a; --rose-ink:#ffc1d4;
  /* map (city page map view) */
  --map-bg:var(--deep); --map-line:#141c44; --map-pin:var(--cz); --map-pin-ring:var(--night); --map-label:var(--ink);
  /* flyers: backdrop behind posters that do not fill their frame */
  --flyer-backdrop:var(--deep);
  color-scheme:dark; --theme-color:#06070f;
  /* 1.5.0 phase B: sponsored cards */
  --sp-edge:#f5b49a;--sp-tag-bg:#fff;--sp-tag-shadow:rgba(15,26,46,.12);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--night);color:var(--ink);font:16px/1.55 var(--sans);-webkit-font-smoothing:antialiased;
  background-image:radial-gradient(1200px 600px at 80% -10%,rgba(var(--cz-rgb),.10),transparent 60%),radial-gradient(900px 500px at -10% 10%,rgba(var(--gold-rgb),.10),transparent 60%);}
a{color:var(--gold-hi);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%;display:block}
h1,h2,h3,h4{margin:0 0 .4em;line-height:1.1}
.serif{font-family:var(--serif);font-weight:700;letter-spacing:-.01em}
.eyebrow{font:700 12px/1.2 var(--narrow);letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.muted{color:var(--muted)} .dim{color:var(--dim)}
.gold-text{background:var(--gold-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.wrap{max-width:1200px;margin:0 auto;padding:0 18px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* site header */
.site-head{position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);background:rgba(var(--night-rgb),.72);border-bottom:1px solid var(--line2)}
.site-head .wrap{display:flex;align-items:center;gap:16px;height:62px}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink)}
.brand img{height:30px;width:auto;filter:drop-shadow(0 0 10px rgba(var(--cz-rgb),.25))}
.brand .nye-tag{font:800 11px/1 var(--narrow);letter-spacing:.2em;padding:6px 8px;border-radius:6px;background:var(--gold-grad);color:var(--on-gold)}
.site-nav{display:none;gap:22px;margin-left:auto;font-weight:600;font-size:14px}
.site-nav a{color:var(--muted)} .site-nav a:hover{color:var(--ink);text-decoration:none}
.head-cta{margin-left:auto}
@media(min-width:900px){.site-nav{display:flex}.head-cta{margin-left:0}}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;padding:12px 20px;font:700 14px/1 var(--sans);cursor:pointer;text-decoration:none!important;transition:transform .15s,box-shadow .15s}
.btn:hover{transform:translateY(-1px)}
.btn-gold{background:var(--gold-grad);color:var(--on-gold);box-shadow:0 8px 24px -8px rgba(var(--gold-rgb),.6)}
.btn-ghost{background:rgba(var(--hi-rgb),.06);color:var(--ink);border:1px solid var(--line)}
.btn-sm{padding:9px 14px;font-size:13px}
.btn-block{width:100%}

/* chips & tags */
.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;border:1px solid var(--line);background:rgba(var(--hi-rgb),.04);color:var(--ink);border-radius:999px;padding:8px 14px;font:600 13px/1 var(--sans);cursor:pointer}
.chip.on{background:var(--gold-grad);color:var(--on-gold);border-color:transparent}
.tag{display:inline-flex;align-items:center;gap:5px;font:700 11px/1 var(--sans);letter-spacing:.04em;padding:5px 8px;border-radius:6px;background:rgba(var(--hi-rgb),.08);color:var(--ink)}
.tag.feat{background:var(--gold-grad);color:var(--on-gold)}
.tag.hot{background:rgba(var(--rose-rgb),.18);color:var(--rose-ink)}
.tag.bar{background:rgba(var(--cz-rgb),.16);color:var(--cz-ink)}
.tag.free{background:rgba(var(--green-rgb),.16);color:var(--green-ink)}
.sponsored{font:600 11px/1 var(--sans);color:var(--dim);letter-spacing:.06em;text-transform:uppercase}

/* art placeholders (generated SVG) */
.art{position:relative;overflow:hidden;background:var(--navy)}
.art svg{position:absolute;inset:0;width:100%;height:100%}
.art .shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(var(--night-rgb),0) 35%,rgba(var(--night-rgb),.85) 100%)}
.photo{background-size:cover;background-position:center}

/* hero */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line2)}
.hero .bg{position:absolute;inset:0}
.hero .bg::after{content:"";position:absolute;inset:0;background:radial-gradient(800px 400px at 50% 110%,rgba(var(--gold-rgb),.18),transparent 70%),linear-gradient(180deg,rgba(var(--night-rgb),.35),rgba(var(--night-rgb),.92))}
.hero .inner{position:relative;padding:54px 18px 40px;text-align:center}
.hero h1{font-size:clamp(38px,9vw,84px);font-family:var(--serif);font-weight:700;letter-spacing:-.02em;margin:.25em 0 .2em}
.hero p.lede{max-width:640px;margin:0 auto 22px;color:var(--muted);font-size:clamp(15px,2.2vw,18px)}
.confetti{position:absolute;inset:0;pointer-events:none;opacity:.9}

.countdown{display:inline-grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:6px auto 24px}
.countdown div{min-width:68px;padding:10px 8px 8px;border-radius:12px;background:rgba(var(--navy-rgb),.7);border:1px solid var(--line);box-shadow:inset 0 1px 0 rgba(var(--hi-rgb),.06)}
.countdown b{display:block;font:700 clamp(26px,6vw,40px)/1 var(--serif);background:var(--gold-grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.countdown span{font:700 10px/1 var(--narrow);letter-spacing:.2em;color:var(--muted);text-transform:uppercase}

.search{display:flex;gap:8px;max-width:620px;margin:0 auto;background:rgba(var(--hi-rgb),.06);border:1px solid var(--line);border-radius:999px;padding:6px 6px 6px 18px}
.search input{flex:1;min-width:0;background:transparent;border:0;color:var(--ink);font:500 15px var(--sans);outline:none}
.search input::placeholder{color:var(--dim)}

/* sections */
.section{padding:44px 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}
.sec-head h2{font:700 clamp(26px,4.4vw,38px)/1.1 var(--serif);margin:.2em 0 0}

/* city grid */
.city-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media(min-width:760px){.city-grid{grid-template-columns:repeat(4,1fr);gap:16px}}
.city{position:relative;border-radius:var(--r);overflow:hidden;aspect-ratio:3/4;color:var(--ink);border:1px solid var(--line2);box-shadow:var(--shadow);text-decoration:none!important;transition:transform .2s,border-color .2s}
.city:hover{transform:translateY(-3px);border-color:rgba(var(--gold-rgb),.5)}
.city .art{position:absolute;inset:0}
.city .meta{position:absolute;left:0;right:0;bottom:0;padding:14px}
.city h3{font:700 clamp(20px,3vw,26px)/1.05 var(--serif);margin:0 0 6px}
.city .stat{font-size:12.5px;color:var(--muted)} .city .stat b{color:var(--gold-hi)}
.city .pill{position:absolute;top:12px;left:12px}

/* carousel */
.carousel{display:grid;grid-auto-flow:column;grid-auto-columns:82%;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:10px;scrollbar-width:thin}
@media(min-width:760px){.carousel{grid-auto-columns:calc(33.33% - 10px)}}
.carousel>*{scroll-snap-align:start}
.car-nav{display:flex;gap:8px}
.car-nav button{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:rgba(var(--hi-rgb),.04);color:var(--ink);font-size:18px;cursor:pointer}

/* event card */
.ecard{display:flex;flex-direction:column;border-radius:var(--r);overflow:hidden;background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line2);box-shadow:var(--shadow);color:var(--ink)}
.ecard.is-feat{border-color:rgba(var(--gold-rgb),.45)}
.ecard .art{aspect-ratio:16/10}
.ecard .tags{position:absolute;top:10px;left:10px;display:flex;gap:6px;flex-wrap:wrap;z-index:2}
.ecard .body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:6px;flex:1}
.ecard h3{font:700 19px/1.2 var(--serif);margin:0}
.ecard h3 a{color:var(--ink)}
.ecard .where{font-size:13px;color:var(--muted)}
.ecard .foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:10px}
.price small{display:block;font-size:11px;color:var(--dim);letter-spacing:.06em;text-transform:uppercase}
.price b{font:700 20px/1 var(--serif);color:var(--gold-hi)}
.ev-grid{display:grid;grid-template-columns:1fr;gap:14px}
@media(min-width:640px){.ev-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1000px){.ev-grid{grid-template-columns:repeat(3,1fr);gap:18px}}

/* guides */
.guides{display:grid;grid-template-columns:1fr;gap:12px}
@media(min-width:760px){.guides{grid-template-columns:repeat(3,1fr)}}
.guide{display:flex;gap:14px;align-items:center;padding:14px;border-radius:var(--r);background:var(--panel);border:1px solid var(--line2);color:var(--ink)}
.guide .art{width:86px;height:86px;flex:0 0 86px;border-radius:12px}
.guide h3{font:700 17px/1.2 var(--serif);margin:2px 0 4px}

/* trust strip */
.trust{border-block:1px solid var(--line);background:linear-gradient(90deg,rgba(var(--gold-rgb),.06),rgba(var(--cz-rgb),.05));padding:22px 0}
.trust .wrap{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;text-align:center}
@media(min-width:760px){.trust .wrap{grid-template-columns:repeat(4,1fr)}}
.trust b{display:block;font:700 26px/1.1 var(--serif);color:var(--gold-hi)}
.trust span{font-size:12.5px;color:var(--muted)}

/* newsletter */
.alert-box{border-radius:22px;padding:28px 20px;background:radial-gradient(600px 300px at 90% 0%,rgba(var(--gold-rgb),.22),transparent 60%),linear-gradient(135deg,var(--navy3),var(--navy));border:1px solid var(--line);text-align:center}
.alert-box form{display:flex;flex-direction:column;gap:10px;max-width:520px;margin:16px auto 0}
@media(min-width:600px){.alert-box form{flex-direction:row}}
.input,select.input{width:100%;background:rgba(var(--hi-rgb),.06);border:1px solid var(--line);border-radius:12px;padding:12px 14px;color:var(--ink);font:500 15px var(--sans)}
select.input option{background:var(--navy)}
select.input{max-width:100%;min-width:0}

/* footer */
.site-foot{border-top:1px solid var(--line2);padding:36px 0 60px;margin-top:20px;font-size:14px;color:var(--muted)}
.site-foot .cols{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
@media(min-width:760px){.site-foot .cols{grid-template-columns:2fr 1fr 1fr 1fr}}
.site-foot h4{font:700 12px/1 var(--narrow);letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:12px}
.site-foot a{display:block;color:var(--muted);padding:3px 0}
.promo-cta b{color:var(--ink)}
.promo-cta{display:flex;flex-direction:column;gap:12px;padding:20px;border-radius:var(--r);border:1px dashed rgba(var(--gold-rgb),.45);background:rgba(var(--gold-rgb),.05)}

/* city page */
.crumbs{font-size:13px;color:var(--dim);padding-top:16px}
.crumbs a{color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:18px}
@media(min-width:760px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat-tile{padding:12px 14px;border-radius:12px;background:rgba(var(--navy-rgb),.7);border:1px solid var(--line);text-align:left}
.stat-tile b{display:block;font:700 22px/1.1 var(--serif);color:var(--gold-hi)}
.stat-tile span{font-size:12px;color:var(--muted)}
.toolbar{position:sticky;top:62px;z-index:30;background:rgba(var(--night-rgb),.9);backdrop-filter:blur(10px);border-bottom:1px solid var(--line2);padding:10px 0 2px}
.toolrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.toolrow select{width:auto;padding:9px 12px;font-size:13px;border-radius:999px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;margin-left:auto}
.seg button{background:transparent;border:0;color:var(--muted);padding:9px 14px;font:700 13px var(--sans);cursor:pointer}
.seg button.on{background:var(--gold-grad);color:var(--on-gold)}
.spotlight{display:grid;grid-template-columns:1fr;border-radius:22px;overflow:hidden;border:1px solid rgba(var(--gold-rgb),.5);background:var(--panel);box-shadow:0 30px 80px -30px rgba(var(--gold-rgb),.35)}
@media(min-width:860px){.spotlight{grid-template-columns:1.25fr 1fr}}
.spotlight .art,.spotlight .photo{min-height:240px}
.spotlight .body{padding:22px}
.spotlight h2{font:700 clamp(26px,4vw,36px)/1.1 var(--serif)}
.mapview{display:none;position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);aspect-ratio:16/10;background:var(--deep)}
.mapview.on{display:block}
.mapview svg{width:100%;height:100%}
.pin{cursor:pointer}
.faq details{border-bottom:1px solid var(--line2);padding:14px 0}
.faq summary{cursor:pointer;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq summary::after{content:"+";color:var(--gold);font-size:20px;line-height:1}
.faq details[open] summary::after{content:"–"}
.faq p{color:var(--muted);margin:8px 0 0}
.prose{max-width:760px;color:var(--muted)} .prose h2{color:var(--ink);font:700 28px/1.15 var(--serif)} .prose strong{color:var(--ink)}
.nearby{display:flex;gap:10px;flex-wrap:wrap}
.empty{display:none;padding:30px;text-align:center;border:1px dashed var(--line);border-radius:var(--r);color:var(--muted)}

/* event page */
.ev-hero{position:relative;min-height:380px;display:flex;align-items:flex-end}
.ev-hero .photo{position:absolute;inset:0}
.ev-hero .photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(var(--night-rgb),.1) 0%,rgba(var(--night-rgb),.55) 50%,var(--night) 100%)}
.ev-hero .inner{position:relative;padding:40px 18px 22px;width:100%}
.ev-hero h1{font:700 clamp(32px,7vw,64px)/1.02 var(--serif);margin:.2em 0}
.facts{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:14px;color:var(--ink)}
.facts span{display:inline-flex;gap:6px;align-items:center}
.ev-layout{display:grid;grid-template-columns:1fr;gap:24px}
@media(min-width:980px){.ev-layout{grid-template-columns:1fr 360px;align-items:start}}
.card{background:var(--panel);border:1px solid var(--line2);border-radius:var(--r);padding:18px}
.card h2,.card h3{font-family:var(--serif)}
.buybox{position:sticky;top:80px}
.tiers{width:100%;border-collapse:collapse;font-size:14px}
.tiers th{text-align:left;font:700 11px/1 var(--narrow);letter-spacing:.16em;text-transform:uppercase;color:var(--dim);padding:8px 6px;border-bottom:1px solid var(--line)}
.tiers td{padding:12px 6px;border-bottom:1px solid var(--line2);vertical-align:top}
.tiers td b{color:var(--ink)} .tiers .amt{font:700 18px/1 var(--serif);color:var(--gold-hi);white-space:nowrap} .tiers .amt-none{white-space:normal}
.tiers tr.sold td{opacity:.5} .tiers tr.sold .amt{text-decoration:line-through}
.incl{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.incl div{display:flex;gap:10px;align-items:center;padding:10px;border-radius:12px;background:rgba(var(--hi-rgb),.04);font-size:14px}
.incl i{font-style:normal;font-size:20px}
.lineup{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.dj{text-align:center}
.dj .art{aspect-ratio:1;border-radius:50%;border:2px solid rgba(var(--gold-rgb),.5);margin-bottom:8px}
.dj b{display:block;font-size:14px} .dj span{font-size:12px;color:var(--muted)}
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.gallery .art{aspect-ratio:1;border-radius:10px}
.gallery .art:first-child{grid-column:span 2;grid-row:span 2;aspect-ratio:auto}
.editor{border-left:3px solid var(--gold);padding:14px 16px;background:linear-gradient(90deg,rgba(var(--gold-rgb),.10),transparent);border-radius:0 12px 12px 0}
.share{display:flex;gap:8px;flex-wrap:wrap}
.disclose{font-size:12.5px;color:var(--dim);padding:10px 12px;border:1px solid var(--line2);border-radius:10px}
.mobile-buy{position:fixed;left:0;right:0;bottom:0;z-index:40;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:rgba(var(--night-rgb),.94);border-top:1px solid var(--line);display:flex;gap:12px;align-items:center}
@media(min-width:980px){.mobile-buy{display:none}}

.why-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media(min-width:760px){.why-grid{grid-template-columns:repeat(4,1fr)}}
.scroll-x{overflow-x:auto}
.status{display:inline-flex;align-items:center;gap:5px;font:700 11px var(--sans);padding:4px 7px;border-radius:6px}
.status.ok{background:rgba(var(--green-rgb),.14);color:var(--green-ink)}
.status.warn{background:rgba(var(--amber-rgb),.14);color:var(--amber-ink)}
.status.crit{background:rgba(var(--red-rgb),.16);color:var(--red-ink)}
.status.info{background:rgba(var(--cz-rgb),.14);color:var(--cz-ink)}
.pick{display:flex;gap:10px;padding:14px 16px}
.pick.sel{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}
.btn{white-space:nowrap}
/* 1.3.1: a long seller name ("Get tickets on Fairmont Royal York (reservations)") must never widen a phone page.
   Grid children may shrink below their content, and ticket buttons wrap on small screens. */
.ev-layout>*,.ev-hero>*,.ev-layout .card,.tiers td,.mobile-buy>*{min-width:0}
/* 1.4.1: the price-table and buy-box buttons wrap at every width (a long seller widened six desktop pages) */
.tiers .btn,.buybox .btn{white-space:normal;text-align:center;line-height:1.25;overflow-wrap:anywhere;max-width:100%;min-width:0;justify-content:center}
@media(max-width:600px){.tiers .btn,.buybox .btn,.mobile-buy .btn{white-space:normal;text-align:center;line-height:1.25;overflow-wrap:anywhere}}
/* 2.3.0 fix round 1: a lone "back to" button ("Tous les partys du Nouvel An à Niagara Falls") wraps on a phone instead of widening the page */
@media(max-width:600px){p>a.btn:only-child{white-space:normal;text-align:center;line-height:1.25;max-width:100%}}
.site-foot a.brand{display:flex}
/* 2.2.2: the Printing Sponsor credit. A white chip, so the logo keeps its colours on any footer. */
.foot-sponsor{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:24px;font-size:13px}
.site-foot .foot-sponsor a{display:inline-flex;align-items:center;padding:6px 10px;background:var(--sponsor-chip);border-radius:10px;line-height:0}
.site-foot .foot-sponsor img{display:block;height:22px;width:auto;max-width:100%}
.site-foot a.btn{display:inline-flex;color:var(--on-gold)}
.hero .bg svg{opacity:.8}
/* interaction states */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,.pkg:focus-visible{outline:2px solid var(--gold-hi);outline-offset:3px;border-radius:8px}
.input:focus{border-color:var(--gold)}
.input.is-error,.input[aria-invalid="true"]{border-color:var(--red);box-shadow:0 0 0 3px rgba(var(--red-rgb),.18)}
.field-msg{display:none;margin:8px 0 0;font-size:13px;font-weight:600}
.field-msg.is-error{color:var(--red-ink)}
.field-msg.show{display:block}
.empty-state{display:none}
@media(max-width:640px){
  .tiers thead{display:none}
  .tiers tr{display:grid;grid-template-columns:1fr auto;gap:6px 12px;padding:14px 0;border-bottom:1px solid var(--line2)}
  .tiers td{display:block;border:0;padding:0}
  .tiers td:nth-child(1){grid-column:1;grid-row:1}
  .tiers td:nth-child(3){grid-column:2;grid-row:1;text-align:right}
  .tiers td:nth-child(2),.tiers td:nth-child(4){grid-column:1/-1}
  .tiers td:nth-child(4) .btn{width:100%}
}
code.path{font-size:11.5px;color:var(--gold);background:rgba(var(--gold-rgb),.1);padding:3px 7px;border-radius:6px;margin-left:8px}
.answer{max-width:760px;margin:0;font-size:clamp(15px,2.2vw,18px);color:var(--ink)}
@media(min-width:1000px){.city-grid{grid-template-columns:repeat(5,1fr)}}
.city-grid-small{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:12px}
@media(min-width:760px){.city-grid-small{grid-template-columns:repeat(4,1fr)}}
.city.small{aspect-ratio:16/9}
.city.small h3{font-size:19px}
.city .pill-r{position:absolute;top:12px;right:12px;background:rgba(var(--night-rgb),.7);border:1px solid var(--line)}
.picks{width:100%;border-collapse:collapse;font-size:14px}
.picks th{text-align:left;font:700 11px var(--narrow);letter-spacing:.14em;text-transform:uppercase;color:var(--dim);padding:10px 6px;border-bottom:1px solid var(--line)}
.picks td{padding:10px 6px;border-bottom:1px solid var(--line2)}
.picks tr:last-child td{border-bottom:0}
.picks td:first-child{color:var(--gold);font-weight:700;white-space:nowrap}
.picks .n{text-align:right;white-space:nowrap}
.picks a{color:var(--ink);font-weight:600}
.fp-links{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.fp-links a{display:inline-flex;gap:6px;align-items:center;padding:7px 12px;border-radius:999px;border:1px solid var(--line2);color:var(--ink);font-size:13px;font-weight:600;background:rgba(var(--hi-rgb),.03)}
.fp-links a code{font-size:10.5px;color:var(--dim);font-weight:500}
.fp-links a.on{border-color:var(--gold);background:rgba(var(--gold-rgb),.12)}
.factbox{width:100%;border-collapse:collapse;font-size:13.5px}
.factbox th{text-align:left;color:var(--dim);font-weight:600;padding:7px 8px 7px 0;vertical-align:top;white-space:nowrap}
.factbox td{padding:7px 0;border-bottom:1px solid var(--line2)}
.factbox tr:last-child td{border-bottom:0}
.verified{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;font-size:12.5px;color:var(--muted)}
.verified .ok{color:var(--green);font-weight:700}
.soldout{display:none;border:1px solid rgba(var(--red-rgb),.4);background:linear-gradient(135deg,rgba(var(--red-rgb),.10),rgba(var(--navy-rgb),.6));border-radius:var(--r);padding:18px}
body.is-soldout .soldout{display:block}
body.is-soldout [data-buy]{display:none}
body.is-soldout .buybox .serif{text-decoration:line-through;opacity:.5}
/* production additions */
[hidden]{display:none!important}
.art img,.hero .bg img,.ev-hero .photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero .bg img{opacity:.8}
img.confetti{width:100%;height:100%;object-fit:cover}
.hp{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}
.form-grid{display:grid;grid-template-columns:1fr;gap:12px}
@media(min-width:700px){.form-grid.two{grid-template-columns:1fr 1fr}}
.form-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}
.form-grid .full{grid-column:1/-1}
textarea.input{min-height:110px;resize:vertical;font:500 15px/1.4 var(--sans)}
.checkline{display:flex!important;flex-direction:row!important;gap:10px;align-items:flex-start;font-weight:500!important}
.checkline input{margin-top:3px}
.ok-msg{font:700 20px/1.3 var(--serif);margin:14px 0 0}
.banner{border-radius:var(--r);padding:14px 16px;border:1px solid rgba(var(--amber-rgb),.45);background:rgba(var(--amber-rgb),.08);font-size:14px}
.banner.crit{border-color:rgba(var(--red-rgb),.45);background:rgba(var(--red-rgb),.08)}
.search-results{max-width:620px;margin:10px auto 0;text-align:left;display:flex;flex-direction:column;gap:6px}
.search-results a{display:block;padding:10px 14px;border-radius:12px;background:rgba(var(--navy-rgb),.85);border:1px solid var(--line2);color:var(--ink)}
.search-results small{color:var(--dim);margin-left:6px}
.pin.off{display:none}
.lang{font-size:13px;margin-left:10px}
.map-note{font-size:12px;color:var(--dim);margin:8px 0 0}
.fp-links a .n{font-size:11px;color:var(--dim);font-weight:600}
.site-head .wrap{height:62px}
.prose ul{padding-left:20px} .prose li{margin:4px 0}
.sold-tag{background:rgba(var(--red-rgb),.18)!important;color:var(--red-ink)!important}
.ecard.is-out{opacity:.78}
details.report{margin-top:10px}
details.report summary{cursor:pointer;color:var(--gold-hi);font-size:13px}
/* 2.3.0: one pick per type on city pages */
.tp-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.tp{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border:1px solid var(--line);border-radius:14px}
.tp-label{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.tp a{font-size:17px;line-height:1.3}
.tp-venue{font-size:14px}
.tp-line{font-size:14px}
/* 2.3.0: "Report a change": one reason as a radio list, then a short note */
.change-reasons{border:0;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px 14px}
.change-reasons legend{font-weight:700;margin-bottom:6px;padding:0}
.form-grid .change-reason{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:14px;font-weight:500;cursor:pointer} /* 2.3.0: beats .form-grid label (a column) */
.form-grid .change-reason input{margin:0;flex:none}
.change-form .field-hint{margin:-6px 0 0;font-size:13px}
.search-results a span{color:var(--dim);margin-left:8px;font-size:13px}
/* announcing soon, ticket states, map coming soon (v1.1) */
.soon-grid{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px}
/* 1.4.2: compact horizontal cards (picture, name, venue, one line; Notify me under them). A swipe row with
   scroll-snap on phones; a wrapping row above, where the last cards stretch to fill their row (no lone orphan). */
.soon-grid>.soon-card{flex:1 1 300px;min-width:0}
@media(min-width:720px){.soon-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1000px){.soon-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* a lone last card takes the whole row as a banner: picture, name and venue, Notify me on the right */
@media(min-width:720px) and (max-width:999.98px){.soon-grid>.soon-card:last-child:nth-child(2n+1){grid-column:1/-1;flex-wrap:nowrap;align-items:center}.soon-grid>.soon-card:last-child:nth-child(2n+1)>.notify:not([open]){flex:0 0 auto}.soon-grid>.soon-card:last-child:nth-child(2n+1):has(.notify[open]){flex-wrap:wrap}}
@media(min-width:1000px){.soon-grid>.soon-card:last-child:nth-child(3n+1){grid-column:1/-1;flex-wrap:nowrap;align-items:center}.soon-grid>.soon-card:last-child:nth-child(3n+1)>.notify:not([open]){flex:0 0 auto}.soon-grid>.soon-card:last-child:nth-child(3n+1):has(.notify[open]){flex-wrap:wrap}}
@media(max-width:719.98px){.soon-grid{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding:2px 2px 12px;scrollbar-width:thin}.soon-grid>.soon-card{flex:0 0 min(84%,330px);scroll-snap-align:start}}
.soon-card{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px 12px;padding:12px;border-radius:var(--r);border:1px dashed var(--line2);background:linear-gradient(180deg,var(--panel2),var(--panel));color:var(--ink)}
.soon-thumb{flex:0 0 84px;width:84px;height:84px;border-radius:12px;overflow:hidden;background:var(--panel2)}
.soon-thumb img{display:block;width:100%;height:100%;object-fit:cover}
.soon-body{flex:1 1 140px;min-width:0;display:flex;flex-direction:column;gap:4px}
.soon-card h3{font:700 16.5px/1.25 var(--serif);margin:0}
.soon-card .where{font-size:13px;color:var(--muted)}
.soon-note{margin:0;font-size:12.5px;color:var(--muted)}
.soon-card>.notify{flex:1 1 100%;min-width:0}
.soon-card .notify>p{margin-left:0!important;margin-right:0!important} /* the consent line sits under the form, not centred in a wide card */
details.notify>summary{list-style:none;cursor:pointer;align-self:flex-start;display:inline-flex}
details.notify>summary::-webkit-details-marker{display:none}
details.notify[open]>summary{margin-bottom:10px}
.soon-card form.alert-form,.buybox form.alert-form{display:flex;flex-direction:column;gap:8px}
.soon-card form.alert-form .input,.buybox form.alert-form .input{max-width:none;width:100%}
.ticket-state{margin:4px 0 0}
.mapview.map-soon{display:none;aspect-ratio:auto;min-height:140px;place-items:center;text-align:center;padding:24px;color:var(--muted)}
.mapview.map-soon.on{display:grid}
/* fix round 1 (v1.2) */
@media(max-width:599px){
  .picks thead{display:none}
  .picks,.picks tbody{display:block;width:100%}
  .picks tr{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:10px 0;border-bottom:1px solid var(--line2)}
  .picks tr:last-child{border-bottom:0}
  .picks td{display:block;padding:0;border:0}
  .picks td:nth-child(1){grid-column:1/-1;font-size:11px;letter-spacing:.12em;text-transform:uppercase}
  .picks td:nth-child(2){grid-column:1/-1;font-weight:600}
  .picks td:nth-child(3){color:var(--muted);font-size:13px}
  .picks td:nth-child(4){text-align:right;white-space:nowrap}
}
.ev-hero .photo::after{background:linear-gradient(90deg,rgba(var(--night-rgb),.82) 0%,rgba(var(--night-rgb),.5) 45%,rgba(var(--night-rgb),.12) 100%),linear-gradient(180deg,rgba(var(--night-rgb),.35) 0%,rgba(var(--night-rgb),.6) 45%,var(--night) 100%)}
.ecard .price b{white-space:nowrap}
.ecard .foot{gap:10px}
.site-foot a.btn{padding:9px 14px;white-space:normal}
@media(min-width:900px){.chips{flex-wrap:wrap;overflow-x:visible}}
.brand{flex-shrink:0}
@media(max-width:479px){.site-head .lang{margin-left:auto}.site-head .lang + .head-cta{display:none}}
/* 1.3.0: map, buy box and promote hero colours come from the theme tokens */
.map-bg{fill:var(--map-bg)}
.map-line{stroke:var(--map-line);stroke-width:1}
.pin-halo{fill:var(--map-pin);opacity:.22}
.pin-dot{fill:var(--map-pin);stroke:var(--map-pin-ring);stroke-width:2}
.pin-label{fill:var(--map-label);font:12px var(--sans)}
.buy-card{border-color:rgba(var(--gold-rgb),.4)}
.promo-bg{position:absolute;inset:0;background:radial-gradient(700px 360px at 50% 0%,rgba(var(--gold-rgb),.25),transparent 70%),linear-gradient(180deg,var(--navy),var(--night))}
/* 1.3.0: official flyers, per design-agent's flyer treatment (README, 29 Oct 2026). The flyer is never cropped:
   contained, with padding and a drop shadow, on a blurred copy of itself (--flyer is set on the box). */
.art.flyer,.photo.flyer{background:var(--flyer-backdrop);isolation:isolate}
.art.flyer::before,.photo.flyer::before{content:"";position:absolute;inset:-30px;z-index:0;background:var(--flyer) center/cover no-repeat;filter:blur(24px) saturate(1.15) brightness(.7);opacity:.6}
.art.flyer img,.photo.flyer img,.ev-hero .photo.flyer img{z-index:1;object-fit:contain;padding:8px;filter:drop-shadow(0 6px 14px rgba(var(--shade-rgb),.55))}
.ev-hero .photo{overflow:hidden}
.flyer-credit{font-size:12px;color:var(--muted);margin:8px 0 0}
/* 1.3.1: a wide flyer (more than 1.3:1) sits in a 16:10 box in both themes, on phones and desktop. The specificity
   beats the design file's 1:1 and 4:5 boxes and the dark column rules. */
[data-theme] .ev-hero .photo.flyer.wide{aspect-ratio:16/10}
/* Dark event page with a flyer: the flyer gets its own column (380 px at 4:5 on desktop, a square below the title on
   phones), like the light design. Scoped to the dark theme so the light design file alone decides its layout. */
[data-theme="dark"] .ev-hero.has-flyer{display:grid;grid-template-columns:1fr;gap:18px;align-items:start;min-height:0;max-width:1200px;margin:0 auto;padding:16px 18px 0}
[data-theme="dark"] .ev-hero.has-flyer .photo{position:relative;inset:auto;border-radius:var(--r);aspect-ratio:1/1;border:1px solid var(--line);box-shadow:var(--shadow)}
[data-theme="dark"] .ev-hero.has-flyer .photo::after{display:none}
[data-theme="dark"] .ev-hero.has-flyer .inner{padding:0;order:-1}
@media(min-width:900px){[data-theme="dark"] .ev-hero.has-flyer{grid-template-columns:380px 1fr;gap:32px;padding-top:24px}[data-theme="dark"] .ev-hero.has-flyer .inner{order:0;padding-top:4px}[data-theme="dark"] .ev-hero.has-flyer .photo{aspect-ratio:4/5}}
/* 1.4.1: on phones the French header button says only "Promouvoir" (the full label pushed it to the screen edge) */
@media(max-width:479px){.head-cta .cta-long{display:none}}
/* 1.4.2 promote form: a message under each bad field, a red border, and a summary box at the top */
.form-grid .field{display:flex;flex-direction:column;gap:6px;min-width:0}
.form-grid .field>label:not(.checkline){font-size:13px;font-weight:600;color:var(--muted)}
.form-grid .field>.checkline{font-size:13px;color:var(--muted)}
.field-err{margin:0;font-size:13.5px;font-weight:700;color:var(--red)}
.input[aria-invalid="true"],select.input[aria-invalid="true"]{border-color:var(--red);border-width:2px}
.checkline input[aria-invalid="true"]{outline:2px solid var(--red);outline-offset:2px}
.form-errors{grid-column:1/-1;border:2px solid var(--red);border-radius:12px;padding:12px 16px;margin:0 0 4px}
.form-errors:focus{outline:3px solid var(--red);outline-offset:2px}
.form-errors p{margin:0 0 6px;color:var(--ink)}
.form-errors ul{margin:0;padding-left:20px}
.form-errors li{margin:3px 0}
.form-errors a{color:var(--red);font-weight:700}
/* 1.4.2 infinite scroll: an invisible marker after the grid */
.more-sentinel{height:1px}
/* 1.4.2 sign-up confirmation */
.sent-card{text-align:center;padding:34px 22px}
.sent-check{width:80px;height:80px;border-radius:50%;display:grid;place-items:center;margin:0 auto 16px}
.sent-check .ic{width:44px;height:44px}
.sent-card h1{font:800 clamp(26px,5vw,38px)/1.15 var(--sans);margin:0 0 12px}
.sent-card h2{font:800 18px/1.2 var(--sans);margin:22px 0 6px}
.sent-to{font-size:16.5px;margin:0}
.sent-steps{text-align:left;max-width:540px;margin:8px auto 24px;padding-left:22px;line-height:1.55}
.sent-steps li{margin:6px 0}

/* 1.4.2 city guide: heading + answer, the city photo (a band between paragraphs on phones, a column on desktop),
   the guide text and quick-pick tiles; neighbourhood tiles in brand colours (theme files set the colours) */
.guide-fig{margin:0;border-radius:16px;overflow:hidden;aspect-ratio:16/8;background:var(--panel2)}
.guide-fig img{display:block;width:100%;height:100%;object-fit:cover}
@media(min-width:900px){.cityguide .lead.g2{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);grid-template-areas:"a picks" "b picks";column-gap:40px;row-gap:18px}.cityguide .lead.g2.has-fig{grid-template-areas:"a fig" "b fig" "b picks";grid-template-rows:auto auto 1fr}.lead.g2>.lead-a{grid-area:a}.lead.g2>.guide-fig{grid-area:fig;aspect-ratio:16/10;align-self:start}.lead.g2>.lead-b{grid-area:b;align-self:start}.lead.g2>.quick-picks,.lead.g2>.mix{grid-area:picks;align-self:start}}
.lead-b>:last-child,.lead-a>:last-child{margin-bottom:0}
.quick-picks h3{font:800 17px/1.2 var(--sans);margin:0 0 10px;color:var(--ink)}
.picks-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.picks-grid>a:last-child:nth-child(odd){grid-column:1/-1}
.picks-grid a{display:flex;gap:10px;align-items:center;min-width:0;padding:14px 12px;border-radius:14px;border:1px solid var(--line);background:var(--panel);color:var(--ink);text-decoration:none}
.picks-grid a:hover,.picks-grid a:focus-visible{border-color:var(--gold)}
.picks-grid a>span{min-width:0}
.picks-grid b{display:block;font-size:15px;line-height:1.2}
.picks-grid small{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}
.picks-grid .ic-lg{flex:0 0 auto;width:30px;height:30px}
.cityguide ul.hood-tiles{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0;margin:0}
.cityguide ul.hood-tiles>li{flex:1 1 calc(50% - 5px);min-width:0;position:relative;display:flex;gap:8px;align-items:flex-start;min-height:84px;padding:14px 12px;border:0;border-radius:14px;margin:0}
@media(min-width:600px){.cityguide ul.hood-tiles>li{flex-basis:210px;padding:16px}}
.cityguide ul.hood-tiles>li>div{min-width:0}
.cityguide ul.hood-tiles b{display:block;font-size:15.5px;line-height:1.25;margin-bottom:3px}
.cityguide ul.hood-tiles span{font-size:13px;line-height:1.4}
.cityguide ul.hood-tiles .from{font-weight:700}
.cityguide ul.hood-tiles li.has-link a{text-decoration:underline;text-underline-offset:2px}
.cityguide ul.hood-tiles li.has-link a::after{content:'';position:absolute;inset:0;border-radius:14px}
.cityguide ul.hood-tiles li.has-link a:focus-visible{outline:none}
.cityguide ul.hood-tiles li.has-link:focus-within{outline:3px solid var(--ink);outline-offset:2px}
/* 1.4.2 buy box: "Get tickets ↗" with the seller on a small second line */
.btn.btn-2l{flex-direction:column;gap:1px;line-height:1.15;padding-top:10px;padding-bottom:10px;white-space:normal;text-align:center}
.btn-2l .bl{display:inline-flex;align-items:center;gap:8px}
.btn-2l .seller{font-size:12.5px;font-weight:600;letter-spacing:0;text-transform:none;overflow-wrap:anywhere}

/* 1.5.0 phase B: sponsored cards on public pages (approved PPC screens, "sponsored card label") */
.tag.sp{background:var(--sp-tag-bg);color:var(--ink);border:1px solid var(--line);box-shadow:0 1px 2px var(--sp-tag-shadow)}
.tag.sp .ic{color:var(--cta);--ic-accent:var(--cta)}
.ecard.is-sp,.ecard.promo-ex{border-color:var(--sp-edge);box-shadow:0 0 0 1px var(--sp-edge),var(--shadow)}
.sponsored-block .eyebrow{display:flex;align-items:center;gap:6px}
.pp-sp-label{display:flex;align-items:center;gap:6px;font:700 11.5px/1 var(--narrow);letter-spacing:.14em;text-transform:uppercase;color:var(--cta-ink);margin:0 0 6px}
.pp-inline-sp{margin:14px 0}
@media(min-width:760px){.ev-grid.pp3{grid-template-columns:repeat(3,1fr)}}
.ev-grid>.pp-inline-sp{margin:0} /* 1.5.0-b2: one ordinary grid cell (design gate S1) */
.pp-inline-sp[hidden]{display:none}

/* 2.0.0: the one-line invitation to the same page in French */
.lang-invite{margin:0;padding:8px 16px;text-align:center;font-size:14px;background:var(--panel);border-bottom:1px solid var(--line)}

/* 2.1.0: the priced table, who's-playing and the hub table; on a phone each row reads as a small card. */
.cmp-table small{display:block;color:var(--dim);font-size:12.5px;margin-top:2px}
.cmp-date{font-size:13px;margin-top:10px}
@media(max-width:720px){
  .cmp-table thead{display:none}
  .cmp-table,.cmp-table tbody,.cmp-table tr,.cmp-table td{display:block;width:100%}
  .cmp-table tr{padding:10px 0;border-bottom:1px solid var(--line)}
  .cmp-table td{border:0;padding:3px 0;display:flex;justify-content:space-between;gap:12px;text-align:right}
  .cmp-table td::before{content:attr(data-l);font:700 11px/1.6 var(--narrow);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);text-align:left;flex:0 0 auto}
  .cmp-table td.cmp-name{display:block;text-align:left}
  .cmp-table td.cmp-name::before{content:none}
}
/* 2.5.1 (site review 1.2): Promote page status line, audience numbers and the Featured example (a city-page cut-out) */
.promo-status{margin:14px auto 0;max-width:620px;color:var(--muted);font-size:14px}
.promo-stat b{font-size:22px;color:var(--gold-hi)}
.promo-frame{position:relative;margin-top:14px;padding:18px 16px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--deep)}
.promo-badge{position:absolute;top:-11px;right:14px;padding:2px 10px;border-radius:999px;background:var(--gold);color:var(--on-gold);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.promo-dim{opacity:.4;filter:saturate(.4)}
.promo-dim .body{display:flex;flex-direction:column;gap:8px}
.promo-line{display:block;height:10px;border-radius:5px;background:rgba(var(--hi-rgb),.14)}
.promo-line.short{width:60%}
@media(max-width:639px){.promo-grid .promo-dim{display:none}}
/* 2.7.1 (site review item 1.13 part 1, phone-first; NYE_PHONE_FIRST=off drops the markup these rules need).
   Change 1 (design P1): the city alert box inside the list takes a full row, on phones only (below 720 px). */
.ev-grid>.city-alert-slot{grid-column:1/-1}
@media(min-width:720px){.ev-grid>.city-alert-slot{display:none}}
/* Change 3 (design P4): the city page's long tables fold into the FAQ's open/close panel; the title stays a heading. */
:where(html:not(.nye-hold)) .fold-wrap details>summary>h2{font:inherit;margin:0;color:inherit;letter-spacing:inherit}
.fold-wrap details>.scroll-x{margin:0 0 4px}
/* Change 7 (design P5): the header's Alerts link on phones: the bell and the short word; from 720 px as in 2.7.0. */
.head-alerts.pf .ha-short{display:none}
@media(max-width:719.98px){:where(html:not(.nye-hold)) .site-head .head-alerts.pf{display:inline-flex}.head-alerts.pf .ha-long{display:none}.head-alerts.pf .ha-short{display:inline}}
#city-alerts,#city-alerts-list,#alerts-header{scroll-margin-top:calc(var(--navbar-h,46px) + 16px)}
.pf-to-table{margin:14px 0 0;font-size:14px;font-weight:700}
/* Change 8 (design P6): on phones the main guide's price table reads one row per city (city, parties, cheapest), under
   its headings, with the middle price as a small grey second line. The table itself is complete and unchanged. */
@media(max-width:720px){
  :where(html:not(.nye-hold)) .cmp-table.hub-rows thead{display:block}
  :where(html:not(.nye-hold)) .cmp-table.hub-rows thead tr,:where(html:not(.nye-hold)) .cmp-table.hub-rows tbody tr{display:grid;grid-template-columns:minmax(0,1fr) 5.5em 6.5em;column-gap:10px;align-items:baseline;padding:9px 0}
  :where(html:not(.nye-hold)) .cmp-table.hub-rows thead tr{padding:0 0 6px;border-bottom:1px solid var(--line)}
  :where(html:not(.nye-hold)) .cmp-table.hub-rows th{display:block;padding:0;border:0;font:700 11px/1.3 var(--narrow);letter-spacing:.06em;text-transform:uppercase;color:var(--dim);text-align:right;background:none}
  :where(html:not(.nye-hold)) .cmp-table.hub-rows th:first-child{text-align:left}
  :where(html:not(.nye-hold)) .cmp-table.hub-rows th:nth-child(4){display:none}
  :where(html:not(.nye-hold)) .cmp-table.hub-rows td{display:block;width:auto;padding:0;text-align:right}
  :where(html:not(.nye-hold)) .cmp-table.hub-rows td::before{content:none}
  :where(html:not(.nye-hold)) .cmp-table.hub-rows td:nth-child(4){grid-column:1/-1;text-align:left;font-size:12.5px;color:var(--dim);margin-top:2px}
  :where(html:not(.nye-hold)) .cmp-table.hub-rows td:nth-child(4)::before{content:attr(data-l) " ";font:inherit;letter-spacing:0;text-transform:none;color:inherit}
}
/* 2.8.0 (site review item 1.13 part 2): the layout tests. assets/nye-ab.js sets html[data-tk], html[data-cd] and the class
   nye-hold for each page load while a test switch is on; without them (tests off, no script) none of these rules applies.
   The phone-first rules of 2.7.1 above (header Alerts link, folded tables, one-row hub table) and the picker tiles in
   themes/light-build.css apply outside the hold-back only: :where() adds no weight, so for everyone else nothing changes.
   Change 4, the "Get tickets" test: a test card shows today's button (version A) unless the page drew version B. */
.ecard .tk-a{display:contents}
.ecard .tk-b{display:none}
html[data-tk="b"] .ecard .tk-a{display:none}
html[data-tk="b"] .ecard .tk-b{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
/* Change 6, the compact card test (phones, the city page's list): a 96 px square picture on the left with the badges, type,
   name, place and time beside it, and the price and button in one row below. Same badges, links and buttons. */
@media(max-width:719.98px){
  html[data-cd="b"] body[data-page="city"] [data-grid] .ecard{display:grid;grid-template-columns:96px minmax(0,1fr);column-gap:12px;row-gap:3px;align-content:start;padding:12px}
  html[data-cd="b"] body[data-page="city"] [data-grid] .ecard>div:first-child,html[data-cd="b"] body[data-page="city"] [data-grid] .ecard>.body{display:contents}
  html[data-cd="b"] body[data-page="city"] [data-grid] .ecard>div:first-child>a{grid-column:1;grid-row:1/span 5;align-self:start;display:block}
  html[data-cd="b"] body[data-page="city"] [data-grid] .ecard .art{width:96px;height:96px;aspect-ratio:1/1;border-radius:10px;overflow:hidden}
  html[data-cd="b"] body[data-page="city"] [data-grid] .ecard .art img{width:100%;height:100%;object-fit:cover}
  html[data-cd="b"] body[data-page="city"] [data-grid] .ecard .tags{position:static;grid-column:2;grid-row:1}
  html[data-cd="b"] body[data-page="city"] [data-grid] .ecard .tags:empty{display:none}
  html[data-cd="b"] body[data-page="city"] [data-grid] .ecard .eyebrow,html[data-cd="b"] body[data-page="city"] [data-grid] .ecard h3,html[data-cd="b"] body[data-page="city"] [data-grid] .ecard .where{grid-column:2;min-width:0}
  html[data-cd="b"] body[data-page="city"] [data-grid] .ecard h3{font-size:17px}
  html[data-cd="b"] body[data-page="city"] [data-grid] .ecard .foot{grid-column:1/-1;margin-top:8px}
}
/* The hold-back (1 in 5 page loads on a phone): the 2.6.1 layout for changes 1, 2, 3, 7 and 8: no city alert boxes or
   "compare" link, the long tables shown open as plain sections, and the main guide's sections in the 2.6.1 order. */
html.nye-hold .alert-box.city-alert,html.nye-hold .ev-grid>.city-alert-slot,html.nye-hold .pf-to-table{display:none}
html.nye-hold .fold-wrap details,html.nye-hold .fold-wrap details[open]{background:none;border:0;border-radius:0;box-shadow:none;padding:0;margin:0}
html.nye-hold .fold-wrap details>summary{display:block;padding:0;cursor:default;pointer-events:none}
html.nye-hold .fold-wrap details>summary::after{content:none;display:none}
html.nye-hold body[data-page="home"] #main{display:flex;flex-direction:column}
html.nye-hold body[data-page="home"] #main>.hub-hero{order:-2}
html.nye-hold body[data-page="home"] #main>#answer{order:-1}
html.nye-hold body[data-page="home"] #main>#alerts{order:1}

/* ---- theme: light (themes/nye-v2.css) ---- */
/* clubZone NYE guide: LIGHT theme v2 ("classic clubZone", brighter) — design-agent, 29 Oct 2026
   Replaces themes/nye-light.css. Load AFTER nye.css (same slot as nye-light.css).
   New markup hooks are listed in README.md (header nav bar, photo heroes, city cards, starter tiles,
   filter bar + drawer, guide/FAQ/footer blocks, gallery + lightbox, about timeline, .ic icons).
   Colours sampled from the 2013 clubZone site: nav blue #245BBB / #2863CB, "New Years" orange #F15122 / #F35222,
   orange tint #F8D4C0. Every text/background pair is WCAG 2.2 AA (table in README.md). */

:root{
  /* surfaces */
  --night:#ffffff; --navy:#f5f8fc; --navy2:#eaf1fc; --panel:#ffffff; --panel2:#ffffff;
  /* text */
  --ink:#0f1a2e; --muted:#4a5670; --dim:#5f6b82;
  /* brand: classic clubZone */
  --cz-blue:#245BBB;        /* nav bar, links, active chips: white 6.4:1, on white 6.4:1 */
  --cz-blue-2:#2863CB;      /* hover / lighter nav: white 5.6:1 */
  --cz-blue-ink:#245BBB;
  --cz-blue-deep:#1B4A9C;   /* footer band: white 8.4:1 */
  --cz-blue-pale:#eaf1fc;
  --cta:#F15122;            /* "New Years" tab / Add to Cart orange: fills, accents, LARGE white text (>=19px bold, 3.5:1) */
  --cta-hi:#F35222;
  --cta-btn:#D4421A;        /* small orange buttons with white text: 4.6:1 */
  --cta-btn-hover:#B93812;
  --cta-ink:#B7380F;        /* orange words on white / on tint: 5.9 / 5.3:1 */
  --cta-tint:#F8D4C0; --cta-pale:#fef1ea;
  --ic-accent:#F15122;      /* icon accent stroke */
  /* legacy names remapped */
  --gold:#245BBB; --gold-hi:#1B4A9C; --gold-deep:#1B4A9C; --champagne:#245BBB;
  --cz:#2863CB; --rose:#c2185b; --green:#11683f; --amber:#8a4b00; --red:#b42318;
  --line:#d6dfeb; --line2:#e6ecf4;
  --r:16px; --r-sm:10px;
  --shadow:0 1px 2px rgba(15,26,46,.06),0 8px 24px -14px rgba(15,26,46,.22);
  --shadow-lg:0 2px 4px rgba(15,26,46,.06),0 22px 44px -22px rgba(15,26,46,.38);
  --gold-grad:linear-gradient(180deg,#DA461C 0%,#D4421A 100%);
  --serif:"Inter","Helvetica Neue","Nimbus Sans","Liberation Sans",Arial,sans-serif;
  --navbar-h:46px;
  color-scheme:light; --theme-color:#ffffff;
  --map-bg:#eef3fa; --map-line:#dbe4f0; --map-pin:#F15122; --map-pin-ring:#ffffff; --map-label:#0f1a2e;
  --flyer-backdrop:#e9eef6;
}

body{background:#fff;background-image:none;color:var(--ink)}
a{color:var(--cz-blue-ink)}
.serif,h1,h2,h3{letter-spacing:-.015em}
.gold-text{background:none;-webkit-background-clip:border-box;background-clip:border-box;color:var(--cz-blue-ink)}
.eyebrow{color:var(--cz-blue-ink)}
.section{padding:48px 0}

/* ---------- icons (SVG sprite icons/icons.svg, inlined once per page; see README) ---------- */
.ic{width:1.15em;height:1.15em;flex:0 0 auto;display:inline-block;vertical-align:-.2em;color:var(--cz-blue);stroke:currentColor}
.ic .a{stroke:var(--ic-accent)}
.ic [stroke="none"].a,.ic .a[stroke="none"]{stroke:none;fill:var(--ic-accent)}
.ic-lg{width:28px;height:28px}
.ic-xl{width:40px;height:40px}
.ic-on-dark{color:#fff;--ic-accent:#FFB48F}
.ic-mono{--ic-accent:currentColor}

/* ---------- header: white logo row + classic blue nav bar with the orange "New Year's Eve" tab ---------- */
.site-head{position:relative;top:auto;z-index:50;background:#fff;backdrop-filter:none;border-bottom:0;box-shadow:none}
.site-head .wrap{height:64px;display:flex;align-items:center;gap:14px}
.brand{color:var(--ink)}
.brand img{height:48px;width:auto;filter:none}
.brand .nye-tag{display:none}
.site-head .site-nav{display:none}                        /* links move to the blue bar below */
.head-tools{margin-left:auto;display:flex;align-items:center;gap:10px}
.head-alerts{display:none;align-items:center;gap:6px;font:700 14px/1 var(--sans);color:var(--ink)}
.head-alerts:hover{color:var(--cz-blue)}
@media(min-width:760px){.head-alerts{display:inline-flex}}
.head-cta{display:inline-flex}
@media(max-width:479px){.site-head .wrap{height:56px}.brand img{height:40px}.head-cta{padding:8px 12px;font-size:12.5px}}

.navbar{position:sticky;top:0;z-index:49;background:var(--cz-blue);box-shadow:0 2px 10px -4px rgba(15,26,46,.35)}
.navbar .wrap{display:flex;align-items:stretch;height:var(--navbar-h);overflow-x:auto;scrollbar-width:none;padding-right:0}
.navbar .wrap::-webkit-scrollbar{display:none}
.navbar a{display:flex;align-items:center;gap:7px;padding:0 15px;color:#fff;font:600 14.5px/1 var(--sans);white-space:nowrap;border-right:1px solid rgba(255,255,255,.14);text-decoration:none}
.navbar a:first-child{border-left:1px solid rgba(255,255,255,.14)}
.navbar a:hover{background:var(--cz-blue-2);text-decoration:none}
.navbar a.on{background:var(--cta);font-weight:800;font-size:15px}
.navbar a[aria-current="page"]:not(.on){background:var(--cz-blue-deep);box-shadow:inset 0 -4px 0 var(--cta)}
.navbar a.on:hover{background:var(--cta-hi)}
.navbar .ic{color:#fff;--ic-accent:#fff}
.navbar .spacer{flex:1;border:0}
@media(max-width:599px){.navbar a{padding:0 12px;font-size:14px}.navbar .wrap{padding-left:0}.navbar a:first-child{border-left:0}}

/* ---------- buttons ---------- */
.btn{border-radius:999px}
.btn-gold{background:var(--cta-btn);color:#fff;box-shadow:0 6px 16px -8px rgba(212,66,26,.75)}
.btn-gold:hover{background:var(--cta-btn-hover)}
.btn-gold.btn-lg,.btn-gold.btn-block,.search .btn-gold,.mobile-buy .btn-gold,.alert-box .btn-gold{background:var(--cta);font-size:19px;font-weight:800;padding:14px 26px;letter-spacing:-.01em}
.btn-gold.btn-lg:hover,.btn-gold.btn-block:hover,.search .btn-gold:hover,.mobile-buy .btn-gold:hover,.alert-box .btn-gold:hover{background:var(--cta-btn)}
.btn-ghost{background:#fff;color:var(--cz-blue);border:1.5px solid #b9cbe8}
.btn-ghost:hover{background:var(--cz-blue-pale);border-color:var(--cz-blue)}
.btn .ic{width:18px;height:18px}
.btn-gold .ic{color:#fff;--ic-accent:#fff}
.site-foot a.btn{color:#fff}

/* ---------- chips, tags, statuses ---------- */
.chip{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1.5px solid var(--line);color:var(--ink);padding:8px 14px;font:600 13.5px/1 var(--sans)}
.chip:hover{border-color:var(--cz-blue);color:var(--cz-blue)}
.chip .ic{width:17px;height:17px}
.chip.on{background:var(--cz-blue);color:#fff;border-color:var(--cz-blue)}
.chip.on .ic{color:#fff;--ic-accent:#FFD0BC}
.tag{display:inline-flex;align-items:center;gap:5px;background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(15,26,46,.18);font:700 11.5px/1 var(--sans);letter-spacing:.02em;padding:5px 9px 5px 7px;border-radius:999px}
.tag .ic{width:14px;height:14px}
.tag.feat{background:var(--cta-btn);color:#fff}
.tag.hot{background:#fde7ee;color:#a3123f}
.tag.bar{background:#e6efff;color:#173f8a}
.tag.free{background:#e3f6ec;color:#11683f}
.tag.free .ic,.tag.free .ic .a{color:#11683f;--ic-accent:#11683f}
.sold-tag{background:#fde4e4!important;color:#a11b1b!important}
.status.ok{background:#e3f6ec;color:#11683f}
.status.warn{background:#fff4e0;color:#8a4b00}
.status.crit{background:#fde4e4;color:#a11b1b}
.status.info{background:#e6efff;color:#173f8a}

/* ---------- photo heroes (hub, city, about): image + blue overlay, white text ---------- */
.hero{position:relative;overflow:hidden;background:#173f8a;color:#fff;border-bottom:0}
.hero .bg{position:absolute;inset:0}
.hero .bg img{width:100%;height:100%;object-fit:cover;opacity:1}
.hero .bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,24,58,.30) 0%,rgba(10,24,58,.55) 55%,rgba(10,24,58,.86) 100%)}
.hero img.confetti,.hero .confetti{display:none}
.hero .inner{position:relative;z-index:1}
.hero h1{color:#fff;font-weight:800;text-shadow:0 2px 18px rgba(0,0,0,.35)}
.hero .gold-text{color:#FFC9AE}
.hero .eyebrow{color:#FFD0BC}
.hero p.lede{color:#eef3fb;text-shadow:0 1px 8px rgba(0,0,0,.4)}
.hero a{color:#fff;text-decoration:underline}
.hero .dim{color:#dce6f5}
.hero .photo-credit{position:absolute;right:10px;bottom:8px;z-index:1;font-size:11px;color:rgba(255,255,255,.75)}

/* hub hero */
.hero.hub-hero{min-height:560px;display:flex;align-items:center}
.hero.hub-hero .bg::after{background:linear-gradient(180deg,rgba(10,24,58,.20) 0%,rgba(10,24,58,.45) 45%,rgba(10,24,58,.80) 100%),radial-gradient(70% 60% at 50% 45%,rgba(10,24,58,.35),transparent 70%)}
.hero.hub-hero .inner{padding:64px 18px 54px;width:100%}
.hero.hub-hero h1{font-size:clamp(42px,8.5vw,88px);line-height:1.02;margin:.2em 0 .25em}
.countdown div{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.35);box-shadow:none;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.countdown b{background:none;-webkit-background-clip:border-box;background-clip:border-box;color:#fff;font-family:var(--sans);font-weight:800}
.countdown span{color:#e6eefb}
.search{background:#fff;border:0;box-shadow:0 18px 40px -16px rgba(0,0,0,.55);padding:6px 6px 6px 20px;align-items:center}
.search .ic{color:var(--dim);--ic-accent:var(--dim);width:20px;height:20px}
.search input{color:var(--ink);font-size:16px;padding:0 4px}
.search input::placeholder{color:var(--dim)}
.search .btn-gold{padding:12px 22px}
.search-results a{background:#fff;border:1px solid var(--line);color:var(--ink);box-shadow:var(--shadow)}
.hero .popular{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px}
.hero .popular a{color:#fff;text-decoration:none;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:7px 12px;font:600 13px/1 var(--sans)}
.hero .popular a:hover{background:rgba(255,255,255,.24)}
@media(max-width:599px){.hero.hub-hero{min-height:0}.hero.hub-hero .inner{padding:40px 16px 34px}.search .btn-gold{font-size:16px;padding:11px 16px}}

/* city hero (photo of the city) */
.hero.city-hero{min-height:340px;display:flex;align-items:flex-end}
.hero.city-hero .bg::after{background:linear-gradient(90deg,rgba(10,24,58,.80) 0%,rgba(10,24,58,.45) 55%,rgba(10,24,58,.10) 100%),linear-gradient(0deg,rgba(10,24,58,.55),transparent 55%)}
.hero.city-hero .inner{text-align:left;padding:40px 18px 28px;width:100%}
.hero.city-hero h1{font-size:clamp(32px,6vw,58px);line-height:1.04;margin:.2em 0 .1em}
.hero.city-hero h1 .sub{display:block;font-size:.4em;font-weight:700;margin-top:.35em;color:#e6eefb;letter-spacing:0}
.hero .crumbs,.hero .crumbs a{color:#e6eefb}
.hero-stats{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.hero-stats span{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.95);color:var(--ink);border-radius:999px;padding:8px 13px;font:600 13.5px/1 var(--sans);box-shadow:0 6px 16px -10px rgba(0,0,0,.5)}
.hero-stats b{font-weight:800;color:var(--cz-blue-deep)}
.hero-stats .ic{width:17px;height:17px}
@media(max-width:599px){.hero.city-hero{min-height:260px}.hero.city-hero .inner{padding:26px 16px 18px}.hero-stats span{font-size:12.5px;padding:7px 11px}}

/* ---------- section heads ---------- */
.sec-head h2,.spotlight h2,.prose h2{font-weight:800;color:var(--ink)}
.sec-head{border-bottom:0;padding-bottom:0}
.sec-head .more{display:inline-flex;align-items:center;gap:4px;font:700 14px/1 var(--sans)}

/* ---------- "Pick your city": light cards, photo on top, white label below ---------- */
.city-grid{grid-template-columns:repeat(2,1fr);gap:14px}
@media(min-width:760px){.city-grid{grid-template-columns:repeat(3,1fr);gap:18px}}
@media(min-width:1100px){.city-grid{grid-template-columns:repeat(4,1fr)}}
.city,.city.small{aspect-ratio:auto;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);color:var(--ink);overflow:hidden}
.city:hover{transform:translateY(-3px);border-color:#9fbbe6;box-shadow:var(--shadow-lg)}
.city .art{position:relative;inset:auto;aspect-ratio:16/10;overflow:hidden;background:#dfe8f5}
.city .art img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.city:hover .art img{transform:scale(1.04)}
.city .art .shade{display:none}
.city .meta{position:static;padding:12px 14px 14px;text-shadow:none;display:flex;align-items:center;justify-content:space-between;gap:8px}
.city h3{font:800 19px/1.15 var(--sans);color:var(--ink);margin:0 0 3px}
.city .stat{color:var(--muted);font-size:13px} .city .stat b{color:var(--cta-ink);font-weight:800}
.city .go{flex:0 0 auto;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--cz-blue-pale);color:var(--cz-blue)}
.city:hover .go{background:var(--cz-blue)} .city:hover .go .ic{color:#fff;--ic-accent:#fff}
.city .pill-r{background:rgba(255,255,255,.95);color:var(--cz-blue-deep);border:0;font:800 11px/1 var(--sans);letter-spacing:.06em;padding:6px 8px;border-radius:999px}
.city-grid-small{grid-template-columns:1fr;gap:14px}
@media(min-width:760px){.city-grid-small{grid-template-columns:repeat(2,1fr)}}
.city.small{flex-direction:row}
.city.small .art{aspect-ratio:auto;width:42%;min-height:116px}
.city.small .meta{flex:1}
.city.small h3{font-size:18px}

/* ---------- event cards ---------- */
.ecard{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);color:var(--ink);transition:box-shadow .15s,border-color .15s,transform .15s}
.ecard:hover{border-color:#a9c3ea;box-shadow:var(--shadow-lg);transform:translateY(-2px)}
.ecard.is-feat{border-color:var(--cta)}
.ecard .art{aspect-ratio:4/3}
.ecard .art .shade{display:none}
.ecard h3{font-weight:800;font-size:18px;font-family:var(--sans)}
.ecard h3 a{color:var(--ink)}
.ecard h3 a:hover{color:var(--cz-blue)}
.ecard .where{color:var(--muted);display:flex;gap:7px;align-items:flex-start;line-height:1.4}
.ecard .where .ic{margin-top:1px;width:16px;height:16px}
.ecard .foot{border-top:1px solid var(--line2)}
.price b{color:var(--ink);font-weight:800}
.price small{color:var(--dim)}
.ecard.is-out{opacity:1} .ecard.is-out .art{filter:grayscale(.85)}
.soon-card{background:var(--navy);border:1.5px dashed #b9cbe8}
.soon-card .where{color:var(--muted)}
details.notify>summary{display:inline-flex;align-items:center;gap:6px}

/* official flyer treatment (unchanged from v1) */
.art.flyer,.photo.flyer{background:var(--flyer-backdrop);isolation:isolate}
.art.flyer::before,.photo.flyer::before{content:"";position:absolute;inset:-30px;z-index:0;background:var(--flyer) center/cover no-repeat;filter:blur(24px) saturate(1.15) brightness(1.05);opacity:.55}
.art.flyer::after,.photo.flyer::after{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(180deg,rgba(255,255,255,.25),rgba(255,255,255,0) 40%)}
.art.flyer img,.photo.flyer img,.ev-hero .photo.flyer img{z-index:1;object-fit:contain;padding:8px;filter:drop-shadow(0 6px 14px rgba(15,26,46,.35))}
.art.flyer .shade{display:none}

/* ---------- carousel / trust band ---------- */
.car-nav button{background:#fff;border:1.5px solid var(--line);color:var(--cz-blue)}
.car-nav button:hover{border-color:var(--cz-blue)}
.trust{background:var(--cz-blue-pale);border-block:0;padding:26px 0}
.trust .wrap>div{display:flex;flex-direction:column;align-items:center;gap:2px}
.trust b{color:var(--cz-blue-deep);font-family:var(--sans);font-weight:800}
.trust span{color:var(--muted)}
.trust .ic{width:26px;height:26px;margin-bottom:4px}

/* ---------- "Not sure where to start?" photo tiles (unique image per city x category) ---------- */
.guides{grid-template-columns:repeat(2,1fr);gap:14px}
@media(min-width:760px){.guides{grid-template-columns:repeat(3,1fr);gap:18px}}
.guide{position:relative;display:block;padding:0;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);color:var(--ink);text-decoration:none!important;transition:transform .2s,box-shadow .2s}
.guide:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.guide .art{position:relative;width:auto;height:auto;flex:none;border-radius:0;aspect-ratio:16/10;overflow:hidden;background:#dfe8f5}
.guide .art img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.guide:hover .art img{transform:scale(1.05)}
.guide .cat{position:absolute;left:10px;top:10px;display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.95);color:var(--ink);border-radius:999px;padding:6px 10px 6px 8px;font:700 12px/1 var(--sans)}
.guide .cat .ic{width:16px;height:16px}
.guide .txt{padding:12px 14px 14px}
.guide .eyebrow{font-size:10.5px}
.guide h3{font:800 17px/1.2 var(--sans);margin:3px 0 4px}
.guide .dim{font-size:13px}
@media(max-width:479px){.guide h3{font-size:15px}.guide .txt{padding:10px 12px 12px}}

/* ---------- ticket alerts band ---------- */
.alert-box{background:linear-gradient(135deg,#2863CB 0%,#1B4A9C 100%);border:0;color:#fff;box-shadow:0 18px 40px -22px rgba(27,74,156,.9);position:relative;overflow:hidden}
.alert-box::after{content:"";position:absolute;right:-40px;top:-40px;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(241,81,34,.45),transparent 70%);pointer-events:none}
.alert-box .eyebrow{color:#FFD0BC}
.alert-box h2{color:#fff}
.alert-box .muted,.alert-box p{color:#e6eefb}
.alert-box .input{background:#fff;border-color:#fff;color:var(--ink)}
.alert-box .field-msg.is-error{color:#ffe1e1}
.alert-box a{color:#fff;text-decoration:underline}
.alert-box .dim,.alert-box label,.alert-box small{color:#e6eefb}

/* ---------- forms ---------- */
.input,select.input{background:#fff;border:1.5px solid #c3cfe0;color:var(--ink)}
select.input option{background:#fff;color:var(--ink)}
.input:focus{border-color:var(--cz-blue);box-shadow:0 0 0 3px rgba(36,91,187,.18)}
.input.is-error,.input[aria-invalid="true"]{border-color:var(--red);box-shadow:0 0 0 3px rgba(180,35,24,.15)}
.field-msg.is-error{color:#b42318}
.form-grid label{color:var(--muted)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,.pkg:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--cz-blue);outline-offset:2px}
.navbar a:focus-visible{outline:3px solid #fff;outline-offset:-4px}

/* ---------- city page: ONE slim filter bar (sticky under the blue nav bar) ---------- */
.toolbar{position:sticky;top:var(--navbar-h);z-index:30;background:rgba(255,255,255,.97);backdrop-filter:none;border-bottom:1px solid var(--line);padding:0;box-shadow:0 8px 16px -14px rgba(15,26,46,.35)}
.toolbar .wrap{display:flex;align-items:center;gap:10px;height:60px}
.toolbar .chips{flex:1;min-width:0;padding:0;gap:8px;-webkit-mask-image:linear-gradient(90deg,#000 92%,transparent);mask-image:linear-gradient(90deg,#000 92%,transparent);padding-right:24px}
.toolbar .chip{padding:9px 14px}
.fbtn{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 14px;border-radius:999px;border:1.5px solid var(--ink);background:#fff;color:var(--ink);font:700 14px/1 var(--sans);cursor:pointer}
.fbtn:hover{background:var(--navy)}
.fbtn .badge{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--cta-btn);color:#fff;font:800 11.5px/20px var(--sans);text-align:center}
.fbtn .badge[hidden]{display:none}
.seg{flex:0 0 auto;margin-left:0;border:1.5px solid var(--line);background:#fff}
.seg button{display:inline-flex;align-items:center;gap:6px;color:var(--muted);padding:9px 13px}
.seg button .ic{width:17px;height:17px}
.seg button.on{background:var(--cz-blue);color:#fff}
.seg button.on .ic{color:#fff;--ic-accent:#FFD0BC}
@media(max-width:599px){.toolbar .wrap{height:56px;gap:8px}.fbtn .lbl{display:none}.fbtn{padding:0 11px}.seg button .lbl{display:none}.seg button{padding:9px 11px}}
/* the old 3-row toolbar parts are moved into the drawer; this hides them if a page still prints them */
.toolbar .toolrow,.toolbar .chips[aria-label="Features"]{display:none}

/* applied-filter pills under the bar (not sticky) */
.applied{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}
.applied:empty{display:none}
.applied button{display:inline-flex;align-items:center;gap:6px;border:0;background:var(--cz-blue-pale);color:var(--cz-blue-deep);border-radius:999px;padding:7px 10px 7px 12px;font:700 13px/1 var(--sans);cursor:pointer}
.applied button .ic{width:14px;height:14px;color:var(--cz-blue-deep);--ic-accent:var(--cz-blue-deep)}
.applied .clear{background:none;color:var(--cz-blue);text-decoration:underline}
.results-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:6px 0 14px}
.results-head h2{font:800 22px/1.2 var(--sans);margin:0}
.fp-links{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0}
.fp-links::before{content:attr(data-label);font:700 12px/1 var(--sans);color:var(--dim);margin-right:2px}
.fp-links a{background:#fff;border:1.5px solid var(--line);color:var(--ink);border-radius:999px;padding:7px 12px;font:600 13px/1 var(--sans)}
.fp-links a:hover{border-color:var(--cz-blue);text-decoration:none}
.fp-links a.on{border-color:var(--cz-blue);background:var(--cz-blue-pale);color:var(--cz-blue-deep)}
.fp-links a code,.fp-links a .n{color:var(--dim)}

/* filter drawer: right sheet on desktop, bottom sheet on phones */
.fdrawer{position:fixed;inset:0;z-index:80;display:none}
.fdrawer.open{display:block}
.fdrawer .scrim{position:absolute;inset:0;background:rgba(10,24,58,.45);animation:fd-fade .2s}
.fdrawer .sheet{position:absolute;top:0;right:0;bottom:0;width:min(440px,100%);background:#fff;display:flex;flex-direction:column;box-shadow:-20px 0 50px -20px rgba(10,24,58,.5);animation:fd-in .22s ease-out}
@media(max-width:599px){.fdrawer .sheet{top:auto;left:0;width:100%;max-height:88vh;border-radius:20px 20px 0 0;animation:fd-up .22s ease-out}}
@keyframes fd-in{from{transform:translateX(30px);opacity:.4}}
@keyframes fd-up{from{transform:translateY(40px);opacity:.4}}
@keyframes fd-fade{from{opacity:0}}
@media (prefers-reduced-motion:reduce){.fdrawer .sheet,.fdrawer .scrim{animation:none}}
.fdrawer header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line2)}
.fdrawer header h2{font:800 20px/1 var(--sans);margin:0}
.icon-btn{width:40px;height:40px;border-radius:50%;border:0;background:var(--navy);display:grid;place-items:center;cursor:pointer;color:var(--ink)}
.icon-btn:hover{background:var(--navy2)}
.icon-btn .ic{color:var(--ink);--ic-accent:var(--ink);width:20px;height:20px}
.fdrawer .body{flex:1;overflow-y:auto;padding:6px 18px 18px;overscroll-behavior:contain}
.fgroup{padding:16px 0;border-bottom:1px solid var(--line2)}
.fgroup:last-child{border-bottom:0}
.fgroup h3{font:800 14px/1 var(--sans);text-transform:uppercase;letter-spacing:.08em;color:var(--dim);margin:0 0 12px}
.fgroup .chips{flex-wrap:wrap;overflow:visible;padding:0}
.fgroup .input{width:100%;border-radius:12px;padding:12px 14px;font-size:15px}
.fdrawer footer{display:flex;gap:10px;align-items:center;padding:14px 18px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line2);background:#fff}
.fdrawer footer .btn-gold{flex:1;font-size:19px;font-weight:800;background:var(--cta)}
.fdrawer footer .reset{background:none;border:0;color:var(--cz-blue);font:700 14px/1 var(--sans);text-decoration:underline;cursor:pointer;padding:10px}
body.fd-open{overflow:hidden}

/* ---------- city page: guide, neighbourhoods, getting home, FAQ, trust, nearby ---------- */
.answer{color:var(--ink)}
.crumbs{color:var(--dim)} .crumbs a{color:var(--cz-blue)}
.stat-tile{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}
.stat-tile b{color:var(--cz-blue-deep);font-weight:800}
.stat-tile span{color:var(--muted)}
.cityguide{background:var(--navy);border-top:1px solid var(--line2);padding:56px 0}
.cityguide .lead{display:grid;gap:22px;align-items:start;margin-bottom:28px}
@media(min-width:900px){.cityguide .lead{grid-template-columns:1.1fr .9fr;gap:40px}}
.cityguide h2{font:800 clamp(26px,4vw,36px)/1.12 var(--sans);margin:.2em 0 .35em;color:var(--ink)}
.cityguide .lead p{color:var(--muted);font-size:16.5px;line-height:1.6;margin:0 0 10px}
.cityguide .lead p b{color:var(--ink)}
.mix{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.mix div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;gap:12px;align-items:center}
.mix .ic{width:30px;height:30px}
.mix b{display:block;font:800 22px/1 var(--sans);color:var(--ink)}
.mix span{font-size:13px;color:var(--muted)}
.gblock{margin-top:30px}
.gblock>h3{display:flex;align-items:center;gap:10px;font:800 20px/1.2 var(--sans);color:var(--ink);margin:0 0 14px}
.gblock>h3 .ic{width:24px;height:24px}
.hoods{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;list-style:none;padding:0;margin:0}
.hoods li{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;display:flex;gap:10px;align-items:flex-start;margin:0}
.hoods li .ic{margin-top:2px}
.hoods b{display:block;color:var(--ink);font-size:14.5px;line-height:1.3}
.hoods span{font-size:13px;color:var(--muted)}
.hoods .from{color:var(--cta-ink);font-weight:700}
.duo{display:grid;gap:14px}
@media(min-width:760px){.duo{grid-template-columns:1fr 1fr}}
.icard{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow);display:flex;gap:16px;align-items:flex-start}
.icard .bubble{flex:0 0 auto;width:52px;height:52px;border-radius:14px;display:grid;place-items:center;background:var(--cz-blue-pale)}
.icard .bubble.o{background:var(--cta-pale)}
.icard .bubble .ic{width:28px;height:28px}
.icard h3{font:800 17px/1.25 var(--sans);margin:2px 0 6px;color:var(--ink)}
.icard p{margin:0;color:var(--muted);font-size:15px;line-height:1.55}
.icard ul{margin:8px 0 0;padding:0;list-style:none}
.icard li{margin:4px 0;color:var(--muted);font-size:15px}
.icard li a{font-weight:700}

.faqwrap{padding:56px 0}
.faqwrap .grid{display:grid;gap:24px}
@media(min-width:900px){.faqwrap .grid{grid-template-columns:320px 1fr;gap:48px}.faqwrap .side{position:sticky;top:calc(var(--navbar-h) + 76px);align-self:start}}
.faqwrap .side h2{font:800 clamp(26px,4vw,34px)/1.12 var(--sans);margin:.2em 0 .4em}
.faqwrap .side p{color:var(--muted);margin:0 0 16px}
.faq details{background:#fff;border:1px solid var(--line);border-radius:14px;padding:0;margin:0 0 10px;box-shadow:0 1px 2px rgba(15,26,46,.05);transition:border-color .15s}
.faq details[open]{border-color:#a9c3ea;box-shadow:var(--shadow)}
.faq summary{padding:16px 18px;color:var(--ink);font:700 16px/1.35 var(--sans);align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";flex:0 0 28px;height:28px;border-radius:50%;background:var(--cz-blue-pale) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23245BBB' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M12 6v12M6 12h12'/%3E%3C/svg%3E") center/16px no-repeat;color:transparent;font-size:0}
.faq details[open] summary::after{content:"";background:var(--cz-blue) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M6 12h12'/%3E%3C/svg%3E") center/16px no-repeat}
.faq p{color:var(--muted);margin:0;padding:0 18px 18px;line-height:1.6}
.card.faq details{box-shadow:none}

.trustcards{display:grid;gap:14px;margin-top:8px}
@media(min-width:760px){.trustcards{grid-template-columns:1fr 1fr}}
.nearby-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media(min-width:760px){.nearby-cards{grid-template-columns:repeat(5,1fr)}}
.ncard{position:relative;display:block;border-radius:14px;overflow:hidden;aspect-ratio:4/3;color:#fff;text-decoration:none!important;box-shadow:var(--shadow)}
.ncard img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.ncard:hover img{transform:scale(1.05)}
.ncard::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(10,24,58,.85))}
.ncard span{position:absolute;left:12px;bottom:10px;z-index:1;font:800 16px/1.2 var(--sans)}
.ncard small{display:block;font:600 12px/1.2 var(--sans);color:#e6eefb}
.ncard.all{background:var(--cz-blue);display:grid;place-items:center;text-align:center}
.ncard.all::after{display:none}
.ncard.all span{position:static;display:flex;flex-direction:column;align-items:center;gap:8px}

/* (legacy) old prose block, if still printed */
.prose{color:var(--muted)} .prose strong{color:var(--ink)}
.faq summary,.faq p{max-width:none}
.empty{border-color:var(--line);color:var(--muted)}
.picks{display:none}   /* "<City>'s best New Year's Eve, at a glance" is removed (remove its markup; this is a safety net) */
.banner{border-color:#f1c27d;background:#fff4e0;color:var(--ink)}
.banner.crit{border-color:#f3a5a0;background:#fde4e4}
.spotlight{background:#fff;border:1px solid var(--line);border-top:4px solid var(--cta);box-shadow:var(--shadow-lg)}
.mapview{background:var(--map-bg);border-color:var(--line)}
.map-note{color:var(--dim)}

/* ---------- event page ---------- */
.ev-hero{display:grid;grid-template-columns:1fr;gap:18px;align-items:start;min-height:0;max-width:1200px;margin:0 auto;padding:16px 18px 0}
.ev-hero .photo{position:relative;inset:auto;border-radius:var(--r);overflow:hidden;aspect-ratio:16/10;border:1px solid var(--line);box-shadow:var(--shadow);background:#e9eef6}
.ev-hero .photo::after{display:none}
.ev-hero .photo.flyer::after{display:block}
.ev-hero .photo.flyer{aspect-ratio:1/1}
.ev-hero .inner{padding:0;order:-1}
.ev-hero h1{font-weight:800;color:var(--ink);font-size:clamp(28px,6vw,46px);line-height:1.08;font-family:var(--sans)}
.ev-hero .photo .zoom{position:absolute;right:10px;bottom:10px;z-index:2;display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.95);color:var(--ink);border-radius:999px;padding:7px 11px;font:700 12.5px/1 var(--sans);box-shadow:0 4px 12px -6px rgba(0,0,0,.5)}
.ev-hero .photo .zoom .ic{width:15px;height:15px}
.facts{color:var(--ink);display:grid;grid-template-columns:1fr;gap:10px;margin-top:14px;padding:14px 16px;background:var(--navy);border:1px solid var(--line2);border-radius:14px}
.facts span{display:flex;gap:10px;align-items:flex-start;line-height:1.4}
.facts .ic{width:20px;height:20px;margin-top:0}
.facts .gold-text,.facts b{color:var(--cta-ink)}
.ev-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.ev-tags .tag{box-shadow:none;border:1px solid var(--line);background:#fff}
.verified{color:var(--muted);display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center}
.verified .ok{color:#11683f;display:inline-flex;gap:6px;align-items:center;font-weight:700}
.verified .ok .ic{color:#11683f;--ic-accent:#11683f}
.verified a{display:inline-flex;gap:5px;align-items:center}
@media(min-width:600px){.facts{grid-template-columns:1fr 1fr;gap:12px 20px}}
@media(min-width:900px){
  .ev-hero{grid-template-columns:400px 1fr;gap:36px;padding-top:26px}
  .ev-hero .inner{order:0;padding-top:4px}
  .ev-hero .photo,.ev-hero .photo.flyer{aspect-ratio:4/5}
}
.card{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}
.card h2,.card h3{font-weight:800;color:var(--ink);font-family:var(--sans)}
.card>h2{display:flex;align-items:center;gap:10px}
.card>h2 .ic{width:24px;height:24px}
.buybox{border-top:0}
.buy-card{border-top:5px solid var(--cta)!important}
.buy-card .serif.gold-text{color:var(--ink)!important;font-family:var(--sans);font-weight:800}
.buy-card .meta{font-size:14px;display:flex;flex-direction:column;gap:8px}
.buy-card .meta span{display:flex;gap:9px;align-items:flex-start}
.tiers th{color:var(--dim);border-bottom:2px solid var(--line)}
.tiers td{border-bottom:1px solid var(--line2)}
.tiers td b{color:var(--ink)} .tiers .amt{color:var(--ink);font-weight:800}
.tiers tr.sold td{opacity:.6}
.incl{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.incl div{background:var(--navy);border:1px solid var(--line2);border-radius:12px;padding:12px;font-weight:600}
.incl i{display:none}
.incl .ic{width:22px;height:22px}
.dj .art{border:3px solid #d6e5fb}
.dj span{color:var(--muted)}
.editor{border-left:4px solid var(--cta);background:linear-gradient(90deg,var(--cta-pale),#fff)}
.editor .eyebrow{color:var(--cta-ink)}
.disclose{color:var(--dim);border:1px solid var(--line);background:var(--navy)}
.share .btn .ic{width:17px;height:17px}
.mobile-buy{background:rgba(255,255,255,.98);border-top:1px solid var(--line);box-shadow:0 -8px 20px -12px rgba(15,26,46,.3)}
.soldout{border-color:#f3a5a0;background:#fde4e4;color:var(--ink)}
details.report summary{color:var(--cz-blue)}
code.path{color:var(--cz-blue-deep);background:var(--cz-blue-pale)}
.factbox th{color:var(--dim)} .factbox td{border-bottom:1px solid var(--line2)}
.pick.sel{border-color:var(--cz-blue);box-shadow:0 0 0 1px var(--cz-blue)}
.ok-msg{color:#11683f}
.flyer-credit{color:var(--dim);font-size:12.5px}

/* ---------- photo gallery strip (between "About this party" and "What's included") ---------- */
.gal{padding:18px}
.gal h2{font-size:20px!important;margin:0 0 12px}
.gal .count{font:600 13px/1 var(--sans);color:var(--dim);margin-left:auto}
.gal-strip{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 8px;scrollbar-width:thin}
.gal-strip button{flex:0 0 auto;position:relative;width:132px;aspect-ratio:1/1;border-radius:12px;overflow:hidden;border:2px solid transparent;padding:0;background:#e9eef6;cursor:zoom-in;scroll-snap-align:start}
.gal-strip button:hover{border-color:var(--cz-blue)}
.gal-strip button[aria-current="true"]{border-color:var(--cta)}
.gal-strip img{width:100%;height:100%;object-fit:cover}
.gal-strip .is-flyer img{object-fit:contain;background:#e9eef6}
.gal-strip .lbl{position:absolute;left:6px;bottom:6px;background:rgba(255,255,255,.95);color:var(--ink);border-radius:999px;padding:4px 8px;font:700 11px/1 var(--sans)}
@media(min-width:760px){.gal-strip button{width:150px}}
.gal-none{color:var(--dim);font-size:14px}

/* lightbox */
.lightbox{position:fixed;inset:0;z-index:90;background:rgba(6,12,28,.94);display:none;flex-direction:column;color:#fff}
.lightbox.open{display:flex}
.lightbox .lb-top{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;gap:10px}
.lightbox .lb-count{font:700 14px/1 var(--sans);color:#dce6f5}
.lightbox .icon-btn{background:rgba(255,255,255,.12)} .lightbox .icon-btn:hover{background:rgba(255,255,255,.22)}
.lightbox .icon-btn .ic{color:#fff;--ic-accent:#fff}
.lightbox .lb-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:0 64px;touch-action:pan-y}
.lightbox figure{margin:0;max-width:100%;max-height:100%;display:flex;flex-direction:column;align-items:center}
.lightbox img{max-width:min(1200px,100%);max-height:calc(100vh - 170px);object-fit:contain;border-radius:6px;box-shadow:0 20px 60px -20px #000}
.lightbox figcaption{margin-top:10px;font-size:13px;color:#c9d6ea;text-align:center}
.lightbox .lb-prev,.lightbox .lb-next{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px}
.lightbox .lb-prev{left:10px} .lightbox .lb-next{right:10px}
.lightbox .lb-thumbs{display:flex;gap:8px;justify-content:center;padding:12px;overflow-x:auto}
.lightbox .lb-thumbs button{flex:0 0 auto;width:56px;height:56px;border-radius:8px;overflow:hidden;border:2px solid transparent;padding:0;background:#223;opacity:.6;cursor:pointer}
.lightbox .lb-thumbs button[aria-current="true"]{border-color:var(--cta);opacity:1}
.lightbox .lb-thumbs img{width:100%;height:100%;object-fit:cover;max-height:none;border-radius:0;box-shadow:none}
@media(max-width:599px){.lightbox .lb-stage{padding:0 8px}.lightbox .lb-prev,.lightbox .lb-next{display:none}.lightbox img{max-height:calc(100vh - 190px)}}

/* ---------- about page ---------- */
.hero.about-hero{min-height:420px;display:flex;align-items:flex-end}
.hero.about-hero .inner{text-align:left;padding:60px 18px 40px;width:100%}
.hero.about-hero h1{font-size:clamp(36px,7vw,68px);line-height:1.03;margin:.15em 0 .2em}
.since{display:inline-flex;align-items:center;gap:10px;background:var(--cta);color:#fff;border-radius:999px;padding:9px 16px 9px 12px;font:800 15px/1 var(--sans);text-shadow:none}
.since .ic{color:#fff;--ic-accent:#fff}
.bignums{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:-36px;position:relative;z-index:2}
@media(min-width:900px){.bignums{grid-template-columns:repeat(4,1fr);gap:16px}}
.bignum{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-lg);padding:20px 18px;text-align:center}
.bignum .ic{width:30px;height:30px;margin-bottom:6px}
.bignum b{display:block;font:800 clamp(30px,5vw,44px)/1 var(--sans);color:var(--cz-blue-deep);letter-spacing:-.02em}
.bignum b em{font-style:normal;color:var(--cta)}
.bignum span{display:block;margin-top:6px;font-size:13.5px;color:var(--muted)}
.story{display:grid;gap:30px;align-items:start}
@media(min-width:900px){.story{grid-template-columns:1fr 1fr;gap:56px}}
.story h2{font:800 clamp(26px,4vw,36px)/1.12 var(--sans);margin:.2em 0 .4em}
.story p{color:var(--muted);font-size:16.5px;line-height:1.65}
.timeline{list-style:none;margin:0;padding:0;position:relative}
.timeline::before{content:"";position:absolute;left:23px;top:8px;bottom:8px;width:3px;border-radius:3px;background:linear-gradient(180deg,var(--cz-blue),var(--cz-blue) 70%,var(--cta))}
.timeline li{position:relative;padding:0 0 26px 70px;margin:0}
.timeline li:last-child{padding-bottom:0}
.timeline .dot{position:absolute;left:0;top:0;width:49px;height:49px;border-radius:50%;background:#fff;border:3px solid var(--cz-blue);display:grid;place-items:center;box-shadow:0 0 0 5px #fff}
.timeline .dot .ic{width:22px;height:22px}
.timeline li.now .dot{background:var(--cta);border-color:var(--cta)}
.timeline li.now .dot .ic{color:#fff;--ic-accent:#fff}
.timeline .yr{display:inline-block;font:800 13px/1 var(--sans);letter-spacing:.06em;color:#fff;background:var(--cz-blue);border-radius:999px;padding:6px 10px;margin-top:4px}
.timeline li.now .yr{background:var(--cta-btn)}
.timeline h3{font:800 18px/1.25 var(--sans);margin:8px 0 4px;color:var(--ink)}
.timeline p{margin:0;color:var(--muted);font-size:15px;line-height:1.55}
.ph{background:repeating-linear-gradient(135deg,#fff6f1 0 10px,#fff 10px 20px);outline:1px dashed #f3b79f;border-radius:4px;padding:0 3px}
.pillars{display:grid;gap:14px}
@media(min-width:760px){.pillars{grid-template-columns:repeat(3,1fr)}}

/* ---------- footer: modern blue band ---------- */
.site-foot{position:relative;margin-top:0;background:var(--cz-blue-deep);color:#dce6f5;border-top:0;padding:0 0 28px;font-size:14px}
.site-foot::before{display:none}
.foot-top{background:var(--cz-blue);padding:26px 0}
.foot-top .wrap{display:flex;flex-wrap:wrap;gap:16px 28px;align-items:center;justify-content:space-between}
.foot-top b{font:800 20px/1.2 var(--sans);color:#fff;display:block}
.foot-top span{color:#e6eefb}
.foot-top .btn-gold{background:var(--cta);font-size:19px;font-weight:800;padding:13px 22px}
.site-foot .cols{padding-top:36px;gap:28px}
@media(min-width:900px){.site-foot .cols{grid-template-columns:1.25fr 1.4fr .8fr .8fr}}
.site-foot h4{color:#FFD0BC;font:800 12px/1 var(--sans);letter-spacing:.14em}
.site-foot a{color:#fff}
.site-foot a:hover{color:#FFD0BC;text-decoration:none}
.site-foot .muted,.site-foot .dim,.site-foot p,.site-foot small{color:#dce6f5}
.site-foot a.brand{background:#fff;border-radius:12px;padding:6px 10px;display:inline-flex;width:max-content}
.site-foot a.brand img{height:36px!important}
.foot-cities{display:flex;flex-wrap:wrap;gap:8px}
.foot-cities a{display:inline-block;padding:7px 12px;border-radius:999px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);font:600 13px/1 var(--sans)}
.foot-cities a:hover{background:rgba(255,255,255,.2)}
.foot-links a{display:flex;align-items:center;gap:8px;padding:5px 0}
.foot-links .ic{width:16px;height:16px;color:#FFD0BC;--ic-accent:#FFD0BC}
.foot-bottom{margin-top:30px;padding-top:18px;border-top:1px solid rgba(255,255,255,.18);display:flex;flex-wrap:wrap;gap:8px 20px;justify-content:space-between;font-size:12.5px;color:#c9d6ea}
.foot-bottom .since{background:none;padding:0;font-size:12.5px;font-weight:700;color:#FFD0BC}
.promo-cta{background:rgba(255,255,255,.08);border:1.5px dashed rgba(255,255,255,.55)}
.site-foot .promo-cta b,.site-foot .promo-cta span{color:#fff!important}

/* phones: nothing scrolls sideways */
@media(max-width:599px){.wrap{padding:0 16px}.section{padding:36px 0}.cityguide,.faqwrap{padding:40px 0}}

/* ---------- fixes after screenshot review 1 ---------- */
.art svg.ic,.art .ic{position:static;inset:auto}
.guide .cat .ic{width:16px;height:16px}
.toolbar .chips{flex-wrap:nowrap!important;overflow-x:auto!important}
.city-grid .city.small{flex-direction:column}
.city-grid .city.small .art{width:auto;aspect-ratio:16/10;min-height:0}
.city-grid .city.small h3{font-size:19px}
.hero.city-hero{min-height:360px}
.hero.city-hero .crumbs{font-size:13px;margin-bottom:12px}
.hero.city-hero .eyebrow{margin-top:0}
/* fix after screenshot review 2: grid children must be allowed to shrink (2px overflow at 375) */
.cityguide .lead>*,.faqwrap .grid>*,.duo>*,.mix>div{min-width:0}
@media(max-width:599px){.mix div{padding:12px 10px;gap:8px}.mix .ic{width:24px;height:24px}}
/* fixes after screenshot review 2 */
.lightbox{background:rgba(6,12,28,.975);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
@media(max-width:599px){
  .hero-stats{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:-16px;padding-right:16px}
  .hero-stats::-webkit-scrollbar{display:none}
  .hero-stats span{flex:0 0 auto}
  .fbtn .lbl{display:inline}.fbtn{padding:0 12px}
}

/* ---- theme: light (themes/light-build.css) ---- */
/* clubZone NYE light theme: builder additions. Loads after themes/nye-light.css (the design file, kept verbatim so
   design-agent can replace it as a whole). Only what the design file does not set: the browser colour scheme,
   <meta name="theme-color"> (read by the build) and the flyer credit line added in 1.3.0. */
:root{color-scheme:light;--theme-color:#ffffff}
.flyer-credit{color:var(--dim)}
/* 1.4.0 builder additions (not in the design file): the compact lineup row (no placeholder photo), the gallery
   credit line, the area-page link under the facts box, and area chips in the filter drawer. */
.lineup-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.lineup-list li{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line);border-radius:12px;min-width:0}
.lineup-list li span{color:var(--muted);font-size:14px}
.gal .gallery-credit{margin:10px 0 0;font-size:13px;color:var(--dim)}
.area-link{margin:12px 0 0;font-weight:700}
.area-link a{display:inline-flex;align-items:center;gap:6px}
.fdrawer .chips a.chip{text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.fdrawer .chip .n{opacity:.7;font-weight:500}
/* 1.4.1 gate fixes */
.hero .answer{color:rgba(255,255,255,.92)}
.hero .answer b,.hero .answer strong,.hero .answer a,.hero .answer .dim{color:#fff}
.foot-links h4.foot-sub{margin-top:20px}
.area-hero{background:linear-gradient(135deg,#0d2a5c 0%,#1c4fa8 55%,#2863CB 100%)}
.area-notes h2{font-size:clamp(22px,3.5vw,28px)}
.area-notes ul{padding-left:20px;max-width:none}
.fdrawer .area-page-link{display:inline-flex;align-items:center;gap:4px;font:700 13px/1.2 var(--sans);color:var(--cz-blue);padding:8px 4px;white-space:nowrap}
@media(max-width:599px){.hoods{grid-template-columns:repeat(2,minmax(0,1fr))}.hoods li{padding:10px;gap:6px}}
@media(min-width:1024px){.gal-strip{flex-wrap:wrap;overflow-x:visible;scroll-snap-type:none}}
/* 1.4.2: the design's ".hero a{color:#fff}" also caught link buttons: "How it works" was white on white */
.hero a.btn{text-decoration:none}
.hero a.btn-ghost{color:var(--cz-blue)}
.hero a.btn-ghost:hover,.hero a.btn-ghost:focus-visible{color:var(--cz-blue-deep)}
.hero a.btn-gold,.hero a.btn-gold:hover{color:#fff}
.form-errors{background:#fff5f4}
.form-errors p{color:#0f1a2e}
.sent-check{background:#e7f6ee;color:#11683f}
.sent-check .ic{color:#11683f;--ic-accent:#11683f}
.sent-card h1{color:#0f1a2e}
/* 1.4.2 hub stats band: full-width brand blue, white numbers, near-white labels (AA on every stop of the gradient) */
.trust{background:linear-gradient(135deg,#173f86 0%,#245BBB 55%,#2863CB 100%);border-block:0;padding:30px 0;color:#fff}
.trust b{color:#fff}
.trust span{color:#eef3fc}
.trust .ic{color:#FFD0BC;--ic-accent:#FFD0BC}
/* 1.4.2 phone footer (720 px and below): tagline in one line, Cities and Popular side by side as short lists,
   clubZone links in one row, no long paragraphs. The desktop footer is unchanged. */
@media(max-width:720px){.foot-long{display:none}.foot-top{padding:16px 0}.foot-top .wrap{flex-wrap:nowrap;gap:12px}.foot-top b{font-size:16px;line-height:1.25}.foot-top .btn-gold{font-size:15px;padding:10px 14px;white-space:nowrap;flex:0 0 auto}.site-foot .cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px 16px;padding-top:22px}.foot-brand{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.foot-brand p{margin:0!important;order:3;flex-basis:100%;font-size:13.5px}.foot-brand .since{padding:6px 12px 6px 10px;font-size:13px}.site-foot h4{margin:0 0 6px}.foot-cities{display:flex;flex-direction:column;gap:0}.foot-cities a{display:block;padding:4px 0;background:none;border:0;border-radius:0;font:600 14px/1.35 var(--sans)}.foot-links a{padding:4px 0;font-size:14px;line-height:1.35}.foot-links h4.foot-sub{margin-top:14px}.foot-club{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:2px 16px;align-items:center}.foot-club h4{flex-basis:100%}.foot-club a{font-size:13px;padding:2px 0}.foot-club .ic{display:none}.foot-bottom{margin-top:16px;padding-top:12px}}
/* 1.4.2 city bottom: compact announcing-soon cards, quick picks, neighbourhood tiles (white text on brand blue, AA) */
.soon-card{background:#fff;border:1.5px dashed #b9cbe8}
.picks-grid a{background:#fff;border-color:#dbe4f3;box-shadow:0 1px 2px rgba(23,63,134,.06)}
.picks-grid a:hover,.picks-grid a:focus-visible{border-color:#245BBB;box-shadow:0 4px 14px rgba(36,91,187,.14)}
.picks-grid a b{color:#0f1f3d}
.guide-fig{box-shadow:0 8px 24px rgba(15,31,61,.14)}
.cityguide ul.hood-tiles>li{background:linear-gradient(135deg,#173f86 0%,#245BBB 100%);color:#fff;box-shadow:0 4px 14px rgba(23,63,134,.18)}
.cityguide ul.hood-tiles>li:nth-child(3n+2){background:linear-gradient(135deg,#1d4fa8 0%,#2863CB 100%)}
.cityguide ul.hood-tiles>li:nth-child(3n){background:linear-gradient(135deg,#102e66 0%,#1f4f9e 100%)}
.cityguide ul.hood-tiles b,.cityguide ul.hood-tiles b a,.cityguide ul.hood-tiles .from{color:#fff}
.cityguide ul.hood-tiles span{color:#eef3fc}
.cityguide ul.hood-tiles .ic{color:#FFD0BC;--ic-accent:#FFD0BC}
.cityguide ul.hood-tiles li.has-link:focus-within{outline-color:#173f86}
/* 1.4.2: the phone footer button text is 15px, not the design's 19px large text, so it takes the small-button orange (white 4.6:1) */
@media(max-width:720px){.foot-top .btn-gold{background:var(--cta-btn)}.foot-top .btn-gold:hover{background:var(--cta-btn-hover)}}

/* 2.7.1 (item 1.13 change 2, design P3): below 720 px the main guide's city tiles take the look of the "More New Year's Eve near…"
   tiles (.ncard): the photo fills a 4:3 tile, name and line in white over the shade; about 130 px tall, 2 per row. */
@media(max-width:719.98px){
:where(html:not(.nye-hold)) .city-grid.pf-tiles{grid-template-columns:repeat(2,1fr);gap:12px}
:where(html:not(.nye-hold)) .city-grid.pf-tiles .city{position:relative;display:block;aspect-ratio:4/3;border:0;border-radius:14px;color:#fff}
:where(html:not(.nye-hold)) .city-grid.pf-tiles .city .art{position:absolute;inset:0;aspect-ratio:auto}
:where(html:not(.nye-hold)) .city-grid.pf-tiles .city .art::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(10,24,58,.85))}
:where(html:not(.nye-hold)) .city-grid.pf-tiles .city .meta{position:absolute;left:12px;right:10px;bottom:10px;z-index:1;display:block;padding:0}
:where(html:not(.nye-hold)) .city-grid.pf-tiles .city h3{font:800 16px/1.2 var(--sans);color:#fff;margin:0}
:where(html:not(.nye-hold)) .city-grid.pf-tiles .city .stat{display:block;font:600 12px/1.2 var(--sans);color:#e6eefb}
:where(html:not(.nye-hold)) .city-grid.pf-tiles .city .stat b{color:#fff;font-weight:600}
:where(html:not(.nye-hold)) .city-grid.pf-tiles .city .go{display:none}
}

/* 2.7.4 (tester note on 2.7.3, item 8): no sideways scroll on phones from 320 px, in both languages.
   The header: below 380 px (and again below 340 px) a smaller logo and tighter gaps make room for the language link, the
   Alerts link and the Promote button (the English one says "Promote" on phones, see lib/generator/layout.mjs).
   Below 480 px the footer band's gold button may wrap onto two lines (French "Promouvoir votre événement" did not fit), and so
   may the sent pages' lone gold button ("Back to the New Year's Eve guide" was 7 px too wide at 320 px) and an "Also in" chip
   ("Tous les partys du jour de l’An à Toronto" on the French area pages).
   A wide data table (the ticket-prices article) scrolls inside its own box instead of widening the page. */
@media(max-width:379.98px){.site-head .wrap{gap:10px}.site-head .brand img{height:30px}.head-tools{gap:6px}.site-head .head-alerts{gap:4px}.head-cta{padding:8px 10px}}
@media(max-width:339.98px){.site-head .brand img{height:26px}.head-tools{gap:4px}.head-cta{padding:8px}}
@media(max-width:479.98px){.foot-top .btn-gold{white-space:normal;flex:0 1 auto;min-width:0;text-align:center;line-height:1.2}.sent-card>a.btn{white-space:normal;text-align:center;line-height:1.25;max-width:100%}.nearby .chip{white-space:normal;flex:0 1 auto;min-width:0;max-width:100%;line-height:1.25}}
.table-wrap{overflow-x:auto;max-width:100%}
