/* =====================================================================
   SIINAP — Sistemas Informáticos de Agua Prieta
   Sistema de diseño · siinap.com
   Paleta derivada del logotipo: tinta marino + papel crema
   ===================================================================== */

/* ---------------------------------------------------------------
   1. Tokens
   --------------------------------------------------------------- */
:root {
    color-scheme: light;

    /* Tinta (azul marino del logotipo) */
    --ink: #0B2239;
    --ink-2: #123A5E;
    --ink-3: #2C5170;
    --muted: #5C7288;
    --muted-2: #7A8CA0;

    /* Papel (crema del logotipo) */
    --paper: #F6F1E5;
    --paper-hi: #FFFDF6;
    --paper-lo: #EDE5D3;

    /* Líneas */
    --line: #DCD2BC;
    --line-2: #C7B99C;

    /* Acento — barro sonorense */
    --accent: #C0522A;
    --accent-hi: #E08B3C;
    --accent-soft: #F3E2D5;
    --live: #1B7A57;

    /* Tipografía */
    --display: "Space Grotesk", "Segoe UI", system-ui, sans-serif;
    --sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    --mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

    /* Métrica */
    --maxw: 1280px;
    --gutter: clamp(20px, 5vw, 56px);
    --section: clamp(68px, 8.5vw, 124px);
    --r-xs: 6px;
    --r-sm: 10px;
    --r: 16px;
    --r-lg: 24px;

    --nav-h: 78px;
}

/* ---------------------------------------------------------------
   2. Reset y base
   --------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html {
    -webkit-text-size-adjust: 100%;
    scroll-behavior: smooth;
    scroll-padding-top: calc(var(--nav-h) + 24px);
}

body {
    margin: 0;
    background: var(--paper);
    color: var(--ink);
    font-family: var(--sans);
    font-size: 17px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
}

img, svg { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; }

h1, h2, h3, h4 {
    font-family: var(--display);
    font-weight: 700;
    letter-spacing: -0.025em;
    line-height: 1.16;
    margin: 0;
    text-wrap: balance;
}

p { margin: 0; text-wrap: pretty; }

::selection { background: var(--ink); color: var(--paper-hi); }

:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 3px;
    border-radius: 4px;
}

.skip-link {
    position: absolute;
    left: -9999px;
    top: 10px;
    z-index: 200;
    background: var(--ink);
    color: var(--paper-hi);
    padding: 12px 20px;
    border-radius: var(--r-sm);
    font-family: var(--mono);
    font-size: 13px;
}
.skip-link:focus { left: 16px; }

.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;
}

/* ---------------------------------------------------------------
   3. Utilidades de composición
   --------------------------------------------------------------- */
.wrap {
    width: 100%;
    max-width: var(--maxw);
    margin-inline: auto;
    padding-inline: var(--gutter);
}

.section { padding-block: var(--section); position: relative; }

.band-ink {
    background: var(--ink);
    color: #DFE7EE;
    --line: rgba(255,255,255,.13);
    --line-2: rgba(255,255,255,.22);
    --paper-hi: rgba(255,255,255,.035);
    --muted: #93A7B9;
    --ink: #FFFDF6;
}

.band-lo { background: var(--paper-lo); }

/* Encabezado de sección numerado */
.shead {
    display: flex;
    align-items: baseline;
    gap: 20px;
    margin-bottom: 54px;
    padding-bottom: 22px;
    border-bottom: 1px solid var(--line);
}
.shead__num {
    font-family: var(--mono);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: .14em;
    color: var(--accent);
    flex: none;
    padding-top: 4px;
}
.shead__txt { flex: 1 1 auto; min-width: 0; }
.shead h2 {
    font-size: clamp(28px, 4.2vw, 46px);
    margin-bottom: 14px;
}
.shead p {
    color: var(--muted);
    font-size: clamp(15px, 1.6vw, 18px);
    max-width: 62ch;
}

/* Etiqueta mono */
.eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    font-family: var(--mono);
    font-size: 11.5px;
    font-weight: 500;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--muted);
}
.eyebrow::before {
    content: "";
    width: 22px; height: 1px;
    background: var(--accent);
    flex: none;
}

