/*
 * gc-live-overview-v2.css — recolored to canonical Guyscat theme tokens.
 *
 * Uses the variables defined in themes/guyscat-theme-c/style.css :root:
 *   --gc-accent (teal)  --gc-accent-2 (purple)  --gc-bg (dark navy)
 *   --gc-surface (card)  --gc-text  --gc-text-soft  --gc-border
 */

.gc-live-v2 {
    color: var(--gc-text, var(--gc-text));
    max-width: 100%;
    margin: 0;
    padding: 16px clamp(8px, 1vw, 18px);
}

/* Header + segments ------------------------------------------------------- */

.gc-live-v2__header { margin-bottom: 20px; }
.gc-live-v2__title {
    display: flex;
    align-items: baseline;
    gap: 16px;
    margin-bottom: 14px;
}
.gc-live-v2__title h1 {
    font-size: clamp(24px, 3vw, 32px);
    font-weight: 700;
    margin: 0;
    color: var(--gc-text, var(--gc-text));
    letter-spacing: -0.01em;
}
.gc-live-v2__title h1::before {
    content: '●';
    color: #ff5151;
    margin-right: 10px;
    font-size: 0.7em;
    vertical-align: middle;
    animation: gcLivePulse 1.4s ease-in-out infinite;
}
@keyframes gcLivePulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.4; }
}
.gc-live-v2__count {
    color: var(--gc-text-soft, var(--gc-text-soft));
    font-size: 14px;
    font-weight: 500;
}

.gc-live-v2__segments {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 4px;
    scrollbar-width: thin;
}
.gc-live-v2__seg {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    background: var(--gc-surface, rgba(var(--gc-surface-rgb), 0.96));
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.14));
    border-radius: var(--gc-radius-pill);
    color: var(--gc-text-soft, var(--gc-text-soft));
    text-decoration: none;
    font-size: 14px;
    font-weight: 500;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.gc-live-v2__seg:hover {
    background: var(--gc-bg-alt, var(--gc-bg-alt));
    border-color: var(--gc-border-strong, rgba(var(--gc-border-rgb), 0.24));
    color: var(--gc-text, var(--gc-text));
}
.gc-live-v2__seg.is-active {
    background: var(--gc-accent-soft, rgba(var(--gc-accent-rgb), 0.12));
    border-color: var(--gc-accent, var(--gc-accent));
    color: var(--gc-accent, var(--gc-accent));
}
.gc-live-v2__seg-count {
    background: rgba(var(--gc-bg-rgb), 0.55);
    border-radius: var(--gc-radius-pill);
    padding: 1px 8px;
    font-size: 12px;
    min-width: 22px;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
.gc-live-v2__seg.is-active .gc-live-v2__seg-count {
    background: rgba(var(--gc-accent-rgb), 0.18);
}

/* Layout ----------------------------------------------------------------- */

.gc-live-v2__layout {
    display: grid;
    grid-template-columns: 200px minmax(0, 1fr);
    gap: 14px;
}
@media (max-width: 900px) {
    .gc-live-v2__layout { grid-template-columns: 1fr; }
}

/* Filter rail ------------------------------------------------------------ */

.gc-live-v2__rail {
    position: sticky;
    top: 16px;
    align-self: start;
    max-height: calc(100vh - 32px);
    overflow-y: auto;
    background: var(--gc-surface, rgba(var(--gc-surface-rgb), 0.96));
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.14));
    border-radius: calc(var(--gc-radius-scale, 1) * 18px);
    padding: 14px;
    backdrop-filter: blur(12px);
    box-shadow: var(--gc-shadow-soft, 0 18px 40px rgba(3, 8, 21, 0.24));
}
.gc-live-rail__group {
    border-bottom: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.14));
    padding: 8px 0;
}
.gc-live-rail__group:last-of-type { border-bottom: none; }

.gc-live-rail__group-title {
    color: var(--gc-accent, var(--gc-accent));
    font-size: 11px;
    font-weight: 700;
    margin: 0 0 6px 0;
    padding: 0 8px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}

.gc-live-rail__subgroup { margin-top: 8px; }
.gc-live-rail__subgroup-title {
    color: var(--gc-text-soft, var(--gc-text-soft));
    font-size: 10px;
    font-weight: 600;
    margin: 8px 0 4px 0;
    padding: 0 8px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    opacity: 0.75;
}

.gc-live-rail__group--activities {
    max-height: 360px;
    overflow-y: auto;
    padding-right: 4px;
}
.gc-live-rail__group--activities::-webkit-scrollbar { width: 6px; }
.gc-live-rail__group--activities::-webkit-scrollbar-thumb {
    background: var(--gc-border-strong, rgba(var(--gc-border-rgb), 0.24));
    border-radius: calc(var(--gc-radius-scale, 1) * 3px);
}

.gc-live-rail__list {
    list-style: none;
    margin: 6px 0 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 1px;
}
.gc-live-rail__list--scroll { max-height: 280px; overflow-y: auto; }

.gc-live-rail__item {
    display: flex;
    align-items: center;
}
.gc-live-rail__item input {
    margin: 0 8px 0 8px;
    accent-color: var(--gc-accent, var(--gc-accent));
}
.gc-live-rail__item label {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 6px 6px;
    color: var(--gc-text, var(--gc-text));
    font-size: 13px;
    cursor: pointer;
    border-radius: calc(var(--gc-radius-scale, 1) * 8px);
    transition: background-color 0.1s ease;
}
.gc-live-rail__item label:hover { background: var(--gc-surface-3, rgba(255, 255, 255, 0.04)); }
.gc-live-rail__count {
    color: var(--gc-text-soft, var(--gc-text-soft));
    font-size: 11px;
    background: rgba(var(--gc-bg-rgb), 0.5);
    padding: 1px 8px;
    border-radius: var(--gc-radius-pill);
    min-width: 22px;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
.gc-live-rail__flag { font-size: 14px; margin-right: 6px; }

.gc-live-rail__search input {
    width: 100%;
    background: var(--gc-bg, var(--gc-bg));
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.14));
    border-radius: calc(var(--gc-radius-scale, 1) * 10px);
    padding: 9px 12px;
    color: var(--gc-text, var(--gc-text));
    font-size: 14px;
}
.gc-live-rail__search input:focus {
    outline: none;
    border-color: var(--gc-accent, var(--gc-accent));
    background: rgba(var(--gc-bg-rgb), 0.95);
}
.gc-live-rail__search input::placeholder { color: var(--gc-text-soft, var(--gc-text-soft)); opacity: 0.7; }

.gc-live-rail__clear {
    width: 100%;
    margin-top: 14px;
    padding: 9px 12px;
    background: var(--gc-surface-3, rgba(255, 255, 255, 0.04));
    color: var(--gc-text-soft, var(--gc-text-soft));
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.14));
    border-radius: calc(var(--gc-radius-scale, 1) * 10px);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
}
.gc-live-rail__clear:hover {
    background: var(--gc-accent-soft, rgba(var(--gc-accent-rgb), 0.12));
    border-color: var(--gc-accent, var(--gc-accent));
    color: var(--gc-accent, var(--gc-accent));
}

/* Toolbar --------------------------------------------------------------- */

.gc-live-v2__toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    gap: 12px;
}
.gc-live-v2__sort {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--gc-text-soft, var(--gc-text-soft));
    font-size: 13px;
}
.gc-live-v2__sort select {
    background: var(--gc-bg, var(--gc-bg));
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.14));
    border-radius: calc(var(--gc-radius-scale, 1) * 8px);
    padding: 6px 10px;
    color: var(--gc-text, var(--gc-text));
    font-size: 13px;
}
.gc-live-v2__refresh {
    color: var(--gc-text-soft, var(--gc-text-soft));
    font-size: 12px;
    opacity: 0.75;
}

/* Card grid ------------------------------------------------------------- */

.gc-live-v2__grid {
    display: grid;
    gap: 12px;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}
.gc-live-v2__empty {
    grid-column: 1 / -1;
    padding: 64px 24px;
    text-align: center;
    color: var(--gc-text-soft, var(--gc-text-soft));
    background: var(--gc-surface-3, rgba(255, 255, 255, 0.04));
    border: 1px dashed var(--gc-border, rgba(var(--gc-border-rgb), 0.14));
    border-radius: calc(var(--gc-radius-scale, 1) * 18px);
}

/* Card ------------------------------------------------------------------ */

