/* GroupRally — CI contrast & a11y fixes (loads last) */

/* ── Focus rings (Handoff §6) ───────────────────────────────────────────────── */

body.landing-page :focus-visible,
body.player-app :focus-visible,
body.galerie-app :focus-visible,
body.admin :focus-visible,
body.beamer :focus-visible,
body.legal-page :focus-visible {
  outline: 2px solid var(--brand-primary, var(--c-primary));
  outline-offset: 2px;
}

/* ── Light shell: override legacy dark hardcodes from styles.css ─────────────── */

body.landing-page.shell,
body.landing-page.qr-page {
  background: var(--surface-base, var(--c-bg)) !important;
  color: var(--text-primary, var(--c-text)) !important;
}

body.landing-page .landing-header,
body.landing-page .shell-header {
  background: var(--surface-card, var(--c-surface)) !important;
  border-bottom-color: var(--border-default, var(--c-border)) !important;
}

body.landing-page .shell-card,
body.landing-page .landing-page .card,
body.landing-page .shell-panel,
body.landing-page .my-rally-item,
body.landing-page .qr-card {
  background: var(--surface-card, var(--c-surface)) !important;
  border-color: var(--border-default, var(--c-border)) !important;
  color: var(--text-primary, var(--c-text));
}

body.landing-page .shell-link-block {
  background: var(--surface-sunken, #F5F0E8) !important;
  border-color: var(--border-default, var(--c-border)) !important;
}

body.landing-page .shell-link-block strong {
  color: var(--text-muted, var(--c-muted));
}

body.landing-page .shell-section h2,
body.landing-page .portal-section-title,
body.landing-page .create-user-bar,
body.landing-page .my-rallies-section {
  border-bottom-color: var(--border-default, var(--c-border)) !important;
  color: var(--text-primary, var(--c-text));
}

body.landing-page .create-user-bar,
body.landing-page .create-hint,
body.landing-page .my-rallies-hint {
  color: var(--text-muted, var(--c-muted));
}

body.landing-page .create-hint strong {
  color: var(--text-primary, var(--c-text));
}

body.landing-page .form-select,
body.landing-page .template-card {
  background: var(--surface-card, var(--c-surface)) !important;
  border-color: var(--border-default, var(--c-border)) !important;
  color: var(--text-primary, var(--c-text)) !important;
}

body.landing-page .template-card .template-name {
  color: var(--text-primary, var(--c-text));
}

body.landing-page .template-card .template-desc {
  color: var(--text-muted, var(--c-muted));
}

body.landing-page .template-card.selected {
  background: rgba(199, 91, 18, 0.06) !important;
}

body.landing-page .template-mode {
  color: var(--brand-primary, var(--c-primary));
  background: rgba(199, 91, 18, 0.12);
}

body.landing-page .radio-inline {
  color: var(--text-primary, var(--c-text));
}

body.landing-page .avv-panel,
body.landing-page .avv-path-option {
  color: var(--text-primary, var(--c-text));
}

body.landing-page .avv-panel a {
  color: var(--brand-primary, var(--c-primary));
}

body.landing-page .btn-sm {
  background: var(--surface-card, var(--c-surface));
  color: var(--text-primary, var(--c-text));
  border: 1px solid var(--border-default, var(--c-border));
}

body.landing-page .btn-sm.btn-primary,
body.landing-page .landing-header .btn-primary.btn-sm {
  background: var(--brand-primary, var(--c-primary));
  color: #fff;
  border: none;
}

body.landing-page .create-step-num {
  background: var(--surface-sunken, #F5F0E8);
  color: var(--text-muted, var(--c-muted));
}

body.landing-page .create-step--active .create-step-num {
  background: rgba(199, 91, 18, 0.15);
  color: var(--brand-primary, #C75B12);
}

body.landing-page .create-step--done .create-step-num {
  background: rgba(45, 106, 79, 0.15);
  color: var(--brand-secondary, #2D6A4F);
}

body.landing-page .legal-card,
body.legal-page .legal-card {
  color: var(--text-primary, var(--c-text));
}

body.landing-page .legal-card h2,
body.legal-page .legal-card h2 {
  color: var(--brand-primary, var(--c-primary));
  border-bottom-color: var(--border-default, var(--c-border));
}

body.landing-page .legal-card p,
body.legal-page .legal-card p {
  color: var(--text-muted, var(--c-muted));
}

body.landing-page .legal-card a,
body.legal-page .legal-card a {
  color: var(--brand-primary, var(--c-primary));
}

/* QR page (light marketing) */
body.landing-page.qr-page .qr-card {
  background: var(--surface-card);
  border: 1px solid var(--border-default);
  color: var(--text-primary);
}

body.landing-page.qr-page .qr-card h1,
body.landing-page.qr-page .qr-card p {
  color: var(--text-primary);
}

body.landing-page.qr-page .hint {
  color: var(--text-muted);
}

/* ── Player light: kill remaining dark-theme leaks ──────────────────────────── */

body.player-app {
  background: var(--surface-base) !important;
  color: var(--text-primary) !important;
}

body.player-app .play-header {
  background: var(--surface-card) !important;
  border-bottom-color: var(--border-default) !important;
}

body.player-app .welcome-card,
body.player-app .waiting-card,
body.player-app .done-card,
body.player-app .avatar-phase-card,
body.player-app .card {
  background: var(--surface-card) !important;
  border-color: var(--border-default) !important;
  color: var(--text-primary);
}

body.player-app .welcome-card input[type="text"],
body.player-app .welcome-card input {
  background: var(--surface-sunken) !important;
  border: 1px solid var(--border-default) !important;
  color: var(--text-primary) !important;
}

body.player-app .welcome-card input::placeholder {
  color: #78716C;
}

body.player-app .subtitle,
body.player-app .hint,
body.player-app .avatar-phase-desc,
body.player-app .overlay-desc,
body.player-app .progress-text,
body.player-app .quiz-answer-recap {
  color: var(--text-muted) !important;
}

body.player-app .team-label {
  color: var(--brand-primary-text);
}

body.player-app .overlay-card {
  background: var(--surface-card) !important;
  border-color: var(--border-default) !important;
  color: var(--text-primary);
}

body.player-app .overlay-card h2 {
  color: var(--text-primary);
}

body.player-app .close-btn {
  background: var(--surface-sunken);
  border-color: var(--border-default);
  color: var(--text-primary);
}

body.player-app .notice-ok {
  background: rgba(45, 106, 79, 0.12);
  color: #15803D;
}

body.player-app .notice-wait {
  background: rgba(202, 138, 4, 0.12);
  color: #92400E;
}

body.player-app .notice-bad {
  background: rgba(220, 38, 38, 0.1);
  color: #B91C1C;
}

body.player-app .chip {
  background: var(--surface-sunken);
  border-color: var(--border-default);
  color: var(--text-muted);
}

body.player-app .btn-upload-secondary {
  background: var(--surface-card);
  color: var(--text-primary);
  border-color: var(--border-default);
}

body.player-app .media-preview {
  background: var(--surface-sunken);
}

body.player-app .challenge-item {
  background: transparent !important;
  border: none !important;
}

body.player-app .btn-quiz-option {
  background: var(--surface-sunken) !important;
  border-color: var(--border-default) !important;
  color: var(--text-primary) !important;
}

body.player-app .avatar-icon-btn {
  background: var(--surface-sunken) !important;
  border-color: var(--border-default) !important;
}

body.player-app .avatar-optional-block {
  border-top-color: var(--border-default) !important;
}

body.player-app .badge-open,
body.player-app .badge-submitted,
body.player-app .badge-approved,
body.player-app .badge-rejected,
body.player-app .badge-locked {
  /* components.css pills — ensure no dark-theme globals win */
}

/* ── Galerie light ──────────────────────────────────────────────────────────── */

body.galerie-app {
  background: var(--surface-base) !important;
  color: var(--text-primary) !important;
}

body.galerie-app .galerie-kicker,
body.galerie-app .galerie-team {
  color: var(--text-muted);
  opacity: 1;
}

body.galerie-app .galerie-result-pts,
body.galerie-app .galerie-lb-pts,
body.galerie-app .galerie-race-pts,
body.galerie-app .galerie-your-points,
body.galerie-app .galerie-ceremony-pts {
  color: var(--brand-gold-deep, #B8860B) !important;
}

body.galerie-app .galerie-lb-row--self,
body.galerie-app .galerie-race-row--self {
  background: rgba(199, 91, 18, 0.08) !important;
  border-color: var(--brand-primary);
}

body.galerie-app .galerie-media-wrap {
  background: var(--surface-sunken) !important;
}

body.galerie-app .galerie-vote-section h2,
body.galerie-app .galerie-results-section h2,
body.galerie-app .galerie-leaderboard-section h2 {
  color: var(--text-primary);
}

body.galerie-app .galerie-overlay-card {
  background: var(--surface-card);
  color: var(--text-primary);
}

body.galerie-app .galerie-ceremony-overlay {
  background: rgba(28, 25, 23, 0.82);
}

body.galerie-app .galerie-ceremony-name,
body.galerie-app .galerie-ceremony-collage-title {
  color: #FAFAF9;
}

body.galerie-app .shell-card {
  background: var(--surface-card) !important;
  border-color: var(--border-default) !important;
}

/* ── Admin dark: ensure readable text on panels ─────────────────────────────── */

body.admin {
  color: var(--text-primary) !important;
}

body.admin .admin-section,
body.admin .admin-section h2,
body.admin .challenges-section h2,
body.admin .leaderboard-section h2,
body.admin .review-section h2 {
  color: var(--text-primary);
}

body.admin .admin-hint,
body.admin .challenges-edit-hint,
body.admin .eval-hint,
body.admin .score-mode-label {
  color: var(--text-muted);
}

body.admin .leaderboard,
body.admin .review-queue,
body.admin .challenge-editor-card,
body.admin .avatar-editor {
  color: var(--text-primary);
}

body.admin .lb-score {
  color: var(--text-muted);
}

body.admin .review-challenge {
  background: var(--surface-overlay);
  color: var(--text-primary);
}

body.admin .eval-select {
  background: var(--surface-base);
  border-color: var(--border-default);
  color: var(--text-primary);
}

body.admin .admin-access-denied .welcome-card {
  background: var(--surface-elevated);
  color: var(--text-primary);
}

body.admin .admin-access-denied .hint {
  color: var(--text-muted);
}

body.admin .admin-access-denied code {
  color: var(--brand-gold);
}

body.admin .btn-sm {
  background: var(--surface-overlay);
  color: var(--text-primary);
  border: 1px solid var(--border-default);
}

body.admin .queue-count {
  color: var(--brand-gold);
}

body.admin .eval-video-tools-status {
  color: var(--brand-gold) !important;
}

body.admin .badge-eval {
  background: rgba(251, 191, 36, 0.15);
  color: var(--brand-gold);
}

/* ── Support (light shell, same as organizer) ───────────────────────────────── */

body.landing-page .support-table {
  color: var(--text-primary);
}

body.landing-page .support-table th {
  color: var(--text-muted);
}

body.landing-page .support-table code {
  color: var(--brand-primary-text);
}

body.landing-page .support-table td {
  border-color: var(--border-default);
}

/* ── Galerie light rows & bars ──────────────────────────────────────────────── */

body.galerie-app .galerie-result-row,
body.galerie-app .galerie-lb-row {
  background: var(--surface-card);
}

body.galerie-app .galerie-lb-bar-track,
body.galerie-app .galerie-race-bar-track {
  background: var(--surface-sunken);
}

body.galerie-app .galerie-lb-bar-fill,
body.galerie-app .galerie-race-bar-fill {
  background: linear-gradient(90deg, var(--brand-primary, #C75B12), var(--brand-gold-deep, #B8860B)) !important;
}

body.galerie-app .galerie-overlay {
  background: rgba(28, 25, 23, 0.75);
}

/* ── Reduced motion (Handoff §6) ────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
