/* IngSoft V80.99.8 · Sistema visual modular global
   Componente normalizado: botones de acción.
   Regla única: fondo celeste/azul tecnológico + texto blanco de alto contraste.
   Esta capa debe cargarse SIEMPRE al final de todos los CSS. */
:root{
  --ingsoft-action-bg:#19B6F2;
  --ingsoft-action-bg-2:#24CFF3;
  --ingsoft-action-bg-3:#128FEA;
  --ingsoft-action-text:#FFFFFF;
  --ingsoft-action-border:#72DFFF;
  --ingsoft-action-shadow:0 12px 28px rgba(0,169,255,.22), inset 0 0 0 1px rgba(255,255,255,.28);
  --ingsoft-action-shadow-hover:0 16px 34px rgba(0,190,255,.32), inset 0 0 0 1px rgba(255,255,255,.42);
  --ingsoft-action-radius:999px;
}

/* Objeto global: botón de acción IngSoft. Se excluyen enlaces de navegación y marca. */
html body :is(
  button:not(.nav-link):not(.brand):not(.skip-link),
  input[type="button"], input[type="submit"], input[type="reset"],
  a.btn, .btn, .btn-primary, .btn-secondary, .v91-btn, .v93-doi-link,
  a.tag, .tag, .card-link, .search-chip, .question-chip, .dataset-tab,
  .energy-mini-btn, .circular-mini-btn, .kinematics-mini-btn, .newton-mini-btn,
  .projectile-mini-btn, .wave-mini-btn,
  [role="button"]
):not(.nav-link):not(.brand):not(.skip-link):not(.text-link){
  box-sizing:border-box !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:.48rem !important;
  min-height:42px !important;
  width:auto !important;
  max-width:100% !important;
  padding:.72rem 1.28rem !important;
  border:1.5px solid var(--ingsoft-action-border) !important;
  border-radius:var(--ingsoft-action-radius) !important;
  background:linear-gradient(135deg,var(--ingsoft-action-bg-3) 0%,var(--ingsoft-action-bg) 44%,var(--ingsoft-action-bg-2) 100%) !important;
  background-color:var(--ingsoft-action-bg) !important;
  background-image:linear-gradient(135deg,var(--ingsoft-action-bg-3) 0%,var(--ingsoft-action-bg) 44%,var(--ingsoft-action-bg-2) 100%) !important;
  color:var(--ingsoft-action-text) !important;
  -webkit-text-fill-color:var(--ingsoft-action-text) !important;
  text-decoration:none !important;
  text-shadow:0 1px 2px rgba(0,20,42,.35) !important;
  opacity:1 !important;
  filter:none !important;
  mix-blend-mode:normal !important;
  box-shadow:var(--ingsoft-action-shadow) !important;
  font-family:inherit !important;
  font-size:clamp(.82rem,.92vw,1rem) !important;
  line-height:1.08 !important;
  font-weight:950 !important;
  letter-spacing:.015em !important;
  white-space:normal !important;
  word-break:normal !important;
  overflow-wrap:normal !important;
  cursor:pointer !important;
  isolation:isolate !important;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease, filter .18s ease !important;
}

/* Texto interno: siempre blanco y visible. */
html body :is(
  button:not(.nav-link):not(.brand):not(.skip-link),
  input[type="button"], input[type="submit"], input[type="reset"],
  a.btn, .btn, .btn-primary, .btn-secondary, .v91-btn, .v93-doi-link,
  a.tag, .tag, .card-link, .search-chip, .question-chip, .dataset-tab,
  .energy-mini-btn, .circular-mini-btn, .kinematics-mini-btn, .newton-mini-btn,
  .projectile-mini-btn, .wave-mini-btn,
  [role="button"]
):not(.nav-link):not(.brand):not(.skip-link):not(.text-link) *{
  color:var(--ingsoft-action-text) !important;
  -webkit-text-fill-color:var(--ingsoft-action-text) !important;
  text-shadow:0 1px 2px rgba(0,20,42,.35) !important;
  opacity:1 !important;
  filter:none !important;
  mix-blend-mode:normal !important;
}

html body :is(button,a.btn,.btn,.v91-btn,a.tag,.tag,.card-link,.search-chip,.question-chip,.dataset-tab,[role="button"]):not(.nav-link):not(.brand):not(.skip-link):not(.text-link):hover{
  transform:translateY(-1px) !important;
  box-shadow:var(--ingsoft-action-shadow-hover) !important;
  border-color:#B9F4FF !important;
  filter:saturate(1.08) brightness(1.02) !important;
}

