/* ============================================================
   DESIGN TOKENS
   Change colours, spacing, and type here — nowhere else.
   ============================================================ */
:root {
    /* Colours */
    --colour-bg:            #0f0f13;
    --colour-surface:       #1a1a22;
    --colour-surface-alt:   #22222e;
    --colour-border:        #2e2e3e;
    --colour-primary:       #7c6af7;
    --colour-primary-hover: #9381ff;
    --colour-text:          #e8e8f0;
    --colour-text-muted:    #888899;
    --colour-error:         #f87171;
    --colour-success:       #4ade80;

    /* Typography */
    --font-sans: 'Inter', system-ui, -apple-system, sans-serif;
    --font-mono: 'JetBrains Mono', 'Fira Code', monospace;

    --text-xs:   0.75rem;
    --text-sm:   0.875rem;
    --text-base: 1rem;
    --text-lg:   1.125rem;
    --text-xl:   1.25rem;
    --text-2xl:  1.5rem;
    --text-3xl:  1.875rem;
    --text-4xl:  2.25rem;
    --text-5xl:  3rem;

    --weight-normal:   400;
    --weight-medium:   500;
    --weight-semibold: 600;
    --weight-bold:     700;

    /* Spacing (4px base grid) */
    --space-1:  0.25rem;
    --space-2:  0.5rem;
    --space-3:  0.75rem;
    --space-4:  1rem;
    --space-5:  1.25rem;
    --space-6:  1.5rem;
    --space-8:  2rem;
    --space-10: 2.5rem;
    --space-12: 3rem;
    --space-16: 4rem;
    --space-20: 5rem;
    --space-24: 6rem;

    /* Radii */
    --radius-sm: 4px;
    --radius-md: 8px;
    --radius-lg: 12px;
    --radius-xl: 16px;

    /* Shadows */
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
    --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
    --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.6);
}

/* ============================================================
   RESET & BASE
   ============================================================ */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    font-size: 16px;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    font-family: var(--font-sans);
    background-color: var(--colour-bg);
    color: var(--colour-text);
    line-height: 1.6;
    min-height: 100vh;
}

a {
    color: var(--colour-primary);
    text-decoration: none;
}

a:hover {
    color: var(--colour-primary-hover);
}

/* ============================================================
   SHARED BUTTON STYLES
   .btn is shared — lives in global so all pages can use it.
   ============================================================ */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-2) var(--space-5);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    font-family: var(--font-sans);
    cursor: pointer;
    border: none;
    transition: background 0.15s, color 0.15s, border-color 0.15s, opacity 0.15s;
    white-space: nowrap;
    text-decoration: none;
}

.btn--primary {
    background: var(--colour-primary);
    color: #fff;
}

.btn--primary:hover {
    background: var(--colour-primary-hover);
    color: #fff;
}

.btn--outline {
    background: transparent;
    border: 1px solid var(--colour-border);
    color: var(--colour-text);
}

.btn--outline:hover {
    border-color: var(--colour-primary);
    color: var(--colour-primary);
}

.btn--large {
    padding: var(--space-3) var(--space-8);
    font-size: var(--text-base);
}

.btn--full {
    width: 100%;
}

.btn:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}
