/* GENERATED by scripts/extract-ctw-card-css.py from the source theme (ctwui.css + events.css). Do not edit by hand. */
.ctwUi { --on-bg: #000000; --on-bg-2: #44597E; --card: #12123A; --accent: #E11D48; --accent-2: #5D5FEF; --text: #FFFFFF; --text-2: #B6BDDA; --border: rgba(148, 163, 255, .18); --hover-edge: rgba(225, 29, 72, .6); --ibiza: #FFD400; --ibiza-ink: #231A00; --region-usa: #2D7DD2; --region-germany: #D9A441; --region-germany-ink: #241A00; --region-netherlands: #FF7A1A; --region-netherlands-ink: #2E1400; --region-belgium: #8B5CF6; --region-spain: #E8553D; --region-czech: #4CC9F0; --region-czech-ink: #00212E; --stat-upcoming: #7EF29D; --kind-genre: 108, 140, 255; --kind-dj: 180, 140, 255; --kind-town: 79, 209, 165; --kind-artist: 255, 143, 177; --kind-brand: 255, 180, 84; --kind-type: 79, 195, 247; --fb-bg: linear-gradient(135deg, rgba(93,95,239,.16), rgba(255,45,85,.06)), #171A3D; --fb-text: #FFFFFF; --fb-text-2: #C3D0EE; --chip-bg: #2A2672; --chip-bg-hover: #36318C; --chip-border: rgba(148, 163, 255, .35); --chip-border-hover: rgba(148, 163, 255, .7); --radius: 20px; --shadow: 0 8px 24px rgba(10, 16, 60, .3); --shadow-lift: 0 16px 40px rgba(10, 16, 60, .45); --ease: 250ms cubic-bezier(.4, 0, .2, 1); font-family: 'Inter', system-ui, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 17px; line-height: 1.6; color: var(--on-bg); -webkit-font-smoothing: antialiased; padding-bottom: 32px; }
.ctwUi * { box-sizing: border-box; }
.ctwUi a { color: var(--text); }
.ctwUi .sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.ctwUi :focus-visible { outline: 2px solid var(--accent-2); outline-offset: 2px; border-radius: 4px; }
.ctwUi .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 13px 28px; border-radius: 999px; font-size: 15px; font-weight: 600; text-decoration: none; transition: transform var(--ease), box-shadow var(--ease), background var(--ease), border-color var(--ease); }
.ctwUi .btn:hover { transform: translateY(-2px); }
.ctwUi .btn-primary { background: #135BEC; color: #fff; box-shadow: 0 4px 16px rgba(19, 91, 236, .35); }
.ctwUi .btn-primary:hover { background: #0F4BC4; box-shadow: 0 8px 24px rgba(19, 91, 236, .45); }
.ctwUi .btn-success { background: #15803D; color: #fff; box-shadow: 0 4px 16px rgba(21, 128, 61, .3); }
.ctwUi .btn-success:hover { background: #166534; box-shadow: 0 8px 24px rgba(21, 128, 61, .4); }
.ctwUi .btn-muted { background: #6B7280; color: #fff; box-shadow: 0 4px 16px rgba(107, 114, 128, .3); }
.ctwUi .btn-muted:hover { background: #4B5563; box-shadow: 0 8px 24px rgba(107, 114, 128, .4); }
.ctwUi .btn-warning { background: #F59E0B; color: #1F1300; box-shadow: 0 4px 16px rgba(245, 158, 11, .3); }
.ctwUi .btn-warning:hover { background: #D97706; color: #1F1300; box-shadow: 0 8px 24px rgba(245, 158, 11, .4); }
.ctwUi .btn-admin { background: #9B1C1C; color: #fff; box-shadow: 0 4px 16px rgba(155, 28, 28, .35); }
.ctwUi .btn-admin:hover { background: #B42323; box-shadow: 0 8px 24px rgba(155, 28, 28, .45); }
.ctwUi .btn-ticket { background: #135BEC; color: #fff; box-shadow: 0 4px 16px rgba(19, 91, 236, .35); }
.ctwUi .btn-ticket:hover { background: #0F4BC4; box-shadow: 0 8px 24px rgba(19, 91, 236, .45); }
.ctwUi .btn-sm { padding: 9px 20px; font-size: 13px; }
.ctwUi .fdrop-when-panel .btn { width: 100%; }
.ctwUi .grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }
@media (max-width: 1200px) {
  .ctwUi .grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 900px) {
  .ctwUi .grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .ctwUi .grid { grid-template-columns: 1fr; }
}
@media (min-width: 901px) {
  .ctwUi:not(.view-list-preview):not(.view-list-compact) .grid:is(:has(> :only-child), :has(> :nth-child(2):last-child)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ctwUi:not(.view-list-preview):not(.view-list-compact) .grid:is(:has(> :only-child), :has(> :nth-child(2):last-child)) .card { flex-direction: row; }
  .ctwUi:not(.view-list-preview):not(.view-list-compact) .grid:is(:has(> :only-child), :has(> :nth-child(2):last-child)) .card-media { flex: 0 0 42%; width: 42%; aspect-ratio: auto; min-height: 210px; }
  .ctwUi:not(.view-list-preview):not(.view-list-compact) .grid:is(:has(> :only-child), :has(> :nth-child(2):last-child)) .card-body { flex: 1 1 auto; min-width: 0; }
}
.ctwUi .card { position: relative; display: flex; flex-direction: column; color: var(--text); background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; transition: transform var(--ease), box-shadow var(--ease), border-color var(--ease); border-top-width: 3px; }
.ctwUi .card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lift); border-color: var(--hover-edge); }
.ctwUi .card-region-ibiza { --region: var(--ibiza); --region-ink: var(--ibiza-ink); }
.ctwUi .card-region-usa { --region: var(--region-usa); }
.ctwUi .card-region-germany { --region: var(--region-germany); --region-ink: var(--region-germany-ink); }
.ctwUi .card-region-netherlands { --region: var(--region-netherlands); --region-ink: var(--region-netherlands-ink); }
.ctwUi .card-region-belgium { --region: var(--region-belgium); }
.ctwUi .card-region-spain { --region: var(--region-spain); }
.ctwUi .card-region-czech-republic { --region: var(--region-czech); --region-ink: var(--region-czech-ink); }
.ctwUi .card-region-ibiza, .ctwUi .card-region-usa, .ctwUi .card-region-germany, .ctwUi .card-region-netherlands, .ctwUi .card-region-belgium, .ctwUi .card-region-spain, .ctwUi .card-region-czech-republic { border-top-color: var(--region); }
.ctwUi .card-region-ibiza:hover, .ctwUi .card-region-usa:hover, .ctwUi .card-region-germany:hover, .ctwUi .card-region-netherlands:hover, .ctwUi .card-region-belgium:hover, .ctwUi .card-region-spain:hover, .ctwUi .card-region-czech-republic:hover { border-top-color: var(--region); }
.ctwUi .card-past .card-media { filter: grayscale(.75) brightness(.85); transition: filter var(--ease); }
.ctwUi .card-past:hover .card-media { filter: none; }
.ctwUi .card-featured-frame { position: relative; display: flex; padding: 7px; border-radius: calc(var(--radius) + 7px); transition: transform var(--ease), box-shadow var(--ease); }
.ctwUi .card-featured-frame .card { flex: 1 1 auto; min-width: 0; }
.ctwUi .card-featured-frame::before { content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 3px; background: repeating-conic-gradient( from var(--ants-angle, 0deg), #E0189A 0deg 6deg, transparent 6deg 12deg ); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; animation: antsMarch 6s linear infinite; pointer-events: none; }
@supports not ( background: conic-gradient(red, blue) ) {
  .ctwUi .card-featured-frame { padding: 0; }
  .ctwUi .card-featured { border-color: #E0189A; }
  .ctwUi .card-featured-frame::before { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .ctwUi .card-featured-frame::before { animation: none; }
  .ctwUi .card-countdown-live::before { animation: none; }
}
.ctwUi .card-featured-frame:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.ctwUi .card-featured-frame:hover .card { transform: none; box-shadow: var(--shadow); border-color: var(--border); }
.ctwUi .card-featured-frame:hover::before { animation-duration: 2.5s; filter: brightness(1.15); }
.ctwUi .card-featured-frame:hover .card-region-ibiza, .ctwUi .card-featured-frame:hover .card-region-usa, .ctwUi .card-featured-frame:hover .card-region-germany, .ctwUi .card-featured-frame:hover .card-region-netherlands, .ctwUi .card-featured-frame:hover .card-region-belgium, .ctwUi .card-featured-frame:hover .card-region-spain, .ctwUi .card-featured-frame:hover .card-region-czech-republic { border-top-color: var(--region); }
.ctwUi .card-media { position: relative; display: block; aspect-ratio: 16 / 9; overflow: hidden; background: radial-gradient(120% 140% at 85% -20%, hsl(var(--hue) 75% 45% / .55), transparent 60%), linear-gradient(140deg, hsl(var(--hue) 55% 26%), hsl(calc(var(--hue) + 40) 65% 13%)); }
.ctwUi .card-media .card-thumb { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; display: block; transition: transform var(--ease); mask-image: linear-gradient(90deg, transparent 0%, #000 38%, #000 62%, transparent 100%); -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 38%, #000 62%, transparent 100%); }
.ctwUi .card:hover .card-media .card-thumb { transform: scale(1.05); }
.ctwUi .card-media-fallback { position: absolute; inset: 0; z-index: 0; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 4px; padding: 0 22px 54px; pointer-events: none; }
.ctwUi .card-media:has(.card-thumb) .card-media-fallback { display: none; }
.ctwUi .card-media-fallback-venue { font-weight: 800; font-size: 17px; line-height: 1.25; color: #FFFFFF; text-shadow: 0 1px 3px rgba(0, 0, 0, .45); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ctwUi .card-media-fallback-date { display: none; font-size: 12.5px; font-weight: 600; color: rgba(255, 255, 255, .72); text-shadow: 0 1px 3px rgba(0, 0, 0, .45); }
.ctwUi .card-media-fallback-icon { position: absolute; top: 14px; left: 18px; font-size: 40px; line-height: 1; }
.ctwUi .card-media-fallback-cat { font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: rgba(255, 255, 255, .85); text-shadow: 0 1px 3px rgba(0, 0, 0, .45); }
/* No image: a light poster-style panel with dark text, matching the event page placeholder. */
.ctwUi .card-media:not(:has(.card-thumb)) { background: linear-gradient(160deg, var(--hl), var(--surface) 70%); }
.ctwUi .card-media:not(:has(.card-thumb))::after { background: none; }
.ctwUi .card-media:not(:has(.card-thumb)) .card-media-fallback-venue,
.ctwUi .card-media:not(:has(.card-thumb)) .card-media-fallback-cat { color: var(--heading); text-shadow: none; }
.ctwUi .card-media:not(:has(.card-thumb)) .card-media-fallback-date { color: var(--ink); text-shadow: none; }
/* Tinted poster (profile category sets poster colours): same gradient as the event page, with white text. */
.ctwUi .card-media.poster-tinted:not(:has(.card-thumb)) { background: radial-gradient(circle at 50% 38%, rgba(255, 255, 255, .35), rgba(255, 255, 255, 0) 60%), linear-gradient(135deg, var(--from), var(--to)); }
.ctwUi .card-media.poster-tinted:not(:has(.card-thumb)) .card-media-fallback-venue,
.ctwUi .card-media.poster-tinted:not(:has(.card-thumb)) .card-media-fallback-cat,
.ctwUi .card-media.poster-tinted:not(:has(.card-thumb)) .card-media-fallback-date { color: #fff; }
/* Poster layout: content sits at the top and the date tile (bottom-left) gets clear space. The tile already shows the date, so the small date line is hidden here. */
.ctwUi .card-media.poster-tinted:not(:has(.card-thumb)) .card-media-fallback { justify-content: flex-start; padding: 14px 22px 54px; gap: 4px; }
.ctwUi .card-media.poster-tinted:not(:has(.card-thumb)) .card-media-fallback-icon { position: static; font-size: 30px; }
.ctwUi .card-media.poster-tinted:not(:has(.card-thumb)) .card-media-fallback-date { display: none; }
/* Placeholder posters (no photo): icon and category sit in the flow at the top, the date badge keeps the bottom clear, and the
   title is not repeated (it is the card heading directly underneath). */
.ctwUi .card-media:not(:has(.card-thumb)) .card-media-fallback { justify-content: flex-start; padding: 14px 22px 54px; gap: 4px; }
.ctwUi .card-media:not(:has(.card-thumb)) .card-media-fallback-icon { position: static; font-size: 30px; }
.ctwUi .card-media:not(:has(.card-thumb)) .card-media-fallback-title { display: none; }
/* A large, faint copy of the category icon fills the empty part of a placeholder poster. */
.ctwUi .card-media-fallback-mark { position: absolute; right: 6px; bottom: -10px; font-size: 92px; line-height: 1; opacity: .2; filter: saturate(.7); pointer-events: none; }
.ctwUi .card-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(0, 0, 0, .35)); transition: transform var(--ease); }
.ctwUi .card-media:has(.card-thumb)::after { background: linear-gradient(90deg, hsl(var(--hue) 55% 22% / .85), transparent 20%, transparent 80%, hsl(var(--hue) 55% 22% / .85)), linear-gradient(180deg, rgba(0, 0, 0, .08) 40%, rgba(0, 0, 0, .55)); }
.ctwUi .card-media-date { position: absolute; left: 14px; bottom: 12px; z-index: 1; display: flex; align-items: baseline; gap: 6px; background: #000000; border: 1px solid rgba(148, 163, 255, .25); border-radius: 10px; padding: 6px 11px; transition: transform var(--ease); }
.ctwUi .card:hover .card-media-date { transform: scale(1.04); }
.ctwUi .card-media-date .day { font-size: 26px; font-weight: 800; line-height: 1; letter-spacing: -.02em; color: #FFFFFF; }
.ctwUi .card-media-date .dow, .ctwUi .card-media-date .mon { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; opacity: .85; color: #FFFFFF; }
.ctwUi .card-media-price { position: absolute; left: 14px; bottom: 12px; z-index: 1; background: #000000; border: 1px solid rgba(148, 163, 255, .25); border-radius: 10px; padding: 7px 12px; font-size: 14px; font-weight: 800; letter-spacing: .01em; color: #FFFFFF; transition: transform var(--ease); }
.ctwUi .card:hover .card-media-price { transform: scale(1.04); }
/* An event card has a date badge bottom-left, so its price goes bottom-right (a show card has no date badge). */
.ctwUi .card-media-date ~ .card-media-price { left: auto; right: 14px; }
.ctwUi .card-media-cal { position: absolute; top: 14px; right: 14px; z-index: 1; font-size: 12px; font-weight: 700; letter-spacing: .04em; background: #000000; color: #FFFFFF; border: 1px solid rgba(148, 163, 255, .25); border-radius: 999px; padding: 5px 12px; }
.ctwUi .card-region-uk .card-media-cal { display: none; }
.ctwUi .card-fav-media { display: none; }
.ctwUi .card-region-ibiza .card-media-cal { background: var(--ibiza); color: var(--ibiza-ink); border-color: rgba(107, 84, 0, .3); }
.ctwUi .card-region-usa .card-media-cal, .ctwUi .card-region-germany .card-media-cal, .ctwUi .card-region-netherlands .card-media-cal, .ctwUi .card-region-belgium .card-media-cal, .ctwUi .card-region-spain .card-media-cal, .ctwUi .card-region-czech-republic .card-media-cal { background: var(--region); color: var(--region-ink, #FFFFFF); }
.ctwUi .card-region-ibiza .card-media, .ctwUi .card-region-usa .card-media, .ctwUi .card-region-germany .card-media, .ctwUi .card-region-netherlands .card-media, .ctwUi .card-region-belgium .card-media, .ctwUi .card-region-spain .card-media, .ctwUi .card-region-czech-republic .card-media { background: radial-gradient(120% 140% at 85% -20%, color-mix(in srgb, var(--region) 70%, transparent), transparent 60%), linear-gradient(140deg, color-mix(in srgb, var(--region) 55%, #12123A), color-mix(in srgb, var(--region) 25%, #05050A)); }
.ctwUi .card-region-ibiza .card-media:has(.card-thumb)::after, .ctwUi .card-region-usa .card-media:has(.card-thumb)::after, .ctwUi .card-region-germany .card-media:has(.card-thumb)::after, .ctwUi .card-region-netherlands .card-media:has(.card-thumb)::after, .ctwUi .card-region-belgium .card-media:has(.card-thumb)::after, .ctwUi .card-region-spain .card-media:has(.card-thumb)::after, .ctwUi .card-region-czech-republic .card-media:has(.card-thumb)::after { background: linear-gradient(90deg, color-mix(in srgb, var(--region) 60%, #12123A), transparent 20%, transparent 80%, color-mix(in srgb, var(--region) 60%, #12123A)), linear-gradient(180deg, rgba(0, 0, 0, .08) 40%, rgba(0, 0, 0, .55)); }
.ctwUi .card-countdown { display: inline-flex; align-items: center; flex: none; white-space: nowrap; font-size: 12px; font-weight: 700; letter-spacing: .04em; line-height: 1.3; background: #A00F35; color: #FFFFFF; border: 1px solid rgba(255, 255, 255, .25); border-radius: 999px; padding: 2px 10px; }
.ctwUi .card-countdown-week { background: #A5334E; }
.ctwUi .card-countdown-month { background: #C97A93; }
.ctwUi .card-countdown-months { background: #6B7280; }
.ctwUi .card-countdown-today { background: transparent; color: #15803D; border-color: #15803D; }
:root[data-ips-scheme="dark"] .ctwUi .card-countdown.card-countdown-today { background: transparent !important; color: #4ADE80 !important; border-color: #4ADE80 !important; }
:root[data-ips-scheme="light"] .ctwUi .card-countdown.card-countdown-today { background: transparent !important; color: #15803D !important; border-color: #15803D !important; }
.ctwUi .card-countdown-live { display: inline-flex; align-items: center; gap: 6px; background: #15803D; color: #FFFFFF; }
.ctwUi .card-countdown-live::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #FFFFFF; animation: countdownPulse 1.4s ease-in-out infinite; }
.ctwUi .card-body { position: relative; display: flex; flex-direction: column; gap: 10px; padding: 18px 20px 20px; flex: 1; }
.ctwUi .card-title { font-size: 20px; font-weight: 700; letter-spacing: -.01em; line-height: 1.3; margin: 0; }
.ctwUi .card-title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ctwUi .card-title a { color: var(--text); text-decoration: none; transition: color var(--ease); }
.ctwUi .card-title a:hover { color: var(--accent); }
.ctwUi .card-title-date { font-size: .78em; font-weight: 500; color: var(--text-2); }
.ctwUi .card:has(.card-media:hover) .card-title a, .ctwUi .card:has(.card-cover-link:hover) .card-title a { color: var(--accent); }
.ctwUi .card-cover-link { position: absolute; inset: 0; z-index: 1; }
.ctwUi .card-actions, .ctwUi .meta a.location-link, .ctwUi .meta a.genre-tag { position: relative; z-index: 2; }
.ctwUi .meta { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.ctwUi .meta li { font-size: 15px; color: var(--text-2); display: flex; align-items: center; gap: 10px; transition: color var(--ease); }
.ctwUi .meta li:has(> .card-countdown) { flex-wrap: wrap; row-gap: 4px; }
.ctwUi .card:hover .meta li { color: var(--text); }
.ctwUi .loc-text { min-width: 0; }
.ctwUi .meta .ico { flex-shrink: 0; font-size: 14px; }
.ctwUi .meta .ico svg { display: block; width: 14px; height: 14px; }
.ctwUi .meta a { color: var(--text-2); transition: color var(--ease); }
.ctwUi .card:hover .meta a { color: var(--text); }
.ctwUi .meta a:hover { color: var(--accent); }
.ctwUi .card:hover .meta a.location-link:hover { color: var(--accent-2); text-decoration: underline; }
.ctwUi .location-link:focus-visible { outline: 2px solid var(--accent-2); outline-offset: 2px; }
.ctwUi .meta .genres { flex-wrap: wrap; row-gap: 8px; }
.ctwUi .genre-tag { display: inline-block; margin-right: 6px; padding: 3px 12px; border: 1px solid var(--border); border-radius: 999px; font-size: 13px; font-weight: 600; text-decoration: none; color: var(--text-2); transition: color var(--ease), border-color var(--ease); }
.ctwUi .card:hover .genre-tag { color: var(--text); }
.ctwUi .genre-tag:hover { color: var(--text); border-color: var(--hover-edge); }
.ctwUi .meta .genres a.genre-tag:not(.genre-tag-more):nth-of-type(n+4) { display: none; }
.ctwUi .meta .genres.chips-expanded a.genre-tag:not(.genre-tag-more):nth-of-type(n+4) { display: inline-block; }
.ctwUi .genre-tag-more { color: var(--text); border-style: dashed; }
.ctwUi .genre-tag-more:hover { border-color: var(--hover-edge); border-style: solid; }
.ctwUi .genre-tag .chip-ico { display: inline-block; flex: none; margin-right: 5px; vertical-align: -1px; opacity: .8; }
.ctwUi .genre-tag[data-kind='genre'] { --kind: var(--kind-genre); }
.ctwUi .genre-tag[data-kind='dj'] { --kind: var(--kind-dj); }
.ctwUi .genre-tag[data-kind='town'] { --kind: var(--kind-town); }
.ctwUi .genre-tag[data-kind='artist'] { --kind: var(--kind-artist); }
.ctwUi .genre-tag[data-kind='brand'] { --kind: var(--kind-brand); }
.ctwUi .genre-tag[data-kind='type'] { --kind: var(--kind-type); }
.ctwUi .genre-tag:is([data-kind='genre'], [data-kind='dj'], [data-kind='town'], [data-kind='artist'], [data-kind='brand'], [data-kind='type']) { background: rgba(var(--kind), .13); border-color: rgba(var(--kind), .38); }
.ctwUi .genre-tag:is([data-kind='genre'], [data-kind='dj'], [data-kind='town'], [data-kind='artist'], [data-kind='brand'], [data-kind='type']) .chip-ico { color: rgb(var(--kind)); opacity: 1; }
.ctwUi .genre-tag:is([data-kind='genre'], [data-kind='dj'], [data-kind='town'], [data-kind='artist'], [data-kind='brand'], [data-kind='type']):hover { border-color: var(--hover-edge); }
.ctwUi .card .meta .genres { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.ctwUi .card .meta .genres > .ico { display: inline-flex; vertical-align: -2px; margin-right: 6px; }
.ctwUi .card .meta .genres a.genre-tag { display: inline; margin-right: 0; padding: 0; border: 0; background: none; border-radius: 0; font-weight: 500; }
.ctwUi .card .meta .genres a.genre-tag:not(.genre-tag-more):not(:first-of-type)::before { content: " \00b7 "; color: var(--text-2); }
.ctwUi .card .meta .genres a.genre-tag .chip-ico { display: none; }
.ctwUi .card .meta .genres a.genre-tag-more { display: none; }
.ctwUi .card-actions { margin-top: auto; padding-top: 6px; display: flex; align-items: center; gap: 8px; }
.ctwUi .card-media[data-description]::before { content: attr(data-description); position: absolute; inset: 0; z-index: 2; display: block; padding: 16px 20px; overflow: hidden; background: rgba(13, 13, 46, .92); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); color: var(--text-2); font-size: 13.5px; line-height: 1.55; white-space: normal; overflow-wrap: break-word; opacity: 0; transition: opacity var(--ease); pointer-events: none; }
.ctwUi .card:hover .card-media[data-description]::before, .ctwUi .card:focus-within .card-media[data-description]::before { opacity: 1; }
@keyframes ctw-trending-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }
.ctwUi .gallery-item .fav-btn { position: absolute; top: 10px; right: 10px; z-index: 1; }
.ctwUi .gallery-compact-list .card-body { display: flex; align-items: center; gap: 12px; }
.ctwUi .gallery-compact-list .card-title { flex: 1; }
.ctwUi .ctw-section-card .gallery-compact-list .card { background: color-mix(in srgb, var(--card), white 14%); }
.ctwUi .share-btn { cursor: pointer; user-select: none; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 14px; border-radius: 999px; margin-left: auto; flex-shrink: 0; border: 1px solid var(--border); background: var(--card); color: var(--text-2); font-size: 13px; font-weight: 700; font-family: inherit; transition: color var(--ease), border-color var(--ease), background var(--ease), transform var(--ease); }
.ctwUi .share-btn:hover, .ctwUi .share-btn.active { color: var(--text); border-color: var(--hover-edge); transform: translateY(-1px); }
.ctwUi .brand-actions .share-btn, .ctwUi .dj-actions .share-btn, .ctwUi .venue-actions .share-btn, .ctwUi .city-actions .share-btn, .ctwUi .genre-actions .share-btn, .ctwUi .performer-actions .share-btn { margin-left: 0; }
.ctwUi .share-btn-icon { width: 38px; height: 38px; padding: 0; }
.ctwUi .fav-btn { cursor: pointer; user-select: none; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; padding: 0; border-radius: 999px; flex-shrink: 0; border: 1px solid var(--border); background: var(--card); color: var(--text-2); font-family: inherit; transition: color var(--ease), border-color var(--ease), background var(--ease), transform var(--ease); }
.ctwUi .fav-btn:hover { color: var(--text); border-color: var(--hover-edge); transform: translateY(-1px); }
.ctwUi .fav-btn.fav-btn-active { color: #fff; border-color: var(--accent-2); background: var(--accent-2); }
.ctwUi .fav-btn.fav-btn-active:hover { filter: brightness(.88); }
.ctwUi .fav-btn:disabled { opacity: .6; cursor: default; transform: none; }
.ctwUi .fav-btn-icon { font-size: 17px; line-height: 1; }
.ctwUi .share-btn-icon, .ctwUi .fav-btn { position: relative; }
.ctwUi .share-btn-icon::after, .ctwUi .fav-btn::after { content: ""; position: absolute; inset: -3px; }
@media (prefers-reduced-motion: reduce) {
  .ctwUi, .ctwUi *, .ctwUi *::before, .ctwUi *::after { transition: none !important; animation: none !important; }
}
:root[data-ips-scheme="dark"] .ctwUi { --on-bg: #EDF1FF; --on-bg-2: #9FB3E0; }
:root[data-ips-theme="19"] .ctwUi { --card: #2D0021; --fb-bg: linear-gradient(135deg, rgba(192,38,211,.18), rgba(255,45,133,.08)), #240019; --border: rgba(255, 150, 220, .18); --shadow: 0 8px 24px rgba(60, 5, 45, .35); --shadow-lift: 0 16px 40px rgba(60, 5, 45, .5); --accent-2: #C026D3; --chip-bg: #4A0F40; --chip-bg-hover: #611A56; --chip-border: rgba(255, 150, 220, .35); --chip-border-hover: rgba(255, 150, 220, .7); }
:root[data-ips-theme="19"] .ctwUi .btn-primary, :root[data-ips-theme="19"] .ctwUi .btn-ticket { background: #CC1493; box-shadow: 0 4px 16px rgba(204, 20, 147, .3); }
:root[data-ips-theme="19"] .ctwUi .btn-primary:hover, :root[data-ips-theme="19"] .ctwUi .btn-ticket:hover { background: #A3107A; box-shadow: 0 8px 24px rgba(204, 20, 147, .4); }
.ctwFavourites .ctwGenres .genre-grid { width: min(calc(280px * var(--fav-n, 4) + 20px * (var(--fav-n, 4) - 1)), calc(100vw - 64px)); grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 280px)); justify-content: center; }
.ctwFavourites .fav-main .grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
@media (max-width: 1180px) {
  .ctwFavourites .fav-main .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .ctwFavourites .fav-main .grid { grid-template-columns: minmax(0, 1fr); }
}
.ctwUi .card-region-usa .card-media-cal { background: #1D63C4; }
.ctwUi .card-region-spain .card-media-cal { background: #C2410C; }
.ctwUi .card-region-belgium .card-media-cal { background: #7C3AED; }
:root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) .ctwUi { --card:var(--ctw-surface); --accent:var(--ctw-live); --accent-2:var(--ctw-accent); --text-2:var(--ctw-muted); --border:var(--ctw-line); --hover-edge:rgba(255,255,255,.22); --stat-upcoming:#7EF29D; --fb-bg:var(--ctw-surface); --chip-bg:transparent; --chip-bg-hover:rgba(255,255,255,.06); --chip-border:var(--ctw-line-2); --chip-border-hover:rgba(255,255,255,.4); --kind-genre:205,205,222; --kind-dj:205,205,222; --kind-artist:205,205,222; --kind-brand:205,205,222; --kind-type:205,205,222; --kind-town:205,205,222; --radius:14px; --shadow:none; --shadow-lift:0 10px 30px rgba(0,0,0,.35); }
:root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) .card-title-date, :root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) .card-actions a.share-btn[aria-label="View event"], :root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) .genre-tag[data-kind="town"] { display:none !important; }
:root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) .btn-ticket { background:var(--ctw-accent) !important; box-shadow:none !important; }
:root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) .card-countdown { background:transparent !important; color:var(--ctw-live) !important; border:1px solid rgba(255,61,139,.45) !important; }
:root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) .card-countdown-week { color:var(--ctw-muted) !important; border-color:var(--ctw-line-2) !important; }
:root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) article.card { border:1px solid var(--ctw-line) !important; box-shadow:none !important; }
:root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) .genre-card-flyers { display:none !important; }
:root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) .genre-card--photo { --ctw-tile:#3D7BFF; background: radial-gradient(120% 160% at 100% 0%, color-mix(in srgb, var(--ctw-tile) 50%, transparent), transparent 62%), var(--ctw-surface-2) !important; border:1px solid var(--ctw-line) !important; }
:root[data-ips-scheme="dark"]:not([data-ips-theme="19"]) .genre-grid > :nth-child(4n+2) { --ctw-tile:#FF3D8B; }
.ctwUi .card-media .card-thumb-bg { position: absolute; inset: -14%; width: 128%; height: 128%; max-width: none; object-fit: cover; display: block; pointer-events: none; filter: blur(18px) brightness(.5) saturate(1.2); }
:root[data-ips-scheme="dark"][data-ips-theme="19"] .ctwUi { --card:var(--ctw-surface); --accent:var(--ctw-live); --accent-2:var(--ctw-accent); --text-2:var(--ctw-muted); --border:var(--ctw-line); --hover-edge:rgba(255,255,255,.22); --stat-upcoming:#7EF29D; --fb-bg:var(--ctw-surface); --chip-bg:transparent; --chip-bg-hover:rgba(255,255,255,.06); --chip-border:var(--ctw-line-2); --chip-border-hover:rgba(255,255,255,.4); --kind-genre:205,205,222; --kind-dj:205,205,222; --kind-artist:205,205,222; --kind-brand:205,205,222; --kind-type:205,205,222; --kind-town:205,205,222; --radius:14px; --shadow:none; --shadow-lift:0 10px 30px rgba(0,0,0,.35); }
:root[data-ips-scheme="dark"][data-ips-theme="19"] .card-title-date, :root[data-ips-scheme="dark"][data-ips-theme="19"] .card-actions a.share-btn[aria-label="View event"], :root[data-ips-scheme="dark"][data-ips-theme="19"] .genre-tag[data-kind="town"] { display:none !important; }
:root[data-ips-scheme="dark"][data-ips-theme="19"] .btn-ticket { background:#CC1493 !important; box-shadow:none !important; }
:root[data-ips-scheme="dark"][data-ips-theme="19"] .card-countdown { background:transparent !important; color:var(--ctw-live) !important; border:1px solid rgba(255,61,139,.45) !important; }
:root[data-ips-scheme="dark"][data-ips-theme="19"] .card-countdown-week { color:var(--ctw-muted) !important; border-color:var(--ctw-line-2) !important; }
:root[data-ips-scheme="dark"][data-ips-theme="19"] article.card { border:1px solid var(--ctw-line) !important; box-shadow:none !important; }
:root[data-ips-scheme="dark"][data-ips-theme="19"] .genre-card-flyers { display:none !important; }
:root[data-ips-scheme="dark"][data-ips-theme="19"] .genre-card--photo { --ctw-tile:#C026D3; background: radial-gradient(120% 160% at 100% 0%, color-mix(in srgb, var(--ctw-tile) 50%, transparent), transparent 62%), var(--ctw-surface-2) !important; border:1px solid var(--ctw-line) !important; }
:root[data-ips-scheme="dark"][data-ips-theme="19"] .genre-grid > :nth-child(4n+2) { --ctw-tile:#FF3D8B; }
:root[data-ips-scheme="light"]:not([data-ips-theme="19"]) .ctwUi { --card:var(--ctw-surface); --accent:var(--ctw-live); --accent-2:var(--ctw-accent); --text-2:var(--ctw-muted); --text:var(--ctw-text); --on-bg:var(--ctw-text); --on-bg-2:var(--ctw-muted); --border:var(--ctw-line); --hover-edge:rgba(20,40,110,.3); --stat-upcoming:#15803D; --fb-bg:var(--ctw-surface); --chip-bg:transparent; --chip-bg-hover:rgba(20,40,110,.06); --chip-border:var(--ctw-line-2); --chip-border-hover:rgba(20,40,110,.45); --kind-genre:74,88,120; --kind-dj:74,88,120; --kind-artist:74,88,120; --kind-brand:74,88,120; --kind-type:74,88,120; --kind-town:74,88,120; --radius:14px; --shadow:none; --shadow-lift:0 10px 30px rgba(20,40,110,.14); }
:root[data-ips-scheme="light"]:not([data-ips-theme="19"]) .card-title-date, :root[data-ips-scheme="light"]:not([data-ips-theme="19"]) .card-actions a.share-btn[aria-label="View event"], :root[data-ips-scheme="light"]:not([data-ips-theme="19"]) .genre-tag[data-kind="town"] { display:none !important; }
:root[data-ips-scheme="light"]:not([data-ips-theme="19"]) .btn-ticket { background:var(--ctw-accent) !important; box-shadow:none !important; }
:root[data-ips-scheme="light"]:not([data-ips-theme="19"]) .card-countdown { background:transparent !important; color:var(--ctw-live) !important; border:1px solid rgba(216,27,96,.45) !important; }
:root[data-ips-scheme="light"]:not([data-ips-theme="19"]) .card-countdown-week { color:var(--ctw-muted) !important; border-color:var(--ctw-line-2) !important; }
:root[data-ips-scheme="light"]:not([data-ips-theme="19"]) article.card { border:1px solid var(--ctw-line) !important; box-shadow:none !important; }
:root[data-ips-scheme="light"]:not([data-ips-theme="19"]) .genre-card-flyers { display:none !important; }
:root[data-ips-scheme="light"]:not([data-ips-theme="19"]) .genre-card--photo { --ctw-tile:#2F66E8; background: radial-gradient(120% 160% at 100% 0%, color-mix(in srgb, var(--ctw-tile) 50%, transparent), transparent 62%), var(--ctw-surface-2) !important; border:1px solid var(--ctw-line) !important; }
:root[data-ips-scheme="light"]:not([data-ips-theme="19"]) .genre-grid > :nth-child(4n+2) { --ctw-tile:#D81B60; }
:root[data-ips-scheme="light"][data-ips-theme="19"] .ctwUi { --card:var(--ctw-surface); --accent:var(--ctw-live); --accent-2:var(--ctw-accent); --text-2:var(--ctw-muted); --text:var(--ctw-text); --on-bg:var(--ctw-text); --on-bg-2:var(--ctw-muted); --border:var(--ctw-line); --hover-edge:rgba(120,10,90,.3); --stat-upcoming:#15803D; --fb-bg:var(--ctw-surface); --chip-bg:transparent; --chip-bg-hover:rgba(120,10,90,.06); --chip-border:var(--ctw-line-2); --chip-border-hover:rgba(120,10,90,.45); --kind-genre:122,63,107; --kind-dj:122,63,107; --kind-artist:122,63,107; --kind-brand:122,63,107; --kind-type:122,63,107; --kind-town:122,63,107; --radius:14px; --shadow:none; --shadow-lift:0 10px 30px rgba(120,10,90,.14); }
:root[data-ips-scheme="light"][data-ips-theme="19"] .card-title-date, :root[data-ips-scheme="light"][data-ips-theme="19"] .card-actions a.share-btn[aria-label="View event"], :root[data-ips-scheme="light"][data-ips-theme="19"] .genre-tag[data-kind="town"] { display:none !important; }
:root[data-ips-scheme="light"][data-ips-theme="19"] .btn-ticket { background:#CC1493 !important; box-shadow:none !important; }
:root[data-ips-scheme="light"][data-ips-theme="19"] .card-countdown { background:transparent !important; color:var(--ctw-live) !important; border:1px solid rgba(216,27,96,.45) !important; }
:root[data-ips-scheme="light"][data-ips-theme="19"] .card-countdown-week { color:var(--ctw-muted) !important; border-color:var(--ctw-line-2) !important; }
:root[data-ips-scheme="light"][data-ips-theme="19"] article.card { border:1px solid var(--ctw-line) !important; box-shadow:none !important; }
:root[data-ips-scheme="light"][data-ips-theme="19"] .genre-card-flyers { display:none !important; }
:root[data-ips-scheme="light"][data-ips-theme="19"] .genre-card--photo { --ctw-tile:#A21CAF; background: radial-gradient(120% 160% at 100% 0%, color-mix(in srgb, var(--ctw-tile) 50%, transparent), transparent 62%), var(--ctw-surface-2) !important; border:1px solid var(--ctw-line) !important; }
:root[data-ips-scheme="light"][data-ips-theme="19"] .genre-grid > :nth-child(4n+2) { --ctw-tile:#D81B60; }
.ctwEventsCards.view-cards .card-fav-media { display: block; position: absolute; top: 10px; right: 10px; z-index: 3; }
.ctwEventsCards.view-cards .card-fav-media .fav-btn { width: 36px; height: 36px; background: rgba(0, 0, 0, .6); border-color: rgba(255, 255, 255, .28); color: #FFFFFF; }
.ctwEventsCards.view-cards .card-fav-media .fav-btn.fav-btn-active { background: var(--accent-2); border-color: var(--accent-2); }
.ctwEventsCards.view-cards .card-actions .fav-btn { display: none; }
.ctwEventsCards.view-cards .card-media-cal { right: 54px; }
.ctwEventsCards.js .reveal { opacity: 0; transform: translateY(16px); transition: opacity 500ms ease, transform 500ms ease; }
.ctwEventsCards.js .reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .ctwEventsCards.js .reveal { opacity: 1; transform: none; }
}
.ctwEventsCards:not(.view-list-compact):not(.view-list-preview) .grid .card .meta .genres { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; white-space: normal; overflow: visible; }
.ctwEventsCards:not(.view-list-compact):not(.view-list-preview) .grid .card .meta .genres > .ico { display: none; }
.ctwEventsCards:not(.view-list-compact):not(.view-list-preview) .grid .card .meta .genres a.genre-tag::before { content: none; }
.ctwEventsCards:not(.view-list-compact):not(.view-list-preview) .grid .card .meta .genres a.genre-tag:is([data-kind='genre'], [data-kind='type']) { order: 1; display: inline-block; padding: 3px 9px; font-size: 11.5px; font-weight: 600; line-height: 1.3; border: 1px solid rgba(var(--kind), .45); background: rgba(var(--kind), .16); border-radius: 999px; color: var(--text); }
.ctwEventsCards:not(.view-list-compact):not(.view-list-preview) .grid .card .meta .genres a.genre-tag:is([data-kind='dj'], [data-kind='artist']) { order: 2; display: inline; font-size: 12.5px; font-weight: 600; color: rgb(var(--kind)); }
.ctwEventsCards:not(.view-list-compact):not(.view-list-preview) .grid .card .meta .genres a.genre-tag:is([data-kind='dj'], [data-kind='artist']):not(:is([data-kind='dj'], [data-kind='artist']) ~ a)::before { content: 'ft. '; color: var(--text-2); font-weight: 500; }
.ctwEventsCards:not(.view-list-compact):not(.view-list-preview) .grid .card .meta .genres a.genre-tag:is([data-kind='dj'], [data-kind='artist']) ~ a.genre-tag:is([data-kind='dj'], [data-kind='artist'])::before { content: ' \00b7 '; color: var(--text-2); }
.ctwEventsCards:not(.view-list-compact):not(.view-list-preview) .grid .card .meta .genres a.genre-tag:is([data-kind='town'], [data-kind='brand']) { display: none; }
.ctwEventsCards .grid .card:has(.meta-town-link) .meta .genres a.genre-tag[data-kind='town'] { display: none; }
.ctwEventsCards .card .meta-town-link { color: inherit; text-decoration: none; }
.ctwEventsCards .card .meta-town-link:hover, .ctwEventsCards .card .meta-town-link:focus-visible { text-decoration: underline; }
.ctwEventsCards:not(.view-list-compact):not(.view-list-preview) .grid .card .meta .genres a.genre-tag:is([data-kind='genre'], [data-kind='type']) ~ a.genre-tag:is([data-kind='genre'], [data-kind='type']) ~ a.genre-tag:is([data-kind='genre'], [data-kind='type']) ~ a.genre-tag:is([data-kind='genre'], [data-kind='type']), .ctwEventsCards:not(.view-list-compact):not(.view-list-preview) .grid .card .meta .genres a.genre-tag:is([data-kind='dj'], [data-kind='artist']) ~ a.genre-tag:is([data-kind='dj'], [data-kind='artist']) ~ a.genre-tag:is([data-kind='dj'], [data-kind='artist']) ~ a.genre-tag:is([data-kind='dj'], [data-kind='artist']) { display: none; }
.ctwUi .card-age, .ctwUi .card-distance { font-size: .85em; font-weight: 600; color: var(--text-2); white-space: nowrap; }
.ctwUi .card-age { margin-left: 8px; }
