
/**
 * JOY-TEX Shared Action Components
 *
 * Components:
 * - .joy-button
 * - .joy-link
 *
 * Design direction:
 * Technical Editorial / Quiet Precision
 *
 * Scope:
 * Opt-in component classes only.
 * Does not alter Header Contact or ordinary links.
 *
 * @version 1.0.0
 */


/* =========================================================
   01. Shared Foundations
   ========================================================= */

.joy-button,
.joy-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--joy-space-3);

    font-family: inherit;
    font-weight: var(--joy-font-weight-medium);
    line-height: 1.2;
    text-decoration: none;

    cursor: pointer;

    transition:
        color 180ms ease,
        background-color 180ms ease,
        border-color 180ms ease;
}

.joy-button__icon,
.joy-link__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    flex: 0 0 auto;

    width: 1rem;
    height: 1rem;

    transition: transform 180ms ease;
}

.joy-button__icon svg,
.joy-link__icon svg {
    display: block;
    width: 100%;
    height: 100%;
    stroke: currentColor;
    fill: none;
    stroke-width: 1.75;
    stroke-linecap: round;
    stroke-linejoin: round;
}


/* =========================================================
   02. Primary Button
   ========================================================= */

.joy-button {
    min-height: 3rem;

    padding:
        0.75rem
        1.25rem;

    border: 1px solid transparent;
    border-radius: 3px;

    background-color: var(--joy-color-brand);
    color: var(--joy-color-surface);

    font-size: 0.9375rem;
    text-align: center;
    white-space: nowrap;
}

.joy-button:visited {
    color: var(--joy-color-surface);
}

.joy-button:hover {
    background-color: var(--joy-color-accent-red);
    color: var(--joy-color-surface);
}

.joy-button:hover .joy-button__icon,
.joy-button:focus-visible .joy-button__icon {
    transform: translateX(3px);
}

.joy-button:focus-visible {
    outline: 2px solid var(--joy-color-brand);
    outline-offset: 4px;
}


/* =========================================================
   02A. Primary Button — On Dark Background
   ========================================================= */

.joy-button--on-dark,
.joy-button--on-dark:visited {
    background-color: var(--joy-color-accent-yellow);
    color: var(--joy-color-brand);
}

.joy-button--on-dark:hover {
    background-color: var(--joy-color-accent-red);
    color: var(--joy-color-surface);
}

.joy-button--on-dark:focus-visible {
    outline-color: var(--joy-color-accent-yellow);
}


/* =========================================================
   03. Editorial Text Link
   ========================================================= */

.joy-link {
    padding: 0.375rem 0;

    border: 0;
    background: transparent;

    color: var(--joy-color-editorial-secondary);

    font-size: 0.9375rem;
    text-align: left;
}

.joy-link:visited {
    color: var(--joy-color-editorial-secondary);
}

.joy-link:hover {
    color: var(--joy-color-accent-red);
}



.joy-link:hover .joy-link__icon,
.joy-link:focus-visible .joy-link__icon {
    transform: translateX(3px);
}

.joy-link:focus-visible {
    outline: 2px solid var(--joy-color-brand);
    outline-offset: 4px;
}


/* =========================================================
   03A. Primary Editorial Link
   ========================================================= */

.joy-link--primary,
.joy-link--primary:visited {
    color: var(--joy-color-editorial-heading);
}

.joy-link--primary:hover {
    color: var(--joy-color-accent-red);
}



/* =========================================================
   04. Responsive Behavior
   ========================================================= */

@media (max-width: 767px) {

    .joy-button {
        min-height: 3rem;
    }

    .joy-link {
        min-height: 2.75rem;
    }

}


/* =========================================================
   05. Reduced Motion
   ========================================================= */

@media (prefers-reduced-motion: reduce) {

    .joy-button,
    .joy-link,
    .joy-button__icon,
    .joy-link__icon {
        transition: none;
    }

}
