/**
 * Builder V8 — Modern CSS Reset
 * Complements Franken UI (UIkit-based) base styles.
 */

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

* {
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

body {
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    color: var(--color-text-primary, #0f172a);
    background-color: var(--color-bg-white, #ffffff);
}

img, picture, video, canvas, svg {
    display: block;
    max-width: 100%;
}

input, button, textarea, select {
    font: inherit;
}

/* Paragraphs may break long unbroken strings (e.g. URLs). */
p {
    overflow-wrap: break-word;
}

/*
 * WP-024 — headings and card titles must NOT break mid-word. The previous
 * shared `break-word` rule split long brand/heading words (e.g. a long
 * business name in a 4-col services grid) at arbitrary character boundaries,
 * which read as the "2005-plain" regression on lead 27. Headings wrap at
 * spaces only; hyphenation is explicitly disabled.
 */
h1, h2, h3, h4, h5, h6,
.uk-card-title,
.v8-card__title {
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading, sans-serif);
    line-height: 1.2;
    color: inherit;
}

a {
    color: var(--color-primary, #2563eb);
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

ul, ol {
    list-style: none;
}

button {
    cursor: pointer;
    border: none;
    background: none;
}

/* Focus visible styles */
:focus-visible {
    outline: 2px solid var(--color-primary, #2563eb);
    outline-offset: 2px;
}

/* Scrollbar (Webkit) */
::-webkit-scrollbar {
    width: 6px;
}

::-webkit-scrollbar-track {
    background: var(--color-bg-alt, #f8fafc);
}

::-webkit-scrollbar-thumb {
    background: var(--color-text-light, #94a3b8);
    border-radius: var(--radius-full, 9999px);
}
