/* Presentación comercial de Folveon (versiones A y B).
   Diseño a 390 × 844 px (el PDF). Todas las medidas van en "px de diseño": calc(N * var(--px)).
   --px vale 1px a 390 de ancho y se achica si la pantalla es más angosta o más baja, así
   cada pantalla entra entera sin estirarse. */

@font-face {
    font-family: "Manrope";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/manrope-latin-400-normal.woff2") format("woff2");
}

@font-face {
    font-family: "Manrope";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("../fonts/manrope-latin-500-normal.woff2") format("woff2");
}

@font-face {
    font-family: "Manrope";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url("../fonts/manrope-latin-700-normal.woff2") format("woff2");
}

@font-face {
    font-family: "Sora";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url("../fonts/sora-latin-700-normal.woff2") format("woff2");
}

@font-face {
    font-family: "Sora";
    font-style: normal;
    font-weight: 800;
    font-display: swap;
    src: url("../fonts/sora-latin-800-normal.woff2") format("woff2");
}

:root {
    color-scheme: dark;
    --bg: #071120;
    --bg-deep: #050c18;
    --card: #0f172a;
    --line: rgba(148, 163, 184, 0.18);
    --text: #e2e8f0;
    --title: #f8fafc;
    --muted: #94a3b8;
    --brand: #2dd4bf;
    --brand-light: #5eead4;
    --brand-dark: #14b8a6;
    --amber: #fbbf24;
    --glow: rgba(20, 184, 166, 0.2);
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    height: 100%;
    background: var(--bg);
}

body {
    color: var(--text);
    font-family: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
    font-weight: 400;
    -webkit-font-smoothing: antialiased;
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    overflow: hidden;
}

img {
    display: block;
    max-width: 100%;
}

h1,
h2,
h3,
p,
figure,
ul {
    margin: 0;
}

ul {
    padding: 0;
    list-style: none;
}

/* ---------- Escenario y marco ---------- */