.dot-live {
    width: 7px; height: 7px;
    border-radius: 50%;
    background: var(--live);
    flex: none;
    box-shadow: 0 0 0 0 rgba(27,122,87,.55);
    animation: pulse 2.6s ease-out infinite;
}
@keyframes pulse {
    0%   { box-shadow: 0 0 0 0 rgba(27,122,87,.5); }
    70%  { box-shadow: 0 0 0 8px rgba(27,122,87,0); }
    100% { box-shadow: 0 0 0 0 rgba(27,122,87,0); }
}

/* ---------------------------------------------------------------
   4. Botones
   --------------------------------------------------------------- */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 14px 24px;
    border-radius: var(--r-sm);
    border: 1px solid transparent;
    font-family: var(--sans);
    font-weight: 600;
    font-size: 15.5px;
    letter-spacing: -0.01em;
    cursor: pointer;
    transition: transform .18s ease, background-color .18s ease, border-color .18s ease, color .18s ease;
    white-space: nowrap;
}
.btn:hover { transform: translateY(-2px); }
.btn:active { transform: translateY(0); }
.btn svg { width: 18px; height: 18px; flex: none; }

.btn--primary { background: var(--ink); color: var(--paper-hi); }
.btn--primary:hover { background: var(--ink-2); }

.btn--accent { background: var(--accent); color: #FFF8F3; }
.btn--accent:hover { background: #A8451F; }

.btn--ghost {
    background: transparent;
    color: var(--ink);
    border-color: var(--line-2);
}
.btn--ghost:hover { border-color: var(--ink); background: var(--paper-hi); }

.btn--wa { background: #1EA65A; color: #fff; }
.btn--wa:hover { background: #178A4A; }

.btn--sm { padding: 10px 16px; font-size: 14px; }

/* Enlace con flecha */
.arrow-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--mono);
    font-size: 12.5px;
    font-weight: 500;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--accent);
}
.arrow-link svg { width: 15px; height: 15px; transition: transform .2s ease; }
.arrow-link:hover svg { transform: translateX(4px); }

/* ---------------------------------------------------------------
   5. Barra de navegación
   --------------------------------------------------------------- */
.nav {
    position: sticky;
    top: 0;
    z-index: 100;
    height: var(--nav-h);
    background: rgba(246,241,229,.82);
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    border-bottom: 1px solid transparent;
    transition: border-color .25s ease, background-color .25s ease;
}
.nav.is-stuck {
    border-bottom-color: var(--line);
    background: rgba(246,241,229,.94);
}
.nav__in {
    height: 100%;
    display: flex;
    align-items: center;
    gap: 36px;
}
.brand {
    display: flex;
    align-items: center;
    gap: 11px;
    flex: none;
    margin-right: auto;
}
.brand img { width: 34px; height: 34px; object-fit: contain; }
.brand__name {
    font-family: var(--display);
    font-weight: 700;
    font-size: 20px;
    letter-spacing: -0.03em;
    line-height: 1;
}
.brand__sub {
    display: block;
    font-family: var(--mono);
    font-size: 9.5px;
    font-weight: 400;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--muted);
    margin-top: 3px;
}
.nav__links {
    display: flex;
    align-items: center;
    gap: 8px;
}
.nav__links a:not(.btn) {
    padding: 10px 14px;
    border-radius: var(--r-xs);
    font-size: 15px;
    font-weight: 500;
    color: var(--ink-3);
    transition: color .16s ease, background-color .16s ease;
}
/* El CTA del menú es solo para móvil; en escritorio manda el de .nav__cta */
.nav__links .btn { display: none; }
.nav__links a:not(.btn):hover { color: var(--ink); background: rgba(11,34,57,.06); }

.nav__cta { display: flex; align-items: center; gap: 12px; flex: none; }

.nav__toggle {
    display: none;
    width: 42px; height: 42px;
    align-items: center; justify-content: center;
    background: transparent;
    border: 1px solid var(--line-2);
    border-radius: var(--r-xs);
    cursor: pointer;
}
.nav__toggle svg { width: 20px; height: 20px; }

