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

body {
    margin: 0;
    /* viewport-fit=cover: keep landscape notch insets horizontally (0 elsewhere). */
    padding-inline: env(safe-area-inset-left, 0px) env(safe-area-inset-right, 0px);
    background: var(--dc-bg-page);
    color: var(--dc-text-primary);
    font-family: var(--dc-font-text);
    font-size: var(--dc-size-body);
    line-height: var(--dc-lh-body);
    -webkit-font-smoothing: antialiased;
    /* Blocksy / WooCommerce controls without a theme rule follow the shared radius standard (FORM-RADIUS-01). */
    --theme-form-field-border-radius: var(--dc-radius-control);
    --theme-form-border-radius: var(--dc-radius-control);
    --theme-button-border-radius: var(--dc-radius-button);
    --theme-form-checkbox-border-radius: var(--dc-radius-checkbox);
}

/* Every heading level uses the display font (h5/h6 included; Blocksy would otherwise apply its text font). */
h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: var(--dc-font-display);
}

h1,
h2,
h3,
h4 {
    margin: 0;
    color: var(--dc-text-primary);
}

h1 {
    font-size: var(--dc-size-h1);
    line-height: var(--dc-lh-h1);
    letter-spacing: var(--dc-ls-h1);
    font-weight: var(--dc-weight-extrabold);
}

h2 {
    font-size: var(--dc-size-h2);
    line-height: var(--dc-lh-h2);
    letter-spacing: var(--dc-ls-h2);
    font-weight: var(--dc-weight-bold);
}

h3 {
    font-size: var(--dc-size-h3);
    line-height: var(--dc-lh-h3);
    font-weight: var(--dc-weight-bold);
}

p {
    margin: 0;
}

a {
    color: var(--dc-text-link);
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

.dc-caption,
.dc-column-title,
.dc-label-eyebrow {
    margin: 0;
    font-size: var(--dc-size-caption);
    letter-spacing: var(--dc-ls-caption);
    text-transform: uppercase;
    color: var(--dc-text-secondary);
    font-weight: var(--dc-weight-semibold);
}

.dc-caption {
    line-height: var(--dc-lh-caption);
}

.dc-radius-sm {
    border-radius: var(--dc-radius-sm);
}

.dc-column-title--on-dark {
    color: var(--dc-lima);
}

.dc-num {
    font-variant-numeric: var(--dc-numeric-tabular);
}

input:focus,
select:focus,
textarea:focus {
    outline: none;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
    outline: none;
    box-shadow: var(--dc-ring-focus);
    border-color: var(--dc-musgo);
}

.screen-reader-text {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

.dc-skip-link {
    position: absolute;
    left: var(--dc-space-4);
    top: var(--dc-space-4);
    z-index: 100000;
    padding: var(--dc-space-2) var(--dc-space-4);
    background: var(--dc-bg-surface);
    color: var(--dc-text-primary);
    border-radius: var(--dc-radius-input);
    box-shadow: var(--dc-shadow-1);
    transform: translateY(-200%);
    transition: transform var(--dc-transition);
}

.dc-skip-link:focus,
.dc-skip-link:focus-visible {
    transform: translateY(0);
}

.dc-main-target:focus {
    outline: none;
}

/* Container API (CNT-01): fluid content, max --dc-container, gutter 16px mobile / 24px from 768px. */
.dc-container {
    width: 100%;
    max-width: none;
    margin-inline: auto;
    padding-inline: max(var(--dc-gutter-mobile), calc((100% - var(--dc-container)) / 2));
}

.dc-container--fluid {
    padding-inline: var(--dc-gutter-mobile);
}

.dc-container--narrow {
    padding-inline: max(var(--dc-gutter-mobile), calc((100% - var(--dc-container-narrow)) / 2));
}

/* Breakpoint utilities (guía §8) — pair with --dc-bp-* tokens in assets/css/foundations/tokens.css */
.dc-bp-sm-up,
.dc-bp-md-up,
.dc-bp-lg-up,
.dc-bp-xl-up {
    display: none;
}

@media (min-width: 480px) {
    .dc-bp-sm-up {
        display: block;
    }

    body {
        font-size: var(--dc-size-body);
    }
}

@media (min-width: 768px) {
    .dc-bp-md-up {
        display: block;
    }
}

@media (min-width: 1024px) {
    .dc-bp-lg-up {
        display: block;
    }
}

@media (min-width: 1200px) {
    .dc-bp-xl-up {
        display: block;
    }
}

@media (min-width: 768px) {
    .dc-container {
        padding-inline: max(var(--dc-gutter), calc((100% - var(--dc-container)) / 2));
    }

    .dc-container--fluid {
        padding-inline: var(--dc-gutter);
    }

    .dc-container--narrow {
        padding-inline: max(var(--dc-gutter), calc((100% - var(--dc-container-narrow)) / 2));
    }
}
