/*
  IngSoft V84.17 — Contraste semántico por superficies reales
  Objetivo: cerrar pérdida de contraste sin parches visuales ni JavaScript.
  Método: taxonomía final de superficies: oscuras, claras, tarjetas oscuras, tarjetas claras, etiquetas y controles.
*/
:root{
  --v8417-dark-950:#020A16;
  --v8417-dark-900:#06152A;
  --v8417-dark-850:#071832;
  --v8417-dark-800:#0B203A;
  --v8417-dark-card:#0A1D35;
  --v8417-dark-card-2:#102A49;
  --v8417-light-000:#FFFFFF;
  --v8417-light-050:#F7FBFF;
  --v8417-light-100:#EEF6FC;
  --v8417-line-light:#B9D9EF;
  --v8417-line-dark:rgba(139,212,255,.34);
  --v8417-ink:#071832;
  --v8417-ink-2:#213E60;
  --v8417-ink-3:#315D83;
  --v8417-white:#FFFFFF;
  --v8417-white-2:#F4FBFF;
  --v8417-cyan:#8BD4FF;
  --v8417-cyan-2:#BDEBFF;
  --v8417-cyan-dark:#245B82;
  --v8417-link-dark:#8BD4FF;
  --v8417-link-light:#005EA8;
  --v8417-red:#E41E2B;
}

/* Reset de estados que producían texto lavado */
body :is(.section-dark,.surface-dark,.v91-section,.hero-dark,.dark-section,.observatory-panel,.observatorio-panel,.science-panel-dark,.sim-shell,.lab-dark,.site-footer,footer) *,
body :is(.section-light,.surface-light,.v83-proof-panel,.learning-mode-panel,.assessment-panel,.physics-validation-panel,.scientific-report-tools) *{
  opacity:1 !important;
  filter:none !important;
  text-shadow:none !important;
}

/* A. Superficies oscuras reales */
body :is(.section-dark,.surface-dark,.v91-section,.hero-dark,.dark-section,.observatory-panel,.observatorio-panel,.science-panel-dark,.sim-shell,.lab-dark,.site-footer,footer){
  color:var(--v8417-white) !important;
  -webkit-text-fill-color:initial !important;
}
body :is(.section-dark,.surface-dark,.v91-section,.hero-dark,.dark-section,.observatory-panel,.observatorio-panel,.science-panel-dark,.sim-shell,.lab-dark,.site-footer,footer) :is(h1,h2,h3,h4,h5,h6,strong,b,.title,.v91-title){
  color:var(--v8417-white) !important;
  -webkit-text-fill-color:var(--v8417-white) !important;
}
body :is(.section-dark,.surface-dark,.v91-section,.hero-dark,.dark-section,.observatory-panel,.observatorio-panel,.science-panel-dark,.sim-shell,.lab-dark,.site-footer,footer) :is(p,li,span,small,dd,dt,label,.meta,.muted,.subtitle,.desc,.v91-lead,.v91-min){
  color:var(--v8417-white-2) !important;
  -webkit-text-fill-color:var(--v8417-white-2) !important;
}
body :is(.section-dark,.surface-dark,.v91-section,.hero-dark,.dark-section,.observatory-panel,.observatorio-panel,.science-panel-dark,.sim-shell,.lab-dark,.site-footer,footer) a:not(.btn):not(.button):not([class*="btn"]){
  color:var(--v8417-link-dark) !important;
  -webkit-text-fill-color:var(--v8417-link-dark) !important;
}

