/* ==========================================================================
   Link007 Herramientas
   --------------------------------------------------------------------------
   Los widgets heredan los tokens del tema Link007 cuando esta activo. Cada
   var() lleva su valor de respaldo para que el plugin siga viendose bien con
   cualquier otro tema.

   Los colores de estado (debil / aceptable / fuerte / excelente, sube / baja)
   son semanticos y viven aparte del color de acento: comunican un significado,
   no la marca.
   ========================================================================== */

.l007{
  --l007-bg:var(--bg,#ffffff);
  --l007-bg-alt:var(--bg-alt,#f5f5f7);
  --l007-text:var(--text,#1d1d1f);
  --l007-text-2:var(--text-2,#6e6e73);
  --l007-text-3:var(--text-3,#86868b);
  --l007-line:var(--line,#d2d2d7);
  --l007-accent:var(--accent,#0071e3);
  --l007-mono:var(--mono,ui-monospace,"SF Mono","Cascadia Mono",Consolas,monospace);
  --l007-sans:var(--sans,-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif);
  --l007-ease:var(--ease,cubic-bezier(.16,1,.3,1));

  --l007-debil:#d93a3a;
  --l007-aceptable:#c8811a;
  --l007-fuerte:#1f8a4c;
  --l007-excelente:#0f7a68;

  display:flex;
  flex-direction:column;
  gap:20px;
  padding:32px;
  border-radius:20px;
  border:1px solid var(--l007-line);
  background:var(--l007-bg-alt);
  color:var(--l007-text);
  font-family:var(--l007-sans);
  font-size:1rem;
  line-height:1.5;
}

.l007 *{box-sizing:border-box;}

/* --- Cabecera --- */
.l007__head{display:flex;flex-direction:column;gap:6px;}
.l007__titulo{
  margin:0;
  font-size:1.3125rem;font-weight:600;
  letter-spacing:-.015em;line-height:1.25;
  color:var(--l007-text);
}
.l007__sub{margin:0;font-size:.9375rem;color:var(--l007-text-3);}

.l007__pie{
  margin:0;padding-top:16px;
  border-top:1px solid var(--l007-line);
  font-size:.8125rem;line-height:1.5;
  color:var(--l007-text-3);
}

.l007__aviso{
  margin:0;padding:12px 16px;
  border-radius:12px;
  background:var(--l007-bg);
  border:1px solid var(--l007-line);
  font-size:.875rem;color:var(--l007-text-2);
}
.l007.is-error .l007__aviso{border-color:var(--l007-debil);color:var(--l007-debil);}

/* --- Boton principal --- */
.l007__btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:100%;padding:13px 26px;
  border:none;border-radius:980px;
  background:var(--l007-accent);color:#fff;
  font-family:inherit;font-size:1rem;font-weight:500;letter-spacing:-.01em;
  cursor:pointer;
  transition:transform .2s var(--l007-ease),filter .2s var(--l007-ease);
}
.l007__btn:hover:not(:disabled){filter:brightness(1.08);transform:scale(1.02);}
.l007__btn:disabled{opacity:.5;cursor:not-allowed;}

.l007 :where(button,input,[tabindex]):focus-visible{
  outline:2px solid var(--l007-accent);
  outline-offset:3px;
}

/* --- Lista de datos --- */
.l007__datos{margin:0;display:flex;flex-direction:column;gap:0;}
.l007__fila{
  display:flex;justify-content:space-between;align-items:baseline;gap:20px;
  padding:13px 0;
  border-bottom:1px solid var(--l007-line);
}
.l007__fila:last-child{border-bottom:0;}
.l007__fila dt{font-size:.875rem;color:var(--l007-text-3);flex:none;}
.l007__fila dd{
  margin:0;text-align:right;
  font-size:.9375rem;color:var(--l007-text);
  overflow-wrap:anywhere;
}

/* --- Esqueleto de carga --- */
.l007__skel{
  display:inline-block;height:1em;vertical-align:-.15em;
  border-radius:6px;
  background:linear-gradient(90deg,
    var(--l007-line) 25%,
    color-mix(in srgb,var(--l007-line) 45%,transparent) 50%,
    var(--l007-line) 75%);
  background-size:200% 100%;
  animation:l007-brillo 1.4s linear infinite;
}
@keyframes l007-brillo{
  0%{background-position:200% 0;}
  100%{background-position:-200% 0;}
}

/* ==========================================================================
   IP publica
   ========================================================================== */
.ip__principal{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:22px;border-radius:14px;
  background:var(--l007-bg);
  border:1px solid var(--l007-line);
}
.ip__valor{
  flex:1;min-width:0;
  font-family:var(--l007-mono);
  font-variant-numeric:tabular-nums;
  font-size:clamp(1.375rem,3.4vw,1.875rem);
  font-weight:600;letter-spacing:-.02em;
  overflow-wrap:anywhere;
  background:none;padding:0;
}

/* ==========================================================================
   Cotizaciones
   ========================================================================== */
.cot__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
@media (max-width:760px){.cot__grid{grid-template-columns:1fr;}}

.cot__item{
  display:flex;flex-direction:column;gap:8px;
  padding:22px;border-radius:14px;
  background:var(--l007-bg);
  border:1px solid var(--l007-line);
}
.cot__item--destacado{border-color:var(--l007-accent);}

.cot__etq{
  font-family:var(--l007-mono);
  font-size:.6875rem;font-weight:600;
  letter-spacing:.09em;text-transform:uppercase;
  color:var(--l007-text-3);
}
.cot__valor{
  font-family:var(--l007-mono);
  font-variant-numeric:tabular-nums;
  font-size:1.5rem;font-weight:600;letter-spacing:-.025em;line-height:1.1;
  overflow-wrap:anywhere;
}
.cot__nota{font-size:.8125rem;color:var(--l007-text-3);}
.cot__cambio{font-size:.8125rem;font-weight:600;}
.cot__cambio.es-sube{color:var(--l007-fuerte);}
.cot__cambio.es-baja{color:var(--l007-debil);}

/* ==========================================================================
   SafeKey
   ========================================================================== */
.sk__salida{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:22px;border-radius:14px;
  background:var(--l007-bg);
  border:1px solid var(--l007-line);
}
.sk__clave{
  flex:1;min-width:0;
  font-family:var(--l007-mono);
  font-size:clamp(1.0625rem,2.6vw,1.5rem);
  font-weight:600;letter-spacing:0;
  overflow-wrap:anywhere;
  background:none;padding:0;
  color:var(--l007-text);
}

.sk__copiar{
  flex:none;
  padding:9px 18px;border-radius:980px;
  border:1px solid var(--l007-accent);
  background:transparent;color:var(--l007-accent);
  font-family:inherit;font-size:.875rem;font-weight:500;
  cursor:pointer;
  transition:background-color .2s var(--l007-ease),color .2s var(--l007-ease);
}
.sk__copiar:hover:not(:disabled){background:color-mix(in srgb,var(--l007-accent) 10%,transparent);}
.sk__copiar:disabled{opacity:.45;cursor:not-allowed;}
.sk__copiar.is-ok{background:var(--l007-fuerte);border-color:var(--l007-fuerte);color:#fff;}

/* --- Medidor de fuerza --- */
.sk__fuerza{display:flex;flex-direction:column;gap:8px;}
.sk__barra{
  height:4px;border-radius:999px;
  background:var(--l007-line);
  overflow:hidden;
}
.sk__barra > span{
  display:block;height:100%;width:0;
  border-radius:999px;
  background:var(--l007-text-3);
  transition:width .35s var(--l007-ease),background-color .35s var(--l007-ease);
}
.sk__barra > span.es-debil{background:var(--l007-debil);}
.sk__barra > span.es-aceptable{background:var(--l007-aceptable);}
.sk__barra > span.es-fuerte{background:var(--l007-fuerte);}
.sk__barra > span.es-excelente{background:var(--l007-excelente);}
.sk__entropia{
  margin:0;
  font-family:var(--l007-mono);
  font-size:.75rem;letter-spacing:.04em;
  color:var(--l007-text-3);
}

/* --- Controles --- */
.sk__control{
  display:flex;flex-direction:column;gap:10px;
  margin:0;padding:0;border:0;
}
.sk__control > label,
.sk__control > legend{
  display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding:0;
  font-size:.875rem;color:var(--l007-text-2);
}
.sk__control > label b{
  font-family:var(--l007-mono);
  font-variant-numeric:tabular-nums;
  font-size:1rem;color:var(--l007-text);
}

.sk__control input[type="range"]{
  width:100%;height:4px;margin:0;
  -webkit-appearance:none;appearance:none;
  background:var(--l007-line);
  border-radius:999px;
  cursor:pointer;
}
.sk__control input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;
  width:20px;height:20px;border-radius:50%;
  background:var(--l007-accent);
  border:3px solid var(--l007-bg);
  box-shadow:0 1px 4px rgba(0,0,0,.25);
  cursor:pointer;
}
.sk__control input[type="range"]::-moz-range-thumb{
  width:20px;height:20px;border-radius:50%;
  background:var(--l007-accent);
  border:3px solid var(--l007-bg);
  box-shadow:0 1px 4px rgba(0,0,0,.25);
  cursor:pointer;
}

.sk__niveles{display:flex;flex-direction:column;gap:10px;}
.sk__nivel{
  display:flex;align-items:center;gap:10px;
  padding:12px 16px;border-radius:12px;
  border:1px solid var(--l007-line);
  background:var(--l007-bg);
  font-size:.9375rem;color:var(--l007-text-2);
  cursor:pointer;
  transition:border-color .2s var(--l007-ease);
}
.sk__nivel:hover{border-color:var(--l007-text-3);}
.sk__nivel:has(input:checked){
  border-color:var(--l007-accent);
  color:var(--l007-text);
}
.sk__nivel input{accent-color:var(--l007-accent);margin:0;flex:none;}

/* ==========================================================================
   Movimiento reducido
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  .l007 *,
  .l007 *::before,
  .l007 *::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
  }
  .l007__skel{animation:none;background:var(--l007-line);}
}