.gc-live-card {
    display: flex;
    flex-direction: column;
    background: var(--gc-surface, rgba(var(--gc-surface-rgb), 0.96));
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.14));
    border-radius: calc(var(--gc-radius-scale, 1) * 18px);
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}
.gc-live-card:hover {
    transform: translateY(-2px);
    border-color: var(--gc-accent, var(--gc-accent));
    box-shadow: 0 12px 36px rgba(var(--gc-accent-rgb), 0.15), var(--gc-shadow-soft, 0 18px 40px rgba(3, 8, 21, 0.24));
}
.gc-live-card__thumb {
    position: relative;
    aspect-ratio: 16/9;
    background: var(--gc-bg, var(--gc-bg));
    overflow: hidden;
}
.gc-live-card__thumb img { width: 100%; height: 100%; object-fit: cover; }
.gc-live-card__placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(var(--gc-border-rgb), 0.18);
    font-size: 64px;
}
.gc-live-card__corner {
    position: absolute;
    top: 8px;
    display: flex;
    gap: 6px;
}
.gc-live-card__corner--tl { left: 8px; }
.gc-live-card__corner--tr { right: 8px; }
.gc-live-card__badge {
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.5px;
    padding: 3px 8px;
    border-radius: calc(var(--gc-radius-scale, 1) * 6px);
    text-transform: uppercase;
    background: rgba(var(--gc-bg-rgb), 0.75);
    backdrop-filter: blur(4px);
}
.gc-live-card__badge--vr   { background: var(--gc-accent-2, var(--gc-accent-2)); }
.gc-live-card__badge--live { background: #ff3b30; }
.gc-live-card__flag { font-size: 18px; filter: drop-shadow(0 1px 2px rgba(0,0,0,0.6)); }
.gc-live-card__overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 8px 10px;
    background: linear-gradient(180deg, transparent 0%, rgba(var(--gc-bg-rgb), 0.78) 100%);
    display: flex;
    justify-content: space-between;
}
.gc-live-card__viewers {
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    text-shadow: 0 1px 2px rgba(0,0,0,0.6);
}

.gc-live-card__meta {
    padding: 12px 14px 14px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.gc-live-card__title {
    font-size: 14px;
    font-weight: 600;
    color: var(--gc-text, var(--gc-text));
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.gc-live-card__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}
.gc-live-card__tag {
    font-size: 11px;
    color: var(--gc-text-soft, var(--gc-text-soft));
    background: var(--gc-surface-3, rgba(255, 255, 255, 0.04));
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.14));
    padding: 2px 8px;
    border-radius: var(--gc-radius-pill);
    text-transform: capitalize;
}
.gc-live-card__footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.gc-live-card__price {
    font-size: 12px;
    font-weight: 600;
    color: var(--gc-accent, var(--gc-accent));
}
.gc-live-card__price--free { color: var(--gc-success, #3dd68c); }
.gc-live-card__caps { display: flex; gap: 6px; }
.gc-live-card__cap { font-size: 14px; opacity: 0.85; }

.gc-live-v2__loadmore-wrap { margin-top: 24px; text-align: center; }
.gc-live-v2__loadmore {
    background: var(--gc-accent, var(--gc-accent));
    color: var(--gc-bg, var(--gc-bg));
    border: none;
    border-radius: calc(var(--gc-radius-scale, 1) * 12px);
    padding: 11px 28px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.1s ease;
}
.gc-live-v2__loadmore:hover { background: var(--gc-accent-strong, var(--gc-accent-strong)); transform: translateY(-1px); }
.gc-live-v2__loadmore:disabled { opacity: 0.5; cursor: progress; transform: none; }

/* S6 hover-preview visual feedback */
.gc-live-card--hovering {
    border-color: var(--gc-accent, var(--gc-accent));
    box-shadow: 0 0 0 2px var(--gc-accent-soft, rgba(var(--gc-accent-rgb), 0.18)),
                0 16px 40px rgba(var(--gc-accent-rgb), 0.18),
                var(--gc-shadow-soft, 0 18px 40px rgba(3, 8, 21, 0.24));
    transform: translateY(-2px) scale(1.015);
}
.gc-live-card--hovering .gc-live-card__thumb img {
    transform: scale(1.05);
    transition: transform 0.6s ease;
}
.gc-live-card__thumb img {
    transition: transform 0.3s ease;
}


/* Specials section --------------------------------------------------- */
.gc-live-rail__group--specials { padding-top: 4px; }
.gc-live-specials-list {
    display: flex;
    flex-direction: column;
    gap: 4px;
    list-style: none;
    margin: 0;
    padding: 0;
}
.gc-live-specials-item { padding: 0; margin: 0; }
.gc-live-special {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    background: var(--gc-accent-soft, rgba(var(--gc-accent-rgb), 0.12));
    border: 1px solid var(--gc-accent, var(--gc-accent));
    border-radius: calc(var(--gc-radius-scale, 1) * 8px);
    color: var(--gc-accent, var(--gc-accent));
    text-decoration: none;
    font-size: 13px;
    font-weight: 500;
    transition: all 0.15s ease;
}
.gc-live-special:hover {
    background: var(--gc-accent, var(--gc-accent));
    color: var(--gc-bg, var(--gc-bg));
    transform: translateX(2px);
}
.gc-live-special__icon { font-size: 14px; flex-shrink: 0; }
.gc-live-special__label { flex: 1; }


/* S12 — Upcoming card variant */
.gc-live-card--upcoming { opacity: 0.95; }
.gc-live-card--upcoming .gc-live-card__thumb { background: var(--gc-bg-alt, var(--gc-bg-alt)); }
.gc-live-card--upcoming .gc-live-card__placeholder { font-size: 48px; color: var(--gc-accent, var(--gc-accent)); opacity: 0.6; }
.gc-live-card__badge--upcoming {
    background: var(--gc-accent, var(--gc-accent));
    color: var(--gc-bg, var(--gc-bg));
    text-transform: none;
    letter-spacing: 0.2px;
    font-size: 11px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.gc-live-card__notify {
    background: var(--gc-accent-soft, rgba(var(--gc-accent-rgb), 0.12));
    color: var(--gc-accent, var(--gc-accent));
    border: 1px solid var(--gc-accent, var(--gc-accent));
    border-radius: calc(var(--gc-radius-scale, 1) * 8px);
    padding: 5px 10px;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s ease;
}
.gc-live-card__notify:hover {
    background: var(--gc-accent, var(--gc-accent));
    color: var(--gc-bg, var(--gc-bg));
}
.gc-live-card__notify.is-subscribed {
    background: var(--gc-success, #3dd68c);
    border-color: var(--gc-success, #3dd68c);
    color: var(--gc-bg, var(--gc-bg));
}


/* === S5.2 — facet count badges on /clips/ rail === */
.gc-live-rail__count {
    color: var(--gc-text-soft, var(--gc-text-soft));
    font-size: 11px;
    font-weight: 500;
    margin-left: 4px;
    opacity: 0.75;
}
.gc-live-rail__item input:checked + label .gc-live-rail__count,
.gc-live-rail__item label:hover .gc-live-rail__count {
    color: var(--gc-accent, var(--gc-accent));
    opacity: 1;
}


/* === S6.1 — LiveKit hover preview video overlay === */
.gc-live-card__thumb { position: relative; }
.gc-live-card__preview-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    background: #000;
    border-radius: inherit;
    opacity: 0;
    transition: opacity 0.25s ease;
    pointer-events: none;
    z-index: 2;
}
.gc-live-card--previewing .gc-live-card__preview-video {
    opacity: 1;
}
.gc-live-card--previewing .gc-live-card__thumb img {
    visibility: hidden; /* keep layout stable */
}
.gc-live-card--hovering {
    box-shadow: 0 0 0 2px var(--gc-accent, var(--gc-accent));
    transition: box-shadow 0.2s ease;
}


/* === UX POLISH 2026-04-26 — /live/ overview tweaks === */

/* Card title 2-line clamp with ellipsis */
.gc-live-card__title,
.gc-live-card h3 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.3;
    min-height: 2.6em;
}

/* Sort dropdown — custom-styled native select */
.gc-live-v2__sort select,
select[name="sort"] {
    background: var(--gc-surface, rgba(var(--gc-surface-rgb), 0.96)) !important;
    color: var(--gc-text, var(--gc-text)) !important;
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.18)) !important;
    border-radius: calc(var(--gc-radius-scale, 1) * 10px) !important;
    padding: 8px 32px 8px 14px !important;
    font: inherit !important;
    cursor: pointer;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%23ec3a86' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 12px center !important;
    background-size: 10px 6px !important;
}
.gc-live-v2__sort select:focus {
    outline: 2px solid var(--gc-accent, var(--gc-accent)) !important;
    outline-offset: -1px;
}

/* Auto-refresh indicator — fade in/out */
.gc-live-v2__refresh,
[class*="auto-refresh"] {
    transition: opacity 0.3s ease;
}
.gc-live-v2__refresh.is-idle {
    opacity: 0.45;
}

/* Mobile filter rail — collapse into toggle button below 900px */
@media (max-width: 899px) {
    .gc-live-v2__rail-toggle {
        display: flex !important;
        position: sticky;
        top: 0;
        z-index: 60;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        padding: 10px 14px;
        margin: 0 0 12px;
        background: linear-gradient(135deg, var(--gc-accent, var(--gc-accent)), var(--gc-accent-strong));
        color: var(--gc-bg);
        font-weight: 700;
        font-size: 14px;
        border: 0;
        border-radius: var(--gc-radius-pill);
        cursor: pointer;
        width: 100%;
        box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3);
    }
    .gc-live-v2__rail {
        display: none;
    }
    .gc-live-v2.is-rail-open .gc-live-v2__rail {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 100;
        background: var(--gc-bg, var(--gc-bg));
        overflow-y: auto;
        padding: 16px;
    }
    .gc-live-v2.is-rail-open .gc-live-v2__rail-toggle::after {
        content: ' ✕';
    }
}
@media (min-width: 900px) {
    .gc-live-v2__rail-toggle {
        display: none !important;
    }
}


