/*
 * Saint Louis Hospital — Design System
 * Source of truth for design tokens and reusable component classes.
 * See: docs/superpowers/specs/2026-05-16-css-design-system-design.md
 */

/* ============================================================
   DESIGN TOKENS
   ============================================================ */
:root {
    /*
     * Naming convention:
     *   --sl-*       = brand/semantic tokens scoped to this project (colors, fonts, surfaces)
     *   --space-*, --text-*, --radius-*, --shadow-*, --z-*, --transition-*, --container-*
     *                = generic scale tokens (no project prefix)
     * When adding a new token, follow this split.
     */

    /* --- Brand colors --- */
    --sl-blue:        #0F4C81;
    --sl-blue-dark:   #09345D;
    --sl-blue-light:  #2D5FA8;
    --sl-blue-xlight: #E8F0FE;
    --sl-gold:        #B79C62;
    --sl-gold-dark:   #9A8042;

    /* --- Semantic text --- */
    --sl-text-dark:   #1A1A1A;   /* near-black; used by hospital-styles.php for select headings */
    --sl-text-body:   #333333;
    --sl-text-gray:   #555555;
    --sl-text-light:  #888888;
    --sl-text-white:  #FFFFFF;

    /* --- Backgrounds --- */
    --sl-bg-white:    #FFFFFF;
    --sl-bg-light:    #F4F7F9;
    --sl-bg-section:  #F8F9FA;

    /* --- UI --- */
    --sl-border:      #E0E0E0;
    --sl-error:       #D32F2F;
    --sl-success:     #2E7D32;
    --sl-warning:     #F57C00;
    --sl-info:        #0288D1;

    /* --- Spacing (4px base; --space-N = 4×N px) --- */
    --space-1:  4px;
    --space-2:  8px;
    --space-3:  12px;
    --space-4:  16px;
    --space-5:  20px;
    --space-6:  24px;
    --space-8:  32px;
    --space-10: 40px;
    --space-12: 48px;
    --space-16: 64px;
    --space-20: 80px;
    --space-24: 96px;

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

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

    --leading-tight:   1.25;
    --leading-normal:  1.5;
    --leading-relaxed: 1.75;

    --sl-font-family: 'dbHeaventRegular', 'dbHeavent', sans-serif;

    /* --- Radius --- */
    --radius-sm:   4px;
    --radius-md:   8px;
    --radius-lg:   12px;
    --radius-xl:   16px;
    --radius-2xl:  24px;
    --radius-full: 9999px;

    /* --- Shadows --- */
    --shadow-sm:   0 1px 3px rgba(0,0,0,0.08);
    --shadow-md:   0 4px 16px rgba(0,0,0,0.10);
    --shadow-lg:   0 8px 32px rgba(0,0,0,0.14);
    --shadow-xl:   0 16px 48px rgba(0,0,0,0.16);
    --shadow-blue: 0 4px 20px rgba(15,76,129,0.20);
    --shadow-gold: 0 4px 20px rgba(183,156,98,0.35);

    /* --- Layout --- */
    --container-max:     1200px;
    --container-wide:    1400px;
    --container-narrow:  800px;
    --container-padding: 20px;

    /* --- Z-index --- */
    --z-base:     0;
    --z-raised:   10;
    --z-dropdown: 100;
    --z-sticky:   200;
    --z-overlay:  300;
    --z-modal:    400;
    --z-toast:    500;

    /* --- Transitions --- */
    --transition-fast: 150ms ease;
    --transition-base: 250ms ease;
    --transition-slow: 400ms ease;

    /* --- LEGACY aliases: do not use in new code. Removed once no file references them. --- */
    --primary-blue:       var(--sl-blue);
    --primary-blue-dark:  var(--sl-blue-dark);
    --primary-blue-light: var(--sl-blue-light);
    --accent-gold:        var(--sl-gold);
    --text-dark:          var(--sl-text-body);
    --text-light:         var(--sl-text-gray);
    --bg-light:           var(--sl-bg-section);
    --bg-white:           var(--sl-bg-white);
    --border-color:       var(--sl-border);
}

/* ============================================================
   LAYOUT PRIMITIVES
   ============================================================ */