/* B. Tarjetas oscuras reales dentro de superficies oscuras */
body :is(.section-dark,.surface-dark,.v91-section,.hero-dark,.dark-section,.observatory-panel,.observatorio-panel,.science-panel-dark,.sim-shell,.lab-dark)
:is(.card,.surface-dark-card,.panel,.box,.tile,.item-card,.info-card,.data-card,.publication-card,.citation-card,.citation-panel,.summary-card,.metric-card,.report-card,.v91-sim-card,.v91-card,.v91-panel,.v91-stat,.v91-readout,.v91-chart,.lab-module-card,.lab-module-panel,.v83-repro-card){
  background:linear-gradient(180deg,var(--v8417-dark-card) 0%,var(--v8417-dark-card-2) 100%) !important;
  border:1.5px solid var(--v8417-line-dark) !important;
  color:var(--v8417-white) !important;
  -webkit-text-fill-color:initial !important;
  box-shadow:0 18px 42px rgba(0,0,0,.24) !important;
}
body :is(.section-dark,.surface-dark,.v91-section,.hero-dark,.dark-section,.observatory-panel,.observatorio-panel,.science-panel-dark,.sim-shell,.lab-dark)
:is(.card,.surface-dark-card,.panel,.box,.tile,.item-card,.info-card,.data-card,.publication-card,.citation-card,.citation-panel,.summary-card,.metric-card,.report-card,.v91-sim-card,.v91-card,.v91-panel,.v91-stat,.v91-readout,.v91-chart,.lab-module-card,.lab-module-panel,.v83-repro-card)
:is(h1,h2,h3,h4,h5,h6,strong,b,.title){
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}
body :is(.section-dark,.surface-dark,.v91-section,.hero-dark,.dark-section,.observatory-panel,.observatorio-panel,.science-panel-dark,.sim-shell,.lab-dark)
:is(.card,.surface-dark-card,.panel,.box,.tile,.item-card,.info-card,.data-card,.publication-card,.citation-card,.citation-panel,.summary-card,.metric-card,.report-card,.v91-sim-card,.v91-card,.v91-panel,.v91-stat,.v91-readout,.v91-chart,.lab-module-card,.lab-module-panel,.v83-repro-card)
:is(p,li,span,small,dd,dt,label,.meta,.muted,.subtitle,.desc){
  color:var(--v8417-cyan-2) !important;
  -webkit-text-fill-color:var(--v8417-cyan-2) !important;
}

/* C. Secciones claras y tarjetas claras reales */
body :is(.section-light,.surface-light,.light-section,.v83-proof-panel,.v83-proof-list div,.lab84-card,.lab84-panel,.lab84-sim,.lab84-flow-item,.learning-mode-panel,.assessment-panel,.assessment-rubric,.assessment-sidebar,.assessment-question,.physics-validation-panel,.scientific-report-tools,.sim-pointer-hint-pro,.v93-citation-box,.citation-output,.contact-clean-form-card,.contact-clean-info-card,.publication-card,.data-card):not(.dark):not(.is-dark){
  background:linear-gradient(180deg,var(--v8417-light-000) 0%,var(--v8417-light-050) 100%) !important;
  border-color:var(--v8417-line-light) !important;
  color:var(--v8417-ink) !important;
  -webkit-text-fill-color:initial !important;
}
body :is(.section-light,.surface-light,.light-section,.v83-proof-panel,.v83-proof-list div,.lab84-card,.lab84-panel,.lab84-sim,.lab84-flow-item,.learning-mode-panel,.assessment-panel,.assessment-rubric,.assessment-sidebar,.assessment-question,.physics-validation-panel,.scientific-report-tools,.sim-pointer-hint-pro,.v93-citation-box,.citation-output,.contact-clean-form-card,.contact-clean-info-card,.publication-card,.data-card):not(.dark):not(.is-dark)
:is(h1,h2,h3,h4,h5,h6,strong,b,dt,th,.title){
  color:var(--v8417-ink) !important;
  -webkit-text-fill-color:var(--v8417-ink) !important;
}
body :is(.section-light,.surface-light,.light-section,.v83-proof-panel,.v83-proof-list div,.lab84-card,.lab84-panel,.lab84-sim,.lab84-flow-item,.learning-mode-panel,.assessment-panel,.assessment-rubric,.assessment-sidebar,.assessment-question,.physics-validation-panel,.scientific-report-tools,.sim-pointer-hint-pro,.v93-citation-box,.citation-output,.contact-clean-form-card,.contact-clean-info-card,.publication-card,.data-card):not(.dark):not(.is-dark)
:is(p,li,span,small,dd,label,.meta,.muted,.subtitle,.desc){
  color:var(--v8417-ink-2) !important;
  -webkit-text-fill-color:var(--v8417-ink-2) !important;
}
body :is(.section-light,.surface-light,.light-section,.v83-proof-panel,.v83-proof-list div,.lab84-card,.lab84-panel,.lab84-sim,.lab84-flow-item,.learning-mode-panel,.assessment-panel,.assessment-rubric,.assessment-sidebar,.assessment-question,.physics-validation-panel,.scientific-report-tools,.sim-pointer-hint-pro,.v93-citation-box,.citation-output,.contact-clean-form-card,.contact-clean-info-card,.publication-card,.data-card):not(.dark):not(.is-dark) a:not(.btn):not(.button):not([class*="btn"]){
  color:var(--v8417-link-light) !important;
  -webkit-text-fill-color:var(--v8417-link-light) !important;
}

