* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {
    --black: #0a0a0a;
    --white: #ffffff;
    --gray-light: #f5f5f5;
    --gray-dark: #2a2a2a;
    --copper: #d4945e;
    --copper-light: #e8b88f;
    --transition: 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);

    /* Un solo sitio donde tocar el aire de la pagina.
       --aire-v es lo que separa una seccion de otra; --aire-h el margen lateral.
       Si algun dia la web se ve apretada o demasiado suelta, se cambia aqui. */
    --aire-v: clamp(5.5rem, 9vw, 9rem);
    --aire-h: clamp(1.5rem, 5vw, 5rem);
    --ancho: 1600px;

    --linea: rgba(255, 255, 255, 0.12);
    --linea-copper: rgba(212, 148, 94, 0.28);
    --texto-suave: rgba(255, 255, 255, 0.62);
}

html {
    scroll-behavior: smooth;
    /* El menú está fijo (79px) y tapa el principio de cualquier sección a la
       que se salta por enlace ("#s-imprenta" desde el menú, un enlace
       compartido, etc.). Sin esto el título queda medio escondido detrás. */
    scroll-padding-top: 90px;
}

body {
    font-family: 'Archivo', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    background: var(--black);
    color: var(--white);
    line-height: 1.65;
    font-size: 1.02rem;
    letter-spacing: -0.005em;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
}

a {
    color: inherit;
}

/* GRAIN TEXTURE OVERLAY */
body::after {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 9999;
    pointer-events: none;
    opacity: 0.035;
    mix-blend-mode: overlay;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* MARQUEE
   Antes era una banda naranja a todo color: pesaba mas que la portada y se leia
   como el cartel de un saldo. Ahora es una linea fina sobre negro. */
.marquee {
    display: none;
    margin-top: 80px;
    background: var(--black);
    border-bottom: 1px solid rgba(212, 148, 94, 0.18);
    overflow: hidden;
    padding: 0.7rem 0;
    white-space: nowrap;
}

.marquee-track {
    display: inline-flex;
    animation: marquee 46s linear infinite;
}

.marquee-track span,
.marquee-track a {
    font-weight: 500;
    font-size: 0.72rem;
    letter-spacing: 0.24em;
    color: rgba(255, 255, 255, 0.45);
    padding: 0 1.4rem;
    text-transform: uppercase;
}

.marquee-track span {
    color: var(--copper);
    padding: 0 0.2rem;
}

.marquee-track a {
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.marquee-track a:hover {
    opacity: 0.6;
    text-decoration: underline;
}

@keyframes marquee {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
    .marquee-track {
        animation: none;
    }
}

/* SCROLL REVEAL
   Solo se oculta si JS esta activo (.js lo pone un script en el <head>).
   Sin JS, todo se ve: mas vale sin animacion que una pagina en blanco. */
.js .reveal {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.7s ease, transform 0.7s ease;
}

.js .reveal.revealed {
    opacity: 1;
    transform: translateY(0);
}

/* NAVBAR */
nav {
    position: fixed;
    top: 0;
    width: 100%;
    background: rgba(10, 10, 10, 0.98);
    backdrop-filter: blur(10px);
    z-index: 1000;
    border-bottom: 1px solid rgba(212, 148, 94, 0.1);
    padding: 1.25rem 2rem;
}

.nav-container {
    max-width: 1600px;
    margin: 0 auto;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
}

.nav-logo {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 1.3rem;
    font-weight: 700;
    letter-spacing: 2px;
    color: var(--copper);
    text-decoration: none;
    white-space: nowrap;
}

/* Monograma JT de la marca real. Es alto y estrecho, asi que se le da altura
   y el ancho lo decide la propia forma: si se fuerza cuadrado se deforma. */
.nav-logo img {
    height: 42px;
    width: auto;
    object-fit: contain;
}

.nav-links {
    display: flex;
    list-style: none;
    gap: 1.6rem;
    flex: 1;
    justify-content: center;
}

.nav-links a {
    color: var(--white);
    text-decoration: none;
    font-size: 0.95rem;
    position: relative;
    transition: color var(--transition);
}

.nav-links a:after {
    content: '';
    position: absolute;
    bottom: -5px;
    left: 0;
    width: 0;
    height: 2px;
    background: var(--copper);
    transition: width var(--transition);
}

.nav-links a:hover:after {
    width: 100%;
}

.nav-toggle {
    display: none;
    background: none;
    border: none;
    color: var(--white);
    font-size: 1.5rem;
    cursor: pointer;
}

.cta-button {
    background: var(--copper);
    color: var(--black);
    padding: 0.7rem 1.4rem;
    border: none;
    border-radius: 4px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--transition);
    font-size: 0.85rem;
    white-space: nowrap;
}

.cta-button:hover {
    background: var(--copper-light);
    transform: translateY(-2px);
}

/* HERO */
.hero {
    min-height: calc(100vh - 80px);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

/* Foto a sangre: ocupa todo el ancho de la pantalla, sin caja */
.hero-foto {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    /* Encuadre para "Ilustracion - 17:00h". La imagen es panoramica (2,24:1) y el
       hero suele ser menos ancho, asi que "cover" recorta por los lados. Con 38%
       se muestra la parte izquierda de la plaza (vacia, y ahi es donde cae el
       texto por el degradado del velo) y el nino queda a la derecha del encuadre,
       en la zona clara. Si se cambia la foto, hay que revisar este numero. */
    object-position: 38% 50%;
    z-index: 0;
    pointer-events: none;
}

/* Velo doble: oscurece hacia la izquierda para que el texto se lea siempre,
   y funde el borde inferior con el negro de la siguiente sección */
.hero-velo {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        linear-gradient(100deg, rgba(10,10,10,0.94) 0%, rgba(10,10,10,0.82) 34%, rgba(10,10,10,0.28) 66%, rgba(10,10,10,0.45) 100%),
        linear-gradient(to bottom, rgba(10,10,10,0.55) 0%, transparent 22%, transparent 72%, var(--black) 100%);
}

.hero-content {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 1600px;
    margin: 0 auto;
    padding: 2rem clamp(1.5rem, 6vw, 6rem);
    animation: fadeInUp 1s ease;
}

.hero-content > * {
    max-width: 34ch;
}

/* Estos dos no llevan tope de ancho: con 34ch los botones se apilaban uno
   debajo del otro y la linea de disciplinas se partia en dos. */
.hero-content > .hero-buttons,
.hero-content > .hero-disciplinas {
    max-width: none;
}

.hero-firma {
    font-size: clamp(1.1rem, 2.4vw, 1.7rem);
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: var(--copper);
    margin-top: -0.4rem;
    margin-bottom: 1.6rem;
}

.hero-disciplinas {
    font-size: 0.8rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.65);
    margin-bottom: 1.4rem;
}

h1 {
    font-family: 'Pirata One', 'Georgia', serif;
    font-size: clamp(4.5rem, 13vw, 11rem);
    line-height: 0.9;
    margin-bottom: 1.8rem;
    font-weight: 400;
    letter-spacing: 0.01em;
}

/* El titulo de portada es el logotipo real de la marca, no una fuente parecida.
   Va como imagen dentro del h1: el texto sigue estando en el alt, asi que
   Google y los lectores de pantalla leen "Onlysoul" igual. */
.hero-wordmark {
    display: block;
    width: clamp(17rem, 42vw, 38rem);
    height: auto;
}

.hero-description {
    font-size: clamp(1rem, 1.4vw, 1.15rem);
    color: rgba(255, 255, 255, 0.78);
    margin-bottom: 2.2rem;
    line-height: 1.75;
}

.hero-buttons {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
}

.btn-primary, .btn-secondary {
    padding: 0.9rem 2rem;
    border-radius: 4px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--transition);
    font-size: 0.95rem;
    border: none;
}

.btn-primary {
    background: var(--copper);
    color: var(--black);
}

.btn-primary:hover {
    background: var(--copper-light);
    transform: translateY(-2px);
}

.btn-secondary {
    background: transparent;
    color: var(--white);
    border: 1px solid rgba(255, 255, 255, 0.3);
}

