/* Bolboreta Labs — Apps móviles nativas: estilos propios */

/* Bloque lista + móvil: sección fijada; a la izquierda la lista de puntos (se resalta el activo) y a la derecha un móvil que cambia de pantalla */
.mv-section { padding-bottom: 40px; }
.mv-wrap { display: grid; grid-template-columns: 1.1fr 1fr; gap: 40px; align-items: center; padding: 10px 0 20px; }
.mv-item { padding: 22px 0; border-top: 1px solid rgba(255,255,255,.1); opacity: .35; transition: opacity .5s ease; cursor: pointer; }
.mv-item:last-child { border-bottom: 1px solid rgba(255,255,255,.1); }
.mv-item.is-on { opacity: 1; }
.mv-num { display: inline-block; font-family: 'Inter', sans-serif; font-size: 12px; font-weight: 600; letter-spacing: .14em; color: rgba(255,255,255,.5); margin-bottom: 10px; }
.mv-item .pp-skill-list-title { color: #9f3dff; font-size: clamp(32px, 3.2vw, 48px); line-height: 1; margin-bottom: 8px; }
.mv-item p { color: #ffffff; font-size: 18px; line-height: 1.45; margin: 0; max-width: 28em; }
.mv-phone-box { display: flex; justify-content: center; }
.mv-phone { position: relative; width: 320px; height: 660px; border-radius: 52px; background: #000; border: 10px solid #1c1c1c; box-shadow: 0 40px 110px rgba(159,61,255,.28), inset 0 0 0 2px #2a2a2a; overflow: hidden; }
.mv-island { position: absolute; left: 50%; top: 14px; width: 104px; height: 30px; margin-left: -52px; border-radius: 20px; background: #000; z-index: 5; box-shadow: 0 0 0 1px #111; }
.mv-screen { position: absolute; inset: 0; background: #0b0b0b; }
.mv-scr { position: absolute; inset: 0; padding: 64px 22px 28px; opacity: 0; transform: translateY(14px) scale(.985); transition: opacity .45s ease, transform .45s ease; font-family: 'Inter', sans-serif; color: #fff; }
.mv-scr.is-on { opacity: 1; transform: none; }
.mv-scr-h { font-size: 12px; letter-spacing: .14em; color: rgba(255,255,255,.5); margin-bottom: 14px; }
.mv-scr-big { font-size: 64px; font-weight: 700; line-height: 1; letter-spacing: -.03em; margin-bottom: 6px; }
.mv-scr-sub { font-size: 14px; color: rgba(255,255,255,.6); margin-bottom: 22px; }
.mv-bar { height: 8px; border-radius: 4px; background: rgba(255,255,255,.1); margin-bottom: 12px; overflow: hidden; }
.mv-bar i { display: block; height: 100%; border-radius: 4px; background: linear-gradient(90deg, #9f3dff, #c88bff); }
.mv-row { display: flex; justify-content: space-between; font-size: 13px; color: rgba(255,255,255,.6); margin-bottom: 6px; }
.mv-card { background: #161616; border: 1px solid rgba(255,255,255,.08); border-radius: 16px; padding: 14px; margin-bottom: 12px; display: flex; gap: 12px; align-items: center; }
.mv-ava { width: 38px; height: 38px; border-radius: 12px; background: linear-gradient(135deg, #9f3dff, #4b1a86); flex: 0 0 auto; }
.mv-l1 { height: 9px; width: 60%; background: rgba(255,255,255,.7); border-radius: 4px; margin-bottom: 7px; }
.mv-l2 { height: 7px; width: 40%; background: rgba(255,255,255,.25); border-radius: 4px; }
.mv-search { height: 40px; border-radius: 12px; background: #161616; border: 1px solid rgba(255,255,255,.08); margin-bottom: 16px; }
.mv-tabs { position: absolute; left: 22px; right: 22px; bottom: 22px; height: 56px; border-radius: 18px; background: #161616; display: flex; justify-content: space-around; align-items: center; }
.mv-tabs i { width: 20px; height: 20px; border-radius: 6px; background: rgba(255,255,255,.25); } .mv-tabs i:first-child { background: #9f3dff; }
.mv-node { position: absolute; padding: 9px 12px; border-radius: 12px; background: #161616; border: 1px solid rgba(255,255,255,.1); font-size: 12px; font-weight: 600; letter-spacing: .08em; }
.mv-core { position: absolute; left: 50%; top: 50%; width: 92px; height: 92px; margin: -46px 0 0 -46px; border-radius: 28px; background: linear-gradient(135deg, #9f3dff, #4b1a86); box-shadow: 0 0 60px rgba(159,61,255,.5); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; letter-spacing: .1em; }
.mv-ver { position: relative; padding-left: 28px; margin-bottom: 26px; }
.mv-ver::before { content: ""; position: absolute; left: 6px; top: 6px; width: 10px; height: 10px; border-radius: 50%; background: #9f3dff; box-shadow: 0 0 0 5px rgba(159,61,255,.2); }
.mv-ver::after { content: ""; position: absolute; left: 10px; top: 20px; bottom: -22px; width: 2px; background: rgba(255,255,255,.12); }
.mv-ver:last-of-type::after { display: none; }
.mv-ver b { display: block; font-size: 18px; margin-bottom: 2px; } .mv-ver span { font-size: 13px; color: rgba(255,255,255,.55); }

/* pantalla de integración: nodos con icono */
.mv-node { display: inline-flex; align-items: center; gap: 7px; padding: 8px 10px; font-size: 11px; }
.mv-ico { display: inline-flex; width: 16px; height: 16px; color: #c88bff; } .mv-ico svg { width: 16px; height: 16px; fill: currentColor; }

/* pantalla de experiencia de usuario: interfaz nativa (navegación, segmentado, lista agrupada, interruptores, pestañas) */
.mv-nav { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.mv-back { font-size: 26px; line-height: 1; color: #c88bff; } .mv-navt { font-size: 17px; font-weight: 600; } .mv-navr { font-size: 14px; color: #c88bff; }
.mv-seg { display: flex; background: #1a1a1a; border-radius: 10px; padding: 3px; margin-bottom: 16px; }
.mv-seg span { flex: 1; text-align: center; font-size: 12px; padding: 7px 0; border-radius: 8px; color: rgba(255,255,255,.55); } .mv-seg span.is-on { background: #2a2a2a; color: #fff; font-weight: 600; }
.mv-group { background: #161616; border: 1px solid rgba(255,255,255,.08); border-radius: 14px; margin-bottom: 14px; overflow: hidden; }
.mv-gr { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-top: 1px solid rgba(255,255,255,.07); } .mv-gr:first-child { border-top: 0; }
.mv-gi { width: 30px; height: 30px; border-radius: 9px; flex: 0 0 auto; }
.mv-gt { flex: 1; min-width: 0; } .mv-gt b { display: block; font-size: 13px; font-weight: 600; } .mv-gt span { display: block; font-size: 11px; color: rgba(255,255,255,.5); margin-top: 2px; }
.mv-chev { font-style: normal; color: rgba(255,255,255,.35); font-size: 20px; }
.mv-switch { width: 38px; height: 22px; border-radius: 11px; background: #333; position: relative; flex: 0 0 auto; } .mv-switch::after { content: ""; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform .3s; }
.mv-switch.is-on { background: #9f3dff; } .mv-switch.is-on::after { transform: translateX(16px); }
.mv-fab { position: absolute; right: 24px; bottom: 92px; width: 52px; height: 52px; border-radius: 50%; background: #9f3dff; box-shadow: 0 12px 30px rgba(159,61,255,.45); display: flex; align-items: center; justify-content: center; font-size: 30px; font-weight: 300; line-height: 1; }
.mv-tabs-lbl span { display: flex; flex-direction: column; align-items: center; gap: 4px; font-size: 10px; color: rgba(255,255,255,.45); } .mv-tabs-lbl span.is-on { color: #fff; }
.mv-tabs-lbl span i { width: 18px; height: 18px; border-radius: 5px; background: rgba(255,255,255,.25); } .mv-tabs-lbl span.is-on i { background: #9f3dff; }
.mv-btn { position: absolute; left: 22px; right: 22px; bottom: 28px; height: 52px; border-radius: 16px; background: #9f3dff; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 14px; }
@media (max-width: 991px) {
    /* móvil: el bloque también se fija; arriba el teléfono y debajo SOLO el punto que toca (los demás aparecen uno a uno con el scroll) */
    .mv-wrap { grid-template-columns: 1fr; gap: 22px; }
    .mv-phone-box { order: -1; } .mv-phone { width: 270px; height: 553px; }
    .mv-screen { width: 300px; height: 640px; transform: scale(.8333); transform-origin: 0 0; } /* las pantallas se diseñan a 300×640 (interior del teléfono de escritorio) y se escalan al pequeño */
    .mv-list { position: relative; height: var(--mv-list-h, auto); }
    .mv-item, .mv-item:last-child { position: absolute; left: 0; right: 0; top: 0; padding: 14px 0 0; border: 0; opacity: 0; transform: translateY(14px); transition: opacity .45s ease, transform .45s ease; pointer-events: none; }
    .mv-item.is-on { opacity: 1; transform: none; pointer-events: auto; }
    .mv-item .pp-skill-list-title { font-size: 30px; } .mv-item p { font-size: 16px; }
}
@media (max-width: 991px) and (max-height: 720px) { .mv-phone { width: 230px; height: 468px; } .mv-screen { transform: scale(.7); } }

/* Solo en apps (.apps-what): en hover no se pinta el fondo claro; título y número pasan a violeta y aparece la ilustración en la columna libre */
.apps-what .cr-service-item::after { display: none; }
.apps-what .cr-service-item:hover { border-color: rgba(255, 255, 255, .12); }
.apps-what .cr-service-item:hover .cr-service-content-left span,
.apps-what .cr-service-item:hover .cr-service-title-sm { color: #9f3dff; }
.apps-what .cr-service-content-left span,
.apps-what .cr-service-title-sm { transition: color .35s ease; }
.apps-what-thumb { max-width: 520px; padding-right: 40px; opacity: 0; transform: translateY(12px); transition: opacity .5s ease, transform .5s ease; }
.apps-what-thumb img { display: block; width: 100%; height: auto; }
.apps-what .cr-service-item:hover .apps-what-thumb { opacity: 1; transform: none; }
@media (max-width: 991px) { .apps-what-thumb { opacity: 1; transform: none; padding-right: 0; margin: 16px 0 10px; } }


/* Transición «persiana» (estilo Apple) entre la sección del móvil y «Nuestra filosofía»: al llegar al final de la del móvil,
   esta queda fija (pin sin espacio, script del final) y «Nuestra filosofía» sube desde abajo por encima de ella hasta taparla
   por completo (ocupa al menos una pantalla); después todo sigue con el scroll normal. */
.apps-cover { position: relative; }
.apps-cover-under { z-index: 1; }
.apps-cover.apps-cover-under { padding-bottom: calc(40px + var(--apps-under-extra, 0px)); } /* 40px = su relleno inferior normal (.mv-section); el extra lo pone el script */
.apps-cover-a { z-index: 3; min-height: 100vh; display: flex; flex-direction: column; justify-content: center; box-shadow: 0 -24px 60px rgba(0, 0, 0, .35); }

/* Título del hero (APPS): tamaño inicial equivalente al ajuste por JS, para que no haya salto al cargar */
.ing-hero .ing-hero-word { font-size: calc((100vw - 60px) * 0.3891); }
@media (max-width: 575px) { .ing-hero .ing-hero-word { font-size: calc((100vw - 40px) * 0.3891); } }
@media (min-width: 992px) { .ing-hero .ing-hero-word { font-size: calc((100vw - 200px) * 0.3891); } }
@media (min-width: 1200px) { .ing-hero .ing-hero-word { font-size: min(calc((100vw - 200px) * 0.3891), calc(125vh - 660px)); } }