.stage {
    height: 100vh;
    height: 100dvh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.device {
    position: relative;
    width: 100%;
    height: 100%;
    container-type: size;
    overflow: hidden;
    background: var(--bg);
}

.track {
    --px: clamp(0.86px, min(0.2564vw, 0.1429vh), 1.1px);
    display: flex;
    width: 100%;
    height: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    outline: none;
}

@supports (width: 1cqw) {
    .track {
        --px: clamp(0.86px, min(0.2564cqw, 0.1429cqh), 1.1px);
    }
}

.track::-webkit-scrollbar {
    display: none;
}

/* Botones de la compu (en el celu se desliza con el dedo) */
.nav {
    display: none;
}

@media (min-width: 640px) and (min-height: 560px) {
    .stage {
        gap: 28px;
        padding: 32px 16px;
        background:
            radial-gradient(60% 50% at 50% 0%, rgba(20, 184, 166, 0.1), transparent 70%),
            var(--bg-deep);
    }

    .device {
        width: min(390px, 100%);
        height: min(844px, 100%);
        flex: 0 0 auto;
        border: 1px solid var(--line);
        border-radius: 36px;
        box-shadow:
            0 30px 90px rgba(0, 0, 0, 0.55),
            0 0 0 10px rgba(15, 23, 42, 0.55);
    }

    .nav {
        display: grid;
        place-items: center;
        flex: 0 0 auto;
        width: 48px;
        height: 48px;
        padding: 0;
        border: 1px solid var(--line);
        border-radius: 50%;
        background: var(--card);
        color: var(--text);
        cursor: pointer;
        transition: border-color 0.2s, color 0.2s, opacity 0.2s;
    }

    .nav:hover:not(:disabled) {
        border-color: rgba(45, 212, 191, 0.55);
        color: var(--brand-light);
    }

    .nav:focus-visible {
        outline: 2px solid var(--brand-light);
        outline-offset: 3px;
    }

    .nav:disabled {
        opacity: 0.3;
        cursor: default;
    }

    .nav svg {
        width: 20px;
        height: 20px;
    }
}

/* ---------- Pantalla ---------- */

.slide {
    position: relative;
    flex: 0 0 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    padding:
        max(calc(84 * var(--px)), calc(env(safe-area-inset-top) + 64 * var(--px)))
        calc(28 * var(--px))
        max(calc(36 * var(--px)), calc(env(safe-area-inset-bottom) + 20 * var(--px)));
    overflow-x: hidden;
    overflow-y: auto;
    scrollbar-width: none;
    scroll-snap-align: start;
    scroll-snap-stop: always;
    background-color: var(--bg);
    background-repeat: no-repeat;
}

.slide::-webkit-scrollbar {
    display: none;
}

.slide--hero {
    padding-top: max(calc(43 * var(--px)), calc(env(safe-area-inset-top) + 24 * var(--px)));
}

.glow-tl {
    background-image: radial-gradient(110% 55% at 0% 0%, var(--glow), transparent 70%);
}

.glow-tr {
    background-image: radial-gradient(110% 55% at 100% 0%, var(--glow), transparent 70%);
}

.glow-top {
    background-image: radial-gradient(120% 50% at 50% 0%, var(--glow), transparent 72%);
}

.glow-br {
    background-image: radial-gradient(110% 50% at 100% 100%, var(--glow), transparent 70%);
}

.count {
    position: absolute;
    top: max(calc(44 * var(--px)), calc(env(safe-area-inset-top) + 24 * var(--px)));
    right: calc(28 * var(--px));
    color: var(--muted);
    font-size: calc(13.5 * var(--px));
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.02em;
}

/* Contenido centrado en el alto que queda libre */
.center {
    margin-block: auto;
}

.stack {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

/* ---------- Tipografía ---------- */

.eyebrow {
    margin-bottom: calc(8 * var(--px));
    color: var(--brand-light);
    font-size: calc(14 * var(--px));
    font-weight: 700;
    line-height: 1.4;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

.title {
    color: var(--title);
    font-family: "Sora", "Manrope", sans-serif;
    font-weight: 800;
    letter-spacing: -0.04em;
}

.title--xl {
    font-size: calc(48 * var(--px));
    line-height: 1.03;
}

.title--l {
    font-size: calc(40 * var(--px));
    line-height: 1.05;
}

.title--m {
    font-size: calc(35 * var(--px));
    line-height: 1.09;
}

.title--s {
    font-size: calc(32 * var(--px));
    line-height: 1.07;
}

.accent {
    color: var(--brand-light);
}

.accent--block {
    display: block;
}

.text-muted {
    color: var(--muted);
}

/* ---------- Logo y mascota ---------- */

.logo {
    align-self: flex-start;
    width: auto;
    height: calc(46 * var(--px));
}

.mascot {
    width: calc(var(--size) * var(--px));
    height: calc(var(--size) * var(--px));
    flex: 0 0 auto;
}

.slide__foot {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    margin-top: calc(16 * var(--px));
}

.mascot--top {
    align-self: flex-start;
    /* sube a la altura del contador y corre el aire transparente del archivo
       para que el zorro quede alineado con el texto */
    margin: calc(-44 * var(--px)) 0 calc(4 * var(--px)) calc(var(--size) * -0.31 * var(--px));
}

/* Pantallas con la mascota arriba: el contenido queda centrado respecto de toda la
   pantalla. Abajo va un bloque vacío (.spacer) del mismo alto que la mascota. */
.slide--balanced {
    padding-bottom: max(calc(84 * var(--px)), calc(env(safe-area-inset-bottom) + 20 * var(--px)));
}

/* Bloque vacío que empuja el contenido hacia arriba; se achica primero si falta lugar */
.spacer {
    flex: 0 1 calc(var(--h) * var(--px));
    min-height: 0;
}

.hint {
    margin-bottom: calc(12 * var(--px));
    color: var(--muted);
    font-size: calc(14.5 * var(--px));
}

/* ---------- 02 · Frases ---------- */

.quotes {
    display: grid;
    gap: calc(15 * var(--px));
    margin-top: calc(34 * var(--px));
}

.quote {
    min-height: calc(85 * var(--px));
    display: flex;
    align-items: center;
    padding: calc(14 * var(--px)) calc(22 * var(--px));
    border: 1px solid var(--line);
    border-radius: calc(16 * var(--px));
    background: var(--card);
    color: var(--text);
    font-size: calc(18.5 * var(--px));
    font-weight: 500;
    line-height: 1.3;
}

/* ---------- Capturas ---------- */

.shot {
    position: relative;
    overflow: hidden;
    min-height: calc(64 * var(--px));
    border: 1px solid var(--line);
    border-radius: calc(12 * var(--px));
    background: var(--card);
}

.shot img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
}

/* 03 · Webs: tres capturas apiladas */
.works {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    margin-top: calc(23 * var(--px));
    gap: calc(22 * var(--px));
}

.work {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
}

.work .shot {
    flex: 0 1 calc(133 * var(--px));
}

.caption {
    margin-top: calc(9 * var(--px));
    color: var(--muted);
    font-size: calc(14 * var(--px));
    line-height: 1.35;
}

.caption strong {
    color: var(--text);
    font-size: calc(15 * var(--px));
    font-weight: 700;
}

/* 04 · Herramientas: casos con captura, título y texto */
.cases {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
    margin-top: calc(23 * var(--px));
    gap: calc(24 * var(--px));
}

.case {
    display: flex;
    flex-direction: column;
    flex: 0 1 auto;
    min-height: 0;
}

.case > .shot {
    flex: 0 1 calc(180 * var(--px));
}

.case__title {
    margin-top: calc(11 * var(--px));
    color: var(--text);
    font-size: calc(15.5 * var(--px));
    font-weight: 700;
    line-height: 1.3;
}

.case__text {
    margin-top: calc(8 * var(--px));
    color: var(--muted);
    font-size: calc(14.2 * var(--px));
    line-height: 1.43;
}

/* Antes / después de la foto de producto */
.compare {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: minmax(0, 1fr);
    gap: calc(10 * var(--px));
    flex: 0 1 calc(158 * var(--px));
    min-height: calc(72 * var(--px));
}

.compare .shot {
    min-height: 0;
}

.compare .shot--plain {
    background: #fff;
}

.compare .shot img {
    object-position: center;
}

.compare .shot--plain img {
    object-fit: contain;
}


.tag {
    position: absolute;
    left: calc(8 * var(--px));
    bottom: calc(8 * var(--px));
    padding: calc(3 * var(--px)) calc(9 * var(--px));
    border-radius: 999px;
    background: rgba(7, 17, 32, 0.82);
    color: var(--text);
    font-size: calc(11.5 * var(--px));
    font-weight: 700;
    line-height: 1.4;
}

.tag--after {
    background: var(--brand-light);
    color: #042f2e;
}


/* ---------- Cierre ---------- */

.closing {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.closing .title--wide {
    margin-inline: calc(-8 * var(--px));
}

.closing .mascot {
    /* en pantallas bajas se achica para que entren los dos botones */
    width: min(calc(var(--size) * var(--px)), 21cqh);
    height: min(calc(var(--size) * var(--px)), 21cqh);
    margin-bottom: calc(14 * var(--px));
}

.ctas {
    display: flex;
    flex-direction: column;
    gap: calc(12 * var(--px));
    margin-top: calc(28 * var(--px));
}

.cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: calc(268 * var(--px));
    min-height: calc(55 * var(--px));
    padding: 0 calc(28 * var(--px));
    border-radius: 999px;
    background: linear-gradient(135deg, #5eead4 0%, #2dd4bf 45%, #14b8a6 100%);
    box-shadow: 0 calc(16 * var(--px)) calc(40 * var(--px)) rgba(45, 212, 191, 0.2);
    color: #042f2e;
    font-size: calc(18 * var(--px));
    font-weight: 700;
    text-decoration: none;
    transition: transform 0.2s, box-shadow 0.2s;
    -webkit-tap-highlight-color: transparent;
}

.cta:hover {
    transform: translateY(-2px);
    box-shadow: 0 calc(20 * var(--px)) calc(44 * var(--px)) rgba(45, 212, 191, 0.3);
}

.cta--ig {
    /* colores del ícono de Instagram de la web (media/logos/instagram-color.svg) */
    background: linear-gradient(45deg, #fa7e1e 0%, #d62976 45%, #962fbf 75%, #4f5bd5 100%);
    box-shadow: 0 calc(16 * var(--px)) calc(40 * var(--px)) rgba(214, 41, 118, 0.22);
    color: #fff;
}

.cta--ig:hover {
    box-shadow: 0 calc(20 * var(--px)) calc(44 * var(--px)) rgba(214, 41, 118, 0.32);
}

.cta:active {
    transform: translateY(1px);
}

.cta:focus-visible {
    outline: 2px solid var(--brand-light);
    outline-offset: 4px;
}

.signature {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: calc(10 * var(--px));
    margin-top: calc(24 * var(--px));
}

.signature .logo {
    align-self: center;
    height: calc(38 * var(--px));
}

.signature p {
    color: var(--muted);
    font-size: calc(13 * var(--px));
}

.signature a {
    color: inherit;
    text-decoration: none;
}

.signature a:hover {
    color: var(--text);
}

/* ---------- B · 02: planilla ---------- */

.sheet {
    margin-top: calc(32 * var(--px));
    overflow: hidden;
    border-radius: calc(14 * var(--px));
    background: #f1f5f9;
    color: #1e293b;
    font-size: calc(12.4 * var(--px));
    line-height: 1.35;
}

.sheet table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

.sheet th,
.sheet td {
    padding: calc(9 * var(--px)) 0;
    text-align: left;
    vertical-align: top;
}

.sheet thead th {
    padding-block: calc(8 * var(--px));
    background: #e2e8f0;
    border-bottom: 1px solid #cbd5e1;
    color: #334155;
    font-weight: 700;
}

.sheet tbody tr + tr td {
    border-top: 1px solid #e2e8f0;
}

.sheet .n {
    width: calc(26 * var(--px));
    padding-left: calc(9 * var(--px));
    color: #64748b;
}

.sheet .c-wine {
    width: calc(126 * var(--px));
}

.sheet .c-stock {
    width: calc(40 * var(--px));
}

.sheet .c-price {
    width: calc(60 * var(--px));
}

.sheet .is-off td {
    background: #f6e8d2;
    border-top-color: #ead7b8;
}

.sheet .flag {
    padding-right: calc(8 * var(--px));
    color: #9a3412;
    font-weight: 700;
}

.sheet__tabs {
    display: flex;
    gap: calc(4 * var(--px));
    padding: calc(5 * var(--px)) calc(8 * var(--px)) 0;
    background: #cbd5e1;
    color: #475569;
    font-size: calc(11.2 * var(--px));
}

.sheet__tabs span {
    padding: calc(6 * var(--px)) calc(14 * var(--px)) calc(5 * var(--px));
    border-radius: calc(8 * var(--px)) calc(8 * var(--px)) 0 0;
}

.sheet__tabs .is-active {
    background: #f8fafc;
    color: #334155;
}

/* ---------- B · 03: tablero de ejemplo ---------- */

.panel {
    padding: calc(21 * var(--px));
    border: 1px solid rgba(45, 212, 191, 0.32);
    border-radius: calc(20 * var(--px));
    background: var(--card);
    box-shadow:
        0 0 calc(50 * var(--px)) rgba(45, 212, 191, 0.12),
        0 calc(24 * var(--px)) calc(60 * var(--px)) rgba(0, 0, 0, 0.35);
}

.panel__title {
    color: var(--title);
    font-family: "Sora", "Manrope", sans-serif;
    font-size: calc(19.5 * var(--px));
    font-weight: 700;
    line-height: 1.25;
    letter-spacing: -0.015em;
}

.panel__sub {
    margin-top: calc(4 * var(--px));
    color: var(--muted);
    font-size: calc(12 * var(--px));
}

.kpis {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: calc(10 * var(--px));
    margin-top: calc(22 * var(--px));
}

.kpi {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    min-height: calc(87 * var(--px));
    padding: calc(13 * var(--px)) calc(12 * var(--px));
    border-radius: calc(14 * var(--px));
    background: var(--bg);
}

.kpi__label {
    color: var(--muted);
    font-size: calc(11.2 * var(--px));
    line-height: 1.35;
}

.kpi__value {
    margin-top: calc(3 * var(--px));
    color: var(--title);
    font-family: "Sora", "Manrope", sans-serif;
    font-size: calc(23.5 * var(--px));
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: -0.02em;
}

.kpi__value--warn {
    color: var(--amber);
}

.bars {
    display: grid;
    gap: calc(10 * var(--px));
    margin-top: calc(22 * var(--px));
}

.bar {
    display: grid;
    grid-template-columns: calc(78 * var(--px)) 1fr calc(40 * var(--px));
    align-items: center;
    gap: calc(12 * var(--px));
    color: var(--text);
    font-size: calc(12.3 * var(--px));
}

.bar__track {
    height: calc(8 * var(--px));
    overflow: hidden;
    border-radius: 999px;
    background: #1e293b;
}

.bar__track,
.bar__fill {
    display: block;
}

.bar__fill {
    height: 100%;
    width: var(--w);
    border-radius: inherit;
    background: var(--brand);
}

.bar__pct {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.after-text {
    margin-top: calc(32 * var(--px));
    color: var(--muted);
    font-size: calc(16 * var(--px));
    line-height: 1.45;
}

.after-title {
    margin-top: calc(14 * var(--px));
    color: var(--brand-light);
    font-family: "Sora", "Manrope", sans-serif;
    font-size: calc(44 * var(--px));
    font-weight: 800;
    line-height: 1.05;
    letter-spacing: -0.03em;
}

/* ---------- Entrada suave del contenido ---------- */

@media (prefers-reduced-motion: no-preference) {
    .js .slide .reveal {
        opacity: 0;
        transform: translateY(14px);
        transition: opacity 0.6s ease, transform 0.6s ease;
        transition-delay: calc(var(--i, 0) * 90ms);
    }

    .js .slide.is-seen .reveal {
        opacity: 1;
        transform: none;
    }

    .js .bar__fill {
        width: 0;
        transition: width 0.9s cubic-bezier(0.2, 0.7, 0.2, 1) 0.35s;
    }

    .js .is-seen .bar__fill {
        width: var(--w);
    }

    .track {
        scroll-behavior: smooth;
    }
}