html body :is(button,a.btn,.btn,.v91-btn,a.tag,.tag,.card-link,.search-chip,.question-chip,.dataset-tab,[role="button"]):not(.nav-link):not(.brand):not(.skip-link):not(.text-link):focus-visible{
  outline:3px solid rgba(255,255,255,.95) !important;
  outline-offset:3px !important;
  box-shadow:0 0 0 6px rgba(35,207,243,.35), var(--ingsoft-action-shadow-hover) !important;
}

/* Estados activos: misma regla de contraste, con borde blanco para jerarquía. */
html body :is(.is-active,.active,[aria-current="true"]):is(button,a.btn,.btn,.v91-btn,a.tag,.tag,.search-chip,.question-chip,.dataset-tab,[role="button"]):not(.nav-link):not(.brand):not(.skip-link):not(.text-link),
html body :is(button,a.btn,.btn,.v91-btn,a.tag,.tag,.search-chip,.question-chip,.dataset-tab,[role="button"]).is-active:not(.nav-link):not(.brand):not(.skip-link):not(.text-link){
  background:linear-gradient(135deg,#0C86E6 0%,#18B8F5 46%,#28D7F2 100%) !important;
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
  border-color:#FFFFFF !important;
  box-shadow:0 12px 30px rgba(0,190,255,.32), inset 0 0 0 1px rgba(255,255,255,.55) !important;
}

/* Botones deshabilitados: visibles, no fantasmas. */
html body :is(button,a.btn,.btn,.v91-btn,.search-chip,.question-chip,.dataset-tab,[role="button"]):disabled,
html body :is(button,a.btn,.btn,.v91-btn,.search-chip,.question-chip,.dataset-tab,[role="button"])[aria-disabled="true"],
html body :is(button,a.btn,.btn,.v91-btn,.search-chip,.question-chip,.dataset-tab,[role="button"]).disabled{
  background:linear-gradient(135deg,#586F82 0%,#6B8798 100%) !important;
  border-color:#B7D6E6 !important;
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
  opacity:.88 !important;
  cursor:not-allowed !important;
  transform:none !important;
}

/* Header language bar: compacto, una línea, pero con contraste blanco/celeste. */
html body .v8099-langbar :is(button,[role="button"]),
html body .langbar :is(button,[role="button"]),
html body [data-lang],
html body button[data-lang],
html body .lang-btn{
  min-height:34px !important;
  padding:.46rem .72rem !important;
  border-radius:999px !important;
  background:linear-gradient(135deg,#0C86E6 0%,#22C8F4 100%) !important;
  border:1px solid rgba(132,225,255,.85) !important;
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
  text-shadow:0 1px 2px rgba(0,15,35,.45) !important;
  font-size:.82rem !important;
  font-weight:950 !important;
  white-space:nowrap !important;
}

/* Botones pequeños y chips: no perder contraste aunque sean compactos. */
html body :is(.btn-small,.tag,.search-chip,.question-chip,.dataset-tab,.energy-mini-btn,.circular-mini-btn,.kinematics-mini-btn,.newton-mini-btn,.projectile-mini-btn,.wave-mini-btn){
  min-height:36px !important;
  padding:.54rem .92rem !important;
  font-size:.86rem !important;
}

/* En fondos claros y oscuros la apariencia se mantiene idéntica. */
html body :is(.section-light,.light,.card,.panel,.contact-card,.citation-card,.publication-card,.dataset-card) :is(button,a.btn,.btn,.v91-btn,a.tag,.tag,.card-link,.search-chip,.question-chip,.dataset-tab,[role="button"]):not(.nav-link):not(.brand):not(.skip-link):not(.text-link),
html body :is(.section-dark,.dark,.hero,.v91-hero,.observatory-main-panel,.lab-panel) :is(button,a.btn,.btn,.v91-btn,a.tag,.tag,.card-link,.search-chip,.question-chip,.dataset-tab,[role="button"]):not(.nav-link):not(.brand):not(.skip-link):not(.text-link){
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}

@media (max-width:900px){
  html body :is(button,a.btn,.btn,.btn-primary,.btn-secondary,.v91-btn,a.tag,.tag,.card-link,.search-chip,.question-chip,.dataset-tab,[role="button"]):not(.nav-link):not(.brand):not(.skip-link):not(.text-link){
    min-height:40px !important;
    padding:.64rem 1rem !important;
    font-size:.86rem !important;
  }
}