/* === UX FIX — /live/ card title 2-line clamp must override original white-space:nowrap === */
.gc-live-card__title,
.gc-live-card h3 {
    white-space: normal !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    line-height: 1.3 !important;
    min-height: 2.6em !important;
    word-break: break-word;
}


/* === /live/ Browse all categories footer link === */
.gc-live-v2__browse-all {
    margin: 36px auto 24px;
    padding: 24px 24px 28px;
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.18));
    border-radius: calc(var(--gc-radius-scale, 1) * 14px);
    background: linear-gradient(135deg, rgba(var(--gc-accent-rgb), 0.06), rgba(var(--gc-bg-rgb), 0.6));
    text-align: center;
    max-width: 720px;
}
.gc-live-v2__browse-all-lead {
    margin: 0 0 12px;
    color: var(--gc-text-soft, var(--gc-text-soft));
    font-size: 14px;
}
.gc-live-v2__browse-all-link {
    display: inline-block;
    padding: 10px 22px;
    background: linear-gradient(135deg, var(--gc-accent, var(--gc-accent)), var(--gc-accent-strong));
    color: var(--gc-bg) !important;
    font-weight: 700;
    font-size: 14px;
    text-decoration: none !important;
    border-radius: var(--gc-radius-pill);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.gc-live-v2__browse-all-link:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(var(--gc-accent-rgb), 0.35);
}


/* === v4.51.65 USER-FEEDBACK ROUND 2 — comprehensive CSS polish === */

/* --- 1. Profile chip checkboxes — visible checkmark via :has() (jQuery UI doesn't touch the parent DIV) --- */
.gc-profile-chip { position: relative; padding-left: 14px; }
.gc-profile-chip input[type="checkbox"] {
    /* Hide the native checkbox visually but keep it clickable + screen-reader-accessible */
    appearance: none;
    -webkit-appearance: none;
    width: 16px;
    height: 16px;
    margin: 0 8px 0 0;
    border: 1.5px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.32));
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
    background: var(--gc-surface-2, rgba(var(--gc-surface-2-rgb), 0.96));
    cursor: pointer;
    vertical-align: middle;
    transition: all 0.15s ease;
    position: relative;
    flex-shrink: 0;
}
.gc-profile-chip input[type="checkbox"]:checked {
    background: var(--gc-accent, var(--gc-accent));
    border-color: var(--gc-accent, var(--gc-accent));
}
.gc-profile-chip input[type="checkbox"]:checked::after {
    content: "";
    position: absolute;
    left: 3px;
    top: 0;
    width: 5px;
    height: 9px;
    border: solid var(--gc-bg);
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}
.gc-profile-chip:has(input:checked) {
    background: var(--gc-accent-soft, rgba(var(--gc-accent-rgb), 0.12));
    border-color: var(--gc-accent, var(--gc-accent));
    color: var(--gc-text, var(--gc-text));
}

/* --- 2. Profile Country field full-width — no more empty middle column --- */
.gc-profile-section[data-gc-section="origin"] .gc-profile-grid {
    grid-template-columns: minmax(140px, 220px) 1fr 2fr !important;
    align-items: center;
    gap: 14px 18px;
}
.gc-profile-section[data-gc-section="origin"] .gc-profile-field__label {
    align-self: center;
}
/* Languages chips block already lives in grid column 3 (the wide one); keep that */

/* --- 3. Mobile profile — collapse to single column < 760px --- */
@media (max-width: 760px) {
    .gc-profile-grid {
        grid-template-columns: 1fr !important;
        gap: 10px !important;
    }
    .gc-profile-section {
        padding: 16px 12px !important;
    }
    .gc-profile-page__header h1 {
        font-size: 1.4rem !important;
    }
    .gc-profile-savebar {
        flex-wrap: wrap;
        padding: 12px;
    }
    .gc-profile-section[data-gc-section="origin"] .gc-profile-grid {
        grid-template-columns: 1fr !important;
    }
}

/* --- 4. Hide auto-refresh indicator on /live/ --- */
.gc-live-v2__refresh,
[data-gc-refresh-status],
.gc-live-v2__main span:has-text("auto-refresh") {
    display: none !important;
}

/* --- 5. Sticky "Browse all categories" link inside left rail bottom --- */
.gc-live-v2__rail {
    position: relative;
    padding-bottom: 64px !important;  /* leave room for sticky link */
}
.gc-live-v2__rail-allcats {
    position: sticky;
    bottom: 0;
    left: 0;
    right: 0;
    margin: 12px -12px -12px;
    padding: 12px 14px;
    background: linear-gradient(180deg, transparent 0%, var(--gc-bg, var(--gc-bg)) 30%, var(--gc-bg, var(--gc-bg)) 100%);
    text-align: center;
    z-index: 5;
}
.gc-live-v2__rail-allcats a {
    display: inline-block;
    padding: 9px 18px;
    background: linear-gradient(135deg, var(--gc-accent, var(--gc-accent)), var(--gc-accent-strong));
    color: var(--gc-bg) !important;
    font-weight: 700;
    font-size: 13px;
    text-decoration: none !important;
    border-radius: var(--gc-radius-pill);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.gc-live-v2__rail-allcats a:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(var(--gc-accent-rgb), 0.35);
}

/* --- 6. Card top-left badge stacking — LIVE + VR side-by-side, no overlap --- */
.gc-live-card__corner--tl {
    display: flex !important;
    flex-wrap: wrap;
    gap: 6px;
    align-items: flex-start;
    padding: 8px 0 0 8px;
}
.gc-live-card__badge {
    position: static !important;
    margin: 0 !important;
}
.gc-live-card__badge--live {
    background: #ff3b30;
    color: #fff;
    font-weight: 800;
    font-size: 11px;
    padding: 4px 9px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
    letter-spacing: 0.5px;
    box-shadow: 0 0 0 2px rgba(255, 59, 48, 0.18);
}
.gc-live-card__badge--vr {
    background: var(--gc-accent-2);
    color: #fff;
    font-weight: 700;
    font-size: 11px;
    padding: 4px 8px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
}

