: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);
}

.wpgpe-reward { display: inline-flex; align-items: center; gap: 5px; max-width: 100%; overflow-wrap: anywhere; vertical-align: middle; }
.wpgpe-reward .wpgpe-reward__icon { width: 20px; height: 20px; flex-shrink: 0; object-fit: contain; }
.wpgpe-reward .gg-coin { color: #f4a900; }
.wpgpe-reward .gg-gem--vip { color: #0e9f6e; }
.wpgpe-reward .gg-shine-ring { fill: none; stroke: none; }

/* ── 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; }
}

/* Shared calendar: fits both a profile card and an Elementor column. */
.wpgpe-calendar {
    background: var(--wpgp-event-bg);
    border: 1px solid var(--wpgp-event-track);
    border-radius: var(--wpgp-event-radius);
    padding: clamp(12px, 3vw, 26px);
    color: var(--wpgp-event-fg);
    font-size: 15px;
    line-height: 1.5;
    container-type: inline-size;
}
.wpgpe-calendar * { box-sizing: border-box; }
.wpgpe-calendar [hidden] { display: none !important; }
.wpgpe-calendar__layout {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
    gap: 24px;
    align-items: start;
}
@container (min-width: 760px) {
    .wpgpe-calendar__layout { grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr); }
}
.wpgpe-calendar__month-view, .wpgpe-calendar__agenda { min-width: 0; }
.wpgpe-calendar__header, .wpgpe-calendar__intro, .wpgpe-calendar__upcoming-heading,
.wpgpe-calendar-event__meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}
.wpgpe-calendar__header { margin-bottom: 12px; }
.wpgpe-calendar__month { font-size: 1.2em; text-transform: capitalize; }
.wpgpe-calendar .wpgpe-calendar__nav {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    background: #fff4ed;
    border-radius: 12px;
    color: #a93618;
    text-decoration: none;
    font-size: 20px;
}
.wpgpe-calendar__intro { font-size: .82em; margin-bottom: 14px; }
.wpgpe-calendar__intro a { color: #a93618; font-weight: 700; padding: 8px; }
.wpgpe-calendar .wpgpe-calendar__grid {
    width: 100%;
}
.wpgpe-calendar__weekdays, .wpgpe-calendar__week {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    column-gap: 3px;
}
.wpgpe-calendar__week { margin-bottom: 3px; row-gap: 3px; }
.wpgpe-calendar__weekdays > span {
    padding: 6px 0;
    text-align: center;
    color: var(--wpgp-event-muted);
    font-size: .78em;
}
.wpgpe-calendar .wpgpe-calendar__day-link {
    display: block;
    grid-row: 1 / -1;
    min-width: 0;
    padding: 5px;
    border: 1px solid transparent;
    border-radius: 10px;
    background: #f7f7f6;
    text-decoration: none;
    color: var(--wpgp-event-fg);
}
.wpgpe-calendar .wpgpe-calendar__day-link.is-outside { background: #fff; color: #71717a; }
.wpgpe-calendar .wpgpe-calendar__day-link:hover { background: #fff4ed; border-color: #edb7a5; }
.wpgpe-calendar .wpgpe-calendar__day-link.is-selected { background: #fff0e7; border-color: var(--wpgp-event-accent); box-shadow: inset 0 0 0 1px var(--wpgp-event-accent); }
.wpgpe-calendar__num { display: inline-grid; place-items: center; min-width: 26px; height: 26px; border-radius: 50%; font-weight: 700; font-size: .85em; }
.wpgpe-calendar .is-today .wpgpe-calendar__num { background: #ae391c; color: #fff; }
.wpgpe-calendar .wpgpe-calendar__bar {
    z-index: 1;
    min-width: 0;
    margin: 0 3px;
    padding: 4px 8px;
    border-radius: 10px;
    background: var(--wpgpe-color, #6366f1);
    color: var(--wpgpe-text-color, #fff);
    font-size: .75em;
    font-weight: 700;
    line-height: 20px;
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.wpgpe-calendar .wpgpe-calendar__bar:hover { box-shadow: inset 0 0 0 2px currentColor; }
.wpgpe-calendar__bar.continues-before { border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: 0; }
.wpgpe-calendar__bar.continues-after { border-top-right-radius: 0; border-bottom-right-radius: 0; margin-right: 0; }
.wpgpe-calendar .wpgpe-calendar__timezone { font-size: .75em; color: var(--wpgp-event-muted); margin: 12px 0 0; }
.wpgpe-calendar__agenda { border-radius: 14px; padding: 20px; background: #faf7f2; }
.wpgpe-calendar__eyebrow { text-transform: uppercase; letter-spacing: .1em; font-size: .7em; color: #a93618; font-weight: 800; }
.wpgpe-calendar .wpgpe-calendar__day-heading, .wpgpe-calendar__upcoming-heading h3 { color: var(--wpgp-event-fg); margin: 5px 0 16px; font-size: 1.12em; line-height: 1.4; }
.wpgpe-calendar__day-events { display: grid; gap: 10px; }
.wpgpe-calendar .wpgpe-calendar__empty { margin: 0; padding: 18px 0; font-size: .9em; color: var(--wpgp-event-muted); }
.wpgpe-calendar__upcoming { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--wpgp-event-track); }
.wpgpe-calendar__upcoming-heading { margin-bottom: 12px; }
.wpgpe-calendar__upcoming-heading h3 { margin: 0; }
.wpgpe-calendar__upcoming-heading > span { font-size: .8em; color: var(--wpgp-event-muted); }
.wpgpe-calendar__upcoming-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); align-items: start; gap: 12px; }
.wpgpe-calendar-event { border: 1px solid var(--wpgp-event-track); border-radius: 12px; background: #fff; overflow: hidden; }
.wpgpe-calendar-event > summary, .wpgpe-calendar-event__header {
    display: block;
    padding: 16px;
    background: var(--wpgpe-color, #6366f1);
    color: var(--wpgpe-text-color, #fff);
}
.wpgpe-calendar-event > summary { cursor: pointer; list-style: none; }
.wpgpe-calendar-event > summary::-webkit-details-marker { display: none; }
.wpgpe-calendar-event__meta { font-size: .72em; font-weight: 700; }
.wpgpe-calendar__badge { padding: 3px 9px; border-radius: 99px; background: #eceef0; color: #52525b; }
.wpgpe-calendar__event--active { background: #e5f4e9; color: #246338; }
.wpgpe-calendar__event--scheduled { background: #e4f0fd; color: #245f8d; }
.wpgpe-calendar-event__title { display: block; margin: 10px 0 5px; font-size: 1.05em; color: inherit; overflow-wrap: anywhere; }
.wpgpe-calendar-event__dates { display: block; font-size: .75em; }
.wpgpe-calendar-event__summary { display: block; margin-top: 10px; font-size: .85em; overflow-wrap: anywhere; }
.wpgpe-calendar-event__toggle { display: flex; justify-content: space-between; margin-top: 12px; font-size: .78em; font-weight: 700; }
.wpgpe-calendar-event[open] .wpgpe-calendar-event__toggle span { transform: rotate(180deg); }
.wpgpe-calendar-event__body { border-top: 1px solid var(--wpgp-event-track); padding: 16px; font-size: .85em; overflow-wrap: anywhere; }
.wpgpe-calendar .wpgpe-calendar-event__body p { color: var(--wpgp-event-fg); margin: 0 0 12px; }
.wpgpe-calendar-event__body ul { margin: 12px 0; padding-left: 20px; }
.wpgpe-calendar-event__body img { max-width: 100%; height: auto; }
.wpgpe-calendar-event__schedule { margin: 0; }
.wpgpe-calendar-event__schedule > div { margin-bottom: 8px; }
.wpgpe-calendar-event__schedule dt { color: var(--wpgp-event-muted); font-size: .85em; }
.wpgpe-calendar-event__schedule dd { margin: 0; }
.wpgpe-calendar__detail .wpgpe-calendar-event__toggle { display: none; }
.wpgpe-calendar__detail .wpgpe-calendar-event__body { padding: clamp(16px, 3vw, 32px); font-size: 1em; }
.wpgpe-calendar .wpgpe-calendar__back {
    margin-bottom: 16px;
    padding: 10px 14px;
    border: 1px solid var(--wpgp-event-track);
    border-radius: 10px;
    background: #fff4ed;
    color: #a93618;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}
.wpgpe-calendar a:focus-visible, .wpgpe-calendar summary:focus-visible, .wpgpe-calendar button:focus-visible { outline: 3px solid #245f8d; outline-offset: 2px; }
@container (max-width: 370px) {
    .wpgpe-calendar .wpgpe-calendar__day-link { padding: 3px; }
    .wpgpe-calendar__agenda { padding: 12px; }
    .wpgpe-calendar .wpgpe-calendar__bar { font-size: .65em; padding-inline: 4px; }
}

/* ── 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__head { flex-wrap: wrap; }
.wpgpe-profile-event__head > div { min-width: 0; overflow-wrap: anywhere; }
.wpgpe-profile-event__reward { max-width: 100%; box-sizing: border-box; }
.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; }
