/* Event details page (/event?event=slug; includes/site/event_page.php, assets/event-page.js).
   Mobbin: Luma event page (photo beside the title, icon rows), Sweatpals event (date + map rows), Circle event (date tile),
   Partiful (Add to calendar menu), Meetup event (sticky Attend bar, map card), Eventbrite (Show map).
   Brand Style Guide colours only; the red "Happening now" is the site's existing live colour. */
.ev-page{--ev-ink:var(--brand-text,#1d1a21);--ev-muted:var(--brand-muted,#6b6570);--ev-line:var(--brand-line,#e6e2ea);--ev-soft:var(--brand-surface,#f6f4f8);--ev-bg:var(--brand-bg,#fff);--ev-primary:var(--brand-primary,#241236);--ev-primary-2:var(--brand-primary-2,#542675);--ev-accent:var(--brand-accent,#d9b24c);--ev-accent-ink:var(--brand-accent-ink,#9f741d);--ev-live:#d42f2f;--ev-radius:var(--brand-radius-card,20px);--ev-btn-radius:var(--brand-radius-btn,12px);
  position:relative;padding:28px 0 88px;background:linear-gradient(180deg,color-mix(in srgb,var(--ev-soft) 80%,transparent),var(--ev-bg) 420px);color:var(--ev-ink);font-family:var(--brand-font-body,"DM Sans",system-ui,sans-serif)}
.ev-page *{box-sizing:border-box}
.ev-page{overflow-x:clip}
.ev-hero>*,.ev-body>*,.ev-main>*{min-width:0}
.ev-i{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* Back + edit */
.ev-top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}
.ev-page .ev-back{display:inline-flex;align-items:center;gap:8px;margin:0;padding:8px 14px 8px 10px;border-radius:999px;border:1px solid var(--ev-line);background:var(--ev-bg);color:var(--ev-ink);font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;transition:background .2s,transform .2s,border-color .2s}
.ev-page .ev-back:hover{background:var(--ev-soft);border-color:color-mix(in srgb,var(--ev-primary) 25%,var(--ev-line))}
.ev-page .ev-back:hover .ev-i{transform:translateX(-3px)}
.ev-back .ev-i,.ev-link .ev-i,.ev-btn .ev-i{transition:transform .2s cubic-bezier(.22,1,.36,1)}
.ev-page .ev-edit{margin:0}

/* Hero */
.ev-hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:52px;align-items:center}
.ev-cover{position:relative;margin:0;border-radius:var(--ev-radius);overflow:hidden;aspect-ratio:4/3;background:var(--ev-soft);box-shadow:0 24px 60px color-mix(in srgb,var(--ev-primary) 18%,transparent),0 0 0 1px color-mix(in srgb,var(--ev-ink) 6%,transparent)}
.ev-cover img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.001);transition:transform .9s cubic-bezier(.22,1,.36,1)}
.ev-cover:hover img{transform:scale(1.04)}
.ev-cover-tag{position:absolute;left:16px;bottom:16px;padding:8px 14px;border-radius:999px;background:color-mix(in srgb,var(--brand-dark,#14091f) 62%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fff;font-size:12px;font-weight:700;letter-spacing:.4px}
.ev-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px}
.ev-pill{display:inline-flex;align-items:center;min-height:30px;padding:0 12px;border-radius:999px;background:color-mix(in srgb,var(--ev-accent) 16%,transparent);color:var(--ev-accent-ink);font-size:12px;font-weight:700;letter-spacing:.6px;text-transform:uppercase}
.ev-status{display:inline-flex;align-items:center;gap:8px;min-height:30px;padding:0 12px;border-radius:999px;background:var(--ev-soft);border:1px solid var(--ev-line);color:var(--ev-primary-2);font-size:12px;font-weight:700}
.ev-status i{width:8px;height:8px;border-radius:50%;background:currentColor}
.ev-status.is-live{background:color-mix(in srgb,var(--ev-live) 8%,var(--ev-bg));border-color:color-mix(in srgb,var(--ev-live) 30%,transparent);color:var(--ev-live)}
.ev-status.is-live i{animation:evPulse 1.4s ease-out infinite}
.ev-status.is-past{color:var(--ev-muted)}
@keyframes evPulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--ev-live) 55%,transparent)}100%{box-shadow:0 0 0 9px transparent}}
body.pb-page .ev-page h1.ev-title{margin:0 0 26px;font-family:var(--f-display,inherit);font-size:clamp(36px,4.6vw,60px);line-height:1.03;letter-spacing:-.035em;font-weight:700;color:var(--ev-ink);text-transform:none}

