/*
 * GETECNA — Portal de clientes
 * Todos los estilos están acotados a .getecna-portal / .gcp-* para no afectar al sitio público.
 */

.getecna-portal {
	--gcp-primary: #49a3ab;
	--gcp-primary-dark: #33858d;
	--gcp-primary-soft: #e6f3f5;
	--gcp-navy: #123848;
	--gcp-ink: #002642;
	--gcp-body: #3c5566;
	--gcp-muted: #738ea5;
	--gcp-bg: #f2f8fd;
	--gcp-surface: #ffffff;
	--gcp-border: #cde0ee;
	--gcp-border-soft: #edf3f8;
	--gcp-success: #2f855a;
	--gcp-success-soft: #e6f4ec;
	--gcp-danger: #c0392b;
	--gcp-danger-soft: #fbeae8;
	--gcp-warning: #b7791f;
	--gcp-warning-soft: #fdf3e2;
	--gcp-radius: 12px;
	--gcp-radius-sm: 8px;
	--gcp-shadow: 0 2px 6px rgba(16, 24, 40, .05);
	--gcp-shadow-md: 0 10px 26px rgba(16, 24, 40, .10);
	--gcp-font: 'Montserrat', 'Kumbh Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--gcp-shell: 1320px;

	font-family: var(--gcp-font);
	color: var(--gcp-body);
	background-color: var(--gcp-bg);
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}

.getecna-portal *,
.getecna-portal *::before,
.getecna-portal *::after {
	box-sizing: border-box;
}

.gcp-shell {
	width: 100%;
	max-width: var(--gcp-shell);
	margin: 0 auto;
	padding: 0 20px;
}

.gcp-main {
	padding: 36px 0 72px;
	min-height: 60vh;
}

.gcp-main--auth {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 56px 20px 72px;
}

.gcp-sr {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ---------------------------------------------------------------- Topbar */

.gcp-topbar {
	background-color: var(--gcp-navy);
	border-bottom: 1px solid rgba(255, 255, 255, .08);
}

.gcp-topbar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: 68px;
	flex-wrap: wrap;
	padding-top: 10px;
	padding-bottom: 10px;
}

.gcp-topbar__brand {
	display: inline-flex;
	align-items: center;
	text-decoration: none;
}

.gcp-topbar__logo {
	max-height: 38px;
	width: auto;
	display: block;
}

.gcp-topbar__title {
	color: #fff;
	font-weight: 700;
	font-size: 17px;
	letter-spacing: .02em;
}

.gcp-nav {
	display: flex;
	align-items: center;
	gap: 4px;
	flex-wrap: wrap;
}

.gcp-nav__link {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	min-height: 44px;
	padding: 0 14px;
	border-radius: 999px;
	color: rgba(255, 255, 255, .78);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	transition: background-color .2s ease, color .2s ease;
}

.gcp-nav__link:hover,
.gcp-nav__link:focus-visible {
	color: #fff;
	background-color: rgba(255, 255, 255, .10);
}

.gcp-nav__link.is-active {
	color: #fff;
	background-color: var(--gcp-primary);
}

.gcp-nav__link--out {
	color: rgba(255, 255, 255, .6);
}

/* ------------------------------------------------------------- Cabeceras */

.gcp-page-head {
	margin-bottom: 26px;
}

.gcp-page-head__eyebrow {
	margin: 0 0 6px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--gcp-primary);
}

.gcp-page-head__title {
	margin: 0 0 8px;
	font-size: 30px;
	line-height: 1.2;
	font-weight: 700;
	color: var(--gcp-ink);
}

.gcp-page-head__text {
	margin: 0;
	font-size: 15px;
	color: var(--gcp-muted);
	max-width: 62ch;
}

/* ---------------------------------------------------------------- Stats */

.gcp-stats {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 16px;
	margin-bottom: 34px;
}

.gcp-stat {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 18px 18px 16px;
	background-color: var(--gcp-surface);
	border: 1px solid var(--gcp-border);
	border-radius: var(--gcp-radius);
	box-shadow: var(--gcp-shadow);
}

.gcp-stat__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	margin-bottom: 8px;
	border-radius: 10px;
	background-color: var(--gcp-primary-soft);
	color: var(--gcp-primary-dark);
}

.gcp-stat--accent .gcp-stat__icon {
	background-color: #fdeee9;
	color: #c05621;
}

