/* =====================================================================
   assets/css/style-ext.css — DIGITAL PERÚ  (PARTE 2 de 2)
   ---------------------------------------------------------------------
   Sube este archivo TAL CUAL a:  assets/css/style-ext.css
   Peso esperado ≈ 9,500 bytes. Si pesa menos, la copia se cortó:
   vuelve a copiar desde la primera línea hasta esta línea final.
   ===================================================================== */

/* ============ 14. PORTAFOLIO ============ */
.port{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--ln);display:block;height:100%}
.port img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.port:hover img{transform:scale(1.07)}
.port .ov{position:absolute;left:0;right:0;bottom:0;padding:20px;background:linear-gradient(transparent,rgba(4,9,18,.94))}
.port h3{font-size:1rem;margin:0}
.port .tg{font-size:.68rem;color:var(--g);letter-spacing:.16em;text-transform:uppercase;font-family:var(--fb);font-weight:600;display:block;margin-bottom:4px}

/* ============ 15. LÍNEAS DE TIEMPO ============ */
.tl{position:relative;margin:0;padding:0 0 0 30px;list-style:none;border-left:1px solid var(--ln)}
.tl li{position:relative;padding:0 0 28px 20px}
.tl li:last-child{padding-bottom:0}
.tl li:before{content:'';position:absolute;left:-36px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--g)}
.tl .yr{font-family:var(--fb);color:var(--b);font-weight:700;font-size:.82rem;letter-spacing:.12em}
.tl p{color:var(--mut);font-size:.9rem;margin:4px 0 0}

/* ============ 16. ACORDEÓN ============ */
.acc{margin-bottom:12px;overflow:hidden}
.acc-h{
  width:100%;display:flex;justify-content:space-between;align-items:center;gap:14px;
  background:none;border:0;color:var(--tx);font-family:var(--fb);font-weight:600;
  font-size:.96rem;padding:18px 22px;text-align:left;cursor:pointer;
}
.acc-h:hover{color:var(--g)}
.pl{width:20px;height:20px;position:relative;flex-shrink:0}
.pl:before,.pl:after{content:'';position:absolute;background:var(--g);left:50%;top:50%;transition:.3s}
.pl:before{width:14px;height:2px;transform:translate(-50%,-50%)}
.pl:after{width:2px;height:14px;transform:translate(-50%,-50%)}
.acc.open .pl:after{transform:translate(-50%,-50%) rotate(90deg);opacity:0}
.acc-b{max-height:0;overflow:hidden;transition:max-height .45s ease}
.acc-b p{color:var(--mut);font-size:.9rem;padding:0 22px 20px;margin:0}

/* ============ 17. TESTIMONIOS ============ */
.tst-vp{overflow:hidden}
.tst-tr{display:flex;transition:transform .65s cubic-bezier(.2,.7,.2,1)}
.tst{min-width:100%;padding:10px}
.tst .q{font-size:clamp(1.02rem,2vw,1.3rem);line-height:1.65;color:var(--tx);font-weight:500}
.tst .who{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.ava{
  width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--fb);font-weight:700;background:rgba(10,132,255,.15);
  color:var(--b);border:1px solid var(--ln);flex-shrink:0;
}
.stars{color:var(--g);letter-spacing:3px;font-size:.85rem}
.tst-ctl{display:flex;gap:10px}
.tst-ctl button{
  width:44px;height:44px;border-radius:50%;border:1px solid var(--ln);
  background:var(--bg2);color:#fff;cursor:pointer;transition:.25s;
  display:flex;align-items:center;justify-content:center;
}
.tst-ctl button:hover{border-color:var(--g);color:var(--g)}
.dots{display:flex;gap:8px;align-items:center}
.dots button{width:8px;height:8px;border-radius:99px;border:0;padding:0;background:rgba(157,176,207,.3);cursor:pointer;transition:.3s}
.dots button.on{width:26px;background:var(--g)}

/* ============ 18. BANNERS CTA ============ */
.cta-b{
  position:relative;overflow:hidden;padding:48px;
  display:flex;flex-wrap:wrap;gap:26px;align-items:center;justify-content:space-between;
}
.cta-b:before{
  content:'';position:absolute;top:0;right:0;bottom:0;left:0;
  background-image:
    linear-gradient(rgba(10,132,255,.07) 1px,transparent 1px),
    linear-gradient(90deg,rgba(10,132,255,.07) 1px,transparent 1px);
  background-size:34px 34px;
}
.cta-b > *{position:relative;z-index:1}

