/* Page styles. Every colour, size and gap comes from tokens.css, an exact copy of the
   Milapulse token block (DPN/milapulse-brand tokens/milapulse.css, checked by its
   check-sync.sh). Change a token there, never here. */

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 4.5rem; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
    margin: 0;
    background: var(--bg);
    color: var(--ink);
    font-family: var(--sans);
    font-size: var(--text-body);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3 { font-family: var(--serif); font-weight: var(--weight-bold); line-height: 1.2; margin: 0 0 var(--space-4); }
h1 { font-size: clamp(var(--step-4), 5vw, calc(var(--step-5) * 1.35)); letter-spacing: -.01em; }
h2 { font-size: var(--step-4); }
h3 { font-size: var(--step-2); }
p, ul { margin: 0 0 var(--space-4); }

a { color: var(--accent); text-underline-offset: .18em; }
a:hover { color: var(--accent-hover); }
:focus-visible { outline: var(--focus); outline-offset: 2px; }

.wrap { max-width: var(--wide); margin: 0 auto; padding-inline: var(--space-5); }

.skip { position: absolute; left: -999px; }
.skip:focus { left: var(--space-4); top: var(--space-4); z-index: 10; background: var(--surface); padding: var(--space-2) var(--space-4); border-radius: var(--radius-sm); }

/* header */
.top {
    position: sticky; top: 0; z-index: 5;
    background: color-mix(in srgb, var(--bg) 88%, transparent);
    backdrop-filter: blur(8px);
    border-bottom: 1px solid var(--border);
}
.top__row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); min-height: 3.75rem; flex-wrap: wrap; }
.brand { display: inline-flex; align-items: center; gap: var(--space-2); color: var(--ink); text-decoration: none; font-weight: var(--weight-medium); }
.brand:hover { color: var(--ink); }
.brand b { color: var(--accent); font-weight: var(--weight-bold); }
.brand__mark { width: 1.6rem; height: 1.6rem; color: var(--accent); }
.brand__sub { color: var(--ink-3); font-weight: 400; }
nav { display: flex; gap: var(--space-5); flex-wrap: wrap; }
nav a { color: var(--ink-2); text-decoration: none; font-size: .95rem; }
nav a:hover { color: var(--accent); }

/* hero */
.hero { padding-block: var(--space-10) var(--space-9); }
.hero h1 { max-width: 22ch; }
.eyebrow { color: var(--accent); font-weight: var(--weight-medium); font-size: .9rem; letter-spacing: .04em; text-transform: uppercase; }
.lede { font-size: var(--text-prose); color: var(--ink-2); max-width: var(--measure); }
.cta { display: flex; gap: var(--space-3); flex-wrap: wrap; margin-top: var(--space-6); }

.btn {
    display: inline-block; padding: var(--space-3) var(--space-6);
    border: 1px solid var(--border-field); border-radius: var(--radius-pill);
    color: var(--ink); text-decoration: none; font-weight: var(--weight-medium);
    transition: background var(--dur-fast), border-color var(--dur-fast);
}
.btn:hover { color: var(--ink); background: var(--surface-2); }
.btn--primary { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.btn--primary:hover { background: var(--accent-hover); border-color: var(--accent-hover); color: var(--accent-ink); }

/* sections */
section { padding-block: var(--space-10); }
.band { background: var(--surface-2); border-block: 1px solid var(--border); }
.section-lede { color: var(--ink-2); max-width: var(--measure); margin-bottom: var(--space-7); }

.cards { display: grid; gap: var(--space-5); grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); }
.card {
    background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
    padding: var(--space-6); box-shadow: var(--shadow);
    display: flex; flex-direction: column;
}
.card--feature { grid-column: 1 / -1; border-color: color-mix(in srgb, var(--accent) 40%, var(--border)); }
.card h3 a { color: inherit; }
.card__kicker { color: var(--accent); font-size: .8rem; font-weight: var(--weight-medium); letter-spacing: .06em; text-transform: uppercase; margin-bottom: var(--space-2); }
.card__links { display: flex; gap: var(--space-5); flex-wrap: wrap; margin: auto 0 0; padding-top: var(--space-3); font-weight: var(--weight-medium); }
.facts { padding-left: var(--space-5); color: var(--ink-2); }
.facts li + li { margin-top: var(--space-2); }
.stack { color: var(--ink-3); font-family: var(--mono); font-size: .85rem; }
.tools { color: var(--ink-3); margin-top: var(--space-7); }

.services { display: grid; gap: var(--space-7); grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); margin-top: var(--space-6); }
.services p { color: var(--ink-2); }
.how { margin-top: var(--space-7); padding: var(--space-5) var(--space-6); border-left: 3px solid var(--accent); background: var(--accent-soft); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; max-width: var(--measure); }

.contact { text-align: center; }
.contact .cta { justify-content: center; }
.elsewhere { list-style: none; padding: 0; display: flex; justify-content: center; gap: var(--space-6); flex-wrap: wrap; margin-top: var(--space-6); }

.foot { border-top: 1px solid var(--border); padding-block: var(--space-7); color: var(--ink-3); font-size: .9rem; }
.foot p { margin: 0; }
