/* Events and ticketing. Shared page components first, then event-specific styles. */
.events-page{background:#f7f9f8;color:#172e29;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;margin:0}.community-main{width:100%;max-width:1320px;padding:104px 24px 110px;margin:0 auto}.community-main *{box-sizing:border-box}.community-main a:focus-visible,.community-main button:focus-visible{outline:3px solid #d5a548;outline-offset:4px}.community-main h1{font-size:clamp(30px,4vw,50px);line-height:1.12;letter-spacing:-1.5px;margin:12px 0 20px}.community-main h2{font-size:26px;letter-spacing:-.5px;margin:5px 0 12px}.community-main h3{font-size:17px;margin:8px 0}.community-main p{line-height:1.65}.eyebrow{font-size:11px;font-weight:750;letter-spacing:2px;color:#497164}.market-hero{display:flex;justify-content:space-between;align-items:center;gap:28px;padding:42px 48px;background:#e3efe7;border-radius:24px;border:1px solid #d3e5d9}.market-hero h1{font-size:clamp(36px,5vw,62px)}.community-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#19634e;color:#fff!important;border:1px solid transparent;border-radius:10px;padding:14px 22px;text-decoration:none;font:600 14px/1.3 system-ui;cursor:pointer;min-height:46px}.community-button:hover{background:#124c3c}.community-button.secondary{background:#fff;color:#19634e!important;border-color:#ccdcd3}.community-button:disabled{opacity:.6;cursor:wait}.market-search{display:grid;grid-template-columns:2fr 1.2fr 1.3fr 1.1fr auto;align-items:end;gap:14px;background:#fff;padding:24px;border-radius:18px;border:1px solid #e0e8e4;margin:24px 0 36px}.community-main label{display:block;font-size:13px;font-weight:650;color:#385248}.community-main input:not([type=checkbox]),.community-main select,.community-main textarea{display:block;width:100%;padding:13px 12px;border:1px solid #cddbd4;border-radius:8px;margin-top:8px;background:#fff;color:#233c31;font:inherit;min-width:0}.community-main input:focus,.community-main textarea:focus,.community-main select:focus{outline:2px solid #529a7d;outline-offset:1px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:26px 0}.section-heading>span{color:#6b7a73;font-size:13px}.listing-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}.listing-card{display:block;border:1px solid #e0e7e1;border-radius:16px;overflow:hidden;color:inherit;text-decoration:none;background:#fff;transition:transform .18s,box-shadow .18s}.listing-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px #18352812}.listing-image{aspect-ratio:1.2;position:relative;background:#e5ede7;overflow:hidden}.listing-image img{width:100%;height:100%;object-fit:cover}.item-badge{position:absolute;left:12px;top:12px;border-radius:6px;padding:5px 9px;background:#ffffffed;color:#234d3e;font-size:11px;font-weight:700}.listing-card-body{padding:18px}.listing-price{font-size:22px;color:#17614b}.listing-card p{font-size:13px;color:#65776d;margin:8px 0}.listing-card small{font-size:11px;color:#728378}.community-empty{grid-column:1/-1;padding:55px 25px;background:#fff;border:1px dashed #b9cec1;border-radius:16px;text-align:center}.community-empty>a{margin:10px}.community-actions{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:24px 0}.community-actions a{color:#19634e}.community-panel,.community-form{background:#fff;border:1px solid #e0e8e4;border-radius:18px;padding:32px}.narrow{max-width:760px;margin:24px auto}.form-intro{max-width:760px;margin:0 auto 24px}.form-intro>a,.community-main>a{color:#19634e}.community-form p{margin:0 0 24px}.community-form .helptext,.muted{display:block;color:#65796d;font-size:13px;margin-top:8px}.errorlist{color:#b22634;background:#fff2f2;padding:12px 12px 12px 30px;border-radius:8px;font-size:14px}.detail-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:32px;margin:28px 0}.detail-image{width:100%;max-height:660px;object-fit:contain;background:#e8eee9;border-radius:18px}.detail-price{font-size:34px;color:#19634e}.description{overflow-wrap:anywhere}.community-panel hr{border:0;border-top:1px solid #e0e8e4;margin:28px 0}.item-status{background:#edf2ef;padding:12px;border-radius:8px;font-weight:650}.event-hero{background:#f7e9ed;border-color:#f0d9e2}.event-theme .community-button{background:#cd2756}.event-theme .eyebrow,.event-theme .listing-price{color:#b6224d}.event-placeholder{display:grid;place-items:center;height:100%;color:#ad3151;background:#f6e5e9;font-size:52px}.wizard-steps{display:flex;gap:8px;list-style:none;padding:0;margin:24px 0;flex-wrap:wrap;counter-reset:step}.wizard-steps li{flex:1;min-width:110px;background:#eef2ef;border-radius:9px;padding:14px;font-size:12px;font-weight:600;color:#67776c}.wizard-steps li::before{counter-increment:step;content:counter(step) ' · '}.wizard-steps li[aria-current=step]{background:#f8e1e8;color:#a51e44}.wizard-panel[hidden]{display:none}.wizard-panel fieldset{border:0;padding:0;margin:0}.wizard-panel legend{font-size:24px;font-weight:700;margin:0 0 22px}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.field-grid .full-width{grid-column:1/-1}.review-grid{display:grid;grid-template-columns:140px 1fr;gap:12px}.review-grid dt{color:#65796d}.review-grid dd{margin:0;overflow-wrap:anywhere}.event-manage-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.attendee-list{padding:0;list-style:none}.attendee-list li{padding:15px 0;border-bottom:1px solid #e0e8e4;overflow-wrap:anywhere}.event-cover{width:100%;max-height:340px;object-fit:cover;border-radius:12px;margin:0 0 20px}.receipt-reference{overflow-wrap:anywhere;font-family:monospace}.community-main [hidden]{display:none!important}
@media(max-width:1000px){.listing-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.market-search{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-layout{grid-template-columns:1fr 1fr}}@media(max-width:700px){.community-main{padding:88px 16px 100px}.market-hero{padding:26px;align-items:flex-start;flex-direction:column}.market-search{padding:18px;gap:16px}.market-search label:first-child{grid-column:1/-1}.listing-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.listing-card-body{padding:13px}.listing-price{font-size:19px}.listing-card h3{font-size:14px}.detail-layout,.event-manage-grid,.field-grid{grid-template-columns:1fr}.community-panel,.community-form{padding:22px}.section-heading{align-items:flex-start}.review-grid{grid-template-columns:1fr}.review-grid dd{margin-bottom:12px}.wizard-steps li{min-width:80px;font-size:11px;padding:10px}.detail-image{max-height:420px}}@media(prefers-reduced-motion:reduce){.listing-card{transition:none}}

.events-page .events-flashes { max-width: 1272px; margin: 82px auto -74px; padding: 0 24px; position: relative; z-index: 1; }
.events-page .events-flash { padding: 12px 16px; background: #edf6ef; border: 1px solid #c7decf; border-radius: 10px; color: #254d3a; }
.events-page .events-flash.error { background: #fff0f1; border-color: #edc3c8; color: #912735; }

/* Event discovery and ticket management. */
.event-theme .event-hero { min-height: 440px; justify-content: center; flex-direction: column; text-align: center; color: white; background: linear-gradient(180deg,rgba(8,13,24,.35),rgba(8,13,24,.8)), url('../images/event-crowd.jpg') center/cover; border-radius: 24px; padding: 54px 28px; }
.event-theme .event-hero h1 { color: white; font-size: clamp(2.5rem,6vw,4.5rem); max-width: 760px; margin: 12px auto; line-height: 1.08; }
.event-theme .event-hero p { color: #fff; max-width: 620px; margin-inline: auto; }
.event-search { margin: 28px auto; max-width: 760px; }
.event-search label { display: block; font-weight: 700; margin-bottom: 10px; }
.event-search > div { display: flex; gap: 10px; }
.event-search input, #ticket-reference { min-width: 0; flex: 1; border: 1px solid #cbd5e1; border-radius: 10px; padding: 14px; font: inherit; background: #fff; color: #0f172a; }
.event-stats { display: grid; grid-template-columns: repeat(auto-fit,minmax(150px,1fr)); gap: 14px; margin: 24px 0; }
.event-stats > div { padding: 20px; background: #fff; border: 1px solid #e2e8f0; border-radius: 14px; }
.event-stats strong { display: block; font-size: 1.7rem; color: #0f172a; margin-bottom: 6px; }
.event-scanner { margin-bottom: 24px; }
#check-in-form { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-top: 20px; }
#check-in-form label { flex-basis: 100%; }
#ticket-camera { width: 100%; max-width: 480px; border-radius: 12px; margin-top: 16px; }
#scan-result { font-weight: 700; }
#scan-result[data-status='error'] { color: #b91c1c; }
#scan-result[data-status='success'] { color: #15803d; }
.ticket-qr { max-width: 100%; height: auto; }
@media(max-width: 600px) { .event-search > div { flex-direction: column; } .event-theme .event-hero { min-height: 360px; padding: 32px 20px; } }

/* ---- Event detail: banner, facts, and the ticket selection panel ---- */
.event-back { display: inline-block; margin-bottom: 16px; color: #b6224d; text-decoration: none; font-weight: 650; }
.event-banner { width: 100%; max-height: 420px; object-fit: cover; border-radius: 20px; display: block; }
.event-banner-empty { display: grid; place-items: center; height: 260px; background: #f6e5e9; color: #ad3151; font-size: 64px; }
.event-detail-layout { display: grid; grid-template-columns: 1.45fr 1fr; gap: 34px; margin: 30px 0; align-items: start; }
.event-detail-main h1 { margin-top: 0; }
.event-fact { display: flex; align-items: center; gap: 10px; margin: 6px 0; font-weight: 600; color: #35474f; }
.event-venue { display: flex; gap: 14px; align-items: center; background: #f4f6f8; border-radius: 14px; padding: 18px 20px; margin: 20px 0 28px; }
.event-venue-pin { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: #fbe2e9; flex: none; }
.event-venue strong { display: block; }
.event-venue span { font-size: 13px; color: #6b7a73; }

.ticket-panel { position: sticky; top: 96px; }
.ticket-panel > form { background: #fff; border: 1px solid #e0e8e4; border-radius: 18px; padding: 26px; }
.ticket-panel-head { border-bottom: 1px solid #eef2ef; padding-bottom: 16px; margin-bottom: 18px; }
.ticket-panel-head h2 { margin: 0 0 4px; }
.ticket-panel-head p { margin: 0; font-size: 13px; color: #6b7a73; }
.ticket-error { background: #fff2f2; color: #b22634; border-radius: 8px; padding: 12px; font-size: 14px; }
.ticket-list { display: grid; gap: 14px; }
.ticket-option { border: 1px solid #e2e8f0; border-radius: 14px; padding: 18px; transition: border-color .18s, box-shadow .18s; }
.ticket-option.selected { border-color: #cd2756; box-shadow: 0 0 0 1px #cd2756; }
.ticket-option-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ticket-option-head h3 { margin: 0; text-transform: uppercase; font-size: 15px; letter-spacing: .3px; }
.ticket-price { margin: 10px 0 4px; color: #cd2756; font-weight: 700; font-size: 19px; }
.ticket-meta { margin: 0; font-size: 12px; color: #6b7a73; }
.ticket-perks { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 14px 0 0; }
.ticket-perks li { background: #f1f4f6; border-radius: 999px; padding: 6px 12px; font-size: 12px; color: #40525c; }
.stepper { display: flex; align-items: center; gap: 6px; flex: none; }
.stepper button { width: 32px; height: 32px; border-radius: 50%; border: 0; background: #fbe2e9; color: #cd2756; font-size: 17px; line-height: 1; cursor: pointer; }
.stepper button:hover { background: #f8ccd9; }
.stepper input { width: 46px; text-align: center; padding: 6px 4px !important; margin-top: 0 !important; border-radius: 8px; }
.ticket-total { display: flex; justify-content: space-between; align-items: center; margin: 22px 0 16px; padding-top: 18px; border-top: 1px solid #eef2ef; font-size: 18px; }
.ticket-total strong { color: #cd2756; font-size: 24px; }
.ticket-next { width: 100%; }
.ticket-terms { text-align: center; font-size: 12px; }
.ticket-soldout { background: #f4f6f8; border-radius: 10px; padding: 18px; text-align: center; font-weight: 650; }
.support-card { margin-top: 18px; background: #fdf1f4; border: 1px dashed #f3c9d6; border-radius: 16px; padding: 22px; text-align: center; }
.support-card p { margin: 0 0 8px; }
.support-card a { color: #cd2756; font-weight: 700; }
.tier-summary { margin: 0; padding-left: 18px; }

/* ---- Guest checkout ---- */
.checkout-page { display: grid; grid-template-columns: 1.05fr 1fr; gap: 40px; align-items: start; }
.checkout-account { font-size: 14px; color: #6b7a73; }
.checkout-account a, .checkout-form-side h1 + p a { color: #cd2756; font-weight: 650; }
.checkout-form { margin: 24px 0 34px; }
.checkout-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.checkout-field { margin: 0 0 18px; }
.checkout-submit { width: 100%; margin-top: 8px; }
.checkout-summary-heading { margin-top: 30px; }
.order-summary { border: 1px solid #e2e8f0; border-radius: 16px; overflow: hidden; }
.order-event { display: flex; gap: 16px; padding: 18px; background: #f7f9f8; }
.order-event img { width: 84px; height: 84px; object-fit: cover; border-radius: 10px; flex: none; }
.order-event strong { display: block; margin-bottom: 6px; }
.order-event span { display: block; font-size: 13px; color: #6b7a73; }
.order-line { display: flex; justify-content: space-between; gap: 16px; padding: 18px; }
.order-subtotal { text-align: right; }
.order-subtotal strong { display: block; font-size: 20px; color: #cd2756; }
.checkout-art { position: sticky; top: 96px; height: calc(100vh - 128px); min-height: 520px; border-radius: 20px; overflow: hidden; display: flex; align-items: flex-end; background: #1a1020; }
.checkout-art img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .82; }
.checkout-art-copy { position: relative; padding: 32px; color: #fff; background: linear-gradient(180deg, rgba(10,8,16,0), rgba(10,8,16,.85)); width: 100%; }
.checkout-art-title { font-size: clamp(20px, 2.4vw, 30px); font-weight: 750; margin: 0 0 10px; }
.checkout-art-trust { margin: 0; font-size: 14px; opacity: .9; }

/* ---- Leave checkout confirmation ---- */
.leave-modal { position: fixed; inset: 0; z-index: 1200; display: grid; place-items: center; padding: 20px; background: rgba(12, 16, 22, .55); }
.leave-modal-card { position: relative; background: #fff; border-radius: 16px; padding: 38px 32px 30px; max-width: 430px; width: 100%; text-align: center; }
.leave-modal-card h2 { margin: 0 0 12px; }
.leave-modal-card p { margin: 0 0 24px; color: #4b5a63; }
.leave-modal-close { position: absolute; top: 14px; right: 14px; border: 0; background: none; color: #cd2756; font-size: 17px; cursor: pointer; }
.leave-modal-actions { display: flex; gap: 12px; justify-content: center; }
.leave-button { border: 0; border-radius: 10px; padding: 14px 30px; background: #3f4650; color: #fff; font: 600 14px/1.3 system-ui; cursor: pointer; min-height: 46px; }
.leave-button:hover { background: #2c323a; }

/* ---- Ticket tiers in the create-event wizard ---- */
.ticket-type-row { border: 1px solid #e2e8f0; border-radius: 12px; padding: 18px; margin-bottom: 16px; background: #fbfcfc; }
.ticket-type-delete { font-size: 13px; color: #b22634; }

/* ---- Event cards inside the vendor search results ---- */
.event-card-price { margin-left: auto; font-weight: 700; color: #cd2756; }

@media (max-width: 960px) {
  .event-detail-layout, .checkout-page { grid-template-columns: 1fr; }
  .ticket-panel { position: static; }
  /* Not static: the art's img is absolutely positioned, so the card must stay its containing block. */
  .checkout-art { position: relative; top: auto; height: auto; min-height: 320px; }
}
@media (max-width: 600px) {
  .checkout-fields { grid-template-columns: 1fr; }
  .leave-modal-actions { flex-direction: column; }
  .event-banner { max-height: 240px; }
}

/* ---- Scanned guest card on the manage page ---- */
.scan-guest { margin-top: 18px; max-width: 520px; padding: 22px; border-radius: 16px; border: 2px solid #e2e8f0; background: #fff; }
.scan-guest h3 { margin: 4px 0 16px; font-size: 1.6rem; overflow-wrap: anywhere; }
.scan-guest-badge { display: inline-block; margin: 0; padding: 6px 12px; border-radius: 999px; font-size: 13px; font-weight: 800; letter-spacing: .4px; }
.scan-guest[data-result='admitted'] { border-color: #16a34a; background: #f0fdf4; }
.scan-guest[data-result='admitted'] .scan-guest-badge { background: #16a34a; color: #fff; }
.scan-guest[data-result='already_checked_in'] { border-color: #d97706; background: #fffbeb; }
.scan-guest[data-result='already_checked_in'] .scan-guest-badge { background: #d97706; color: #fff; }
.scan-guest[data-result='unpaid'] { border-color: #b91c1c; background: #fef2f2; }
.scan-guest[data-result='unpaid'] .scan-guest-badge { background: #b91c1c; color: #fff; }
.scan-guest .review-grid { grid-template-columns: minmax(90px, auto) 1fr; gap: 8px 14px; font-size: 14px; }
.scan-guest .review-grid dd { margin: 0; }
.scan-guest #scan-next { margin-top: 18px; }

/* ---- Receipt: where the ticket email went ---- */
.ticket-email-notice { margin: 18px 0; padding: 14px 16px; border-left: 4px solid #d99b22; border-radius: 8px; background: #fff3cd; color: #493807; font-size: 14px; line-height: 1.6; text-align: left; }
.ticket-email-notice p { margin: 0; }
.ticket-email-notice p + p { margin-top: 6px; }

/* ---- Light mode refresh: neutral paper, one pink accent, crisp hairline borders. ----
   Everything here is the default theme; the dark block below mirrors each surface. */
.events-page { --ev-pink: #e11d48; --ev-pink-dark: #be123c; --ev-pink-soft: #fff1f4; --ev-line: #e8ecf1;
  --ev-ink: #0f172a; --ev-muted: #64748b; --ev-sunken: #f7f8fa; background: #fff; color: #1f2937; }
.events-page .community-main :is(h1, h2, h3, legend) { color: var(--ev-ink); }
.events-page .community-main h1 { letter-spacing: -1.8px; }
.events-page :is(.muted, .helptext, .community-form .helptext, .ticket-meta, .ticket-panel-head p, .event-venue span) { color: var(--ev-muted); }
.events-page :is(.community-panel, .community-form, .listing-card, .community-empty, .event-stats > div, .order-summary, .scan-guest, .ticket-type-row) { background: #fff; border-color: var(--ev-line); }
.events-page .listing-card:hover { box-shadow: 0 10px 30px rgba(15, 23, 42, .08); }
.events-page :is(.event-venue, .ticket-soldout, .item-status) { background: var(--ev-sunken); border: 1px solid var(--ev-line); }
.events-page .event-venue-pin { background: var(--ev-pink-soft); }
.events-page .event-fact { color: #334155; }
.events-page .event-back { color: var(--ev-pink); }
.event-theme .community-button { background: var(--ev-pink); border-radius: 12px; font-weight: 700; }
.event-theme .community-button:hover { background: var(--ev-pink-dark); }
.event-theme .community-button.secondary { background: #fff; color: var(--ev-ink) !important; border-color: #d7dde5; }
.events-page .community-main input:not([type=checkbox]):not([type=radio]), .events-page .community-main select,
.events-page .community-main textarea { border-color: #dde3ea; border-radius: 10px; }
.events-page .community-main :is(input, textarea, select):focus { outline: 2px solid var(--ev-pink); outline-offset: 1px; border-color: var(--ev-pink); }

/* Ticket panel: the card people actually decide in, so it gets the sharpest edges. */
.ticket-panel > form { border-color: var(--ev-line); border-radius: 20px; padding: 24px; box-shadow: 0 12px 34px rgba(15, 23, 42, .06); }
.ticket-panel-head { border-color: var(--ev-line); }
.ticket-option { border-color: #e6eaf0; border-radius: 16px; padding: 16px 18px; cursor: pointer; background: #fff; }
.ticket-option:hover { border-color: #cbd5e1; }
.ticket-option.selected { border-color: var(--ev-pink); box-shadow: 0 0 0 1px var(--ev-pink); background: #fffafb; }
.ticket-option-head { min-height: 38px; }
.ticket-option-head h3 { font-weight: 800; color: var(--ev-ink); }
.ticket-price { color: var(--ev-pink); font-size: 20px; letter-spacing: -.4px; }
.ticket-perks li { background: var(--ev-sunken); border: 1px solid var(--ev-line); color: #475569; }
.ticket-total { border-color: var(--ev-line); }
.ticket-total strong { color: var(--ev-ink); letter-spacing: -.8px; }

/* Stepper: one pill, the count in the middle, ends that grey out when they stop doing anything. */
.stepper { gap: 0; border: 1px solid #e3e8ee; border-radius: 999px; padding: 3px; background: #fff; }
.stepper button { width: 30px; height: 30px; display: grid; place-items: center; background: var(--ev-pink-soft); color: var(--ev-pink);
  font-size: 18px; font-weight: 700; transition: background .15s, color .15s, transform .1s; }
.stepper button:hover:not(:disabled) { background: var(--ev-pink); color: #fff; }
.stepper button:active:not(:disabled) { transform: scale(.92); }
.stepper button:disabled { background: #f1f4f8; color: #b6c0cc; cursor: not-allowed; }
.stepper input { width: 40px; border: 0 !important; background: transparent !important; font-weight: 800; color: var(--ev-ink);
  font-variant-numeric: tabular-nums; -moz-appearance: textfield; }
.stepper input::-webkit-outer-spin-button, .stepper input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.stepper input:focus { outline: none !important; }

/* Tiers nobody can book: still listed, visibly out of reach. */
.ticket-status { display: inline-flex; align-items: center; gap: 6px; flex: none; border-radius: 999px; padding: 6px 12px;
  font-size: 11px; font-weight: 800; letter-spacing: .6px; text-transform: uppercase; background: var(--ev-sunken); color: var(--ev-muted); }
.ticket-status--sold_out { background: var(--ev-pink-soft); color: var(--ev-pink); }
.ticket-status--locked .ticket-lock { font-size: 12px; }
.ticket-option.unavailable { background: var(--ev-sunken); border-color: var(--ev-line); cursor: default; }
.ticket-option.unavailable :is(h3, .ticket-price) { color: #94a3b8; }
.ticket-option.unavailable .ticket-perks li { opacity: .7; }
.ticket-type-check { display: flex; align-items: center; gap: 10px; margin-top: 14px; font-size: 13px; font-weight: 650; color: #475569; }
.ticket-type-check input { width: auto !important; margin: 0 !important; }

.event-venue-text { flex: 1; min-width: 0; }
.event-venue-text strong { overflow-wrap: anywhere; }
.event-venue-map { flex: none; padding: 10px 18px; min-height: 40px; font-size: 13px; border-radius: 999px; }
@media (max-width: 520px) { .event-venue { flex-wrap: wrap; } .event-venue-map { width: 100%; } }

/* ---- Dark mode: follows the site toggle (html[data-theme="dark"], see static/js/theme.js). ----
   The site theme turns body text light, so every light surface above needs a dark counterpart. */
[data-theme="dark"] .events-page { --ev-surface: #1a2b24; --ev-sunken: #15251e; --ev-border: #30463a; --ev-text: #dce8df; --ev-strong: #f1f7f3; --ev-muted: #a7bdb0; --ev-pink: #ff7fa3; --ev-pink-soft: #3a1f2a; color: var(--ev-text); }
[data-theme="dark"] .events-page .community-main { color: var(--ev-text); }
[data-theme="dark"] .events-page :is(h1, h2, h3, h4, legend, strong, .checkout-art-title) { color: var(--ev-strong); }
[data-theme="dark"] .events-page .event-theme .event-hero :is(h1, p) { color: #fff; }
[data-theme="dark"] .events-page :is(.muted, .helptext, .community-form .helptext, .review-grid dt, .section-heading > span, .listing-card p, .listing-card small, .ticket-meta, .ticket-panel-head p, .checkout-account, .order-event span, .event-venue span, .ticket-terms, .leave-modal-card p) { color: var(--ev-muted); }
[data-theme="dark"] .events-page :is(.eyebrow, .event-theme .eyebrow, .event-theme .listing-price, .event-back, .ticket-price, .ticket-total strong, .order-subtotal strong, .event-card-price, .support-card a, .checkout-account a, .leave-modal-close) { color: var(--ev-pink); }
[data-theme="dark"] .events-page :is(.form-intro > a, .community-main > a, .community-actions a, .event-theme > a) { color: #9fd9bf; }
[data-theme="dark"] .events-page .event-fact { color: var(--ev-text); }

/* Surfaces */
[data-theme="dark"] .events-page :is(.community-panel, .community-form, .listing-card, .community-empty, .event-stats > div, .ticket-panel > form, .ticket-option, .order-summary, .leave-modal-card, .scan-guest) { background: var(--ev-surface); border-color: var(--ev-border); color: var(--ev-text); }
[data-theme="dark"] .events-page :is(.order-event, .event-venue, .ticket-soldout, .ticket-type-row, .item-status, .wizard-steps li) { background: var(--ev-sunken); border-color: var(--ev-border); color: var(--ev-muted); }
[data-theme="dark"] .events-page .wizard-steps li[aria-current=step] { background: var(--ev-pink-soft); color: var(--ev-pink); }
[data-theme="dark"] .events-page :is(.event-venue-pin, .event-placeholder, .event-banner-empty, .stepper button) { background: var(--ev-pink-soft); color: var(--ev-pink); }
[data-theme="dark"] .events-page .stepper button:hover { background: #4a2635; }
[data-theme="dark"] .events-page .ticket-perks li { background: #243a31; color: var(--ev-text); }
[data-theme="dark"] .events-page .support-card { background: #24161d; border-color: #5a2c3d; }
[data-theme="dark"] .events-page .item-badge { background: #101c19e6; color: var(--ev-text); }
[data-theme="dark"] .events-page .ticket-option.selected { border-color: var(--ev-pink); box-shadow: 0 0 0 1px var(--ev-pink); }
[data-theme="dark"] .events-page :is(.ticket-panel-head, .ticket-total, .attendee-list li, .community-panel hr) { border-color: var(--ev-border); }
[data-theme="dark"] .events-page .community-button.secondary { background: transparent; color: var(--ev-text) !important; border-color: var(--ev-border); }
[data-theme="dark"] .events-page .leave-button { background: #33423b; }

/* Form fields */
[data-theme="dark"] .events-page .community-main label { color: var(--ev-text); }
[data-theme="dark"] .events-page .community-main :is(input:not([type=checkbox]):not([type=radio]), select, textarea),
[data-theme="dark"] .events-page :is(.event-search input, #ticket-reference) { background: var(--ev-sunken); color: var(--ev-strong); border-color: #365041; }
[data-theme="dark"] .events-page .community-main :is(input, textarea)::placeholder { color: #8ea597; }
[data-theme="dark"] .events-page .community-main input[type=file]::file-selector-button { background: #243a31; color: var(--ev-text); border: 1px solid #365041; }

/* Messages and status */
[data-theme="dark"] .events-page :is(.errorlist, .ticket-error) { background: #3a1a1f; color: #ffb3bd; }
[data-theme="dark"] .events-page #scan-result[data-status='error'] { color: #ff9aa6; }
[data-theme="dark"] .events-page #scan-result[data-status='success'] { color: #7ee2a8; }
[data-theme="dark"] .events-page .scan-guest[data-result='admitted'] { background: #12301f; border-color: #22c55e; }
[data-theme="dark"] .events-page .scan-guest[data-result='already_checked_in'] { background: #33260f; border-color: #f59e0b; }
[data-theme="dark"] .events-page .scan-guest[data-result='unpaid'] { background: #3a1a1f; border-color: #ef4444; }
[data-theme="dark"] .events-page .ticket-email-notice { background: #33290f; border-left-color: #d99b22; color: #f5e3b3; }
[data-theme="dark"] .events-page .ticket-email-notice strong { color: #fff1c7; }
[data-theme="dark"] .events-page .events-flash { background: #1a2b24; border-color: #30463a; color: #cfe8da; }
[data-theme="dark"] .events-page .events-flash.error { background: #3a1a1f; border-color: #6b2a35; color: #ffb3bd; }
[data-theme="dark"] .events-page .event-stats strong { color: var(--ev-strong); }
[data-theme="dark"] .events-page .event-hero { border-color: var(--ev-border); }

/* ---- Ticket types in the create-event wizard: presets, row header, add button ---- */
.ticket-presets { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 18px 0; }
.ticket-presets span { font-size: 13px; font-weight: 650; color: #65796d; margin-right: 2px; }
.ticket-presets button { border: 1px solid #f0c5d2; background: #fdf1f4; color: #b6224d; border-radius: 999px; padding: 8px 14px; font: 600 13px/1.2 inherit; cursor: pointer; }
.ticket-presets button:hover { background: #fbe2e9; }
.ticket-presets button:disabled { opacity: .5; cursor: not-allowed; }
.ticket-type-row-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 4px; }
.ticket-type-row-head strong { font-size: 15px; }
.ticket-type-row-head .ticket-type-delete { margin: 0; }
.ticket-type-remove { border: 0; background: none; color: #b22634; font: 600 13px/1.2 inherit; cursor: pointer; padding: 6px; }
.ticket-type-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 14px; }
.ticket-type-add { width: 100%; margin: 4px 0 24px; border-style: dashed !important; }
@media (max-width: 600px) { .ticket-type-grid { grid-template-columns: 1fr; } }
[data-theme="dark"] .events-page .ticket-presets span { color: var(--ev-muted); }
[data-theme="dark"] .events-page .ticket-presets button { background: var(--ev-pink-soft); border-color: #5a2c3d; color: var(--ev-pink); }
[data-theme="dark"] .events-page .ticket-type-remove,
[data-theme="dark"] .events-page .ticket-type-delete { color: #ff9aa6; }

/* ---- Receipt: payment success, ticket card and actions ---- */
.receipt-page { max-width: 560px; margin: 0 auto; }
.payment-success { text-align: center; padding: 8px 0 26px; }
.payment-success h1 { font-size: clamp(28px, 6vw, 40px); line-height: 1.15; margin: 8px 0 10px; letter-spacing: -.5px; }
.success-lede { color: #4b5a63; margin: 0 auto; max-width: 440px; }
.success-burst { position: relative; width: 120px; height: 120px; margin: 0 auto 18px; }
.success-check { width: 120px; height: 120px; overflow: visible; }
.success-check circle { fill: #16a34a; transform-origin: 60px 60px; animation: pop-in .5s cubic-bezier(.2, 1.4, .4, 1) both; }
.success-check path { fill: none; stroke: #fff; stroke-width: 9; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 80; stroke-dashoffset: 80; animation: draw-check .45s .4s ease-out forwards; }
.confetti { position: absolute; left: 50%; top: 50%; width: 10px; height: 14px; border-radius: 2px; opacity: 0; animation: confetti-burst 1.1s .35s cubic-bezier(.1, .8, .3, 1) forwards; }
.confetti:nth-child(odd) { width: 8px; height: 8px; border-radius: 50%; }
.c1 { background: #cd2756; --x: -92px; --y: -70px; --r: -40deg; } .c2 { background: #f59e0b; --x: 96px; --y: -64px; --r: 50deg; }
.c3 { background: #16a34a; --x: -110px; --y: 6px; --r: 80deg; } .c4 { background: #3b82f6; --x: 112px; --y: 12px; --r: -70deg; }
.c5 { background: #f7a8c0; --x: -70px; --y: 74px; --r: 30deg; } .c6 { background: #cd2756; --x: 76px; --y: 70px; --r: -30deg; }
.c7 { background: #f59e0b; --x: -30px; --y: -104px; --r: 120deg; } .c8 { background: #16a34a; --x: 36px; --y: -100px; --r: -110deg; }
.c9 { background: #3b82f6; --x: -128px; --y: -38px; --r: 15deg; } .c10 { background: #f7a8c0; --x: 128px; --y: -30px; --r: -15deg; }
.c11 { background: #cd2756; --x: -20px; --y: 104px; --r: 60deg; } .c12 { background: #f59e0b; --x: 24px; --y: 100px; --r: -60deg; }
@keyframes pop-in { from { transform: scale(0); } to { transform: scale(1); } }
@keyframes draw-check { to { stroke-dashoffset: 0; } }
@keyframes confetti-burst { 0% { opacity: 1; transform: translate(-50%, -50%) scale(.4); } 70% { opacity: 1; } 100% { opacity: 0; transform: translate(calc(-50% + var(--x)), calc(-50% + var(--y))) rotate(var(--r)) scale(1); } }
@media (prefers-reduced-motion: reduce) { .success-check circle, .success-check path, .confetti { animation: none; } .success-check path { stroke-dashoffset: 0; } }

.ticket-card { background: #fff; border-radius: 22px; overflow: hidden; box-shadow: 0 18px 40px rgba(26, 16, 32, .14); border: 1px solid #efe7ea; }
.ticket-card-rows { margin: 0; padding: 10px 26px 4px; }
.ticket-card-rows div { display: flex; justify-content: space-between; gap: 16px; padding: 11px 0; border-top: 1px solid #f1eaed; font-size: 14px; }
.ticket-card-rows div:first-child { border-top: 0; }
.ticket-card-rows dt { color: #6b7a73; }
.ticket-card-rows dd { margin: 0; font-weight: 700; text-align: right; overflow-wrap: anywhere; }
.ticket-card-tear { position: relative; height: 28px; margin: 6px 0; }
.ticket-card-tear::before { content: ""; position: absolute; left: 22px; right: 22px; top: 50%; border-top: 2px dashed #e6d6dc; }
.ticket-card-tear::after { content: ""; position: absolute; inset: 0 -14px; background: radial-gradient(circle at 0 50%, #f7f9f8 13px, transparent 14px), radial-gradient(circle at 100% 50%, #f7f9f8 13px, transparent 14px); }
.ticket-card-qr { text-align: center; padding: 8px 26px 26px; }
.ticket-card-qr img { display: block; margin: 0 auto; width: 220px; height: 220px; }
.ticket-card-qr p { margin: 12px 0 4px; font-weight: 700; font-size: 14px; }
.ticket-card-qr small { font-size: 11px; color: #8a9892; }

.ticket-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 22px 0 8px; }
.ticket-actions .community-button { padding: 13px 10px; font-size: 14px; }
.ticket-actions svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.share-status { margin: 8px 0 0; font-weight: 700; color: #15803d; text-align: center; }
.share-warning { text-align: center; }
.receipt-footer { text-align: center; margin-top: 24px; }
.receipt-footer a { color: #b6224d; font-weight: 650; text-decoration: none; }
@media (max-width: 480px) { .ticket-actions { grid-template-columns: 1fr; } }

.ticket-fullscreen { border: 0; border-radius: 22px; padding: 28px 24px; width: min(92vw, 420px); text-align: center; background: #fff; color: #1f2a2e; }
.ticket-fullscreen::backdrop { background: rgba(12, 8, 16, .75); }
.ticket-fullscreen img { display: block; width: min(80vw, 320px); height: auto; margin: 12px auto; image-rendering: pixelated; }
.ticket-fullscreen strong { display: block; font-size: 20px; }
.ticket-fullscreen span { display: block; color: #6b7a73; margin-top: 4px; }
.ticket-fullscreen form { margin-top: 16px; }

.receipt-state { text-align: center; }
.receipt-spinner { width: 54px; height: 54px; margin: 0 auto 16px; border-radius: 50%; border: 5px solid #f6e5e9; border-top-color: #cd2756; animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .receipt-spinner { animation: none; } }

/* ---- Organiser's ticket check page (opened from the QR code) ---- */
.verify-page { max-width: 560px; margin: 0 auto; }
.verify-status { display: flex; gap: 16px; align-items: center; padding: 18px 20px; border-radius: 16px; margin-bottom: 18px; color: #fff; }
.verify-status > span { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: rgba(255, 255, 255, .22); font-size: 26px; font-weight: 800; flex: none; }
.verify-status strong { display: block; font-size: 20px; color: #fff; }
.verify-status p { margin: 2px 0 0; opacity: .92; }
.verify-status[data-result='valid'], .verify-status[data-result='admitted'] { background: #16a34a; }
.verify-status[data-result='already_checked_in'] { background: #d97706; }
.verify-status[data-result='unpaid'] { background: #b91c1c; }
.verify-card h1 { margin: 6px 0 18px; font-size: 30px; overflow-wrap: anywhere; }
.verify-admit { width: 100%; margin-top: 22px; padding: 16px; font-size: 17px; }
.verify-back { display: inline-block; margin-top: 18px; color: #19634e; font-weight: 650; }

[data-theme="dark"] .events-page .success-lede { color: var(--ev-muted); }
[data-theme="dark"] .events-page .ticket-card { background: var(--ev-surface); border-color: var(--ev-border); box-shadow: none; }
[data-theme="dark"] .events-page .ticket-card-rows div { border-color: var(--ev-border); }
[data-theme="dark"] .events-page .ticket-card-rows dt { color: var(--ev-muted); }
[data-theme="dark"] .events-page .ticket-card-tear::before { border-color: #3a4f45; }
[data-theme="dark"] .events-page .ticket-card-tear::after { background: radial-gradient(circle at 0 50%, #101c19 13px, transparent 14px), radial-gradient(circle at 100% 50%, #101c19 13px, transparent 14px); }
[data-theme="dark"] .events-page .ticket-card-qr img { background: #fff; padding: 10px; border-radius: 12px; box-sizing: content-box; }
[data-theme="dark"] .events-page .share-status { color: #7ee2a8; }
[data-theme="dark"] .events-page .receipt-footer a { color: var(--ev-pink); }
[data-theme="dark"] .events-page .verify-back { color: #9fd9bf; }
[data-theme="dark"] .events-page .receipt-spinner { border-color: #3a1f2a; border-top-color: var(--ev-pink); }
/* The full-screen QR stays white in dark mode so door scanners can read it. */
[data-theme="dark"] .events-page .ticket-fullscreen strong { color: #1f2a2e; }
[data-theme="dark"] .events-page .ticket-fullscreen .eyebrow { color: #b6224d; }

/* ---- Typeface: Chewy across the events pages ----
   Chewy has a single weight (400), so headings and bold text use it at 400 rather than a faked bold.
   Form fields and ticket reference codes keep the site font so typed text and codes stay easy to read. */
.chewy-regular { font-family: "Chewy", system-ui; font-weight: 400; font-style: normal; }
body.events-page .community-main,
body.events-page .community-main :is(h1, h2, h3, h4, h5, h6, legend, strong, b, label, button, .community-button, dt, dd, p, span, a, small),
body.events-page .ticket-fullscreen,
body.events-page .ticket-fullscreen :is(strong, span, p, button) {
  font-family: "Chewy", system-ui;
  font-weight: 400;
  font-style: normal;
  letter-spacing: .01em;
}
body.events-page .community-main :is(input, select, textarea),
body.events-page .community-main input[type=file]::file-selector-button,
body.events-page :is(.receipt-reference, .ticket-card-qr small) {
  font-family: var(--kinomos-font, "Manrope", sans-serif);
}
body.events-page :is(.community-main, .ticket-fullscreen) :is(.receipt-reference, .ticket-card-qr small) { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }

/* Outlined buttons inside the pink event theme (e.g. Show ticket, Share ticket). */
.event-theme .community-button.secondary { background: #fff; color: #b6224d !important; border-color: #f0c5d2; }
.event-theme .community-button.secondary:hover { background: #fdf1f4; }

/* ---- Photo ticket: the event photo is the ticket's body, with the ticket type and price on it ---- */
.ticket-photo { position: relative; display: flex; flex-direction: column; justify-content: space-between; min-height: 460px; padding: 22px 24px 26px; color: #fff;
  background-image: linear-gradient(180deg, rgba(26, 16, 32, .55) 0%, rgba(26, 16, 32, .2) 22%, rgba(26, 16, 32, .35) 45%, rgba(26, 16, 32, .92) 100%), var(--ticket-photo), url('../images/event-crowd.jpg');
  background-size: cover; background-position: center 40%; }
.ticket-photo-brand { margin: 0; font-size: 12px; letter-spacing: 2px; color: #f7a8c0; }
.ticket-photo-body h2 { margin: 0 0 10px; font-size: clamp(30px, 8vw, 40px); line-height: 1.05; color: #fff !important; overflow-wrap: anywhere; text-shadow: 0 2px 12px rgba(0, 0, 0, .35); }
.ticket-photo-body > span { display: block; font-size: 14px; line-height: 1.55; color: #f3e9ee !important; }
.ticket-price-row { display: flex; align-items: flex-end; gap: 14px; margin-top: 18px; }
.ticket-price-badge { display: inline-flex; flex-direction: column; background: #cd2756; border-radius: 16px; padding: 10px 20px 12px; box-shadow: 0 10px 24px rgba(205, 39, 86, .35); }
.ticket-price-badge small { font-size: 15px; letter-spacing: 1px; text-transform: uppercase; color: #ffe3ec !important; }
.ticket-price-badge strong { font-size: 40px; line-height: 1.05; color: #fff !important; }
.ticket-price-qty { font-size: 28px; padding-bottom: 6px; color: #fff !important; }

/* ---- Share row (event page and organiser's manage page) ---- */
.event-share { display: flex; flex-wrap: wrap; gap: 10px; margin: 12px 0 4px; }
.event-share-btn { display: inline-flex; align-items: center; gap: 8px; border: 0; border-radius: 999px; padding: 10px 16px; color: #fff !important; text-decoration: none; font: inherit; font-size: 14px; cursor: pointer; transition: transform .15s, filter .15s; }
.event-share-btn:hover { transform: translateY(-1px); filter: brightness(1.08); }
.event-share-btn i { font-size: 17px; }
.event-share-btn.whatsapp { background: #25d366; }
.event-share-btn.x { background: #111; }
.event-share-btn.facebook { background: #1877f2; }
.event-share-btn.instagram { background: linear-gradient(45deg, #f58529, #dd2a7b 50%, #8134af); }
.event-share-btn.copy { background: #eef2ef; color: #1f2a2e !important; }
.event-share-status { flex-basis: 100%; margin: 4px 0 0; font-size: 13px; font-weight: 700; color: #15803d; }
.event-live-card { margin: 18px 0; border: 2px solid #f0c5d2; background: linear-gradient(135deg, #fff, #fdf1f4); }
.event-live-card h2 { margin: 6px 0 4px; }
.event-share-panel { margin-top: 18px; padding: 22px; }
.event-share-panel h2 { margin: 0 0 4px; font-size: 18px; }
[data-theme="dark"] .events-page .event-share-btn.copy { background: #243a31; color: var(--ev-text) !important; }
[data-theme="dark"] .events-page .event-share-status { color: #7ee2a8; }
[data-theme="dark"] .events-page .event-live-card { background: linear-gradient(135deg, #1a2b24, #2a1a22); border-color: #5a2c3d; }

/* ---- Organiser sales dashboard (manage page) ----
   Figures use the site sans, not Chewy: a display face on numbers reads as decoration and hurts scanning.
   Meter colours were checked with the dataviz palette validator (light and dark). */
.event-dashboard { --meter-paid: #cd2756; --meter-pending: #f08aa8; --meter-track: #f6e5e9; margin: 22px 0 24px; }
.dash-heading { margin: 0 0 12px; }
.dash-label { margin: 0; font-size: 13px; color: #65796d; }
.dash-sub { margin: 4px 0 0; font-size: 13px; color: #65796d; }
.dash-note { margin: 10px 0 0; font-size: 12px; color: #65796d; }
body.events-page .community-main :is(.dash-figure, .dash-figure *, .dash-value, .dash-value *, .dash-table .num, .dash-table .num *, .dash-recent .num, .dash-recent .num *) {
  font-family: var(--kinomos-font, "Manrope"), system-ui, sans-serif; letter-spacing: 0;
}
.dash-hero { padding: 26px; }
.dash-figure { margin: 2px 0 0; line-height: 1; }
.dash-figure strong { font-size: 56px; font-weight: 700; color: #1a1020; }
.dash-figure span { font-size: 26px; font-weight: 600; color: #65796d; }
.dash-meter { display: flex; gap: 2px; height: 16px; margin: 18px 0 12px; border-radius: 999px; background: var(--meter-track); overflow: hidden; }
.dash-meter span { display: block; height: 100%; min-width: 4px; }
.dash-meter-paid { background: var(--meter-paid); border-radius: 999px 4px 4px 999px; }
.dash-meter-pending { background: var(--meter-pending); border-radius: 4px; }
.dash-legend { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 0; padding: 0; list-style: none; font-size: 13px; }
.dash-legend li { display: inline-flex; align-items: center; gap: 7px; }
.swatch { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.swatch.paid { background: var(--meter-paid); } .swatch.pending { background: var(--meter-pending); } .swatch.track { background: var(--meter-track); box-shadow: inset 0 0 0 1px #e8cdd6; }

.dash-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 14px; margin: 14px 0; }
.dash-tile { padding: 20px; }
.dash-value { margin: 6px 0 0; font-size: 28px; font-weight: 700; line-height: 1.1; color: #1a1020; overflow-wrap: anywhere; }
.dash-value span { font-size: 18px; font-weight: 600; color: #65796d; }

.dash-panels { display: grid; grid-template-columns: 1.3fr 1fr; gap: 14px; }
.dash-panels h3 { margin: 0 0 12px; }
.dash-table-scroll { overflow-x: auto; }
.dash-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.dash-table th, .dash-table td { padding: 11px 8px; border-top: 1px solid #eef2ef; text-align: left; vertical-align: top; }
.dash-table thead th { border-top: 0; font-size: 12px; color: #65796d; font-weight: 400; }
.dash-table .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.dash-table small { color: #65796d; font-size: 12px; }
.dash-bar { display: block; height: 6px; margin-top: 8px; max-width: 220px; border-radius: 999px; background: var(--meter-track); overflow: hidden; }
.dash-bar span { display: block; height: 100%; min-width: 3px; border-radius: 999px; background: var(--meter-paid); }
.dash-recent ul { list-style: none; margin: 0; padding: 0; }
.dash-recent li { display: flex; justify-content: space-between; gap: 12px; padding: 11px 0; border-top: 1px solid #eef2ef; font-size: 14px; }
.dash-recent li:first-child { border-top: 0; }
.dash-recent li span { display: block; font-size: 12px; color: #65796d; }
.dash-recent .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.dash-in { color: #15803d !important; }
.dash-empty { color: #65796d; }
@media (max-width: 800px) { .dash-panels { grid-template-columns: 1fr; } .dash-figure strong { font-size: 48px; } }

[data-theme="dark"] .events-page .event-dashboard { --meter-paid: #ea5a85; --meter-pending: #9d3c61; --meter-track: #3a1f2a; }
[data-theme="dark"] .events-page :is(.dash-label, .dash-sub, .dash-note, .dash-figure span, .dash-value span, .dash-table thead th, .dash-table small, .dash-recent li span, .dash-empty) { color: var(--ev-muted); }
[data-theme="dark"] .events-page :is(.dash-figure strong, .dash-value) { color: var(--ev-strong); }
[data-theme="dark"] .events-page :is(.dash-table th, .dash-table td, .dash-recent li) { border-color: var(--ev-border); }
[data-theme="dark"] .events-page .swatch.track { box-shadow: inset 0 0 0 1px #5a2c3d; }
[data-theme="dark"] .events-page .dash-in { color: #7ee2a8 !important; }
.my-event-sales { margin: 14px 0 12px; }
.my-event-sales .dash-figure strong { font-size: 30px; }
.my-event-sales .dash-figure span { font-size: 15px; }
.my-event-sales .dash-bar { max-width: none; height: 8px; margin: 10px 0 6px; }
.my-event-state[data-state="ended"], .my-event-state[data-state="hidden"] { color: #65796d !important; }

/* ---- Event review (submitted page, banners) and delete ---- */
.review-card { text-align: center; }
.review-icon { font-size: 44px; margin-bottom: 8px; }
.review-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 20px 0 6px; }
.review-support { margin-top: 26px; padding-top: 20px; border-top: 1px solid #eef2ef; }
.review-support h2 { margin: 0 0 4px; font-size: 20px; }
.review-support ul { list-style: none; padding: 0; margin: 14px 0 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
.review-support a { display: inline-flex; align-items: center; gap: 8px; padding: 10px 14px; border: 1px solid #e0e8e4; border-radius: 999px; color: #19634e; text-decoration: none; }
.review-banner { margin: 16px 0; padding: 16px 18px; border-radius: 14px; border-left: 5px solid #d99b22; background: #fff8e6; color: #493807; }
.review-banner p { margin: 6px 0 0; }
.review-banner[data-state="changes_requested"] { border-left-color: #b91c1c; background: #fef2f2; color: #7f1d1d; }
.review-banner .community-button { margin-top: 12px; }
.event-delete-link { color: #b22634 !important; }
.danger-button { background: #b91c1c !important; }
.danger-button:hover { background: #991b1b !important; }
[data-theme="dark"] .events-page .review-support { border-color: var(--ev-border); }
[data-theme="dark"] .events-page .review-support a { border-color: var(--ev-border); color: #9fd9bf; }
[data-theme="dark"] .events-page .review-banner { background: #33290f; color: #f5e3b3; }
[data-theme="dark"] .events-page .review-banner[data-state="changes_requested"] { background: #3a1a1f; color: #ffc9cf; }
[data-theme="dark"] .events-page .review-banner strong { color: inherit; }
[data-theme="dark"] .events-page .event-delete-link { color: #ff9aa6 !important; }

/* ---- Receipt: WhatsApp contact set in Wagtail (hidden when no number is configured) ---- */
.ticket-whatsapp { display: flex; align-items: center; gap: 14px; margin: 16px 0 4px; padding: 14px 18px; border-radius: 16px; background: #25d366; color: #fff !important; text-decoration: none; box-shadow: 0 8px 20px rgba(37, 211, 102, .3); }
.ticket-whatsapp i { font-size: 30px; }
.ticket-whatsapp span { display: flex; flex-direction: column; }
.ticket-whatsapp strong { font-size: 17px; color: #fff !important; }
.ticket-whatsapp small { font-size: 13px; opacity: .92; color: #fff !important; }
.ticket-whatsapp:hover { background: #1fbe5b; }

/* Photo kept from an earlier submit that had errors (browsers clear file inputs on re-render). */
.pending-image { display: flex; align-items: center; gap: 14px; margin: 12px 0; padding: 12px; border: 1px solid #c7decf; border-radius: 12px; background: #edf6ef; color: #254d3a; }
.pending-image img { width: 72px; height: 72px; object-fit: cover; border-radius: 10px; flex: none; }
.pending-image p { margin: 0; font-size: 14px; }
[data-theme="dark"] .events-page .pending-image { background: #173024; border-color: #2f5a44; color: #cfe8da; }

.photo-prompt { margin: 0 0 18px; padding: 12px 14px; border-radius: 12px; background: #fff8e6; color: #493807; font-size: 14px; }
.photo-prompt a { color: #b6224d; font-weight: 700; }
[data-theme="dark"] .events-page .photo-prompt { background: #33290f; color: #f5e3b3; }
[data-theme="dark"] .events-page .photo-prompt a { color: var(--ev-pink); }

/* ---- Service fee: who pays it (organiser form) and the guest's fee line at checkout. ---- */
.service-fee-fieldset { margin-top: 34px; padding-top: 28px; border-top: 1px solid #e0e8e4; }
.service-fee-fieldset ul { margin: 10px 0 0; padding-left: 20px; }
.service-fee-fieldset li { margin-bottom: 10px; line-height: 1.6; }
.service-fee-fieldset input[type="radio"] { width: auto; display: inline-block; margin: 0 8px 0 0; }
.service-fee-fieldset ul#id_service_fee_payer { list-style: none; padding: 0; margin: 8px 0 0; }
.service-fee-fieldset ul#id_service_fee_payer li { margin: 0 0 10px; }
.service-fee-fieldset ul#id_service_fee_payer label { display: flex; align-items: flex-start; gap: 4px; font-weight: 600; cursor: pointer; }
.fee-example { margin-top: 20px; padding: 18px 20px; border: 1px solid #e0e8e4; border-radius: 12px; background: #f7f9f8; font-size: 14px; }
.fee-example p:first-child { margin: 0; }
.fee-example .muted { margin-top: 12px; }
.order-fee .order-subtotal strong { font-size: 17px; }
.order-total { border-top: 1px solid #e0e8e4; }
.order-total .order-subtotal strong { font-size: 22px; }

[data-theme="dark"] .events-page .service-fee-fieldset { border-top-color: var(--ev-border); }
[data-theme="dark"] .events-page .fee-example { background: var(--ev-sunken); border-color: var(--ev-border); color: var(--ev-text); }
[data-theme="dark"] .events-page .order-total { border-top-color: var(--ev-border); }

/* ---- Per-city event pages: breadcrumb and the links between places. ---- */
.event-crumb { margin: 0 0 18px; font-size: 13px; color: #65796d; }
.event-crumb a { color: #19634e; text-decoration: none; }
.event-crumb a:hover { text-decoration: underline; }
.event-place-links { margin-top: 48px; padding-top: 28px; border-top: 1px solid #e0e8e4; }
.event-place-links h2 { margin: 0 0 14px; font-size: 18px; }
.event-place-links ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 9px; }
.event-place-links a {
    display: inline-block;
    padding: 8px 14px;
    border: 1px solid #e0e8e4;
    border-radius: 999px;
    background: #fff;
    color: #b6224d;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
}
.event-place-links a:hover { border-color: #cd2756; }

[data-theme="dark"] .events-page .event-crumb { color: var(--ev-muted); }
[data-theme="dark"] .events-page .event-crumb a { color: #9fd9bf; }
[data-theme="dark"] .events-page .event-place-links { border-top-color: var(--ev-border); }
[data-theme="dark"] .events-page .event-place-links a { background: var(--ev-sunken); border-color: var(--ev-border); color: var(--ev-pink); }
[data-theme="dark"] .events-page .event-place-links a:hover { border-color: var(--ev-pink); }

[data-theme="dark"] .events-page { background: #101f1a; --ev-line: #30463a; --ev-ink: #f1f7f3; --ev-muted: #a7bdb0; }
[data-theme="dark"] .events-page .ticket-option:hover { border-color: #46604f; }
[data-theme="dark"] .events-page .ticket-option.selected { background: #22181d; }
[data-theme="dark"] .events-page .stepper { background: transparent; border-color: var(--ev-border); }
[data-theme="dark"] .events-page .stepper button:hover:not(:disabled) { background: var(--ev-pink); color: #17232a; }
[data-theme="dark"] .events-page .stepper button:disabled { background: #22332c; color: #5d7266; }
[data-theme="dark"] .events-page .stepper input { color: var(--ev-strong); background: transparent !important; }
[data-theme="dark"] .events-page .ticket-status { background: var(--ev-sunken); color: var(--ev-muted); }
[data-theme="dark"] .events-page .ticket-status--sold_out { background: var(--ev-pink-soft); color: var(--ev-pink); }
[data-theme="dark"] .events-page .ticket-option.unavailable { background: var(--ev-sunken); }
[data-theme="dark"] .events-page .ticket-option.unavailable :is(h3, .ticket-price) { color: #7f948a; }
[data-theme="dark"] .events-page .ticket-type-check { color: var(--ev-text); }
[data-theme="dark"] .events-page .ticket-total strong { color: var(--ev-pink); }

/* Keep location listings clear of the hero and of adjacent cards. */
.event-location-page > .listing-grid {
    margin-top: 36px;
    gap: 28px;
}

@media (max-width: 700px) {
    .event-location-page > .listing-grid {
        margin-top: 24px;
        gap: 20px;
    }
}