.gcp-stat__value {
	font-size: 28px;
	font-weight: 700;
	line-height: 1.15;
	color: var(--gcp-ink);
}

.gcp-stat__value--date {
	font-size: 17px;
	padding-top: 6px;
	padding-bottom: 5px;
}

.gcp-stat__label {
	font-size: 13px;
	color: var(--gcp-muted);
}

/* -------------------------------------------------------------- Secciones */

.gcp-section {
	margin-bottom: 34px;
}

.gcp-section__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 16px;
}

.gcp-section__title {
	margin: 0;
	font-size: 19px;
	font-weight: 700;
	color: var(--gcp-ink);
}

/* ---------------------------------------------------------------- Tarjetas */

.gcp-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
	gap: 16px;
}

.gcp-card {
	display: flex;
	flex-direction: column;
	background-color: var(--gcp-surface);
	border: 1px solid var(--gcp-border);
	border-radius: var(--gcp-radius);
	box-shadow: var(--gcp-shadow);
	transition: box-shadow .25s ease, transform .25s ease;
}

.gcp-card:hover {
	box-shadow: var(--gcp-shadow-md);
	transform: translateY(-2px);
}

.gcp-card--new {
	border-color: var(--gcp-primary);
}

.gcp-card__body {
	flex: 1 1 auto;
	padding: 18px 18px 12px;
}

.gcp-card__head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 10px;
	margin-bottom: 10px;
}