/* D. Observatorio: ficha reproducible declarada como lectura clara */
body.page-observatorio :is(.v83-proof-panel,.v83-proof-panel.surface-light-card){
  background:linear-gradient(180deg,#FFFFFF 0%,#F6FBFF 100%) !important;
  border:2px solid var(--v8417-line-light) !important;
  color:var(--v8417-ink) !important;
  -webkit-text-fill-color:initial !important;
}
body.page-observatorio .v83-proof-panel :is(h1,h2,h3,h4,h5,h6,strong,b,dt,.eyebrow,.eyebrow-inline){
  color:var(--v8417-ink) !important;
  -webkit-text-fill-color:var(--v8417-ink) !important;
}
body.page-observatorio .v83-proof-panel :is(p,li,span,small,dd,label,.meta,.muted,.subtitle,.desc){
  color:var(--v8417-ink-2) !important;
  -webkit-text-fill-color:var(--v8417-ink-2) !important;
}
body.page-observatorio .v83-proof-list div{
  background:#EEF6FC !important;
  border:1.5px solid var(--v8417-line-light) !important;
}
body.page-observatorio .v83-proof-list dt{color:var(--v8417-ink) !important;-webkit-text-fill-color:var(--v8417-ink) !important;}
body.page-observatorio .v83-proof-list dd{color:var(--v8417-ink-2) !important;-webkit-text-fill-color:var(--v8417-ink-2) !important;}

/* E. Observatorio: proyección científica y cards oscuras */
body.page-observatorio .section-dark .cards .card,
body.page-observatorio .section-dark .card,
body.page-observatorio .surface-dark .cards .card,
body.page-observatorio .surface-dark-card{
  background:linear-gradient(180deg,var(--v8417-dark-card) 0%,var(--v8417-dark-card-2) 100%) !important;
  border:1.5px solid var(--v8417-line-dark) !important;
  color:#FFFFFF !important;
  -webkit-text-fill-color:initial !important;
}
body.page-observatorio .section-dark .cards .card :is(h1,h2,h3,h4,h5,h6,strong,b),
body.page-observatorio .section-dark .card :is(h1,h2,h3,h4,h5,h6,strong,b){
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}
body.page-observatorio .section-dark .cards .card :is(p,li,span,small,dd,dt,label,.meta,.muted,.subtitle,.desc),
body.page-observatorio .section-dark .card :is(p,li,span,small,dd,dt,label,.meta,.muted,.subtitle,.desc){
  color:var(--v8417-cyan-2) !important;
  -webkit-text-fill-color:var(--v8417-cyan-2) !important;
}

/* F. Laboratorio: catálogo de simuladores como superficie oscura */
body.page-laboratorio .v91-section,
body.page-laboratorio .v91-section.surface-dark{
  background:linear-gradient(180deg,var(--v8417-dark-950) 0%,var(--v8417-dark-900) 100%) !important;
  color:#FFFFFF !important;
}
body.page-laboratorio .v91-section .v91-title,
body.page-laboratorio .v91-section h2,
body.page-laboratorio .v91-section h3{
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}
body.page-laboratorio .v91-sim-card,
body.page-laboratorio .v91-sim-card.surface-dark-card{
  background:linear-gradient(180deg,var(--v8417-dark-card) 0%,var(--v8417-dark-card-2) 100%) !important;
  border:1.5px solid var(--v8417-line-dark) !important;
  color:#FFFFFF !important;
  -webkit-text-fill-color:initial !important;
}
body.page-laboratorio .v91-sim-card strong{color:#FFFFFF !important;-webkit-text-fill-color:#FFFFFF !important;}
body.page-laboratorio .v91-sim-card span{color:var(--v8417-cyan-2) !important;-webkit-text-fill-color:var(--v8417-cyan-2) !important;}

/* G. Etiquetas blancas: texto oscuro, sin doble recuadro */
body :is(.v91-eyebrow,.lab84-kicker,.lab84-badge,.eyebrow,.badge-label,.section-badge,.pill-label):not(.is-dark):not(.dark){
  background:#FFFFFF !important;
  border:2px solid #58B8EA !important;
  color:var(--v8417-ink) !important;
  -webkit-text-fill-color:var(--v8417-ink) !important;
}
body :is(.v91-eyebrow,.lab84-kicker,.lab84-badge,.eyebrow,.badge-label,.section-badge,.pill-label):not(.is-dark):not(.dark) *{
  color:inherit !important;
  -webkit-text-fill-color:inherit !important;
}

/* H. Formularios, tablas y salidas */
body :is(input,select,textarea,pre,code,kbd,samp){
  background:#FFFFFF !important;
  color:var(--v8417-ink) !important;
  -webkit-text-fill-color:var(--v8417-ink) !important;
}
body :is(input,select,textarea)::placeholder{color:#557798 !important;opacity:1 !important;}
body :is(table,thead,tbody,tr,td,th){color:var(--v8417-ink) !important;-webkit-text-fill-color:var(--v8417-ink) !important;}
body thead th{background:#E8F4FC !important;color:var(--v8417-ink) !important;-webkit-text-fill-color:var(--v8417-ink) !important;}

/* I. Botones */
body :is(button,.btn,.button,.v91-btn,.lab84-btn,[class*="btn"],[class*="button"]):not(.secondary):not(.btn-outline):not(.outline){
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}
body :is(.secondary,.btn-outline,.button-outline,.outline,.lab84-btn.secondary){
  color:var(--v8417-ink) !important;
  -webkit-text-fill-color:var(--v8417-ink) !important;
  background:#FFFFFF !important;
}

/* J. Accesibilidad: foco y prevención de recorte */
body :is(a,button,input,select,textarea):focus-visible{
  outline:3px solid #8BD4FF !important;
  outline-offset:3px !important;
}
body :is(.card,.panel,.v91-sim-card,.v83-proof-panel,.v83-proof-list div,.lab84-card,.lab84-panel,.lab84-sim,.learning-mode-panel,.assessment-panel,.physics-validation-panel,.scientific-report-tools){
  overflow:visible !important;
  max-height:none !important;
}

/*
  IngSoft V84.18 — Corrección estructural de superficies DOI sobre fondo oscuro
  Alcance: panel DOI Zenodo del Laboratorio y cualquier panel DOI ubicado en superficie oscura.
  Criterio: no depender de reglas genéricas; declarar el panel como superficie oscura real.
*/

/* Taxonomía explícita: tarjeta oscura real */
body :is(.surface-dark-card,.doi-panel-dark,.card--dark,.panel--dark){
  background:linear-gradient(180deg,var(--v8417-dark-card) 0%,var(--v8417-dark-card-2) 100%) !important;
  border:1.5px solid var(--v8417-line-dark) !important;
  color:var(--v8417-white) !important;
  -webkit-text-fill-color:initial !important;
}
body :is(.surface-dark-card,.doi-panel-dark,.card--dark,.panel--dark) :is(h1,h2,h3,h4,h5,h6,strong,b,.title){
  color:var(--v8417-white) !important;
  -webkit-text-fill-color:var(--v8417-white) !important;
}
body :is(.surface-dark-card,.doi-panel-dark,.card--dark,.panel--dark) :is(p,li,span,small,dd,dt,label,.meta,.muted,.subtitle,.desc){
  color:var(--v8417-white-2) !important;
  -webkit-text-fill-color:var(--v8417-white-2) !important;
}
body :is(.surface-dark-card,.doi-panel-dark,.card--dark,.panel--dark) a:not(.btn):not(.button):not([class*="btn"]),
body :is(.surface-dark-card,.doi-panel-dark,.card--dark,.panel--dark) .v93-doi-link{
  color:var(--v8417-cyan) !important;
  -webkit-text-fill-color:var(--v8417-cyan) !important;
  font-weight:950 !important;
}

/* Laboratorio: bloque DOI oficial Zenodo como superficie oscura semántica */
body.page-laboratorio #doi-laboratorio,
body.page-laboratorio #doi-laboratorio.surface-dark{
  background:linear-gradient(180deg,var(--v8417-dark-950) 0%,var(--v8417-dark-900) 100%) !important;
  color:var(--v8417-white) !important;
  -webkit-text-fill-color:initial !important;
}
body.page-laboratorio #doi-laboratorio .v93-doi-panel,
body.page-laboratorio #doi-laboratorio .v93-doi-panel.surface-dark-card,
body.page-laboratorio #doi-laboratorio .v93-doi-panel.doi-panel-dark{
  background:linear-gradient(180deg,#0B233E 0%,#0F2E50 100%) !important;
  border:1.5px solid rgba(139,212,255,.42) !important;
  color:var(--v8417-white) !important;
  -webkit-text-fill-color:initial !important;
  box-shadow:0 24px 62px rgba(0,0,0,.30) !important;
}
body.page-laboratorio #doi-laboratorio .v93-doi-panel :is(h1,h2,h3,h4,h5,h6,strong,b){
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}
body.page-laboratorio #doi-laboratorio .v93-doi-panel :is(p,li,span,small,dd,dt,label,.meta,.muted,.subtitle,.desc){
  color:#EAF7FF !important;
  -webkit-text-fill-color:#EAF7FF !important;
}
body.page-laboratorio #doi-laboratorio .v93-doi-panel .v92-eyebrow,
body.page-laboratorio #doi-laboratorio .v93-doi-panel .v92-eyebrow *{
  background:#FFFFFF !important;
  border-color:#58B8EA !important;
  color:var(--v8417-ink) !important;
  -webkit-text-fill-color:var(--v8417-ink) !important;
}
body.page-laboratorio #doi-laboratorio .v95-citation-rail{
  display:grid !important;
  grid-template-columns:minmax(150px,220px) minmax(0,1fr) !important;
  gap:.75rem !important;
  align-items:center !important;
  margin:.9rem 0 !important;
  padding:.72rem .9rem !important;
  border-radius:18px !important;
  background:rgba(255,255,255,.075) !important;
  border:1px solid rgba(139,212,255,.24) !important;
}
body.page-laboratorio #doi-laboratorio .v95-citation-rail span,
body.page-laboratorio #doi-laboratorio .v95-citation-rail span strong{
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
  font-weight:950 !important;
}
body.page-laboratorio #doi-laboratorio .v95-citation-rail a{
  color:#4ED7FF !important;
  -webkit-text-fill-color:#4ED7FF !important;
  font-weight:950 !important;
  text-decoration:none !important;
}
body.page-laboratorio #doi-laboratorio .v95-citation-rail a:hover,
body.page-laboratorio #doi-laboratorio .v95-citation-rail a:focus-visible{
  text-decoration:underline !important;
}
body.page-laboratorio #doi-laboratorio .v93-citation-box,
body.page-laboratorio #doi-laboratorio .v93-citation-box.citation-box-dark{
  background:rgba(255,255,255,.085) !important;
  border:1px solid rgba(139,212,255,.28) !important;
  color:#EAF7FF !important;
  -webkit-text-fill-color:#EAF7FF !important;
}
body.page-laboratorio #doi-laboratorio .v93-citation-box strong{
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}