.btn-secondary:hover {
    border-color: var(--copper);
    color: var(--copper);
}

@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(30px); }
    to { opacity: 1; transform: translateY(0); }
}

/* GARANTÍAS */
.garantias {
    padding: 5rem clamp(1.5rem, 5vw, 5rem);
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    background: var(--gray-dark);
}

.garantias-grid {
    max-width: 1600px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
    gap: 2.5rem;
}

.garantia-num {
    display: block;
    font-family: 'Archivo Black', sans-serif;
    font-size: 0.85rem;
    color: var(--copper);
    letter-spacing: 0.1em;
    margin-bottom: 0.9rem;
}

.garantia h3 {
    font-size: 1.02rem;
    line-height: 1.3;
    margin-bottom: 0.6rem;
    color: var(--white);
}

.garantia p {
    font-size: 0.9rem;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.62);
}

/* SECTION HEADERS
   Cabecera de revista: filete fino de lado a lado, titulo grande a la izquierda
   y la frase corta a la derecha. Ocupa todo el ancho en vez de quedarse en una
   columna estrecha en el centro. */
.section-header {
    max-width: var(--ancho);
    margin: 0 auto clamp(3rem, 5vw, 5rem);
    padding: clamp(1.6rem, 2.5vw, 2.4rem) 0 0;
    border-top: 1px solid var(--linea);
    display: grid;
    gap: 1.2rem;
    text-align: left;
}

.section-eyebrow {
    font-size: 0.72rem;
    letter-spacing: 0.26em;
    text-transform: uppercase;
    color: var(--copper);
}

.section-title {
    font-family: 'Archivo', sans-serif;
    font-size: clamp(2.2rem, 4.4vw, 3.6rem);
    font-weight: 600;
    letter-spacing: -0.025em;
    line-height: 1.05;
    text-wrap: balance;
}

.section-description {
    color: var(--texto-suave);
    font-size: clamp(1rem, 1.2vw, 1.15rem);
    max-width: 46ch;
    line-height: 1.6;
}

@media (min-width: 900px) {
    .section-header {
        grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
        column-gap: clamp(3rem, 8vw, 9rem);
        align-items: end;
    }

    .section-eyebrow {
        grid-column: 1 / -1;
        margin-bottom: -0.5rem;
    }

    .section-description {
        padding-bottom: 0.5rem;
    }
}

/* ABOUT */
.about {
    padding: var(--aire-v) var(--aire-h);
    background: var(--gray-dark);
}

.about-container {
    max-width: 1400px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    gap: 3rem;
    text-align: left;
}

.about-photo {
    flex-shrink: 0;
    width: 220px;
    height: 220px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid var(--copper);
}

.about-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.about-content {
    flex: 1;
}

.about-content .section-title {
    text-align: left;
}

.about-text {
    color: rgba(255, 255, 255, 0.75);
    font-size: 1.1rem;
    line-height: 1.9;
    margin-bottom: 2rem;
}

.about-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.7rem;
}

.about-tags span {
    border: 1px solid rgba(212, 148, 94, 0.4);
    color: var(--copper);
    padding: 0.5rem 1.2rem;
    border-radius: 30px;
    font-size: 0.85rem;
    letter-spacing: 0.5px;
}

.trust-stats {
    display: flex;
    justify-content: flex-start;
    gap: 3rem;
    margin-top: 2.5rem;
    padding-top: 2rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    flex-wrap: wrap;
}

.trust-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.trust-number {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--copper);
    line-height: 1.1;
    text-wrap: balance;
}

.trust-label {
    font-size: 0.8rem;
    color: rgba(255, 255, 255, 0.55);
    margin-top: 0.3rem;
}

/* SERVICES */
.services {
    padding: var(--aire-v) var(--aire-h);
}

.services-grid {
    max-width: 1600px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr));
    gap: 3.5rem 2.5rem;
}

.service-card {
    background: transparent;
    border: none;
    border-top: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 0;
    padding: 1.8rem 0 0;
    transition: border-color var(--transition);
    display: flex;
    flex-direction: column;
}

.service-card:hover {
    border-top-color: var(--copper);
}

.hub-link {
    text-decoration: none;
    color: inherit;
    cursor: pointer;
}

.service-card h3 {
    font-family: 'Archivo Black', 'Archivo', sans-serif;
    font-size: 1.45rem;
    letter-spacing: -0.025em;
    line-height: 1.1;
    margin-bottom: 0.7rem;
    color: var(--white);
}

.service-card p {
    color: rgba(255, 255, 255, 0.65);
    font-size: 0.95rem;
    margin-bottom: 1.2rem;
    flex: 1;
}

.service-price {
    display: inline-block;
    color: var(--copper);
    font-weight: 600;
    font-size: 0.9rem;
    margin-bottom: 1.2rem;
}

.service-cta {
    background: transparent;
    border: 1px solid var(--copper);
    color: var(--copper);
    padding: 0.65rem 1rem;
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 600;
    transition: all var(--transition);
}

.service-cta:hover {
    background: var(--copper);
    color: var(--black);
}

.product-name {
    color: var(--white) !important;
    font-weight: 600;
    font-size: 0.95rem !important;
    margin-bottom: 0.4rem !important;
}

.product-tiers {
    list-style: none;
    margin: 0 0 1.2rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    padding-top: 0.8rem;
}

.product-tiers li {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 0.4rem 0;
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.7);
}

.product-tiers li strong {
    color: var(--copper);
    font-weight: 700;
    white-space: nowrap;
    margin-left: 1rem;
}

.service-link {
    display: inline-block;
    margin-top: 0.9rem;
    color: var(--copper);
    text-decoration: none;
    font-size: 0.85rem;
    font-weight: 600;
}

.service-link:hover {
    text-decoration: underline;
}

/* FEATURE CARD (Obra propia) */
.service-card--feature {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: 1.1fr 1fr;
    gap: 0;
    padding: 0;
    overflow: hidden;
}

.feature-image {
    position: relative;
    overflow: hidden;
    min-height: 380px;
}

.feature-zoom {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    cursor: pointer;
    filter: saturate(1.08) contrast(1.04);
    animation: kenburns 16s ease-in-out infinite alternate;
}

@keyframes kenburns {
    from { transform: scale(1) translate(0, 0); }
    to { transform: scale(1.15) translate(-1%, -1%); }
}

@media (prefers-reduced-motion: reduce) {
    .feature-zoom {
        animation: none;
    }
}

.feature-overlay {
    position: absolute;
    inset: auto 0 0 0;
    background: linear-gradient(to top, rgba(0,0,0,0.9) 20%, transparent);
    padding: 2rem 1.8rem 1.5rem;
    pointer-events: none;
}

.feature-overlay h3 {
    font-size: 1.4rem;
    margin-bottom: 0.3rem;
}

.feature-body {
    padding: 2.2rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.feature-body > p {
    color: rgba(255, 255, 255, 0.7);
    margin-bottom: 0.5rem;
}

/* La obra colgada en pared. Va grande a propósito: es lo que le hace entender
   al cliente el tamaño real, que en centímetros no se entiende. */
.mockup {
    margin: 1.2rem 0 1.6rem;
    border: 1px solid var(--linea);
    border-radius: 4px;
    overflow: hidden;
    background: var(--black);
}

.mockup img {
    display: block;
    width: 100%;
    height: auto;
    cursor: zoom-in;
    transition: transform var(--transition);
}

.mockup:hover img {
    transform: scale(1.02);
}

.mockup figcaption {
    padding: 0.65rem 0.9rem;
    font-size: 0.82rem;
    letter-spacing: 0.02em;
    color: var(--texto-suave);
    border-top: 1px solid var(--linea);
}

.sketch-preview {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    margin: 0.8rem 0 1.4rem;
}

.sketch-thumb {
    width: 64px;
    height: 64px;
    object-fit: cover;
    border-radius: 4px;
    cursor: pointer;
    filter: saturate(1.08) contrast(1.04);
    flex-shrink: 0;
}

.sketch-preview span {
    color: rgba(255, 255, 255, 0.55);
    font-size: 0.85rem;
}

@media (max-width: 700px) {
    .service-card--feature {
        grid-template-columns: 1fr;
    }

    .feature-image {
        min-height: 260px;
    }
}

/* PRINT CATALOG (Imprenta) */
.print-catalog-card {
    grid-column: 1 / -1;
    padding: 2rem;
}

.print-catalog-intro {
    color: rgba(255, 255, 255, 0.65);
    font-size: 0.92rem;
    max-width: 700px;
    margin-bottom: 1.6rem;
}

.print-catalog {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(230px, 100%), 1fr));
    gap: 1.2rem;
}

