/*
 * WORLD CUP 2026 DESIGN SYSTEM
 * Foundation v40
 *
 * Scope:
 * - canonical color, spacing, radius, shadow and motion tokens
 * - backwards-compatible aliases for the existing interface
 * - reset, accessibility and reusable wc-* primitives
 *
 * Page-specific layouts remain in style.css, groups.css, bracket.css and team.css.
 */

:root {
    color-scheme: light;

    /* Canonical palette */
    --wc-bg: #eef3fb;
    --wc-bg-raised: #f7f9ff;
    --wc-surface: rgba(255, 255, 255, 0.86);
    --wc-surface-solid: #ffffff;
    --wc-surface-strong: rgba(255, 255, 255, 0.96);
    --wc-border: rgba(148, 163, 184, 0.28);
    --wc-text: #07111f;
    --wc-text-muted: #667085;
    --wc-title: #0d2b68;
    --wc-primary: #1d4ed8;
    --wc-accent: #f97316;
    --wc-danger: #dc2626;
    --wc-warning: #facc15;
    --wc-success: #16a34a;

    /* Pitch/data colors */
    --wc-pitch-line: rgba(29, 78, 216, 0.075);
    --wc-pitch-center: rgba(29, 78, 216, 0.06);
    --wc-score-gradient: linear-gradient(135deg, #07111f, #1d4ed8);

    /* Typography */
    --wc-font-sans: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
    --wc-font-size-xs: 0.75rem;
    --wc-font-size-sm: 0.875rem;
    --wc-font-size-md: 1rem;
    --wc-font-size-lg: 1.125rem;
    --wc-line-tight: 1.15;
    --wc-line-normal: 1.5;

    /* Spacing scale */
    --wc-space-1: 0.25rem;
    --wc-space-2: 0.5rem;
    --wc-space-3: 0.75rem;
    --wc-space-4: 1rem;
    --wc-space-5: 1.25rem;
    --wc-space-6: 1.5rem;
    --wc-space-8: 2rem;
    --wc-space-10: 2.5rem;
    --wc-space-12: 3rem;

    /* Shape */
    --wc-radius-sm: 0.625rem;
    --wc-radius-md: 1rem;
    --wc-radius-lg: 1.375rem;
    --wc-radius-xl: 1.75rem;
    --wc-radius-pill: 999px;

    /* Elevation */
    --wc-shadow-sm: 0 10px 25px rgba(15, 23, 42, 0.08);
    --wc-shadow-md: 0 18px 45px rgba(15, 23, 42, 0.10);
    --wc-shadow-focus: 0 0 0 4px rgba(29, 78, 216, 0.22);

    /* Layout */
    --wc-container: 1140px;
    --wc-gutter: 18px;
    --wc-header-z: 80;
    --wc-overlay-z: 1000;

    /* Motion */
    --wc-ease: cubic-bezier(.2, .8, .2, 1);
    --wc-duration-fast: 160ms;
    --wc-duration-normal: 250ms;

    /* Compatibility aliases used by the current production CSS */
    --bg: var(--wc-bg);
    --bg-2: var(--wc-bg-raised);
    --surface: var(--wc-surface);
    --surface-solid: var(--wc-surface-solid);
    --surface-strong: var(--wc-surface-strong);
    --border: var(--wc-border);
    --text: var(--wc-text);
    --muted: var(--wc-text-muted);
    --title: var(--wc-title);
    --blue: var(--wc-primary);
    --orange: var(--wc-accent);
    --red: var(--wc-danger);
    --yellow: var(--wc-warning);
    --green: var(--wc-success);
    --pitch-line: var(--wc-pitch-line);
    --pitch-center: var(--wc-pitch-center);
    --shadow: var(--wc-shadow-md);
    --soft-shadow: var(--wc-shadow-sm);
    --score: var(--wc-score-gradient);
}

html[data-theme="dark"] {
    color-scheme: dark;
    --wc-bg: #060b16;
    --wc-bg-raised: #0f172a;
    --wc-surface: rgba(15, 23, 42, 0.82);
    --wc-surface-solid: #111827;
    --wc-surface-strong: rgba(15, 23, 42, 0.94);
    --wc-border: rgba(148, 163, 184, 0.22);
    --wc-text: #f8fafc;
    --wc-text-muted: #cbd5e1;
    --wc-title: #facc15;
    --wc-pitch-line: rgba(250, 204, 21, 0.085);
    --wc-pitch-center: rgba(249, 115, 22, 0.06);
    --wc-score-gradient: linear-gradient(135deg, #f97316, #dc2626);
    --wc-shadow-sm: 0 10px 25px rgba(0, 0, 0, 0.28);
    --wc-shadow-md: 0 18px 45px rgba(0, 0, 0, 0.35);
    --wc-shadow-focus: 0 0 0 4px rgba(250, 204, 21, 0.24);
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    min-width: 320px;
    scroll-behavior: smooth;
    text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%;
    scrollbar-gutter: stable;
}

body {
    min-height: 100vh;
    margin: 0;
    font-family: var(--wc-font-sans);
    color: var(--text);
    background:
        radial-gradient(circle at 10% 0%, rgba(249, 115, 22, 0.18), transparent 30%),
        radial-gradient(circle at 90% 0%, rgba(37, 99, 235, 0.18), transparent 30%),
        linear-gradient(180deg, var(--bg), var(--bg-2));
    transition:
        background var(--wc-duration-normal) var(--wc-ease),
        color var(--wc-duration-normal) var(--wc-ease);
}

button,
input,
select,
textarea {
    font: inherit;
}

button,
[role="button"] {
    -webkit-tap-highlight-color: transparent;
}

a {
    color: inherit;
}

img,
svg {
    vertical-align: middle;
}

[hidden] {
    display: none !important;
}

.container {
    width: 100%;
    max-width: var(--wc-container);
    margin-inline: auto;
    padding-inline: var(--wc-gutter);
}

.wc-page {
    min-height: 100vh;
    overflow-x: clip;
}

.wc-sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

:where(a, button, input, select, textarea, [tabindex]):focus-visible {
    outline: 2px solid var(--wc-primary);
    outline-offset: 3px;
    box-shadow: var(--wc-shadow-focus);
}

/* Reusable primitives for the next UI phases. Existing markup is not forced to use them yet. */
.wc-panel {
    border: 1px solid var(--border);
    border-radius: var(--wc-radius-lg);
    background: var(--surface);
    box-shadow: var(--soft-shadow);
}

.wc-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--wc-space-2);
    min-height: 42px;
    padding: 0 var(--wc-space-4);
    border: 1px solid var(--border);
    border-radius: var(--wc-radius-pill);
    background: var(--surface);
    color: var(--text);
    text-decoration: none;
    font-weight: 900;
    cursor: pointer;
    transition:
        transform var(--wc-duration-fast) var(--wc-ease),
        filter var(--wc-duration-fast) var(--wc-ease),
        border-color var(--wc-duration-fast) var(--wc-ease);
}

.wc-btn:hover {
    transform: translateY(-1px);
    filter: brightness(1.05);
}

.wc-btn--primary {
    border-color: transparent;
    color: #fff;
    background: linear-gradient(135deg, var(--wc-primary), #0ea5e9);
}

.wc-btn--accent {
    border-color: transparent;
    color: #fff;
    background: linear-gradient(135deg, var(--wc-accent), var(--wc-danger));
}

.wc-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--wc-space-1);
    min-height: 24px;
    padding: 4px 9px;
    border: 1px solid var(--border);
    border-radius: var(--wc-radius-pill);
    background: var(--surface);
    color: var(--text-muted);
    font-size: var(--wc-font-size-xs);
    font-weight: 900;
}

.wc-badge--live {
    border-color: rgba(220, 38, 38, 0.36);
    background: rgba(220, 38, 38, 0.14);
    color: #ef4444;
}

.wc-stack {
    display: grid;
    gap: var(--wc-space-4);
}

.wc-cluster {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--wc-space-3);
}

@media (max-width: 760px) {
    :root {
        --wc-gutter: 12px;
    }

    .wc-page {
        padding-bottom: env(safe-area-inset-bottom, 0px);
    }
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}
