:root {
    --wpgp-event-accent:      #e8542f;
    --wpgp-event-bg:          #ffffff;
    --wpgp-event-fg:          #1f2933;
    --wpgp-event-muted:       #6b7280;
    --wpgp-event-track:       #e5e7eb;
    --wpgp-event-radius:      var(--gg-radius, 14px);
    --wpgp-event-radius-sm:   var(--gg-radius-sm, 10px);
    --wpgp-event-radius-pill: var(--gg-radius-pill, 999px);
    --wpgp-event-shadow-sm:   var(--gg-shadow-sm, 0 1px 4px rgba(0,0,0,.08));
    --wpgp-event-shadow:      var(--gg-shadow, 0 4px 16px rgba(0,0,0,.10));
    --wpgp-event-shadow-lg:   var(--gg-shadow-lg, 0 8px 32px rgba(0,0,0,.16));
    --wpgp-event-spring:      var(--gg-spring, cubic-bezier(0.34,1.56,0.64,1));
    --wpgp-event-ease:        var(--gg-ease, cubic-bezier(0.22,1,0.36,1));
    --wpgp-event-dur:         var(--gg-dur, .3s);
    --wpgp-event-dur-fast:    var(--gg-dur-fast, .18s);
}

/* ── Banner ─────────────────────────────────────────────────────────────── */
.wpgpe-banner {
    background: var(--wpgp-event-accent);
    color: #fff;
    border-radius: var(--wpgp-event-radius);
    padding: 12px 20px;
    margin: 16px 0;
    box-shadow: var(--wpgp-event-shadow);
}
.wpgpe-banner--floating {
    position: fixed;
    left: 50%;
    bottom: 20px;
    transform: translateX(-50%);
    z-index: 9999;
    margin: 0;
    max-width: 92%;
    box-shadow: var(--wpgp-event-shadow-lg);
    animation: wpgpe-banner-in var(--wpgp-event-dur) var(--wpgp-event-spring);
}
@keyframes wpgpe-banner-in {
    from { opacity: 0; transform: translateX(-50%) translateY(16px) scale(.95); }
    to   { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
}
.wpgpe-banner__body {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    justify-content: center;
}
.wpgpe-banner__title { font-weight: 700; }
.wpgpe-banner__badge {
    background: rgba(255,255,255,.22);
    border-radius: var(--wpgp-event-radius-pill);
    padding: 3px 14px;
    font-weight: 700;
    font-size: .85em;
    letter-spacing: .02em;
}
.wpgpe-banner__countdown {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    font-family: ui-monospace, "Cascadia Code", "Fira Mono", monospace;
    letter-spacing: .04em;
}

/* ── Streak widget ──────────────────────────────────────────────────────── */
.wpgpe-streak {
    background: var(--wpgp-event-bg);
    border: 1px solid var(--wpgp-event-track);
    border-radius: var(--wpgp-event-radius);
    padding: 16px 20px;
    box-shadow: var(--wpgp-event-shadow-sm);
    color: var(--wpgp-event-fg);
}
.wpgpe-streak__top {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
}
.wpgpe-streak__count {
    font-weight: 800;
    font-size: 1.5em;
    line-height: 1;
    color: var(--wpgp-event-accent);
}
.wpgpe-streak__body {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.wpgpe-streak__meta {
    color: var(--wpgp-event-muted);
    font-size: .85em;
}
.wpgpe-streak__next {
    color: var(--wpgp-event-muted);
    font-size: .85em;
}
.wpgpe-streak__bonus {
    color: var(--wpgp-event-accent);
    font-size: .85em;
    font-weight: 600;
}
.wpgpe-streak__freeze {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-top: 6px;
    padding: 4px 12px;
    border-radius: var(--wpgp-event-radius-pill);
    background: #e0f2fe;
    color: #0369a1;
    font-size: .8em;
    font-weight: 600;
    width: fit-content;
}
.wpgpe-streak__freeze svg {
    flex-shrink: 0;
    stroke: currentColor;
    fill: none;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* ── Challenge ──────────────────────────────────────────────────────────── */
.wpgpe-challenge {
    background: var(--wpgp-event-bg);
    border: 1px solid var(--wpgp-event-track);
    border-radius: var(--wpgp-event-radius);
    padding: 16px 20px;
    box-shadow: var(--wpgp-event-shadow-sm);
    color: var(--wpgp-event-fg);
}
.wpgpe-challenge__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
    font-weight: 600;
}
.wpgpe-challenge__bar {
    background: var(--wpgp-event-track);
    border-radius: var(--wpgp-event-radius-pill);
    height: 10px;
    overflow: hidden;
}
.wpgpe-challenge__fill {
    background: linear-gradient(90deg, var(--wpgp-event-accent) 0%, #f97316 100%);
    height: 100%;
    border-radius: var(--wpgp-event-radius-pill);
    transition: width .5s var(--wpgp-event-ease);
    position: relative;
    overflow: hidden;
}
/* animated sheen sweep */
.wpgpe-challenge__fill::after {
    content: '';
    position: absolute;
    top: 0; left: -60%;
    width: 50%;
    height: 100%;
    background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.45) 50%, transparent 100%);
    animation: wpgpe-sheen 2.4s ease-in-out infinite;
}
@keyframes wpgpe-sheen {
    0%   { left: -60%; }
    100% { left: 140%; }
}
.wpgpe-challenge__badge {
    display: inline-block;
    margin-top: 10px;
    padding: 4px 14px;
    background: #dcfce7;
    color: #15803d;
    border-radius: var(--wpgp-event-radius-pill);
    font-weight: 700;
    font-size: .875em;
    /* pop animation applied via .gg-pop utility from child theme */
    animation: wpgpe-badge-pop .4s var(--wpgp-event-spring) both;
}
@keyframes wpgpe-badge-pop {
    0%   { opacity: 0; transform: scale(.6); }
    100% { opacity: 1; transform: scale(1); }
}
.wpgpe-challenge--done {
    border-color: #86efac;
}

/* ── Leaderboard ────────────────────────────────────────────────────────── */
.wpgpe-leaderboard {
    background: var(--wpgp-event-bg);
    border: 1px solid var(--wpgp-event-track);
    border-radius: var(--wpgp-event-radius);
    padding: 16px 20px;
    box-shadow: var(--wpgp-event-shadow-sm);
    color: var(--wpgp-event-fg);
}
.wpgpe-leaderboard__list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.wpgpe-leaderboard__row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 10px;
    border-radius: var(--wpgp-event-radius-sm);
    transition: background var(--wpgp-event-dur-fast) ease;
}
.wpgpe-leaderboard__row:hover {
    background: var(--wpgp-event-track);
}
.wpgpe-leaderboard__rank {
    width: 30px;
    text-align: center;
    font-weight: 800;
    font-size: 1em;
    color: var(--wpgp-event-muted);
    flex-shrink: 0;
}
/* top-3 gold / silver / bronze */
.wpgpe-leaderboard__row--top1 .wpgpe-leaderboard__rank { color: #f4a900; }
.wpgpe-leaderboard__row--top2 .wpgpe-leaderboard__rank { color: #94a3b8; }
.wpgpe-leaderboard__row--top3 .wpgpe-leaderboard__rank { color: #cd7c3a; }
.wpgpe-leaderboard__name  { flex: 1; }
.wpgpe-leaderboard__score { font-weight: 700; font-variant-numeric: tabular-nums; }
.wpgpe-leaderboard__empty { color: var(--wpgp-event-muted); text-align: center; margin: 16px 0 0; }

/* ── Nudge toast ────────────────────────────────────────────────────────── */
.wpgpe-nudge {
    position: fixed;
    right: 20px;
    bottom: 20px;
    z-index: 9999;
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--wpgp-event-fg);
    color: #fff;
    border-radius: var(--wpgp-event-radius);
    padding: 14px 48px 14px 18px;
    box-shadow: var(--wpgp-event-shadow-lg);
    max-width: 340px;
    animation: wpgpe-nudge-in var(--wpgp-event-dur) var(--wpgp-event-spring);
}
@keyframes wpgpe-nudge-in {
    from { opacity: 0; transform: translateX(32px) scale(.95); }
    to   { opacity: 1; transform: translateX(0) scale(1); }
}
.wpgpe-nudge__flame {
    flex-shrink: 0;
    display: flex;
    align-items: center;
}
.wpgpe-nudge__text {
    font-size: .9em;
    line-height: 1.4;
}
.wpgpe-nudge__close {
    position: absolute;
    top: 50%;
    right: 10px;
    transform: translateY(-50%);
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,.12);
    border: 0;
    border-radius: 50%;
    color: #fff;
    font-size: 16px;
    cursor: pointer;
    line-height: 1;
    transition: background var(--wpgp-event-dur-fast) ease;
}
.wpgpe-nudge__close:hover {
    background: rgba(255,255,255,.28);
}

/* ── Reduced motion ─────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    .wpgpe-banner--floating  { animation: none; }
    .wpgpe-nudge             { animation: none; }
    .wpgpe-challenge__fill   { transition: none; }
    .wpgpe-challenge__fill::after { animation: none; }
    .wpgpe-challenge__badge  { animation: none; }
}

/* ── Event calendar ─────────────────────────────────────────────────────── */
.wpgpe-calendar {
    background: var(--wpgp-event-bg);
    border: 1px solid var(--wpgp-event-track);
    border-radius: var(--wpgp-event-radius);
    padding: 16px;
    box-shadow: var(--wpgp-event-shadow-sm);
    color: var(--wpgp-event-fg);
}
.wpgpe-calendar__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}
.wpgpe-calendar__month {
    font-weight: 800;
    text-transform: capitalize;
}
.wpgpe-calendar__nav {
    text-decoration: none;
    font-weight: 700;
    padding: 2px 10px;
    border-radius: var(--wpgp-event-radius-pill);
    color: var(--wpgp-event-accent);
}
.wpgpe-calendar__nav:hover { background: var(--wpgp-event-track); }
.wpgpe-calendar__grid {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}
.wpgpe-calendar__grid th {
    font-size: .75em;
    font-weight: 700;
    color: var(--wpgp-event-muted);
    text-align: center;
    padding: 4px 0;
}
.wpgpe-calendar__day {
    vertical-align: top;
    border: 1px solid var(--wpgp-event-track);
    padding: 4px;
    height: 64px;
}
.wpgpe-calendar__day.is-outside { opacity: .35; }
.wpgpe-calendar__day.is-today .wpgpe-calendar__num {
    background: var(--wpgp-event-accent);
    color: #fff;
}
.wpgpe-calendar__num {
    display: inline-block;
    min-width: 22px;
    text-align: center;
    border-radius: var(--wpgp-event-radius-pill);
    font-size: .8em;
    font-weight: 700;
    padding: 1px 4px;
}
.wpgpe-calendar__event {
    display: block;
    font-size: .7em;
    font-weight: 600;
    border-radius: 4px;
    padding: 1px 5px;
    margin-top: 2px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    background: var(--wpgp-event-track);
    color: var(--wpgp-event-fg);
}
.wpgpe-calendar__event--active {
    background: var(--wpgp-event-accent);
    color: #fff;
}
.wpgpe-calendar__event--scheduled {
    background: #e0f2fe;
    color: #0369a1;
}
.wpgpe-calendar__legend {
    display: flex;
    gap: 14px;
    margin-top: 10px;
    font-size: .78em;
    color: var(--wpgp-event-muted);
}
.wpgpe-calendar__legend-item {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}
.wpgpe-calendar__dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--wpgp-event-track);
}
.wpgpe-calendar__dot--active    { background: var(--wpgp-event-accent); }
.wpgpe-calendar__dot--scheduled { background: #7dd3fc; }

/* ── Profile event progress + optional quests ─────────────────────────── */
.wpgpe-profile-events,
.wpgpe-profile-events__group {
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.wpgpe-profile-events__group + .wpgpe-profile-events__group {
    border-top: 1px solid var(--wpgp-event-track);
    padding-top: 18px;
}
.wpgpe-profile-events__heading,
.wpgpe-profile-events__intro {
    margin: 0;
}
.wpgpe-profile-events__heading {
    color: var(--wpgp-event-fg);
    font-size: 1em;
    font-weight: 800;
}
.wpgpe-profile-events__intro,
.wpgpe-profile-event__meta,
.wpgpe-profile-event__foot {
    color: var(--wpgp-event-muted);
    font-size: .84em;
}
.wpgpe-profile-events__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
    gap: 12px;
}
.wpgpe-profile-event {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 15px;
    border: 1px solid var(--wpgp-event-track);
    border-radius: var(--wpgp-event-radius-sm);
    background: var(--wpgp-event-bg);
    color: var(--wpgp-event-fg);
}
.wpgpe-profile-event.is-complete { border-color: #86efac; }
.wpgpe-profile-event__head,
.wpgpe-profile-event__numbers,
.wpgpe-profile-event__foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}
.wpgpe-profile-event__type {
    display: block;
    color: var(--wpgp-event-accent);
    font-size: .72em;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.wpgpe-profile-event__title {
    margin: 2px 0 0;
    color: var(--wpgp-event-fg);
    font-size: 1em;
}
.wpgpe-profile-event__reward,
.wpgpe-profile-event__done {
    flex-shrink: 0;
    border-radius: var(--wpgp-event-radius-pill);
    padding: 4px 10px;
    background: #fff3cd;
    color: #8a5700;
    font-size: .78em;
    font-weight: 800;
}
.wpgpe-profile-event__done {
    align-self: flex-start;
    background: #dcfce7;
    color: #15803d;
}
.wpgpe-profile-event__meta { margin: 0; }
.wpgpe-profile-event__numbers {
    color: var(--wpgp-event-muted);
    font-size: .8em;
    font-weight: 700;
}
.wpgpe-profile-event__bar {
    height: 9px;
    overflow: hidden;
    border-radius: var(--wpgp-event-radius-pill);
    background: var(--wpgp-event-track);
}
.wpgpe-profile-event__bar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--wpgp-event-accent), #f97316);
}
.wpgpe-profile-event__checklist {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    margin: 0;
    padding: 0;
    list-style: none;
    color: var(--wpgp-event-muted);
    font-size: .78em;
}
.wpgpe-profile-event__checklist li.is-done {
    color: #15803d;
    font-weight: 700;
}
.wpgpe-profile-event__foot { margin-top: auto; }
.wpgpe-profile-event__action {
    margin-left: auto;
    border: 0;
    border-radius: var(--wpgp-event-radius-pill);
    padding: 7px 14px;
    background: var(--wpgp-event-accent);
    color: #fff;
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}
.wpgpe-profile-event__action:hover { filter: brightness(.92); }
.wpgpe-profile-event__action:disabled { cursor: wait; opacity: .55; }
