@font-face {
    font-family: 'Optima';
    src: url('fonts/optima.woff2') format('woff2'),
         url('fonts/optima.woff') format('woff');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'FontAwesome';
    src: url('fonts/fontawesome-webfont.eot?v=4.7.0');
    src: url('fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),
         url('fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),
         url('fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),
         url('fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),
         url('fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

:root {
    --font-size-base: clamp(1.4rem, 0.95rem + 0.25vw, 1.15rem);
    --font-size-h1: clamp(1.8rem, 1.2rem + 2.4vw, 2.8rem);
    --font-size-h2: clamp(1.5rem, 1.1rem + 1.8vw, 2rem);
    --font-size-h3: clamp(1.3rem, 1rem + 1.2vw, 1.6rem);
    --font-size-h4: clamp(1.15rem, 0.95rem + 0.9vw, 1.35rem);
    --font-size-h5: clamp(1.05rem, 0.9rem + 0.6vw, 1.2rem);
    --font-size-h6: clamp(1rem, 0.85rem + 0.5vw, 1.1rem);
    --font-size-small: clamp(0.8rem, 0.75rem + 0.2vw, 0.9rem);
    --font-size-code: clamp(0.85rem, 0.8rem + 0.2vw, 1rem);
    --font-size-blockquote: clamp(1.05rem, 0.95rem + 0.4vw, 1.25rem);
    --line-height-base: 1.6;
    --line-height-heading: 1.2;
    --margin-heading: 0.75em 0 0.5em;
    --margin-paragraph: 0 0 1em;
}

body,
p,
span,
div,
li,
a,
td,
th,
label,
input,
textarea,
select,
button {
    font-family: 'Optima', 'FontAwesome', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
}

p {
    color: #000;
    line-height: var(--line-height-base);
    font-size: var(--font-size-base);
    margin-top: 1.2rem;
    margin-bottom: 1.2rem;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: 'Optima', Arial, sans-serif;
    color: #000;
    font-weight: 400;
    line-height: var(--line-height-heading);
}

h1 {
    font-size: var(--font-size-h1);
    padding: 0rem 2rem;
}

h2 {
    font-size: var(--font-size-h2);
    margin-bottom: 3rem;
    text-align: center;
}

h3 {
    font-size: var(--font-size-h3);
    margin-bottom: 1rem;
}

h4 {
    font-size: var(--font-size-h4);
    font-weight: 500;
}

h5 {
    font-size: var(--font-size-h5);
    font-weight: 500;
}

h6 {
    font-size: var(--font-size-h6);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

a {
    color: #0056b3;
    font-size: var(--font-size-base);
    line-height: var(--line-height-base);
    text-decoration: none;
    transition: color 0.2s ease, opacity 0.2s ease;
}

a:hover,
a:focus {
    color: #003d80;
    text-decoration: underline;
}

ul,
ol {
    font-size: var(--font-size-base);
    line-height: var(--line-height-base);
    color: #000;
    margin: var(--margin-paragraph);
    padding-left: 1.5em;
}

li {
    margin-bottom: 0.35em;
}

blockquote {
    font-size: var(--font-size-blockquote);
    line-height: var(--line-height-base);
    color: #333;
    border-left: 4px solid #ccc;
    margin: 1.5em 0;
    padding: 0.5em 1.25em;
    font-style: italic;
}

code,
kbd,
pre,
samp {
    font-family: 'Courier New', Consolas, Monaco, monospace;
    font-size: var(--font-size-code);
    color: #c7254e;
    background-color: #f9f2f4;
    border-radius: 4px;
}

code {
    padding: 0.15em 0.4em;
}

pre {
    display: block;
    padding: 1em;
    margin: 1em 0;
    overflow-x: auto;
    line-height: 1.45;
    background-color: #f5f5f5;
    color: #333;
    border: 1px solid #e1e1e1;
    border-radius: 6px;
}

pre code {
    padding: 0;
    color: inherit;
    background: transparent;
}

small,
.small {
    font-size: var(--font-size-small);
    color: #555;
}

strong,
b {
    font-weight: 700;
}

em,
i {
    font-style: italic;
}

mark {
    background-color: #fff3cd;
    color: #000;
    padding: 0.1em 0.2em;
    border-radius: 3px;
}

abbr[title] {
    text-decoration: underline dotted;
    cursor: help;
}

hr {
    border: none;
    border-top: 1px solid #ddd;
    margin: 2em 0;
}

table {
    font-size: var(--font-size-base);
    line-height: var(--line-height-base);
    border-collapse: collapse;
    width: 100%;
    margin: var(--margin-paragraph);
}

th,
td {
    padding: 0.6em 0.8em;
    border: 1px solid #ddd;
    text-align: left;
}

th {
    font-weight: 600;
    background-color: #f5f5f5;
}

label {
    font-size: var(--font-size-base);
    color: #000;
    line-height: var(--line-height-base);
}

input,
textarea,
select,
button {
    font-size: var(--font-size-base);
    line-height: var(--line-height-base);
}

figcaption,
caption,
legend {
    font-size: var(--font-size-small);
    color: #555;
    line-height: var(--line-height-base);
}

@media (max-width: 768px) {
    :root {
        --font-size-h1: clamp(1.6rem, 1.1rem + 2vw, 2.2rem);
        --font-size-h2: clamp(1.35rem, 1rem + 1.5vw, 1.75rem);
        --font-size-h3: clamp(1.15rem, 0.95rem + 1vw, 1.4rem);
    }

    h1 {
        padding: 0.5rem;
    }
}