@media (max-width: 1024px) {
    .nav__links {
        position: fixed;
        inset: var(--nav-h) 0 auto 0;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        background: var(--paper);
        border-bottom: 1px solid var(--line);
        padding: 10px var(--gutter) 22px;
        transform: translateY(-140%);
        transition: transform .32s cubic-bezier(.4,0,.2,1);
        box-shadow: 0 24px 40px -28px rgba(11,34,57,.4);
    }
    .nav__links.is-open { transform: translateY(0); }
    .nav__links a:not(.btn) {
        padding: 15px 4px;
        font-size: 17px;
        border-bottom: 1px solid var(--line);
    }
    .nav__links .btn { display: inline-flex; margin-top: 18px; }
    .nav__toggle { display: inline-flex; }
    .nav__cta .btn { display: none; }
}

/* ---------------------------------------------------------------
   6. Hero
   --------------------------------------------------------------- */
.hero {
    position: relative;
    padding-block: clamp(60px, 7.5vw, 112px) clamp(56px, 6.5vw, 100px);
    overflow: hidden;
}
.hero__grid-bg {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(var(--line) 1px, transparent 1px),
        linear-gradient(90deg, var(--line) 1px, transparent 1px);
    background-size: 68px 68px;
    background-position: center top;
    -webkit-mask-image: radial-gradient(ellipse 90% 62% at 50% 6%, #000 12%, transparent 76%);
    mask-image: radial-gradient(ellipse 90% 62% at 50% 6%, #000 12%, transparent 76%);
    opacity: .75;
}
.hero__in {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1.14fr) minmax(0, .86fr);
    gap: clamp(36px, 5vw, 64px);
    align-items: center;
}
.hero h1 {
    font-size: clamp(36px, 5vw, 56px);
    line-height: 1.12;
    margin: 28px 0 0;
}
.hero h1 .lede-2 {
    display: block;
    color: var(--accent);
}
.hero__p {
    margin-top: 26px;
    font-size: clamp(16.5px, 1.9vw, 19.5px);
    color: var(--ink-3);
    max-width: 54ch;
    line-height: 1.62;
}
.hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 38px;
}
.hero__trust {
    margin-top: 42px;
    padding-top: 26px;
    border-top: 1px solid var(--line);
    display: flex;
    flex-wrap: wrap;
    gap: 10px 26px;
}
.hero__trust li {
    display: flex;
    align-items: center;
    gap: 8px;
    font-family: var(--mono);
    font-size: 12px;
    letter-spacing: .04em;
    color: var(--muted);
}
.hero__trust svg { width: 14px; height: 14px; color: var(--accent); flex: none; }
ul.hero__trust { list-style: none; margin: 42px 0 0; padding: 0; }

@media (max-width: 900px) {
    .hero__in { grid-template-columns: 1fr; }
}

/* Panel de diagrama */
.panel {
    background: var(--paper-hi);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    overflow: hidden;
    box-shadow: 0 30px 60px -44px rgba(11,34,57,.45);
}
.panel__bar {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    border-bottom: 1px solid var(--line);
    background: var(--paper);
}
.panel__dots { display: flex; gap: 6px; }
.panel__dots i {
    width: 9px; height: 9px;
    border-radius: 50%;
    background: var(--line-2);
    display: block;
}
.panel__title {
    font-family: var(--mono);
    font-size: 11.5px;
    letter-spacing: .09em;
    color: var(--muted);
    text-transform: uppercase;
}
.panel__body { padding: 26px 22px; }
.panel__foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 16px;
    border-top: 1px solid var(--line);
    background: var(--paper);
    font-family: var(--mono);
    font-size: 11px;
    letter-spacing: .06em;
    color: var(--muted);
    text-transform: uppercase;
}
.panel__foot span { display: flex; align-items: center; gap: 7px; }

/* SVG del diagrama */
.diagram { width: 100%; height: auto; }
.diagram .node {
    fill: var(--paper);
    stroke: var(--line-2);
    stroke-width: 1;
}
.diagram .hub { fill: var(--ink); stroke: none; }
.diagram .wire { fill: none; stroke: var(--line-2); stroke-width: 1.2; }
.diagram .wire-flow {
    fill: none;
    stroke: var(--accent);
    stroke-width: 1.6;
    stroke-dasharray: 5 9;
    animation: flow 2.6s linear infinite;
}
@keyframes flow { to { stroke-dashoffset: -28; } }
.diagram .lbl {
    font-family: var(--mono);
    font-size: 16px;
    font-weight: 500;
    fill: var(--ink-2);
    letter-spacing: .01em;
}
.diagram .hub-lbl {
    font-family: var(--display);
    font-size: 22px;
    font-weight: 700;
    fill: var(--paper-hi);
    letter-spacing: -0.02em;
}
.diagram .hub-sub {
    font-family: var(--mono);
    font-size: 11px;
    fill: rgba(255,253,246,.6);
    letter-spacing: .12em;
}
/* El SVG se reduce en pantallas chicas: compensamos el tamaño de texto */
@media (max-width: 700px) {
    .diagram .lbl { font-size: 19px; }
    .diagram .hub-lbl { font-size: 26px; }
    .diagram .hub-sub { font-size: 13px; }
}
.diagram .pin { fill: var(--accent); }