.print-product {
    border: 1px solid rgba(255, 255, 255, 0.12);
    padding: 1rem;
    display: flex;
    flex-direction: column;
    transition: border-color var(--transition);
}

.print-product:hover {
    border-color: var(--copper);
}

.print-product img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    margin-bottom: 0.9rem;
    cursor: pointer;
}

.print-product h4 {
    font-size: 0.98rem;
    margin-bottom: 0.6rem;
    color: var(--white);
}

/* No todos los productos tienen el mismo numero de desplegables (los
   calendarios llevan dos y las tarjetas tres). Sin esto, los botones de cada
   ficha quedan a una altura distinta y la fila se ve descuadrada. */
.print-product .print-actions {
    margin-top: auto;
}

/* Configurador de producto */
.config-box {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    margin-bottom: 1rem;
}

.config-row {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.config-label {
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: rgba(255, 255, 255, 0.45);
}

/* Los desplegables del sistema (la flechita gris de Windows) delatan que esto
   es un formulario. Los dibujamos nosotros: appearance:none quita el estilo del
   sistema operativo y la flecha la pintamos como imagen de fondo. */
.config-row select {
    width: 100%;
    appearance: none;
    -webkit-appearance: none;
    background-color: rgba(255, 255, 255, 0.04);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23d4945e' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.95rem center;
    color: var(--white);
    border: 1px solid var(--linea);
    border-radius: 3px;
    padding: 0.85rem 2.6rem 0.85rem 1rem;
    font-family: inherit;
    font-size: 0.92rem;
    line-height: 1.2;
    cursor: pointer;
    text-overflow: ellipsis;
    transition: border-color var(--transition), background-color var(--transition);
}

.config-row select:hover {
    border-color: var(--linea-copper);
    background-color: rgba(255, 255, 255, 0.07);
}

.config-row select:focus-visible {
    outline: none;
    border-color: var(--copper);
    box-shadow: 0 0 0 3px rgba(212, 148, 94, 0.16);
}

/* La lista desplegada la pinta el sistema, asi que al menos que no salga
   texto blanco sobre fondo blanco en Windows. */
.config-row select option {
    background: #141414;
    color: var(--white);
}

.print-nota {
    font-size: 0.75rem;
    color: rgba(255, 255, 255, 0.55);
    background: rgba(212, 148, 94, 0.08);
    border-left: 2px solid rgba(212, 148, 94, 0.5);
    padding: 0.5rem 0.7rem;
    margin-bottom: 0.9rem;
    line-height: 1.45;
}

.precio-vivo {
    font-size: 1.35rem;
    color: var(--copper-light);
}

.print-prices {
    margin-bottom: 1rem;
}

.print-prices .price-impresion {
    display: block;
    color: var(--copper-light);
    font-weight: 700;
    font-size: 0.95rem;
}

.print-prices .price-diseno {
    display: block;
    color: rgba(255, 255, 255, 0.5);
    font-size: 0.76rem;
    margin-top: 0.25rem;
    line-height: 1.4;
}

.print-actions {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-top: auto;
}

.print-actions button {
    font-size: 0.76rem;
    padding: 0.55rem 0.7rem;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.25);
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    transition: all var(--transition);
}

.print-actions button:hover {
    border-color: var(--copper);
    color: var(--copper);
}

.print-actions button.upload {
    border-color: rgba(212, 148, 94, 0.5);
    color: var(--copper-light);
}

.print-actions button.upload:hover {
    background: var(--copper);
    color: var(--black);
}

/* SERVICE PHOTOS (bento) */
/* El mosaico de cada servicio mide siempre lo mismo, tenga 1 foto o 6.
   Antes la altura la marcaba el numero de fotos y los titulos de las tarjetas
   quedaban a alturas distintas: la fila entera se veia descuadrada. */
.service-photos {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(2, 1fr);
    grid-auto-flow: dense;
    aspect-ratio: 4 / 3;
    gap: 6px;
    margin: 0 0 1.6rem;
    border-radius: 0;
    overflow: hidden;
}

.service-photos img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    cursor: pointer;
    filter: saturate(1.08) contrast(1.04);
    transition: transform 0.25s ease, filter 0.25s ease;
}

.service-photos img:hover {
    transform: scale(1.05);
    filter: brightness(1.1) saturate(1.12) contrast(1.05);
}

.service-photos img:nth-child(1) {
    grid-column: span 2;
    grid-row: span 2;
}

/* La caja tiene sitio para la foto grande + 4 pequenas. Si hay mas, sobran. */
.service-photos img:nth-child(n+6) {
    display: none;
}

/* Con solo 4 fotos quedaria un hueco abajo a la derecha: la ultima lo tapa. */
.service-photos:has(img:nth-child(4):last-child) img:nth-child(4) {
    grid-column: span 2;
}

.service-photos--single {
    grid-template-columns: 1fr;
    grid-template-rows: 1fr;
}

.service-photos--single img:nth-child(1) {
    grid-column: auto;
    grid-row: auto;
}

/* LIGHTBOX */
.lightbox {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.92);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 2000;
    padding: 3rem 1.5rem;
    cursor: zoom-out;
}

.lightbox.open {
    display: flex;
}

.lightbox img {
    width: min(85vw, 1100px);
    height: min(85vh, 850px);
    object-fit: contain;
    border-radius: 6px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
    cursor: default;
}

@media (max-width: 640px) {
    .lightbox img {
        width: 92vw;
        height: 75vh;
    }
}

.lightbox-caption {
    position: absolute;
    bottom: 2.6rem;
    left: 0;
    right: 0;
    text-align: center;
    color: rgba(255, 255, 255, 0.8);
    font-size: 0.9rem;
}

/* Referencia de precio del trabajo ampliado */
.lightbox-precio {
    position: absolute;
    bottom: 1.2rem;
    left: 0;
    right: 0;
    text-align: center;
    color: var(--copper-light);
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}

.lightbox-close {
    position: absolute;
    top: 1.2rem;
    right: 1.5rem;
    background: none;
    border: none;
    color: var(--white);
    font-size: 2rem;
    line-height: 1;
    cursor: pointer;
}

/* GALLERY */
.gallery {
    padding: var(--aire-v) var(--aire-h);
    background: var(--gray-dark);
}

.gallery-filters {
    max-width: 1100px;
    margin: 0 auto 2.5rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.7rem;
    justify-content: center;
}

.filter-btn {
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: rgba(255, 255, 255, 0.7);
    padding: 0.55rem 1.1rem;
    border-radius: 30px;
    font-size: 0.85rem;
    cursor: pointer;
    transition: all var(--transition);
}

.filter-btn:hover {
    border-color: var(--copper);
    color: var(--copper);
}

.filter-btn.active {
    background: var(--copper);
    border-color: var(--copper);
    color: var(--black);
    font-weight: 600;
}

.gallery-grid {
    max-width: 1600px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1.2rem;
}

.gallery-item {
    position: relative;
    border-radius: 2px;
    overflow: hidden;
    background: var(--black);
    aspect-ratio: 4 / 3;
}

.gallery-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: saturate(1.08) contrast(1.04);
    transition: transform var(--transition), filter var(--transition);
}

.gallery-item:hover img {
    transform: scale(1.06);
}

.gallery-item figcaption {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 0.8rem 1rem;
    background: linear-gradient(to top, rgba(0,0,0,0.85), transparent);
    color: var(--white);
    font-size: 0.85rem;
}

.gallery-item.hidden {
    display: none;
}