.gcp-card__badges {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.gcp-card__code {
	font-size: 12px;
	font-weight: 600;
	color: var(--gcp-muted);
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

.gcp-card__title {
	margin: 0 0 12px;
	font-size: 17px;
	line-height: 1.35;
	font-weight: 700;
}

.gcp-card__title a {
	color: var(--gcp-ink);
	text-decoration: none;
}

.gcp-card__title a:hover,
.gcp-card__title a:focus-visible {
	color: var(--gcp-primary-dark);
	text-decoration: underline;
}

.gcp-card__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 18px;
	margin: 0 0 12px;
}

.gcp-card__meta-item {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 13px;
	color: var(--gcp-muted);
}

.gcp-card__meta-item dt,
.gcp-card__meta-item dd {
	margin: 0;
	display: inline-flex;
	align-items: center;
}

.gcp-card__meta-item dd {
	color: var(--gcp-body);
	font-weight: 500;
}

.gcp-card__formats {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.gcp-card__foot {
	padding: 12px 18px 16px;
	border-top: 1px solid var(--gcp-border-soft);
}

/* ------------------------------------------------------------- Badges/chips */

.gcp-badge {
	display: inline-flex;
	align-items: center;
	padding: 3px 10px;
	border-radius: 999px;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: .03em;
	line-height: 1.5;
}

.gcp-badge--type {
	color: #fff;
	background-color: var(--gcp-badge-color, var(--gcp-primary));
}

.gcp-badge--new {
	color: #fff;
	background-color: #e07a3f;
}

.gcp-badge--updated {
	color: var(--gcp-warning);
	background-color: var(--gcp-warning-soft);
}

.gcp-badge--muted {
	color: var(--gcp-muted);
	background-color: var(--gcp-border-soft);
}

.gcp-chip {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 3px 9px;
	border-radius: 999px;
	border: 1px solid var(--gcp-border);
	font-size: 11.5px;
	font-weight: 600;
	color: var(--gcp-body);
	background-color: #fbfdff;
}

.gcp-chip--pdf { color: #b53225; }
.gcp-chip--word { color: #2a5699; }
.gcp-chip--excel { color: #1e6c41; }
.gcp-chip--link { color: var(--gcp-primary-dark); }

/* ----------------------------------------------------------------- Botones */

.gcp-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	min-height: 44px;
	padding: 0 20px;
	border: 1px solid transparent;
	border-radius: 999px;
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease;
}

.gcp-btn--sm {
	min-height: 38px;
	padding: 0 15px;
	font-size: 13.5px;
}

.gcp-btn--block {
	width: 100%;
}

.gcp-btn--primary {
	color: #fff;
	background-color: var(--gcp-primary);
}

.gcp-btn--primary:hover,
.gcp-btn--primary:focus-visible {
	background-color: var(--gcp-primary-dark);
	color: #fff;
}

.gcp-btn--ghost {
	color: var(--gcp-navy);
	background-color: #fff;
	border-color: var(--gcp-border);
}

.gcp-btn--ghost:hover,
.gcp-btn--ghost:focus-visible {
	border-color: var(--gcp-primary);
	color: var(--gcp-primary-dark);
}

.getecna-portal a:focus-visible,
.getecna-portal button:focus-visible,
.getecna-portal input:focus-visible,
.getecna-portal select:focus-visible,
.getecna-portal textarea:focus-visible {
	outline: 3px solid rgba(73, 163, 171, .45);
	outline-offset: 2px;
}

.gcp-link {
	color: var(--gcp-primary-dark);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}

.gcp-link:hover,
.gcp-link:focus-visible {
	text-decoration: underline;
}

.gcp-link--arrow,
.gcp-link--back {
	display: inline-flex;
	align-items: center;
	gap: 5px;
}

/* ------------------------------------------------------------- Formularios */

.gcp-form {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.gcp-field {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.gcp-label {
	font-size: 13.5px;
	font-weight: 600;
	color: var(--gcp-ink);
}

.gcp-label--sm {
	font-size: 12.5px;
	color: var(--gcp-muted);
}

.getecna-portal .gcp-input,
.getecna-portal .gcp-select,
.getecna-portal .gcp-textarea {
	width: 100%;
	min-height: 46px;
	padding: 11px 14px;
	font-family: inherit;
	font-size: 15px;
	color: var(--gcp-ink);
	background-color: #fff;
	border: 1px solid var(--gcp-border);
	border-radius: var(--gcp-radius-sm);
	transition: border-color .2s ease, box-shadow .2s ease;
	box-shadow: none;
}

.getecna-portal .gcp-textarea {
	min-height: 96px;
	resize: vertical;
}

.getecna-portal .gcp-input:focus,
.getecna-portal .gcp-select:focus,
.getecna-portal .gcp-textarea:focus {
	border-color: var(--gcp-primary);
}

/* El campo de búsqueda reserva sitio para la lupa. La regla lleva el
   contenedor delante porque, si no, el padding general del campo gana por
   especificidad y el texto acaba debajo del icono. */
.getecna-portal .gcp-input--search,
.getecna-portal input.gcp-input--search {
	padding-left: 46px;
}

/* Navegadores que dibujan su propia decoración en type="search". */
.getecna-portal .gcp-input--search::-webkit-search-decoration,
.getecna-portal .gcp-input--search::-webkit-search-results-button {
	-webkit-appearance: none;
	appearance: none;
}

.gcp-help {
	font-size: 12.5px;
	color: var(--gcp-muted);
}

.gcp-check {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	color: var(--gcp-body);
	cursor: pointer;
}

.gcp-form__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
}

.gcp-form__legend {
	margin: 0;
	font-size: 14px;
	font-weight: 700;
	color: var(--gcp-ink);
}

.gcp-sep {
	border: 0;
	border-top: 1px solid var(--gcp-border-soft);
	margin: 4px 0;
}

/* ------------------------------------------------------------------ Login */

.gcp-auth-shell {
	width: 100%;
	max-width: 440px;
}

.gcp-auth-card {
	padding: 34px 30px 28px;
	background-color: var(--gcp-surface);
	border: 1px solid var(--gcp-border);
	border-radius: 16px;
	box-shadow: var(--gcp-shadow-md);
}

.gcp-auth-card__head {
	margin-bottom: 22px;
	text-align: center;
}

.gcp-auth-card__logo {
	max-width: 170px;
	height: auto;
	margin: 0 auto 16px;
	display: block;
}

.gcp-auth-card__title {
	margin: 0 0 8px;
	font-size: 23px;
	font-weight: 700;
	color: var(--gcp-ink);
}

.gcp-auth-card__subtitle {
	margin: 0;
	font-size: 14px;
	color: var(--gcp-muted);
}

.gcp-auth-card__foot {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	margin: 20px 0 0;
	padding-top: 16px;
	border-top: 1px solid var(--gcp-border-soft);
	font-size: 13px;
	color: var(--gcp-muted);
	text-align: center;
}

/* ----------------------------------------------------------------- Avisos */

.gcp-alert {
	padding: 13px 16px;
	margin-bottom: 18px;
	border-radius: var(--gcp-radius-sm);
	font-size: 14px;
	border: 1px solid transparent;
}

.gcp-alert--error {
	color: var(--gcp-danger);
	background-color: var(--gcp-danger-soft);
	border-color: #f2c9c3;
}

.gcp-alert--success {
	color: var(--gcp-success);
	background-color: var(--gcp-success-soft);
	border-color: #bfe3cd;
}

.gcp-alert--info {
	color: var(--gcp-navy);
	background-color: var(--gcp-primary-soft);
	border-color: #b9dde1;
}

/* ---------------------------------------------------------------- Filtros */

.gcp-filters {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 18px;
	margin-bottom: 22px;
	background-color: var(--gcp-surface);
	border: 1px solid var(--gcp-border);
	border-radius: var(--gcp-radius);
	box-shadow: var(--gcp-shadow);
}

.gcp-filters__search {
	position: relative;
}

.gcp-filters__search-icon {
	position: absolute;
	left: 16px;
	top: 50%;
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
	color: var(--gcp-muted);
	pointer-events: none;
	z-index: 1;
}

.gcp-filters__search-icon .gcp-icon {
	display: block;
	width: 18px;
	height: 18px;
}

.gcp-filters__row {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr)) auto;
	gap: 12px;
	align-items: end;
}

.gcp-filters__item {
	display: flex;
	flex-direction: column;
	gap: 5px;
	min-width: 0;
}

.gcp-filters__actions {
	display: flex;
	gap: 8px;
}

/* ---------------------------------------------------------- Empty states */

.gcp-empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 8px;
	padding: 44px 24px;
	background-color: var(--gcp-surface);
	border: 1px dashed var(--gcp-border);
	border-radius: var(--gcp-radius);
}

.gcp-empty--page {
	padding: 64px 24px;
}

.gcp-empty--inline {
	padding: 26px 20px;
}

.gcp-empty__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 64px;
	height: 64px;
	border-radius: 50%;
	background-color: var(--gcp-primary-soft);
	color: var(--gcp-primary-dark);
	margin-bottom: 6px;
}

.gcp-empty__title {
	margin: 0;
	font-size: 19px;
	font-weight: 700;
	color: var(--gcp-ink);
}

.gcp-empty__text {
	margin: 0 0 8px;
	font-size: 14.5px;
	color: var(--gcp-muted);
	max-width: 46ch;
}

/* ------------------------------------------------------------- Paginación */

.gcp-pagination {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	justify-content: center;
	margin-top: 26px;
}

.gcp-pagination__item {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0 12px;
	border: 1px solid var(--gcp-border);
	border-radius: var(--gcp-radius-sm);
	background-color: #fff;
	color: var(--gcp-navy);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}

.gcp-pagination__item:hover,
.gcp-pagination__item:focus-visible {
	border-color: var(--gcp-primary);
	color: var(--gcp-primary-dark);
}

.gcp-pagination__item.is-current {
	background-color: var(--gcp-primary);
	border-color: var(--gcp-primary);
	color: #fff;
}

/* ---------------------------------------------------------------- Detalle */

.gcp-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-bottom: 18px;
	font-size: 13px;
	color: var(--gcp-muted);
}

