/* ==========================================================================
   Global variables
   ========================================================================== */

:root {
    --content-max-width: 1400px;
    --text-max-width: 1000px;
    --fuz-padding-side: 2rem;
    --fuz-padding-vertical: 4rem;
    --spacing-xxs: 0.25rem;
    --spacing-xs: 0.5rem;
    --spacing-s: 1rem;
    --spacing-s-2: 1.5rem;
    --spacing-m: 2rem;
    --spacing-l: 2.5rem;
    --spacing-l-2: 3rem;
    --spacing-xl: 4rem;
    --spacing-2xl: 6rem;
    --spacing-3xl: 8rem;
    --spacing-4xl: 10rem;
    --spacing-5xl: 20rem;
    --spacing-6xl: 25rem;
    --radius-none: 0;
    --radius-rounded: 2rem;
    --radius-full: 100rem;
    --font-size-xl: 2.5rem;
    --font-size-l: 2rem;
    --font-size-m: 1.5rem;
}


/* ==========================================================================
   Global reset
   ========================================================================== */

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

html {
    min-height: 100%;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

.fuz-skip-link {
    position: absolute;
    top: 1rem;
    left: 1rem;
    z-index: 1000;
    padding: 0.75rem 1rem;
    background-color: var(--wp--preset--color--surface-primary);
    color: var(--wp--preset--color--text-primary);
    transform: translateY(-200%);
    transition: transform 150ms ease-in-out;
}

.fuz-skip-link:focus,
.fuz-skip-link:focus-visible {
    transform: translateY(0);
    outline: 3px solid currentColor;
    outline-offset: 3px;
}

body {
    min-height: 100vh;
    margin: 0;

    background-color: var(--wp--preset--color--surface-primary);
    overflow-wrap: break-word;
}

main {
    min-height: 100vh;
}

/*
 * Remove default margins and paddings.
 * Spacing is defined deliberately by components and content blocks.
 */
:where(
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    p,
    ul,
    ol,
    dl,
    dd,
    blockquote,
    figure,
    fieldset
) {
    margin: 0;
}

:where(
    ul,
    ol
) {
    padding: 0;
}

/*
 * Lists inside navigation and UI components start without markers.
 */
:where(
    nav ul,
    nav ol,
    [role="list"]
) {
    list-style: none;
}

/*
 * Responsive media.
 */
img,
picture,
video,
canvas,
svg {
    display: block;
    max-width: 100%;
}

img,
picture,
video {
    height: auto;
}

iframe {
    max-width: 100%;
    border: 0;
}

/*
 * Form elements inherit the site's typography.
 */
button,
input,
select,
textarea {
    margin: 0;
    color: inherit;
    font: inherit;
}

button,
select {
    text-transform: none;
}

button,
[type="button"],
[type="reset"],
[type="submit"] {
    appearance: none;
}

textarea {
    resize: vertical;
}

/*
 * Basic element normalization.
 */
a {
    color: inherit;
    font-style: inherit;
    text-decoration: none;
}

address {
    font-style: inherit;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

hr {
    height: 0;
    margin: 0;

    border: 0;
    border-top: 1px solid currentColor;
}

summary {
    cursor: pointer;
}

[hidden] {
    display: none !important;
}


/* Typography */

.fuz-heading-large {
    font-size: 4rem;
    line-height: 4.5rem;
    font-weight: 500;
}

/* Header */

.fuz-site-header {
    padding: var(--spacing-s) var(--spacing-m) 0 var(--spacing-m);
    position: sticky;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1000;
}

.fuz-site-header__inner {
    border-radius: var(--radius-rounded);
    background: var(--wp--preset--color--surface-accent);
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: var(--spacing-s-2) var(--spacing-xl);
}

.fuz-site-header__menu-toggle {
    background: white;
    border-radius: var(--radius-full);
    color: var(--wp--preset--color--surface-accent);
    padding: var(--spacing-xxs) var(--spacing-m);
    border: none;
    display: flex;
    align-items: center;
    gap: var(--spacing-s);
    cursor: pointer;
}

.fuz-site-header__menu-toggle-text {
    font-size: var(--font-size-m);
    line-height: 1.5em;
}

.fuz-menu-toggle__icon {
    display: block;
    width: 1.5rem;
    height: 0.75rem;
    position: relative;
}

.fuz-menu-toggle__bar {
    display: block;
    width: 100%;
    height: 3px;
    background: var(--wp--preset--color--surface-accent);
    border-radius:  var(--radius-full);
    transition: 500ms ease;
}

.fuz-menu-toggle__bar--top {
    position: absolute;
    top: 0; 
    left: 0;
    transform: translateY(0);
} 

.fuz-menu-toggle__bar--bottom {
    position: absolute;
    bottom: 0;
    left: 0;
} 

.fuz-menu-is-open .fuz-menu-toggle__bar--top {
    top: 50%;
    transform: translateY(-50%);
}

.fuz-menu-is-open .fuz-menu-toggle__bar--bottom {
    bottom: 50%;
    transform: translateY(50%);
}

/* Off Canvas */

.fuz-site-offcanvas {
    position: fixed;
    height: 100vh;
    width: 100%;
    right: 0;
    top: 0;
    z-index: 999;
    padding: 140px var(--spacing-m) var(--spacing-m) var(--spacing-m);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(-100%);
    transition: opacity 300ms ease, transform 400ms ease, visibility 0s linear 400ms;
}

.fuz-site-offcanvas.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
    transition: opacity 300ms ease, transform 400ms ease, visibility 0s linear 0s;
}

.fuz-site-offcanvas__panel {
    height: 100%;
    width: 100%;
    background: var(--surface-surface-primary-dark, #FCF2F8);
    border-radius: var(--radius-rounded);
    padding: var(--spacing-4xl);
}

#fuz-offcanvas-menu {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-m);
    width: 100%;
    max-width: var(--content-max-width);
    margin: 0 auto;
    color: var(--wp--preset--color--surface-accent);
    font-size: var(--font-size-xl);
}

.fuz-menu-is-open {
    overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
    .fuz-site-offcanvas {
        transition: opacity 0.01ms linear, visibility 0.01ms linear;
        transform: none;
    }
}

/* Footer */

.site-footer {
    padding: var(--spacing-m) var(--spacing-m) 0 var(--spacing-m);
    color: var(--wp--preset--color--surface-inverted-dark);
    font-size: 1.5rem;
    font-weight: 400;
}

.site-footer__inner {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-2xl);
    background: var(--wp--preset--color--surface-secondary);
    border-radius: var(--radius-rounded) var(--radius-rounded) 0 0;
    padding: var(--spacing-2xl) var(--spacing-3xl);
}

.site-footer__row {
    display: flex;
    flex-direction: row;
    width: 100%;
    max-width: var(--content-max-width);
    margin: 0 auto;
}

.site-footer__col {
    flex-grow: 1;
}

.custom-logo {
    width: 100%;
    max-width: 400px;
}