/* When / where rows */
.ev-facts{list-style:none;margin:0 0 28px;padding:0;display:grid;gap:18px}
.ev-facts li{display:flex;align-items:flex-start;gap:16px}
.ev-tile{flex:none;display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:var(--ev-bg);border:1px solid var(--ev-line);color:var(--ev-primary);box-shadow:0 4px 14px color-mix(in srgb,var(--ev-primary) 7%,transparent)}
.ev-tile .ev-i{width:22px;height:22px}
.ev-tile--date{align-content:center;gap:1px;line-height:1;text-align:center;overflow:hidden;padding-top:0}
.ev-tile--date b{display:block;width:100%;padding:4px 0 3px;background:var(--ev-primary);color:#fff;font-size:10px;font-weight:700;letter-spacing:1px}
.ev-tile--date strong{display:block;padding:4px 0 2px;font-size:21px;font-weight:700;color:var(--ev-ink)}
.ev-tile--date{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch}
.ev-tile--live{color:var(--ev-live)}
.ev-fact{display:flex;flex-direction:column;gap:3px;min-width:0;padding-top:4px}
.ev-fact strong{font-size:17px;font-weight:700;color:var(--ev-ink);line-height:1.3}
.ev-fact>span{color:var(--ev-muted);font-size:15px;line-height:1.5}
.ev-sub{display:inline-flex;align-items:center;gap:6px;font-size:13px!important;color:var(--ev-primary-2)!important}
.ev-sub .ev-i{width:15px;height:15px}
.ev-link{display:inline-flex;align-items:center;gap:6px;width:max-content;margin-top:4px;color:var(--ev-primary-2);font-size:14px;font-weight:700;text-decoration:none}
.ev-link .ev-i{width:15px;height:15px}
.ev-link:hover{text-decoration:underline;text-underline-offset:4px}
.ev-link:hover .ev-i,.ev-btn:hover .ev-i:last-child{transform:translateX(3px)}

/* Actions */
.ev-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.ev-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:50px;padding:0 20px;border:1px solid var(--ev-line);border-radius:var(--ev-btn-radius);background:var(--ev-bg);color:var(--ev-ink);font:inherit;font-size:15px;font-weight:700;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background .2s,border-color .2s,transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s,color .2s}
.ev-btn:hover{background:var(--ev-soft);border-color:color-mix(in srgb,var(--ev-primary) 25%,var(--ev-line));transform:translateY(-2px);box-shadow:0 10px 24px color-mix(in srgb,var(--ev-primary) 10%,transparent)}
.ev-btn:active{transform:scale(.97)}
.ev-btn--primary{background:var(--ev-primary);border-color:var(--ev-primary);color:#fff}
.ev-btn--primary:hover{background:var(--ev-primary-2);border-color:var(--ev-primary-2);color:#fff}
.ev-btn--icon{padding:0 16px}
.ev-btn--block{width:100%}
.ev-btn.is-saved{color:var(--ev-primary);border-color:color-mix(in srgb,var(--ev-primary) 40%,var(--ev-line))}
.ev-btn.is-saved .ev-i{fill:currentColor}
.ev-btn.is-done{background:color-mix(in srgb,var(--ev-accent) 18%,var(--ev-bg));border-color:var(--ev-accent)}
.ev-page :is(.ev-btn,.ev-back,.ev-link,.ev-mini,.ev-more,.ev-map-btn,.ev-menu-list>*):focus-visible{outline:3px solid var(--ev-accent);outline-offset:3px}
/* the old full-width Save button's rules don't apply here */
.ev-page .mm-save-btn{width:auto;margin:0;border-radius:var(--ev-btn-radius)}
.ev-menu{position:relative}
.ev-menu [data-ev-menu-btn] .ev-i:last-child{width:15px;height:15px;transition:transform .2s}
.ev-menu [data-ev-menu-btn][aria-expanded=true] .ev-i:last-child{transform:rotate(180deg)}
.ev-menu-list{position:absolute;z-index:30;left:0;top:calc(100% + 8px);min-width:250px;padding:6px;border-radius:14px;background:var(--ev-bg);border:1px solid var(--ev-line);box-shadow:0 18px 44px color-mix(in srgb,var(--ev-ink) 16%,transparent);animation:evPop .18s cubic-bezier(.22,1,.36,1)}
.ev-menu-list[hidden]{display:none}
.ev-menu-list>*{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 12px;border:0;border-radius:10px;background:none;color:var(--ev-ink);font:inherit;font-size:15px;font-weight:600;text-align:left;text-decoration:none;cursor:pointer}
.ev-menu-list>*:hover{background:var(--ev-soft)}
.ev-menu-list .ev-i{color:var(--ev-primary-2)}
@keyframes evPop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

/* Body */
.ev-body{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:28px;align-items:start;margin-top:64px}
.ev-main{display:grid;gap:24px}
.ev-card{padding:30px;border-radius:var(--ev-radius);background:var(--ev-bg);border:1px solid var(--ev-line);box-shadow:0 10px 30px color-mix(in srgb,var(--ev-primary) 5%,transparent)}
body.pb-page .ev-card h2{margin:0 0 16px;font-family:inherit;font-size:22px;font-weight:700;letter-spacing:-.01em;text-transform:none;color:var(--ev-ink)}
.ev-page .ev-desc{margin:0;padding:0;border:0;font-size:16.5px;line-height:1.75;color:color-mix(in srgb,var(--ev-ink) 88%,var(--ev-muted))}
.ev-desc p{margin:0 0 14px}.ev-desc p:last-child{margin:0}
.ev-desc.is-clamped{max-height:240px;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 62%,transparent);mask-image:linear-gradient(180deg,#000 62%,transparent)}
.ev-more{display:inline-flex;align-items:center;gap:6px;margin-top:14px;padding:0;border:0;background:none;color:var(--ev-primary-2);font:inherit;font-size:14px;font-weight:700;cursor:pointer}
.ev-more[hidden]{display:none}
.ev-more[aria-expanded=true] .ev-i{transform:rotate(180deg)}
.ev-more .ev-i{width:15px;height:15px;transition:transform .2s}
.ev-news{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ev-news a{display:flex;align-items:center;gap:14px;padding:10px;border-radius:14px;color:var(--ev-ink);text-decoration:none;transition:background .2s}
.ev-news a:hover{background:var(--ev-soft)}
.ev-news a>span:nth-child(2){display:flex;flex-direction:column;flex:1;min-width:0}
.ev-news strong{font-size:15px}.ev-news small{color:var(--ev-muted);font-size:13px}
.ev-news .ev-tile{width:44px;height:44px;border-radius:12px}
.ev-news a>.ev-i{color:var(--ev-muted);transition:transform .2s}
.ev-news a:hover>.ev-i{transform:translateX(3px);color:var(--ev-primary-2)}

/* Location card */
.ev-side{position:sticky;top:calc(var(--mmh-height,96px) + 20px)}
.ev-where-name{display:flex;flex-direction:column;gap:2px;margin:0 0 16px;font-size:15px;color:var(--ev-muted);line-height:1.5}
.ev-where-name strong{color:var(--ev-ink);font-size:16px}
.ev-map{position:relative;display:grid;place-items:center;aspect-ratio:16/10;margin-bottom:14px;border-radius:14px;overflow:hidden;border:1px solid var(--ev-line);
  background:linear-gradient(color-mix(in srgb,var(--ev-primary) 6%,transparent) 1px,transparent 1px) 0 0/22px 22px,linear-gradient(90deg,color-mix(in srgb,var(--ev-primary) 6%,transparent) 1px,transparent 1px) 0 0/22px 22px,var(--ev-soft)}
.ev-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.ev-map-btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border:1px solid var(--ev-line);border-radius:999px;background:var(--ev-bg);color:var(--ev-ink);font:inherit;font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 8px 20px color-mix(in srgb,var(--ev-primary) 10%,transparent);transition:transform .2s}
.ev-map-btn:hover{transform:translateY(-2px)}
.ev-help{margin:14px 0 0;font-size:13.5px;color:var(--ev-muted)}
.ev-help a{color:var(--ev-primary-2);font-weight:700}

/* More gatherings */
.ev-moreevents{margin-top:64px}
.ev-moreevents-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:20px}
body.pb-page .ev-moreevents h2{margin:0;font-family:inherit;font-size:clamp(24px,2.4vw,32px);font-weight:700;letter-spacing:-.02em;text-transform:none;color:var(--ev-ink)}
.ev-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.ev-mini{display:flex;flex-direction:column;border-radius:18px;overflow:hidden;background:var(--ev-bg);border:1px solid var(--ev-line);color:var(--ev-ink);text-decoration:none;transition:transform .25s cubic-bezier(.22,1,.36,1),box-shadow .25s}
.ev-mini:hover{transform:translateY(-4px);box-shadow:0 18px 40px color-mix(in srgb,var(--ev-primary) 12%,transparent)}
.ev-mini-photo{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--ev-soft)}
.ev-mini-photo img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.22,1,.36,1)}
.ev-mini:hover .ev-mini-photo img{transform:scale(1.05)}
.ev-mini-photo .ev-tile{position:absolute;left:12px;top:12px;width:46px;height:50px}
.ev-mini-copy{display:flex;flex-direction:column;gap:4px;padding:16px 18px 20px}
.ev-mini-copy small{color:var(--ev-accent-ink);font-size:12px;font-weight:700;letter-spacing:.4px;text-transform:uppercase}
.ev-mini-copy strong{font-size:18px;line-height:1.25}
.ev-mini-copy span{color:var(--ev-muted);font-size:14px}

