/* Explain: Base reset and typography defaults. */
* {
    box-sizing: border-box;
}

html {
    background: var(--background-color);
    scroll-behavior: smooth;
}

body {
    overflow-x: hidden;
    font-family: var(--font-body);
    line-height: 1.7;
    color: var(--text-color);
    -webkit-font-smoothing: antialiased;
    background-color: var(--background-color);
    background-image: radial-gradient(rgba(20, 32, 30, 0.05) 1px, transparent 1px);
    background-size: 22px 22px;
}

h1, h2, h3, h4, h5 {
    font-family: var(--font-heading);
    line-height: 1.02;
    letter-spacing: -0.03em;
    font-weight: 800;
}

h1 em, h2 em, h3 em, .tz-display em {
    font-style: italic;
    font-weight: 500;
    color: var(--primary-color);
}

p {
    margin-bottom: 1rem;
}

a {
    transition: color 0.25s ease, opacity 0.25s ease;
}

img {
    display: block;
    max-width: 100%;
}

::selection {
    background: var(--primary-color);
    color: #fff6ea;
}

/* ---- Editorial display type ---- */
.tz-display {
    font-family: var(--font-heading);
    font-weight: 800;
    line-height: 0.94;
    letter-spacing: -0.04em;
}

.tz-mono {
    font-family: var(--font-mono);
}

.tz-stroke-cream {
    -webkit-text-stroke: 2px rgba(246, 234, 214, 0.75);
    color: transparent;
}

.tz-stroke-ink {
    -webkit-text-stroke: 2px var(--ink-color);
    color: transparent;
}

/* ---- Scrolling ticker ---- */
.tz-marquee {
    display: flex;
    width: 100%;
    overflow: hidden;
}

.tz-marquee-track {
    display: flex;
    flex: none;
    min-width: 100%;
    align-items: center;
    gap: 2.5rem;
    padding-right: 2.5rem;
    animation: tzMarquee 32s linear infinite;
}

@keyframes tzMarquee {
    from { transform: translateX(0); }
    to { transform: translateX(-100%); }
}

@media (prefers-reduced-motion: reduce) {
    .tz-marquee-track {
        animation: none;
    }
}