/* --- 7. New card status badges (ticket / premium / private / exclusive / collab) --- */
.gc-live-card__badge--ticket {
    background: linear-gradient(135deg, #f5b73d, #e89827);
    color: var(--gc-bg);
    font-weight: 700;
    font-size: 10px;
    padding: 4px 8px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
}
.gc-live-card__badge--premium {
    background: linear-gradient(135deg, var(--gc-accent, var(--gc-accent)), var(--gc-accent-strong));
    color: var(--gc-bg);
    font-weight: 700;
    font-size: 10px;
    padding: 4px 8px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
}
.gc-live-card__badge--private {
    background: rgba(var(--gc-accent-2-rgb), 0.92);
    color: #fff;
    font-weight: 700;
    font-size: 10px;
    padding: 4px 8px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
}
.gc-live-card__badge--exclusive {
    background: linear-gradient(135deg, #c084fc, var(--gc-accent-2));
    color: #fff;
    font-weight: 700;
    font-size: 10px;
    padding: 4px 8px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
}
.gc-live-card__badge--collab {
    background: linear-gradient(135deg, var(--gc-accent), #c084fc);
    color: var(--gc-bg);
    font-weight: 700;
    font-size: 10px;
    padding: 4px 8px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
}
.gc-live-card__badge--free {
    background: rgba(61, 214, 140, 0.92);
    color: var(--gc-bg);
    font-weight: 700;
    font-size: 10px;
    padding: 4px 8px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
}

/* --- 8. Empty-state recruit banner --- */
.gc-live-recruit-banner {
    margin: 28px auto;
    max-width: 720px;
    padding: 32px 28px;
    border: 1px solid var(--gc-accent, var(--gc-accent));
    background: linear-gradient(135deg, rgba(var(--gc-accent-rgb), 0.08), rgba(var(--gc-accent-2-rgb), 0.05), rgba(var(--gc-bg-rgb), 0.95));
    border-radius: calc(var(--gc-radius-scale, 1) * 18px);
    text-align: center;
    box-shadow: 0 18px 60px rgba(0, 0, 0, 0.4);
}
.gc-live-recruit-banner__eyebrow {
    display: inline-block;
    padding: 4px 12px;
    background: var(--gc-accent, var(--gc-accent));
    color: var(--gc-bg);
    font-weight: 800;
    font-size: 11px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border-radius: var(--gc-radius-pill);
    margin: 0 0 14px;
}
.gc-live-recruit-banner__title {
    margin: 0 0 12px;
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--gc-text, var(--gc-text));
    line-height: 1.2;
}
.gc-live-recruit-banner__lead {
    margin: 0 0 22px;
    color: var(--gc-text-soft, #cdd9ef);
    font-size: 15px;
    line-height: 1.55;
    max-width: 540px;
    margin-left: auto;
    margin-right: auto;
}
.gc-live-recruit-banner__benefits {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 14px;
    margin: 22px 0 26px;
    text-align: left;
}
.gc-live-recruit-banner__benefit {
    padding: 14px 16px;
    background: rgba(var(--gc-bg-rgb), 0.55);
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.18));
    border-radius: calc(var(--gc-radius-scale, 1) * 12px);
}
.gc-live-recruit-banner__benefit-title {
    margin: 0 0 4px;
    color: var(--gc-accent, var(--gc-accent));
    font-weight: 700;
    font-size: 13px;
}
.gc-live-recruit-banner__benefit-body {
    margin: 0;
    color: var(--gc-text-soft, var(--gc-text-soft));
    font-size: 12px;
    line-height: 1.45;
}
.gc-live-recruit-banner__cta {
    display: inline-block;
    padding: 12px 28px;
    background: linear-gradient(135deg, var(--gc-accent, var(--gc-accent)), var(--gc-accent-strong));
    color: var(--gc-bg) !important;
    font-weight: 800;
    font-size: 15px;
    text-decoration: none !important;
    border-radius: var(--gc-radius-pill);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.gc-live-recruit-banner__cta:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 24px rgba(var(--gc-accent-rgb), 0.4);
}
@media (max-width: 600px) {
    .gc-live-recruit-banner { padding: 22px 18px; }
    .gc-live-recruit-banner__title { font-size: 1.3rem; }
    .gc-live-recruit-banner__benefits { grid-template-columns: 1fr; }
}

/* === v4.51.66 USER-FEEDBACK ROUND 3 — /live polish === */

/* Force "Browse every category" to render at the literal end of the filter
   form (replaces the earlier sticky positioning that floated it mid-rail). */
.gc-live-v2__rail-allcats {
    position: static !important;
    margin: 18px 0 0 !important;
    padding: 0 !important;
    background: transparent !important;
    text-align: center;
}
.gc-live-v2__rail-allcats a {
    display: block;
    width: 100%;
    padding: 11px 16px;
    background: linear-gradient(135deg, var(--gc-accent, var(--gc-accent)), var(--gc-accent-strong));
    color: var(--gc-bg) !important;
    font-weight: 700;
    font-size: 13px;
    text-decoration: none !important;
    border-radius: calc(var(--gc-radius-scale, 1) * 10px);
    transition: transform 0.12s ease, box-shadow 0.18s ease;
}
.gc-live-v2__rail-allcats a:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 22px rgba(var(--gc-accent-rgb), 0.32);
}

/* Persistent hero recruit banner above /live layout */
.gc-live-recruit-banner--hero {
    display: block;
    margin: 0 auto 28px;
    padding: 28px 32px;
    border: 1px solid var(--gc-accent, var(--gc-accent));
    background: linear-gradient(135deg, rgba(var(--gc-accent-rgb), 0.18) 0%, rgba(var(--gc-surface-rgb), 0.96) 60%);
    border-radius: calc(var(--gc-radius-scale, 1) * 18px);
    text-align: left;
    box-shadow: 0 18px 48px rgba(3, 8, 21, 0.42);
    max-width: 1280px;
}
.gc-live-recruit-banner--hero .gc-live-recruit-banner__eyebrow {
    display: inline-block;
    margin-bottom: 8px;
    padding: 4px 10px;
    font-size: 11px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    border-radius: var(--gc-radius-pill);
    background: rgba(var(--gc-accent-rgb), 0.18);
    color: var(--gc-accent, var(--gc-accent));
    font-weight: 700;
}
.gc-live-recruit-banner--hero .gc-live-recruit-banner__title {
    margin: 0 0 8px 0;
    font-size: clamp(20px, 2.4vw, 28px);
    font-weight: 700;
    color: var(--gc-text, var(--gc-text));
    line-height: 1.18;
    letter-spacing: -0.01em;
}
.gc-live-recruit-banner--hero .gc-live-recruit-banner__lead {
    margin: 0 0 16px;
    font-size: 15px;
    color: var(--gc-text-soft, var(--gc-text-soft));
    line-height: 1.55;
    max-width: 760px;
}
.gc-live-recruit-banner--hero .gc-live-recruit-banner__cta {
    display: inline-block;
    padding: 11px 24px;
    background: linear-gradient(135deg, var(--gc-accent, var(--gc-accent)), var(--gc-accent-strong));
    color: var(--gc-bg) !important;
    font-weight: 700;
    font-size: 14px;
    text-decoration: none !important;
    border-radius: var(--gc-radius-pill);
    transition: transform 0.12s ease, box-shadow 0.18s ease;
}
.gc-live-recruit-banner--hero .gc-live-recruit-banner__cta:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 22px rgba(var(--gc-accent-rgb), 0.35);
}
@media (max-width: 760px) {
    .gc-live-recruit-banner--hero { padding: 20px 18px; }
    .gc-live-recruit-banner--hero .gc-live-recruit-banner__title { font-size: 1.15rem; }
}

/* Card collab badge (purple) — already used by .gc-live-card__badge--collab */
.gc-live-card__badge--collab {
    background: linear-gradient(135deg, #a259ff, #6b3fc2) !important;
    color: #fff !important;
    border: 1px solid rgba(255, 255, 255, 0.18);
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}

/* === v4.51.67 USER-FEEDBACK ROUND 4 — /live cards & rail polish === */

/* Rail: wider, cleaner inner spacing, outer padding panel */
.gc-live-v2__layout {
    grid-template-columns: 280px minmax(0, 1fr) !important;
    gap: 24px !important;
}
@media (max-width: 980px) {
    .gc-live-v2__layout { grid-template-columns: 1fr !important; }
}
.gc-live-v2__rail {
    padding: 18px 16px !important;
    border-radius: calc(var(--gc-radius-scale, 1) * 18px) !important;
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.18)) !important;
    background: linear-gradient(180deg, rgba(var(--gc-surface-rgb), 0.98), rgba(var(--gc-bg-rgb), 0.96)) !important;
}
.gc-live-rail__search input {
    padding: 10px 14px !important;
    border-radius: calc(var(--gc-radius-scale, 1) * 10px) !important;
    font-size: 13px !important;
    background: var(--gc-bg, var(--gc-bg)) !important;
    border: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.18)) !important;
    color: var(--gc-text, var(--gc-text)) !important;
}
.gc-live-rail__group {
    padding: 12px 4px !important;
    border-bottom: 1px solid var(--gc-border, rgba(var(--gc-border-rgb), 0.10)) !important;
}
.gc-live-rail__group:last-of-type { border-bottom: none !important; }
.gc-live-rail__group-title {
    margin-bottom: 10px !important;
    padding: 0 4px !important;
    font-size: 11px !important;
}
.gc-live-rail__list { padding: 0 !important; }
.gc-live-rail__item {
    padding: 4px 6px !important;
    border-radius: calc(var(--gc-radius-scale, 1) * 8px);
    transition: background-color 0.12s ease;
}
.gc-live-rail__item:hover {
    background: rgba(var(--gc-accent-rgb), 0.06);
}

