@layer pages{body[data-route=games][data-scope=challenges]{--ch-accent:var(--accent-route,var(--accent-red));--ch-accent-soft:color-mix(in oklch, var(--ch-accent) 16%, var(--bg-primary));--ch-accent-dim:color-mix(in oklch, var(--ch-accent) 28%, var(--bg-deep));--ch-success-soft:color-mix(in oklch, var(--color-success) 14%, var(--bg-primary));--ch-warning-soft:color-mix(in oklch, var(--color-warning) 14%, var(--bg-primary));--ch-error-soft:color-mix(in oklch, var(--color-error) 14%, var(--bg-primary));--ch-info-soft:color-mix(in oklch, var(--color-info) 14%, var(--bg-primary));--ch-glass:var(--glass-bg);--ch-glass-border:var(--glass-border);--ch-radius:var(--radius-card);--ch-pad:var(--card-pad-md);--ch-gap:var(--content-gap-md);--ch-section-y:var(--section-y-md);--ch-text:var(--text-primary);--ch-text-2:var(--text-secondary);--ch-text-3:var(--text-muted);--ch-shadow-sm:0 2px 6px color-mix(in oklch, var(--bg-deep) 70%, transparent);--ch-shadow-md:0 8px 24px color-mix(in oklch, var(--bg-deep) 60%, transparent);--ch-tint-glow:0 0 18px -4px color-mix(in oklch, var(--ch-accent) 35%, transparent)}body[data-route=games][data-scope=challenges] .main-content{padding-top:var(--nav-height);padding-bottom:var(--spacing-3xl);background:radial-gradient(1000px 520px at 12% 8%, color-mix(in oklch, var(--ch-accent) 10%, transparent), transparent 55%), radial-gradient(800px 460px at 88% 14%, color-mix(in oklch, var(--accent-purple) 10%, transparent), transparent 55%), linear-gradient(180deg, var(--bg-deep) 0%, var(--bg-primary) 40%, var(--bg-secondary) 100%);position:relative;overflow-x:clip}body[data-route=games][data-scope=challenges] .container{width:min(100% - 2rem, var(--container-max));padding-inline:max(1rem, env(safe-area-inset-left)) max(1rem, env(safe-area-inset-right));margin-inline:auto}body[data-route=games][data-scope=challenges] .main-content>section{margin-top:var(--ch-section-y)}body[data-route=games][data-scope=challenges] .main-content>section:first-child{margin-top:0}body[data-route=games][data-scope=challenges] .section-reveal{opacity:0;transition:opacity var(--dur-slow) var(--ease-emphasized), transform var(--dur-slow) var(--ease-emphasized);transform:translateY(18px)}body[data-route=games][data-scope=challenges] .section-reveal.revealed,body[data-route=games][data-scope=challenges] .section-reveal.card-visible{opacity:1;transform:translateY(0)}body[data-route=games][data-scope=challenges] .challenges-hero{text-align:center;isolation:isolate;border-bottom:1px solid color-mix(in oklch, var(--ch-accent) 18%, transparent);place-items:center;min-height:clamp(260px,42vh,420px);padding:clamp(2rem,5vw,4rem) 1rem;display:grid;position:relative;overflow:hidden}body[data-route=games][data-scope=challenges] .challenges-hero-title{font-family:var(--font-display);font-size:var(--text-5xl);line-height:var(--leading-heading);letter-spacing:var(--tracking-tight);color:var(--ch-text);text-shadow:0 2px 18px color-mix(in oklch, var(--ch-accent) 35%, transparent);margin:0}body[data-route=games][data-scope=challenges] .challenges-hero-subtitle{font-family:var(--font-body);font-size:var(--text-xl);color:var(--ch-text-2);max-width:var(--measure-readable);margin:.75rem 0 0}body[data-route=games][data-scope=challenges] .challenges-reset-timer{border:1px solid var(--ch-glass-border);border-radius:var(--radius-full);background:var(--ch-glass);-webkit-backdrop-filter:blur(var(--glass-blur));color:var(--ch-text-2);font-size:var(--text-sm);font-variant-numeric:tabular-nums;box-shadow:var(--glass-inner-highlight);align-items:center;gap:.5rem;margin-top:1.25rem;padding:.55rem 1rem;display:inline-flex}body[data-route=games][data-scope=challenges] .challenges-reset-timer .timer-value{color:var(--ch-accent);font-weight:var(--font-weight-bold)}body[data-route=games][data-scope=challenges] .challenges-embers{pointer-events:none;z-index:var(--z-bg);background:radial-gradient(circle at 20% 80%, color-mix(in oklch, var(--ch-accent) 22%, transparent) 0 2px, transparent 3px), radial-gradient(circle at 70% 20%, color-mix(in oklch, var(--accent-orange) 18%, transparent) 0 2px, transparent 3px);opacity:.45;background-size:220px 220px,280px 280px;animation:18s linear infinite ch-ember-drift;position:absolute;inset:0}body[data-route=games][data-scope=challenges] .ghost-silhouette{width:clamp(32px,6vw,64px);height:clamp(32px,6vw,64px);color:color-mix(in oklch, var(--ch-text-2) 55%, transparent);opacity:.35;filter:blur(.5px);pointer-events:none;z-index:var(--z-bg);animation:ch-ghost-drift var(--gdur,24s) ease-in-out var(--gdelay,0s) infinite alternate;place-items:center;font-size:clamp(1.5rem,3vw,2.5rem);display:inline-grid;position:absolute}body[data-route=games][data-scope=challenges] .ghost-silhouette .sgai-icon{width:1em;height:1em;color:inherit}body[data-route=games][data-scope=challenges] .rank-card{gap:var(--ch-gap);padding:var(--ch-pad);border:1px solid var(--ch-glass-border);border-radius:var(--ch-radius);background:var(--ch-glass);-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--ch-shadow-md), var(--glass-inner-highlight);grid-template-columns:auto 1fr;align-items:center;display:grid}body[data-route=games][data-scope=challenges] .rank-icon-wrap{border-radius:var(--radius-full);background:radial-gradient(circle at 30% 30%, color-mix(in oklch, var(--ch-accent) 30%, transparent), transparent 60%), color-mix(in oklch, var(--bg-deep) 80%, transparent);border:1px solid color-mix(in oklch, var(--ch-accent) 24%, var(--ch-glass-border));width:clamp(64px,10vw,96px);height:clamp(64px,10vw,96px);box-shadow:var(--ch-tint-glow);place-items:center;display:grid}body[data-route=games][data-scope=challenges] .rank-icon{font-size:clamp(1.75rem,4vw,2.75rem);line-height:1}body[data-route=games][data-scope=challenges] .rank-info{flex-direction:column;gap:.6rem;min-width:0;display:flex}body[data-route=games][data-scope=challenges] .rank-info-top{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}body[data-route=games][data-scope=challenges] .rank-title{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--ch-text);line-height:1.1}body[data-route=games][data-scope=challenges] .rank-tier-badge{border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-weight-black);letter-spacing:.08em;text-transform:uppercase;border:1px solid #0000;align-items:center;padding:.25rem .55rem;display:inline-flex}body[data-route=games][data-scope=challenges] .rank-tier-badge.tier-common{background:color-mix(in oklch, var(--text-muted) 22%, var(--bg-primary));color:var(--text-secondary);border-color:color-mix(in oklch, var(--text-muted) 35%, transparent)}body[data-route=games][data-scope=challenges] .rank-tier-badge.tier-rare{background:color-mix(in oklch, var(--accent-cyan) 18%, var(--bg-primary));color:color-mix(in oklch, var(--accent-cyan) 80%, white);border-color:color-mix(in oklch, var(--accent-cyan) 35%, transparent)}body[data-route=games][data-scope=challenges] .rank-tier-badge.tier-epic{background:color-mix(in oklch, var(--accent-purple) 18%, var(--bg-primary));color:color-mix(in oklch, var(--accent-purple) 80%, white);border-color:color-mix(in oklch, var(--accent-purple) 35%, transparent)}body[data-route=games][data-scope=challenges] .rank-tier-badge.tier-mythic{background:color-mix(in oklch, var(--accent-red) 22%, var(--bg-primary));color:color-mix(in oklch, var(--accent-red) 85%, white);border-color:color-mix(in oklch, var(--accent-red) 40%, transparent)}body[data-route=games][data-scope=challenges] .rank-tier-badge.tier-legendary{background:color-mix(in oklch, var(--accent-orange) 24%, var(--bg-primary));color:color-mix(in oklch, var(--accent-orange) 90%, white);border-color:color-mix(in oklch, var(--accent-orange) 45%, transparent)}body[data-route=games][data-scope=challenges] .equipped-title{font-size:var(--text-sm);color:var(--ch-text-2);font-style:italic}body[data-route=games][data-scope=challenges] .equipped-badge{border-radius:var(--radius-full);background:color-mix(in oklch, var(--color-success) 15%, var(--bg-primary));color:var(--color-success);font-size:var(--text-xs);font-weight:var(--font-weight-bold);align-items:center;gap:.25rem;padding:.2rem .5rem;display:inline-flex}body[data-route=games][data-scope=challenges] .rank-cp-text{font-size:var(--text-base);color:var(--ch-text-2);flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}body[data-route=games][data-scope=challenges] .rank-cp-text .cp-amount{color:var(--ch-accent);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums}body[data-route=games][data-scope=challenges] .shop-trigger-btn{min-height:var(--touch-min);border:1px solid color-mix(in oklch, var(--ch-accent) 30%, var(--ch-glass-border));border-radius:var(--radius-md);background:color-mix(in oklch, var(--ch-accent) 10%, var(--bg-primary));color:var(--ch-text);font:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:background var(--transition-color), border-color var(--transition-color), transform var(--transition-transform);align-items:center;gap:.35rem;padding:.35rem .75rem;display:inline-flex}body[data-route=games][data-scope=challenges] .shop-trigger-btn:hover{background:color-mix(in oklch, var(--ch-accent) 18%, var(--bg-primary));border-color:color-mix(in oklch, var(--ch-accent) 50%, var(--ch-glass-border));transform:translateY(-1px)}body[data-route=games][data-scope=challenges] .shop-trigger-btn:active{transform:translateY(0)}body[data-route=games][data-scope=challenges] .shop-trigger-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}body[data-route=games][data-scope=challenges] .kbd-hint{border:1px solid var(--ch-glass-border);border-radius:var(--radius-sm);background:color-mix(in oklch, var(--bg-deep) 80%, transparent);min-width:1.4rem;color:var(--ch-text-3);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--font-weight-bold);text-transform:uppercase;box-shadow:inset 0 -1px 0 color-mix(in oklch, var(--text-primary) 8%, transparent);place-items:center;padding:.1rem .35rem;display:inline-grid}body[data-route=games][data-scope=challenges] .rank-progress-track{border-radius:var(--radius-full);background:color-mix(in oklch, var(--bg-deep) 80%, transparent);border:1px solid color-mix(in oklch, var(--text-primary) 5%, transparent);width:100%;height:10px;position:relative;overflow:hidden}body[data-route=games][data-scope=challenges] .rank-progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--ch-accent-dim), var(--ch-accent));height:100%;box-shadow:var(--ch-tint-glow);transition:width var(--dur-slow) var(--ease-emphasized)}body[data-route=games][data-scope=challenges] .milestone-marker{background:var(--ch-text-3);border:1px solid color-mix(in oklch, var(--bg-deep) 70%, transparent);border-radius:50%;width:6px;height:6px;position:absolute;top:50%;transform:translate(-50%,-50%)}body[data-route=games][data-scope=challenges] .milestone-marker.achieved{background:var(--color-success);box-shadow:0 0 6px color-mix(in oklch, var(--color-success) 45%, transparent)}body[data-route=games][data-scope=challenges] .rank-next-text{font-size:var(--text-sm);color:var(--ch-text-3)}body[data-route=games][data-scope=challenges] .rank-next-text .next-rank-name{color:var(--ch-text-2);font-weight:var(--font-weight-semibold)}body[data-route=games][data-scope=challenges] .rank-timeline-details{border:1px solid var(--ch-glass-border);border-radius:var(--ch-radius);background:var(--ch-glass);-webkit-backdrop-filter:blur(var(--glass-blur));overflow:hidden}body[data-route=games][data-scope=challenges] .rank-timeline-summary{color:var(--ch-text);font-weight:var(--font-weight-semibold);font-size:var(--text-base);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;padding:.9rem 1.1rem;list-style:none;display:flex}body[data-route=games][data-scope=challenges] .rank-timeline-summary::-webkit-details-marker{display:none}body[data-route=games][data-scope=challenges] .rank-timeline-summary:before{content:"▸";color:var(--ch-accent);transition:transform var(--dur-fast) var(--ease-standard);display:inline-block}body[data-route=games][data-scope=challenges] .rank-timeline-details[open] .rank-timeline-summary:before{transform:rotate(90deg)}body[data-route=games][data-scope=challenges] .rank-timeline-container{padding:.5rem 1.1rem 1.25rem}body[data-route=games][data-scope=challenges] .timeline-track{align-items:flex-start;gap:.75rem;padding-block:.5rem;display:flex}body[data-route=games][data-scope=challenges] .timeline-node{text-align:center;opacity:.55;min-width:76px;max-width:120px;transition:opacity var(--transition-opacity), transform var(--transition-transform);flex-direction:column;align-items:center;gap:.4rem;display:flex}body[data-route=games][data-scope=challenges] .timeline-node.achieved,body[data-route=games][data-scope=challenges] .timeline-node.current{opacity:1}body[data-route=games][data-scope=challenges] .timeline-node.current{transform:translateY(-3px)}body[data-route=games][data-scope=challenges] .timeline-node.current .timeline-icon{border-color:var(--ch-accent);box-shadow:var(--ch-tint-glow)}body[data-route=games][data-scope=challenges] .timeline-icon{border:1px solid var(--ch-glass-border);background:color-mix(in oklch, var(--bg-deep) 80%, transparent);width:44px;height:44px;color:var(--ch-text-2);font-size:var(--text-lg);border-radius:50%;place-items:center;display:grid}body[data-route=games][data-scope=challenges] .timeline-node.achieved .timeline-icon{background:color-mix(in oklch, var(--color-success) 20%, var(--bg-primary));color:var(--color-success);border-color:color-mix(in oklch, var(--color-success) 40%, transparent)}body[data-route=games][data-scope=challenges] .timeline-label{font-size:var(--text-xs);color:var(--ch-text-2);font-weight:var(--font-weight-semibold);line-height:1.2}body[data-route=games][data-scope=challenges] .timeline-cp{font-size:var(--text-xs);color:var(--ch-text-3);font-variant-numeric:tabular-nums}body[data-route=games][data-scope=challenges] .timeline-date{font-size:var(--text-xs);color:var(--ch-text-3)}body[data-route=games][data-scope=challenges] .buffs-bar{border:1px solid var(--ch-glass-border);border-radius:var(--ch-radius);background:var(--ch-glass);-webkit-backdrop-filter:blur(var(--glass-blur));flex-wrap:wrap;align-items:center;gap:.75rem;padding:.85rem 1rem;display:flex}body[data-route=games][data-scope=challenges] .buffs-title{font-size:var(--text-sm);color:var(--ch-text-2);font-weight:var(--font-weight-semibold)}body[data-route=games][data-scope=challenges] .buffs-list{flex-wrap:wrap;gap:.5rem;display:flex}body[data-route=games][data-scope=challenges] .buff-chip{min-height:var(--touch-min);border:1px solid color-mix(in oklch, var(--accent-purple) 30%, var(--ch-glass-border));border-radius:var(--radius-full);background:color-mix(in oklch, var(--accent-purple) 10%, var(--bg-primary));color:var(--ch-text);font-size:var(--text-sm);font-weight:var(--font-weight-medium);align-items:center;gap:.35rem;padding:.35rem .7rem;display:inline-flex}body[data-route=games][data-scope=challenges] .buff-icon{color:var(--accent-purple);font-size:1em}body[data-route=games][data-scope=challenges] .buff-value{color:var(--accent-purple);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums}body[data-route=games][data-scope=challenges] .streak-bar{border:1px solid var(--ch-glass-border);border-radius:var(--ch-radius);background:var(--ch-glass);-webkit-backdrop-filter:blur(var(--glass-blur));align-items:center;gap:.85rem;padding:.85rem 1rem;display:flex}body[data-route=games][data-scope=challenges] .streak-fire{background:color-mix(in oklch, var(--accent-orange) 16%, var(--bg-primary));width:44px;height:44px;color:var(--accent-orange);border-radius:50%;place-items:center;display:grid}body[data-route=games][data-scope=challenges] .streak-fire.streak-low{color:var(--text-muted);background:color-mix(in oklch, var(--text-muted) 16%, var(--bg-primary))}body[data-route=games][data-scope=challenges] .streak-fire.streak-mid{color:var(--color-warning);background:color-mix(in oklch, var(--color-warning) 16%, var(--bg-primary))}body[data-route=games][data-scope=challenges] .streak-fire.streak-high{color:var(--accent-orange);background:color-mix(in oklch, var(--accent-orange) 18%, var(--bg-primary))}body[data-route=games][data-scope=challenges] .streak-fire.streak-max{color:var(--ch-accent);background:color-mix(in oklch, var(--ch-accent) 22%, var(--bg-primary))}body[data-route=games][data-scope=challenges] .streak-count{color:var(--accent-orange);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums}body[data-route=games][data-scope=challenges] .streak-label{font-size:var(--text-sm);color:var(--ch-text-3)}body[data-route=games][data-scope=challenges] .streak-multiplier{border-radius:var(--radius-full);background:color-mix(in oklch, var(--accent-orange) 12%, var(--bg-primary));color:var(--accent-orange);font-size:var(--text-sm);font-weight:var(--font-weight-bold);align-items:center;gap:.35rem;margin-left:auto;padding:.35rem .65rem;display:inline-flex}body[data-route=games][data-scope=challenges] .game-filter-tabs{flex-wrap:wrap;gap:.6rem;padding:.5rem 0;display:flex}body[data-route=games][data-scope=challenges] .filter-tab{min-height:var(--touch-min);border:1px solid color-mix(in oklch, var(--ch-accent) 25%, var(--ch-glass-border));border-radius:var(--radius-full);background:color-mix(in oklch, var(--bg-deep) 70%, transparent);color:var(--ch-text-2);font:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:background var(--transition-color), border-color var(--transition-color), color var(--transition-color), transform var(--transition-transform);align-items:center;gap:.4rem;padding:.5rem 1rem;display:inline-flex}body[data-route=games][data-scope=challenges] .filter-tab:hover{background:color-mix(in oklch, var(--ch-accent) 12%, var(--bg-primary));border-color:color-mix(in oklch, var(--ch-accent) 50%, var(--ch-glass-border));color:var(--ch-text);transform:translateY(-1px)}body[data-route=games][data-scope=challenges] .filter-tab.active,body[data-route=games][data-scope=challenges] .filter-tab.is-active{background:linear-gradient(180deg, color-mix(in oklch, var(--ch-accent) 85%, white 15%), var(--ch-accent));border-color:color-mix(in oklch, var(--ch-accent) 60%, white 10%);color:oklch(98% 0 0);box-shadow:0 8px 20px -8px color-mix(in oklch, var(--ch-accent) 50%, transparent)}body[data-route=games][data-scope=challenges] .filter-tab:focus-visible{outline:2px solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}body[data-route=games][data-scope=challenges] .challenges-section-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}body[data-route=games][data-scope=challenges] .challenge-section-title{font-family:var(--font-display);font-size:var(--text-3xl);color:var(--ch-text);line-height:var(--leading-tight);align-items:center;gap:.5rem;margin:0;display:inline-flex}body[data-route=games][data-scope=challenges] .challenge-section-title .sgai-icon{width:.85em;height:.85em;color:var(--ch-accent)}body[data-route=games][data-scope=challenges] .rerolls-badge{border:1px solid var(--ch-glass-border);border-radius:var(--radius-full);background:var(--ch-glass);color:var(--ch-text-2);font-size:var(--text-sm);align-items:center;gap:.4rem;padding:.45rem .85rem;display:inline-flex}body[data-route=games][data-scope=challenges] .reroll-count{color:var(--ch-accent);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums}body[data-route=games][data-scope=challenges] .reroll-tier-bonus{color:var(--accent-purple);font-weight:var(--font-weight-semibold)}body[data-route=games][data-scope=challenges] .challenge-grid{gap:var(--gap);grid-template-columns:1fr;display:grid;container:challenge-grid/inline-size}body[data-route=games][data-scope=challenges] .chains-grid{gap:var(--gap);grid-template-columns:1fr;display:grid}@media (min-width:768px){body[data-route=games][data-scope=challenges] .challenge-grid,body[data-route=games][data-scope=challenges] .chains-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){body[data-route=games][data-scope=challenges] .challenge-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}body[data-route=games][data-scope=challenges] .challenge-card,body[data-route=games][data-scope=challenges] .weekly-card,body[data-route=games][data-scope=challenges] .monthly-card,body[data-route=games][data-scope=challenges] .cursed-card,body[data-route=games][data-scope=challenges] .chain-card{padding:var(--ch-pad);border:1px solid var(--ch-glass-border);border-radius:var(--ch-radius);background:var(--ch-glass);-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--ch-shadow-sm), var(--glass-inner-highlight);transition:transform var(--transition-transform), box-shadow var(--transition-base), border-color var(--transition-color);contain:layout paint style;flex-direction:column;gap:.85rem;display:flex;position:relative}body[data-route=games][data-scope=challenges] .challenge-card:hover,body[data-route=games][data-scope=challenges] .weekly-card:hover,body[data-route=games][data-scope=challenges] .monthly-card:hover,body[data-route=games][data-scope=challenges] .cursed-card:hover,body[data-route=games][data-scope=challenges] .chain-card:hover{border-color:var(--glass-border-hover);box-shadow:var(--ch-shadow-md), var(--glass-inner-highlight);transform:translateY(-3px)}body[data-route=games][data-scope=challenges] .weekly-card,body[data-route=games][data-scope=challenges] .monthly-card,body[data-route=games][data-scope=challenges] .cursed-card{grid-column:1/-1}body[data-route=games][data-scope=challenges] .challenge-card.completed,body[data-route=games][data-scope=challenges] .weekly-card.completed,body[data-route=games][data-scope=challenges] .monthly-card.completed,body[data-route=games][data-scope=challenges] .cursed-card.completed,body[data-route=games][data-scope=challenges] .chain-card.completed{border-color:color-mix(in oklch, var(--color-success) 35%, var(--ch-glass-border));background:color-mix(in oklch, var(--ch-success-soft) 65%, var(--ch-glass))}body[data-route=games][data-scope=challenges] .challenge-card.claimed,body[data-route=games][data-scope=challenges] .weekly-card.claimed,body[data-route=games][data-scope=challenges] .monthly-card.claimed,body[data-route=games][data-scope=challenges] .cursed-card.claimed,body[data-route=games][data-scope=challenges] .chain-card.claimed{opacity:.72;border-color:color-mix(in oklch, var(--text-muted) 35%, var(--ch-glass-border));background:color-mix(in oklch, var(--bg-deep) 60%, var(--ch-glass))}body[data-route=games][data-scope=challenges] .challenge-card.failed,body[data-route=games][data-scope=challenges] .weekly-card.failed,body[data-route=games][data-scope=challenges] .monthly-card.failed,body[data-route=games][data-scope=challenges] .cursed-card.failed,body[data-route=games][data-scope=challenges] .chain-card.failed{border-color:color-mix(in oklch, var(--color-error) 35%, var(--ch-glass-border));background:color-mix(in oklch, var(--ch-error-soft) 55%, var(--ch-glass))}body[data-route=games][data-scope=challenges] .challenge-card.near-complete,body[data-route=games][data-scope=challenges] .weekly-card.near-complete,body[data-route=games][data-scope=challenges] .monthly-card.near-complete,body[data-route=games][data-scope=challenges] .cursed-card.near-complete,body[data-route=games][data-scope=challenges] .chain-card.near-complete{border-color:color-mix(in oklch, var(--color-warning) 35%, var(--ch-glass-border));background:color-mix(in oklch, var(--ch-warning-soft) 55%, var(--ch-glass))}body[data-route=games][data-scope=challenges] .challenge-card.rerolling,body[data-route=games][data-scope=challenges] .weekly-card.rerolling,body[data-route=games][data-scope=challenges] .monthly-card.rerolling,body[data-route=games][data-scope=challenges] .cursed-card.rerolling,body[data-route=games][data-scope=challenges] .chain-card.rerolling{animation:1.2s ease-in-out infinite ch-reroll-blur}body[data-route=games][data-scope=challenges] .chal-header{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}body[data-route=games][data-scope=challenges] .chal-game{font-size:var(--text-sm);color:var(--ch-text-3);font-weight:var(--font-weight-medium);align-items:center;gap:.4rem;display:inline-flex}body[data-route=games][data-scope=challenges] .chal-game .sgai-icon{width:1em;height:1em;color:var(--ch-accent)}body[data-route=games][data-scope=challenges] .chal-title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--ch-text);line-height:var(--leading-snug);margin:0}body[data-route=games][data-scope=challenges] .chal-difficulty{border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-weight-black);letter-spacing:.06em;text-transform:uppercase;align-items:center;padding:.2rem .55rem;display:inline-flex}body[data-route=games][data-scope=challenges] .chal-difficulty.easy{background:color-mix(in oklch, var(--difficulty-easy) 18%, var(--bg-primary));color:var(--difficulty-easy);border:1px solid color-mix(in oklch, var(--difficulty-easy) 30%, transparent)}body[data-route=games][data-scope=challenges] .chal-difficulty.medium{background:color-mix(in oklch, var(--difficulty-medium) 18%, var(--bg-primary));color:var(--difficulty-medium);border:1px solid color-mix(in oklch, var(--difficulty-medium) 30%, transparent)}body[data-route=games][data-scope=challenges] .chal-difficulty.hard{background:color-mix(in oklch, var(--difficulty-hard) 18%, var(--bg-primary));color:var(--difficulty-hard);border:1px solid color-mix(in oklch, var(--difficulty-hard) 30%, transparent)}body[data-route=games][data-scope=challenges] .chal-difficulty.nightmare{background:color-mix(in oklch, var(--ch-accent) 20%, var(--bg-primary));color:color-mix(in oklch, var(--ch-accent) 90%, white);border:1px solid color-mix(in oklch, var(--ch-accent) 40%, transparent);box-shadow:0 0 10px -2px color-mix(in oklch, var(--ch-accent) 30%, transparent)}body[data-route=games][data-scope=challenges] .chal-desc{font-size:var(--text-sm);color:var(--ch-text-2);line-height:var(--leading-normal);margin:0}body[data-route=games][data-scope=challenges] .chal-progress-wrap{flex-direction:column;gap:.35rem;display:flex}body[data-route=games][data-scope=challenges] .chal-progress-text{font-size:var(--text-xs);color:var(--ch-text-3);justify-content:space-between;align-items:center;gap:.5rem;display:flex}body[data-route=games][data-scope=challenges] .chal-progress-label{font-weight:var(--font-weight-medium)}body[data-route=games][data-scope=challenges] .chal-progress-numbers{font-variant-numeric:tabular-nums}body[data-route=games][data-scope=challenges] .chal-progress-bar{border-radius:var(--radius-full);background:color-mix(in oklch, var(--bg-deep) 80%, transparent);border:1px solid color-mix(in oklch, var(--text-primary) 4%, transparent);width:100%;height:8px;overflow:hidden}body[data-route=games][data-scope=challenges] .chal-progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--ch-accent-dim), var(--ch-accent));height:100%;transition:width var(--dur-slow) var(--ease-emphasized)}body[data-route=games][data-scope=challenges] .completed .chal-progress-fill,body[data-route=games][data-scope=challenges] .near-complete .chal-progress-fill{background:linear-gradient(90deg, var(--color-success), color-mix(in oklch, var(--color-success) 80%, white))}body[data-route=games][data-scope=challenges] .failed .chal-progress-fill{background:var(--color-error)}body[data-route=games][data-scope=challenges] .chal-footer{border-top:1px solid var(--ch-glass-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:auto;padding-top:.75rem;display:flex}body[data-route=games][data-scope=challenges] .chal-btn-group{flex-wrap:wrap;gap:.5rem;display:flex}body[data-route=games][data-scope=challenges] .chal-btn,body[data-route=games][data-scope=challenges] .monthly-reroll-btn,body[data-route=games][data-scope=challenges] .chain-claim-btn{min-height:var(--touch-min);border-radius:var(--radius-md);font:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-bold);cursor:pointer;transition:background var(--transition-color), border-color var(--transition-color), transform var(--transition-transform), box-shadow var(--transition-base);border:1px solid #0000;justify-content:center;align-items:center;gap:.35rem;padding:.55rem 1rem;display:inline-flex}body[data-route=games][data-scope=challenges] .chal-btn:hover,body[data-route=games][data-scope=challenges] .monthly-reroll-btn:hover,body[data-route=games][data-scope=challenges] .chain-claim-btn:hover{transform:translateY(-1px)}body[data-route=games][data-scope=challenges] .chal-btn:active,body[data-route=games][data-scope=challenges] .monthly-reroll-btn:active,body[data-route=games][data-scope=challenges] .chain-claim-btn:active{transform:translateY(0)}body[data-route=games][data-scope=challenges] .chal-btn:focus-visible,body[data-route=games][data-scope=challenges] .monthly-reroll-btn:focus-visible,body[data-route=games][data-scope=challenges] .chain-claim-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}body[data-route=games][data-scope=challenges] .chal-btn-claim{background:var(--button-primary-bg);color:var(--button-primary-text);border-color:var(--button-primary-border)}body[data-route=games][data-scope=challenges] .chal-btn-claim:hover{background:var(--button-primary-hover);box-shadow:0 8px 18px -8px color-mix(in oklch, var(--ch-accent) 45%, transparent)}body[data-route=games][data-scope=challenges] .chal-btn-reroll{background:var(--button-secondary-bg);color:var(--button-secondary-text);border-color:var(--button-secondary-border)}body[data-route=games][data-scope=challenges] .chal-btn-reroll:hover{background:var(--button-secondary-hover)}body[data-route=games][data-scope=challenges] .chal-btn-play{color:var(--ch-text);border-color:var(--ch-glass-border);background:0 0}body[data-route=games][data-scope=challenges] .chal-btn-play:hover{background:var(--glass-bg-hover)}body[data-route=games][data-scope=challenges] .cursed-accept-btn{min-height:var(--touch-min);border:1px solid color-mix(in oklch, var(--ch-accent) 50%, transparent);border-radius:var(--radius-md);background:linear-gradient(135deg, var(--ch-accent), color-mix(in oklch, var(--ch-accent) 80%, black));color:oklch(98% 0 0);font:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-bold);cursor:pointer;transition:background var(--transition-color), border-color var(--transition-color), transform var(--transition-transform), box-shadow var(--transition-base);justify-content:center;align-items:center;gap:.35rem;padding:.55rem 1rem;display:inline-flex}body[data-route=games][data-scope=challenges] .cursed-accept-btn:hover{box-shadow:0 10px 24px -8px color-mix(in oklch, var(--ch-accent) 50%, transparent)}body[data-route=games][data-scope=challenges] .chal-reward-block{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}body[data-route=games][data-scope=challenges] .chal-reward{border-radius:var(--radius-full);background:color-mix(in oklch, var(--accent-orange) 12%, var(--bg-primary));color:var(--accent-orange);font-size:var(--text-sm);font-weight:var(--font-weight-bold);align-items:center;gap:.3rem;padding:.3rem .6rem;display:inline-flex}body[data-route=games][data-scope=challenges] .chal-multiplier{color:var(--accent-purple);font-size:var(--text-sm);font-weight:var(--font-weight-bold)}body[data-route=games][data-scope=challenges] .chal-claimed-badge{border-radius:var(--radius-full);background:color-mix(in oklch, var(--color-success) 18%, var(--bg-primary));color:var(--color-success);font-size:var(--text-xs);font-weight:var(--font-weight-black);letter-spacing:.05em;text-transform:uppercase;align-items:center;gap:.25rem;padding:.25rem .55rem;display:inline-flex;position:absolute;top:.75rem;right:.75rem}body[data-route=games][data-scope=challenges] .card-tooltip{z-index:var(--z-popover);border:1px solid var(--ch-glass-border);border-radius:var(--radius-lg);background:var(--bg-secondary);max-width:min(260px,90%);color:var(--ch-text-2);font-size:var(--text-sm);box-shadow:var(--ch-shadow-md);pointer-events:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-standard), transform var(--dur-fast) var(--ease-standard);padding:.6rem .85rem;position:absolute;transform:translateY(4px)}body[data-route=games][data-scope=challenges] .challenge-card:hover .card-tooltip,body[data-route=games][data-scope=challenges] .weekly-card:hover .card-tooltip,body[data-route=games][data-scope=challenges] .monthly-card:hover .card-tooltip,body[data-route=games][data-scope=challenges] .cursed-card:hover .card-tooltip,body[data-route=games][data-scope=challenges] .chain-card:hover .card-tooltip{opacity:1;transform:translateY(0)}body[data-route=games][data-scope=challenges] .cursed-card{border-color:color-mix(in oklch, var(--ch-accent) 35%, var(--ch-glass-border));background:radial-gradient(600px 300px at 80% 10%, color-mix(in oklch, var(--ch-accent) 10%, transparent), transparent 55%), var(--ch-glass)}body[data-route=games][data-scope=challenges] .cursed-header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}body[data-route=games][data-scope=challenges] .cursed-badge{border-radius:var(--radius-full);background:color-mix(in oklch, var(--ch-accent) 18%, var(--bg-primary));color:color-mix(in oklch, var(--ch-accent) 90%, white);font-size:var(--text-xs);font-weight:var(--font-weight-black);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:.25rem;padding:.25rem .6rem;display:inline-flex}body[data-route=games][data-scope=challenges] .cursed-risk{font-size:var(--text-sm);color:var(--color-error);font-weight:var(--font-weight-semibold);align-items:center;gap:.25rem;display:inline-flex}body[data-route=games][data-scope=challenges] .cursed-active-status{font-size:var(--text-sm);color:var(--ch-text-2)}body[data-route=games][data-scope=challenges] .cursed-failed-badge{border-radius:var(--radius-full);background:color-mix(in oklch, var(--color-error) 16%, var(--bg-primary));color:var(--color-error);font-size:var(--text-xs);font-weight:var(--font-weight-black);text-transform:uppercase;align-items:center;gap:.25rem;padding:.25rem .6rem;display:inline-flex}body[data-route=games][data-scope=challenges] .weekly-card{background:radial-gradient(700px 340px at 10% 0%, color-mix(in oklch, var(--accent-purple) 10%, transparent), transparent 55%), var(--ch-glass)}body[data-route=games][data-scope=challenges] .weekly-countdown{border-radius:var(--radius-full);background:color-mix(in oklch, var(--accent-purple) 12%, var(--bg-primary));color:color-mix(in oklch, var(--accent-purple) 85%, white);font-size:var(--text-sm);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums;align-items:center;gap:.35rem;padding:.35rem .7rem;display:inline-flex}body[data-route=games][data-scope=challenges] .monthly-card{background:radial-gradient(700px 340px at 50% 0%, color-mix(in oklch, var(--accent-orange) 12%, transparent), transparent 55%), var(--ch-glass)}body[data-route=games][data-scope=challenges] .monthly-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}body[data-route=games][data-scope=challenges] .monthly-badge{border-radius:var(--radius-full);background:color-mix(in oklch, var(--accent-orange) 18%, var(--bg-primary));color:color-mix(in oklch, var(--accent-orange) 90%, white);font-size:var(--text-xs);font-weight:var(--font-weight-black);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:.25rem;padding:.25rem .6rem;display:inline-flex}body[data-route=games][data-scope=challenges] .monthly-month{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--ch-text)}body[data-route=games][data-scope=challenges] .monthly-reward{border-radius:var(--radius-full);background:color-mix(in oklch, var(--accent-orange) 12%, var(--bg-primary));color:var(--accent-orange);font-size:var(--text-sm);font-weight:var(--font-weight-bold);align-items:center;gap:.3rem;padding:.35rem .75rem;display:inline-flex}body[data-route=games][data-scope=challenges] .monthly-progress{border-radius:var(--radius-full);background:color-mix(in oklch, var(--bg-deep) 80%, transparent);border:1px solid color-mix(in oklch, var(--text-primary) 4%, transparent);width:100%;height:10px;overflow:hidden}body[data-route=games][data-scope=challenges] .monthly-progress>div,body[data-route=games][data-scope=challenges] .monthly-progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--accent-orange), color-mix(in oklch, var(--accent-orange) 80%, white));height:100%;transition:width var(--dur-slow) var(--ease-emphasized)}body[data-route=games][data-scope=challenges] .monthly-reroll-btn{background:var(--button-secondary-bg);color:var(--button-secondary-text);border-color:var(--button-secondary-border)}body[data-route=games][data-scope=challenges] .chain-card{gap:1rem}body[data-route=games][data-scope=challenges] .chain-header{align-items:center;gap:.85rem;display:flex}body[data-route=games][data-scope=challenges] .chain-icon{border-radius:var(--radius-lg);background:color-mix(in oklch, var(--accent-purple) 16%, var(--bg-primary));width:48px;height:48px;color:color-mix(in oklch, var(--accent-purple) 85%, white);font-size:var(--text-2xl);place-items:center;display:grid}body[data-route=games][data-scope=challenges] .chain-info{flex-direction:column;gap:.2rem;min-width:0;display:flex}body[data-route=games][data-scope=challenges] .chain-title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--ch-text);margin:0}body[data-route=games][data-scope=challenges] .chain-desc{font-size:var(--text-sm);color:var(--ch-text-2);margin:0}body[data-route=games][data-scope=challenges] .chain-progress-text{font-size:var(--text-sm);color:var(--ch-text-3);font-variant-numeric:tabular-nums}body[data-route=games][data-scope=challenges] .chain-steps{flex-direction:column;gap:.6rem;display:flex}body[data-route=games][data-scope=challenges] .chain-step{border:1px solid var(--ch-glass-border);border-radius:var(--radius-lg);background:color-mix(in oklch, var(--bg-deep) 50%, transparent);transition:background var(--transition-color), border-color var(--transition-color);grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;padding:.75rem;display:grid}body[data-route=games][data-scope=challenges] .chain-step.active{border-color:color-mix(in oklch, var(--ch-accent) 40%, var(--ch-glass-border));background:color-mix(in oklch, var(--ch-accent-soft) 50%, transparent)}body[data-route=games][data-scope=challenges] .chain-step.completed{border-color:color-mix(in oklch, var(--color-success) 35%, var(--ch-glass-border));background:color-mix(in oklch, var(--ch-success-soft) 45%, transparent)}body[data-route=games][data-scope=challenges] .chain-step.claimed{opacity:.65}body[data-route=games][data-scope=challenges] .chain-step.locked{opacity:.5;filter:grayscale(.5)}body[data-route=games][data-scope=challenges] .chain-step-num{background:var(--ch-glass);border:1px solid var(--ch-glass-border);width:32px;height:32px;color:var(--ch-text-2);font-size:var(--text-sm);font-weight:var(--font-weight-bold);border-radius:50%;place-items:center;display:grid}body[data-route=games][data-scope=challenges] .chain-step.completed .chain-step-num{background:color-mix(in oklch, var(--color-success) 20%, var(--bg-primary));color:var(--color-success);border-color:color-mix(in oklch, var(--color-success) 35%, transparent)}body[data-route=games][data-scope=challenges] .chain-step.active .chain-step-num{background:color-mix(in oklch, var(--ch-accent) 20%, var(--bg-primary));color:var(--ch-accent);border-color:color-mix(in oklch, var(--ch-accent) 35%, transparent)}body[data-route=games][data-scope=challenges] .chain-step-info{flex-direction:column;gap:.15rem;min-width:0;display:flex}body[data-route=games][data-scope=challenges] .chain-step-title{font-size:var(--text-base);color:var(--ch-text);font-weight:var(--font-weight-semibold);margin:0}body[data-route=games][data-scope=challenges] .chain-step-lore{font-size:var(--text-xs);color:var(--ch-text-3);margin:0;font-style:italic}body[data-route=games][data-scope=challenges] .chain-step-desc{font-size:var(--text-sm);color:var(--ch-text-2);margin:0}body[data-route=games][data-scope=challenges] .chain-step-action{font-size:var(--text-xs);color:var(--ch-accent);font-weight:var(--font-weight-semibold);align-items:center;gap:.25rem;display:inline-flex}body[data-route=games][data-scope=challenges] .chain-step-badge{border-radius:var(--radius-full);background:color-mix(in oklch, var(--ch-accent) 12%, var(--bg-primary));color:var(--ch-accent);font-size:var(--text-xs);font-weight:var(--font-weight-bold);align-items:center;padding:.2rem .5rem;display:inline-flex}body[data-route=games][data-scope=challenges] .chain-step-progress{border-radius:var(--radius-full);background:color-mix(in oklch, var(--bg-deep) 80%, transparent);grid-column:1/-1;width:100%;height:6px;overflow:hidden}body[data-route=games][data-scope=challenges] .chain-step-fill{border-radius:inherit;background:var(--ch-accent);height:100%;transition:width var(--dur-slow) var(--ease-emphasized)}body[data-route=games][data-scope=challenges] .chain-step-count{font-size:var(--text-xs);color:var(--ch-text-3);font-variant-numeric:tabular-nums}body[data-route=games][data-scope=challenges] .chain-claim-btn{background:var(--button-primary-bg);color:var(--button-primary-text)}body[data-route=games][data-scope=challenges] .chain-bonus{border-radius:var(--radius-full);background:color-mix(in oklch, var(--accent-purple) 12%, var(--bg-primary));color:color-mix(in oklch, var(--accent-purple) 85%, white);font-size:var(--text-sm);font-weight:var(--font-weight-bold);align-items:center;gap:.3rem;padding:.35rem .7rem;display:inline-flex}body[data-route=games][data-scope=challenges] .event-banner{border:1px solid color-mix(in oklch, var(--ch-accent) 30%, var(--ch-glass-border));border-radius:var(--ch-radius);background:radial-gradient(700px 300px at 0% 50%, color-mix(in oklch, var(--ch-accent) 14%, transparent), transparent 55%), var(--ch-glass);-webkit-backdrop-filter:blur(var(--glass-blur));color:var(--ch-text);flex-wrap:wrap;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}body[data-route=games][data-scope=challenges] .event-challenges{gap:var(--gap);grid-template-columns:1fr;display:grid}body[data-route=games][data-scope=challenges] .leaderboard-section,body[data-route=games][data-scope=challenges] .friends-section,body[data-route=games][data-scope=challenges] .event-archive,body[data-route=games][data-scope=challenges] .notif-settings{padding:var(--ch-pad);border:1px solid var(--ch-glass-border);border-radius:var(--ch-radius);background:var(--ch-glass);-webkit-backdrop-filter:blur(var(--glass-blur))}body[data-route=games][data-scope=challenges] .challenge-empty{text-align:center;border:1px dashed var(--ch-glass-border);border-radius:var(--ch-radius);background:color-mix(in oklch, var(--bg-deep) 50%, transparent);color:var(--ch-text-2);flex-direction:column;align-items:center;gap:.75rem;padding:clamp(2rem,6vw,4rem) 1rem;display:flex}body[data-route=games][data-scope=challenges] .challenge-empty-icon{font-size:var(--text-5xl);opacity:.65}body[data-route=games][data-scope=challenges] .challenge-empty-text{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--ch-text);margin:0}body[data-route=games][data-scope=challenges] .challenge-empty-sub{font-size:var(--text-sm);color:var(--ch-text-3);max-width:var(--measure-narrow);margin:0}body[data-route=games][data-scope=challenges] .shop-modal-overlay{z-index:var(--z-modal);background:var(--modal-backdrop);-webkit-backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity var(--dur-normal) var(--ease-standard);justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}body[data-route=games][data-scope=challenges] .shop-modal-overlay.visible{opacity:1;pointer-events:all}body[data-route=games][data-scope=challenges] .shop-modal{border:1px solid var(--modal-border);border-radius:var(--modal-radius);background:var(--modal-bg);width:min(92vw,720px);max-height:min(86vh,640px);box-shadow:var(--modal-shadow);flex-direction:column;display:flex;overflow:hidden}body[data-route=games][data-scope=challenges] .shop-header{border-bottom:1px solid var(--ch-glass-border);justify-content:space-between;align-items:center;gap:1rem;padding:1.1rem 1.25rem;display:flex}body[data-route=games][data-scope=challenges] .shop-title-wrap{flex-direction:column;gap:.15rem;display:flex}body[data-route=games][data-scope=challenges] .shop-title{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--ch-text);margin:0}body[data-route=games][data-scope=challenges] .shop-subtitle{font-size:var(--text-sm);color:var(--ch-text-3);margin:0}body[data-route=games][data-scope=challenges] .shop-cp-display{border-radius:var(--radius-full);background:color-mix(in oklch, var(--ch-accent) 12%, var(--bg-primary));color:var(--ch-accent);font-size:var(--text-sm);font-weight:var(--font-weight-bold);align-items:center;gap:.35rem;padding:.4rem .8rem;display:inline-flex}body[data-route=games][data-scope=challenges] .shop-close{width:var(--touch-min);height:var(--touch-min);border:1px solid var(--ch-glass-border);color:var(--ch-text-2);font-size:var(--text-xl);cursor:pointer;transition:background var(--transition-color), color var(--transition-color), transform var(--transition-transform);background:0 0;border-radius:50%;place-items:center;display:grid}body[data-route=games][data-scope=challenges] .shop-close:hover{background:var(--glass-bg-hover);color:var(--ch-text);transform:rotate(90deg)}body[data-route=games][data-scope=challenges] .shop-tabs{border-bottom:1px solid var(--ch-glass-border);gap:.25rem;padding:.75rem 1.25rem;display:flex;overflow-x:auto}body[data-route=games][data-scope=challenges] .shop-tab{min-height:var(--touch-min);border-radius:var(--radius-md);color:var(--ch-text-2);font:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:background var(--transition-color), color var(--transition-color);background:0 0;border:1px solid #0000;flex:none;padding:0 1rem}body[data-route=games][data-scope=challenges] .shop-tab:hover{background:var(--glass-bg-hover);color:var(--ch-text)}body[data-route=games][data-scope=challenges] .shop-tab.active{background:color-mix(in oklch, var(--ch-accent) 16%, var(--bg-primary));color:var(--ch-text);border-color:color-mix(in oklch, var(--ch-accent) 35%, transparent)}body[data-route=games][data-scope=challenges] .shop-items{grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:.85rem;padding:1.25rem;display:grid;overflow-y:auto}body[data-route=games][data-scope=challenges] .shop-item{border:1px solid var(--ch-glass-border);border-radius:var(--radius-lg);background:color-mix(in oklch, var(--bg-deep) 50%, transparent);transition:border-color var(--transition-color), transform var(--transition-transform);flex-direction:column;gap:.6rem;padding:1rem;display:flex}body[data-route=games][data-scope=challenges] .shop-item:hover{border-color:var(--glass-border-hover);transform:translateY(-2px)}body[data-route=games][data-scope=challenges] .shop-item.owned{opacity:.85}body[data-route=games][data-scope=challenges] .shop-item.equipped{border-color:color-mix(in oklch, var(--color-success) 40%, var(--ch-glass-border));background:color-mix(in oklch, var(--ch-success-soft) 40%, transparent)}body[data-route=games][data-scope=challenges] .shop-item.locked{opacity:.6;filter:grayscale(.5)}body[data-route=games][data-scope=challenges] .shop-item-icon{border-radius:var(--radius-lg);background:color-mix(in oklch, var(--ch-accent) 14%, var(--bg-primary));width:52px;height:52px;font-size:var(--text-3xl);place-items:center;display:grid}body[data-route=games][data-scope=challenges] .shop-item-info{flex-direction:column;gap:.25rem;display:flex}body[data-route=games][data-scope=challenges] .shop-item-name{font-size:var(--text-base);color:var(--ch-text);font-weight:var(--font-weight-bold);margin:0}body[data-route=games][data-scope=challenges] .shop-item-desc{font-size:var(--text-sm);color:var(--ch-text-2);line-height:var(--leading-snug);margin:0}body[data-route=games][data-scope=challenges] .shop-item-status{font-size:var(--text-xs);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.05em}body[data-route=games][data-scope=challenges] .shop-item-status.equipped{color:var(--color-success)}body[data-route=games][data-scope=challenges] .shop-item-status.owned{color:var(--ch-text-3)}body[data-route=games][data-scope=challenges] .shop-item-status.locked{color:var(--text-muted)}body[data-route=games][data-scope=challenges] .shop-item-status.poor{color:var(--color-error)}body[data-route=games][data-scope=challenges] .shop-item-action{margin-top:auto}body[data-route=games][data-scope=challenges] .shop-item-btn{width:100%;min-height:var(--touch-min);border-radius:var(--radius-md);font:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-bold);cursor:pointer;transition:background var(--transition-color), transform var(--transition-transform);border:1px solid #0000;justify-content:center;align-items:center;gap:.35rem;padding:.55rem 1rem;display:inline-flex}body[data-route=games][data-scope=challenges] .shop-item-btn:hover{transform:translateY(-1px)}body[data-route=games][data-scope=challenges] .shop-item-btn:active{transform:translateY(0)}body[data-route=games][data-scope=challenges] .shop-item-btn.buy{background:var(--button-primary-bg);color:var(--button-primary-text)}body[data-route=games][data-scope=challenges] .shop-item-btn.equip{background:color-mix(in oklch, var(--color-success) 20%, var(--bg-primary));color:var(--color-success);border-color:color-mix(in oklch, var(--color-success) 35%, transparent)}body[data-route=games][data-scope=challenges] .shop-item-btn.unequip{background:var(--button-secondary-bg);color:var(--button-secondary-text);border-color:var(--button-secondary-border)}body[data-route=games][data-scope=challenges] .shop-item-btn.locked,body[data-route=games][data-scope=challenges] .shop-item-btn.cant-afford{background:var(--button-secondary-disabled);color:var(--text-muted);cursor:not-allowed}body[data-route=games][data-scope=challenges] .skeleton-card{padding:var(--ch-pad);border:1px solid var(--ch-glass-border);border-radius:var(--ch-radius);background:var(--ch-glass);flex-direction:column;gap:.75rem;display:flex;overflow:hidden}body[data-route=games][data-scope=challenges] .skeleton-card>div{border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--skeleton-base) 0%, var(--skeleton-highlight) 40%, var(--skeleton-base) 80%);background-size:200% 100%;height:14px;animation:1.8s ease-in-out infinite ch-skeleton-shimmer}body[data-route=games][data-scope=challenges] .skeleton-card>.short{width:45%}body[data-route=games][data-scope=challenges] .skeleton-card>.title{width:70%;height:22px}body[data-route=games][data-scope=challenges] .skeleton-card>.long{width:100%}body[data-route=games][data-scope=challenges] .skeleton-card>.medium{width:80%}body[data-route=games][data-scope=challenges] .skeleton-card>.bar{width:100%;height:10px;margin-top:.5rem}body[data-route=games][data-scope=challenges] .completion-burst{pointer-events:none;z-index:var(--z-particle-fx);position:absolute;inset:0}body[data-route=games][data-scope=challenges] .burst-particle{background:var(--ch-accent);opacity:0;border-radius:50%;width:6px;height:6px;position:absolute}body[data-route=games][data-scope=challenges] .completion-burst.visible .burst-particle{animation:ch-burst .7s var(--ease-decelerated) forwards}body[data-route=games][data-scope=challenges] .dark-confetti-container{pointer-events:none;z-index:var(--z-overlay-fx);position:fixed;inset:0;overflow:hidden}body[data-route=games][data-scope=challenges] .dark-confetti{background:var(--ch-accent);opacity:.75;width:8px;height:8px;animation:2.5s linear forwards ch-confetti-fall;position:absolute}body[data-route=games][data-scope=challenges] .lightning-flash{z-index:var(--z-overlay-fx-2);opacity:0;pointer-events:none;mix-blend-mode:screen;background:oklch(95% 0 0/.12);position:fixed;inset:0}body[data-route=games][data-scope=challenges] .lightning-flash.active{animation:.35s ease-out ch-lightning}body[data-route=games][data-scope=challenges] .screen-shake{animation:.35s ease-in-out ch-shake}body[data-route=games][data-scope=challenges] .ritual-overlay{z-index:var(--z-overlay);opacity:0;pointer-events:none;transition:opacity var(--dur-page) var(--ease-standard);background:oklch(4% .02 285/.88);place-items:center;display:grid;position:fixed;inset:0}body[data-route=games][data-scope=challenges] .ritual-overlay.visible{opacity:1;pointer-events:all}body[data-route=games][data-scope=challenges] .ritual-circle{width:clamp(180px,40vw,320px);height:clamp(180px,40vw,320px);position:relative}body[data-route=games][data-scope=challenges] .ritual-ring{border:1px solid color-mix(in oklch, var(--ch-accent) 30%, transparent);border-radius:50%;animation:12s linear infinite ch-ritual-spin;position:absolute;inset:0}body[data-route=games][data-scope=challenges] .ritual-ring:nth-child(2){animation-duration:8s;animation-direction:reverse;inset:12%}body[data-route=games][data-scope=challenges] .ritual-ring:nth-child(3){animation-duration:5s;inset:24%}body[data-route=games][data-scope=challenges] .ritual-pentagram{color:color-mix(in oklch, var(--ch-accent) 55%, transparent);opacity:.45;position:absolute;inset:18%}body[data-route=games][data-scope=challenges] .ritual-text{text-align:center;font-family:var(--font-display);font-size:var(--text-3xl);color:var(--ch-text);text-shadow:0 2px 20px color-mix(in oklch, var(--ch-accent) 40%, transparent);place-items:center;display:grid;position:absolute;inset:0}body[data-route=games][data-scope=challenges] .rankup-overlay{z-index:var(--z-overlay);opacity:0;pointer-events:none;transition:opacity var(--dur-page) var(--ease-standard);background:oklch(4% .02 285/.9);place-items:center;display:grid;position:fixed;inset:0}body[data-route=games][data-scope=challenges] .rankup-overlay.visible{opacity:1;pointer-events:all}body[data-route=games][data-scope=challenges] .rankup-content{text-align:center;flex-direction:column;align-items:center;gap:1rem;padding:clamp(2rem,6vw,3.5rem);display:flex;position:relative}body[data-route=games][data-scope=challenges] .rankup-flash{background:radial-gradient(circle, color-mix(in oklch, var(--ch-accent) 35%, transparent), transparent 60%);opacity:0;border-radius:50%;position:absolute;inset:-20%}body[data-route=games][data-scope=challenges] .rankup-overlay.visible .rankup-flash{animation:1.2s ease-out ch-rankup-flash}body[data-route=games][data-scope=challenges] .rankup-particles{pointer-events:none;position:absolute;inset:0}body[data-route=games][data-scope=challenges] .rankup-particle{background:var(--ch-accent);border-radius:50%;width:5px;height:5px;position:absolute}body[data-route=games][data-scope=challenges] .rankup-overlay.visible .rankup-particle{animation:ch-burst 1s var(--ease-decelerated) forwards}body[data-route=games][data-scope=challenges] .rankup-badge{font-size:clamp(3rem,8vw,5rem);line-height:1}body[data-route=games][data-scope=challenges] .rankup-old-rank{font-size:var(--text-lg);color:var(--ch-text-3)}body[data-route=games][data-scope=challenges] .rankup-arrow{font-size:var(--text-2xl);color:var(--ch-accent)}body[data-route=games][data-scope=challenges] .rankup-icon{font-size:clamp(3rem,8vw,5rem)}body[data-route=games][data-scope=challenges] .rankup-label{font-size:var(--text-sm);letter-spacing:.12em;text-transform:uppercase;color:var(--ch-accent);font-weight:var(--font-weight-black)}body[data-route=games][data-scope=challenges] .rankup-title{font-family:var(--font-display);font-size:var(--text-4xl);color:var(--ch-text);margin:0}body[data-route=games][data-scope=challenges] .rankup-cp-req{font-size:var(--text-sm);color:var(--ch-text-2)}body[data-route=games][data-scope=challenges] .rankup-dismiss{min-height:var(--touch-min);border:1px solid var(--ch-glass-border);border-radius:var(--radius-md);background:var(--button-secondary-bg);color:var(--button-secondary-text);font:inherit;font-weight:var(--font-weight-bold);cursor:pointer;transition:background var(--transition-color), transform var(--transition-transform);padding:.6rem 1.5rem}body[data-route=games][data-scope=challenges] .rankup-dismiss:hover{background:var(--button-secondary-hover);transform:translateY(-1px)}body[data-route=games][data-scope=challenges] .challenge-toast-container{right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom,0px));z-index:var(--z-toast);pointer-events:none;flex-direction:column;gap:.6rem;width:min(92vw,360px);display:flex;position:fixed}body[data-route=games][data-scope=challenges] .challenge-toast{border:1px solid var(--ch-glass-border);border-radius:var(--radius-lg);background:var(--bg-secondary);color:var(--ch-text);box-shadow:var(--ch-shadow-md);opacity:0;transition:opacity var(--dur-normal) var(--ease-emphasized), transform var(--dur-normal) var(--ease-emphasized);pointer-events:auto;align-items:flex-start;gap:.75rem;padding:.9rem 1rem;display:flex;transform:translateY(12px)}body[data-route=games][data-scope=challenges] .challenge-toast.visible{opacity:1;transform:translateY(0)}body[data-route=games][data-scope=challenges] .challenge-toast-icon{background:color-mix(in oklch, var(--ch-accent) 16%, var(--bg-primary));width:32px;height:32px;color:var(--ch-accent);border-radius:50%;flex-shrink:0;place-items:center;display:grid}body[data-route=games][data-scope=challenges] .challenge-toast-title{font-size:var(--text-base);font-weight:var(--font-weight-bold);margin:0}body[data-route=games][data-scope=challenges] .challenge-toast-message{font-size:var(--text-sm);color:var(--ch-text-2);margin:.15rem 0 0}body[data-route=games][data-scope=challenges] .challenges-live-region{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}body[data-route=games][data-scope=challenges] .challenges-vignette{z-index:var(--z-bg);pointer-events:none;background:radial-gradient(circle at center, transparent 45%, color-mix(in oklch, var(--bg-deep) 90%, transparent) 100%);opacity:.55;position:fixed;inset:0}body[data-route=games][data-scope=challenges] .ember{background:var(--ch-accent);opacity:.6;pointer-events:none;border-radius:50%;width:4px;height:4px;animation:6s ease-in-out infinite ch-ember-float;position:absolute}@keyframes ch-ember-drift{0%{background-position:0 0,100% 100%}to{background-position:220px 220px,-280px -280px}}@keyframes ch-ghost-drift{0%{opacity:.25;transform:translate(0)rotate(0)}50%{opacity:.45;transform:translate(12px,-18px)rotate(4deg)}to{opacity:.25;transform:translate(-8px,-8px)rotate(-2deg)}}@keyframes ch-reroll-blur{0%,to{filter:blur();opacity:1}50%{filter:blur(3px);opacity:.7}}@keyframes ch-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes ch-burst{0%{opacity:1;transform:translate(0)scale(1)}to{transform:translate(var(--tx,40px), var(--ty,-60px)) scale(0);opacity:0}}@keyframes ch-confetti-fall{0%{opacity:1;transform:translateY(-10vh)rotate(0)}to{opacity:0;transform:translateY(110vh)rotate(720deg)}}@keyframes ch-lightning{0%,to{opacity:0}10%,30%,50%{opacity:1}20%,40%{opacity:.2}}@keyframes ch-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@keyframes ch-ritual-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes ch-rankup-flash{0%{opacity:0;transform:scale(.8)}40%{opacity:1;transform:scale(1.1)}to{opacity:0;transform:scale(1.3)}}@keyframes ch-ember-float{0%,to{opacity:.5;transform:translateY(0)scale(1)}50%{opacity:.9;transform:translateY(-24px)scale(1.2)}}@media (prefers-reduced-motion:reduce){body[data-route=games][data-scope=challenges] .section-reveal,body[data-route=games][data-scope=challenges] .challenge-card,body[data-route=games][data-scope=challenges] .weekly-card,body[data-route=games][data-scope=challenges] .monthly-card,body[data-route=games][data-scope=challenges] .cursed-card,body[data-route=games][data-scope=challenges] .chain-card,body[data-route=games][data-scope=challenges] .shop-item,body[data-route=games][data-scope=challenges] .chal-btn,body[data-route=games][data-scope=challenges] .filter-tab,body[data-route=games][data-scope=challenges] .shop-trigger-btn,body[data-route=games][data-scope=challenges] .shop-close,body[data-route=games][data-scope=challenges] .rankup-dismiss{opacity:1!important;transition:none!important;animation:none!important;transform:none!important}body[data-route=games][data-scope=challenges] .challenges-embers,body[data-route=games][data-scope=challenges] .ghost-silhouette,body[data-route=games][data-scope=challenges] .ember,body[data-route=games][data-scope=challenges] .completion-burst,body[data-route=games][data-scope=challenges] .dark-confetti-container,body[data-route=games][data-scope=challenges] .lightning-flash,body[data-route=games][data-scope=challenges] .ritual-overlay,body[data-route=games][data-scope=challenges] .rankup-overlay{opacity:0!important;animation:none!important;display:none!important}body[data-route=games][data-scope=challenges] .challenge-card.rerolling,body[data-route=games][data-scope=challenges] .weekly-card.rerolling,body[data-route=games][data-scope=challenges] .monthly-card.rerolling,body[data-route=games][data-scope=challenges] .cursed-card.rerolling,body[data-route=games][data-scope=challenges] .chain-card.rerolling{filter:none;opacity:.8}@keyframes ch-skeleton-shimmer{0%,to{background-position:0 0}}}html[data-quality=low] body[data-route=games][data-scope=challenges] .challenges-embers,html[data-quality=low] body[data-route=games][data-scope=challenges] .challenges-vignette,html[data-quality=low] body[data-route=games][data-scope=challenges] .ghost-silhouette,html[data-quality=low] body[data-route=games][data-scope=challenges] .ember,html[data-quality=low] body[data-route=games][data-scope=challenges] .completion-burst,html[data-quality=low] body[data-route=games][data-scope=challenges] .dark-confetti-container,html[data-quality=low] body[data-route=games][data-scope=challenges] .lightning-flash,html[data-quality=low] body[data-route=games][data-scope=challenges] .ritual-overlay,html[data-quality=low] body[data-route=games][data-scope=challenges] .rankup-overlay,html[data-quality=low] body[data-route=games][data-scope=challenges] .rankup-particles{display:none!important}html[data-quality=low] body[data-route=games][data-scope=challenges] .challenge-card,html[data-quality=low] body[data-route=games][data-scope=challenges] .weekly-card,html[data-quality=low] body[data-route=games][data-scope=challenges] .monthly-card,html[data-quality=low] body[data-route=games][data-scope=challenges] .cursed-card,html[data-quality=low] body[data-route=games][data-scope=challenges] .chain-card,html[data-quality=low] body[data-route=games][data-scope=challenges] .rank-card,html[data-quality=low] body[data-route=games][data-scope=challenges] .buffs-bar,html[data-quality=low] body[data-route=games][data-scope=challenges] .streak-bar,html[data-quality=low] body[data-route=games][data-scope=challenges] .event-banner,html[data-quality=low] body[data-route=games][data-scope=challenges] .shop-modal,html[data-quality=low] body[data-route=games][data-scope=challenges] .leaderboard-section,html[data-quality=low] body[data-route=games][data-scope=challenges] .friends-section,html[data-quality=low] body[data-route=games][data-scope=challenges] .notif-settings,html[data-quality=low] body[data-route=games][data-scope=challenges] .event-archive{-webkit-backdrop-filter:none!important;box-shadow:none!important}html[data-quality=low] body[data-route=games][data-scope=challenges] .chal-progress-fill,html[data-quality=low] body[data-route=games][data-scope=challenges] .rank-progress-fill,html[data-quality=low] body[data-route=games][data-scope=challenges] .chain-step-fill{transition:none!important}@media (max-width:767px){body[data-route=games][data-scope=challenges] .rank-card{text-align:center;grid-template-columns:1fr}body[data-route=games][data-scope=challenges] .rank-icon-wrap{margin-inline:auto}body[data-route=games][data-scope=challenges] .rank-info-top,body[data-route=games][data-scope=challenges] .rank-cp-text{justify-content:center}body[data-route=games][data-scope=challenges] .chal-header{flex-direction:column;gap:.5rem}body[data-route=games][data-scope=challenges] .chal-footer{flex-direction:column;align-items:flex-start}body[data-route=games][data-scope=challenges] .chal-btn-group{width:100%}body[data-route=games][data-scope=challenges] .chal-btn{flex:auto}body[data-route=games][data-scope=challenges] .chain-step{grid-template-columns:auto 1fr}body[data-route=games][data-scope=challenges] .chain-step-progress{grid-column:1/-1}body[data-route=games][data-scope=challenges] .chain-step-badge,body[data-route=games][data-scope=challenges] .chain-step-count{grid-column:2}body[data-route=games][data-scope=challenges] .challenge-toast-container{width:auto;left:1rem;right:1rem}body[data-route=games][data-scope=challenges] .game-filter-tabs{flex-wrap:nowrap;padding-bottom:.5rem;overflow-x:auto}}@media (max-width:480px){body[data-route=games][data-scope=challenges] .container{padding-inline:.75rem}body[data-route=games][data-scope=challenges] .challenges-hero-title{font-size:var(--text-4xl)}body[data-route=games][data-scope=challenges] .challenge-section-title{font-size:var(--text-2xl)}body[data-route=games][data-scope=challenges] .shop-items{grid-template-columns:1fr}body[data-route=games][data-scope=challenges] .shop-header{flex-direction:column;align-items:flex-start}}}