/* ---------------------------------------------------------------
   7. Marquesina de tecnologías
   --------------------------------------------------------------- */
.marquee {
    border-block: 1px solid var(--line);
    background: var(--paper-lo);
    overflow: hidden;
    padding-block: 16px;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.marquee__track {
    display: flex;
    width: max-content;
    animation: slide 42s linear infinite;
}
.marquee:hover .marquee__track { animation-play-state: paused; }
@keyframes slide { to { transform: translateX(-50%); } }
.marquee__set { display: flex; align-items: center; }
.marquee__set span {
    font-family: var(--mono);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: .05em;
    color: var(--ink-3);
    padding-inline: 26px;
    border-right: 1px solid var(--line-2);
    white-space: nowrap;
}

/* ---------------------------------------------------------------
   8. Rejilla de hairlines (tarjetas compartiendo bordes)
   --------------------------------------------------------------- */
.hgrid {
    display: grid;
    gap: 1px;
    background: var(--line);
    border: 1px solid var(--line);
    border-radius: var(--r);
    overflow: hidden;
}
.hgrid > * { background: var(--paper-hi); }
.hgrid--3 { grid-template-columns: repeat(3, 1fr); }
.hgrid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 900px) { .hgrid--3, .hgrid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .hgrid--3, .hgrid--4 { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------
   9. Cifras / indicadores
   --------------------------------------------------------------- */
.stat { padding: 34px clamp(22px, 2.4vw, 32px); }
.stat__n {
    font-family: var(--display);
    font-size: clamp(34px, 4.6vw, 50px);
    font-weight: 700;
    letter-spacing: -0.045em;
    line-height: 1;
    color: var(--ink);
}
.stat__n em {
    font-style: normal;
    color: var(--accent);
}
.stat__l {
    margin-top: 12px;
    font-family: var(--mono);
    font-size: 11.5px;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--muted);
    line-height: 1.5;
}

/* ---------------------------------------------------------------
   10. Plataformas (productos SaaS)
   --------------------------------------------------------------- */
.plats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
    gap: 24px;
}
.plat {
    position: relative;
    display: flex;
    flex-direction: column;
    background: var(--paper-hi);
    border: 1px solid var(--line);
    border-radius: var(--r);
    padding: 30px 30px 26px;
    transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease;
    overflow: hidden;
}
.plat::before {
    content: "";
    position: absolute;
    inset: 0 0 auto 0;
    height: 3px;
    background: var(--p-accent, var(--accent));
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .32s cubic-bezier(.4,0,.2,1);
}
.plat:hover {
    transform: translateY(-4px);
    border-color: var(--line-2);
    box-shadow: 0 26px 44px -34px rgba(11,34,57,.5);
}
.plat:hover::before { transform: scaleX(1); }

.plat__top {
    display: flex;
    align-items: center;
    gap: 13px;
    margin-bottom: 16px;
}
.plat__mark {
    width: 42px; height: 42px;
    border-radius: 11px;
    display: grid;
    place-items: center;
    background: var(--p-soft, var(--accent-soft));
    color: var(--p-accent, var(--accent));
    flex: none;
}
.plat__mark svg { width: 21px; height: 21px; }
.plat__name {
    font-family: var(--display);
    font-size: 21px;
    font-weight: 700;
    letter-spacing: -0.025em;
}
.plat__host {
    font-family: var(--mono);
    font-size: 11px;
    color: var(--muted);
    letter-spacing: .04em;
    margin-top: 2px;
    display: block;
}
.plat__desc {
    color: var(--ink-3);
    font-size: 15.5px;
    line-height: 1.6;
}
.plat__tags {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin: 18px 0 0;
    padding: 0;
}
.plat__tags li {
    font-family: var(--mono);
    font-size: 11px;
    letter-spacing: .03em;
    color: var(--ink-3);
    background: var(--paper-lo);
    border: 1px solid var(--line);
    border-radius: 100px;
    padding: 4px 11px;
}
.plat__foot {
    margin-top: auto;
    padding-top: 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.plat__badge {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-family: var(--mono);
    font-size: 10.5px;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--live);
}