/* Piezas del portfolio que quedan plegadas hasta que se pulsa "Ver más" */
.gallery-item.recortado {
    display: none;
}

.ver-mas {
    display: block;
    margin: 2.5rem auto 0;
}

.tattoo-subsection-nota {
    color: var(--texto-suave);
    font-size: 0.95rem;
    line-height: 1.6;
    max-width: 62ch;
    margin: -0.6rem 0 1.8rem;
}

/* TATTOO PORTFOLIO */
.tattoo-subsection {
    max-width: 1600px;
    margin: 0 auto 4rem;
}

.tattoo-subsection:last-child {
    margin-bottom: 0;
}

.tattoo-subsection h3 {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.22em;
    font-weight: 600;
    margin-bottom: 2rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    color: var(--copper);
}

.tattoo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(380px, 100%), 1fr));
    grid-auto-flow: dense;
    gap: 1.6rem;
}

.tattoo-grid .gallery-item {
    aspect-ratio: 4 / 5;
}

.tattoo-grid .gallery-item.featured {
    grid-column: span 2;
    grid-row: span 2;
}

@media (max-width: 800px) {
    .tattoo-grid .gallery-item.featured {
        grid-column: span 1;
        grid-row: span 1;
    }
}

/* Antes y despues. Con minmax(420px) entraban tres parejas por fila y cada
   foto quedaba en torno a 200 px: en el "antes" no se apreciaba lo desdibujado
   que estaba, que es justo lo que hay que ver. Subiendo el minimo a 620 px
   entran dos parejas como mucho y cada foto casi dobla su tamano. */
.before-after-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(620px, 100%), 1fr));
    gap: 2.4rem;
}

.before-after-pair {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.8rem;
}

.before-after-pair .gallery-item {
    aspect-ratio: 3 / 4;
}

.godway-strip {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(260px, 100%), 1fr));
    gap: 1.4rem;
}

.godway-strip .gallery-item {
    aspect-ratio: 3 / 4;
}

/* INSTAGRAM FEED */
.instagram {
    padding: var(--aire-v) var(--aire-h);
}

.instagram-feed {
    max-width: 1500px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
    justify-items: center;
}

/* Visor de Instagram: cabecera con el perfil y rejilla cuadrada, como se ve al
   entrar en la cuenta. Solo se aplica cuando hay publicaciones cargadas. */
.instagram-feed.ig-visor {
    display: block;
    max-width: 1100px;
}

.ig-cabecera {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding-bottom: 1.4rem;
    margin-bottom: 1.6rem;
    border-bottom: 1px solid var(--linea);
}

.ig-avatar {
    width: 58px;
    height: 58px;
    border-radius: 50%;
    object-fit: contain;
    background: var(--gray-dark);
    padding: 8px;
    border: 1px solid var(--linea-copper);
}

.ig-identidad {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.ig-usuario {
    font-weight: 600;
    color: var(--white);
    text-decoration: none;
    font-size: 1.05rem;
}

.ig-usuario:hover {
    color: var(--copper-light);
}

.ig-meta {
    font-size: 0.82rem;
    color: var(--texto-suave);
}

.ig-rejilla {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 4px;
}

.ig-post {
    position: relative;
    display: block;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: var(--gray-dark);
}

.ig-post img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform var(--transition), filter var(--transition);
}

.ig-post:hover img {
    transform: scale(1.05);
    filter: brightness(0.55);
}

.ig-tipo {
    position: absolute;
    top: 0.6rem;
    right: 0.7rem;
    color: var(--white);
    font-size: 0.9rem;
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.6);
}

/* El pie solo aparece al pasar por encima: en reposo manda la foto. */
.ig-texto {
    position: absolute;
    inset: auto 0 0 0;
    padding: 0.9rem 0.8rem 0.8rem;
    font-size: 0.78rem;
    line-height: 1.4;
    color: var(--white);
    background: linear-gradient(to top, rgba(0, 0, 0, 0.85), transparent);
    opacity: 0;
    transition: opacity var(--transition);
}

.ig-post:hover .ig-texto {
    opacity: 1;
}

@media (max-width: 600px) {
    .ig-rejilla {
        gap: 3px;
    }
}

.instagram-cta {
    text-align: center;
    margin-top: 2.5rem;
}

.instagram-placeholder {
    text-align: center;
    padding: 3rem 2rem;
    background: var(--gray-dark);
    border: 1px dashed rgba(212, 148, 94, 0.3);
    border-radius: 2px;
}

.instagram-placeholder p {
    color: rgba(255, 255, 255, 0.6);
    margin-bottom: 1.2rem;
}

/* TESTIMONIALS */
.testimonials {
    padding: var(--aire-v) var(--aire-h);
    background: var(--gray-dark);
}

.testimonials-grid {
    max-width: 1500px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
}

.testimonial-card {
    background: var(--black);
    border: 1px solid rgba(212, 148, 94, 0.15);
    border-radius: 2px;
    padding: 1.8rem;
    margin: 0;
}

.testimonial-card .stars {
    color: var(--copper);
    letter-spacing: 2px;
    margin-bottom: 0.9rem;
    font-size: 0.9rem;
}

.testimonial-card p {
    color: rgba(255, 255, 255, 0.8);
    font-size: 0.95rem;
    line-height: 1.6;
    margin-bottom: 1rem;
}

.testimonial-card cite {
    font-style: normal;
    color: var(--copper-light);
    font-size: 0.85rem;
    font-weight: 600;
}

/* De qué trabajo habla la reseña: sin esto no se sabe si opinan de un rótulo,
   de un logotipo o de un tatuaje. */
.testimonial-servicio {
    display: block;
    margin-top: 0.3rem;
    font-size: 0.72rem;
    font-weight: 400;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.42);
}

/* FAQ */
.faq {
    padding: var(--aire-v) var(--aire-h);
}

.faq-list {
    max-width: 760px;
    margin: 0 auto;
}

.faq-item {
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    padding: 1.3rem 0;
}

.faq-item summary {
    cursor: pointer;
    font-weight: 600;
    font-size: 1.02rem;
    list-style: none;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
}

.faq-item summary::-webkit-details-marker {
    display: none;
}

.faq-item summary::after {
    content: '+';
    color: var(--copper);
    font-size: 1.4rem;
    font-weight: 400;
    flex-shrink: 0;
    transition: transform var(--transition);
}

.faq-item[open] summary::after {
    transform: rotate(45deg);
}

.faq-item p {
    margin-top: 0.9rem;
    color: rgba(255, 255, 255, 0.65);
    font-size: 0.95rem;
    line-height: 1.7;
}

/* PROCESS */
.process {
    padding: var(--aire-v) var(--aire-h);
    background: var(--gray-dark);
}

.process-timeline {
    max-width: 1500px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 2rem;
}

.process-step {
    text-align: center;
    padding: 1.5rem;
}

.process-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--copper);
    color: var(--black);
    font-weight: 700;
    font-size: 1.1rem;
    margin-bottom: 1rem;
}

.process-step h3 {
    font-size: 1.1rem;
    margin-bottom: 0.6rem;
}

.process-step p {
    color: rgba(255, 255, 255, 0.6);
    font-size: 0.9rem;
}

/* SELLO DE MARCA
   Cierre de la home antes del formulario. El ángel de la identidad va detrás,
   muy bajado de opacidad: manda como textura, no como ilustración. */
.sello {
    position: relative;
    overflow: hidden;
    padding: clamp(5rem, 10vw, 9rem) var(--aire-h);
    background:
        radial-gradient(120% 90% at 50% 0%, rgba(212, 148, 94, 0.10), transparent 70%),
        var(--black);
    border-top: 1px solid var(--linea);
    border-bottom: 1px solid var(--linea);
    text-align: center;
}

/* Aqui va el sello de Jose y nada mas. Antes iba de fondo al 13%, invisible, y
   encima el wordmark "onlysoul": dos marcas peleandose, porque el propio sello
   ya lleva escrito "Jose Tirado Onlysoul". Se quita el wordmark y el sello pasa
   a ser el protagonista, en el flujo y sin rebajar. */
.sello-marca {
    width: min(300px, 62vw);
    height: auto;
}