.sl-container {
    max-width: var(--container-max);
    margin-inline: auto;
    padding-inline: var(--container-padding);
}
.sl-container--wide   { max-width: var(--container-wide); }
.sl-container--narrow { max-width: var(--container-narrow); }

.sl-section    { padding-block: var(--space-16); }
.sl-section--sm { padding-block: var(--space-10); }

.sl-stack {
    display: flex;
    flex-direction: column;
    gap: var(--sl-stack-gap, var(--space-4));
}

/* ============================================================
   BUTTONS
   ============================================================ */
.sl-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-8);
    border-radius: var(--radius-full);
    font-family: var(--sl-font-family);
    font-size: var(--text-base);
    font-weight: var(--font-semibold);
    line-height: var(--leading-normal);
    border: 2px solid transparent;
    text-decoration: none;
    cursor: pointer;
    transition: background var(--transition-base),
                color var(--transition-base),
                border-color var(--transition-base),
                box-shadow var(--transition-base),
                transform var(--transition-fast);
    white-space: nowrap;
}
.sl-btn:hover  { transform: translateY(-2px); }
.sl-btn:active { transform: translateY(0); }

.sl-btn--primary { background: var(--sl-blue);  color: var(--sl-text-white); border-color: var(--sl-blue); }
.sl-btn--primary:hover { background: var(--sl-blue-dark); border-color: var(--sl-blue-dark); box-shadow: var(--shadow-blue); }

.sl-btn--outline { background: transparent; color: var(--sl-blue); border-color: var(--sl-blue); }
.sl-btn--outline:hover { background: var(--sl-blue); color: var(--sl-text-white); box-shadow: var(--shadow-blue); }

.sl-btn--ghost   { background: transparent; color: var(--sl-blue); border-color: transparent; }
.sl-btn--ghost:hover { background: var(--sl-blue-xlight); color: var(--sl-blue-dark); }

.sl-btn--gold    { background: var(--sl-gold); color: var(--sl-text-white); border-color: var(--sl-gold); }
.sl-btn--gold:hover { background: var(--sl-gold-dark); border-color: var(--sl-gold-dark); box-shadow: var(--shadow-gold); }

.sl-btn--sm { padding: var(--space-2) var(--space-5); font-size: var(--text-sm); }
.sl-btn--lg { padding: var(--space-4) var(--space-12); font-size: var(--text-lg); }

/* ============================================================
   CARDS
   ============================================================ */
.sl-card {
    background: var(--sl-bg-white);
    border: 1px solid var(--sl-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    padding: var(--space-6);
}
.sl-card--hover {
    transition: box-shadow var(--transition-base), transform var(--transition-base);
}
.sl-card--hover:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-4px);
}
.sl-card--media {
    padding: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.sl-card--media > img {
    width: 100%;
    height: 240px;
    object-fit: cover;
}
.sl-card--media > .sl-card__body {
    padding: var(--space-6);
}

/* ============================================================
   PILLS
   ============================================================ */
.sl-pill {
    display: inline-flex;
    align-items: center;
    padding: var(--space-2) var(--space-4);
    border: 1px solid var(--sl-gold);
    border-radius: var(--radius-full);
    background: transparent;
    color: var(--sl-gold);
    font-family: var(--sl-font-family);
    font-size: var(--text-lg);
    line-height: 1;
}
.sl-pill--filled { background: var(--sl-gold); color: var(--sl-text-white); }

/* ============================================================
   HEADINGS
   ============================================================ */
.sl-heading {
    font-family: var(--sl-font-family);
    color: var(--sl-blue);
    font-weight: var(--font-bold);
    line-height: var(--leading-tight);
}
.sl-heading--md { font-size: var(--text-2xl); }
.sl-heading--lg { font-size: var(--text-3xl); }
.sl-heading--xl { font-size: var(--text-4xl); }
.sl-heading--underline {
    display: inline-block;
    padding-bottom: 0.15em;
    background-repeat: no-repeat;
    background-position: 0 100%;
    background-size: 100% 4px;
    background-image: linear-gradient(
        to right,
        var(--sl-blue) 0,
        var(--sl-blue) 69.85%,
        var(--sl-gold) 69.85%,
        var(--sl-gold) 100%
    );
}

/* ============================================================
   UTILITIES
   ============================================================ */
.sl-sr-only,
.sl-visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
    border: 0;
}