/* ---------------------------------------------------------------
   11. Servicios / capacidades
   --------------------------------------------------------------- */
.cap {
    padding: 36px clamp(24px, 2.6vw, 34px) 38px;
    transition: background-color .22s ease;
}
.cap:hover { background: var(--paper); }
.cap__i {
    width: 40px; height: 40px;
    display: grid; place-items: center;
    border: 1px solid var(--line-2);
    border-radius: 11px;
    color: var(--accent);
    margin-bottom: 20px;
}
.cap__i svg { width: 20px; height: 20px; }
.cap h3 {
    font-size: 19px;
    margin-bottom: 10px;
}
.cap p {
    color: var(--muted);
    font-size: 15px;
    line-height: 1.62;
}
.band-ink .cap p { color: #9FB2C4; }
.band-ink .cap:hover { background: rgba(255,255,255,.04); }
.band-ink .cap__i { color: var(--accent-hi); }

/* ---------------------------------------------------------------
   12. Proceso
   --------------------------------------------------------------- */
.steps {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1px;
    background: var(--line);
    border-block: 1px solid var(--line);
}
@media (max-width: 860px) { .steps { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .steps { grid-template-columns: 1fr; } }
.step {
    background: var(--ink);
    padding: 36px clamp(22px, 2.2vw, 30px) 40px;
    position: relative;
}
.step__n {
    font-family: var(--mono);
    font-size: 11.5px;
    letter-spacing: .16em;
    color: var(--accent-hi);
    margin-bottom: 18px;
    display: block;
}
.step h3 { font-size: 19px; margin-bottom: 10px; color: #FFFDF6; }
.step p { font-size: 14.8px; color: #9FB2C4; line-height: 1.6; }

/* ---------------------------------------------------------------
   13. Sectores
   --------------------------------------------------------------- */
.sectors {
    list-style: none;
    margin: 0; padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: 12px;
}
.sectors li {
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 17px 19px;
    background: var(--paper-hi);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    font-weight: 500;
    font-size: 15.5px;
    transition: border-color .2s ease, transform .2s ease;
}
.sectors li:hover { border-color: var(--accent); transform: translateY(-2px); }
.sectors svg { width: 19px; height: 19px; color: var(--accent); flex: none; }

/* ---------------------------------------------------------------
   14. Confianza / dos columnas
   --------------------------------------------------------------- */
.split {
    display: grid;
    grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
    gap: clamp(32px, 5vw, 72px);
    align-items: start;
}
@media (max-width: 900px) { .split { grid-template-columns: 1fr; } }

.checklist { list-style: none; margin: 0; padding: 0; display: grid; gap: 1px; background: var(--line); border-block: 1px solid var(--line); }
.checklist li {
    background: var(--paper-hi);
    display: flex;
    gap: 16px;
    padding: 22px 4px;
}
.checklist__i {
    width: 26px; height: 26px;
    border-radius: 50%;
    background: var(--accent-soft);
    color: var(--accent);
    display: grid; place-items: center;
    flex: none;
    margin-top: 2px;
}
.checklist__i svg { width: 14px; height: 14px; }
.checklist h3 { font-size: 17px; margin-bottom: 6px; }
.checklist p { color: var(--muted); font-size: 15px; line-height: 1.6; }

/* ---------------------------------------------------------------
   15. FAQ
   --------------------------------------------------------------- */
.faq { border-top: 1px solid var(--line); }
.faq details {
    border-bottom: 1px solid var(--line);
}
.faq summary {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    padding: 24px 0;
    cursor: pointer;
    list-style: none;
    font-family: var(--display);
    font-weight: 600;
    font-size: clamp(17px, 2vw, 20px);
    letter-spacing: -0.02em;
    transition: color .18s ease;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary:hover { color: var(--accent); }
.faq summary::after {
    content: "";
    margin-left: auto;
    flex: none;
    width: 13px; height: 13px;
    margin-top: 7px;
    border-right: 1.8px solid var(--accent);
    border-bottom: 1.8px solid var(--accent);
    transform: rotate(45deg);
    transition: transform .25s ease;
}
.faq details[open] summary::after { transform: rotate(-135deg); }
.faq__a {
    padding: 0 46px 26px 0;
    color: var(--ink-3);
    font-size: 16px;
    line-height: 1.68;
    max-width: 78ch;
}

/* ---------------------------------------------------------------
   16. Contacto
   --------------------------------------------------------------- */
.contact {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
    gap: clamp(32px, 4.5vw, 60px);
    align-items: start;
}
@media (max-width: 900px) { .contact { grid-template-columns: 1fr; } }

.contact__list { list-style: none; margin: 34px 0 0; padding: 0; display: grid; gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; }
.contact__list li { background: var(--paper-hi); }
.contact__row {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 18px 20px;
    transition: background-color .18s ease;
}
a.contact__row:hover { background: var(--paper); }
.contact__ico {
    width: 38px; height: 38px;
    border-radius: 10px;
    display: grid; place-items: center;
    background: var(--paper-lo);
    color: var(--accent);
    flex: none;
}
.contact__ico svg { width: 18px; height: 18px; }
.contact__k {
    font-family: var(--mono);
    font-size: 10.5px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--muted);
    display: block;
    margin-bottom: 3px;
}
.contact__v { font-weight: 600; font-size: 15.5px; letter-spacing: -0.01em; }

.form {
    background: var(--paper-hi);
    border: 1px solid var(--line);
    border-radius: var(--r);
    padding: clamp(24px, 3vw, 34px);
}
.form h3 { font-size: 21px; margin-bottom: 6px; }
.form__hint { color: var(--muted); font-size: 14.5px; margin-bottom: 24px; }
.field { margin-bottom: 16px; }
.field label {
    display: block;
    font-family: var(--mono);
    font-size: 10.5px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: 7px;
}
.field input, .field select, .field textarea {
    width: 100%;
    font-family: var(--sans);
    font-size: 15.5px;
    color: var(--ink);
    background: var(--paper);
    border: 1px solid var(--line-2);
    border-radius: var(--r-sm);
    padding: 12px 14px;
    transition: border-color .18s ease, background-color .18s ease;
}
.field textarea { resize: vertical; min-height: 104px; line-height: 1.55; }
.field input:focus, .field select:focus, .field textarea:focus {
    outline: none;
    border-color: var(--ink);
    background: var(--paper-hi);
}
.field select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235C7288' stroke-width='2.2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    background-size: 17px;
    padding-right: 40px;
}
.form .btn { width: 100%; margin-top: 6px; }
.form__alt {
    margin-top: 16px;
    text-align: center;
    font-size: 13.5px;
    color: var(--muted);
}
.form__alt a { color: var(--accent); font-weight: 600; }
.form__alt a:hover { text-decoration: underline; }

/* ---------------------------------------------------------------
   17. Llamado final
   --------------------------------------------------------------- */
.cta {
    position: relative;
    text-align: center;
    overflow: hidden;
}
.cta__bg {
    position: absolute; inset: 0; pointer-events: none;
    background-image:
        linear-gradient(rgba(255,255,255,.07) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.07) 1px, transparent 1px);
    background-size: 62px 62px;
    -webkit-mask-image: radial-gradient(ellipse 70% 80% at 50% 50%, #000, transparent 72%);
    mask-image: radial-gradient(ellipse 70% 80% at 50% 50%, #000, transparent 72%);
}
.cta__in { position: relative; }
.cta h2 {
    font-size: clamp(30px, 5vw, 54px);
    color: #FFFDF6;
    margin: 18px auto 18px;
    max-width: 18ch;
}
.cta p {
    color: #A9BCCC;
    font-size: clamp(16px, 1.8vw, 19px);
    max-width: 56ch;
    margin-inline: auto;
}
.cta__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    justify-content: center;
    margin-top: 34px;
}
.cta .btn--ghost { color: #FFFDF6; border-color: rgba(255,255,255,.28); }
.cta .btn--ghost:hover { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.5); }

/* ---------------------------------------------------------------
   18. Pie de página
   --------------------------------------------------------------- */
.foot {
    background: var(--paper-lo);
    border-top: 1px solid var(--line);
    padding-block: clamp(48px, 6vw, 72px) 28px;
}
.foot__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr));
    gap: clamp(28px, 4vw, 52px);
}
@media (max-width: 860px) { .foot__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .foot__grid { grid-template-columns: 1fr; } }