/* El sello, entero y sin rebajar, encabezando el pie: es la firma de la casa. */
.footer-sello {
    width: 128px;
    height: auto;
    margin-bottom: 1rem;
    display: block;
}

.sello-contenido {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.6rem;
}

.sello-frase {
    font-size: clamp(1rem, 1.5vw, 1.2rem);
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.72);
    letter-spacing: 0.01em;
}

/* ===== PAGINAS LEGALES =====
   Texto largo, sin galeria ni fotos: legibilidad ante todo. Los campos que
   Jose todavia no ha dado (NIF, direccion fiscal...) van marcados en
   amarillo para que salten a la vista y nadie los publique sin rellenar. */
.legal-page {
    max-width: 820px;
    margin: 0 auto;
    padding: var(--aire-v) var(--aire-h);
    color: var(--texto-suave);
    line-height: 1.75;
}

.legal-page h1 {
    color: var(--white);
    font-family: 'Archivo', sans-serif;
    font-weight: 600;
    font-size: clamp(1.8rem, 3vw, 2.4rem);
    margin-bottom: 0.5rem;
}

.legal-fecha {
    font-size: 0.8rem;
    color: var(--texto-suave);
    margin-bottom: 2.8rem;
}

.legal-page h2 {
    color: var(--white);
    font-family: 'Archivo', sans-serif;
    font-weight: 600;
    font-size: 1.15rem;
    margin-top: 2.4rem;
    margin-bottom: 0.7rem;
}

.legal-page p,
.legal-page li {
    margin-bottom: 0.9rem;
}

.legal-page ul {
    padding-left: 1.4rem;
}

.legal-page a {
    color: var(--copper);
}

.dato-pendiente {
    background: #fef08a;
    color: #1c1b19;
    padding: 0.05rem 0.4rem;
    border-radius: 2px;
    font-weight: 600;
}

.legal-nav {
    max-width: 820px;
    margin: 0 auto;
    padding: 1.5rem var(--aire-h) 0;
    font-size: 0.85rem;
}

.legal-nav a {
    color: var(--texto-suave);
}

/* ===== TEMA CLARO (galería de obra propia) =====
   La obra manda: fondo claro, tipografía discreta y nada de cobre gritando.
   Es lo contrario del resto de la web, y a propósito: una galería se percibe
   cara cuando la web casi no se ve. */
body.tema-claro {
    background: #f4f2ee;
    color: #1c1b19;
}

body.tema-claro .galeria-obra {
    padding: var(--aire-v) var(--aire-h);
}

body.tema-claro .section-header {
    border-top-color: rgba(0, 0, 0, 0.12);
}

body.tema-claro .section-eyebrow {
    color: #8a7355;
}

body.tema-claro .section-title {
    font-family: 'Archivo', sans-serif;
    font-weight: 600;
    font-size: clamp(2rem, 3.6vw, 3rem);
    letter-spacing: -0.02em;
    text-transform: none;
    color: #16150f;
}

body.tema-claro .section-description {
    color: #5d594f;
}

/* La lista de espera (obra-propia.html) hereda .waitlist-form input y .waitlist-nota
   pensados para fondo oscuro (var(--white), rgba(255,255,255,...)) — en tema-claro eso
   queda casi invisible sobre el fondo crema. Mismos tonos que el resto de tema-claro. */
body.tema-claro .waitlist-form input[type="email"] {
    background: rgba(0, 0, 0, 0.03);
    border-color: rgba(0, 0, 0, 0.12);
    color: #16150f;
}

body.tema-claro .waitlist-nota {
    color: #5d594f;
}

/* Mismo problema en la sección "Qué recibes" (obra-propia.html): .service-card
   hereda h3/p pensados para fondo oscuro y quedaban casi ilegibles sobre el
   fondo crema de tema-claro. */
body.tema-claro .service-card {
    border-top-color: rgba(0, 0, 0, 0.12);
}

body.tema-claro .service-card h3 {
    color: #16150f;
}

body.tema-claro .service-card p {
    color: #5d594f;
}

body.tema-claro .print-nota {
    color: #5d594f;
}

.galeria-grid {
    max-width: var(--ancho);
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(330px, 100%), 1fr));
    gap: clamp(2.2rem, 4vw, 3.6rem) clamp(1.6rem, 2.5vw, 2.6rem);
}

.pieza {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

/* Todas las fichas ocupan el mismo cuadrado: si cada una trae su formato, las
   columnas de la galería se descuadran. La obra nunca se recorta — se ajusta
   dentro (contain) y el hueco lo rellena el mismo tono de la pared. */
.pieza-foto {
    width: 100%;
    height: auto;
    aspect-ratio: 1 / 1;
    object-fit: contain;
    background: #e9e6e0;
    display: block;
    cursor: zoom-in;
    margin-bottom: 0.9rem;
    transition: opacity var(--transition);
}

.pieza-foto:hover {
    opacity: 0.88;
}

.pieza h3 {
    font-size: 1.05rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    color: #16150f;
}

.pieza-serie {
    font-size: 0.82rem;
    line-height: 1.5;
    color: #7a7568;
}

.pieza-precio {
    font-size: 1.15rem;
    font-weight: 600;
    color: #16150f;
    margin-top: 0.35rem;
}

.pieza .service-cta {
    margin-top: 0.9rem;
    align-self: start;
    border-color: #16150f;
    color: #16150f;
}

.pieza .service-cta:hover {
    background: #16150f;
    color: #f4f2ee;
}

.pieza--encargo .pieza-serie {
    color: #918b7d;
}

.galeria-nota {
    max-width: var(--ancho);
    margin: -1rem auto 2.6rem;
    font-size: 0.85rem;
    line-height: 1.6;
    color: #7a7568;
}

/* CINTA DE PARED
   La tienda entraba directa en la cuadricula y no se veia en ningun sitio que
   lo que se vende es una impresion colgada. La cinta lo ensena de un vistazo.
   Va a sangre (de borde a borde) aunque la seccion tenga margen lateral. */
.cinta-pared {
    --cinta-alto: clamp(150px, 19vw, 260px);
    width: 100vw;
    margin: 0 0 3.2rem calc(50% - 50vw);
    overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}

.cinta-via {
    display: flex;
    gap: 1rem;
    width: max-content;
    animation: marquee 90s linear infinite;
}

.cinta-pared:hover .cinta-via {
    animation-play-state: paused;
}

.cinta-foto {
    height: var(--cinta-alto);
    width: auto;
    display: block;
    cursor: zoom-in;
    filter: brightness(0.94);
    transition: filter var(--transition);
}

.cinta-foto:hover {
    filter: brightness(1.04);
}

@media (prefers-reduced-motion: reduce) {
    .cinta-pared {
        overflow-x: auto;
    }

    .cinta-via {
        animation: none;
    }
}

.pieza-origen {
    font-size: 0.8rem;
    color: #918b7d;
    margin-top: -0.15rem;
}

.pieza-cuaderno {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    margin-top: 0.5rem;
    margin-bottom: 0.3rem;
}

.pieza-cuaderno-foto {
    /* Antes era un cuadrado de 40px con object-fit:cover. Los escaneos son fotos
       apaisadas (1600x1200) de dibujos verticales, asi que ese recorte cuadrado
       se comia el dibujo y solo dejaba ver una franja del centro. Ahora se
       respeta la proporcion (contain) y se da altura suficiente para que el
       boceto se reconozca: es la prueba de autoria, tiene que verse. */
    width: auto;
    max-width: 150px;
    height: 96px;
    object-fit: contain;
    background: rgba(0, 0, 0, 0.04);
    border-radius: 4px;
    cursor: zoom-in;
    border: 1px solid rgba(0, 0, 0, 0.12);
}

.pieza-cuaderno span {
    font-size: 0.78rem;
    color: #8a7355;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Historia del dibujo de partida cuando la tiene (donde se pinto, para quien).
   Va debajo de la miniatura del original, no del titulo: acompana al boceto. */
.pieza-nota-original {
    font-size: 0.78rem;
    line-height: 1.5;
    color: #7a7568;
    margin-top: -0.35rem;
}

.serie-header {
    max-width: var(--ancho);
    margin: 0 auto;
    padding-top: 0;
    border-top: none;
}

.serie-header:not(:first-child) {
    margin-top: 3.5rem;
}

.serie-title {
    font-family: 'Archivo', sans-serif;
    font-weight: 600;
    font-size: 1.3rem;
    color: #16150f;
    margin-bottom: 1.6rem;
    padding-bottom: 0.8rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}

.archivo-obra {
    max-width: var(--ancho);
    margin: 4rem auto 0;
}

.archivo-obra summary {
    cursor: pointer;
    font-size: 0.95rem;
    color: #7a7568;
    padding: 1rem 0;
    border-top: 1px solid rgba(0, 0, 0, 0.12);
    list-style: none;
}

.archivo-obra summary::-webkit-details-marker {
    display: none;
}

.archivo-obra summary::before {
    content: '+ ';
    color: #8a7355;
}

.archivo-obra[open] summary::before {
    content: '– ';
}

.archivo-obra .galeria-grid {
    margin-top: 2.5rem;
}

.pieza-config {
    margin-top: 0.5rem;
    padding: 0.9rem 1rem 1rem;
    border: 1px solid rgba(0, 0, 0, 0.1);
    border-radius: 6px;
    background: rgba(138, 115, 85, 0.045);
}

.pieza-select-formato {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.pieza-select-formato .config-label {
    color: #8a7355;
}

.pieza-select-formato select {
    width: 100%;
    appearance: none;
    -webkit-appearance: none;
    background-color: #fff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%238a7355' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.95rem center;
    color: #16150f;
    border: 1px solid rgba(0, 0, 0, 0.15);
    border-radius: 3px;
    padding: 0.7rem 2.4rem 0.7rem 0.9rem;
    font-family: inherit;
    font-size: 0.88rem;
    line-height: 1.2;
    cursor: pointer;
    transition: border-color var(--transition), background-color var(--transition);
}

.pieza-select-formato select:hover {
    border-color: #8a7355;
}

.pieza-select-formato select:focus-visible {
    outline: none;
    border-color: #8a7355;
    box-shadow: 0 0 0 3px rgba(138, 115, 85, 0.16);
}

.pieza-medida {
    font-size: 0.8rem;
    color: #7a7568;
    margin-top: 0.4rem;
}

.pieza-edicion {
    font-size: 0.78rem;
    color: #918b7d;
}

/* En el tema claro la barra y el pie siguen oscuros: enmarcan la galería */
body.tema-claro .quote {
    background: var(--black);
    color: var(--white);
}

body.tema-claro .quote .section-title {
    color: var(--white);
}

body.tema-claro .quote .section-description,
body.tema-claro .quote-direct p {
    color: var(--texto-suave);
}

body.tema-claro .quote .section-header {
    border-top-color: var(--linea);
}

body.tema-claro .quote .section-eyebrow {
    color: var(--copper);
}

/* QUOTE FORM */
.quote {
    padding: var(--aire-v) var(--aire-h);
}

/* Antes era una columna de 600 px centrada, con media pantalla vacia a cada
   lado. Ahora: a la izquierda el titulo y los contactos directos, a la derecha
   el formulario. */
.quote-container {
    max-width: var(--ancho);
    margin: 0 auto;
    text-align: left;
    display: grid;
    gap: clamp(2.5rem, 5vw, 6rem);
    align-items: start;
}

.quote-intro .section-title {
    margin: 0.6rem 0 1rem;
}

@media (min-width: 900px) {
    .quote-container {
        grid-template-columns: minmax(0, 1fr) minmax(0, 34rem);
    }
}

#quoteForm {
    text-align: left;
}

.form-group {
    margin-bottom: 1.3rem;
}

.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.8);
}