/* Sticky bar once the actions scroll away (Meetup) */
.ev-sticky{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));z-index:60;width:min(760px,calc(100% - 24px));transform:translate(-50%,calc(100% + 40px));opacity:0;pointer-events:none;transition:transform .35s cubic-bezier(.22,1,.36,1),opacity .25s}
.ev-sticky.is-on{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.ev-sticky-in{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 20px;border-radius:18px;background:color-mix(in srgb,var(--ev-bg) 92%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--ev-line);box-shadow:0 18px 50px color-mix(in srgb,var(--ev-ink) 18%,transparent)}
.ev-sticky-text{display:flex;flex-direction:column;flex:1;min-width:0}
.ev-sticky-text small{color:var(--ev-muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev-sticky-text strong{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev-sticky .ev-btn{min-height:44px}

/* Toast (Share → link copied, .ics saved) */
.ev-toast{position:fixed;left:50%;bottom:calc(100px + env(safe-area-inset-bottom));z-index:70;transform:translateX(-50%);padding:12px 18px;border-radius:12px;background:var(--brand-dark,#14091f);color:#fff;font-size:14px;font-weight:600;box-shadow:0 14px 40px #00000040;animation:evPop .25s cubic-bezier(.22,1,.36,1)}

/* Arrival: the hero settles in */
.ev-anim .ev-cover,.ev-anim .ev-head>*{opacity:0;transform:translateY(14px)}
.ev-anim.is-in .ev-cover,.ev-anim.is-in .ev-head>*{opacity:1;transform:none;transition:opacity .6s ease,transform .7s cubic-bezier(.22,1,.36,1)}
.ev-anim.is-in .ev-head>*:nth-child(2){transition-delay:.06s}.ev-anim.is-in .ev-head>*:nth-child(3){transition-delay:.12s}.ev-anim.is-in .ev-head>*:nth-child(4){transition-delay:.18s}

@media(max-width:960px){
  .ev-hero{grid-template-columns:1fr;gap:28px}
  .ev-cover{aspect-ratio:16/10}
  .ev-body{grid-template-columns:1fr;margin-top:44px}
  .ev-side{position:static}
  .ev-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:620px){
  .ev-page{padding:18px 0 120px}
  .ev-cover{border-radius:16px;aspect-ratio:4/3}
  .ev-card{padding:22px;border-radius:16px}
  .ev-actions .ev-btn--primary{flex:1 1 100%}
  .ev-actions .ev-menu{flex:1 1 auto;min-width:0}.ev-actions .ev-menu .ev-btn{width:100%}
  /* Save and Share become square icon buttons so the row fits any phone */
  .ev-actions .ev-btn--icon{flex:none;width:50px;padding:0}
  .ev-actions .ev-btn--icon span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .ev-menu-list{left:0;right:0;min-width:0}
  .ev-grid{grid-template-columns:1fr}
  .ev-moreevents,.ev-body{margin-top:36px}
  body.has-tabbar .ev-sticky{bottom:calc(96px + env(safe-area-inset-bottom))}
  .ev-sticky-in{padding:8px 8px 8px 14px}
  .ev-sticky .ev-btn--icon span{display:none}
  .ev-sticky .ev-btn--primary{padding:0 14px;font-size:14px}
}
@media (prefers-reduced-motion:reduce){
  .ev-anim .ev-cover,.ev-anim .ev-head>*{opacity:1;transform:none}
  .ev-cover img,.ev-mini-photo img,.ev-btn,.ev-mini,.ev-sticky{transition:none}
  .ev-status.is-live i{animation:none}
}