.foot__about p {
    margin-top: 16px;
    color: var(--ink-3);
    font-size: 15px;
    line-height: 1.65;
    max-width: 44ch;
}
.foot__legal-name {
    margin-top: 14px;
    font-family: var(--mono);
    font-size: 12px;
    line-height: 1.6;
    color: var(--muted);
    letter-spacing: .02em;
}
.foot h3 {
    font-family: var(--mono);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: 16px;
}
.foot ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.foot ul a {
    font-size: 15px;
    color: var(--ink-3);
    transition: color .16s ease;
}
.foot ul a:hover { color: var(--accent); }
.foot__bar {
    margin-top: clamp(38px, 5vw, 56px);
    padding-top: 22px;
    border-top: 1px solid var(--line);
    display: flex;
    flex-wrap: wrap;
    gap: 12px 26px;
    align-items: center;
    justify-content: space-between;
    font-family: var(--mono);
    font-size: 11.5px;
    letter-spacing: .04em;
    color: var(--muted);
}
.foot__bar a:hover { color: var(--accent); }

/* ---------------------------------------------------------------
   19. Botón flotante de WhatsApp
   --------------------------------------------------------------- */
.wa-float {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 90;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 13px 18px 13px 15px;
    background: #1EA65A;
    color: #fff;
    border-radius: 100px;
    font-weight: 600;
    font-size: 14.5px;
    box-shadow: 0 14px 30px -12px rgba(30,166,90,.7);
    transform: translateY(120%);
    transition: transform .38s cubic-bezier(.4,0,.2,1), background-color .2s ease;
}
.wa-float.is-in { transform: translateY(0); }
.wa-float:hover { background: #178A4A; }
.wa-float svg { width: 22px; height: 22px; flex: none; }
@media (max-width: 560px) {
    .wa-float__t { display: none; }
    .wa-float { padding: 15px; }
}

/* ---------------------------------------------------------------
   20. Contenido legal (aviso de privacidad)
   --------------------------------------------------------------- */
.prose { max-width: 76ch; }
.prose h2 {
    font-size: clamp(22px, 3vw, 30px);
    margin: 46px 0 14px;
}
.prose h2:first-child { margin-top: 0; }
.prose p, .prose li {
    color: var(--ink-3);
    font-size: 16.5px;
    line-height: 1.72;
}
.prose p { margin-bottom: 16px; }
.prose ul { padding-left: 22px; margin: 0 0 16px; display: grid; gap: 9px; }
.prose a { color: var(--accent); font-weight: 600; }
.prose a:hover { text-decoration: underline; }
.prose strong { color: var(--ink); font-weight: 600; }

.page-head {
    border-bottom: 1px solid var(--line);
    padding-block: clamp(44px, 5vw, 72px) clamp(28px, 3.5vw, 44px);
}
.page-head h1 { font-size: clamp(32px, 5vw, 52px); margin-top: 18px; }
.page-head p { color: var(--muted); margin-top: 14px; font-family: var(--mono); font-size: 12.5px; letter-spacing: .06em; }

/* ---------------------------------------------------------------
   21. Animación de entrada
   --------------------------------------------------------------- */
/* Solo ocultamos de entrada si hay JS para volver a mostrarlo.
   Sin JS (o si el script falla), el contenido se ve siempre. */
.js .reveal {
    opacity: 0;
    transform: translateY(14px);
    transition: opacity .55s cubic-bezier(.22,.61,.36,1), transform .55s cubic-bezier(.22,.61,.36,1);
}
.reveal.is-in { opacity: 1; transform: none; }
.reveal.d1 { transition-delay: .07s; }
.reveal.d2 { transition-delay: .14s; }
.reveal.d3 { transition-delay: .21s; }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
    }
    .js .reveal { opacity: 1; transform: none; }
    .wa-float { transform: none; }
}

@media print {
    .nav, .wa-float, .marquee, .cta { display: none !important; }
    body { background: #fff; }
}