.form-group input,
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 0.9rem 1rem;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--linea);
    border-radius: 3px;
    color: var(--white);
    font-size: 0.95rem;
    font-family: inherit;
}

/* Mismo desplegable dibujado que en los configuradores, para que el formulario
   no sea la unica pieza de la web con el estilo del sistema. */
.form-group select {
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%23d4945e' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    padding-right: 2.6rem;
    cursor: pointer;
}

.form-group select option {
    background: #141414;
    color: var(--white);
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: none;
    border-color: var(--copper);
}

/* El verde de WhatsApp era lo mas llamativo de toda la web y no es un color de
   la marca. El boton va en cobre como el resto; el canal ya lo dice el texto. */
.btn-whatsapp {
    width: 100%;
    padding: 1.05rem 2rem;
    font-size: 1rem;
}

.quote-direct {
    margin-top: 2.5rem;
    padding-top: 2.5rem;
    border-top: 1px solid var(--linea);
}

.quote-direct p {
    color: rgba(255, 255, 255, 0.6);
    margin-bottom: 1rem;
}

.direct-buttons {
    display: flex;
    gap: 0.8rem;
    flex-wrap: wrap;
}

.direct-button {
    text-decoration: none;
    padding: 0.7rem 1.3rem;
    border-radius: 4px;
    font-size: 0.9rem;
    font-weight: 600;
    transition: all var(--transition);
}

.direct-button.whatsapp {
    background: #25D366;
    color: var(--white);
}

/* Los tres botones van iguales, en linea con el resto de la web. Con el verde
   de WhatsApp y el degradado de Instagram parecian pegatinas de otras marcas. */
.direct-button.whatsapp,
.direct-button.email,
.direct-button.instagram {
    background: transparent;
    color: rgba(255, 255, 255, 0.85);
    border: 1px solid var(--linea);
}

.direct-button:hover {
    transform: translateY(-2px);
    border-color: var(--copper);
    color: var(--copper-light);
}

/* LISTA DE ESPERA — captura de email en obra-propia.html (Netlify Forms, sin backend
   propio) para avisar de la siguiente tanda antes de que se publique en ningún sitio.
   Deliberadamente estrecha (no a --ancho): es un aparte corto, no una sección grande. */
.waitlist {
    padding: var(--aire-v) var(--aire-h);
}

.waitlist-container {
    max-width: 640px;
    margin: 0 auto;
}

.waitlist-form {
    display: flex;
    gap: 0.8rem;
    flex-wrap: wrap;
    margin-top: 1.6rem;
}

.waitlist-form input[type="email"] {
    flex: 1 1 260px;
    padding: 0.9rem 1rem;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--linea);
    border-radius: 3px;
    color: var(--white);
    font-size: 0.95rem;
    font-family: inherit;
}

.waitlist-form input[type="email"]:focus {
    outline: none;
    border-color: var(--copper);
}

/* Honeypot anti-spam de Netlify Forms: existe en el DOM para que los bots lo rellenen,
   pero nunca debe verse ni ser alcanzable por teclado. */
.waitlist-honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.waitlist-nota {
    margin-top: 0.9rem;
    font-size: 0.85rem;
    color: rgba(255, 255, 255, 0.5);
}

.waitlist-ok {
    margin-top: 1.6rem;
    color: var(--copper-light);
    font-weight: 600;
}

/* PRESUPUESTO FLOTANTE */
.quote-float {
    position: fixed;
    right: 1.5rem;
    bottom: 5.3rem;
    background: var(--copper);
    color: var(--black);
    border: none;
    font-family: inherit;
    padding: 0.7rem 1.2rem;
    border-radius: 999px;
    font-weight: 600;
    font-size: 0.85rem;
    cursor: pointer;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35);
    z-index: 900;
    white-space: nowrap;
    transition: transform var(--transition), background var(--transition);
}

.quote-float:hover {
    background: var(--copper-light);
    transform: translateY(-2px);
}

@media (max-width: 500px) {
    .quote-float {
        right: 1rem;
        bottom: 4.6rem;
        padding: 0.6rem 1rem;
        font-size: 0.8rem;
    }
}

/* WHATSAPP FLOTANTE */
.whatsapp-float {
    position: fixed;
    right: 1.5rem;
    bottom: 1.5rem;
    width: 58px;
    height: 58px;
    background: #25D366;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35);
    z-index: 900;
    transition: transform var(--transition);
}

