/* Estilos de la vCard - UNSISTEMA 
   ========================================================================== */
/* Documento
   ========================================================================== */
    :root{
      --accent:#00C7E8;         /* cian corporativo */
      --accent2:#00E0FF;        /* cian brillante */
      --ink:#0B1220;
      --text:#0f172a;
      --muted:#475569;
      --muted2:#64748b;
      --bg:#f6f9fc;
      --card:#ffffff;
      --line:rgba(15,23,42,.10);
      --shadow: 0 18px 70px rgba(2,6,23,.14);
      --shadow2: 0 10px 30px rgba(2,6,23,.10);
      --r: 22px;
      --r2: 16px;
      --maxMobile: 430px;       /* ✅ no se expande */
    }

    *{box-sizing:border-box}
    body{
      margin:0;
      font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
      background:
        radial-gradient(900px 500px at 10% 0%, rgba(0,199,232,.16), transparent 60%),
        radial-gradient(900px 500px at 90% 10%, rgba(0,199,232,.10), transparent 55%),
        var(--bg);
      color:var(--text);
    }
    a{color:inherit; text-decoration:none}

    .page{
      min-height: 100vh;
      display:flex;
      justify-content:center;
      padding: 18px 14px 44px;
    }
    .phone{ width: min(100%, var(--maxMobile)); }
    .card{
      background: var(--card);
      border: 1px solid var(--line);
      border-radius: var(--r);
      box-shadow: var(--shadow);
      overflow:hidden;
    }

    /* ===== Header / Portada premium tech ===== */
    .banner{
      position:relative;
      height: 230px;
      background: #e2e8f0;
      isolation:isolate;
    }
    .bannerBg{
      position:absolute; inset:0;
      background-size: cover;
      background-position: center;
      opacity: 0;

      /* ✅ PRO iOS/Safari smoothing control */
      backface-visibility: hidden;
      transform: translateZ(0);
      will-change: auto;

      /* (solo para modo degradado) */
      transform-origin: center;
      transform: scale(1.03) translateZ(0);
      filter: saturate(1.05) contrast(1.05);
    }
    .bannerOverlay{
      position:absolute; inset:0;
      background:
        radial-gradient(780px 280px at 22% 18%, rgba(255,255,255,.36), transparent 55%),
        radial-gradient(650px 260px at 86% 12%, rgba(255,255,255,.24), transparent 55%),
        linear-gradient(135deg, rgba(0,199,232,.95), rgba(0,224,255,.55));
      opacity: .96;
    }
    .bannerGlow{
      position:absolute; inset:-2px;
      background: radial-gradient(480px 180px at 50% 30%, rgba(255,255,255,.22), transparent 60%);
      mix-blend-mode: overlay;
      pointer-events:none;
      opacity:.7;
    }
    .bannerTech{
      position:absolute; inset:0;
      opacity: .38;
      background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='360' height='220' viewBox='0 0 360 220'%3E%3Cg fill='none' stroke='white' stroke-opacity='.55' stroke-width='2'%3E%3Cpath d='M18 170h70m0 0v-40h56m0 0h36v-44h62'/%3E%3Ccircle cx='18' cy='170' r='4'/%3E%3Ccircle cx='88' cy='170' r='4'/%3E%3Ccircle cx='144' cy='130' r='4'/%3E%3Ccircle cx='236' cy='86' r='4'/%3E%3Cpath d='M342 64h-64m0 0V36h-74m0 0V18'/%3E%3Ccircle cx='342' cy='64' r='4'/%3E%3Ccircle cx='278' cy='64' r='4'/%3E%3Ccircle cx='204' cy='36' r='4'/%3E%3Ccircle cx='204' cy='18' r='4'/%3E%3Cpath d='M40 40h70m0 0v46h44m0 0h22'/%3E%3Ccircle cx='40' cy='40' r='4'/%3E%3Ccircle cx='110' cy='40' r='4'/%3E%3Ccircle cx='154' cy='86' r='4'/%3E%3Ccircle cx='198' cy='86' r='4'/%3E%3C/g%3E%3C/svg%3E");
      background-repeat: no-repeat;
      background-position: center;
      background-size: cover;
      mix-blend-mode: soft-light;
    }
    .bannerEdge{
      position:absolute; left:0; right:0; bottom:-1px; height:92px;
      background: linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.88) 70%, rgba(255,255,255,1) 100%);
    }

    /* ✅ Cuando HAY portada: sin degradado/overlay/tech */
    .banner.hasCover .bannerOverlay,
    .banner.hasCover .bannerTech,
    .banner.hasCover .bannerGlow{
      opacity: 0;
    }
    .banner.hasCover .bannerEdge{
      opacity: .95; /* transición suave a blanco */
    }

    /* ✅ Portada con texto nítido: sin escalado ni filtros cuando hay cover */
    .banner.hasCover .bannerBg{
      transform: none !important;
      filter: none !important;
      background-position: center;
      background-size: cover;
    }

    .avatarWrap{
      position:absolute;
      left: 50%;
      bottom: -22px;
      transform: translateX(-50%);
      width: 122px;
      height: 122px;
      border-radius: 999px;
      border: 6px solid #fff;
      box-shadow: var(--shadow2);
      background: #e2e8f0;
      overflow:hidden;
      z-index: 2;
    }
    .avatarWrap img{ width:100%; height:100%; object-fit:cover; display:block; }

    /* ===== Identidad ===== */
    .profile{
      padding: 36px 18px 14px;
      text-align:center;
    }
    .name{
      margin:0;
      font-size: 22px;
      line-height: 1.15;
      letter-spacing:.2px;
    }
    .role{
      margin: 8px 0 0;
      color: var(--muted);
      font-weight: 950;
      font-size: 14px;
    }

    /* ===== Skills: 2 líneas + separador HORIZONTAL antes de idiomas ===== */
    .skillsWrap{
      margin: 14px auto 0;
      width: 100%;
      max-width: 420px;
      display:flex;
      flex-direction:column;
      gap: 10px;
      align-items:center;
      justify-content:center;
      overflow: visible;
    }
    .skillsRow{
      width:100%;
      display:flex;
      align-items:center;
      justify-content:center;
      gap: 8px;
      flex-wrap: wrap;
      overflow: visible;
    }
    .langsDivider{
      width: 100%;
      height: 1px;
      background: rgba(15,23,42,.14);
      border-radius: 999px;
      margin: 4px 0 6px;
      box-shadow: 0 0 0 4px rgba(0,199,232,.06);
    }
    .langsRow{
      width:100%;
      display:flex;
      align-items:center;
      justify-content:center;
      gap: 8px;
      flex-wrap: wrap;
      overflow: visible;
    }

    .skill{
      position:relative;
      display:inline-flex;
      align-items:center;
      justify-content:center;
      width: 34px;
      height: 34px;
      border-radius: 999px;
      border: 1px solid rgba(0,199,232,.28);
      background: linear-gradient(180deg, #ffffff, #f7fdff);
      box-shadow: 0 10px 18px rgba(2,6,23,.06);
      cursor:pointer;
      user-select:none;
      transition: transform .12s ease, box-shadow .12s ease;
      outline: none;
      flex: 0 0 auto;
    }
    .skill:hover{ transform: translateY(-1px); box-shadow: 0 14px 26px rgba(2,6,23,.10); }
    .skill:active{ transform: translateY(0px); }
    .skill .emoji{
      font-size: 16px;
      line-height: 1;
      display:block;
      transform: translateY(1px);
    }
    .skill .flag{
      width: 18px;
      height: 12px;
      border-radius: 2px;
      object-fit: cover;
      display:block;
    }

    /* ✅ Tooltip premium */
    .skill::after{
      content: attr(data-tip);
      position:absolute;
      left: 50%;
      bottom: 44px;
      transform: translateX(-50%) translateY(6px);
      background: rgba(15,23,42,.95);
      color: #fff;
      padding: 8px 10px;
      border-radius: 12px;
      font-size: 12px;
      font-weight: 800;
      letter-spacing:.1px;
      white-space: nowrap;
      opacity:0;
      pointer-events:none;
      transition: opacity .14s ease, transform .14s ease;
      box-shadow: 0 16px 40px rgba(2,6,23,.25);
      z-index: 999;
    }
    .skill::before{
      content:"";
      position:absolute;
      left: 50%;
      bottom: 38px;
      transform: translateX(-50%) translateY(6px);
      border: 7px solid transparent;
      border-top-color: rgba(15,23,42,.95);
      opacity:0;
      pointer-events:none;
      transition: opacity .14s ease, transform .14s ease;
      z-index: 1000;
    }
    .skill:hover::after, .skill:hover::before{
      opacity:1;
      transform: translateX(-50%) translateY(0px);
    }
    .skill.active::after, .skill.active::before{
      opacity:1;
      transform: translateX(-50%) translateY(0px);
    }

    .companyRow{
      margin-top: 10px;
      display:flex;
      justify-content:center;
      align-items:center;
      gap:10px;
      color: var(--muted2);
      font-size: 17px;
      font-weight: bold;
    }
    .logo{
      width: 70px;
      height: 70px;
      border-radius: 12px;
      border: 1px solid var(--line);
      background:#fff;
      overflow:hidden;
      display:grid;
      place-items:center;
    }
    .logo img{ width:100%; height:100%; object-fit:contain; padding:5px; display:block; }

    .bio{
      margin: 14px auto 0;
      color: var(--text);
      font-size: 14.5px;
      line-height: 1.55;
      max-width: 42ch;
    }

    /* ===== Botones principales ===== */
    .btnStack{
      padding: 0 18px 16px;
      display:flex;
      flex-direction:column;
      gap: 10px;
    }
    .btn{
      display:flex;
      align-items:center;
      justify-content:center;
      gap:10px;
      width:100%;
      padding: 14px 14px;
      border-radius: 16px;
      border: 1px solid var(--line);
      background: #fff;
      color: var(--ink);
      font-weight: 950;
      font-size: 14px;
      box-shadow: 0 10px 26px rgba(2,6,23,.06);
      transition: transform .12s ease, box-shadow .12s ease;
      user-select:none;
      cursor:pointer;
    }
    .btn:hover{transform: translateY(-1px); box-shadow: 0 14px 34px rgba(2,6,23,.10)}
    .btn:active{transform: translateY(0)}
    .btnPrimary{
      background: linear-gradient(135deg, var(--accent), var(--accent2));
      border-color: rgba(0,0,0,.06);
      color: #03222a;
    }
    .btnSoft{ background: #f8fafc; }

    /* ===== Secciones ===== */
    .section{ padding: 12px 18px 0; }
    .panel{
      border: 1px solid var(--line);
      border-radius: var(--r2);
      background: #fff;
      padding: 14px;
      box-shadow: 0 10px 26px rgba(2,6,23,.05);
    }
    .h{
      margin:0 0 10px;
      font-size: 12px;
      letter-spacing: .18em;
      text-transform: uppercase;
      color: var(--muted2);
      font-weight: 950;
    }

    .grid4{
      display:grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 10px;
    }
    @media (max-width: 420px){
      .grid4{grid-template-columns: repeat(2, 1fr);}
    }
    .iconBtn{
      display:flex;
      flex-direction:column;
      align-items:center;
      justify-content:center;
      gap:8px;
      padding: 12px 10px;
      border-radius: 16px;
      border: 1px solid var(--line);
      background:#fff;
      box-shadow: 0 10px 22px rgba(2,6,23,.05);
      font-weight: 950;
      font-size: 12px;
      color: var(--ink);
      transition: transform .12s ease;
      text-align:center;
      min-height: 84px;
    }
    .iconBtn:hover{transform: translateY(-1px)}
    .iconWrap{
      width: 44px;
      height: 44px;
      border-radius: 16px;
      display:grid;
      place-items:center;
      border: 1px solid rgba(15,23,42,.08);
      background: #f8fafc;
    }
    .icon{width:22px;height:22px;display:block}

    /* ===== Acordeones / catálogos ===== */
    .catalogGrid{ display:grid; gap: 10px; }

    details.catalog{
      border: 1px solid rgba(15,23,42,.10);
      background: #fff;
      border-radius: 18px;
      box-shadow: 0 10px 26px rgba(2,6,23,.05);
      overflow:hidden;
    }
    details.catalog > summary{
      list-style:none;
      cursor:pointer;
      padding: 14px;
      display:flex;
      align-items:center;
      gap: 12px;
      user-select:none;
    }
    details.catalog > summary::-webkit-details-marker{display:none;}

    .catImg{
      width: 44px;
      height: 44px;
      border-radius: 16px;
      display:grid;
      place-items:center;
      background: rgba(0,199,232,.10);
      border: 1px solid rgba(0,199,232,.22);
      flex:0 0 auto;
      overflow:hidden;
    }
    .catImg img{
      width: 28px;
      height: 28px;
      object-fit: contain;
      display:block;
      filter: saturate(1.05);
    }

    .catTitle{ min-width:0; flex:1; }
    .catTitle b{ display:block; font-size: 14px; letter-spacing:.2px; }
    .catTitle span{ display:block; margin-top:4px; color: var(--muted); font-size: 12.8px; line-height:1.3; }

    /* ✅ Chevron cian */
    .chev{
      width: 34px;
      height: 34px;
      border-radius: 14px;
      display:grid;
      place-items:center;
      border:1px solid rgba(0,199,232,.28);
      background: #ffffff;
      flex:0 0 auto;
      transition: transform .15s ease;
      box-shadow: 0 10px 18px rgba(2,6,23,.06);
    }
    .chev svg{ width:18px; height:18px; display:block; }
    details[open] .chev{ transform: rotate(180deg); }

    .catBody{ padding: 0 14px 14px; }

    .serviceChips{ display:flex; flex-wrap:wrap; gap: 8px; margin-top: 10px; }
    .chip{
      display:inline-flex;
      align-items:center;
      gap:8px;
      padding: 9px 10px;
      border-radius: 999px;
      border: 1px solid rgba(15,23,42,.10);
      background: #f8fafc;
      font-weight: 900;
      font-size: 12.2px;
      color: var(--ink);
      transition: transform .12s ease, box-shadow .12s ease;
    }
    .chip:hover{ transform: translateY(-1px); box-shadow: 0 10px 18px rgba(2,6,23,.08); }
    .chipDot{ width:8px;height:8px;border-radius:50%; background: var(--accent); box-shadow: 0 0 0 4px rgba(0,199,232,.16); }

    /* ✅ CTA estilo pill (diferenciado de chips) */
    .catCTA{ margin-top: 12px; display:flex; gap:10px; }

    .catAction{
      flex:1;
      display:flex;
      align-items:center;
      justify-content:center;
      gap:10px;
      padding: 12px 12px;
      border-radius: 999px;
      font-weight: 950;
      font-size: 13px;
      border: 1px solid rgba(0,199,232,.28);
      box-shadow: 0 10px 22px rgba(2,6,23,.06);
      transition: transform .12s ease, box-shadow .12s ease;
      white-space: nowrap;
    }
    .catAction:hover{
      transform: translateY(-1px);
      box-shadow: 0 14px 30px rgba(2,6,23,.10);
    }
    .catActionPrimary{
      background: linear-gradient(135deg, var(--accent), var(--accent2));
      color: #03222a;
      border-color: rgba(0,0,0,.06);
    }
    .catActionSoft{
      background: rgba(0,199,232,.12);
      color: #064b58;
    }
    .catActionIcon{
      width: 18px;
      height: 18px;
      display:block;
    }

    /* ===== Horario pill ===== */
    .kvItem{
      display:flex;
      gap:12px;
      align-items:flex-start;
      padding: 12px;
      border-radius: 16px;
      background:#f8fafc;
      border: 1px solid rgba(15,23,42,.06);
    }
    .kvItem b{display:block; font-size: 13.5px}
    .kvItem span{
      display:block;
      margin-top:4px;
      color: var(--muted);
      font-size: 13px;
      line-height:1.4;
    }
    .pillLink{
      display:inline-flex;
      align-items:center;
      gap:8px;
      padding: 8px 10px;
      border-radius: 999px;
      background: rgba(0,199,232,.14);
      border: 1px solid rgba(0,199,232,.28);
      color: #064b58;
      font-weight: 950;
      font-size: 12px;
      margin-top: 10px;
      width: fit-content;
      transition: transform .12s ease;
    }
    .pillLink:hover{transform: translateY(-1px)}
    .pillDot{
      width:8px; height:8px; border-radius:50%;
      background: var(--accent);
      box-shadow: 0 0 0 4px rgba(0,199,232,.20);
    }

    /* ===== Mapas / ubicaciones ===== */
    .addrRow{
      display:flex;
      gap:10px;
      align-items:center;
      margin-top: 10px;
    }
    .miniBtn{
      margin-left:auto;
      display:inline-flex;
      align-items:center;
      justify-content:center;
      gap:10px;
      padding: 10px 12px;
      border-radius: 14px;
      border: 1px solid rgba(0,199,232,.28);
      background: linear-gradient(180deg, #ffffff, #f7fdff);
      font-weight: 950;
      font-size: 12.5px;
      color: var(--ink);
      box-shadow: 0 10px 22px rgba(2,6,23,.05);
      white-space:nowrap;
      transition: transform .12s ease, box-shadow .12s ease;
    }
    .miniBtn:hover{ transform: translateY(-1px); box-shadow: 0 14px 30px rgba(2,6,23,.08); }
    .miniIcon{ width: 18px; height: 18px; display:block; }

    .map{
      margin-top: 12px;
      border-radius: 16px;
      overflow:hidden;
      border: 1px solid rgba(15,23,42,.10);
      height: 210px;
      background:#e2e8f0;
    }
    .map iframe{width:100%; height:100%; border:0}

    .footer{
      padding: 14px 18px 18px;
      color: var(--muted2);
      font-size: 12px;
      display:flex;
      justify-content:space-between;
      align-items:center;
    }
    .link{ text-decoration: underline; text-underline-offset: 3px; }

/* ========================================================================== */
/* FIX DEFINITIVO PORTADA / COVER
   Evita que la imagen superior se recorte por los laterales en móvil.
   IMPORTANTE: se coloca al final del CSS para sobrescribir reglas anteriores.
   ========================================================================== */
.banner{
  position: relative !important;
  height: 230px !important;
  background: #ffffff !important;
  isolation: isolate !important;
  overflow: visible !important;
}

.banner.hasCover .bannerBg{
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 230px !important;

  /* CLAVE: contain muestra la imagen completa; cover la recortaba */
  background-size: contain !important;
  background-repeat: no-repeat !important;
  background-position: top center !important;
  background-color: #ffffff !important;

  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
  border-radius: 0 !important;
  overflow: visible !important;
}

.banner.hasCover .bannerOverlay,
.banner.hasCover .bannerTech,
.banner.hasCover .bannerGlow{
  display: none !important;
  opacity: 0 !important;
}

.banner.hasCover .bannerEdge{
  opacity: 0 !important;
  display: none !important;
}

/* El avatar debe seguir por encima de la portada */
.avatarWrap{
  z-index: 5 !important;
}