.gcp-breadcrumb a {
	color: var(--gcp-muted);
	text-decoration: none;
}

.gcp-breadcrumb a:hover,
.gcp-breadcrumb a:focus-visible {
	color: var(--gcp-primary-dark);
	text-decoration: underline;
}

.gcp-breadcrumb__current {
	color: var(--gcp-ink);
	font-weight: 600;
}

.gcp-detail {
	background-color: var(--gcp-surface);
	border: 1px solid var(--gcp-border);
	border-radius: var(--gcp-radius);
	box-shadow: var(--gcp-shadow);
	overflow: hidden;
}

.gcp-detail__head {
	padding: 26px 26px 22px;
	border-bottom: 1px solid var(--gcp-border-soft);
	background: linear-gradient(180deg, #fbfdff 0%, #ffffff 100%);
}

.gcp-detail__title {
	margin: 12px 0 16px;
	font-size: 26px;
	line-height: 1.25;
	font-weight: 700;
	color: var(--gcp-ink);
}

.gcp-detail__meta {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
	gap: 14px 22px;
	margin: 0;
}

.gcp-detail__meta div {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.gcp-detail__meta dt {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--gcp-muted);
}

.gcp-detail__meta dd {
	margin: 0;
	font-size: 15px;
	font-weight: 600;
	color: var(--gcp-ink);
}

.gcp-detail__section {
	padding: 24px 26px;
	border-bottom: 1px solid var(--gcp-border-soft);
}

.gcp-detail__subtitle {
	margin: 0 0 14px;
	font-size: 16px;
	font-weight: 700;
	color: var(--gcp-ink);
}

.gcp-detail__foot {
	padding: 18px 26px 22px;
}

.gcp-prose {
	font-size: 15px;
	color: var(--gcp-body);
}

.gcp-prose p {
	margin: 0 0 12px;
}

.gcp-prose ul,
.gcp-prose ol {
	margin: 0 0 12px;
	padding-left: 22px;
}

.gcp-prose li {
	margin-bottom: 5px;
}

.gcp-prose a {
	color: var(--gcp-primary-dark);
}

/* --------------------------------------------------------------- Archivos */

.gcp-files {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.gcp-file {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 14px 16px;
	border: 1px solid var(--gcp-border);
	border-radius: var(--gcp-radius-sm);
	background-color: #fbfdff;
}

.gcp-file__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 42px;
	height: 42px;
	border-radius: 10px;
	background-color: #fff;
	border: 1px solid var(--gcp-border);
}

.gcp-file__icon--pdf { color: #b53225; }
.gcp-file__icon--word { color: #2a5699; }
.gcp-file__icon--excel { color: #1e6c41; }
.gcp-file__icon--link { color: var(--gcp-primary-dark); }
.gcp-file__icon--file { color: var(--gcp-muted); }

.gcp-file__info {
	display: flex;
	flex-direction: column;
	gap: 2px;
	flex: 1 1 auto;
	min-width: 0;
}

.gcp-file__name {
	font-size: 15px;
	font-weight: 600;
	color: var(--gcp-ink);
	word-break: break-word;
}

.gcp-file__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	font-size: 12.5px;
	color: var(--gcp-muted);
}

.gcp-file__format {
	font-weight: 700;
	color: var(--gcp-body);
}

.gcp-file__desc {
	font-size: 13px;
	color: var(--gcp-muted);
}

.gcp-file__actions {
	display: flex;
	gap: 8px;
	flex: 0 0 auto;
}

/* ---------------------------------------------------------------- Paneles */

.gcp-columns {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
	gap: 18px;
	align-items: start;
}

.gcp-panel {
	padding: 22px;
	background-color: var(--gcp-surface);
	border: 1px solid var(--gcp-border);
	border-radius: var(--gcp-radius);
	box-shadow: var(--gcp-shadow);
}

.gcp-panel__title {
	margin: 0 0 16px;
	font-size: 17px;
	font-weight: 700;
	color: var(--gcp-ink);
}

.gcp-datalist {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin: 0 0 16px;
}

.gcp-datalist div {
	display: flex;
	flex-direction: column;
	gap: 1px;
}

.gcp-datalist dt {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--gcp-muted);
}

.gcp-datalist dd {
	margin: 0;
	font-size: 15px;
	color: var(--gcp-ink);
	font-weight: 500;
	word-break: break-word;
}

.gcp-hint {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin: 0;
	padding: 12px 14px;
	border-radius: var(--gcp-radius-sm);
	background-color: var(--gcp-bg);
	font-size: 13px;
	color: var(--gcp-muted);
}

/* --------------------------------------------------------------- Consultas */

.gcp-thread__list {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0 0 18px;
	padding: 0;
	list-style: none;
}

.gcp-message {
	padding: 13px 16px;
	border-radius: var(--gcp-radius-sm);
	background-color: var(--gcp-bg);
	border: 1px solid var(--gcp-border-soft);
}

.gcp-message--staff {
	background-color: var(--gcp-primary-soft);
	border-color: #b9dde1;
}

.gcp-message__author {
	font-size: 13px;
	font-weight: 700;
	color: var(--gcp-ink);
	margin-right: 8px;
}

.gcp-message__date {
	font-size: 12px;
	color: var(--gcp-muted);
}

.gcp-message__body {
	margin: 6px 0 0;
	font-size: 14.5px;
	color: var(--gcp-body);
	white-space: pre-wrap;
}

.gcp-thread__empty {
	margin: 0 0 16px;
	font-size: 14px;
	color: var(--gcp-muted);
}

.gcp-thread__status {
	margin: 8px 0 0;
	font-size: 13px;
	color: var(--gcp-muted);
	min-height: 18px;
}

.gcp-thread__status.is-error {
	color: var(--gcp-danger);
}

.gcp-thread__status.is-success {
	color: var(--gcp-success);
}

.gcp-icon {
	flex: 0 0 auto;
}

/* ------------------------------------------------------------ Responsive */

@media (max-width: 1024px) {
	.gcp-stats {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gcp-filters__row {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gcp-filters__actions {
		grid-column: 1 / -1;
	}
}

@media (max-width: 782px) {
	.gcp-main {
		padding: 24px 0 48px;
	}

	.gcp-page-head__title {
		font-size: 25px;
	}

	.gcp-detail__title {
		font-size: 21px;
	}

	.gcp-detail__head,
	.gcp-detail__section,
	.gcp-detail__foot {
		padding-left: 18px;
		padding-right: 18px;
	}

	.gcp-grid {
		grid-template-columns: 1fr;
	}

	.gcp-file {
		flex-wrap: wrap;
	}

	.gcp-file__actions {
		width: 100%;
		padding-left: 56px;
	}

	.gcp-file__actions .gcp-btn {
		flex: 1 1 auto;
	}
}

@media (max-width: 560px) {
	.gcp-shell,
	.gcp-main--auth {
		padding-left: 16px;
		padding-right: 16px;
	}

	.gcp-stats {
		grid-template-columns: 1fr;
		gap: 12px;
	}

	/* Icono a la izquierda; cifra y etiqueta apiladas, para que ninguna
	   fecha larga quede recortada en pantallas estrechas. */
	.gcp-stat {
		display: grid;
		grid-template-columns: auto minmax(0, 1fr);
		grid-template-rows: auto auto;
		align-items: center;
		column-gap: 14px;
		row-gap: 0;
		padding: 14px 16px;
	}

	.gcp-stat__icon {
		grid-row: 1 / 3;
		margin-bottom: 0;
	}

	.gcp-stat__value {
		font-size: 21px;
		line-height: 1.2;
	}

	.gcp-stat__value--date {
		font-size: 16px;
		padding: 0;
	}

	.gcp-stat__label {
		font-size: 12.5px;
		line-height: 1.35;
	}

	.gcp-filters__row {
		grid-template-columns: 1fr;
	}

	.gcp-topbar__inner {
		justify-content: center;
	}

	.gcp-nav {
		width: 100%;
		justify-content: center;
	}

	.gcp-auth-card {
		padding: 26px 20px 22px;
	}

	.gcp-file__actions {
		padding-left: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.getecna-portal *,
	.getecna-portal *::before,
	.getecna-portal *::after {
		transition-duration: .01ms !important;
		animation-duration: .01ms !important;
	}
}

/* ------------------------------------------------------------------------
 * Compatibilidad con el sitio actual.
 * El sitio inyecta un preloader animado (GSAP) mediante un snippet global de
 * Elementor. En las páginas del portal ese overlay no completa su animación de
 * salida y quedaría cubriendo la pantalla, por lo que se neutraliza ÚNICAMENTE
 * dentro del portal. El resto del sitio conserva la animación intacta.
 * ---------------------------------------------------------------------- */

body.gcp-portal-page #shapePreload,
body.gcp-portal-page .shapePreload {
	display: none !important;
}

/* ------------------------------------------------------------------------
 * Ancho y respiración del área privada.
 *
 * El tema encierra el contenido en un contenedor de 1222 px con fondo blanco
 * alrededor, lo que hacía que el fondo del portal se viera como una tarjeta
 * recortada. En lugar de estirar ese contenedor —que también sostiene el pie
 * de página y el resto de la plantilla— se pinta el fondo en la propia página
 * y se ensancha solo el máximo del contenedor. Todo acotado a las páginas del
 * portal: el resto del sitio no se ve afectado.
 * ---------------------------------------------------------------------- */

body.gcp-portal-page,
body.gcp-portal-page .wd-page-wrapper,
body.gcp-portal-page .wd-page-content,
body.gcp-portal-page .main-page-wrapper {
	background-color: #f2f8fd;
}

body.gcp-portal-page .getecna-portal {
	background-color: transparent;
}

body.gcp-portal-page .wd-content-layout {
	max-width: none;
	margin-left: auto;
	margin-right: auto;
	padding-top: 0;
	padding-bottom: 0;
}

/* El encabezado del tema no ocupa sitio en el flujo (flota sobre el contenido,
   pensado para páginas que abren con una imagen a sangre). En el portal se
   compensa su altura para que la barra de navegación y el primer título no
   queden por debajo. El valor se corrige solo desde portal.js si el encabezado
   cambiara de altura. */
body.gcp-portal-page {
	--gcp-header-offset: 112px;
	scroll-padding-top: calc(var(--gcp-header-offset) + 18px);
}

body.gcp-portal-page .getecna-portal {
	padding-top: var(--gcp-header-offset);
}

/* ------------------------------------------------------------------------
 * Refuerzo de estilos dentro del portal.
 * El tema define reglas propias para button/input/select con alta
 * especificidad; estas reglas las neutralizan ÚNICAMENTE dentro de
 * .getecna-portal para que el portal mantenga su identidad visual.
 * ---------------------------------------------------------------------- */

.getecna-portal .gcp-btn,
.getecna-portal button.gcp-btn,
.getecna-portal a.gcp-btn,
.getecna-portal input[type="submit"].gcp-btn {
	font-family: var(--gcp-font);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
	border-radius: 999px;
	box-shadow: none;
	text-shadow: none;
	height: auto;
	width: auto;
}

.getecna-portal .gcp-btn--block {
	width: 100%;
}

.getecna-portal .gcp-btn--primary,
.getecna-portal button.gcp-btn--primary,
.getecna-portal a.gcp-btn--primary {
	background-color: var(--gcp-primary);
	background-image: none;
	border-color: var(--gcp-primary);
	color: #fff;
}

.getecna-portal .gcp-btn--primary:hover,
.getecna-portal .gcp-btn--primary:focus,
.getecna-portal button.gcp-btn--primary:hover,
.getecna-portal a.gcp-btn--primary:hover {
	background-color: var(--gcp-primary-dark);
	border-color: var(--gcp-primary-dark);
	color: #fff;
}

.getecna-portal .gcp-btn--ghost,
.getecna-portal button.gcp-btn--ghost,
.getecna-portal a.gcp-btn--ghost {
	background-color: #fff;
	background-image: none;
	border-color: var(--gcp-border);
	color: var(--gcp-navy);
}

.getecna-portal .gcp-btn--ghost:hover,
.getecna-portal .gcp-btn--ghost:focus,
.getecna-portal a.gcp-btn--ghost:hover {
	background-color: #fff;
	border-color: var(--gcp-primary);
	color: var(--gcp-primary-dark);
}

.getecna-portal .gcp-btn--sm {
	font-size: 13.5px;
}

.getecna-portal input.gcp-input,
.getecna-portal select.gcp-select,
.getecna-portal textarea.gcp-textarea {
	font-family: var(--gcp-font);
	background-image: none;
	text-transform: none;
	letter-spacing: 0;
	height: auto;
	margin: 0;
	/* El tema declara content-box para los campos: sin esto, el relleno se suma
	   al ancho y el campo se desborda de su contenedor. */
	box-sizing: border-box;
	max-width: 100%;
}

.getecna-portal .gcp-nav__link,
.getecna-portal .gcp-link,
.getecna-portal .gcp-card__title a {
	text-transform: none;
	letter-spacing: 0;
}

.getecna-portal h1,
.getecna-portal h2,
.getecna-portal h3,
body.gcp-portal-page .getecna-portal h1,
body.gcp-portal-page .getecna-portal h2,
body.gcp-portal-page .getecna-portal h3,
body.gcp-portal-page .getecna-portal .gcp-section__title,
body.gcp-portal-page .getecna-portal .gcp-detail__title,
body.gcp-portal-page .getecna-portal .gcp-detail__subtitle,
body.gcp-portal-page .getecna-portal .gcp-page-head__title,
body.gcp-portal-page .getecna-portal .gcp-panel__title,
body.gcp-portal-page .getecna-portal .gcp-card__title,
body.gcp-portal-page .getecna-portal .gcp-empty__title,
body.gcp-portal-page .getecna-portal .gcp-auth-card__title {
	font-family: var(--gcp-font);
	text-transform: none;
	letter-spacing: 0;
	margin-top: 0;
}

/* Las etiquetas de secciones sí van en versalitas, como el resto del sitio. */
body.gcp-portal-page .getecna-portal .gcp-page-head__eyebrow,
body.gcp-portal-page .getecna-portal .gcp-detail__meta dt,
body.gcp-portal-page .getecna-portal .gcp-datalist dt {
	text-transform: uppercase;
}

.getecna-portal .gcp-badge {
	text-transform: none;
}

/* El widget de chat del sitio no debe tapar acciones del portal en móvil. */
@media (max-width: 560px) {
	body.gcp-portal-page .gcp-main {
		padding-bottom: 90px;
	}
}

/* ------------------------------------------------------------------------
 * Enlaces y tipografía dentro del portal.
 * El tema define color y tamaño para los enlaces del contenedor de página;
 * estas reglas restauran la escala tipográfica del portal sin salir de él.
 * ---------------------------------------------------------------------- */

body.gcp-portal-page .getecna-portal a {
	color: var(--gcp-primary-dark);
	text-decoration: none;
}

body.gcp-portal-page .getecna-portal .gcp-card__title {
	font-size: 17px;
	line-height: 1.35;
	font-weight: 700;
	color: var(--gcp-ink);
}

body.gcp-portal-page .getecna-portal .gcp-card__title a {
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	color: var(--gcp-ink);
}

body.gcp-portal-page .getecna-portal .gcp-card__title a:hover,
body.gcp-portal-page .getecna-portal .gcp-card__title a:focus-visible {
	color: var(--gcp-primary-dark);
	text-decoration: underline;
}

body.gcp-portal-page .getecna-portal .gcp-nav__link {
	color: rgba(255, 255, 255, .78);
	font-size: 14px;
}

body.gcp-portal-page .getecna-portal .gcp-nav__link:hover,
body.gcp-portal-page .getecna-portal .gcp-nav__link:focus-visible,
body.gcp-portal-page .getecna-portal .gcp-nav__link.is-active {
	color: #fff;
}

body.gcp-portal-page .getecna-portal .gcp-btn--primary,
body.gcp-portal-page .getecna-portal a.gcp-btn--primary {
	color: #fff;
}

body.gcp-portal-page .getecna-portal .gcp-btn--ghost,
body.gcp-portal-page .getecna-portal a.gcp-btn--ghost {
	color: var(--gcp-navy);
}

body.gcp-portal-page .getecna-portal .gcp-breadcrumb a {
	color: var(--gcp-muted);
	font-size: 13px;
}

body.gcp-portal-page .getecna-portal .gcp-pagination__item {
	color: var(--gcp-navy);
	font-size: 14px;
}

body.gcp-portal-page .getecna-portal .gcp-pagination__item.is-current {
	color: #fff;
}

body.gcp-portal-page .getecna-portal .gcp-prose a {
	color: var(--gcp-primary-dark);
	text-decoration: underline;
}

body.gcp-portal-page .getecna-portal .gcp-file__name,
body.gcp-portal-page .getecna-portal .gcp-stat__value {
	color: var(--gcp-ink);
}

body.gcp-portal-page .getecna-portal .gcp-topbar__title {
	color: #fff;
}

/* Ajustes finos de la vista móvil del detalle. */
body.gcp-portal-page .getecna-portal .gcp-detail__title {
	color: var(--gcp-ink);
	font-size: 26px;
}

@media (max-width: 782px) {
	body.gcp-portal-page .getecna-portal .gcp-detail__title {
		font-size: 21px;
	}

	.getecna-portal .gcp-detail__meta {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 12px 16px;
	}

	.getecna-portal .gcp-detail__meta dt {
		font-size: 11px;
	}

	.getecna-portal .gcp-detail__meta dd {
		font-size: 14px;
	}
}

@media (max-width: 420px) {
	.getecna-portal .gcp-nav {
		gap: 2px;
	}

	.getecna-portal .gcp-nav__link {
		padding: 0 10px;
		font-size: 13.5px;
	}
}

/* ------------------------------------------------------------------------
 * Iconos de la navegación del portal.
 * Acompañan al rótulo; nunca lo sustituyen, para que la barra se entienda
 * sin depender de la interpretación del símbolo.
 * ---------------------------------------------------------------------- */

.getecna-portal .gcp-nav__link .gcp-icon {
	opacity: .75;
	transition: opacity .2s ease;
}

.getecna-portal .gcp-nav__link:hover .gcp-icon,
.getecna-portal .gcp-nav__link:focus-visible .gcp-icon,
.getecna-portal .gcp-nav__link.is-active .gcp-icon {
	opacity: 1;
}

@media (max-width: 782px) {
	.getecna-portal .gcp-nav__link {
		gap: 6px;
		padding: 0 11px;
	}
}

/* En pantallas muy estrechas la barra se reparte en dos filas antes que
   recortar los rótulos. */
@media (max-width: 480px) {
	.getecna-portal .gcp-nav {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 2px;
	}

	.getecna-portal .gcp-nav__link {
		justify-content: flex-start;
		padding: 0 10px;
		font-size: 13.5px;
	}
}