.whatsapp-float:hover {
    transform: scale(1.08);
}

.whatsapp-float svg {
    width: 30px;
    height: 30px;
    fill: var(--white);
}

@media (max-width: 500px) {
    .whatsapp-float {
        right: 1rem;
        bottom: 1rem;
        width: 52px;
        height: 52px;
    }

    .whatsapp-float svg {
        width: 26px;
        height: 26px;
    }
}

/* FOOTER */
footer {
    background: var(--gray-dark);
    padding: 4rem 2rem 1.5rem;
    border-top: 1px solid rgba(212, 148, 94, 0.1);
}

.footer-container {
    max-width: 1600px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 2rem;
    margin-bottom: 2.5rem;
}

.footer-col h3 {
    color: var(--copper);
    font-size: 1.1rem;
    margin-bottom: 0.5rem;
}

.footer-col h4 {
    font-size: 0.95rem;
    margin-bottom: 0.9rem;
    color: var(--white);
}

.footer-col p {
    color: rgba(255, 255, 255, 0.6);
    font-size: 0.9rem;
}

.footer-col a {
    display: block;
    color: rgba(255, 255, 255, 0.6);
    text-decoration: none;
    font-size: 0.9rem;
    margin-bottom: 0.6rem;
    transition: color var(--transition);
}

.footer-col a:hover {
    color: var(--copper);
}

.footer-bottom {
    max-width: 1100px;
    margin: 0 auto;
    padding-top: 1.5rem;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    text-align: center;
}

.footer-bottom p {
    color: rgba(255, 255, 255, 0.4);
    font-size: 0.8rem;
}

/* RESPONSIVE */
@media (max-width: 1000px) {
    .nav-toggle {
        display: block;
    }

    .nav-links {
        position: fixed;
        top: 72px;
        left: 0;
        right: 0;
        background: rgba(10, 10, 10, 0.98);
        flex-direction: column;
        align-items: center;
        gap: 1.5rem;
        padding: 2rem 0;
        transform: translateY(-150%);
        transition: transform var(--transition);
        border-bottom: 1px solid rgba(212, 148, 94, 0.15);
    }

    .nav-links.open {
        transform: translateY(0);
    }

    .cta-button {
        display: none;
    }
}

@media (max-width: 700px) {
    .about-container {
        flex-direction: column;
        text-align: center;
    }

    .about-content .section-title {
        text-align: center;
    }

    .about-tags,
    .trust-stats {
        justify-content: center;
    }
}

/* En móvil la foto se centra más y el velo tapa casi todo:
   el texto manda y la imagen queda de atmósfera */
@media (max-width: 700px) {
    .hero-foto {
        /* En vertical el recorte lateral es brutal: se centra en el nino, que es
           el motivo, y el velo de abajo hace el resto. */
        object-position: 50% 50%;
    }

    .hero-velo {
        background:
            linear-gradient(to bottom, rgba(10,10,10,0.72) 0%, rgba(10,10,10,0.86) 55%, var(--black) 100%);
    }

    .hero-content > * {
        max-width: 100%;
    }
}

@media (max-width: 500px) {
    nav {
        padding: 1rem 1.2rem;
    }

    .hero-buttons {
        flex-direction: column;
        width: 100%;
    }

    .hero-buttons button {
        width: 100%;
    }

    .service-photos {
        grid-auto-rows: 70px;
    }

    .before-after-grid {
        grid-template-columns: 1fr;
    }

    .lightbox {
        padding: 1.5rem 1rem;
    }

    .lightbox-close {
        top: 0.8rem;
        right: 1rem;
    }
}

/* ===== TATTOO: TARIFAS, ESTUDIO, ESTIMADOR Y PROCESO ===== */
.tattoo-info {
    padding: var(--aire-v) var(--aire-h);
    background: var(--gray-dark);
}

.tattoo-info-grid {
    max-width: 1600px;
    margin: 0 auto 4rem;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(420px, 100%), 1fr));
    gap: 3rem;
}

.tattoo-info h3 {
    font-family: 'Archivo Black', sans-serif;
    font-size: clamp(1.4rem, 2.2vw, 1.9rem);
    letter-spacing: -0.03em;
    text-transform: uppercase;
    margin-bottom: 1.8rem;
    color: var(--white);
}

/* Tarifas */
.tarifas-lista {
    list-style: none;
    border-top: 1px solid var(--linea);
}

.tarifas-lista li {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1.5rem;
    padding: 1.15rem 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    color: rgba(255, 255, 255, 0.72);
    font-size: 1rem;
}

.tarifas-lista strong {
    color: var(--copper-light);
    font-family: 'Archivo Black', sans-serif;
    font-size: clamp(1.3rem, 2vw, 1.7rem);
    letter-spacing: -0.03em;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.tarifas-nota,
.estudio-nota {
    margin-top: 1.4rem;
    font-size: 0.85rem;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.55);
}

.tarifas-nota strong {
    color: var(--copper-light);
}

/* Estudio */
.estudio-dir {
    font-size: 1.05rem;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.8);
    padding-bottom: 1.4rem;
    margin-bottom: 1.4rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.estudio-dir strong {
    color: var(--copper-light);
}

.estudio-datos {
    list-style: none;
}

.estudio-datos li {
    padding: 0.5rem 0;
    font-size: 0.92rem;
    color: rgba(255, 255, 255, 0.72);
}

.estudio-datos span {
    display: inline-block;
    min-width: 130px;
    color: rgba(255, 255, 255, 0.42);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
}

/* Estimador */
.estimador {
    max-width: var(--ancho);
    margin: 0 auto 4rem;
    padding: clamp(1.8rem, 4vw, 3.5rem);
    background: var(--black);
    border: 1px solid var(--linea-copper);
    border-radius: 4px;
}

.estimador > h3 {
    font-family: 'Archivo Black', 'Archivo', sans-serif;
    font-size: clamp(1.6rem, 3vw, 2.4rem);
    letter-spacing: -0.03em;
    line-height: 1;
    text-transform: uppercase;
    margin-bottom: clamp(1.6rem, 3vw, 2.6rem);
}

#estimadorTattoo {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr));
    gap: clamp(2rem, 4vw, 4rem);
    align-items: stretch;
}

.estimador-controles {
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
    justify-content: center;
}

/* El resultado es lo que el cliente ha venido a ver: panel propio y numero
   grande, no una linea mas del formulario. */
.estimador-resultado {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: clamp(1.8rem, 3.5vw, 3rem);
    background:
        radial-gradient(120% 100% at 50% 0%, rgba(212, 148, 94, 0.14), transparent 70%),
        rgba(255, 255, 255, 0.03);
    border: 1px solid var(--linea-copper);
    border-radius: 4px;
}

.estimador-etiqueta {
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.26em;
    color: rgba(255, 255, 255, 0.5);
    margin-bottom: 0.9rem;
}

.estimador-precio {
    font-family: 'Archivo Black', sans-serif;
    font-size: clamp(3rem, 7vw, 5rem);
    line-height: 0.95;
    letter-spacing: -0.04em;
    color: var(--copper-light);
    margin-bottom: 1.1rem;
    font-variant-numeric: tabular-nums;
}

.estimador-horas {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.8);
}

.estimador-sesiones {
    font-size: 0.88rem;
    color: rgba(255, 255, 255, 0.5);
    margin-bottom: 1.8rem;
    max-width: 40ch;
}

.estimador-resultado .btn-primary {
    padding: 1rem 2.2rem;
}

.estimador-aviso {
    margin-top: 1.4rem;
    font-size: 0.78rem;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.45);
    max-width: 42ch;
}

/* Proceso */
.proceso-tattoo {
    max-width: 1600px;
    margin: 0 auto;
}

.proceso-pasos {
    list-style: none;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(250px, 100%), 1fr));
    gap: 2.2rem;
    counter-reset: paso;
}

.proceso-pasos li {
    border-top: 2px solid var(--copper);
    padding-top: 1.2rem;
}

.paso-num {
    display: block;
    font-family: 'Archivo Black', sans-serif;
    font-size: 0.8rem;
    color: var(--copper);
    letter-spacing: 0.1em;
    margin-bottom: 0.7rem;
}