/* Home: panel DOI sobre área oscura */
body.v91-home #v93LabDoiHome,
body.v91-home #v93LabDoiHome.surface-dark-card,
body #v93LabDoiHome.doi-panel-dark{
  background:linear-gradient(180deg,#0B233E 0%,#0F2E50 100%) !important;
  border:1.5px solid rgba(139,212,255,.42) !important;
  color:#FFFFFF !important;
  -webkit-text-fill-color:initial !important;
}
body.v91-home #v93LabDoiHome :is(h1,h2,h3,h4,h5,h6,strong,b){
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}
body.v91-home #v93LabDoiHome :is(p,span,small,.meta,.muted,.subtitle,.desc){
  color:#EAF7FF !important;
  -webkit-text-fill-color:#EAF7FF !important;
}
body.v91-home #v93LabDoiHome a{
  color:#4ED7FF !important;
  -webkit-text-fill-color:#4ED7FF !important;
}

/* Citar: panel DOI dentro de sección clara conservado como superficie clara */
body.page-citar #v93LabCitation .v93-doi-panel,
body.citar-page #v93LabCitation .v93-doi-panel,
body.page-citar #v93LabCitation .v93-doi-panel.surface-light-card,
body.citar-page #v93LabCitation .v93-doi-panel.surface-light-card{
  background:linear-gradient(180deg,#FFFFFF 0%,#F7FBFF 100%) !important;
  border:1.5px solid var(--v8417-line-light) !important;
  color:var(--v8417-ink) !important;
  -webkit-text-fill-color:initial !important;
}
body.page-citar #v93LabCitation .v93-doi-panel :is(h1,h2,h3,h4,h5,h6,strong,b,p,span),
body.citar-page #v93LabCitation .v93-doi-panel :is(h1,h2,h3,h4,h5,h6,strong,b,p,span){
  color:var(--v8417-ink) !important;
  -webkit-text-fill-color:var(--v8417-ink) !important;
}
body.page-citar #v93LabCitation .v93-doi-panel a,
body.citar-page #v93LabCitation .v93-doi-panel a{
  color:var(--v8417-link-light) !important;
  -webkit-text-fill-color:var(--v8417-link-light) !important;
}