/* Browse-every-category back to sticky-at-end (sits at the literal end of the
   form but stays pinned to viewport bottom while the rail scrolls) */
.gc-live-v2__rail-allcats {
    position: sticky !important;
    bottom: 0 !important;
    margin: 18px -16px -18px !important;
    padding: 12px 14px 14px !important;
    background: linear-gradient(180deg, rgba(var(--gc-bg-rgb), 0) 0%, rgba(var(--gc-bg-rgb), 0.95) 35%, rgba(var(--gc-bg-rgb), 0.98) 100%) !important;
    border-top: 1px solid rgba(var(--gc-border-rgb), 0.12) !important;
    border-radius: 0 0 calc(var(--gc-radius-scale, 1) * 18px) calc(var(--gc-radius-scale, 1) * 18px) !important;
    text-align: center;
    z-index: 4;
}
.gc-live-v2__rail-allcats a {
    display: block;
    width: 100%;
}

/* Cards: bigger, badges pinned tight to corners with smaller footprint */
.gc-live-v2__grid {
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)) !important;
    gap: 18px !important;
}
@media (min-width: 1280px) {
    .gc-live-v2__grid {
        grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)) !important;
    }
}
.gc-live-card { border-radius: calc(var(--gc-radius-scale, 1) * 14px) !important; }
.gc-live-card__corner {
    top: 10px !important;
    gap: 4px !important;
    flex-direction: column;
    align-items: flex-start;
}
.gc-live-card__corner--tl { left: 10px !important; align-items: flex-start !important; }
.gc-live-card__corner--tr { right: 10px !important; align-items: flex-end !important; }
.gc-live-card__badge {
    font-size: 9px !important;
    padding: 3px 7px !important;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px) !important;
    letter-spacing: 0.6px;
    backdrop-filter: blur(4px);
    text-shadow: 0 1px 2px rgba(0,0,0,0.4);
    box-shadow: 0 2px 6px rgba(0,0,0,0.18);
}
.gc-live-card__badge--live   { background: linear-gradient(135deg, #ff3a44, #c12128) !important; }
.gc-live-card__badge--free   { background: linear-gradient(135deg, var(--gc-accent-strong), var(--gc-accent)) !important; color: var(--gc-bg) !important; text-shadow: none !important; }
.gc-live-card__badge--collab { background: linear-gradient(135deg, #b277ff, #6b3fc2) !important; }
.gc-live-card__badge--premium { background: linear-gradient(135deg, #f5b73d, #d99e1f) !important; color: var(--gc-bg) !important; text-shadow: none !important; }
.gc-live-card__badge--ticket { background: linear-gradient(135deg, #6b8eff, #3d63d9) !important; }
.gc-live-card__badge--private { background: linear-gradient(135deg, #888, #555) !important; }
.gc-live-card__badge--exclusive { background: linear-gradient(135deg, #ff5cd1, #b53d99) !important; }
.gc-live-card__badge--vr { background: rgba(0,0,0,0.62) !important; border: 1px solid rgba(255,255,255,0.22); }
.gc-live-card__corner--tr .gc-live-card__flag {
    background: rgba(0,0,0,0.46);
    padding: 3px 7px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
    font-size: 13px;
    backdrop-filter: blur(4px);
}
.gc-live-card__overlay {
    position: absolute;
    bottom: 8px;
    left: 8px;
    background: rgba(0,0,0,0.48);
    backdrop-filter: blur(4px);
    padding: 3px 8px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
    font-size: 11px;
    color: #fff;
}
.gc-live-card__viewers { font-weight: 600; letter-spacing: 0.3px; }
.gc-live-card__meta { padding: 14px 16px 16px !important; }
.gc-live-card__title { font-size: 15px !important; font-weight: 600 !important; line-height: 1.35 !important; }
.gc-live-card__tags { gap: 5px !important; margin: 8px 0 0 !important; }
.gc-live-card__tag { font-size: 11px !important; padding: 2px 8px !important; }
.gc-live-card__footer { margin-top: 10px !important; }


/* === v4.51.69 USER FEEDBACK ROUND 5 — Stripchat-style overlay card === */

/* Smaller card grid — 220px min, 260px on ≥1280px viewports */
.gc-live-v2__grid {
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)) !important;
    gap: 14px !important;
}
@media (min-width: 1280px) {
    .gc-live-v2__grid {
        grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)) !important;
        gap: 16px !important;
    }
}

/* No more meta box; entire card IS the thumbnail */
.gc-live-card.gc-live-card--overlay {
    border-radius: calc(var(--gc-radius-scale, 1) * 12px) !important;
    overflow: hidden;
    aspect-ratio: 4/3;
    background: var(--gc-bg);
    position: relative;
    transition: transform 0.15s ease, box-shadow 0.18s ease;
}
.gc-live-card.gc-live-card--overlay:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 32px rgba(var(--gc-accent-rgb), 0.18);
}
.gc-live-card.gc-live-card--overlay .gc-live-card__thumb {
    aspect-ratio: auto !important;
    height: 100%;
    width: 100%;
    border-radius: 0 !important;
}
.gc-live-card.gc-live-card--overlay .gc-live-card__thumb img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    display: block;
}

/* Top-left badge ribbon — horizontal strip, tight */
.gc-live-card.gc-live-card--overlay .gc-live-card__corner--tl {
    top: 8px !important;
    left: 8px !important;
    flex-direction: row !important;
    gap: 4px !important;
    align-items: flex-start !important;
    z-index: 3;
}
.gc-live-card.gc-live-card--overlay .gc-live-card__badge {
    font-size: 9px !important;
    padding: 2px 6px !important;
    border-radius: calc(var(--gc-radius-scale, 1) * 3px) !important;
    line-height: 1.4 !important;
    letter-spacing: 0.4px;
    font-weight: 800;
    text-shadow: 0 1px 2px rgba(0,0,0,0.4);
    box-shadow: 0 2px 5px rgba(0,0,0,0.20);
    backdrop-filter: blur(3px);
}
.gc-live-card.gc-live-card--overlay .gc-live-card__badge--free,
.gc-live-card.gc-live-card--overlay .gc-live-card__badge--premium {
    color: var(--gc-bg) !important;
    text-shadow: none !important;
}

/* Top-right info chips */
.gc-live-card.gc-live-card--overlay .gc-live-card__corner--tr {
    top: 8px !important;
    right: 8px !important;
    flex-direction: row !important;
    gap: 4px !important;
    align-items: flex-start !important;
    z-index: 3;
}
.gc-live-card__icon-chip {
    background: rgba(0, 0, 0, 0.55);
    color: #fff;
    font-size: 9px;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: calc(var(--gc-radius-scale, 1) * 3px);
    line-height: 1.4;
    backdrop-filter: blur(3px);
    border: 1px solid rgba(255, 255, 255, 0.12);
}
.gc-live-card__icon-chip--flag {
    padding: 1px 4px;
    font-size: 11px;
    border: none;
}

/* Bottom-left viewer pill */
.gc-live-card__viewers-pill {
    position: absolute;
    bottom: 56px;
    left: 8px;
    background: rgba(0, 0, 0, 0.55);
    backdrop-filter: blur(3px);
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    padding: 3px 8px;
    border-radius: var(--gc-radius-pill);
    z-index: 3;
}
.gc-live-card__viewers-pill > span {
    color: #ff5151;
    margin-right: 4px;
}

/* Bottom gradient meta overlay — title + tags + price */
.gc-live-card__overlay-meta {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 28px 12px 10px;
    color: #fff;
    background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.55) 50%, rgba(0,0,0,0.92) 100%);
    z-index: 2;
    pointer-events: none;
}
.gc-live-card__overlay-title {
    font-size: 13px;
    font-weight: 700;
    line-height: 1.3;
    margin: 0 0 4px;
    color: #fff;
    text-shadow: 0 1px 4px rgba(0,0,0,0.6);
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    white-space: nowrap;
}
.gc-live-card__overlay-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}
.gc-live-card__overlay-tags {
    display: flex;
    gap: 4px;
    flex-wrap: nowrap;
    overflow: hidden;
    flex: 1;
    min-width: 0;
}
.gc-live-card__overlay-tag {
    font-size: 10px;
    color: rgba(255,255,255,0.86);
    background: rgba(255,255,255,0.10);
    padding: 1px 6px;
    border-radius: calc(var(--gc-radius-scale, 1) * 3px);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    backdrop-filter: blur(2px);
}
.gc-live-card__overlay-price {
    font-size: 11px;
    font-weight: 700;
    background: rgba(245, 183, 61, 0.92);
    color: var(--gc-bg);
    padding: 2px 7px;
    border-radius: calc(var(--gc-radius-scale, 1) * 4px);
    flex-shrink: 0;
}
.gc-live-card__overlay-price--free {
    background: rgba(var(--gc-accent-rgb), 0.92);
    color: var(--gc-bg);
}

/* Hide legacy meta block that we no longer render */
.gc-live-card.gc-live-card--overlay .gc-live-card__meta { display: none !important; }

/* === v4.51.74 — sticky rail-foot (Clear filters + Browse every category) === */

.gc-live-v2__rail-foot {
    position: sticky !important;
    bottom: 0 !important;
    margin: 18px -16px -18px !important;
    padding: 10px 14px 14px !important;
    background: linear-gradient(180deg, rgba(var(--gc-bg-rgb), 0) 0%, rgba(var(--gc-bg-rgb), 0.96) 28%, rgba(var(--gc-bg-rgb), 0.99) 100%);
    border-top: 1px solid rgba(var(--gc-border-rgb), 0.14);
    border-radius: 0 0 calc(var(--gc-radius-scale, 1) * 18px) calc(var(--gc-radius-scale, 1) * 18px);
    z-index: 4;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.gc-live-v2__rail-foot .gc-live-rail__clear {
    width: 100%;
    margin-top: 0 !important;
}
.gc-live-v2__rail-foot .gc-live-v2__rail-allcats {
    position: static !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
}

/* === v4.51.75 — Stripchat-style dense filter rail === */

.gc-live-rail__list {
    gap: 0 !important;
    margin-top: 4px !important;
}
.gc-live-rail__group {
    padding: 8px 4px !important;
}
.gc-live-rail__group-title {
    margin-bottom: 6px !important;
    font-size: 10px !important;
    letter-spacing: 0.7px !important;
    opacity: 0.85;
}
.gc-live-rail__item {
    padding: 0 !important;
    border-radius: calc(var(--gc-radius-scale, 1) * 6px);
    line-height: 1;
}
.gc-live-rail__item label {
    padding: 3px 6px !important;
    font-size: 12.5px !important;
    line-height: 1.3 !important;
    border-radius: calc(var(--gc-radius-scale, 1) * 6px);
}
.gc-live-rail__item input {
    margin: 0 6px 0 4px !important;
    width: 13px;
    height: 13px;
    flex-shrink: 0;
}
.gc-live-rail__count {
    font-size: 10.5px !important;
    padding: 0 6px !important;
    min-width: 18px;
    line-height: 16px;
}
.gc-live-rail__search {
    margin-bottom: 6px;
}
.gc-live-rail__search input {
    padding: 7px 10px !important;
    font-size: 12px !important;
}

/* === v4.51.80 — hero recruit banner with merged benefit grid === */

.gc-live-recruit-banner--hero {
    display: grid !important;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
    gap: 28px;
    align-items: center;
    padding: 28px 32px !important;
}
.gc-live-recruit-banner--hero .gc-live-recruit-banner__head {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
}
.gc-live-recruit-banner--hero .gc-live-recruit-banner__benefits {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}
.gc-live-recruit-banner--hero .gc-live-recruit-banner__benefit {
    background: rgba(var(--gc-surface-rgb), 0.55);
    border: 1px solid rgba(var(--gc-border-rgb), 0.12);
    border-radius: calc(var(--gc-radius-scale, 1) * 10px);
    padding: 10px 14px;
}
.gc-live-recruit-banner--hero .gc-live-recruit-banner__benefit-title {
    margin: 0 0 4px;
    font-size: 13px;
    font-weight: 700;
    color: var(--gc-accent, var(--gc-accent));
}
.gc-live-recruit-banner--hero .gc-live-recruit-banner__benefit-body {
    margin: 0;
    font-size: 12px;
    color: var(--gc-text-soft, var(--gc-text-soft));
    line-height: 1.45;
}
@media (max-width: 920px) {
    .gc-live-recruit-banner--hero {
        grid-template-columns: 1fr;
        gap: 18px;
        padding: 22px 18px !important;
    }
    .gc-live-recruit-banner--hero .gc-live-recruit-banner__benefits { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 540px) {
    .gc-live-recruit-banner--hero .gc-live-recruit-banner__benefits { grid-template-columns: 1fr; }
}


/* gc_subroom_v1_overview_css BEGIN -- subscribers-only card lock visuals. */
.gc-live-card.is-locked .gc-live-card__thumb img { filter: blur(14px) brightness(0.55) saturate(0.7); transform: scale(1.06); transition: filter .25s ease; }
.gc-live-card.is-locked:hover .gc-live-card__thumb img { filter: blur(10px) brightness(0.7) saturate(0.85); }
.gc-live-card__badge--subonly { background: linear-gradient(180deg, #ffd87a 0%, #d4a14b 100%); color: #1a1208; font-weight: 800; letter-spacing: 0.02em; box-shadow: 0 6px 14px -4px rgba(255,216,122,0.5); }
.gc-live-card.is-locked::after { content: "\1F512  SUBSCRIBERS ONLY"; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); padding: 8px 16px; border-radius: var(--gc-radius-pill); background: linear-gradient(180deg, rgba(255,216,122,0.95), rgba(212,161,75,0.95)); color: #1a1208; font-weight: 800; letter-spacing: 0.06em; font-size: 0.85rem; text-shadow: 0 1px 0 rgba(255,255,255,0.18); box-shadow: 0 12px 28px -8px rgba(0,0,0,0.6), inset 0 1px 0 rgba(255,255,255,0.32); pointer-events: none; z-index: 4; }
/* gc_subroom_v1_overview_css END */

/* gc_live_specials_v2 -- trending badge on auto chips */
.gc-live-special__badge { flex-shrink: 0; margin-left: 4px; font-size: 12px; line-height: 1; }


/* ==========================================================================
   gc_upcoming_card_v2 (2026-08-21)
   The upcoming card used to be a clock emoji plus a plan title. It now leads
   with the creator (avatar + name), carries a real image with a three-step
   fallback, prints the date/time, and is a link.

   Contrast note (Law 6): every text colour below resolves against a measured
   backdrop -- .gc-live-card__whenbar and .gc-live-card__creator-name sit on an
   opaque scrim rather than directly on artwork, because text over an arbitrary
   creator photo has no computable contrast at all.
   ========================================================================== */

/* --- v3 card shell: quieter, rounder, less boxed in ---------------------- */
.gc-live-card--upcoming {
    position: relative;
    opacity: 1;
    border-radius: 16px;
    overflow: hidden;
    border: 1px solid rgba(var(--gc-border-rgb), 0.10);
    background: var(--gc-surface-2, #10192b);
    box-shadow: 0 2px 10px rgba(3, 8, 21, 0.20);
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}
.gc-live-card--upcoming:hover {
    transform: translateY(-3px);
    border-color: rgba(var(--gc-accent-rgb), 0.35);
    box-shadow: 0 16px 34px rgba(3, 8, 21, 0.34);
}
/* The link owns the focus ring for the whole card, so the card must not clip it away. */
.gc-live-card--upcoming:focus-within { overflow: visible; }

/* Stretched link: covers the card, sits UNDER the notify button. */
.gc-live-card__link {
    position: absolute;
    inset: 0;
    z-index: 1;
    border-radius: inherit;
    text-decoration: none;
}
.gc-live-card__link:focus-visible {
    outline: 2px solid var(--gc-accent, #14b8a6);
    outline-offset: 2px;
}

/* The card's own content sits ABOVE the stretched link and is transparent to the
   pointer. Both halves are needed and neither is cosmetic:
     z-index  -- without it the link paints over the text; the Law 6 occlusion gate
                 measured exactly that on the first walk and reported the SOON badge
                 and every creator name as "100% covered, blocker a.gc-live-card__link".
     PE:none  -- with only z-index the text would swallow the click and the card
                 would stop being clickable everywhere except its padding, which is
                 the whole point of a stretched link.
   Together: the user clicks anywhere and lands on the creator; the gate (which
   restores pointer-events before hit-testing, since DSC-BADGE-1) sees the text as
   its own target instead of a false positive. The notify button is the deliberate
   exception -- it keeps its own pointer events and must stay above the link.
   🔴 SPLIT IN TWO RULES ON PURPOSE. The first version of this block listed every
   element together and set `position: relative` on all of them -- which SILENTLY
   BROKE the absolutely-positioned ones. `.gc-live-card__corner` (top:8px) and
   `.gc-live-card__whenbar` (bottom:0) both need `position:absolute`; overriding it
   with `relative` dropped them back into normal flow, so the SOON badge and the whole
   date/time bar vanished from the card. The Law 6 contrast gate DID report it -- a
   flat, single-colour crop at both coordinates -- and it was nearly written off as a
   harness artefact through three rounds of probe rewrites. Looking at the rendered
   card settled it in one glance. Positioning is per element; only z-index and
   pointer-events are shared. */

/* (a) elements that are in normal flow and need a stacking position */
.gc-live-card--upcoming .gc-live-card__meta,
.gc-live-card--upcoming .gc-live-card__creator,
.gc-live-card--upcoming .gc-live-card__creator-name,
.gc-live-card--upcoming .gc-live-card__avatar,
.gc-live-card--upcoming .gc-live-card__title,
.gc-live-card--upcoming .gc-live-card__footer {
    position: relative;
    z-index: 2;
    pointer-events: none;
}

/* 🔴 ABZEICHEN WIRKLICH IN DIE ECKE.
   Dominik: "der countdown ist nicht im eck sondern mit einem abstand davon" --
   gemessen 18px statt der erwarteten 10px. Ursache sind ZWEI Regeln, die sich
   addieren: `.gc-live-card__corner { top:10px !important }` plus eine aeltere
   Stapel-Regel `.gc-live-card__corner--tl { padding: 8px 0 0 8px }`. Die Polsterung
   stammt aus der LIVE-Karte, wo LIVE- und VR-Abzeichen nebeneinander stehen; die
   Upcoming-Karte hat nur eines und braucht sie nicht. Nur hier zurueckgenommen,
   damit die Live-Karten unveraendert bleiben. */
.gc-live-card--upcoming .gc-live-card__corner--tl,
.gc-live-card--upcoming .gc-live-card__corner--tr {
    padding: 0 !important;
    top: 10px !important;
}
.gc-live-card--upcoming .gc-live-card__corner--tl { left: 10px !important; }
.gc-live-card--upcoming .gc-live-card__corner--tr { right: 10px !important; }

/* (b) elements that are ALREADY absolutely positioned -- position is left alone */
.gc-live-card--upcoming .gc-live-card__corner,
.gc-live-card--upcoming .gc-live-card__badge--upcoming,
.gc-live-card--upcoming .gc-live-card__flag,
.gc-live-card--upcoming .gc-live-card__monogram,
.gc-live-card--upcoming .gc-live-card__pricechip,
.gc-live-card--upcoming .gc-live-card__whenbar {
    z-index: 2;
    pointer-events: none;
}
.gc-live-card--upcoming .gc-live-card__notify {
    position: relative;
    z-index: 3;
    pointer-events: auto;
}

/* --- media ------------------------------------------------------------- */
.gc-live-card--upcoming .gc-live-card__thumb {
    background: var(--gc-bg-alt, #0d1526);
}
.gc-live-card__shot { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Avatar fallback: blurred copy fills the 16:9 frame, sharp copy centred and
   uncropped on top. A portrait avatar under object-fit:cover would otherwise be
   cropped to a chin. */
.gc-live-card__blurfill {
    position: absolute;
    inset: -8%;
    background-size: cover;
    background-position: center;
    filter: blur(18px) saturate(1.1) brightness(0.55);
    transform: scale(1.06);
}
.gc-live-card__avatarfill {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    height: 78%;
    width: auto;
    max-width: 62%;
    object-fit: contain;
    border-radius: calc(var(--gc-radius-scale, 1) * 10px);
    box-shadow: 0 8px 26px rgba(3, 8, 21, 0.45);
}

/* Monogram placeholder: the creator's initials, not a generic clock. */
.gc-live-card__monogram {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 44px;
    font-weight: 700;
    letter-spacing: 2px;
    color: #fff;
    /* 🔴 DECKENDE Grundflaeche, sonst scheint im Hell-Theme die weisse Karte durch
       die halbdurchsichtigen Verlaufsstufen und weisse Initialen stehen auf Weiss.
       Gemessen auf Staging: lewdden hell 3.81:1, scatportal hell 2.86:1 -- im
       Dunkeln bestanden beide mit ~19.8, weil dort zufaellig etwas Dunkles dahinter
       lag. Mit deckender Grundflaeche ist das Ergebnis themeunabhaengig, der Akzent
       toent nur noch. Nachgerechnet gegen #14111c: guyscat 8.7, lewdden 12.1,
       scatportal 10.5. */
    background-color: #14111c;
    background-image: linear-gradient(135deg,
        rgba(var(--gc-accent-rgb), 0.34) 0%,
        rgba(var(--gc-accent-2-rgb, var(--gc-accent-rgb)), 0.18) 55%,
        rgba(6, 5, 12, 0.86) 100%);
    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.55);
}

/* 🔴 ABZEICHEN: feste dunkle Tinte statt var(--gc-bg).
   Der Hintergrund des Abzeichens ist immer der Markenakzent -- der ist
   themeunabhaengig. var(--gc-bg) ist es nicht: im Hell-Theme wird daraus ein fast
   weisser Ton, und dann steht helle Schrift auf mittelhellem Akzent. Gemessen:
   lewdden hell 3.47:1, scatportal hell 2.69:1 (dunkel bestanden beide).
   Gegen #0d0a12 gerechnet: guyscat 10.25, lewdden 5.18, scatportal 6.86 -- alle
   drei ueber 4.5, in BEIDEN Themes, weil nichts davon vom Theme abhaengt. */
.gc-live-card--upcoming .gc-live-card__badge--upcoming {
    color: #0d0a12;
    /* 🔴 `!important` hier ist kein Reflex, sondern Notwendigkeit: dieselbe Datei
       enthaelt `.gc-live-card__badge { font-size: 9px !important }`, und gegen ein
       !important gewinnt man nur mit einem !important bei mindestens gleicher
       Spezifitaet (0,2,0 gegen 0,1,0). Gemessen wurde 9px -- auf einem 393px-Geraet
       ist das unter der Lesbarkeitsschwelle und unter der 11px-Grenze, die dieser
       Walk fuer jede Kartenschrift setzt. Die Zeile gilt NUR fuer die
       Upcoming-Karte; die Live-Karten behalten ihre 9px-Abzeichen. */
    font-size: 11px !important;
    line-height: 1.15 !important;
}

/* Rueckfall-Monogramm: schlaeft, bis ein Bild scheitert. */
.gc-live-card__monogram--fallback { display: none; }
.gc-live-card__thumb.gc-thumb-img-failed .gc-live-card__monogram--fallback { display: flex; }
.gc-live-card__thumb.gc-thumb-img-failed .gc-live-card__shot,
.gc-live-card__thumb.gc-thumb-img-failed .gc-live-card__avatarfill,
.gc-live-card__thumb.gc-thumb-img-failed .gc-live-card__blurfill { display: none; }

/* --- when bar ---------------------------------------------------------- */
.gc-live-card__whenbar {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    flex-wrap: nowrap;      /* eine Zeile. Umbruch hier sah gequetscht aus. */
    gap: 7px;
    padding: 24px 10px 9px;
    /* 🔴 Der Verlauf muss dort, wo die SCHRIFT steht, praktisch deckend sein.
       Vorher endete er bei 0.88 und begann die Deckung erst bei 62% -- die Zeile
       lag damit auf einem halbdurchsichtigen Schleier ueber dem Creator-Foto, und
       bei einem hellen Foto verschwand sie. Gemessen auf 393px: dasselbe "60 min"
       kam auf 1.09:1, waehrend die drei Nachbarkarten 10.9-13.5:1 lieferten -- der
       Unterschied war die Helligkeit des Bildes dahinter, nicht das CSS. Zwei
       unabhaengige Aufnahmen bestaetigten den Wert, es war also kein Aufnahmefehler.
       Text ueber einem beliebigen Creator-Foto hat keinen berechenbaren Kontrast;
       die einzige belastbare Antwort ist eine deckende Flaeche darunter. Der obere
       Teil bleibt weich, die Schrift beginnt erst hinter dem Deckungspunkt (padding-top). */
    background: linear-gradient(180deg,
        rgba(3, 8, 21, 0) 0%,
        rgba(3, 8, 21, 0.55) 26%,
        rgba(3, 8, 21, 0.95) 52%,
        rgba(3, 8, 21, 0.97) 100%);
    color: #fff;
    font-size: 12px;
    pointer-events: none;
}
.gc-live-card__whenday  { font-weight: 600; white-space: nowrap; flex: 0 0 auto; }
.gc-live-card__whentime {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    font-size: 13px;
    white-space: nowrap;
    flex: 0 0 auto;
}
.gc-live-card__whendur {
    font-size: 11px;
    white-space: nowrap;
    flex: 0 0 auto;
    /* #cfd8e6 on the scrim. MEASURED, not estimated -- three independent methods on
       staging 2026-08-21: CSS blend 12.47:1, own element-screenshot histogram
       13.57-13.83:1 across all four cards, walk contrast gate 13.1-13.8:1. Well over
       the 4.5:1 body gate at the gradient's lightest point. */
    color: #cfd8e6;
}

/* The price, as a chip ON THE IMAGE. It used to be a bare green word in the footer
   next to a bordered button -- two unlike things in one row, and it read as an
   afterthought. `margin-left:auto` pushes it to the bar's right edge, so it needs
   no absolute offset and cannot collide with the date when the bar wraps.
   It carries its OWN opaque plate rather than relying on the bar's gradient: this
   chip sits at the bar's lightest end, and text over an arbitrary creator photo has
   no computable contrast at all. */
.gc-live-card__pricechip {
    margin-left: auto;
    flex: 0 0 auto;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.2px;
    line-height: 1;
    padding: 5px 9px;
    border-radius: 999px;
    background: rgba(3, 8, 21, 0.82);
    border: 1px solid rgba(255, 255, 255, 0.14);
    color: #eef2f8;
    white-space: nowrap;
}
.gc-live-card__pricechip--free {
    background: rgba(12, 58, 41, 0.90);
    border-color: rgba(61, 214, 140, 0.45);
    color: #7ef0b4;
}

/* --- meta block --------------------------------------------------------- */
/* 🔴 `align-items: center` on .gc-live-card__meta is what made the full-width
   button not full width: the meta is a flex COLUMN, and centre alignment makes
   every child shrink to its content. Measured: card 265px, meta 263px, footer
   115px, button 115px -- `width: 100%` was being honoured, it just resolved
   against a footer that had already collapsed. `width:100%` on a flex item says
   nothing about the item's own sizing along the cross axis; the parent decides.
   Stretch here, and align the content left so the meta block lines up with the
   date bar above it instead of drifting to the middle. */
.gc-live-card--upcoming .gc-live-card__meta {
    align-items: stretch;
    gap: 7px;
    padding: 13px 14px 14px;
}
.gc-live-card--upcoming .gc-live-card__title,
.gc-live-card--upcoming .gc-live-card__creator { text-align: left; }

/* --- creator line ------------------------------------------------------ */
.gc-live-card__creator {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}
.gc-live-card__avatar {
    width: 26px;
    height: 26px;
    flex: 0 0 26px;
    border-radius: 50%;
    object-fit: cover;
    border: 1px solid var(--gc-border, rgba(255, 255, 255, 0.16));
    background: var(--gc-bg-alt, #0d1526);
}
.gc-live-card__avatar--mono {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.5px;
    color: #fff;
    /* gleiche Begruendung wie beim Monogramm: deckende Grundflaeche, damit die
       Initialen nicht vom Kartenhintergrund des jeweiligen Themes abhaengen */
    background-color: #14111c;
    background-image: linear-gradient(135deg, rgba(var(--gc-accent-rgb), 0.42), rgba(6, 5, 12, 0.9));
}
.gc-live-card__creator-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--gc-text, #eef2f8);
    line-height: 1.25;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}
.gc-live-card--upcoming .gc-live-card__title {
    font-size: 12.5px;
    font-weight: 500;
    color: var(--gc-text-soft, #9fb0c8);
}

/* v3 footer: the price has moved onto the image, so this row belongs to the button
   alone and the button takes the full width. That also retires the overflow this
   footer had in v2, where the enlarged button plus "Free" no longer fitted one
   265px row and the button was PAINTED OUTSIDE the card's right edge -- docScrollW
   never moved, because the card clips. Exactly the ueberstand_v2 case: the
   document-level overflow number is blind to content cut off inside a box. It was
   found by looking at the rendered card, not in a number.

   Tap target: Law 6 wants >= 24px, 44px preferred on mobile. Full width plus a
   44px min-height on phones clears both with room to spare. */
.gc-live-card--upcoming .gc-live-card__footer {
    display: block;
    margin-top: 2px;
}
.gc-live-card--upcoming .gc-live-card__notify {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    width: 100%;
    min-height: 38px;
    padding: 10px 14px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.1px;
    border-radius: 11px;
    white-space: nowrap;
    background: rgba(var(--gc-accent-rgb), 0.13);
    border: 1px solid rgba(var(--gc-accent-rgb), 0.55);
    /* 🔴 Die BESCHRIFTUNG folgt dem Theme, die Umrandung der Marke.
       Vorher stand der Akzent als Schriftfarbe auf einer 13%-Akzenttoenung -- das
       faellt zusammen, sobald der Akzent mittelhell ist. Gemessen auf Staging:
       lewdden dunkel 4.25:1, lewdden hell 3.08:1, scatportal hell 2.48:1.
       var(--gc-text) ist per Definition der lesbare Ton des jeweiligen Themes
       (hell fast schwarz, dunkel fast weiss) und liegt in allen sechs
       Marke-x-Theme-Kombinationen bei ~13-14:1. Der Markenakzent bleibt sichtbar --
       als Rahmen, als Toenung und gefuellt beim Ueberfahren. */
    color: var(--gc-text, #eef2f8);
    transition: background 0.16s ease, color 0.16s ease, border-color 0.16s ease;
}
.gc-live-card--upcoming .gc-live-card__notify:hover,
.gc-live-card--upcoming .gc-live-card__notify:focus-visible {
    background: var(--gc-accent, #14b8a6);
    border-color: var(--gc-accent, #14b8a6);
    color: #0d0a12;   /* dieselbe feste Tinte wie das Abzeichen, aus demselben Grund */
}
.gc-live-card__notify-ico { font-size: 13px; line-height: 1; }

@media (max-width: 782px) {
    .gc-live-card--upcoming .gc-live-card__notify { min-height: 44px; }
    .gc-live-card__monogram { font-size: 38px; }
    .gc-live-card__creator-name { font-size: 15px; }
    .gc-live-card__whenbar { font-size: 12.5px; }
}

/* Hell-Theme: 10% Rahmen auf Weiss ist praktisch unsichtbar -- das Theme selbst
   benutzt fuer seine .gc-card 28%. Gleiche Staerke hier, damit die Karte im Raster
   eine Kante hat. Die dunklen Flaechen (Datumsleiste, Preis-Chip, Monogramm) bleiben
   ABSICHTLICH in beiden Themes dunkel: sie liegen auf dem Creator-Bild, und Text
   ueber einem beliebigen Foto hat keinen berechenbaren Kontrast. */
html[data-theme="light"] .gc-live-card--upcoming {
    border-color: rgba(var(--gc-border-rgb), 0.30);
    box-shadow: var(--gc-shadow-soft, 0 10px 26px rgba(20, 16, 28, 0.12));
}
html[data-theme="light"] .gc-live-card--upcoming:hover {
    border-color: rgba(var(--gc-accent-rgb), 0.55);
}

.gc-live-card--upcoming:hover .gc-live-card__avatarfill { transform: translate(-50%, -50%) scale(1.03); }
.gc-live-card__avatarfill { transition: transform 0.18s ease; }


/* gc_lovense_brand_chip_v1 (2026-08-22) -- Lovense wordmark chip on live cards.
   The chip bar .gc-live-card__corner--tr is absolutely positioned at right:8px with
   no width bound, so a 7-character chip grows LEFTWARD and can escape the card on a
   narrow mobile card. Wrap instead of escape; the bar stays right-aligned. */
.gc-live-card.gc-live-card--overlay .gc-live-card__corner--tr {
    max-width: calc(100% - 16px);
    flex-wrap: wrap;
    justify-content: flex-end;
}
.gc-live-card__icon-chip--lovense {
    white-space: nowrap;
    letter-spacing: 0.02em;
    /* gc_lovense_chip_contrast_v1 (2026-08-22) -- gemessen im Walk: weiss auf
       rgba(0,0,0,0.55) ueber einem HELLEN Thumbnail ergab 2.99:1 (Gate 4.5).
       Der Untergrund ist ein Videobild, keine feste Farbe, also muss die Plakette
       selbst deckend genug sein. 0.86 ueber Weiss = ~15:1, ueber Schwarz ~19:1. */
    background: rgba(0, 0, 0, 0.86);
    border-color: rgba(255, 255, 255, 0.22);
}