.proceso-pasos h4 {
    font-size: 1rem;
    margin-bottom: 0.5rem;
    color: var(--white);
}

.proceso-pasos p {
    font-size: 0.88rem;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.62);
}

.proceso-aviso {
    margin-top: 2.5rem;
    padding: 1.2rem 1.4rem;
    background: rgba(212, 148, 94, 0.07);
    border-left: 3px solid var(--copper);
    font-size: 0.88rem;
    line-height: 1.65;
    color: rgba(255, 255, 255, 0.72);
}

.proceso-aviso strong {
    color: var(--copper-light);
}

/* ---- Tatuajes a escala -------------------------------------------------
   Cada foto lleva data-ancho: el ancho que ocupa esa parte del cuerpo, en tanto
   por ciento de la galeria. Manda el cuerpo, no el dibujo.

   Antes se usaban los centimetros del tatuaje y salia al reves de como se ve en
   persona: una manga de 55 cm se comia la pantalla y un pecho de 20 quedaba
   pequeno. Pero mirando a alguien de frente, lo que ocupa ancho es el torso; un
   brazo es estrecho por muy largo que sea el tatuaje. Asi que una espalda o un
   pecho van al 100 %, una manga o una pierna al 33, un antebrazo al 27 y una
   muneca al 17.

   El alto lo pone la propia foto: una manga queda estrecha y alta, como un
   brazo de verdad. */
.tattoo-grid.a-escala {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 1.4rem;
    grid-template-columns: none;
}

.tattoo-grid.a-escala .gallery-item {
    aspect-ratio: auto;
    /* Se descuenta el hueco entre fotos para que dos del 50 % quepan en la
       misma fila en vez de partirse. */
    flex: 0 1 calc(var(--ancho) * 1% - 1.4rem);
    max-width: 100%;
}

.tattoo-grid.a-escala .gallery-item img {
    width: 100%;
    height: auto;
    object-fit: contain;
}

/* En movil la escala no cabe: todas al ancho. */
@media (max-width: 760px) {
    .tattoo-grid.a-escala .gallery-item {
        flex: 0 1 100%;
    }
}

/* Separador de marca entre secciones de la portada. Es una pausa, no una
   seccion: sin titulo ni texto, solo el lettering con el angel. Va al 55 % de
   opacidad para que acompane sin competir con el contenido de al lado, y sube
   al 80 % al pasar por encima. */
.separador-marca {
    display: flex;
    justify-content: center;
    padding: clamp(2.5rem, 6vw, 5rem) var(--aire-h);
    background:
        radial-gradient(70% 100% at 50% 50%, rgba(212, 148, 94, 0.07), transparent 70%),
        var(--black);
    border-top: 1px solid var(--linea);
    border-bottom: 1px solid var(--linea);
}

.separador-marca img {
    width: auto;
    height: clamp(150px, 26vw, 300px);
    max-width: 100%;
    object-fit: contain;
    opacity: 0.55;
    transition: opacity var(--transition);
}

.separador-marca:hover img {
    opacity: 0.8;
}

/* Franja de obra a sangre. La portada enseñaba cuatro imágenes para un archivo
   de mas de doscientas piezas: esta tira ensena trabajo de verdad sin texto que
   estorbe, y corta la sucesion de bloques que hacia larga la pagina.
   En escritorio caben todas; en movil se desliza con el dedo. */
.franja-obra {
    background: var(--black);
    border-top: 1px solid var(--linea);
    border-bottom: 1px solid var(--linea);
    overflow: hidden;
}

.franja-obra-tira {
    display: flex;
    gap: 2px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.franja-obra-tira::-webkit-scrollbar {
    display: none;
}

.franja-obra-tira img {
    flex: 0 0 auto;
    width: 12.5%;
    min-width: 190px;
    height: clamp(240px, 26vw, 380px);
    object-fit: cover;
    display: block;
    cursor: zoom-in;
    scroll-snap-align: start;
    filter: grayscale(0.35) brightness(0.8);
    transition: filter var(--transition), transform var(--transition);
}

.franja-obra-tira img:hover {
    filter: none;
    transform: scale(1.04);
}

/* Secciones de solo texto con una foto de fondo muy apagada. El texto manda:
   la imagen queda por debajo del 12 % para que no compita con la lectura, y
   encima va un velo que asegura el contraste. */
.con-fondo {
    position: relative;
    isolation: isolate;
}

.con-fondo::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -2;
    background-image: var(--fondo);
    background-size: cover;
    background-position: center;
    opacity: 0.12;
}

.con-fondo::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(to bottom,
        rgba(10, 10, 10, 0.82), rgba(10, 10, 10, 0.62) 50%, rgba(10, 10, 10, 0.88));
}

/* Ancho de lectura. En "Sobre mi" cada linea llegaba a 104 caracteres y en las
   preguntas a 89; lo comodo son 60-75. Por encima de 90 el ojo se pierde al
   saltar de linea y el texto cansa aunque el contenido sea bueno.
   65ch deja las lineas en torno a 70 caracteres. */
.about-text,
.faq-item p,
.proceso-pasos p,
.garantia p {
    max-width: 65ch;
}

/* La franja recortaba todas las fotos a la misma altura y algunas quedaban
   decapitadas: del tigre del pecho solo se veia el cuello. Cada una dice ahora
   por donde recortarse, y las apaisadas van mas anchas para que quepa la
   escena entera. */
.franja-obra-tira img[data-foco] {
    object-position: var(--foco, center);
}

.franja-obra-tira img[data-ancha] {
    width: 20%;
    min-width: 300px;
}

/* TIRA DE GRAFFITI (murales.html)
   Las fotos de muro son muy apaisadas: en la cuadricula de tarjetas salian
   recortadas por los lados, que es justo donde esta la pieza. Aqui van a
   sangre, todas a la misma altura, y la tira avanza sola muy despacio.
   Duracion larga a proposito: esto no es un anuncio, es un fondo que se mueve.
   Se para al pasar el raton, y quien tenga el sistema en "reducir movimiento"
   la ve quieta y la arrastra a mano. */
.tira-graffiti {
    width: 100vw;
    margin-left: calc(50% - 50vw);
    overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}

/* Separacion con margin y no con gap: el bucle salta a -50% del ancho total, y
   con `gap` esa mitad cae en medio de un hueco (8 fotos pero solo 7 huecos), asi
   que cada vuelta daba un tironcito. Con margin cada foto ocupa foto+hueco y la
   mitad cae exacta. */
.tira-via {
    display: flex;
    width: max-content;
    animation: marquee 150s linear infinite;
}

.tira-graffiti:hover .tira-via,
.tira-graffiti:focus-within .tira-via {
    animation-play-state: paused;
}

.tira-foto {
    height: clamp(190px, 26vw, 340px);
    width: auto;
    flex: none;
    margin-right: 1rem;
    display: block;
    border-radius: 4px;
    cursor: zoom-in;
    filter: brightness(0.94);
    transition: filter var(--transition);
}

.tira-foto:hover {
    filter: brightness(1.04);
}

.tira-pista {
    text-align: center;
    font-size: 0.8rem;
    color: #918b7d;
    margin: 1.1rem 0 0;
}

@media (prefers-reduced-motion: reduce) {
    .tira-graffiti {
        overflow-x: auto;
    }

    .tira-via {
        animation: none;
    }
}

/* LA FOTO DE "QUE RECIBES"
   La unica imagen de la tienda que no es un montaje. Va sola y centrada, en
   vertical, con su pie: no compite con nada y se lee como lo que es, una foto
   de alguien sosteniendo lo que te va a mandar. */
.recibes-foto {
    margin: 2.5rem auto 3.2rem;
    max-width: 460px;
    text-align: center;
}

.recibes-foto img {
    width: 100%;
    height: auto;
    border-radius: 4px;
    cursor: zoom-in;
    display: block;
}

.recibes-foto figcaption {
    margin-top: 0.9rem;
    font-size: 0.85rem;
    line-height: 1.6;
    color: #918b7d;
}
