/*
 * Frontend styles para los tres shortcodes obsead.
 *
 * Estrategia (ADR-0003): prefijo .obsead-* + reset puntual + @layer obsead
 * para asegurar prioridad sobre el theme anfitrión (Divi) sin guerra de
 * !important. No se usa Shadow DOM ni iframe (rompería la traducción
 * automática del navegador).
 *
 * Variables CSS expuestas: el cliente puede sobreescribirlas desde el
 * customizer del Observatorio sin tocar el plugin.
 */

@layer obsead {

	/* ---- root variables ----
	   Identidade visual oficial do Observatório EaD:
	     · Primary teal:  #01AEB5  (accents, links, CTAs)
	     · Deep navy:     #074C72  (text headlines, dark surface bg)
	     · Light gray bg: #f4f6f8  (light mode default)
	   Tipografia: Montserrat (carregada do Google Fonts). */
	.obsead {
		--obsead-color-primary:           #01aeb5;
		--obsead-color-primary-dark:      #018489;
		--obsead-color-navy:              #074C72;
		--obsead-color-navy-light:        #1a6b8e;
		--obsead-color-text:              #074C72;
		--obsead-color-text-muted:        #5a6a78;
		--obsead-color-bg:                #ffffff;
		--obsead-color-bg-soft:           #f4f6f8;
		--obsead-color-panel-bg:          #ffffff;
		--obsead-color-panel-border:      #d8e1e8;
		--obsead-color-pais-fill:         #b9e3e5;
		--obsead-color-pais-hover:        #018489;
		--obsead-color-pais-out-of-dataset: #cfeaec;
		--obsead-font-family:             'Montserrat', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
		--obsead-radius:                  6px;
		--obsead-shadow:                  0 6px 20px rgba(7, 76, 114, 0.08);

		box-sizing: border-box;
		font-family: var(--obsead-font-family) !important;
		color: var(--obsead-color-text);
		line-height: 1.5;
		max-width: 100%;
	}
	.obsead, .obsead * {
		font-family: var(--obsead-font-family) !important;
	}
	.obsead *,
	.obsead *::before,
	.obsead *::after {
		box-sizing: border-box;
	}

	/* ---- shared bits ---- */
	.obsead-loading,
	.obsead-empty,
	.obsead-error {
		padding: 24px;
		text-align: center;
		color: var(--obsead-color-text-muted);
		font-style: italic;
	}
	.obsead-error {
		color: #b3261e;
	}

	a.obsead-link.obsead-link {
		display: inline-block;
		padding: 6px 12px;
		border-radius: var(--obsead-radius);
		border: 1px solid var(--obsead-color-panel-border);
		background: #fff !important;
		color: var(--obsead-color-primary) !important;
		font-size: 14px;
		font-weight: 500;
		text-decoration: none !important;
		margin-right: 8px;
		margin-top: 6px;
		transition: background 120ms ease, border-color 120ms ease;
	}
	a.obsead-link.obsead-link:hover,
	a.obsead-link.obsead-link:focus {
		background: #f3f6f8 !important;
		border-color: var(--obsead-color-primary);
		color: var(--obsead-color-primary) !important;
	}
	a.obsead-link.obsead-link--primary {
		background: var(--obsead-color-primary) !important;
		color: #ffffff !important;
		border-color: var(--obsead-color-primary);
	}
	a.obsead-link.obsead-link--primary:hover,
	a.obsead-link.obsead-link--primary:focus {
		background: var(--obsead-color-primary-dark) !important;
		color: #ffffff !important;
	}

	/* ---- tooltip (compartido) ----
	   El tooltip se monta directo en <body>, fuera del wrapper .obsead.
	   Por eso doble-clase + !important en TODA su geometría: vive en el
	   reino de Divi sin las variables de scope del wrapper. */
	.obsead-tooltip.obsead-tooltip {
		position: absolute !important;
		z-index: 9999 !important;
		max-width: 320px !important;
		padding: 10px 12px !important;
		margin: 0 !important;
		background: #ffffff !important;
		border: 1px solid #e6e6ea !important;
		border-radius: 6px !important;
		box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08) !important;
		font-size: 13px !important;
		line-height: 1.4 !important;
		color: #2b2b2b !important;
		pointer-events: none;
		transition: opacity 120ms ease;
	}
	.obsead-tooltip.obsead-tooltip strong {
		display: block !important;
		margin: 0 0 4px 0 !important;
		color: #01aeb5 !important;
		font-weight: 700 !important;
	}
	.obsead-tooltip__title {
		font-weight: 600 !important;
		margin: 4px 0 !important;
	}
	.obsead-tooltip__body {
		color: #4a4a4a !important;
	}
	.obsead-tooltip__actions {
		margin-top: 8px !important;
		pointer-events: auto;
	}
	.obsead-tooltip--cronologia {
		pointer-events: auto;
	}

	/* ====================================================================
	 * Vista 1 — Mapa (estilo Flourish)
	 * ==================================================================== */

	.obsead-mapa.obsead-mapa {
		--obsead-mapa-border:    #d8dde2;
		--obsead-mapa-base:      var(--obsead-color-pais-out-of-dataset);
		--obsead-mapa-stroke:    #ffffff;
		--obsead-mapa-hover:     #1c1c1c;
		--obsead-mapa-label:     #1c1c1c;

		position: relative;
		background: var(--obsead-color-bg) !important;
		isolation: isolate;
		z-index: 1;
	}
	.obsead-mapa__toolbar {
		display: flex;
		flex-wrap: wrap;
		gap: 18px;
		align-items: center;
		margin-bottom: 14px;
	}
	.obsead-mapa__modes {
		display: inline-flex;
		border: 1px solid var(--obsead-mapa-border);
		border-radius: var(--obsead-radius);
		overflow: hidden;
		background: #fff;
	}
	.obsead-mapa__mode {
		padding: 8px 16px;
		border: 0;
		background: transparent;
		color: var(--obsead-color-text-muted);
		cursor: pointer;
		font: inherit;
		font-size: 14px;
		transition: background 120ms ease, color 120ms ease;
	}
	.obsead-mapa__mode + .obsead-mapa__mode {
		border-left: 1px solid var(--obsead-mapa-border);
	}
	.obsead-mapa__mode:hover {
		background: #f3f6f8;
	}
	.obsead-mapa__mode.is-active {
		background: var(--obsead-color-primary);
		color: #fff;
	}
	.obsead-mapa__legend-list {
		list-style: none;
		display: flex;
		flex-wrap: wrap;
		gap: 10px 16px;
		margin: 0;
		padding: 0;
		font-size: 12px;
		color: var(--obsead-color-text-muted);
	}
	.obsead-mapa__legend-list li {
		display: inline-flex;
		align-items: center;
		gap: 6px;
	}
	.obsead-mapa__legend-swatch {
		display: inline-block;
		width: 12px;
		height: 12px;
		border-radius: 2px;
		border: 1px solid rgba(0,0,0,0.08);
	}

	/* Card de altura fija. El mapa ocupa todo el espacio del card; el
	   drawer flota encima del lado derecho del card sin alterar el SVG.
	   Doble clase + !important en estructurales: defensa contra theme. */
	.obsead-mapa__card.obsead-mapa__card {
		position: relative !important;
		display: block !important;
		margin: 0 !important;
		padding: 0 !important;
		border: 1px solid var(--obsead-mapa-border) !important;
		border-radius: var(--obsead-radius);
		overflow: hidden !important;
		background: #fff !important;
		height: 540px !important;
		box-sizing: border-box;
	}
	.obsead-mapa__stage.obsead-mapa__stage {
		position: absolute !important;
		inset: 0 !important;
		top: 0 !important;
		left: 0 !important;
		right: 0 !important;
		bottom: 0 !important;
		width: 100% !important;
		height: 100% !important;
		margin: 0 !important;
		padding: 0 !important;
	}
	.obsead-mapa__svg {
		width: 100%;
		height: 100%;
		display: block;
	}
	.obsead-mapa__country {
		/* No declaramos fill aquí: el JS lo asigna con .attr('fill', ...).
		   Si declaramos fill en CSS, el cascade gana sobre el presentational
		   attribute y los países del dataset quedarían en teal. */
		stroke: var(--obsead-mapa-stroke);
		stroke-width: 0.4;
		transition: stroke-width 120ms ease, opacity 120ms ease, filter 120ms ease;
	}
	.obsead-mapa__country.is-in-dataset {
		cursor: pointer;
		stroke: #ffffff;
		stroke-width: 1.6;
		filter: drop-shadow( 0 1px 1.5px rgba(0,0,0,0.18) );
	}
	.obsead-mapa__country.is-in-dataset:hover,
	.obsead-mapa__country.is-in-dataset:focus {
		stroke: var(--obsead-mapa-hover);
		stroke-width: 2.6;
		outline: none;
		filter: drop-shadow( 0 2px 4px rgba(0,0,0,0.32) );
	}
	.obsead-mapa__label {
		font-family: var(--obsead-font-family);
		font-size: 11px;
		font-weight: 600;
		fill: var(--obsead-mapa-label);
		paint-order: stroke;
		stroke: rgba(255,255,255,0.85);
		stroke-width: 3px;
		stroke-linejoin: round;
	}

	/* Drawer flotante encima del lado derecho del card. El SVG no se mueve.
	   Selectores doble-clase + !important en propiedades estructurales:
	   reglas no-layered de Divi (aside { padding: 0 }, button reset, etc.)
	   ganarían sobre @layer obsead si no las defendemos. */
	.obsead-mapa__drawer.obsead-mapa__drawer {
		position: absolute !important;
		top: 0 !important;
		right: 0 !important;
		bottom: 0 !important;
		left: auto !important;
		width: 380px !important;
		max-width: 50% !important;
		display: flex !important;
		flex-direction: column !important;
		margin: 0 !important;
		padding: 0 !important;
		background: #fff !important;
		border-left: 1px solid var(--obsead-mapa-border) !important;
		box-shadow: -8px 0 24px rgba(0, 0, 0, 0.06);
		transform: translateX(100%);
		transition: transform 260ms ease;
		z-index: 5;
		box-sizing: border-box;
	}
	.obsead-mapa__card.has-drawer-open .obsead-mapa__drawer.obsead-mapa__drawer {
		transform: translateX(0);
	}
	button.obsead-mapa__drawer-close.obsead-mapa__drawer-close {
		position: absolute !important;
		top: 12px !important;
		right: 14px !important;
		left: auto !important;
		width: 32px !important;
		height: 32px !important;
		padding: 0 !important;
		margin: 0 !important;
		border: 0 !important;
		background: rgba(255, 255, 255, 0.92) !important;
		border-radius: 50% !important;
		font-size: 22px !important;
		line-height: 1 !important;
		cursor: pointer;
		color: var(--obsead-color-text-muted) !important;
		z-index: 2;
		box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
		text-transform: none !important;
		font-weight: 400 !important;
		letter-spacing: 0 !important;
	}
	button.obsead-mapa__drawer-close.obsead-mapa__drawer-close:hover,
	button.obsead-mapa__drawer-close.obsead-mapa__drawer-close:focus {
		background: #fff !important;
		color: #1c1c1c !important;
		outline: none;
	}
	.obsead-mapa__drawer-content.obsead-mapa__drawer-content {
		flex: 1 1 auto !important;
		overflow-y: auto !important;
		padding: 22px 24px 16px !important;
		min-height: 0 !important;
		margin: 0 !important;
	}
	.obsead-mapa__drawer-title.obsead-mapa__drawer-title {
		margin: 0 28px 18px 0 !important;
		padding: 0 !important;
		font-size: 26px !important;
		line-height: 1.15 !important;
		font-weight: 700 !important;
		color: #1c1c1c !important;
		text-transform: none !important;
		letter-spacing: 0 !important;
	}
	.obsead-mapa__drawer-section {
		margin: 0 0 16px !important;
		padding: 0 !important;
	}
	.obsead-mapa__drawer-section-title.obsead-mapa__drawer-section-title {
		margin: 0 0 4px !important;
		padding: 0 !important;
		font-size: 12px !important;
		font-weight: 700 !important;
		text-transform: uppercase !important;
		letter-spacing: 0.06em !important;
		color: var(--obsead-color-primary) !important;
		line-height: 1.3 !important;
	}
	.obsead-mapa__drawer-section-text {
		margin: 0 !important;
		padding: 0 !important;
		font-size: 14px !important;
		line-height: 1.55 !important;
		color: #2b2b2b !important;
	}
	/* Footer sticky del drawer: siempre visible, sea cual sea el scroll. */
	.obsead-mapa__drawer-footer.obsead-mapa__drawer-footer {
		flex: 0 0 auto !important;
		display: flex !important;
		flex-direction: column !important;
		align-items: flex-start !important;
		gap: 10px !important;
		padding: 14px 24px 18px !important;
		margin: 0 !important;
		border-top: 1px solid var(--obsead-color-panel-border) !important;
		background: #fff !important;
	}
	.obsead-mapa__drawer-footer.obsead-mapa__drawer-footer:empty {
		display: none !important;
	}
	/* Selectores doble-clase + !important: necesitamos vencer reglas
	   no-layered del theme anfitrión (Divi mete `a { color: ... }` en
	   .et_pb_text_inner que escapa de @layer obsead). */
	a.obsead-mapa__drawer-link.obsead-mapa__drawer-link {
		font-size: 14px;
		color: var(--obsead-color-primary) !important;
		text-decoration: underline !important;
		text-decoration-color: rgba(1, 174, 181, 0.45);
		text-underline-offset: 3px;
		background: transparent !important;
	}
	a.obsead-mapa__drawer-link.obsead-mapa__drawer-link:hover,
	a.obsead-mapa__drawer-link.obsead-mapa__drawer-link:focus {
		text-decoration-color: currentColor;
	}
	a.obsead-mapa__drawer-cta.obsead-mapa__drawer-cta.obsead-mapa__drawer-cta {
		display: inline-block !important;
		padding: 10px 18px !important;
		margin: 0 !important;
		background: var(--obsead-color-primary) !important;
		color: #ffffff !important;
		font-size: 14px !important;
		font-weight: 600 !important;
		text-decoration: none !important;
		border-radius: var(--obsead-radius) !important;
		transition: background 120ms ease;
		border: 0 !important;
		box-shadow: none !important;
		text-transform: none !important;
		letter-spacing: 0 !important;
		line-height: 1.3 !important;
	}
	a.obsead-mapa__drawer-cta.obsead-mapa__drawer-cta.obsead-mapa__drawer-cta:hover,
	a.obsead-mapa__drawer-cta.obsead-mapa__drawer-cta.obsead-mapa__drawer-cta:focus {
		background: var(--obsead-color-primary-dark) !important;
		color: #ffffff !important;
		text-decoration: none !important;
	}

	/* mobile cards */
	.obsead-mapa__cards {
		list-style: none;
		margin: 0;
		padding: 0;
		display: flex;
		flex-direction: column;
		gap: 12px;
	}
	.obsead-mapa__card-item {
		display: grid;
		grid-template-columns: 56px 1fr;
		gap: 12px;
		padding: 14px;
		border: 1px solid var(--obsead-color-panel-border);
		border-left: 4px solid var(--obsead-card-accent, var(--obsead-color-primary));
		border-radius: var(--obsead-radius);
		background: var(--obsead-color-panel-bg);
	}
	.obsead-mapa__card-flag {
		width: 56px;
		height: 56px;
		object-fit: cover;
		border-radius: 50%;
		align-self: start;
	}
	.obsead-mapa__card-flag--initial {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		background: var(--obsead-card-accent, var(--obsead-color-primary));
		color: #fff;
		font-size: 24px;
		font-weight: 700;
		line-height: 1;
		text-transform: uppercase;
	}
	.obsead-mapa__card-title {
		margin: 0 0 4px;
		font-size: 18px;
	}
	.obsead-mapa__card-meta {
		margin: 0 0 8px;
		font-size: 13px;
		color: var(--obsead-color-text-muted);
	}
	.obsead-mapa__card-desc {
		margin: 0 0 8px;
		font-size: 14px;
	}

	/* ====================================================================
	 * Vista 2 — Línea Histórica (estilo Flourish)
	 * ==================================================================== */

	.obsead-linea.obsead-linea {
		position: relative;
		background: var(--obsead-color-bg) !important;
		isolation: isolate;
		z-index: 1;
	}
	.obsead-linea__scroller {
		width: 100%;
		overflow-x: auto;
		overflow-y: visible;
		-webkit-overflow-scrolling: touch;
		/* Indicador sutil de scroll cuando hay desbordamiento horizontal */
		scrollbar-color: var(--obsead-color-panel-border) transparent;
		scrollbar-width: thin;
	}
	.obsead-linea__scroller::-webkit-scrollbar {
		height: 8px;
	}
	.obsead-linea__scroller::-webkit-scrollbar-thumb {
		background: var(--obsead-color-panel-border);
		border-radius: 4px;
	}
	.obsead-linea__scroller::-webkit-scrollbar-track {
		background: transparent;
	}
	.obsead-linea__stage {
		position: relative;
		/* width lo setea JS; min-width como fallback. */
		min-width: 980px;
	}
	.obsead-linea__svg {
		display: block;
		overflow: visible;
	}

	/* Eje grueso negro */
	.obsead-linea__axis {
		stroke: #1c1c1c;
		stroke-width: 3;
	}
	/* Ticks debajo del eje */
	.obsead-linea__tick {
		stroke: #1c1c1c;
		stroke-width: 1;
	}
	.obsead-linea__tick-label {
		fill: #6c6c70;
		font-size: 11px;
		font-family: var(--obsead-font-family);
	}
	/* Guías verticales punteadas (decorativas, pre-eje) */
	.obsead-linea__guide {
		stroke: #d4d4d8;
		stroke-width: 1;
		stroke-dasharray: 2 4;
	}
	/* Stem punteado del card al eje */
	.obsead-linea__stem {
		stroke-dasharray: 2 4;
		stroke-width: 1;
	}

	/* Cards posicionados en absolute sobre el stage. Blindadas con
	   doble clase + !important porque Divi sobreescribe div, a, p, span. */
	.obsead-linea__card.obsead-linea__card {
		display: block !important;
		position: absolute !important;
		width: 210px !important;
		background: #ffffff !important;
		border: 0 !important;
		border-top: 4px solid !important;
		border-radius: 3px !important;
		padding: 10px 12px 12px !important;
		margin: 0 !important;
		box-sizing: border-box !important;
		text-decoration: none !important;
		color: inherit !important;
		box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04) !important;
		transition: transform 120ms ease, box-shadow 120ms ease;
		z-index: 2;
	}
	a.obsead-linea__card.obsead-linea__card:hover,
	a.obsead-linea__card.obsead-linea__card:focus {
		transform: translateY(-2px);
		box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.06) !important;
		text-decoration: none !important;
		color: inherit !important;
		outline: none;
	}
	.obsead-linea__card-head.obsead-linea__card-head {
		display: flex !important;
		align-items: baseline !important;
		justify-content: space-between !important;
		gap: 8px !important;
		margin: 0 0 6px 0 !important;
		padding: 0 !important;
	}
	.obsead-linea__card-pais.obsead-linea__card-pais {
		font-weight: 700 !important;
		color: #1c1c1c !important;
		font-size: 14px !important;
		margin: 0 !important;
		padding: 0 !important;
		text-transform: none !important;
		letter-spacing: 0 !important;
		line-height: 1.3 !important;
	}
	.obsead-linea__card-anio.obsead-linea__card-anio {
		font-weight: 700 !important;
		font-size: 14px !important;
		margin: 0 !important;
		padding: 0 !important;
		text-transform: none !important;
		letter-spacing: 0 !important;
		line-height: 1.3 !important;
	}
	.obsead-linea__card-desc.obsead-linea__card-desc {
		margin: 0 !important;
		padding: 0 !important;
		font-size: 12.5px !important;
		line-height: 1.45 !important;
		color: #2b2b2b !important;
		display: -webkit-box !important;
		-webkit-line-clamp: 8;
		-webkit-box-orient: vertical;
		line-clamp: 8;
		overflow: hidden !important;
		text-overflow: ellipsis !important;
	}

	/* mobile vertical */
	.obsead-linea__vlist.obsead-linea__vlist {
		list-style: none !important;
		margin: 0 !important;
		padding: 0 !important;
	}
	.obsead-linea__vitem.obsead-linea__vitem {
		display: grid !important;
		grid-template-columns: 70px 1fr !important;
		gap: 14px !important;
		padding: 16px 0 16px 14px !important;
		margin: 0 !important;
		border-left: 3px solid var(--obsead-card-accent, var(--obsead-color-primary)) !important;
		list-style: none !important;
	}
	.obsead-linea__vitem + .obsead-linea__vitem {
		border-top: 1px solid var(--obsead-color-panel-border);
	}
	.obsead-linea__vyear.obsead-linea__vyear {
		font-size: 22px !important;
		font-weight: 700 !important;
		color: var(--obsead-card-accent, var(--obsead-color-primary)) !important;
		line-height: 1.2 !important;
		margin: 0 !important;
		padding: 0 !important;
	}
	.obsead-linea__vtitle.obsead-linea__vtitle {
		margin: 0 0 4px !important;
		padding: 0 !important;
		font-size: 16px !important;
		font-weight: 700 !important;
		color: var(--obsead-color-navy) !important;
		line-height: 1.3 !important;
	}
	.obsead-linea__vdesc.obsead-linea__vdesc {
		margin: 0 0 8px !important;
		padding: 0 !important;
		font-size: 14px !important;
		line-height: 1.55 !important;
		color: var(--obsead-color-text-muted) !important;
	}

	/* ====================================================================
	 * Vista 3 — Cronologia das Normas
	 * ==================================================================== */

	.obsead-cronologia.obsead-cronologia {
		position: relative;
		background: var(--obsead-color-bg) !important;
		isolation: isolate;
		z-index: 1;
	}
	.obsead-cronologia__scroller.obsead-cronologia__scroller {
		width: 100%;
		overflow-x: auto;
		overflow-y: visible;
		-webkit-overflow-scrolling: touch;
		background: #ffffff !important;
		scrollbar-color: var(--obsead-color-panel-border) transparent;
		scrollbar-width: thin;
		border-radius: var(--obsead-radius);
	}
	.obsead-cronologia__scroller.obsead-cronologia__scroller::-webkit-scrollbar {
		height: 8px;
	}
	.obsead-cronologia__scroller.obsead-cronologia__scroller::-webkit-scrollbar-thumb {
		background: var(--obsead-color-panel-border);
		border-radius: 4px;
	}
	.obsead-cronologia__stage.obsead-cronologia__stage {
		position: relative;
		min-width: 720px;
		background: #ffffff !important;
	}
	.obsead-cronologia__toolbar {
		display: flex;
		flex-wrap: wrap;
		gap: 12px;
		align-items: center;
		justify-content: space-between;
		margin-bottom: 12px;
	}
	.obsead-cronologia__toggles {
		display: flex;
		flex-wrap: wrap;
		gap: 6px;
	}
	button.obsead-cronologia__toggle.obsead-cronologia__toggle {
		--obsead-toggle-color: #888;
		display: inline-flex !important;
		align-items: center !important;
		gap: 8px !important;
		padding: 5px 12px !important;
		margin: 0 !important;
		font-size: 13px !important;
		font-family: inherit !important;
		font-weight: 500 !important;
		background: #fff !important;
		color: var(--obsead-color-text-muted) !important;
		border: 1px solid var(--obsead-color-panel-border) !important;
		border-radius: 999px !important;
		cursor: pointer !important;
		opacity: 0.5;
		text-transform: none !important;
		letter-spacing: 0 !important;
		line-height: 1.3 !important;
		transition: opacity 120ms ease, border-color 120ms ease;
	}
	button.obsead-cronologia__toggle.obsead-cronologia__toggle.is-active {
		opacity: 1;
		border-color: var(--obsead-toggle-color) !important;
		color: var(--obsead-color-navy) !important;
	}
	.obsead-cronologia__swatch.obsead-cronologia__swatch {
		display: inline-block !important;
		width: 10px !important;
		height: 10px !important;
		border-radius: 50% !important;
		background: var(--obsead-toggle-color) !important;
		flex: 0 0 auto !important;
		margin: 0 !important;
		padding: 0 !important;
	}
	.obsead-cronologia__actions {
		display: flex;
		gap: 6px;
	}
	.obsead-cronologia__quick {
		padding: 4px 10px;
		font-size: 12px;
		font-family: inherit;
		background: #f3f6f8;
		border: 1px solid var(--obsead-color-panel-border);
		border-radius: var(--obsead-radius);
		cursor: pointer;
	}
	.obsead-cronologia__svg {
		width: 100%;
		height: auto;
		display: block;
	}
	.obsead-cronologia__lane-bg {
		fill: #f6f8fa;
	}
	.obsead-cronologia__lane-label {
		font-size: 12px;
		font-weight: 600;
	}
	.obsead-cronologia__xaxis text {
		fill: var(--obsead-color-text-muted);
		font-size: 11px;
	}
	.obsead-cronologia__xaxis path,
	.obsead-cronologia__xaxis line {
		stroke: var(--obsead-color-panel-border);
	}
	.obsead-cronologia__dot {
		stroke: #fff;
		stroke-width: 1.5;
		cursor: pointer;
		transition: r 120ms ease, opacity 120ms ease;
	}
	.obsead-cronologia__dot:hover,
	.obsead-cronologia__dot:focus {
		r: 7;
		outline: none;
	}
	.obsead-cronologia__brush .selection {
		fill: var(--obsead-color-primary);
		fill-opacity: 0.12;
		stroke: var(--obsead-color-primary);
	}
	.obsead-cronologia__brush .handle {
		fill: var(--obsead-color-primary);
	}

	/* Mobile específico para Cronologia das Normas (swimlane). */
	@media (max-width: 768px) {
		.obsead-cronologia__toolbar {
			flex-direction: column;
			align-items: flex-start;
			gap: 14px;
		}
		.obsead-cronologia__toggles {
			gap: 8px;
		}
		button.obsead-cronologia__toggle.obsead-cronologia__toggle {
			padding: 8px 14px !important;
			font-size: 14px !important;
		}
		.obsead-cronologia__actions {
			width: 100%;
			justify-content: flex-start;
		}
	}

	/* ====================================================================
	 * Vista 3-bis — Cronologia Narrativa (alternativa, scroll-driven)
	 * ==================================================================== */

	.obsead-cronologia-narrativa.obsead-cronologia-narrativa {
		--obsead-narr-rail:        #d8dde2; /* gris-azul más visible */
		--obsead-narr-chip-bg:     #eef0f2;
		--obsead-narr-chip-text:   #4a4a4a;
		--obsead-narr-color:       #7E57C2; /* default; cada bloque la sobreescribe */
		/* Offset superior para sticky/anchor cuando el theme tiene header
		   fijo. El cliente puede ajustar:
		   .obsead-cronologia-narrativa { --obsead-fixed-header: 140px; } */
		--obsead-fixed-header:     200px;
		position: relative;
		background: var(--obsead-color-bg) !important;
		isolation: isolate;
		z-index: 1;
	}
	.obsead-cronologia-narrativa.obsead-cronologia-narrativa .obsead-crononarr__right.obsead-crononarr__right::before {
		background: var(--obsead-narr-rail) !important;
	}
	/* Anchor scroll: cuando se hace clic en el nav, queremos que el bloque
	   no quede oculto bajo el header fijo del Observatorio. */
	.obsead-crononarr__bloco {
		scroll-margin-top: var(--obsead-fixed-header);
	}
	html {
		scroll-behavior: smooth;
	}

	/* Mini-nav de países (vive dentro de la columna izquierda sticky) */
	.obsead-crononarr__nav.obsead-crononarr__nav {
		display: flex !important;
		flex-wrap: wrap !important;
		gap: 6px !important;
		margin: 0 0 18px 0 !important;
		padding: 0 0 14px 0 !important;
		border-bottom: 1px solid var(--obsead-color-panel-border) !important;
		list-style: none !important;
	}
	a.obsead-crononarr__nav-item.obsead-crononarr__nav-item {
		display: inline-flex !important;
		align-items: center !important;
		gap: 6px !important;
		padding: 5px 12px !important;
		margin: 0 !important;
		font-size: 13px !important;
		font-weight: 500 !important;
		color: var(--obsead-color-text-muted) !important;
		background: transparent !important;
		border: 1px solid var(--obsead-color-panel-border) !important;
		border-radius: 999px !important;
		text-decoration: none !important;
		text-transform: none !important;
		letter-spacing: 0 !important;
		line-height: 1.4 !important;
		transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
	}
	a.obsead-crononarr__nav-item.obsead-crononarr__nav-item:hover,
	a.obsead-crononarr__nav-item.obsead-crononarr__nav-item:focus,
	a.obsead-crononarr__nav-item.obsead-crononarr__nav-item.is-active {
		color: #1c1c1c !important;
		background: #fff !important;
		border-color: var(--obsead-narr-color) !important;
	}
	.obsead-crononarr__nav-dot.obsead-crononarr__nav-dot {
		display: inline-block !important;
		width: 8px !important;
		height: 8px !important;
		border-radius: 50% !important;
		background: var(--obsead-narr-color) !important;
		flex: 0 0 auto !important;
		margin: 0 !important;
		padding: 0 !important;
	}

	/* Layout split */
	.obsead-crononarr__layout.obsead-crononarr__layout {
		display: grid !important;
		grid-template-columns: minmax(260px, 38%) 1fr !important;
		gap: 36px !important;
		margin: 0 !important;
		padding: 0 !important;
	}

	/* Columna izquierda — sticky con stack de fichas (solo una visible).
	   padding-right reserva espacio para que el texto no toque el rail. */
	.obsead-crononarr__left.obsead-crononarr__left {
		position: sticky !important;
		top: var(--obsead-fixed-header) !important;
		align-self: start !important;
		min-height: 360px;
		padding: 0 24px 0 0 !important;
		margin: 0 !important;
		max-width: 100%;
		box-sizing: border-box;
	}
	.obsead-crononarr__ficha {
		display: none;
		padding: 4px 4px 0;
	}
	.obsead-crononarr__ficha.is-active {
		display: block;
		animation: obsead-narr-fadein 240ms ease;
	}
	@keyframes obsead-narr-fadein {
		from { opacity: 0; transform: translateY(4px); }
		to   { opacity: 1; transform: none; }
	}
	/* Avatar circular del país: bandera (cuando existe) o inicial grande
	   sobre fondo del color identitario. */
	.obsead-crononarr__ficha-avatar.obsead-crononarr__ficha-avatar {
		width: 140px !important;
		height: 140px !important;
		border-radius: 50% !important;
		overflow: hidden !important;
		margin: 0 0 22px 0 !important;
		padding: 0 !important;
		background: #f4f4f6 !important;
		display: flex !important;
		align-items: center !important;
		justify-content: center !important;
		box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);
		box-sizing: border-box;
	}
	.obsead-crononarr__ficha-avatar.obsead-crononarr__ficha-avatar img {
		width: 100% !important;
		height: 100% !important;
		object-fit: cover !important;
		display: block !important;
		margin: 0 !important;
		padding: 0 !important;
		max-width: none !important;
	}
	.obsead-crononarr__ficha-avatar--initial.obsead-crononarr__ficha-avatar--initial {
		background:
			radial-gradient( circle at 30% 25%, rgba(255,255,255,0.3), transparent 60% ),
			var(--obsead-narr-color) !important;
	}
	.obsead-crononarr__ficha-avatar--initial.obsead-crononarr__ficha-avatar--initial span {
		font-size: 64px !important;
		font-weight: 700 !important;
		color: #ffffff !important;
		line-height: 1 !important;
		letter-spacing: -0.02em !important;
		text-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
		display: inline-block !important;
		margin: 0 !important;
		padding: 0 !important;
		text-transform: none !important;
		font-family: inherit !important;
	}
	.obsead-crononarr__ficha-nome.obsead-crononarr__ficha-nome {
		margin: 0 0 4px 0 !important;
		padding: 0 !important;
		font-size: 22px !important;
		font-weight: 700 !important;
		color: #1c1c1c !important;
		line-height: 1.2 !important;
		text-transform: none !important;
		letter-spacing: 0 !important;
	}
	.obsead-crononarr__ficha-anos.obsead-crononarr__ficha-anos {
		margin: 0 0 16px 0 !important;
		padding: 0 !important;
		font-size: 28px !important;
		font-weight: 700 !important;
		color: var(--obsead-narr-color) !important;
		letter-spacing: 0.02em !important;
		line-height: 1.2 !important;
		text-transform: none !important;
	}
	.obsead-crononarr__ficha-texto.obsead-crononarr__ficha-texto {
		margin: 0 0 16px 0 !important;
		padding: 0 !important;
		font-size: 14px !important;
		line-height: 1.55 !important;
		color: #2b2b2b !important;
		display: -webkit-box !important;
		-webkit-line-clamp: 9;
		-webkit-box-orient: vertical;
		line-clamp: 9;
		overflow: hidden !important;
		text-overflow: ellipsis !important;
	}
	a.obsead-crononarr__ficha-link.obsead-crononarr__ficha-link {
		display: inline-block;
		font-size: 13px;
		font-weight: 600;
		color: var(--obsead-narr-color) !important;
		text-decoration: none !important;
		border-bottom: 1px solid currentColor;
		padding-bottom: 1px;
	}
	a.obsead-crononarr__ficha-link.obsead-crononarr__ficha-link:hover,
	a.obsead-crononarr__ficha-link.obsead-crononarr__ficha-link:focus {
		opacity: 0.8;
	}

	/* Columna derecha — el rail, los chips y los dots viven en una grilla
	   propia. Layout: una columna de 80px (chips + rail) + el contenido. */
	.obsead-crononarr__right.obsead-crononarr__right {
		position: relative !important;
		padding: 0 0 0 90px !important;
		margin: 0 !important;
	}
	.obsead-crononarr__right.obsead-crononarr__right::before {
		/* Rail vertical centrado en x=80 (entre los chips a la izquierda
		   y el contenido a la derecha). */
		content: '';
		position: absolute;
		left: 80px;
		top: 0;
		bottom: 0;
		width: 2px;
		background: var(--obsead-narr-rail);
		z-index: 0;
	}

	.obsead-crononarr__bloco.obsead-crononarr__bloco {
		position: relative;
		padding: 28px 0 60px !important;
		margin: 0 !important;
		/* Cada país ocupa al menos una pantalla — fuerza scroll para el siguiente. */
		min-height: calc(100vh - 80px);
		display: flex !important;
		flex-direction: column !important;
		/* Compensar header fijo del Observatorio cuando se hace anchor scroll */
		scroll-margin-top: 100px;
	}
	.obsead-crononarr__bloco.obsead-crononarr__bloco + .obsead-crononarr__bloco.obsead-crononarr__bloco {
		border-top: 1px dashed var(--obsead-color-panel-border);
	}

	.obsead-crononarr__bloco-header.obsead-crononarr__bloco-header {
		display: flex !important;
		align-items: center !important;
		gap: 14px !important;
		margin: 0 0 22px 0 !important;
		padding: 0 !important;
		position: relative;
	}
	.obsead-crononarr__bloco-dot.obsead-crononarr__bloco-dot {
		/* Posición absoluta relativa al .obsead-crononarr__bloco (padre con
		   position: relative). Centrado sobre el rail en x=80. */
		position: absolute !important;
		left: -16px !important;  /* rail está 80px desde el borde del right; el bloque arranca tras padding-left:90px del right; relativo al bloque, el rail está en -10px. Restamos 6px más para centrar el dot de 18px. */
		top: 28px !important;
		width: 18px !important;
		height: 18px !important;
		border-radius: 50% !important;
		background: var(--obsead-narr-color) !important;
		box-shadow: 0 0 0 4px #fff !important;
		margin: 0 !important;
		padding: 0 !important;
		z-index: 2;
		flex: 0 0 auto !important;
	}
	.obsead-crononarr__bloco-nome.obsead-crononarr__bloco-nome {
		margin: 0 !important;
		padding: 0 !important;
		font-size: 15px !important;
		font-weight: 700 !important;
		color: var(--obsead-narr-color) !important;
		letter-spacing: 0.06em !important;
		text-transform: uppercase !important;
		line-height: 1.3 !important;
	}

	.obsead-crononarr__events.obsead-crononarr__events {
		list-style: none !important;
		margin: 0 !important;
		padding: 0 !important;
	}
	.obsead-crononarr__event.obsead-crononarr__event {
		position: relative;
		display: grid !important;
		grid-template-columns: 56px 1fr !important;
		column-gap: 28px !important;
		padding: 12px 0 !important;
		/* Tirar el evento hacia la izquierda para que ocupe la columna del
		   chip-rail. El bloque arranca tras padding-left:90px del right;
		   restamos 90px para alcanzar el borde izquierdo del right column. */
		margin: 0 0 0 -90px !important;
		list-style: none !important;
	}
	.obsead-crononarr__event.obsead-crononarr__event::before,
	.obsead-crononarr__event.obsead-crononarr__event::marker {
		content: none !important;
	}
	.obsead-crononarr__event-yearchip.obsead-crononarr__event-yearchip {
		justify-self: end !important;
		align-self: start !important;
		font-size: 12px !important;
		font-weight: 700 !important;
		color: var(--obsead-narr-chip-text) !important;
		background: var(--obsead-narr-chip-bg) !important;
		padding: 4px 10px !important;
		margin: 0 !important;
		border: 0 !important;
		border-radius: 4px !important;
		letter-spacing: 0.04em !important;
		min-width: 56px !important;
		text-align: center !important;
		grid-column: 1 !important;
		text-transform: none !important;
		line-height: 1.3 !important;
		display: inline-block !important;
		transition: background 200ms ease, color 200ms ease, transform 200ms ease;
	}
	.obsead-crononarr__event-bullet.obsead-crononarr__event-bullet {
		/* Centrado en el rail (rail x=80 dentro del right; relative al
		   evento que tiene margin-left:-90px, el rail cae en x=80. El
		   bullet de 12px se centra restando 6: x=74). */
		position: absolute !important;
		left: 74px !important;
		top: 18px !important;
		width: 12px !important;
		height: 12px !important;
		border-radius: 50% !important;
		background: #fff !important;
		border: 2px solid var(--obsead-narr-color) !important;
		margin: 0 !important;
		padding: 0 !important;
		z-index: 1;
		transition: background 200ms ease, transform 200ms ease, box-shadow 200ms ease;
	}
	/* Estado activo del evento (highlight conforme entra al trigger del scroll) */
	.obsead-crononarr__event.is-active .obsead-crononarr__event-yearchip {
		background: var(--obsead-narr-color);
		color: #ffffff;
		transform: translateX(-2px);
	}
	.obsead-crononarr__event.is-active .obsead-crononarr__event-bullet {
		background: var(--obsead-narr-color);
		transform: scale(1.3);
		box-shadow: 0 0 0 4px #fff, 0 0 0 6px var(--obsead-narr-color);
	}
	.obsead-crononarr__event.is-active .obsead-crononarr__event-title {
		color: #1c1c1c;
	}
	.obsead-crononarr__event-body.obsead-crononarr__event-body {
		grid-column: 2 !important;
		padding: 0 0 0 22px !important;
		margin: 0 !important;
	}
	.obsead-crononarr__event-date.obsead-crononarr__event-date {
		font-size: 12px !important;
		color: var(--obsead-color-text-muted) !important;
		margin: 0 0 2px 0 !important;
		padding: 0 !important;
		line-height: 1.3 !important;
	}
	.obsead-crononarr__event-title.obsead-crononarr__event-title {
		margin: 0 0 4px 0 !important;
		padding: 0 !important;
		font-size: 15px !important;
		font-weight: 600 !important;
		line-height: 1.35 !important;
		color: #1c1c1c !important;
		text-transform: none !important;
		letter-spacing: 0 !important;
	}
	.obsead-crononarr__event-title.obsead-crononarr__event-title a {
		color: inherit !important;
		text-decoration: none !important;
		border-bottom: 1px dotted var(--obsead-narr-color);
	}
	.obsead-crononarr__event-title.obsead-crononarr__event-title a:hover {
		color: var(--obsead-narr-color) !important;
	}
	.obsead-crononarr__event-desc.obsead-crononarr__event-desc {
		margin: 0 !important;
		padding: 0 !important;
		font-size: 13px !important;
		line-height: 1.45 !important;
		color: #4a4a4a !important;
	}

	/* Chevron al final del bloque que invita al siguiente país */
	a.obsead-crononarr__more.obsead-crononarr__more {
		display: inline-flex;
		flex-direction: column;
		align-items: center;
		gap: 2px;
		margin: auto auto 0;
		padding-top: 36px;
		color: var(--obsead-color-text-muted) !important;
		text-decoration: none !important;
		font-size: 12px;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		opacity: 0.7;
		transition: opacity 160ms ease, color 160ms ease, transform 160ms ease;
	}
	a.obsead-crononarr__more.obsead-crononarr__more:hover,
	a.obsead-crononarr__more.obsead-crononarr__more:focus {
		opacity: 1;
		color: var(--obsead-narr-color) !important;
		transform: translateY(2px);
		outline: none;
	}
	.obsead-crononarr__more-label {
		font-weight: 600;
	}
	.obsead-crononarr__more-chevrons {
		display: inline-flex;
		flex-direction: column;
		align-items: center;
		line-height: 0;
		margin-top: 4px;
	}
	.obsead-crononarr__more-chevrons svg + svg {
		margin-top: -14px;
	}

	/* Mobile: una columna, ficha NO sticky */
	/* Cronologia narrativa — mobile.
	   Uso doble clase + !important para vencer las reglas desktop que
	   también usan doble clase + !important (si no, la media query
	   pierde y vemos el split de 2 columnas en pantalla angosta). */
	@media (max-width: 899px) {
		.obsead-crononarr__layout.obsead-crononarr__layout {
			grid-template-columns: 1fr !important;
			gap: 0 !important;
		}
		.obsead-crononarr__left.obsead-crononarr__left {
			display: none !important;
			position: static !important;
			min-height: 0 !important;
			padding: 0 !important;
		}
		.obsead-crononarr__right.obsead-crononarr__right {
			padding-left: 60px !important;
		}
		.obsead-cronologia-narrativa.obsead-cronologia-narrativa .obsead-crononarr__right.obsead-crononarr__right::before {
			left: 60px !important;
		}
		.obsead-crononarr__bloco.obsead-crononarr__bloco {
			min-height: auto !important;
			padding: 24px 0 40px !important;
		}
		.obsead-crononarr__bloco-header.obsead-crononarr__bloco-header {
			margin-bottom: 18px !important;
		}
		.obsead-crononarr__bloco-dot.obsead-crononarr__bloco-dot {
			left: -67px !important;
		}
		.obsead-crononarr__event.obsead-crononarr__event {
			margin-left: -60px !important;
			grid-template-columns: 48px 1fr !important;
			column-gap: 16px !important;
		}
		.obsead-crononarr__event-yearchip.obsead-crononarr__event-yearchip {
			min-width: 48px !important;
		}
		.obsead-crononarr__event-bullet.obsead-crononarr__event-bullet {
			left: 55px !important;
		}
		.obsead-crononarr__event-body.obsead-crononarr__event-body {
			padding-left: 14px !important;
		}
		.obsead-crononarr__event-title.obsead-crononarr__event-title {
			font-size: 15px !important;
			line-height: 1.35 !important;
		}
		/* Mini-nav en mobile: pildoritas un poco más grandes y centradas
		   para tap accuracy. */
		a.obsead-crononarr__nav-item.obsead-crononarr__nav-item {
			padding: 7px 14px !important;
			font-size: 13px !important;
		}
	}

	/* ====================================================================
	 * mobile breakpoints
	 * ==================================================================== */

	@media (max-width: 767px) {
		/* En mobile no usamos el card+drawer; renderMobileCards entrega cards. */
		.obsead-mapa__card {
			flex-direction: column;
		}
	}

} /* end @layer obsead */
