

.collapse:not(.show) { display: none; }

.collapsing {
    position: relative;
    height: 0;
    overflow: hidden;
    transition: height 0.35s ease;
}

@media (prefers-reduced-motion: reduce) {
    .collapsing { transition: none; }
}

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

.fl-screen-reader-text {
    position: absolute;
    inset-inline-start: -10000px;
    top: auto;
    width: 1px;
    height: 1px;
    padding: 10px 15px;
    overflow: hidden;
    background-color: var(--surface);
    color: var(--text);
}

.fl-screen-reader-text:focus {
    position: fixed;
    inset-inline-start: 0;
    top: 0;
    z-index: 99999;
    width: auto;
    height: auto;
    outline: 2px solid var(--brand);
    outline-offset: -2px;
}

body.admin-bar .fl-screen-reader-text:focus { top: 46px; }

@media screen and (min-width: 783px) {
    body.admin-bar .fl-screen-reader-text:focus { top: 32px; }
}

html { font-size: 100%; }

body {
    font-family: var(--font-body);
    font-size: var(--p-size);
    line-height: 1.6;
    color: var(--text);
    background-color: var(--surface);
}

.fl-page { overflow-x: hidden; }
.fl-page-content { background-color: var(--surface); }

.fl-builder .container.fl-content-full {
    width: auto;
    max-width: 100%;
    margin: 0;
    padding: 0;
}

.fl-builder .container.fl-content-full > .row { margin: 0; }
.fl-builder .container.fl-content-full .fl-content { margin: 0; padding: 0; }

h1, h2, h3, h4, h5, h6 {
    margin-top: 0;
    margin-bottom: 1rem;
    font-family: var(--font-display);
    font-weight: 400;
    line-height: 1.2;
}

h1 em, h2 em, h3 em, h4 em, h5 em, h6 em {
    font-style: italic;
    color: var(--accent-dark);
}

h1 { font-size: clamp(2rem, 1.2rem + 2vw, 3.125rem); color: var(--text); }
h2 { font-size: clamp(1.75rem, 1rem + 1.6vw, 2.75rem); color: var(--text); }
h3 { font-size: clamp(1.375rem, 0.9rem + 1.2vw, 1.875rem); color: var(--text); }
h4 { font-size: clamp(1.125rem, 0.9rem + 0.6vw, 1.5rem); }
h5 { font-size: clamp(1rem, 0.9rem + 0.4vw, 1.25rem); }
h6 { font-size: clamp(0.875rem, 0.8rem + 0.3vw, 1.125rem); }

a { color: var(--accent); text-decoration: none; transition: var(--transition-base); }
a:hover, a:focus { color: var(--accent-hover); text-decoration: underline; }

li::marker { color: var(--accent-dark); }

img {
    max-width: 100%;
    height: auto;
}

:where(.fl-builder-content, .fl-page)
  :is(a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])):focus:not(:focus-visible) {
    outline: none;
}

:where(.fl-builder-content, .fl-page)
  :is(a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])):focus-visible {
    outline-color: var(--brand);
}

.btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 0.9rem 2rem;
    border: 2px solid transparent;
    border-radius: var(--card-border-radius, 4px);
    font-weight: 600;
    font-size: 0.9375rem;
    line-height: 1.4;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: var(--transition-base);
}

.btn:hover, .btn:focus { text-decoration: none; }

.btn:focus-visible {
    outline: 2px solid var(--brand);
    outline-offset: 2px;
}

.btn-primary { background-color: var(--accent); border-color: var(--accent); color: var(--on-accent); }
.btn-primary:hover, .btn-primary:focus { background-color: var(--accent-hover); border-color: var(--accent-hover); color: var(--on-accent); }

.btn-navy { background-color: var(--brand-dark); border-color: var(--brand-dark); color: var(--white); }
.btn-navy:hover, .btn-navy:focus { background-color: var(--brand); border-color: var(--brand); color: var(--white); }

.btn-outline-primary { background-color: transparent; border-color: var(--brand); color: var(--brand); }
.btn-outline-primary:hover, .btn-outline-primary:focus { background-color: var(--brand); color: var(--white); }

.btn-outline-neutral { background-color: transparent; border-color: var(--border-strong); color: var(--black); }
.btn-outline-neutral:hover, .btn-outline-neutral:focus { background-color: var(--black); border-color: var(--black); color: var(--white); }

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

input[type="text"], input[type="email"], input[type="tel"],
input[type="url"], input[type="password"], input[type="search"],
select, textarea {
    border: 1px solid var(--border-strong);
    border-radius: var(--card-border-radius, 4px);
    background-color: var(--surface);
    color: var(--text);
}

input:focus-visible, select:focus-visible, textarea:focus-visible {
    outline: 2px solid var(--brand);
    outline-offset: 1px;
    border-color: var(--brand);
}

.text-primary {
    color: var(--brand);
}

.text-accent {
    color: var(--accent);
}

