/* Community Events (festivals.html, join.html). Same night palette as site.css. */
.ev-section { padding-bottom: 40px; }
.ev-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); gap: 18px; }
.ev-card { position: relative; background: var(--bg-2); border: 1px solid rgba(255,255,255,.1); border-radius: var(--radius); padding: 20px; overflow-wrap: anywhere; }
.ev-card h3 { margin: 0 0 .4em; font-size: 1.15rem; }
.ev-card p { margin: 0 0 .6em; }
.ev-card.target { border-color: var(--yellow); box-shadow: 0 0 0 3px rgba(255,210,63,.35); }
.ev-live { border-color: var(--pink); box-shadow: 0 6px 28px rgba(255,79,163,.25); }
.ev-desc { color: #d9dcf7; }
.ev-meta { font-size: .88rem; }
.ev-when { font-weight: 700; color: var(--green); }
.ev-live .ev-when { color: var(--pink); letter-spacing: .06em; }
.ev-count { font-family: var(--display); font-size: 1.3rem; color: var(--yellow); }
.ev-key { font-family: var(--display); font-size: clamp(1.8rem, 9vw, 2.6rem); letter-spacing: .18em; color: var(--yellow); margin: 0 0 .4em; }
.ev-key-label { margin: 0; }
.ev-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: .4rem 0; }
.ev-going[aria-pressed="true"] { border-color: var(--green); color: var(--green); }
.ev-link { background: none; border: 0; color: var(--muted); text-decoration: underline; cursor: pointer; font: inherit; font-size: .85rem; min-height: 44px; padding: 0 6px; display: inline-flex; align-items: center; }
.ev-link:hover { color: var(--yellow); }
.ev-report { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 6px; }
.ev-report[hidden] { display: none; }
.ev-report input { flex: 1 1 180px; min-width: 0; min-height: 44px; font: inherit; color: var(--text); background: var(--bg); border: 1px solid rgba(255,255,255,.25); border-radius: 8px; padding: 6px 10px; }
.ev-score { font-family: var(--display); font-size: 1.5rem; margin: 0 0 .4em; }
.ev-grade { color: var(--yellow); }
.ev-goals { list-style: none; padding: 0; margin: 0 0 .6em; font-size: .9rem; }
.ev-goals .met { color: var(--green); }
.ev-goals .missed { color: var(--warn); }
.ev-empty { grid-column: 1 / -1; margin: 0; padding: 18px 0; max-width: 46rem; }
.ev-scroll { overflow-x: auto; }
.ev-table { width: 100%; border-collapse: collapse; font-size: .95rem; }
.ev-table th, .ev-table td { text-align: left; padding: 10px 12px; border-bottom: 1px solid rgba(255,255,255,.08); }
.ev-table th { color: var(--muted); font-size: .75rem; text-transform: uppercase; letter-spacing: .1em; }
.ev-how ul { padding-left: 1.2em; max-width: 70ch; }
.ev-how li { margin-bottom: .6em; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* The join page */
.join-card { max-width: 640px; }
.join-card .ev-card { padding: 26px; }
.join-big { display: flex; width: 100%; justify-content: center; text-align: center; white-space: normal; margin: 1rem 0 .6rem; }
.join-big[aria-disabled="true"] { opacity: .55; pointer-events: none; filter: grayscale(.6); }
.join-help { margin-top: 1rem; }
.join-help p { font-size: .92rem; }
.join-h1 { font-size: clamp(1.5rem, 5vw, 2.2rem); }