/* ============ 19. PAGOS ============ */
.pay{
  display:inline-flex;align-items:center;gap:8px;
  border:1px solid var(--ln);border-radius:10px;padding:8px 16px;
  font-family:var(--fb);font-weight:600;font-size:.8rem;color:var(--mut);background:var(--bg2);
}
.pay b{color:#fff}

/* ============ 20. ACCESOS WHMCS ============ */
.whm{padding:22px;display:flex;gap:14px;align-items:flex-start;height:100%;transition:.3s}
.whm:hover{border-color:rgba(0,208,132,.5);transform:translateY(-4px)}
.whm .icb{
  width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  background:rgba(0,208,132,.12);color:var(--g);flex-shrink:0;
}
.whm h3{font-size:.98rem;font-weight:600}
.whm p{color:var(--mut);font-size:.82rem;margin:0}

/* ============ 21. FORMULARIO ============ */
.fld{margin-bottom:16px}
.fld label{font-family:var(--fb);font-size:.8rem;font-weight:600;color:var(--mut);display:block;margin-bottom:7px}
.fld input,.fld select,.fld textarea{
  width:100%;background:var(--bg2);border:1px solid var(--ln);border-radius:12px;
  padding:12px 16px;color:#fff;font-family:var(--fi);font-size:.92rem;transition:.2s;outline:none;
}
.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--b);box-shadow:0 0 0 3px rgba(10,132,255,.15)}
.hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}

/* ============ 22. WHATSAPP FLOTANTE ============ */
.waf{
  position:fixed;right:22px;bottom:22px;z-index:150;
  width:60px;height:60px;border-radius:50%;background:var(--g);
  display:flex;align-items:center;justify-content:center;color:#04281C;
  box-shadow:0 14px 34px -10px rgba(0,208,132,.65);transition:.3s;
}
.waf:before{content:'';position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;animation:wp 2.4s infinite}
@keyframes wp{
  0%{box-shadow:0 0 0 0 rgba(0,208,132,.5)}
  70%{box-shadow:0 0 0 16px rgba(0,208,132,0)}
  100%{box-shadow:0 0 0 0 rgba(0,208,132,0)}
}
.waf:hover{transform:scale(1.08) rotate(4deg);color:#04281C}
.waf .ic{width:28px;height:28px;fill:currentColor;stroke:none}
.waf .tip{
  position:absolute;right:74px;top:50%;transform:translateY(-50%);
  background:var(--bg2);border:1px solid var(--ln);color:var(--tx);
  padding:8px 14px;border-radius:10px;font-size:.78rem;font-family:var(--fb);
  white-space:nowrap;opacity:0;pointer-events:none;transition:.3s;
}
.waf:hover .tip{opacity:1}
@media(max-width:767px){.waf .tip{display:none}}

/* ============ 23. TOASTS ============ */
.tw{position:fixed;top:92px;right:20px;z-index:300;display:grid;gap:10px}
.tstx{
  background:var(--bg2);border:1px solid var(--ln);border-left:3px solid var(--g);
  border-radius:12px;padding:13px 18px;font-size:.87rem;font-family:var(--fb);
  box-shadow:0 20px 50px -20px rgba(0,0,0,.8);animation:fin .4s both;max-width:320px;
}
.tstx.err{border-left-color:var(--b)}

/* ============ 24. FOOTER ============ */
.foot{background:#040A17;border-top:1px solid var(--ln);padding:66px 0 0}
.f-h{font-family:var(--fb);font-weight:600;font-size:.95rem;margin-bottom:18px;color:#fff}
.f-l{display:block;color:var(--mut);font-size:.87rem;padding:5px 0;transition:.2s}
.f-l:hover{color:var(--g);padding-left:5px}
.f-bot{border-top:1px solid var(--ln);margin-top:50px;padding:20px 0;font-size:.8rem;color:var(--mut)}

/* ============ 25. GRÁFICO SEO ============ */
.chart-line{stroke-dasharray:700;stroke-dashoffset:700;transition:stroke-dashoffset 2.2s ease .3s}
.chart-wrap.on .chart-line{stroke-dashoffset:0}

/* ============ 26. LAYOUTS ============ */
.split{display:grid;gap:44px;align-items:center}
@media(min-width:992px){.split{grid-template-columns:1fr 1fr}}
.kb2{border-radius:18px;overflow:hidden;border:1px solid var(--ln)}
.kb2 img{width:100%;height:100%;object-fit:cover;animation:kb 20s ease-in-out infinite alternate}
.map{border:1px solid var(--ln);border-radius:16px;overflow:hidden}
.map iframe{width:100%;height:340px;border:0;display:block;filter:saturate(.8) contrast(1.05)}

/* ============ 27. MOVIMIENTO REDUCIDO ============ */
@media (prefers-reduced-motion: reduce){
  *,*:before,*:after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  .rv{opacity:1;transform:none}
  .lm-i{transform:none}
  .chart-line{stroke-dashoffset:0}
}
/* >>> FIN DE style-ext.css — ARCHIVO COMPLETO <<< */