:root {
  --abroadlink-blue: #013753;
  --abroadlink-blue-2: #02527f;
  --abroadlink-blue-3: #0a6fae;
  --white: #ffffff;
  --soft: #eef5fa;
  --line: rgba(255,255,255,0.16);
  --text: #f6fbff;
  --muted: rgba(255,255,255,0.78);
  --shadow: 0 18px 40px rgba(0,0,0,0.18);

  /* Columna portal: definida en certlink-design-tokens.css (--certlink-portal-chrome-max). */
  /* Reservado (p. ej. gutters móviles); el cromado ya no lleva padding horizontal propio. */
  --certlink-portal-chrome-pad-x: 28px;
  /* Tipografía: hereda Open Sans / Montserrat de certlink-design-tokens.css. */
  --certlink-portal-font-family: var(--font-sans, 'Open Sans', system-ui, sans-serif);

  --certlink-btn-h: 32px;

  --certlink-btn-r: 10px;
  --certlink-btn-px: 22px;
  --certlink-btn-fw: 600;
  --certlink-btn-primary-bg: var(--abroadlink-blue);
  --certlink-btn-primary-color: #fff;
  --certlink-btn-secondary-border: 1px solid rgba(255, 255, 255, 0.55);
  --certlink-btn-secondary-color: rgba(255, 255, 255, 0.95);

  /* Primario acción: altura según texto + padding vertical (sin barra alta fija). */
  --certlink-btn-fill-primary-bg: var(--certlink-btn-primary-bg);
  --certlink-btn-fill-primary-color: var(--certlink-btn-primary-color);
  --certlink-btn-fill-primary-shadow: 0 4px 12px rgba(0, 0, 0, 0.14);
  --certlink-btn-fill-primary-min-height: 0;
  --certlink-btn-fill-primary-py: 5px;
  --certlink-btn-fill-primary-px: 14px;
  --certlink-btn-fill-primary-r: 8px;
  /* Avisos en login / pass / reset: mismo radio que campos y botones del portal. */
  --certlink-auth-notice-radius: var(--certlink-btn-fill-primary-r);
  /* Altura unificada inputs + botones en tarjetas de autenticación. */
  --certlink-auth-control-height: 40px;
  /* Ayuda bajo campos en login / solicitud de contraseña. */
  --certlink-auth-help-font-size: 14px;
  /* Sangría horizontal del topbar legacy (sin .masthead-inner); masthead unificado usa .masthead-inner. */
  --certlink-topbar-pad-x: var(--space-12, 48px);
  --certlink-topbar-pad-left: var(--certlink-masthead-pad-left, clamp(16px, 2vw, 24px));
  --certlink-btn-fill-primary-fw: 700;
  --certlink-btn-fill-hover-shadow:
    0 12px 28px rgba(0, 0, 0, 0.22),
    0 0 0 1px rgba(255, 255, 255, 0.35) inset;
  --certlink-btn-fill-focus-shadow:
    0 0 0 2px #013753,
    0 0 0 5px rgba(117, 208, 255, 0.65),
    0 12px 28px rgba(0, 0, 0, 0.2);

  /* Cabecera de tablas del portal (listados /projects, /clients, etc.). */
  --certlink-table-head-py: 6px;
  --certlink-table-head-px: 10px;
  /* Altura reservada sobre la tabla (nav + shell + filtros) para scroll interno. */
  --certlink-table-scroll-offset: 290px;
}

/* --------------------------------------------------------------------------
   Rutas portal (clase certlink-portal-route en html/body): sin toolbar ni
   cabecera/menús del tema para que solo se vea el shell CertLink (Views+CSS).
   -------------------------------------------------------------------------- */
html.certlink-portal-route {
  /* Evita la sensación de “más aire a la izquierda” cuando la scrollbar ocupa solo el lado derecho. */
  scrollbar-gutter: stable;
}

html.certlink-portal-route,
html.certlink-portal-route body {
  min-height: 100%;
  margin: 0 !important;
  border: 0 !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  background-color: #001f36 !important;
  background-image: linear-gradient(180deg, var(--abroadlink-blue) 0%, #02486f 100%) !important;
  background-attachment: fixed !important;
}


/* Misma familia tipográfica en cromado Bootstrap y en .certlink-custom-page. */
html.certlink-portal-route body.certlink-portal-route,
html.certlink-portal-route body.certlink-portal-route .navbar,
html.certlink-portal-route body.certlink-portal-route #navbar-top,
html.certlink-portal-route body.certlink-portal-route #navbar-main,
html.certlink-portal-route body.certlink-portal-route input,
html.certlink-portal-route body.certlink-portal-route select,
html.certlink-portal-route body.certlink-portal-route textarea,
html.certlink-portal-route body.certlink-portal-route button,
html.certlink-portal-route body.certlink-portal-route .btn,
html.certlink-portal-route body.certlink-portal-route .form-control {
  font-family: var(--certlink-portal-font-family) !important;
}

html.certlink-portal-route body.certlink-portal-route {
  padding-top: 0 !important;
  padding-inline: 0 !important;
}

body.certlink-portal-route.toolbar-fixed,
body.certlink-portal-route.toolbar-tray-open,
body.certlink-portal-route.user-logged-in {
  padding-top: 0 !important;
}

body.certlink-portal-route .toolbar,
body.certlink-portal-route .toolbar-bar,
body.certlink-portal-route .toolbar-loading,
body.certlink-portal-route .toolbar-oriented,
body.certlink-portal-route #toolbar-administration,
body.certlink-portal-route .gin-secondary-toolbar,
body.certlink-portal-route .gin-toolbar,
/* Drupal 11 «Navigation»: barra lateral y control; no debe mostrarse en el portal público. */
body.certlink-portal-route #admin-toolbar,
body.certlink-portal-route aside.admin-toolbar,
body.certlink-portal-route .admin-toolbar-control-bar,
body.certlink-portal-route .admin-toolbar-overlay {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* Enlaces contextuales de Drupal (lapicito en bloques/vistas): no en el portal cliente. */
body.certlink-portal-route .contextual,
body.certlink-portal-route .contextual-region .contextual,
body.certlink-portal-route button.contextual-links-trigger,
body.certlink-portal-route .contextual .trigger {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

html.certlink-portal-route[data-admin-toolbar] body.certlink-portal-route,
html.certlink-portal-route[data-admin-toolbar] {
  padding-inline-start: 0 !important;
}

body.certlink-portal-route .site-header,
body.certlink-portal-route .region-header,
body.certlink-portal-route .region-branding,
body.certlink-portal-route .region-secondary-menu,
body.certlink-portal-route .region-meta,
body.certlink-portal-route .page-header {
  display: none !important;
}

body.certlink-portal-route .region-breadcrumb,
body.certlink-portal-route .breadcrumb,
body.certlink-portal-route nav.tabs,
body.certlink-portal-route .tabs-wrapper,
body.certlink-portal-route .block-local-tasks-block,
body.certlink-portal-route .local-tasks {
  display: none !important;
}

body.certlink-portal-route .block-page-title-block {
  display: none !important;
}

body.certlink-portal-route:not(.certlink-portal-home) .site-footer,
body.certlink-portal-route:not(.certlink-portal-home) .region-footer,
body.certlink-portal-route footer[role="contentinfo"]:not(.certlink-portal-site-foot) {
  display: none !important;
}

body.certlink-portal-route .layout-sidebar-first,
body.certlink-portal-route .layout-sidebar-second,
body.certlink-portal-route .region-sidebar-first,
body.certlink-portal-route .region-sidebar-second,
body.certlink-portal-route aside[class*="sidebar"] {
  display: none !important;
}

body.certlink-portal-route .dialog-off-canvas-main-canvas {
  padding-top: 0 !important;
  padding-inline: 0 !important;
  margin-top: 0 !important;
  /* Evita el hueco que deja Drupal.displace() cuando la barra admin estaba expandida. */
  margin-inline-start: 0 !important;
  margin-inline-end: 0 !important;
  border-top: 0 !important;
  background: transparent !important;
}

/*
 * Cromado CertLink en regiones Bootstrap: el tema aplica bg-primary / navbar-*
 * en #navbar-top y #navbar-main (tono azul distinto al gradiente del portal).
 * Forzar fondo transparente para que se vea el mismo degradado que html/body
 * y unificar estilo en todas las vistas (proyectos, ajustes de usuario, etc.).
 */
html.certlink-portal-route body.certlink-portal-route #navbar-top,
html.certlink-portal-route body.certlink-portal-route #navbar-main {
  width: 100% !important;
  margin: 0 !important;
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

html.certlink-portal-route body.certlink-portal-route #navbar-top {
  padding-top: max(12px, calc(env(safe-area-inset-top, 0px) + 8px)) !important;
  padding-bottom: 12px !important;
}

html.certlink-portal-route body.certlink-portal-route #navbar-main {
  padding-top: 14px !important;
  padding-bottom: 6px !important;
  min-height: 0 !important;
  border-top: 1px solid var(--line) !important;
}

html.certlink-portal-route body.certlink-portal-route #navbar-top .container,
html.certlink-portal-route body.certlink-portal-route #navbar-top .region,
html.certlink-portal-route body.certlink-portal-route #navbar-main .container,
html.certlink-portal-route body.certlink-portal-route #navbar-main .region,
html.certlink-portal-route body.certlink-portal-route #navbar-main .navbar-collapse,
html.certlink-portal-route body.certlink-portal-route #navbar-main .collapse.navbar-collapse {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}

/* Anula bg-primary / utilidades Bootstrap en la barra (#navbar-main suele llevar bg-primary). */
html.certlink-portal-route body.certlink-portal-route nav#navbar-main.navbar.bg-primary,
html.certlink-portal-route body.certlink-portal-route nav#navbar-top.navbar {
  --bs-navbar-bg: transparent !important;
  --bs-bg-opacity: 0 !important;
}

/* BS5: .bg-primary puede ganar por orden de hoja; forzar transparencia en ambas barras. */
html.certlink-portal-route body.certlink-portal-route #navbar-main[class*="bg-"],
html.certlink-portal-route body.certlink-portal-route #navbar-top[class*="bg-"] {
  background-color: transparent !important;
  background-image: none !important;
}

/*
 * Ancho del cromado = misma columna que .certlink-custom-page / .shell (regiones
 * top_header + primary_menu dentro del .container del tema Bootstrap).
 *
 * El layout Bootstrap coloca un .navbar-toggler antes del collapse; con la región
 * header vacía u oculta (portal), el icono puede verse como una raya blanca
 * suelta encima del bloque de navegación. El menú CertLink no usa ese toggle.
 */
html.certlink-portal-route body.certlink-portal-route #navbar-main .navbar-toggler {
  display: none !important;
}

html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar.navbar-collapse,
html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar.collapse {
  display: flex !important;
  flex: 1 1 100% !important;
  flex-basis: 100% !important;
  flex-grow: 1 !important;
  min-width: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
  visibility: visible !important;
  overflow: visible !important;
  /* El tema Bootstrap añade justify-content-end: encoge el menú y deja hueco a la derecha. */
  justify-content: flex-start !important;
  align-items: stretch !important;
  align-self: stretch !important;
}

html.certlink-portal-route body.certlink-portal-route #navbar-main > .container {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
}

/* El collapse debe ocupar toda la fila del .container (no solo el ancho del texto del menú). */
html.certlink-portal-route body.certlink-portal-route #navbar-main > .container > #CollapsingNavbar {
  flex: 1 1 100% !important;
  flex-basis: 100% !important;
  width: 100% !important;
  max-width: 100% !important;
  align-self: stretch !important;
}

/* La región del menú portal debe ocupar todo el ancho del collapse para que
 * .certlink-portal-nav__right (idioma + Sign out) quede pegada al borde derecho. */
html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar .region-primary-menu,
html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar .region.region-primary-menu {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
}

html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar .region-primary-menu > .block,
html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar .region-primary-menu > .block > .content,
html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar .region-primary-menu .block-content,
html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar #block-bootstrap-subtheme-certlink-portal-nav,
html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar #block-bootstrap-subtheme-certlink-portal-nav > .content {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar #block-bootstrap-subtheme-certlink-portal-nav > .content {
  display: block !important;
}

/*
 * Cabecera: el .container Bootstrap no limita el ancho (evita 1320px del tema);
 * la columna vive en .masthead-inner (mismo eje que .certlink-custom-page / .shell).
 */
html.certlink-portal-route body.certlink-portal-route #navbar-top > .container {
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.certlink-portal-route #navbar-main > .container {
  width: min(var(--certlink-portal-masthead-max-vw, 95vw), calc(100vw - var(--certlink-portal-chrome-gutter, 8px))) !important;
  max-width: min(var(--certlink-portal-masthead-max-vw, 95vw), calc(100vw - var(--certlink-portal-chrome-gutter, 8px))) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box !important;
}

/* Regiones del cromado: mismo ancho útil que el .container (sin sangría extra). */
html.certlink-portal-route body.certlink-portal-route #navbar-top .region-top-header,
html.certlink-portal-route body.certlink-portal-route #navbar-main .region-primary-menu {
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box !important;
}

/* Región highlighted: entre cabeceras y contenido; sin bloques útiles queda una franja rara. */
html.certlink-portal-route body.certlink-portal-route .highlighted {
  background: transparent !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  box-shadow: none !important;
}

html.certlink-portal-route body.certlink-portal-route .highlighted .section {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  margin: 0 !important;
}

body.certlink-portal-route #page-wrapper,
body.certlink-portal-route #page,
body.certlink-portal-route #main-wrapper {
  margin-top: 0 !important;
  padding-inline: 0 !important;
  border-top: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}

body.certlink-portal-route #page-wrapper,
body.certlink-portal-route #page,
body.certlink-portal-route #main-wrapper,
body.certlink-portal-route .main-content,
body.certlink-portal-route main,
body.certlink-portal-route .layout-main,
body.certlink-portal-route .layout-content {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  flex: 1 1 100% !important;
}

body.certlink-portal-route a#main-content,
body.certlink-portal-route a[href="#main-content"] {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  flex: 0 0 0 !important;
  border: 0 !important;
}

body.certlink-portal-route .layout-container,
body.certlink-portal-route .page-wrapper {
  max-width: none !important;
}

/* Simetría real del viewport: el tema mete #main.container + .row + columnas (gutters).
 * Aun con overlay position:fixed puede quedar hueco lateral asimétrico perceptible. */

body.certlink-portal-route #main,
body.certlink-portal-route #main.container {
  padding-inline: 0 !important;
  margin-inline: 0 !important;
  max-width: none !important;
}

body.certlink-portal-route #main > .row {
  --bs-gutter-x: 0 !important;
  margin-inline: 0 !important;
}

body.certlink-portal-route main[role="main"],
body.certlink-portal-route .main-content {
  padding-inline: 0 !important;
}

body.certlink-portal-route .region-content,
body.certlink-portal-route .region-content > .content,
body.certlink-portal-route .region-content > .section,
body.certlink-portal-route main > section {
  padding-inline: 0 !important;
  margin-inline: 0 !important;
  width: 100% !important;
  max-width: none !important;
}

body.certlink-portal-route .certlink-fullscreen-app {
  position: relative;
  z-index: 5000;
  isolation: isolate;
  width: 100%;
  min-height: 100vh;
}

body.certlink-portal-route .certlink-custom-page {
  z-index: 6000 !important;
  scrollbar-gutter: stable;
}

body.certlink-portal-route .certlink-project-details-page .table-wrap,
body.certlink-portal-route .certlink-custom-page .table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  direction: ltr;
}

/* Enlaces del portal: nunca subrayado; hover con color + sombra suave */
body.certlink-portal-route a {
  text-decoration: none !important;
  border-bottom: none !important;
}
body.certlink-portal-route a:hover {
  color: #d4efff !important;
  text-shadow: 0 0 10px rgba(117, 208, 255, 0.55);
}
body.certlink-portal-route a:focus-visible {
  outline: 2px solid #75d0ff;
  outline-offset: 3px;
}
body.certlink-portal-route .messages a,
body.certlink-portal-route .messages a:hover {
  color: #024a7a !important;
  text-shadow: none;
}
body.certlink-portal-route .messages a:hover {
  color: #013753 !important;
}
body.certlink-portal-route a.button,
body.certlink-portal-route a.button:hover,
body.certlink-portal-route a.button--primary:hover {
  text-shadow: none;
}

.certlink-custom-page {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  width: min(var(--certlink-portal-content-max-vw, 95vw), calc(100vw - var(--certlink-portal-chrome-gutter, 8px))) !important;
  max-width: min(var(--certlink-portal-content-max-vw, 95vw), calc(100vw - var(--certlink-portal-chrome-gutter, 8px))) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  min-height: 0 !important;
  height: auto !important;
  overflow-y: visible !important;
  overflow-x: hidden !important;
  z-index: auto !important;
  padding: 24px 0 32px !important;
  font-family: var(--certlink-portal-font-family);
  font-size: 13px !important;
  background: transparent;
  border-radius: 0;
  box-shadow: none;
  border: none;
  color: var(--text);
  margin-top: 0 !important;
  margin-bottom: 28px !important;
  display: block;
}

/* Vistas con contenido largo: padding vertical coherente con el layout por regiones. */
.path-projects .certlink-custom-page,
.path-clients .certlink-custom-page,
.path-settings-general .certlink-custom-page,
.path-settings-user .certlink-custom-page,
.path-translators .certlink-custom-page {
  padding-top: 12px !important;
  padding-bottom: 24px !important;
}

.path-projects .certlink-custom-page .shell,
.path-clients .certlink-custom-page .shell,
.path-settings-general .certlink-custom-page .shell,
.path-settings-user .certlink-custom-page .shell,
.path-translators .certlink-custom-page .shell {
  margin-bottom: 24px !important;
}

/* Project List: menos separación inferior interna. */
.path-projects .certlink-custom-page {
  padding-bottom: 24px !important;
}

.path-projects .certlink-custom-page .shell {
  margin-bottom: 24px !important;
}

/* V2: enlaces de fila al detalle — color maqueta (proj-link / al-orange-300). */
.path-projects .view-project-list td.views-field-title a.certlink-portal-row-link,
html.certlink-portal-route body.path-projects .region-content .certlink-projects-page .table-card td.views-field-title a.certlink-portal-row-link {
  color: var(--certlink-projects-name-link, #e8b964) !important;
  font-weight: inherit;
  text-decoration: underline !important;
  text-underline-offset: 2px;
  border-bottom: 0 !important;
  text-shadow: none !important;
}

.path-projects .view-project-list td.views-field-title a.certlink-portal-row-link:hover,
.path-projects .view-project-list td.views-field-title a.certlink-portal-row-link:focus-visible,
html.certlink-portal-route body.path-projects .region-content .certlink-projects-page .table-card td.views-field-title a.certlink-portal-row-link:hover,
html.certlink-portal-route body.path-projects .region-content .certlink-projects-page .table-card td.views-field-title a.certlink-portal-row-link:focus-visible {
  color: #fff !important;
  text-decoration: underline !important;
}

.path-projects .view-project-list td:not(.views-field-title) a.certlink-portal-row-link,
html.certlink-portal-route body.path-projects .region-content .certlink-projects-page .table-card td:not(.views-field-title) a.certlink-portal-row-link {
  color: #fff !important;
  border-bottom: 0 !important;
  text-decoration: none !important;
  pointer-events: none;
}

.path-translators .view-certlink-translators a.certlink-portal-row-link {
  color: var(--certlink-accent, #1a5fb4);
  text-decoration: underline;
}

/* V2 — Project specifications + Linguist Profile (boceto mano). */
.certlink-v2-panel {
  padding: 20px 28px 28px;
}

.certlink-v2-specifications {
  padding: 0;
}

.certlink-v2-spec-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin: 0 0 24px;
  padding: 0 4px;
}

.certlink-v2-spec-toolbar .certlink-section-title {
  margin: 0;
  flex: 1 1 auto;
  min-width: 0;
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.3;
}

.certlink-v2-spec-back-btn.setup-btn {
  flex: 0 0 auto;
  margin: 0;
  white-space: nowrap;
  text-decoration: none !important;
  text-shadow: none !important;
}

.certlink-v2-spec-back-btn.setup-btn:hover,
.certlink-v2-spec-back-btn.setup-btn:focus-visible {
  text-shadow: none !important;
}

.certlink-linguist-profile-page .certlink-v2-linguist-profile {
  padding: 0;
}

/* Metadatos del proyecto: rejilla 2×2 (sustituye tabla de cabecera). */
.certlink-v2-spec-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px 32px;
  margin: 0 0 28px;
  padding: 20px 24px;
  border-radius: 14px;
  background: rgba(0, 0, 0, 0.14);
  border: 1px solid rgba(255, 255, 255, 0.1);
}

.certlink-v2-meta-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.62);
  margin-bottom: 6px;
}

.certlink-v2-meta-value {
  font-size: 16px;
  font-weight: 500;
  line-height: 1.4;
  color: #fff;
  word-break: break-word;
}

/* Rejilla estándar del portal: listados, General Settings y tablas V2. */
.certlink-portal-grid-wrap,
.certlink-v2-spec-languages-wrap {
  margin: 0;
  overflow: hidden;
  border-radius: 14px;
  border: none;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.12);
  background: rgba(0, 0, 0, 0.18);
}

.certlink-portal-grid-wrap.table-wrap {
  overflow-x: hidden;
  overflow-y: visible;
}

/* V2 Project specifications: sin barra dual superior; solo scroll nativo si hiciera falta. */
.certlink-v2-specifications .certlink-portal-grid-wrap.table-wrap {
  overflow-x: auto;
  overflow-y: hidden;
}

.certlink-custom-page .certlink-portal-grid-wrap table,
.certlink-custom-page .certlink-portal-grid-wrap table.certlink-portal-grid-table,
.certlink-custom-page .certlink-portal-grid-wrap table.certlink-v2-spec-language-table {
  width: 100%;
  min-width: 0 !important;
  margin: 0;
  border-collapse: separate;
  border-spacing: 0;
  background: transparent;
  table-layout: fixed;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table th,
.certlink-portal-grid-wrap table.certlink-portal-grid-table td,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table th,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table td {
  border-left: none !important;
  border-right: none !important;
  border-top: none !important;
  outline: none;
  box-shadow: none;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table thead th,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table thead th,
.certlink-portal-grid-wrap table.certlink-portal-grid-table .certlink-portal-grid-label,
.certlink-portal-grid-wrap table.certlink-portal-grid-table .certlink-v2-spec-label,
.certlink-portal-grid-label,
.certlink-v2-spec-label {
  background: rgba(0, 0, 0, 0.32) !important;
  color: rgba(255, 255, 255, 0.92) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 14px 18px !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
  white-space: nowrap;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.08);
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table thead th:first-child,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table thead th:first-child {
  border-top-left-radius: 14px;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table thead th:last-child,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table thead th:last-child {
  border-top-right-radius: 14px;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table tbody td,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table tbody td,
.certlink-portal-grid-wrap table.certlink-portal-grid-table .certlink-portal-grid-value,
.certlink-portal-grid-wrap table.certlink-portal-grid-table .certlink-v2-spec-value {
  padding: 16px 18px !important;
  font-size: 15px !important;
  font-weight: 400 !important;
  color: #fff !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.07) !important;
  vertical-align: middle !important;
  background: transparent !important;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table tbody td,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table tbody td {
  white-space: normal !important;
  word-break: break-word;
  overflow-wrap: anywhere;
  vertical-align: top;
  line-height: 1.45;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table tbody td a:not(.certlink-download-btn):not(.certlink-upload-btn):not(.setup-btn):not(.setup-btn--icon),
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table tbody td a:not(.certlink-download-btn):not(.certlink-upload-btn) {
  white-space: normal !important;
  word-break: break-word;
  overflow-wrap: anywhere;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table--profile tbody td {
  white-space: normal !important;
  vertical-align: middle !important;
}

/* Columnas de acción compactas: sin salto de línea. */
.certlink-portal-grid-wrap table.certlink-portal-grid-table tbody td.views-field-certlink-download-link,
.certlink-portal-grid-wrap table.certlink-portal-grid-table tbody td.views-field-nothing,
.certlink-portal-grid-wrap table.certlink-portal-grid-table tbody td.certlink-v2-col-link,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table tbody td.certlink-v2-col-link {
  white-space: nowrap !important;
  vertical-align: middle;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table tbody tr:last-child td,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table tbody tr:last-child td,
.certlink-portal-grid-wrap table.certlink-portal-grid-table--profile tr:last-child td {
  border-bottom: none !important;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table tbody tr:last-child td:first-child,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table tbody tr:last-child td:first-child,
.certlink-portal-grid-wrap table.certlink-portal-grid-table--profile tr:last-child td:first-child {
  border-bottom-left-radius: 14px;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table tbody tr:last-child td:last-child,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table tbody tr:last-child td:last-child,
.certlink-portal-grid-wrap table.certlink-portal-grid-table--profile tr:last-child td:last-child {
  border-bottom-right-radius: 14px;
}

.certlink-portal-grid-wrap table.certlink-portal-grid-table tbody tr:hover,
.certlink-portal-grid-wrap table.certlink-v2-spec-language-table tbody tr:hover {
  background: rgba(255, 255, 255, 0.04);
}

.path-projects .certlink-portal-grid-wrap .views-field-certlink-download-link {
  min-width: 52px;
  text-align: center;
}

.certlink-project-details-page .certlink-portal-grid-wrap .certlink-v2-col-link,
.certlink-linguist-profile-page .certlink-portal-grid-wrap .views-field-certlink-download-link {
  min-width: 128px;
  text-align: center;
}

.certlink-portal-grid-table--profile .certlink-portal-grid-label,
.certlink-portal-grid-table--profile .certlink-v2-spec-label {
  width: 32%;
  vertical-align: middle;
}

.certlink-v2-col-link {
  text-align: center !important;
  width: 96px;
  white-space: nowrap !important;
}

.certlink-v2-col-source,
.certlink-v2-col-target {
  min-width: 88px;
}

.certlink-v2-col-translator {
  min-width: 160px;
}

.certlink-v2-translator-links {
  display: inline;
  line-height: 1.5;
}

.certlink-v2-specifications a.certlink-linguist-name-link,
.certlink-linguist-profile-page a.certlink-linguist-name-link {
  color: var(--al-orange, #e09030) !important;
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgba(224, 144, 48, 0.45);
}

.certlink-v2-specifications a.certlink-linguist-name-link:hover,
.certlink-v2-specifications a.certlink-linguist-name-link:focus-visible,
.certlink-linguist-profile-page a.certlink-linguist-name-link:hover {
  color: #fff !important;
  border-bottom-color: #fff;
}

.certlink-linguist-profile-page a.certlink-linguist-external-link {
  color: #d4ebff !important;
  font-weight: 600;
  text-decoration: underline;
}

.certlink-linguist-profile-page a.certlink-linguist-external-link:hover {
  color: #fff !important;
}

.certlink-v2-back-link {
  display: inline-block;
  margin-bottom: 18px;
  color: #d4ebff !important;
  font-weight: 600;
  text-decoration: none;
}

.certlink-v2-back-link:hover,
.certlink-v2-back-link:focus-visible {
  color: #fff !important;
  text-decoration: underline;
}

@media (max-width: 960px) {
  .certlink-v2-spec-meta {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  .certlink-v2-spec-meta {
    grid-template-columns: 1fr;
    gap: 14px;
    padding: 16px 18px;
  }
}

.path-clients .certlink-custom-page {
  padding-bottom: 24px !important;
}

.path-clients .certlink-custom-page .shell {
  margin-bottom: 24px !important;
}

.certlink-custom-page * { 
  box-sizing: border-box; 
}

.shell {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 auto;
  background: linear-gradient(180deg, rgba(1,55,83,0.98), rgba(4,96,145,0.96));
  border-radius: 22px;
  padding: 26px 34px 34px;
  box-shadow: var(--shadow);
  border: 1px solid rgba(255,255,255,0.08);
  box-sizing: border-box !important;
}

/* Centrado horizontal del shell en todo el portal: refuerzo explícito (flex + anchos por ruta).
 * No repetir hacks de min-height anterior; sólo margen/auto-flex en hijo directo. */
body.certlink-portal-route .certlink-custom-page > .shell {
  margin-left: auto !important;
  margin-right: auto !important;
  flex: 0 1 auto;
}

.topbar {
  align-items: center;
  margin-bottom: 14px;
  flex-wrap: wrap;
  width: 100%;
  box-sizing: border-box;
}

/*
 * Dashboard: marca y AbroadLink en los extremos del mismo ancho que .shell /
 * lista de proyectos (chrome-max + sangría alineada al panel).
 */
.topbar:not(.topbar--login) {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  padding: 0 var(--certlink-topbar-pad-x) 0 var(--certlink-topbar-pad-left);
  row-gap: 10px;
  column-gap: 24px;
}

.topbar:not(.topbar--login) .brand {
  flex: 0 1 auto;
  min-width: 0;
  max-width: min(72%, 820px);
}

.topbar:not(.topbar--login) .topbar-actions {
  flex: 0 0 auto;
  margin-left: 0;
}

/* Login legacy (sin .masthead): columna centrada. Portada usa .masthead + portal-shell-mockup. */
.topbar--login:not(.masthead) {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}

.topbar--login.masthead {
  display: block;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
.brand { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }

/* Marca portal: escudo a la izquierda, wordmark a la derecha (sin salto de línea entre ambos). */
html.certlink-portal-route .brand.brand-lockup {
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
}

.topbar-actions {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}

.certlink-logout-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--certlink-btn-fill-primary-min-height);
  height: auto;
  padding: var(--certlink-btn-fill-primary-py) var(--certlink-btn-fill-primary-px);
  border-radius: var(--certlink-btn-fill-primary-r);
  border: none;
  background: var(--certlink-btn-fill-primary-bg);
  color: var(--certlink-btn-fill-primary-color) !important;
  font-size: 12px;
  font-weight: var(--certlink-btn-fill-primary-fw);
  line-height: 1.2;
  text-decoration: none !important;
  white-space: nowrap;
  box-shadow: var(--certlink-btn-fill-primary-shadow);
  transition:
    transform 0.22s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.22s ease,
    filter 0.2s ease,
    color 0.18s ease;
}

/* Botón de logout tipo icono: por defecto transparente con icono blanco translúcido. */
.certlink-logout-btn.certlink-logout-btn--icon {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 32px !important;
  min-width: 32px !important;
  max-width: 32px !important;
  height: 32px !important;
  min-height: 32px !important;
  padding: 0 !important;
  margin-left: 6px !important;
  margin-right: 0 !important;
  line-height: 0 !important;
  text-align: center !important;
  box-sizing: border-box !important;
  background: transparent !important;
  box-shadow: none !important;
  color: rgba(255, 255, 255, 0.72) !important;
  border-radius: var(--radius-md, 8px) !important;
}

.certlink-logout-btn.certlink-logout-btn--icon:hover {
  background: rgba(255, 255, 255, 0.08) !important;
  color: #fff !important;
  box-shadow: none !important;
  transform: none !important;
  filter: none !important;
}

/* Versión más pequeña de botón cuadrado en barra de navegación secundaria interna. */
.certlink-portal-nav__right .certlink-logout-btn.certlink-logout-btn--nav.certlink-logout-btn--icon {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 32px !important;
  min-width: 32px !important;
  max-width: 32px !important;
  height: 32px !important;
  min-height: 32px !important;
  padding: 0 !important;
  margin-left: 6px !important;
  margin-right: 0 !important;
  line-height: 0 !important;
  text-align: center !important;
  box-sizing: border-box !important;
  background: transparent !important;
  box-shadow: none !important;
  color: rgba(255, 255, 255, 0.72) !important;
  border-radius: var(--radius-md, 8px) !important;
}

.certlink-portal-nav__right .certlink-logout-btn.certlink-logout-btn--nav.certlink-logout-btn--icon:hover {
  background: rgba(255, 255, 255, 0.08) !important;
  color: #fff !important;
  box-shadow: none !important;
  transform: none !important;
  filter: none !important;
}

.certlink-logout-btn.certlink-logout-btn--icon .certlink-portal-logout-icon {
  display: block;
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
  margin: 0;
  transform: translateX(1px);
}

.certlink-logout-btn:hover {
  transform: translateY(-2px);
  filter: brightness(1.12);
  color: var(--certlink-btn-fill-primary-color) !important;
  text-shadow: none !important;
  box-shadow: var(--certlink-btn-fill-hover-shadow);
}

.certlink-logout-btn:active {
  transform: translateY(0);
  filter: brightness(1.06);
}

.certlink-logout-btn:focus {
  outline: none;
}

.certlink-logout-btn:focus-visible {
  outline: none;
  filter: brightness(1.12);
  color: var(--certlink-btn-fill-primary-color) !important;
  box-shadow: var(--certlink-btn-fill-focus-shadow);
}

.certlink-logout-btn.certlink-logout-btn--nav[role='button'],
.certlink-logout-modal__actions .btn[role='button'].btn-outline-light {
  cursor: pointer;
}

/* Modal de confirmación de cierre: overlay + tarjeta opaca igual cromado .shell del login */
.certlink-logout-modal {
  position: fixed;
  inset: 0;
  z-index: 10050;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 20px;
  box-sizing: border-box;
}

.certlink-logout-modal.is-open {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}

html.certlink-portal-route #certlink-logout-modal[hidden]:not(.is-open) {
  display: none !important;
}

.certlink-logout-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(1, 20, 35, 0.72);
  cursor: pointer;
}

/* Anula .panel translúcido del listado: misma geometría/gradiente OPACO que .shell */
.certlink-logout-modal .certlink-logout-modal__dialog.panel {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: min(380px, calc(100vw - 48px));
  margin: 0 auto;
  margin-top: 0;
  padding: clamp(22px, 4vw, 30px) clamp(22px, 4vw, 28px) clamp(24px, 4vw, 30px);
  text-align: center;
  isolation: isolate;
  border-radius: 22px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  box-shadow: var(--shadow);
  /* Equivalente opaco al gradiente de .shell (sin alpha) */
  background: linear-gradient(180deg, #012f48 0%, #013753 42%, #02527f 100%);
  overflow: visible;
}

.certlink-logout-modal .certlink-logout-modal__title {
  margin: 0 0 14px;
  font-size: 1.3rem;
  font-weight: 700;
  line-height: 1.28;
  color: var(--text);
}

.certlink-logout-modal .certlink-logout-modal__text {
  margin: 0 auto 22px;
  max-width: 28rem;
  line-height: 1.5;
  font-size: 15px;
  color: var(--muted);
}

.certlink-logout-modal .certlink-logout-modal__actions.certlink-signout-confirm-actions {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
  align-items: stretch;
  gap: 12px 14px;
  margin-top: 4px;
}

.certlink-logout-modal .certlink-logout-modal__actions.certlink-signout-confirm-actions .btn {
  min-height: var(--certlink-btn-fill-primary-min-height);
  min-width: min(164px, 100%);
  font-weight: var(--certlink-btn-fill-primary-fw);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--certlink-btn-fill-primary-r);
  text-decoration: none;
  padding: var(--certlink-btn-fill-primary-py) var(--certlink-btn-fill-primary-px);
  transition:
    transform 0.22s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.22s ease,
    background-color 0.22s ease,
    border-color 0.22s ease,
    color 0.2s ease,
    filter 0.2s ease;
}

.certlink-logout-modal .certlink-logout-modal__actions.certlink-signout-confirm-actions .btn:active {
  transform: translateY(0);
}

/* Primario modal logout / pantalla confirm: mismo relleno sólido marca que ⚙️ (variables --certlink-btn-fill-*). */
.certlink-logout-modal .certlink-logout-modal__actions a.btn-primary.certlink-portal-error-btn {
  background: var(--certlink-btn-fill-primary-bg) !important;
  color: var(--certlink-btn-fill-primary-color) !important;
  border: none !important;
  box-shadow: var(--certlink-btn-fill-primary-shadow);
}

.certlink-logout-modal .certlink-logout-modal__actions a.btn-primary.certlink-portal-error-btn:hover {
  transform: translateY(-2px);
  filter: brightness(1.12);
  box-shadow: var(--certlink-btn-fill-hover-shadow);
}

.certlink-logout-modal .certlink-logout-modal__actions a.btn-primary.certlink-portal-error-btn:focus-visible {
  outline: none;
  filter: brightness(1.12);
  box-shadow: var(--certlink-btn-fill-focus-shadow);
}

/* Secundario alineado a “Request access” / outline del login */
.certlink-logout-modal .certlink-logout-modal__actions span.btn-outline-light.certlink-portal-error-btn {
  margin: 0;
  white-space: normal;
  border: 1px solid rgba(232, 244, 255, 0.88) !important;
  background: transparent !important;
  color: #e8f4ff !important;
}

.certlink-logout-modal .certlink-logout-modal__actions span.btn-outline-light.certlink-portal-error-btn:hover {
  transform: translateY(-2px);
  color: #ffffff !important;
  border-color: rgba(255, 255, 255, 0.96) !important;
  background: rgba(255, 255, 255, 0.1) !important;
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.2);
}

.certlink-logout-modal .certlink-logout-modal__actions span.btn-outline-light.certlink-portal-error-btn:focus-visible {
  outline: none;
  color: #ffffff !important;
  border-color: rgba(255, 255, 255, 0.96) !important;
  box-shadow:
    0 0 0 2px rgba(1, 40, 60, 0.9),
    0 0 0 4px rgba(255, 255, 255, 0.65);
}

/*
 * Avisos informativos del portal (General Settings y similares): mensaje centrado
 * sin título + botón Accept (maqueta oscura).
 */
.certlink-logout-modal .certlink-portal-alert-modal__title[hidden] {
  display: none !important;
  margin: 0 !important;
}

.certlink-logout-modal .certlink-portal-alert-modal__message {
  color: rgba(255, 255, 255, 0.92);
  margin: 0 auto 22px;
}

.certlink-logout-modal .certlink-portal-alert-modal__title[hidden] + .certlink-portal-alert-modal__message {
  margin-top: 0;
}

.certlink-logout-modal .certlink-portal-alert-modal__close.setup-btn {
  flex: none;
  min-width: min(164px, 100%);
  font-weight: 700;
  border-radius: var(--radius-md, 8px);
  padding: 10px 22px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff !important;
  cursor: pointer;
  box-shadow: none;
  text-shadow: none !important;
}

.certlink-logout-modal .certlink-portal-alert-modal__close.setup-btn:hover,
.certlink-logout-modal .certlink-portal-alert-modal__close.setup-btn:focus-visible {
  background: rgba(255, 255, 255, 0.14);
  border-color: rgba(255, 255, 255, 0.32);
  color: #fff !important;
  transform: none;
  box-shadow: none;
  text-shadow: none !important;
}

/* Pantalla /user/logout/confirm (mismas clases .certlink-signout-confirm-actions, sin capa modal). */
.certlink-signout-confirm-actions a.btn-primary.certlink-portal-error-btn {
  background: var(--certlink-btn-fill-primary-bg) !important;
  color: var(--certlink-btn-fill-primary-color) !important;
  border: none !important;
  box-shadow: var(--certlink-btn-fill-primary-shadow);
  transition:
    transform 0.22s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.22s ease,
    background-color 0.22s ease,
    filter 0.2s ease;
}

.certlink-signout-confirm-actions a.btn-primary.certlink-portal-error-btn:hover {
  transform: translateY(-2px);
  filter: brightness(1.12);
  box-shadow: var(--certlink-btn-fill-hover-shadow);
}

.certlink-signout-confirm-actions a.btn-primary.certlink-portal-error-btn:focus-visible {
  outline: none;
  filter: brightness(1.12);
  box-shadow: var(--certlink-btn-fill-focus-shadow);
}

@media (prefers-reduced-motion: reduce) {
  .certlink-logout-btn,
  .certlink-logout-modal .certlink-logout-modal__actions.certlink-signout-confirm-actions .btn {
    transition: none !important;
  }

  .certlink-logout-btn:hover,
  .certlink-logout-modal .certlink-logout-modal__actions a.btn-primary.certlink-portal-error-btn:hover,
  .certlink-signout-confirm-actions a.btn-primary.certlink-portal-error-btn:hover,
  .certlink-logout-modal .certlink-logout-modal__actions span.btn-outline-light.certlink-portal-error-btn:hover,
  html.certlink-portal-route .certlink-custom-page input.certlink-portal-fill-btn:hover,
  html.certlink-portal-route .certlink-custom-page button.certlink-portal-fill-btn:hover,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .setup-btn:not(.setup-btn--icon):hover,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters input[type="submit"]:hover,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters button[type="submit"]:hover,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters .button:not(.button--danger):hover,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions input[type="submit"]:hover,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions button[type="submit"]:hover,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions button.btn-primary:not(.btn-danger):hover,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions .button--primary:not(.button--danger):hover,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions button[data-drupal-selector="edit-submit"]:hover,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page a.setup-btn.setup-btn--icon:hover,
  html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"]:hover,
  html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit:hover,
  html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit:hover,
  html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button[type="submit"]:hover,
  html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--primary:not(.button--danger):hover,
  html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .btn-primary:not(.btn-danger):hover,
  html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"]:hover,
  html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit:hover,
  html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit:hover,
  html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button[type="submit"]:hover,
  html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--primary:not(.button--danger):hover,
  html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .btn-primary:not(.btn-danger):hover {
    transform: none !important;
  }
}

.certlink-mark {
  width: 58px;
  height: 58px;
  border-radius: 16px;
  background: linear-gradient(135deg, #ffffff 0%, #d8edf9 100%);
  display: grid;
  place-items: center;
  color: var(--abroadlink-blue);
  font-weight: 700;
  box-shadow: 0 10px 24px rgba(0,0,0,0.15);
  flex: 0 0 auto;
  position: relative;
}
.certlink-mark::before {
  content: "";
  position: absolute;
  inset: 11px;
  border-radius: 9px;
  background: #0c3754;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.14);
}

.certlink-mark::after {
  content: "";
  position: absolute;
  width: 16px;
  height: 3px;
  background: #ffffff;
  top: 24px;
  left: 21px;
  border-radius: 2px;
  box-shadow:
    0 -6px 0 #ffffff,
    0 6px 0 #75d0ff;
}
.brand-copy h1 { margin: 0; font-size: 34px; letter-spacing: 0.2px; line-height: 1; font-weight: 700; color: #fff;}
.brand-copy p { margin: 4px 0 0; color: var(--muted); font-size: 15px; line-height: 1.35; }

html.certlink-portal-route .brand-copy p,
html.certlink-portal-route .brand-text p {
  white-space: nowrap;
}
.abroadlink-logo { display: flex; align-items: center; justify-content: flex-end; }
.abroadlink-logo img { 
  display: block; 
  width: 250px; 
  max-width: 100%; 
  height: auto; 
}

.controls {
  display: grid; grid-template-columns: auto 220px minmax(260px, 1fr); gap: 10px; align-items: center; margin: 16px 0 18px;
}

.path-projects .controls {
  grid-template-columns: minmax(96px, max-content) 220px minmax(280px, 1fr);
}

.certlink-custom-page button, .certlink-custom-page select, .certlink-custom-page input {
  font: inherit; border: none; outline: none; box-sizing: border-box;
}

.setup-btn {
  background: #ffffff;
  color: #222;
  padding: 5px 16px;
  border-radius: 8px;
  cursor: pointer;
  height: auto;
  min-height: 0;
  line-height: 1.25;
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.08);
}

.setup-btn--icon {
  width: 36px;
  min-width: 36px;
  min-height: 36px;
  height: 36px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  text-decoration: none;
}

.search-label {
  background: transparent;
  color: #ffffff;
  padding: 0 4px 0 0;
  height: auto;
  min-height: 34px;
  border-radius: 0;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  box-shadow: none;
  font-weight: 600;
  white-space: nowrap;
  min-width: 96px;
}

.search-by {
  background: #ffffff;
  color: #222;
  padding: 6px 14px;
  height: auto;
  min-height: 34px;
  border-radius: 8px;
  cursor: pointer;
  appearance: none;
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.08);
  background-image: linear-gradient(45deg, transparent 50%, #333 50%), linear-gradient(135deg, #333 50%, transparent 50%);
  background-position: calc(100% - 20px) calc(50% - 3px), calc(100% - 14px) calc(50% - 3px);
  background-size: 6px 6px, 6px 6px;
  background-repeat: no-repeat;
}

.search-wrap {
  background: #ffffff;
  min-height: 34px;
  height: auto;
  border-radius: 8px;
  display: flex;
  align-items: center;
  padding: 6px 14px;
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.08);
}
.search-wrap input { width: 100%; background: transparent; color: #222; font-size: 17px; }
.search-wrap input::placeholder { color: #666; }

/* /projects: lupa a la izquierda del campo «Search certificates…». */
.certlink-projects-controls .search-wrap {
  position: relative;
  padding: 0;
}
.certlink-projects-controls .search-wrap > svg {
  position: absolute;
  left: 14px;
  top: 50%;
  z-index: 1;
  transform: translateY(-50%);
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  color: var(--al-gray-400, var(--al-navy-500, #4a6b87));
  pointer-events: none;
}
.certlink-projects-controls .search-wrap > input[type='text'] {
  padding-left: 44px;
}

.panel {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 18px; /* Redondeo general del panel */
  overflow: hidden;
  margin-top: 20px;
}

body.certlink-portal-route .certlink-custom-page > .shell > .panel {
  margin-top: 12px;
}

/* /projects: el popup del filtro de fechas no debe recortarse por overflow del panel. */
body.certlink-portal-route .certlink-custom-page > .shell > .panel.certlink-projects-panel {
  overflow: visible;
}
.table-wrap {
  overflow-x: auto;
  overflow-y: visible;
}

/* Doble barra horizontal (arriba + abajo): contenedor sincronizado por portal-base.js */
.certlink-dual-scroll {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 100%;
  gap: 0;
}

.certlink-dual-scroll__track--top {
  overflow-x: auto;
  overflow-y: hidden;
  width: 100%;
  /* Altura = barra horizontal (10px WebKit); evita franja azul bajo el thumb. */
  height: 10px;
  min-height: 0;
  max-height: none;
  margin: 0;
  padding: 0;
  flex-shrink: 0;
  scrollbar-width: thin;
  line-height: 0;
}

.certlink-dual-scroll__track--top::-webkit-scrollbar {
  height: 10px;
}

.certlink-dual-scroll__track--top .certlink-dual-scroll__inner {
  height: 1px;
}

.certlink-dual-scroll__track--main {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/*
 * Listados con doble scroll: la pista inferior hace scroll vertical y horizontal;
 * thead sticky mantiene Date / Client ID / … visible al recorrer proyectos.
 */
body.certlink-portal-route .certlink-custom-page > .shell > .panel > .certlink-dual-scroll {
  max-height: calc(100dvh - var(--certlink-table-scroll-offset));
  min-height: 12rem;
}

body.certlink-portal-route .certlink-custom-page > .shell > .panel > .certlink-dual-scroll .certlink-dual-scroll__track--main {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}

body.certlink-portal-route .certlink-custom-page > .shell > .panel > .certlink-dual-scroll .certlink-dual-scroll__track--main table {
  border-collapse: separate;
  border-spacing: 0;
}

body.certlink-portal-route .certlink-custom-page > .shell > .panel > .certlink-dual-scroll .certlink-dual-scroll__track--main thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: rgba(0, 0, 0, 0.32) !important;
  color: rgba(255, 255, 255, 0.92) !important;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.08);
}

.path-settings-general .certlink-settings-summary {
  max-width: 100%;
}

.certlink-custom-page table { width: 100%; border-collapse: collapse; min-width: 900px; margin: 0; }
.certlink-custom-page thead th {
  text-align: left;
  background: rgba(0, 0, 0, 0.32);
  color: rgba(255, 255, 255, 0.92);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 14px 18px;
  white-space: nowrap;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

/* Mantener modelo de tabla: nunca flex/block en <th> (rompe cabeceras en columna lateral). */
.path-projects .certlink-custom-page table thead {
  display: table-header-group;
}

.path-projects .certlink-custom-page table thead tr {
  display: table-row;
}

.path-projects .certlink-custom-page table thead th {
  display: table-cell;
  vertical-align: middle;
}

.path-projects .certlink-projects-page .table-card .table-wrap thead th {
  background: var(--certlink-projects-table-head-bg, #051f2e) !important;
}

.path-projects .certlink-projects-page .table-card .certlink-portal-grid-wrap table.certlink-portal-grid-table tbody tr > td {
  background-color: var(--certlink-projects-table-row-bg, #0b334a) !important;
}

.path-projects .certlink-projects-page .table-card .certlink-portal-grid-wrap table.certlink-portal-grid-table tbody tr:hover > td {
  background-color: var(--certlink-projects-table-row-hover, #103a57) !important;
}

.path-projects .certlink-custom-page thead th.certlink-project-sortable-head {
  padding: 14px 18px;
  white-space: nowrap;
}

.path-projects .certlink-custom-page .certlink-project-sort-head-inner {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 0;
  width: auto;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger {
  width: auto;
  max-width: 100%;
  min-height: 0;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: rgba(255, 255, 255, 0.92);
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 6px;
  cursor: pointer;
  padding: 0;
  margin: 0;
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  text-align: left;
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger:hover,
.path-projects .certlink-custom-page .certlink-project-sort-trigger:focus-visible {
  background: transparent !important;
  box-shadow: none !important;
  transform: none !important;
  filter: none !important;
  outline: none;
}

/* Hover / activo: dorado maqueta (#e8b964). */
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='none']:hover,
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='none']:focus-visible {
  color: var(--certlink-projects-name-link, #e8b964);
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='none']:hover .certlink-project-sort-label,
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='none']:focus-visible .certlink-project-sort-label {
  color: var(--certlink-projects-name-link, #e8b964);
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='asc']:hover,
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='desc']:hover,
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='asc']:focus-visible,
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='desc']:focus-visible {
  color: var(--certlink-projects-name-link, #e8b964);
}

.path-projects .certlink-custom-page .certlink-project-sort-label {
  display: inline-block;
  flex: 0 0 auto;
  min-width: 0;
  color: #fff;
  font-weight: inherit;
  pointer-events: none;
}

.path-projects .certlink-custom-page .certlink-project-sort-label--active,
.path-projects .certlink-custom-page thead th.certlink-project-sort-active .certlink-project-sort-label {
  color: #fff;
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger__icon {
  position: relative;
  flex: 0 0 auto;
  width: 10px;
  height: 12px;
  margin-left: 0;
  pointer-events: none;
}

/* Inactivo: doble triángulo blanco (maqueta imagen 2). */
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='none'] {
  color: rgba(255, 255, 255, 0.92);
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='none'] .certlink-project-sort-trigger__icon::before,
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='none'] .certlink-project-sort-trigger__icon::after {
  content: '';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='none'] .certlink-project-sort-trigger__icon::before {
  top: 0;
  border-bottom: 5px solid currentColor;
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='none'] .certlink-project-sort-trigger__icon::after {
  bottom: 0;
  border-top: 5px solid currentColor;
}

/* Activo: etiqueta blanca; solo el triángulo dorado (▲ asc / ▼ desc). */
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='asc'],
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='desc'] {
  color: var(--certlink-projects-name-link, #e8b964);
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='asc'] .certlink-project-sort-label,
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='desc'] .certlink-project-sort-label {
  color: #fff;
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='asc'] .certlink-project-sort-trigger__icon::before,
.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='desc'] .certlink-project-sort-trigger__icon::after {
  content: '';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='asc'] .certlink-project-sort-trigger__icon::before {
  top: 1px;
  border-bottom: 6px solid currentColor;
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='asc'] .certlink-project-sort-trigger__icon::after {
  display: none;
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='desc'] .certlink-project-sort-trigger__icon::after {
  bottom: 1px;
  border-top: 6px solid currentColor;
}

.path-projects .certlink-custom-page .certlink-project-sort-trigger[data-sort-state='desc'] .certlink-project-sort-trigger__icon::before {
  display: none;
}

.path-projects .certlink-custom-page tbody td {
  padding: 8px 12px;
}

.certlink-custom-page tbody td {
  padding: 16px 18px;
  font-size: 15px;
  color: #fff;
  border-bottom: 1px solid rgba(255, 255, 255, 0.07);
  white-space: nowrap;
}

.certlink-custom-page .certlink-portal-grid-wrap tbody td {
  white-space: normal !important;
  word-break: break-word;
  overflow-wrap: anywhere;
  vertical-align: top;
}
.certlink-custom-page tbody tr { transition: background 0.18s ease; }
.certlink-custom-page tbody tr:hover { background: rgba(255, 255, 255, 0.04); }

.certlink-custom-page .certlink-portal-grid-wrap table {
  min-width: 0 !important;
  border-collapse: separate;
  border-spacing: 0;
}

/* Placeholder de columna Certificate (sin PDF): centrado con el enlace. */
.certlink-custom-page table .certlink-certificate-download-placeholder.download-link {
  display: inline-block;
  width: 100%;
  text-align: center;
  color: rgba(255, 255, 255, 0.55);
  text-decoration: none !important;
  font-weight: 500;
  cursor: default;
}

/* Estilos del icono de descarga en tabla: bloque de alta especificidad más abajo
   (tras overrides de .region-content a[href]). */

.certlink-custom-page .views-field-certlink-download-link {
  min-width: 52px;
  box-sizing: border-box;
  text-align: center;
  vertical-align: middle;
}

.certlink-portal-nav:not(.certlink-portal-nav--masthead) {
  margin: 0 0 10px;
  font-size: 15px;
  color: var(--muted);
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-start;
  column-gap: 12px;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

.certlink-portal-nav--masthead {
  margin: 0 !important;
  width: auto !important;
  max-width: none !important;
  justify-content: flex-end !important;
  column-gap: 0 !important;
}

.certlink-portal-nav__links {
  flex: 1 1 auto;
  display: inline-flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 0;
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.certlink-portal-nav__right {
  flex: 0 0 auto;
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0;
  font-size: 15px;
  line-height: 1.35;
  text-align: right;
  white-space: nowrap;
}

/* Misma caja óptica para EN · ES y Sign out (antes el botón usaba 12px). */
html.certlink-portal-route .certlink-portal-nav__right .certlink-lang-switch {
  font-size: inherit;
  line-height: inherit;
}

.certlink-portal-nav__right .certlink-logout-btn.certlink-logout-btn--nav {
  font-size: inherit !important;
  line-height: 1.35 !important;
  min-height: 0 !important;
  padding: 5px 12px !important;
  font-weight: 600 !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-portal-nav {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: flex-start !important;
  column-gap: 12px !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-portal-nav__links {
  flex: 1 1 auto !important;
  display: inline-flex !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  min-width: 0 !important;
  max-width: 100% !important;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-portal-nav__right {
  flex: 0 0 auto !important;
  margin-left: auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  font-size: 15px !important;
  line-height: 1.35 !important;
  text-align: right !important;
  white-space: nowrap !important;
}
.certlink-portal-nav a {
  color: #fff;
  text-decoration: none !important;
  border-bottom: none !important;
  font-weight: 600;
}
.certlink-portal-nav a[aria-current="page"] {
  color: #ffffff !important;
  font-weight: 700;
  text-shadow: 0 0 12px rgba(117, 208, 255, 0.45);
  border-bottom: 2px solid rgba(255, 255, 255, 0.88) !important;
  padding-bottom: 3px;
}

/* Masthead unificado: pastilla naranja (portal-shell-mockup), sin subrayado legacy. */
html.certlink-portal-route.certlink-portal-masthead-unified .certlink-portal-nav--masthead a[aria-current='page'] {
  border-bottom: none !important;
  text-shadow: none !important;
}
/* Enlace al panel Drupal (solo administradores): mismo estilo de nav. */
.certlink-portal-nav__admin {
  white-space: nowrap;
}

.certlink-portal-nav a:hover {
  color: #d4efff !important;
  text-shadow: 0 0 12px rgba(117, 208, 255, 0.55);
}
.certlink-portal-nav__sep {
  margin: 0 10px;
  opacity: 0.7;
}

/*
 * Cromado en regiones Bootstrap: barra y topbar alineados al ancho del panel.
 * Las vistas nuevas heredan el mismo contenedor sin depender de estar dentro
 * de .certlink-custom-page; se reutilizan utilidades de flex coherentes con
 * Bootstrap (navbar del tema padre).
 */
html.certlink-portal-route body.certlink-portal-route .region-primary-menu .certlink-portal-nav {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: flex-start !important;
  column-gap: 12px !important;
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  margin-bottom: 8px !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box !important;
}
html.certlink-portal-route body.certlink-portal-route .region-primary-menu .certlink-portal-nav__links {
  flex: 1 1 auto !important;
  display: inline-flex !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  min-width: 0 !important;
  max-width: 100% !important;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
html.certlink-portal-route body.certlink-portal-route .region-primary-menu .certlink-portal-nav__right {
  flex: 0 0 auto !important;
  margin-left: auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  font-size: 15px !important;
  line-height: 1.35 !important;
  text-align: right !important;
  white-space: nowrap !important;
}
html.certlink-portal-route body.certlink-portal-route .region-top-header .topbar {
  max-width: none !important;
  width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-inline: 0 !important;
}

/* Enlaces de texto en el shell (misma línea visual que la nav superior). */
.certlink-portal-text-link,
a.certlink-portal-text-link {
  color: #fff !important;
  text-decoration: none !important;
  border-bottom: none !important;
  font-weight: 600;
  background: transparent !important;
  padding: 0 !important;
  border-radius: 0 !important;
}
.certlink-portal-text-link:hover,
a.certlink-portal-text-link:hover {
  color: #d4efff !important;
  text-shadow: 0 0 12px rgba(117, 208, 255, 0.55);
  text-decoration: none !important;
}
.certlink-portal-text-link:focus-visible,
a.certlink-portal-text-link:focus-visible {
  outline: 2px solid rgba(180, 230, 255, 0.95);
  outline-offset: 3px;
}

.certlink-template-form-page .certlink-template-form-help,
.certlink-template-form-page .certlink-template-form-client,
.certlink-template-manage-page .certlink-template-form-client {
  color: rgba(255, 255, 255, 0.92);
  font-size: 16px;
  line-height: 1.45;
  margin: 0 0 16px;
  text-align: left;
}

.certlink-template-manage-page .certlink-template-actions-list {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
}

.certlink-template-manage-page .certlink-template-actions-list li {
  margin: 0;
  padding: 0;
}

.certlink-template-manage-page .certlink-template-action-btn.setup-btn {
  text-decoration: none !important;
}

.certlink-template-manage-page .certlink-template-in-use {
  background: rgba(1, 55, 83, 0.35);
  border: 1px solid rgba(180, 230, 255, 0.35);
  border-radius: 8px;
  margin: 0 0 20px;
  padding: 14px 18px;
}

.certlink-template-manage-page .certlink-template-in-use__title {
  color: #fff;
  font-size: 1.05rem;
  font-weight: 600;
  margin: 0 0 10px;
}

.certlink-template-manage-page .certlink-template-in-use__status,
.certlink-template-manage-page .certlink-template-in-use__mode {
  color: rgba(255, 255, 255, 0.92);
  font-size: 15px;
  line-height: 1.45;
  margin: 0 0 8px;
}

.certlink-template-manage-page .certlink-template-in-use__mode {
  opacity: 0.9;
}

.certlink-template-manage-page .certlink-template-in-use__hint {
  color: rgba(255, 255, 255, 0.72);
  font-size: 13px;
  font-style: italic;
  line-height: 1.4;
  margin: 0;
}

.certlink-template-form-page .form-managed-file,
.certlink-template-form-page .form-file,
.certlink-template-form-page input[type="file"] {
  max-width: 100%;
}

.certlink-template-form-page .form-managed-file .file {
  color: #fff;
  font-weight: 600;
}

/* Formulario plantilla: columna centrada como User Settings (640px). */
.certlink-template-form-page .certlink-template-form-help,
.certlink-template-form-page .certlink-template-form-client,
.certlink-template-form-page.certlink-portal-admin-form .node-form,
.certlink-template-form-page.certlink-portal-admin-form form {
  width: 100%;
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}

.certlink-template-form-page.certlink-portal-admin-form .node-form,
.certlink-template-form-page.certlink-portal-admin-form form {
  margin-top: 12px;
}

.certlink-template-form-page.certlink-portal-admin-form .form-item,
.certlink-template-form-page.certlink-portal-admin-form .form-actions {
  width: 100%;
  max-width: 100%;
  margin-left: 0;
  margin-right: 0;
}

.certlink-template-form-page .certlink-v2-spec-toolbar {
  width: 100%;
  max-width: none;
}

.certlink-template-form-page.certlink-portal-admin-form label,
.certlink-template-form-page.certlink-portal-admin-form .fieldset-legend,
.certlink-template-form-page.certlink-portal-admin-form .form-item__label,
.certlink-template-form-page.certlink-portal-admin-form h4 {
  color: var(--text);
  display: block;
  margin-bottom: 8px;
  font-weight: 600;
}

.certlink-template-form-page.certlink-portal-admin-form .description,
.certlink-template-form-page.certlink-portal-admin-form .form-item__description {
  color: var(--muted);
  margin-top: 6px;
  line-height: 1.4;
}

.certlink-template-form-page.certlink-portal-admin-form .form-item {
  margin-bottom: 18px;
}

.certlink-template-form-page.certlink-portal-admin-form input[type="text"],
.certlink-template-form-page.certlink-portal-admin-form input[type="email"],
.certlink-template-form-page.certlink-portal-admin-form input[type="password"],
.certlink-template-form-page.certlink-portal-admin-form input[type="url"],
.certlink-template-form-page.certlink-portal-admin-form input[type="number"],
.certlink-template-form-page.certlink-portal-admin-form input[type="tel"],
.certlink-template-form-page.certlink-portal-admin-form textarea,
.certlink-template-form-page.certlink-portal-admin-form select {
  background: #ffffff;
  color: #1a1a1a;
  border-radius: 8px;
  border: none;
  padding: 10px 14px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

.certlink-template-form-page.certlink-portal-admin-form .form-managed-file {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
  width: 100%;
}

.certlink-template-form-page.certlink-portal-admin-form input[type="file"].form-file {
  appearance: none;
  -webkit-appearance: none;
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  color: rgba(255, 255, 255, 0.92);
  font-size: 14px;
  line-height: 1.35;
  border: none;
  background: transparent;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
  overflow: visible;
}

.certlink-template-form-page.certlink-portal-admin-form input[type="file"].form-file::file-selector-button,
.certlink-template-form-page.certlink-portal-admin-form input[type="file"].form-file::-webkit-file-upload-button {
  appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  margin: 0 12px 0 0;
  padding: var(--certlink-btn-fill-primary-py) var(--certlink-btn-fill-primary-px);
  min-height: var(--certlink-auth-control-height);
  border: none;
  border-radius: var(--certlink-btn-fill-primary-r);
  background: var(--certlink-btn-fill-primary-bg);
  background-color: var(--certlink-btn-fill-primary-bg);
  color: var(--certlink-btn-fill-primary-color);
  font-family: inherit;
  font-size: 1rem;
  font-weight: var(--certlink-btn-fill-primary-fw);
  line-height: 1.2;
  white-space: nowrap;
  cursor: pointer;
  box-shadow: var(--certlink-btn-fill-primary-shadow);
  transition:
    transform 0.22s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.22s ease,
    filter 0.2s ease;
}

.certlink-template-form-page.certlink-portal-admin-form input[type="file"].form-file::file-selector-button:hover,
.certlink-template-form-page.certlink-portal-admin-form input[type="file"].form-file::-webkit-file-upload-button:hover {
  transform: translateY(-2px);
  filter: brightness(1.12);
  box-shadow: var(--certlink-btn-fill-hover-shadow);
}

.certlink-template-form-page.certlink-portal-admin-form .form-actions {
  margin-top: 20px;
  padding-top: 4px;
  display: flex;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 12px;
}

.path-settings-general .certlink-settings-page .messages,
.path-settings-general .certlink-settings-page [data-drupal-messages],
.path-settings-general .certlink-template-form-page .messages,
.path-settings-general .certlink-template-form-page [data-drupal-messages] {
  margin: 0 auto 16px !important;
  max-width: 640px;
  width: 100%;
  box-sizing: border-box;
}

/* User settings: avisos incrustados en el panel (no toasts fijos del bloque global). */
.path-settings-user .certlink-user-settings-page .messages,
.path-settings-user .certlink-user-settings-page [data-drupal-messages] {
  margin: 0 0 16px !important;
  max-width: 100%;
}

.path-settings-user .certlink-user-settings-page [data-drupal-messages].toast-container {
  position: static !important;
  top: auto !important;
  right: auto !important;
  inset: auto !important;
  transform: none !important;
  width: 100% !important;
  max-width: 100% !important;
  padding: 0 !important;
  margin: 0 0 16px !important;
}

.path-settings-user .certlink-user-settings-page [data-drupal-messages].toast-container .toast {
  width: 100% !important;
  max-width: 100% !important;
  background: rgba(220, 248, 230, 0.96) !important;
  color: #0d3d1f !important;
  border: 1px solid #3d9a62 !important;
  border-radius: 8px !important;
  box-shadow: none !important;
  overflow: hidden;
}

.path-settings-user .certlink-user-settings-page [data-drupal-messages].toast-container .toast-header,
.path-settings-user .certlink-user-settings-page [data-drupal-messages].toast-container .toast-header .bd-placeholder-img,
.path-settings-user .certlink-user-settings-page [data-drupal-messages].toast-container .toast-header .me-auto,
.path-settings-user .certlink-user-settings-page [data-drupal-messages].toast-container .toast-header .btn-close {
  display: none !important;
}

.path-settings-user .certlink-user-settings-page [data-drupal-messages].toast-container .toast-body {
  color: #0d3d1f !important;
  font-weight: 600;
  font-size: 14px;
  padding: 12px 16px !important;
  text-align: left !important;
}

.path-settings-general .certlink-portal-shell-messages .alert,
.path-settings-general .certlink-settings-page .alert-success,
.path-settings-general .certlink-template-form-page .alert-success {
  background: rgba(220, 248, 230, 0.96) !important;
  color: #0d3d1f !important;
  border: 1px solid #3d9a62 !important;
  border-radius: 8px !important;
  padding: 12px 16px !important;
}

.path-settings-general .certlink-portal-shell-messages .alert-heading,
.path-settings-general .certlink-settings-page .alert-heading {
  display: none !important;
}

.certlink-template-form-page .certlink-template-cancel-link {
  margin-left: 12px;
  font-weight: 600;
}

.certlink-section-title {
  margin: 28px 0 14px;
  font-size: 22px;
  font-weight: 600;
  color: #fff;
}
.certlink-linguist-section:first-of-type .certlink-section-title {
  margin-top: 8px;
}

.certlink-empty-panel {
  margin-top: 12px;
  padding: 22px 20px;
  border-radius: 16px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  color: var(--muted);
  line-height: 1.5;
}

.certlink-inline-msg {
  margin: 12px 0 18px;
  padding: 14px 18px;
  border-radius: 12px;
  background: rgba(180, 40, 40, 0.25);
  border: 1px solid rgba(255,180,180,0.35);
  color: #ffe8e8;
}

.meta { margin-top: 16px; color: var(--muted); font-size: 14px; display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.chip { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 999px; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.10); font-size: 13px; }

.setup-modal { position: fixed; inset: 0; background: rgba(0,0,0,0.42); display: none; align-items: center; justify-content: center; padding: 22px; z-index: 9999; }
.setup-modal.open { display: flex; }
.setup-card { width: min(640px, 100%); background: #ffffff; color: #1e1e1e; border-radius: 18px; padding: 24px; box-shadow: 0 20px 50px rgba(0,0,0,0.25); }
.setup-card h2 { margin: 0 0 10px; color: var(--abroadlink-blue); }
.setup-card p { margin: 0 0 18px; line-height: 1.5; color: #3f4850; }
.settings-tabs { display: flex; gap: 10px; margin: 0 0 16px; }
.settings-tab { border: none; border-radius: 999px; padding: 10px 16px; cursor: pointer; background: #eef3f7; color: #294150; font: inherit; }
.settings-tab.active { background: var(--abroadlink-blue); color: #fff; }
.tab-panel { display: none; }
.tab-panel.active { display: block; }
.setup-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.setup-field { border: 1px solid #d9e2ea; border-radius: 12px; padding: 12px; background: #f8fbfd; }
.setup-field label { display: block; font-size: 12px; color: #4a5560; margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.4px; }
.setup-field input { width: 100%; padding: 8px 0; background: transparent; color: #111; }
.modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 8px; }
.btn-secondary, .btn-primary:not(.certlink-portal-fill-btn) { border-radius: 10px; padding: 12px 18px; cursor: pointer; }
.btn-secondary { background: #eef3f7; color: #24323d; }
.btn-primary:not(.certlink-portal-fill-btn) { background: var(--abroadlink-blue); color: #fff; }

/* ==========================================================================
   TRANSLATORS (/translators) — mismo flujo de documento que /projects (sin overlay fijo).
   ========================================================================== */

.path-translators .view-certlink-translators .view-content {
  background: transparent;
  border: none;
  border-radius: 0;
  overflow: visible;
  margin-top: 0;
}

.path-translators .view-certlink-translators .view-filters {
  margin: 20px 0 8px;
}

.path-translators .view-certlink-translators .view-filters form.controls {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr auto auto;
  gap: 10px;
  align-items: center;
}

.path-translators .view-certlink-translators .view-filters .form-item {
  margin: 0;
}

.path-translators .view-certlink-translators .view-filters .form-item input,
.path-translators .view-certlink-translators .view-filters .form-item select {
  width: 100%;
  height: auto;
  min-height: 36px;
  border-radius: 8px;
  border: none;
  padding: 6px 16px;
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.08);
}

.path-translators .view-certlink-translators .view-filters .form-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  align-self: center;
  height: auto;
  min-height: 0;
  margin: 0 !important;
  padding: 0 !important;
}

.path-translators .view-certlink-translators .view-filters .setup-btn {
  height: auto;
  min-height: 0;
  line-height: 1.25;
  padding: 5px 16px;
  border-radius: 8px !important;
  border: none !important;
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #ffffff;
  color: #1f2a35;
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.08);
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.path-translators .view-certlink-translators .view-filters .form-actions .button,
.path-translators .view-certlink-translators .view-filters .form-actions input[type="submit"],
.path-translators .view-certlink-translators .view-filters .form-actions input[type="reset"] {
  margin: 0 !important;
  vertical-align: middle;
}

.path-translators .view-certlink-translators .view-filters .setup-btn:hover,
.path-translators .view-certlink-translators .view-filters .setup-btn:focus {
  background: #d9edf8;
  color: #013753;
  border-color: transparent !important;
}

.path-translators .view-certlink-translators .view-header {
  margin-bottom: 14px;
}

.path-translators .view-certlink-translators .view-empty {
  margin-top: 12px;
  padding: 22px 20px;
  border-radius: 16px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  color: var(--muted);
}

/* ==========================================================================
   GENERAL SETTINGS (ruta /settings/general)
   ========================================================================== */
.path-settings-general .block-page-title-block,
.path-settings-user .block-page-title-block {
  display: none !important;
}

.path-settings-general .certlink-custom-page .certlink-settings-page:not(.certlink-settings-panel),
.path-settings-user .certlink-custom-page .certlink-user-settings-page {
  padding: 0;
  background: transparent;
  box-shadow: none;
  border-radius: 0;
  color: inherit;
}

.path-settings-general .certlink-custom-page .certlink-settings-page:not(.certlink-settings-panel) {
  max-width: none;
  margin: 0;
}

/* Columna de formulario legacy (sin panel maqueta): centrada 640px. */
.path-settings-user .certlink-custom-page .certlink-user-settings-page:not(.certlink-settings-panel) {
  max-width: 640px;
  margin-inline: auto;
  margin-block: 0;
}

.path-settings-user .certlink-custom-page .certlink-user-settings-page.certlink-settings-panel {
  max-width: none;
  margin-inline: 0;
}

.path-settings-general .certlink-settings-page-head h2,
.path-settings-user .certlink-user-settings-page h2,
.path-settings-general .certlink-settings-page-head.page-head h2 {
  margin: 0 0 6px;
  font-family: var(--font-sans);
  font-weight: 800;
  font-size: var(--fs-4xl, 2rem);
  letter-spacing: var(--tracking-tight, -0.02em);
  color: #fff !important;
}

.path-settings-general .certlink-settings-page-head p,
.path-settings-user .certlink-user-settings-page p,
.path-settings-general .certlink-settings-page-head.page-head p {
  margin: 0;
  color: rgba(255, 255, 255, 0.72);
  font-size: var(--fs-md, 1rem);
}

/* User settings: mejorar contraste de textos auxiliares en contraseña. */
.path-settings-user .certlink-user-settings-page .password-strength__title,
.path-settings-user .certlink-user-settings-page .password-strength__text,
.path-settings-user .certlink-user-settings-page .password-confirm-message,
.path-settings-user .certlink-user-settings-page .password-confirm-message span,
.path-settings-user .certlink-user-settings-page .form-item__description,
.path-settings-user .certlink-user-settings-page .description,
.path-settings-user .certlink-user-settings-page .password-suggestions {
  color: #dff1ff !important;
}

/* User settings: password / confirm usan size=25 del núcleo; igualar ancho al resto. */
.path-settings-user .certlink-user-settings-page .form-item,
.path-settings-user .certlink-user-settings-page .js-form-type-password-confirm {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

/*
 * Bootstrap tema: components/user.css fuerza .password-field / .password-confirm a 55%
 * y .password-parent / .confirm-parent a max-width 33em — anula el 100% del input.
 */
html.certlink-portal-route body.path-settings-user .certlink-user-settings-page .password-parent,
html.certlink-portal-route body.path-settings-user .certlink-user-settings-page .confirm-parent {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
}

html.certlink-portal-route body.path-settings-user .certlink-user-settings-page input.password-field,
html.certlink-portal-route body.path-settings-user .certlink-user-settings-page input.password-confirm,
html.certlink-portal-route body.path-settings-user .certlink-user-settings-page input.js-password-field,
html.certlink-portal-route body.path-settings-user .certlink-user-settings-page input.js-password-confirm {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.path-settings-user .certlink-user-settings-page .password-strength,
html.certlink-portal-route body.path-settings-user .certlink-user-settings-page .password-confirm-match {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
}

.path-settings-user .certlink-user-settings-page input.form-text,
.path-settings-user .certlink-user-settings-page input.form-email,
.path-settings-user .certlink-user-settings-page input.form-control,
.path-settings-user .certlink-user-settings-page input[type="text"],
.path-settings-user .certlink-user-settings-page input[type="email"],
.path-settings-user .certlink-user-settings-page input[type="password"] {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0;
  box-sizing: border-box !important;
}

.path-settings-user .certlink-user-settings-page .password-strength,
.path-settings-user .certlink-user-settings-page [data-drupal-selector="password-strength-meter"] {
  max-width: 100%;
  box-sizing: border-box;
}

/* “Passwords match:” queda pegado al input confirm (JS lo inserta debajo del campo). */
html.certlink-portal-route body.path-settings-user .certlink-user-settings-page [data-drupal-selector="password-confirm-message"],
html.certlink-portal-route body.path-settings-user .certlink-user-settings-page .password-confirm-message {
  margin-top: 12px !important;
  display: block;
}

.path-settings-general .certlink-settings-actions,
.path-settings-user .certlink-settings-actions {
  display: flex !important;
  flex-direction: row;
  align-items: center;
  gap: 20px 28px;
  flex-wrap: wrap;
  margin: 10px 0 18px;
}

.path-settings-general .certlink-settings-actions a,
.path-settings-user .certlink-settings-actions a {
  display: inline-block;
  padding: 0;
  border-radius: 0;
  background: transparent !important;
  color: #fff !important;
  text-decoration: none !important;
  border-bottom: none !important;
  font-weight: 600;
}

.path-settings-general .certlink-settings-actions a:hover,
.path-settings-user .certlink-settings-actions a:hover {
  color: #d4efff !important;
  text-shadow: 0 0 12px rgba(117, 208, 255, 0.55);
}

.path-settings-general .certlink-settings-summary,
.path-settings-user .certlink-settings-summary {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 14px;
  padding: 14px;
}

.path-settings-general .certlink-settings-summary h3,
.path-settings-user .certlink-settings-summary h3 {
  margin: 0 0 12px;
  font-size: 20px;
  color: #fff !important;
  font-weight: 600;
}

.path-settings-general .certlink-settings-summary table,
.path-settings-user .certlink-settings-summary table {
  width: 100%;
  border-collapse: collapse;
}

.path-settings-general .certlink-settings-summary .certlink-portal-grid-wrap table,
.path-settings-user .certlink-settings-summary .certlink-portal-grid-wrap table {
  min-width: 0 !important;
}

.path-settings-general .certlink-settings-summary tbody td a,
.path-settings-user .certlink-settings-summary tbody td a {
  color: #ffffff;
  text-decoration: none !important;
  border-bottom: none !important;
  font-weight: 600;
}

.path-settings-general .certlink-settings-summary tbody td a:hover,
.path-settings-user .certlink-settings-summary tbody td a:hover {
  color: #d4efff !important;
  text-shadow: 0 0 10px rgba(117, 208, 255, 0.55);
}

/*
 * General Settings: layout maqueta (formulario 760px en settings-shell).
 * Estilos de campos/secciones en portal-settings-mockup.css.
 */
html.certlink-portal-route body.path-settings-general .certlink-custom-page > .shell,
html.certlink-portal-route body.path-settings-user .certlink-custom-page > .shell {
  background: transparent;
  border: none;
  box-shadow: none;
  overflow: visible;
}

html.certlink-portal-route body.path-settings-general .certlink-settings-page:not(.certlink-settings-panel) {
  margin: 0;
  padding: 0;
  background: transparent;
  border: none;
  box-shadow: none;
}

html.certlink-portal-route body.path-settings-general .certlink-settings-page.certlink-settings-panel.panel {
  margin: 0;
  overflow: visible;
}

html.certlink-portal-route body.path-settings-general .certlink-empty-panel {
  padding: var(--space-4, 16px);
  border-radius: var(--radius-lg, 12px);
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: rgba(255, 255, 255, 0.72);
}

/* ==========================================================================
   CLIENT LIST (ruta /clients)
   Comparte layout con /projects: sin position:fixed (evitaba superponer el shell
   al cromado Bootstrap y al título de página).
   ========================================================================== */

.path-clients .view-client-list .view-filters {
  margin: 16px 0 18px;
}

.path-clients .view-client-list .view-filters form,
.path-clients .view-client-list .view-filters form > div {
  display: flex !important;
  flex-flow: row nowrap !important;
  gap: 12px !important;
  align-items: stretch !important;
  width: 100% !important;
  box-sizing: border-box !important;
  padding: 0 10px !important;
}

.path-clients .view-client-list .view-filters .js-form-item,
.path-clients .view-client-list .view-filters .form-item {
  flex: 1 1 0% !important;
  width: auto !important;
  margin: 0 !important;
}

html.certlink-portal-route body.certlink-portal-route.path-clients .certlink-custom-page .view-client-list .view-filters input[type="text"] {
  width: 100% !important;
  height: 40px !important;
  min-height: 40px !important;
  line-height: 40px !important;
  border-radius: 8px !important;
  border: 1px solid rgba(255, 255, 255, 0.15) !important;
  padding: 0 14px !important;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.certlink-portal-route.path-clients .certlink-custom-page .view-client-list .view-filters input[type="text"]:focus {
  border-color: #75d0ff !important;
  box-shadow: 0 0 0 3px rgba(117, 208, 255, 0.25) !important;
}

html.certlink-portal-route body.certlink-portal-route.path-clients .certlink-custom-page .view-client-list .view-filters input[type="submit"],
html.certlink-portal-route body.certlink-portal-route.path-clients .certlink-custom-page .view-client-list .view-filters button,
html.certlink-portal-route body.certlink-portal-route.path-clients .certlink-custom-page .view-client-list .view-filters .setup-btn {
  height: 100% !important;
  min-height: 40px !important;
  line-height: normal !important;
  border-radius: 8px !important;
  border: none !important;
  padding: 0 32px !important;
  box-sizing: border-box !important;
  font-weight: 700 !important;
  width: auto !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

.path-clients .view-client-list .view-filters .form-actions {
  display: flex !important;
  flex: 0 0 auto !important;
  gap: 8px !important;
  align-items: stretch !important;
  height: 100% !important;
  width: auto !important;
  margin: 0 !important;
}

/* Normalización visual de controles en todo el portal autenticado. */
body.certlink-portal-route .certlink-custom-page .view-filters input[type="text"],
body.certlink-portal-route .certlink-custom-page .view-filters input[type="search"],
body.certlink-portal-route .certlink-custom-page .view-filters input.form-text,
body.certlink-portal-route .certlink-custom-page .view-filters input.form-control,
body.certlink-portal-route .certlink-custom-page .certlink-settings-page input[type="text"],
body.certlink-portal-route .certlink-custom-page .certlink-settings-page input[type="email"],
body.certlink-portal-route .certlink-custom-page .certlink-settings-page input[type="password"],
body.certlink-portal-route .certlink-custom-page .certlink-settings-page input[type="search"],
body.certlink-portal-route .certlink-custom-page .certlink-settings-page select,
body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page input.form-text,
body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page input.form-email,
body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page input.form-control,
body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page input[type="text"],
body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page input[type="email"],
body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page input[type="password"] {
  height: 40px !important;
  min-height: 40px !important;
  line-height: 40px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  box-sizing: border-box !important;
}

body.certlink-portal-route .certlink-custom-page .view-filters input[type="submit"],
body.certlink-portal-route .certlink-custom-page .view-filters input[type="button"],
body.certlink-portal-route .certlink-custom-page .view-filters .button,
body.certlink-portal-route .certlink-custom-page .certlink-settings-page .form-actions input[type="submit"],
body.certlink-portal-route .certlink-custom-page .certlink-settings-page .form-actions .button:not(.button--primary):not(.btn-primary) {
  height: auto !important;
  min-height: 0 !important;
  line-height: 1.25 !important;
  padding: 5px 14px !important;
  box-sizing: border-box !important;
}

/* Submit primario («Save», etc.): bloque unificado final (variables --certlink-btn-fill-*). */
body.certlink-portal-route .certlink-custom-page .certlink-settings-page .form-actions .button.button--primary,
body.certlink-portal-route .certlink-custom-page .certlink-settings-page .form-actions .button.btn-primary,
body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions button[data-drupal-selector="edit-submit"],
body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions input.certlink-portal-fill-btn,
body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions button.certlink-portal-fill-btn {
  height: auto !important;
  min-height: 0 !important;
  line-height: 1.25 !important;
}

/* Altura uniforme de 40px para todos los botones en páginas de settings (Save, Cancel account, etc.) */
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-settings-page .form-actions .button,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-settings-page .form-actions button,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-settings-page .form-actions input[type="submit"],
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-settings-page .form-actions input[type="button"],
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions .button,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions button,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions input[type="submit"],
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions input[type="button"],
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions button[data-drupal-selector="edit-submit"] {
  height: 40px !important;
  min-height: 40px !important;
  width: 180px !important;
  line-height: normal !important;
  padding: 0 16px !important;
  box-sizing: border-box !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  white-space: nowrap !important;
}

.path-clients .certlink-custom-page td.views-field-nothing {
  text-align: center;
  vertical-align: middle;
}

.path-clients .certlink-custom-page td.views-field-nothing .setup-btn--icon {
  text-decoration: none;
  border-bottom: none;
  padding-bottom: 0;
}

/* ==========================================================================
   Formularios Drupal (usuario / contraseña / nodos empresa-cert.) en shell
   ========================================================================== */
.certlink-portal-admin-form.certlink-custom-page {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  display: flex !important;
  align-items: flex-start !important;
  justify-content: center !important;
  padding-top: 18px !important;
  padding-bottom: 24px !important;
}

/*
 * General Settings y formularios de plantilla (/settings/general/...):
 * flujo normal bajo topbar + nav (sin position:fixed que tapaba logo y menú).
 */
html.certlink-portal-route body.path-settings-general .certlink-custom-page.certlink-portal-admin-form,
body.certlink-portal-route.path-settings-general .certlink-portal-admin-form.certlink-custom-page,
html.certlink-portal-route body.path-settings-general .certlink-custom-page .shell > .certlink-portal-admin-form {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  bottom: auto !important;
  width: 100% !important;
  max-width: var(--certlink-portal-chrome-max) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  min-height: 0 !important;
  height: auto !important;
  display: block !important;
  overflow-x: hidden !important;
  overflow-y: visible !important;
  z-index: auto !important;
  isolation: auto !important;
  padding-top: 12px !important;
  padding-bottom: 24px !important;
}

html.certlink-portal-route body.path-settings-general .certlink-custom-page .shell > .certlink-settings-page {
  margin-top: 0 !important;
}

/* Formularios plantilla (add/edit/delete): misma cáscara V2 que gestión y Project specifications. */
html.certlink-portal-route body.path-settings-general .certlink-template-form-page.certlink-portal-admin-form .form-managed-file input[type="file"].form-file {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.path-settings-general .certlink-custom-page.certlink-template-form-portal > .shell,
html.certlink-portal-route body.path-settings-general .certlink-custom-page.certlink-template-manage-portal > .shell {
  padding: 26px 34px 34px;
}

.certlink-template-form-page .certlink-template-form-help {
  color: rgba(255, 255, 255, 0.92);
  font-size: 15px;
  line-height: 1.45;
}

.certlink-portal-admin-form .certlink-admin-form-panel {
  margin-top: 0;
  padding: 26px 28px 32px;
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 18px;
  color: var(--text);
}

.certlink-portal-admin-form .certlink-admin-form-panel .layout-region,
.certlink-portal-admin-form .certlink-admin-form-panel .layout-region--content,
.certlink-portal-admin-form .certlink-admin-form-panel .node-form,
.certlink-portal-admin-form .certlink-admin-form-panel .user-form,
.certlink-portal-admin-form .certlink-admin-form-panel .user-login-form {
  max-width: 920px;
  margin: 0 auto;
}

.certlink-portal-admin-form .certlink-admin-form-panel label,
.certlink-portal-admin-form .certlink-admin-form-panel .fieldset-legend,
.certlink-portal-admin-form .certlink-admin-form-panel .form-item__label,
.certlink-portal-admin-form .certlink-admin-form-panel h4 {
  color: var(--text);
}

.certlink-portal-admin-form .certlink-admin-form-panel .description,
.certlink-portal-admin-form .certlink-admin-form-panel .form-item__description {
  color: var(--muted);
}

.certlink-portal-admin-form .certlink-admin-form-panel input[type="text"],
.certlink-portal-admin-form .certlink-admin-form-panel input[type="email"],
.certlink-portal-admin-form .certlink-admin-form-panel input[type="password"],
.certlink-portal-admin-form .certlink-admin-form-panel input[type="url"],
.certlink-portal-admin-form .certlink-admin-form-panel input[type="number"],
.certlink-portal-admin-form .certlink-admin-form-panel input[type="tel"],
.certlink-portal-admin-form .certlink-admin-form-panel textarea,
.certlink-portal-admin-form .certlink-admin-form-panel select {
  background: #ffffff;
  color: #1a1a1a;
  border-radius: 8px;
  border: none;
  padding: 10px 14px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.08);
  max-width: 100%;
}

.certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button,
.certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"],
.certlink-portal-admin-form .certlink-admin-form-panel .button {
  border-radius: 8px;
  padding: 6px 16px;
  font-weight: 600;
}

/* Centrado vertical del texto en acciones (Guardar, etc.): altura según contenido. */
.certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 0;
  line-height: 1.25 !important;
}

.certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"] {
  min-height: 0;
  line-height: 1.25 !important;
  padding-top: 6px !important;
  padding-bottom: 6px !important;
}

/* Override específico para botones submit de Drupal (Guardar).
 * Excluye login y set password: allí el botón debe igualar ancho/alto del input (40px). */
body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit,
body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit,
body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--primary {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  height: auto !important;
  min-height: 0 !important;
  line-height: 1.25 !important;
  padding-top: 6px !important;
  padding-bottom: 6px !important;
  padding-left: 18px !important;
  padding-right: 18px !important;
  box-sizing: border-box !important;
  vertical-align: middle !important;
}

/* Shell login / solicitud correo / reset / nueva contraseña: NO invertir primario (blanco sobre azul);
 * mismo aspecto que barra superior (.certlink-logout-btn). */
body:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .button--primary,
body:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--primary {
  background: #ffffff;
  color: #013753;
  border: none;
}

.certlink-portal-admin-form .certlink-admin-form-panel .button--danger {
  background: rgba(180, 40, 40, 0.35);
  color: #fff;
  border: 1px solid rgba(255,180,180,0.45);
}

/* User edit en shell portal: "Cancelar cuenta" igual visualmente a "Guardar". */
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--danger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: auto;
  min-height: 0;
  padding: 6px 16px;
  border-radius: 8px;
  background: #ffffff !important;
  color: #013753 !important;
  border: none !important;
  font-weight: 600;
  opacity: 1 !important;
  box-shadow: none !important;
  text-shadow: none !important;
  min-width: 0;
  width: auto;
}

body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions a.button.button--danger,
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions a.button.button--danger:visited,
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions a.button.button--danger:hover,
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions a.button.button--danger:focus,
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions a.button.button--danger:active,
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions a.button.button--danger.is-disabled,
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button.button--danger.is-disabled,
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button.button--danger[disabled],
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .user-form .form-actions .button--danger,
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .user-form .form-actions [data-drupal-selector="edit-delete"] {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  height: auto !important;
  min-height: 0 !important;
  padding: 6px 16px !important;
  border-radius: 8px !important;
  background: #ffffff !important;
  color: #013753 !important;
  border: 0 !important;
  font-weight: 600 !important;
  opacity: 1 !important;
  text-decoration: none !important;
  box-shadow: none !important;
  text-shadow: none !important;
  filter: none !important;
  -webkit-appearance: none !important;
  appearance: none !important;
  line-height: 1.25 !important;
}

body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .is-disabled,
body.certlink-portal-route .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .is-disabled * {
  opacity: 1 !important;
}

/* Portada y shell portal: gradiente. La ruta /user/login usa fondo sólido en la sección
 * «LOGIN NATIVO Drupal» al final de este archivo (mayor especificidad y orden en cascada). */
.path-frontpage,
.path-frontpage body,
html.certlink-portal-route.path-frontpage,
html.certlink-portal-route.path-frontpage body,
html.certlink-portal-route,
html.certlink-portal-route body {
  background: linear-gradient(180deg, var(--abroadlink-blue) 0%, #02486f 100%) !important;
}

.path-frontpage .dialog-off-canvas-main-canvas,
.path-frontpage #page-wrapper,
.path-frontpage #page,
.path-frontpage #main-wrapper,
.path-frontpage .layout-container,
.path-frontpage .layout-content,
.path-frontpage .region-content {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
}

.path-frontpage .region-content {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
}

/* Formularios de cuenta en shell (login, user.pass, reset): clase certlink-portal-login en preprocess_html.
 * Tarjeta alineada arriba (flex-start), centrada en horizontal; padding superior para no pegar al topbar. */

body.certlink-portal-login .certlink-fullscreen-app {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}

body.certlink-portal-login:not(.certlink-portal-home) .certlink-custom-page {
  scrollbar-gutter: stable both-edges;
  /* El topbar vive en .region-top-header (fuera de esta caja). */
  position: relative !important;
  inset: auto !important;
  width: 100% !important;
  max-width: 100vw !important;
  min-height: min(100vh, 100dvh) !important;
  height: auto !important;
  box-sizing: border-box !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  overflow-y: visible !important;
  overflow-x: hidden !important;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch !important;
  z-index: auto !important;
  padding: clamp(20px, 4vh, 44px) clamp(12px, 3.5vw, 24px) max(22px, calc(env(safe-area-inset-bottom, 0px) + 14px)) !important;
}

/*
 * Topbar login/pass (región Bootstrap): reglas legacy sin .masthead; portada/login
 * unificado en portal-shell-mockup (.masthead-inner).
 */
body.certlink-portal-login .region-top-header .topbar--login:not(.masthead) {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  justify-content: space-between !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  padding: 0 var(--certlink-topbar-pad-x) 0 var(--certlink-topbar-pad-left) !important;
  column-gap: 24px !important;
  row-gap: 12px !important;
  margin-bottom: 0 !important;
}

body.certlink-portal-login .region-top-header .topbar--login:not(.masthead) .brand {
  flex: 0 1 auto;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  min-width: 0;
  max-width: min(72%, 820px);
  gap: 14px;
}

body.certlink-portal-login .region-top-header .topbar--login:not(.masthead) .brand .certlink-mark {
  flex-shrink: 0;
}

body.certlink-portal-login .region-top-header .topbar--login:not(.masthead) .brand-copy {
  flex: 1 1 auto;
  min-width: 0;
  text-align: left !important;
}

body.certlink-portal-login .region-top-header .topbar--login:not(.masthead) .topbar-actions {
  flex: 0 0 auto !important;
  display: inline-flex !important;
  align-items: center !important;
  width: auto !important;
  margin-left: 0 !important;
}

body.certlink-portal-login .region-top-header .topbar--login:not(.masthead) .topbar-actions .abroadlink-logo img {
  display: block;
}

/*
 * Segunda barra Bootstrap (#navbar-main): en login/pass/reset suele ir vacía
 * (menú principal oculto) pero sigue pintando altura/borde → franja clara.
 */
html.certlink-portal-route body.certlink-portal-login #navbar-main,
html.certlink-portal-route body.certlink-portal-pass-reset-flow #navbar-main {
  display: none !important;
}

/*
 * «Pasar al contenido principal»: Bootstrap usa .visually-hidden-focusable (un
 * solo token); el núcleo usa .visually-hidden.focusable. Refuerzo off-screen
 * con !important por encima de reglas globales del portal (p. ej. enlaces).
 * Aplica a todo el frontend portal (no solo login): el enlace no debe verse
 * hasta que reciba foco por teclado.
 */
html.certlink-portal-route body.certlink-portal-route > a.visually-hidden-focusable:not(:focus):not(:focus-within),
html.certlink-portal-route body.certlink-portal-route > a.visually-hidden.focusable:not(:focus):not(:focus-within),
html.certlink-portal-route body.certlink-portal-route > a[href="#main-content"]:not(:focus):not(:focus-within),
html.certlink-portal-route body.certlink-portal-route .skip-link.visually-hidden.focusable:not(:focus):not(:focus-within),
html.certlink-portal-route body.certlink-portal-route a.skip-link.visually-hidden.focusable:not(:focus):not(:focus-within) {
  position: absolute !important;
  left: -9999px !important;
  top: auto !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
  transform: none !important;
  -webkit-transform: none !important;
  background: transparent !important;
  color: transparent !important;
  font-size: 0 !important;
  line-height: 0 !important;
  text-shadow: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

.certlink-portal-shell-messages--login-card {
  width: 100%;
  max-width: min(420px, 100%);
  margin: 0 auto 12px;
  box-sizing: border-box;
}

/* Login: tarjeta más estrecha que el resto del portal + techo AbroadLink centrado (.topbar--login). */
body.certlink-portal-login .shell .topbar--login {
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  gap: 12px;
  margin-bottom: 10px;
}

body.certlink-portal-login .shell .topbar--login .brand {
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  justify-content: center;
  align-items: center !important;
  width: auto !important;
  max-width: 100%;
  gap: 14px;
}

body.certlink-portal-login .shell .topbar--login .brand .certlink-mark {
  flex-shrink: 0;
}

body.certlink-portal-login .shell .topbar--login .brand-copy {
  flex: 1 1 auto;
  min-width: 0;
  text-align: left !important;
}

body.certlink-portal-login .shell .topbar--login .topbar-actions {
  display: flex;
  justify-content: center;
  width: 100%;
}

body.certlink-portal-login .shell .topbar--login .topbar-actions .abroadlink-logo img {
  display: block;
  margin-inline: auto;
}

body.certlink-portal-login .certlink-custom-page > .shell {
  width: min(380px, calc(100% - 48px)) !important;
  max-width: min(380px, calc(100% - 48px)) !important;
  min-width: 0 !important;
  flex: 0 0 auto;
  margin-left: auto !important;
  margin-right: auto !important;
  margin-top: 0 !important;
  margin-bottom: max(20px, env(safe-area-inset-bottom, 0px)) !important;
  /* Menos relleno inferior que el .shell global para acercar el borde al botón. */
  padding: 14px 18px 10px !important;
  box-sizing: border-box !important;
}

/*
 * /user/pass, reset y set password: .shell > .login-card no debe apilar tres recuadros
 * (.shell + .login-card + .login-card::before). Un solo contenedor visible: .login-card.
 */
body.certlink-portal-login:not(.certlink-portal-home) .certlink-custom-page > .shell {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
}

body.certlink-portal-login:not(.certlink-portal-home) .certlink-custom-page > .shell > .login-card {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.certlink-portal-auth-card:not(.certlink-portal-home) .certlink-main-content .content-region:has(.certlink-custom-page > .shell),
html.certlink-portal-route body.certlink-portal-auth-card:not(.certlink-portal-home) .certlink-main-content .region.region-content:has(.certlink-custom-page > .shell),
html.certlink-portal-route body.path-user-pass:not(.certlink-portal-home) .content-region:has(.certlink-custom-page > .shell),
html.certlink-portal-route body.path-user-pass:not(.certlink-portal-home) .region.region-content:has(.certlink-custom-page > .shell) {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin-top: 0 !important;
}

html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-home) .certlink-custom-page > .shell .login-card::before {
  display: none !important;
  content: none !important;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel {
  width: 100%;
  max-width: 100%;
  margin: 4px auto 0;
  padding: 8px 8px 6px;
  background: transparent;
  border: 0;
  box-shadow: none;
  text-align: center;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form,
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel form#user-pass {
  width: 100%;
  max-width: 100%;
  margin: 0 auto;
  padding: 4px 6px 8px;
  border-radius: 14px;
  background: transparent;
  border: 0;
  box-shadow: none;
  min-height: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  text-align: center;
}

/* Éxito tras restablecer contraseña (misma tarjeta de login). */
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .certlink-login-password-changed-notice {
  width: 100%;
  max-width: min(420px, 100%);
  margin: 0 auto 16px;
  padding: 14px 16px 13px;
  border-radius: var(--certlink-auth-notice-radius) !important;
  text-align: center;
  background: rgba(32, 110, 78, 0.42);
  border: 1px solid rgba(140, 220, 185, 0.55);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
  color: #eafff4;
  box-sizing: border-box;
  overflow: hidden;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .certlink-login-password-changed-notice__main {
  margin: 0 0 8px;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: 0.01em;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .certlink-login-password-changed-notice__hint {
  margin: 0;
  font-size: 0.9rem;
  font-weight: 500;
  line-height: 1.45;
  opacity: 0.94;
}

/* Enlace one-time de contraseña no usable (sesión abierta, URL incompleta o caducada). */
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .certlink-login-reset-denied-notice {
  width: 100%;
  max-width: min(420px, 100%);
  margin: 0 auto 16px;
  padding: 14px 16px 13px;
  border-radius: var(--certlink-auth-notice-radius) !important;
  text-align: center;
  background: rgba(120, 42, 42, 0.48);
  border: 1px solid rgba(255, 168, 168, 0.55);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.14);
  color: #fff5f5;
  box-sizing: border-box;
  overflow: hidden;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .certlink-login-reset-denied-notice__main {
  margin: 0 0 8px;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: 0.01em;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .certlink-login-reset-denied-notice__hint {
  margin: 0;
  font-size: 0.9rem;
  font-weight: 500;
  line-height: 1.45;
  opacity: 0.96;
}

@media (max-width: 1400px) {
  body.certlink-portal-login .certlink-custom-page > .shell {
    padding: 12px 14px 8px !important;
  }

  body.certlink-portal-login:not(.certlink-portal-home) .certlink-custom-page > .shell {
    padding: 0 !important;
  }

  body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form,
  body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel form#user-pass {
    padding: 4px 6px 6px;
  }
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .description {
  margin-top: 6px;
  font-size: 13px;
}

/*
 * Solicitud de contraseña: descripción del campo (#description) e intro del core
 * (markup `mail` como <p> hijo directo de #user-pass, sin .form-item-mail).
 */
html.certlink-portal-route body.certlink-portal-auth-card form#user-pass .form-item__description,
html.certlink-portal-route body.certlink-portal-auth-card form#user-pass .description,
html.certlink-portal-route body.certlink-portal-auth-card form#user-pass > p,
html.certlink-portal-route body.certlink-portal-auth-card form#user-pass .certlink-user-pass-help,
html.certlink-portal-route body.certlink-portal-auth-card form#user-pass .certlink-user-pass-help p,
html.certlink-portal-route body.certlink-portal-login form#user-pass .form-item__description,
html.certlink-portal-route body.certlink-portal-login form#user-pass .description,
html.certlink-portal-route body.certlink-portal-login form#user-pass > p,
html.certlink-portal-route body.certlink-portal-login form#user-pass .certlink-user-pass-help,
html.certlink-portal-route body.certlink-portal-login form#user-pass .certlink-user-pass-help p,
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel form#user-pass .form-item__description,
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel form#user-pass .description,
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel form#user-pass > p,
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel form#user-pass .certlink-user-pass-help,
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel form#user-pass .certlink-user-pass-help p {
  margin-top: 6px !important;
  margin-bottom: 0 !important;
  font-size: var(--certlink-auth-help-font-size) !important;
  line-height: 1.45 !important;
  font-weight: 500 !important;
  color: var(--muted) !important;
}

/* Intro /user/pass: párrafos justificados; correo en línea propia (sin justificar). */
html.certlink-portal-route body.certlink-portal-auth-card form#user-pass .certlink-user-pass-help--intro,
html.certlink-portal-route body.certlink-portal-login form#user-pass .certlink-user-pass-help--intro,
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel form#user-pass .certlink-user-pass-help--intro {
  margin-bottom: 4px !important;
}

html.certlink-portal-route form#user-pass .certlink-user-pass-help__lead,
html.certlink-portal-route form#user-pass .certlink-user-pass-help__tail,
html.certlink-portal-route form#user-pass .certlink-user-pass-help__line {
  margin: 0 !important;
  text-align: left !important;
  hyphens: none;
  color: var(--muted) !important;
  font-weight: 500 !important;
}

html.certlink-portal-route form#user-pass .certlink-user-pass-help__email,
html.certlink-portal-route form#user-pass div.certlink-user-pass-help__email {
  display: block !important;
  width: 100% !important;
  margin: 10px 0 12px !important;
  padding: 0 !important;
  font-size: var(--certlink-auth-help-font-size, 14px) !important;
  line-height: 1.4 !important;
  font-weight: 600 !important;
  color: var(--text, #fff) !important;
  text-align: center !important;
  hyphens: none;
  word-break: break-word;
  overflow-wrap: anywhere;
}

html.certlink-portal-route form#user-pass > p:empty {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  height: 0 !important;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-item {
  margin-bottom: 14px;
  width: 100%;
}

/*
 * Login name/pass: aviso encima de la etiqueta (order + flex column).
 * bootstrap_subtheme/style.css fuerza .form-item { display: block !important };
 * sin !important aquí el orden visual no cambia.
 */
html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .form-item-name,
html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .form-item-pass,
html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .js-form-item-name,
html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .js-form-item-pass {
  display: flex !important;
  flex-direction: column !important;
  flex-wrap: nowrap !important;
  gap: 0.75rem !important;
  float: none !important;
}

html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .form-item-name > label,
html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .form-item-pass > label {
  margin: 0 !important;
}

html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .form-item-name > .invalid-feedback.form-item--error-message,
html.certlink-portal-route body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form .form-item-pass > .invalid-feedback.form-item--error-message {
  order: -1 !important;
  margin: 0 !important;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-item label {
  font-size: 13px;
  font-weight: 600;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel input[type="text"],
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel input[type="password"],
body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel input[type="email"],
body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel input[type="text"],
body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel input[type="password"],
body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .password-field {
  height: var(--certlink-auth-control-height) !important;
  min-height: var(--certlink-auth-control-height) !important;
  max-height: var(--certlink-auth-control-height) !important;
  padding: 8px 12px !important;
  font-size: 14px !important;
  box-sizing: border-box !important;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions,
body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .form-actions {
  margin-top: 0;
  margin-bottom: 0;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  display: grid !important;
  align-items: stretch !important;
  column-gap: 10px;
  row-gap: 10px;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .form-actions,
body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form .form-actions,
body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .certlink-user-pass-reset-form .form-actions {
  grid-template-columns: minmax(0, 1fr);
  margin-top: 14px !important;
  padding-top: 0 !important;
  text-align: left !important;
}

body.certlink-portal-login .certlink-login-help {
  margin-top: 4px;
  margin-bottom: 0;
}

body.certlink-portal-login .certlink-login-help a {
  font-size: 13px;
  font-weight: 600;
}

/* Portal: sin asterisco/icono de «obligatorio» (la validación del core sigue activa). */
html.certlink-portal-route body.certlink-portal-route .form-item__label.form-required::after,
html.certlink-portal-route body.certlink-portal-route .fieldset__label.form-required::after,
html.certlink-portal-route body.certlink-portal-route label.form-required::after,
html.certlink-portal-route body.certlink-portal-route summary.form-required::after,
html.certlink-portal-route body.certlink-portal-route .form-required::after,
html.certlink-portal-route body.certlink-portal-route .js-form-required.form-required::after {
  content: none !important;
  display: none !important;
  background: none !important;
  background-image: none !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
}

html.certlink-portal-route body.certlink-portal-route .required-mark {
  display: none !important;
}

/* Región highlighted incrustada: un solo recuadro (evitar caja + alert anidados). */
body.certlink-portal-login .certlink-portal-shell-messages, body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages,
body.certlink-portal-route .certlink-portal-shell-messages {
  width: 100%;
  box-sizing: border-box;
}

/* Bootstrap alert: el envoltorio data-drupal-messages sin caja; la caja solo en .alert */
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].alert-wrapper,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].alert-wrapper {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 0 12px !important;
}

body.certlink-portal-login .certlink-portal-shell-messages .alert:not(.alert-danger),
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert:not(.alert-danger),
body.certlink-portal-login .certlink-portal-admin-form .messages:not(.messages--error),
body.certlink-portal-login .certlink-portal-admin-form .messages--status,
body.certlink-portal-login .certlink-portal-admin-form .messages--warning,
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .messages:not(.messages--error),
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .messages--status,
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .messages--warning {
  display: flex !important;
  align-items: center;
  margin: 0 !important;
  padding: 10px 14px !important;
  border-radius: var(--certlink-auth-notice-radius) !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  color: #5c3200 !important;
  background: rgba(255, 244, 224, 0.98) !important;
  border: 1px solid #e96700 !important;
  box-shadow: none !important;
  overflow: hidden;
}

body.certlink-portal-login .certlink-portal-shell-messages .alert-danger,
body.certlink-portal-login .certlink-portal-admin-form .messages--error,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert-danger,
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .messages--error {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  margin: 0 0 16px 0 !important;
  padding: 12px 16px !important;
  border-radius: var(--certlink-auth-notice-radius, 12px) !important;
  background: #e09030 !important;
  border: none !important;
  box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255, 255, 255, 0.22) !important;
  color: #fff !important;
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  box-sizing: border-box !important;
  overflow: hidden;
}

body.certlink-portal-login .certlink-portal-shell-messages .alert-danger > div,
body.certlink-portal-login .certlink-portal-admin-form .messages--error > div,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert-danger > div,
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .messages--error > div {
  flex: 1 !important;
  font-size: var(--fs-md, 15px) !important;
  font-weight: 700 !important;
  color: #fff !important;
  text-align: left !important;
}

body.certlink-portal-login .certlink-portal-shell-messages .alert-danger::before,
body.certlink-portal-login .certlink-portal-admin-form .messages--error::before,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert-danger::before,
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .messages--error::before {
  content: '' !important;
  width: 28px !important;
  height: 28px !important;
  flex: none !important;
  display: block !important;
  background: rgba(255, 255, 255, 0.18) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'%3E%3C/circle%3E%3Cpath d='M12 8v4M12 16h.01'%3E%3C/path%3E%3C/svg%3E") no-repeat center / 15px !important;
  border-radius: 50% !important;
}

body.certlink-portal-login .certlink-portal-shell-messages .alert-heading,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert-heading {
  display: none !important;
}

body.certlink-portal-login .certlink-portal-shell-messages .alert > svg.bi,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert > svg.bi {
  display: none !important;
}

body.certlink-portal-login .certlink-portal-shell-messages .alert a,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert a {
  display: none !important;
}

/* Plantilla core (sin alert-wrapper): sin doble marco en contenedores internos. */
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper),
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) {
  margin: 0 0 12px;
}

body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) > div[role="contentinfo"],
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) > div[role="contentinfo"] {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
}

body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) [role="alert"],
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) [role="status"],
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) [role="alert"],
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) [role="status"] {
  display: block !important;
  margin: 0;
  padding: 10px 14px;
  border-radius: var(--certlink-auth-notice-radius) !important;
  font-size: 14px;
  font-weight: 600;
  color: #5c3200;
  background: rgba(255, 244, 224, 0.98);
  border: 1px solid #e96700;
  overflow: hidden;
}

body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) [role="alert"] a,
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) [role="status"] a,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) [role="alert"] a,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages]:not(.alert-wrapper) [role="status"] a {
  display: none !important;
}

/* Mismo color/tipografía que el aviso de credenciales (hijos del .alert success). */
body.certlink-portal-login .certlink-portal-shell-messages .alert .alert-heading,
body.certlink-portal-login .certlink-portal-shell-messages .alert > div,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert .alert-heading,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert > div {
  color: inherit !important;
  font-size: inherit !important;
  font-weight: inherit !important;
}

/* Error de campo: ocultar para evitar duplicar con el Toast naranja superior. */
body.certlink-portal-login .invalid-feedback,
body.certlink-portal-login .form-item--error-message,
body.certlink-portal-login .error,
body.certlink-portal-auth-card .invalid-feedback,
body.certlink-portal-auth-card .form-item--error-message,
body.certlink-portal-auth-card .error,
body.certlink-portal-pass-reset-flow .invalid-feedback,
body.certlink-portal-pass-reset-flow .form-item--error-message,
body.certlink-portal-pass-reset-flow .error,
body.certlink-portal-request-access .invalid-feedback,
body.certlink-portal-request-access .form-item--error-message,
body.certlink-portal-request-access .error {
  display: none !important;
}

/* Quitar la imagen de exclamación de error de Bootstrap (background-image) en los inputs inválidos. */
body.certlink-portal-login .form-control.is-invalid,
body.certlink-portal-pass-reset-flow .form-control.is-invalid,
body.certlink-portal-login .form-control.error,
body.certlink-portal-pass-reset-flow .form-control.error {
  background-image: none !important;
  padding-right: 12px !important;
}


body.certlink-portal-login .form-item--error-message a,
body.certlink-portal-login .invalid-feedback a,
body.certlink-portal-auth-card .form-item--error-message a,
body.certlink-portal-auth-card .invalid-feedback a {
  display: none !important;
}

/* Toasts Bootstrap (mensajes en messenger): sin título/icono genéricos; mismo contraste que alertas. */
body.certlink-portal-login [data-drupal-messages].toast-container .toast,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast,
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast {
  background: rgba(255, 244, 224, 0.98) !important;
  border: 1px solid #e96700 !important;
  border-radius: var(--certlink-auth-notice-radius) !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.28);
  overflow: hidden;
}

body.certlink-portal-login [data-drupal-messages].toast-container .toast-header,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast-header,
html.certlink-portal-route body.path-user-pass [data-drupal-messages].toast-container .toast-header {
  display: none !important;
}

/* Éxito (correo enviado, etc.): banda verde legible; errores siguen en ámbar más abajo. */
body.certlink-portal-login [data-drupal-messages].toast-container .toast[role="status"],
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast[role="status"],
html.certlink-portal-route body.path-user-pass [data-drupal-messages].toast-container .toast[role="status"] {
  background: rgba(220, 248, 230, 0.96) !important;
  border: 1px solid #3d9a62 !important;
  box-shadow: none !important;
}

body.certlink-portal-login [data-drupal-messages].toast-container .toast-body,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast-body {
  color: #5c3200;
  font-weight: 600;
  font-size: 14px;
  text-align: center;
}

body.certlink-portal-login [data-drupal-messages].toast-container .toast[role="status"] .toast-body,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast[role="status"] .toast-body,
html.certlink-portal-route body.path-user-pass [data-drupal-messages].toast-container .toast[role="status"] .toast-body {
  color: #0d3d1f !important;
  font-weight: 600;
  font-size: 14px;
  text-align: left !important;
  padding: 12px 16px !important;
}

/* Toasts incrustados en la banda: flujo vertical, sin cabecera/cierre (sólo el texto útil). */
body.certlink-portal-login [data-drupal-messages].toast-container,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container,
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container {
  display: block !important;
  visibility: visible !important;
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  clip: auto !important;
  pointer-events: auto !important;
  position: static !important;
  top: auto !important;
  right: auto !important;
  inset: auto !important;
  transform: none !important;
  width: 100% !important;
  max-width: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
}

body.certlink-portal-login [data-drupal-messages].toast-container .toast:not([role="status"]),
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast:not([role="status"]),
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast:not([role="status"]),
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast:not([role="status"]) {
  display: flex !important;
  opacity: 1 !important;
  visibility: visible !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 12px !important;
  background: #e09030 !important;
  border: none !important;
  border-radius: var(--certlink-auth-notice-radius, 12px) !important;
  box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255, 255, 255, 0.22) !important;
  padding: 12px 16px !important;
  color: #fff !important;
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: 100% !important;
  margin-bottom: 16px !important;
}

body.certlink-portal-login [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-header,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-header,
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-header,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-header {
  display: contents !important;
}

body.certlink-portal-login [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-header svg,
body.certlink-portal-login [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-header strong,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-header svg,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-header strong,
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-header svg,
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-header strong,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-header svg,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-header strong {
  display: none !important;
}

body.certlink-portal-login [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-header .btn-close,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-header .btn-close,
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-header .btn-close,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-header .btn-close {
  display: grid !important;
  order: 2 !important;
  flex: none !important;
  width: 24px !important;
  height: 24px !important;
  place-items: center !important;
  border: none !important;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6 6 18M6 6l12 12'%3E%3C/path%3E%3C/svg%3E") no-repeat center / 12px !important;
  color: transparent !important;
  font-size: 0 !important;
  opacity: 0.8 !important;
  cursor: pointer !important;
  padding: 0 !important;
  margin: 0 !important;
  transition: opacity 0.16s !important;
}

body.certlink-portal-login [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-header .btn-close:hover,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-header .btn-close:hover,
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-header .btn-close:hover,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-header .btn-close:hover {
  opacity: 1 !important;
  background-color: rgba(255, 255, 255, 0.15) !important;
  border-radius: 4px !important;
}

body.certlink-portal-login [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-body,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-body,
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-body,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast:not([role="status"]) .toast-body {
  order: 1 !important;
  flex: 1 !important;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
  color: #fff !important;
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  font-size: var(--fs-md, 15px) !important;
  text-align: left !important;
}

body.certlink-portal-login [data-drupal-messages].toast-container .toast:not([role="status"])::before,
body.certlink-portal-pass-reset-flow [data-drupal-messages].toast-container .toast:not([role="status"])::before,
body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast:not([role="status"])::before,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast:not([role="status"])::before {
  content: '' !important;
  order: 0 !important;
  width: 28px !important;
  height: 28px !important;
  flex: none !important;
  display: block !important;
  background: rgba(255, 255, 255, 0.18) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'%3E%3C/circle%3E%3Cpath d='M12 8v4M12 16h.01'%3E%3C/path%3E%3C/svg%3E") no-repeat center / 15px !important;
  border-radius: 50% !important;
}

body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast[role="status"],
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast[role="status"] {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 12px !important;
  margin: 0 0 16px 0 !important;
  padding: 12px 16px !important;
  border-radius: var(--certlink-auth-notice-radius, 12px) !important;
  background: rgba(220, 248, 230, 0.96) !important;
  border: 1px solid #3d9a62 !important;
  box-shadow: none !important;
}

body.certlink-portal-login .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast[role="status"] .toast-body,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast[role="status"] .toast-body {
  order: 1 !important;
  flex: 1 !important;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
  color: #0d3d1f !important;
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  font-size: var(--fs-md, 15px) !important;
  text-align: left !important;
}

/* Set password (pass-reset-token): misma tarjeta estrecha que login (.certlink-portal-login). */
body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-custom-page > .shell {
  width: min(380px, calc(100% - 48px)) !important;
  max-width: min(380px, calc(100% - 48px)) !important;
  min-width: 0 !important;
  flex: 0 0 auto;
  margin-left: auto !important;
  margin-right: auto !important;
}

body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel {
  width: 100%;
  max-width: 100%;
  margin: 4px auto 0;
  padding: 8px 8px 6px;
  text-align: center;
}

body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form,
body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .certlink-user-pass-reset-form {
  width: 100%;
  max-width: 100%;
  margin: 0 auto;
  padding: 4px 6px 8px;
  text-align: center;
  box-sizing: border-box;
}

body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .form-item {
  margin-bottom: 14px;
  width: 100%;
  text-align: left;
}

body.certlink-portal-login.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .form-item label {
  font-size: 13px;
  font-weight: 600;
}

/* Nueva contraseña: aviso + formulario centrados dentro de la tarjeta login */
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .certlink-portal-shell-messages,
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form {
  width: 100%;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}

body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .certlink-portal-shell-messages {
  margin-top: 6px;
  margin-bottom: 22px;
  padding-top: 8px;
}

body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast {
  width: 100% !important;
  max-width: 100% !important;
  align-self: stretch !important;
  box-sizing: border-box !important;
}

body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages [data-drupal-messages].toast-container .toast-body {
  width: 100% !important;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form input[type="email"],
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form input[type="text"],
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form input[type="password"],
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form .password-field,
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form .password-confirm {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
}

html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form .js-form-type-password-confirm {
  width: 100% !important;
  max-width: 100% !important;
}

html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form .password-strength,
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .certlink-admin-form-panel .user-form .password-strength__meter {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

/* Misma anchura y radio en email + contraseñas (evita caja email más ancha que password). */
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form fieldset.account,
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form fieldset.account .fieldset-wrapper,
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form .form-item,
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form .js-form-item,
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form .js-form-type-password-confirm,
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form .password-confirm,
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form .password-parent,
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form .confirm-parent {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form input[type="email"],
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form input[type="text"],
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form input[type="password"],
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .user-form .password-field {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  border-radius: 8px !important;
  box-sizing: border-box !important;
}

/* Login: botones = mismo ancho y alto que los inputs (40px).
 * Set password (pass-reset-flow): tamaño maqueta en portal-set-password.css (no 40px). */
body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"],
body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit,
body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit,
body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button[type="submit"],
body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--primary,
body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .btn-primary {
  justify-self: stretch !important;
  align-self: stretch !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  height: var(--certlink-auth-control-height) !important;
  min-height: var(--certlink-auth-control-height) !important;
  max-height: var(--certlink-auth-control-height) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 8px 12px !important;
  margin-top: 0 !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  text-align: center !important;
  border-radius: 8px !important;
  box-sizing: border-box !important;
  white-space: nowrap !important;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"],
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit,
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit,
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button[type="submit"] {
  grid-column: 1;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions a.certlink-login-request-access {
  grid-column: 2;
  justify-self: stretch !important;
  align-self: stretch !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  height: var(--certlink-auth-control-height) !important;
  min-height: var(--certlink-auth-control-height) !important;
  max-height: var(--certlink-auth-control-height) !important;
  padding: 8px 12px !important;
  margin-top: 0 !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  white-space: normal;
  box-sizing: border-box !important;
  text-decoration: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: #e8f4ff !important;
  border: 1px solid rgba(232, 244, 255, 0.88) !important;
  border-radius: 8px !important;
}

body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions a.certlink-login-request-access:hover,
body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions a.certlink-login-request-access:focus-visible {
  color: #ffffff !important;
  border-color: rgba(255, 255, 255, 0.95) !important;
}

@media (max-width: 420px) {
  body.certlink-portal-login .certlink-custom-page > .shell {
    width: calc(100% - 28px) !important;
    max-width: calc(100% - 28px) !important;
    padding-inline: clamp(14px, 4vw, 22px);
  }

  body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions {
    column-gap: 8px;
  }

  body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"],
  body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit,
  body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit,
  body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button[type="submit"] {
    grid-column: 1;
    font-size: 14px;
  }

  body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .form-actions a.certlink-login-request-access {
    grid-column: 2;
    font-size: 13px;
    text-align: center !important;
  }
}

/* Error 404 CertLink (system.site page.404 → /certlink/404; mismo overlay que login). */
body.certlink-portal-error .certlink-portal-error-panel {
  text-align: center;
  padding: 20px 18px 22px;
}

body.certlink-portal-error .certlink-portal-error-code {
  margin: 0 0 6px;
  font-size: clamp(52px, 12vw, 72px);
  font-weight: 800;
  line-height: 1;
  letter-spacing: 0.04em;
  color: rgba(255, 255, 255, 0.22);
}

body.certlink-portal-error .certlink-portal-error-title {
  margin: 0 0 12px;
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--text);
}

body.certlink-portal-error .certlink-portal-error-text {
  margin: 0 auto 6px;
  max-width: 30rem;
  font-size: 15px;
  line-height: 1.5;
  color: var(--muted);
}

body.certlink-portal-error .certlink-portal-error-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  margin-top: 20px;
}

body.certlink-portal-error .certlink-portal-error-actions .btn {
  min-width: min(280px, 100%);
  min-height: 0;
  padding: 8px 18px;
  font-weight: 700;
}

html.certlink-portal-route body.certlink-portal-route.certlink-portal-error .certlink-portal-error-actions a.btn-primary {
  text-shadow: none;
}

/* Confirmación de cierre de sesión: panel tipo modal, botones en fila */
.certlink-signout-confirm-dialog {
  max-width: 440px;
  margin-inline: auto;
}

.certlink-signout-confirm-actions {
  flex-direction: row !important;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px !important;
}

.certlink-signout-confirm-actions .btn {
  min-width: min(200px, 42%) !important;
}

.certlink-portal-admin-form .messages,
.certlink-portal-admin-form .messages--error,
.certlink-portal-admin-form .messages--status,
.certlink-portal-admin-form .messages--warning {
  border-radius: 12px;
  margin-bottom: 18px;
}

/* Login / pass / reset: avisos con el mismo radio que inputs (8px), no 12px del resto del admin-form. */
body.certlink-portal-login .certlink-portal-admin-form .messages,
body.certlink-portal-login .certlink-portal-admin-form .messages--error,
body.certlink-portal-login .certlink-portal-admin-form .messages--status,
body.certlink-portal-login .certlink-portal-admin-form .messages--warning,
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .messages,
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .messages--error,
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .messages--status,
body.certlink-portal-pass-reset-flow .certlink-portal-admin-form .messages--warning,
body.certlink-portal-login .certlink-custom-page .alert,
body.certlink-portal-login .certlink-custom-page .messages,
body.certlink-portal-login .certlink-custom-page [data-drupal-messages] .alert,
body.certlink-portal-pass-reset-flow .certlink-custom-page .alert,
body.certlink-portal-pass-reset-flow .certlink-custom-page .messages,
body.certlink-portal-pass-reset-flow .certlink-custom-page [data-drupal-messages] .alert {
  border-radius: var(--certlink-auth-notice-radius) !important;
  overflow: hidden;
}

/* Aviso flash estándar del portal (centrado, ~4s); ver certlinkPortalFlash en portal-base.js. */
.certlink-portal-flash-host {
  position: fixed;
  top: var(--certlink-portal-flash-top, var(--certlink-portal-flash-top-fallback, 96px));
  left: 50%;
  transform: translateX(-50%);
  z-index: 10060;
  width: min(520px, calc(100vw - 32px));
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
  pointer-events: none;
}

.certlink-portal-flash {
  width: 100%;
  padding: 12px 18px;
  border-radius: 8px;
  font-weight: 600;
  font-size: 14px;
  line-height: 1.45;
  text-align: center;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.32);
  pointer-events: auto;
  opacity: 1;
  transition: opacity 0.35s ease;
}

.certlink-portal-flash.is-hiding {
  opacity: 0;
}

/* Diseños premium para avisos flash (naranja sólido para errores/advertencias, verde claro para éxitos). */
.certlink-portal-flash--error,
.certlink-portal-flash--warning {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 12px !important;
  background: #e09030 !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--certlink-auth-notice-radius, 12px) !important;
  box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255, 255, 255, 0.22) !important;
  padding: 12px 16px !important;
  text-align: left !important;
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  font-size: var(--fs-md, 15px) !important;
}

.certlink-portal-flash--error::before,
.certlink-portal-flash--warning::before {
  content: '' !important;
  order: 0 !important;
  width: 28px !important;
  height: 28px !important;
  flex: none !important;
  display: block !important;
  background: rgba(255, 255, 255, 0.18) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'%3E%3C/circle%3E%3Cpath d='M12 8v4M12 16h.01'%3E%3C/path%3E%3C/svg%3E") no-repeat center / 15px !important;
  border-radius: 50% !important;
}

.certlink-portal-flash--status {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 12px !important;
  background: rgba(220, 248, 230, 0.96) !important;
  color: #0d3d1f !important;
  border: 1px solid #3d9a62 !important;
  border-radius: var(--certlink-auth-notice-radius, 12px) !important;
  box-shadow: none !important;
  padding: 12px 16px !important;
  text-align: left !important;
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  font-size: var(--fs-md, 15px) !important;
}

.certlink-portal-flash--status::before {
  content: '' !important;
  order: 0 !important;
  width: 28px !important;
  height: 28px !important;
  flex: none !important;
  display: block !important;
  background: rgba(61, 154, 98, 0.15) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233d9a62' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'%3E%3C/path%3E%3C/svg%3E") no-repeat center / 15px !important;
  border-radius: 50% !important;
}

/* Messenger/toasts del tema: nunca visibles en portal (solo aviso flash centrado). */
html.certlink-portal-route [data-drupal-messages],
html.certlink-portal-route .block-system-messages-block,
html.certlink-portal-route .region-highlighted .messages,
html.certlink-portal-route .region-content > .messages,
html.certlink-portal-route .layout-content__region--content > .messages {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  max-height: 0 !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  clip: rect(0, 0, 0, 0) !important;
  pointer-events: none !important;
}

/* Ocultar banners globales solo en listados/settings portal, no en login/password. */
.path-projects .certlink-custom-page .messages,
.path-projects .certlink-custom-page [data-drupal-messages],
.path-clients .certlink-custom-page .messages,
.path-clients .certlink-custom-page [data-drupal-messages],
.path-translators .certlink-custom-page .messages,
.path-translators .certlink-custom-page [data-drupal-messages],
.path-settings-general .certlink-custom-page .messages,
.path-settings-general .certlink-custom-page [data-drupal-messages] {
  display: none !important;
}

/* User settings: ocultar toasts del bloque system_messages en content (hermano del panel). */
html.certlink-portal-route body.path-settings-user .region-content > [data-drupal-messages],
html.certlink-portal-route body.path-settings-user .region-content > .block-system-messages-block,
html.certlink-portal-route body.path-settings-user .layout-content__region--content > [data-drupal-messages],
html.certlink-portal-route body.path-settings-user .layout-content__region--content > .block-system-messages-block {
  display: none !important;
}

html.certlink-portal-route body.path-projects .region-highlighted,
html.certlink-portal-route body.path-clients .region-highlighted,
html.certlink-portal-route body.path-translators .region-highlighted,
html.certlink-portal-route body.path-settings-general .region-highlighted,
html.certlink-portal-route body.path-settings-user .region-highlighted {
  display: none !important;
}

/* Evitar bloques blancos/rebordes extra en details/fieldset del formulario user. */
.certlink-portal-admin-form .certlink-admin-form-panel details,
.certlink-portal-admin-form .certlink-admin-form-panel fieldset {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

.certlink-portal-admin-form .certlink-admin-form-panel details > summary {
  background: transparent !important;
  border: 0 !important;
  color: var(--text) !important;
}

/* ==========================================================================
   RESPONSIVE PARA LAPTOPS (Pantallas de 14" y resoluciones menores a 1400px)
   ========================================================================== */
@media (max-width: 1400px) {
  html.certlink-portal-route {
    --certlink-portal-content-max-vw: 95vw;
    --certlink-portal-masthead-max-vw: 95vw;
    --certlink-portal-chrome-max-px: 9999px;
    --certlink-portal-chrome-gutter: 0px;
    --certlink-portal-chrome-pad-x: 15px;
    --certlink-portal-shell-pad-x: 24px;
  }

  .certlink-custom-page {
    padding: 20px 0 !important;
    font-size: 12px !important;
  }
  
  .shell {
    width: 100% !important;
    max-width: 100% !important;
    padding: 20px var(--certlink-portal-shell-pad-x, 24px) 24px;
  }

  .brand-copy h1 { font-size: 26px; }
  .brand-copy p { font-size: 13px; }
  
  .certlink-mark { width: 48px; height: 48px; }
  .certlink-mark::before { inset: 9px; }
  .certlink-mark::after {
    width: 13px;
    height: 2.5px;
    top: 20px;
    left: 17px;
    box-shadow: 0 -5px 0 #ffffff, 0 5px 0 #75d0ff;
  }
  
  .abroadlink-logo img { width: 160px; } /* Logo aún más compacto */

  /* /projects: sólo 3 celdas en .controls; si hereda 4 columnas, el layout queda mal alineado. */
  .controls {
    grid-template-columns: auto 120px 160px minmax(180px, 1fr);
    margin: 15px 0 20px;
  }

  .path-projects .certlink-custom-page .controls {
    grid-template-columns: minmax(72px, max-content) 200px minmax(200px, 1fr);
  }

  .setup-btn {
    height: auto !important;
    min-height: 0 !important;
    line-height: 1.25 !important;
    padding: 5px 14px !important;
    font-size: 14px;
  }

  .search-label {
    height: auto !important;
    min-height: 32px !important;
    line-height: 1.25 !important;
    font-size: 14px;
  }

  .search-by,
  .search-wrap {
    height: auto !important;
    min-height: 32px !important;
    line-height: 1.25 !important;
    font-size: 14px;
  }

  /* Compactamos la tabla y eliminamos el scroll horizontal */
  .certlink-custom-page table { 
    min-width: auto !important; /* Quitamos el ancho forzado de 900px */
  }
  .certlink-custom-page thead th {
    font-size: 14px;
    padding: var(--certlink-table-head-py) var(--certlink-table-head-px);
  }
  .certlink-custom-page tbody td { 
    font-size: 14px; 
    padding: 14px 10px; /* Reducimos la separación horizontal */
  }

  body.certlink-portal-route .certlink-custom-page > .shell > .panel > .certlink-dual-scroll {
    --certlink-table-scroll-offset: 340px;
  }

  .path-translators .certlink-custom-page {
    padding: 20px 0 !important;
  }

  .path-translators .view-certlink-translators .view-filters form.controls {
    grid-template-columns: 1fr;
  }

}

@media (max-width: 1024px) {
  html.certlink-portal-route {
    --certlink-portal-content-max-vw: 95vw;
    --certlink-portal-masthead-max-vw: 95vw;
    --certlink-portal-chrome-max-px: 9999px;
    --certlink-portal-chrome-gutter: 0px;
    --certlink-portal-chrome-pad-x: 12px;
    --certlink-portal-shell-pad-x: 16px;
  }

  .certlink-custom-page {
    padding: 12px 0 !important;
  }

  .shell {
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 16px;
    padding: 16px var(--certlink-portal-shell-pad-x, 16px) 18px;
  }
}

/* ==========================================================================
   Responsive global (Bootstrap-friendly) para todas las vistas del portal
   ========================================================================== */
@media (max-width: 1200px) {
  html.certlink-portal-route {
    --certlink-portal-content-max-vw: 95vw;
    --certlink-portal-masthead-max-vw: 95vw;
    --certlink-portal-chrome-max-px: 9999px;
    --certlink-portal-chrome-gutter: 0px;
    --certlink-portal-chrome-pad-x: 20px;
    --certlink-portal-shell-pad-x: 20px;
  }

  .certlink-custom-page {
    padding: 18px 0 20px !important;
  }

  .shell {
    width: 100% !important;
    max-width: 100% !important;
    padding: 18px var(--certlink-portal-shell-pad-x, 20px) 20px;
  }

  .brand-copy h1 {
    font-size: 30px;
  }

  .abroadlink-logo img {
    width: 190px;
  }

  .controls {
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }

  .path-projects .controls {
    grid-template-columns: minmax(96px, max-content) 200px minmax(260px, 1fr);
  }

  .controls .setup-btn--icon {
    width: 100%;
  }

  /* /projects: una sola fila horizontal; sin forzar 100 % en etiqueta/desplegable. */
  .path-projects .controls .search-label {
    width: auto;
    min-width: 0;
  }

  .path-projects .controls .search-by,
  .path-projects .controls .search-wrap {
    width: 100%;
    min-width: 0;
  }
}

@media (max-width: 992px) {
  html.certlink-portal-route {
    --certlink-portal-content-max-vw: 95vw;
    --certlink-portal-masthead-max-vw: 95vw;
    --certlink-portal-chrome-max-px: 9999px;
    --certlink-portal-chrome-gutter: 0px;
    --certlink-portal-chrome-pad-x: 12px;
    --certlink-portal-shell-pad-x: 12px;
  }

  .certlink-custom-page {
    align-items: flex-start !important;
    justify-content: center !important;
    padding: 12px !important;
  }

  /* Login: el icono CertLink debe quedar a la izquierda del texto; no aplastar .brand al 100% ni en columna. */
  body.certlink-portal-login .shell .topbar.topbar--login .brand,
  body.certlink-portal-login .region-top-header .topbar.topbar--login .brand {
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    width: auto !important;
    max-width: 100%;
    align-items: center !important;
    justify-content: center;
  }

  /* Cabecera login masthead: apilar marca / Powered by en móvil. */
  html.certlink-portal-route body.certlink-portal-login .topbar.topbar--login.masthead .masthead-inner {
    flex-wrap: wrap !important;
    padding-inline: var(--space-4) !important;
  }

  html.certlink-portal-route body.certlink-portal-login .topbar.topbar--login.masthead .brand-lockup {
    max-width: 100% !important;
  }

  html.certlink-portal-route body.certlink-portal-login .topbar.topbar--login.masthead .topbar-actions.powered {
    margin-left: 0 !important;
    align-self: flex-end !important;
  }

  /* Cabecera login legacy (sin masthead). */
  body.certlink-portal-login .region-top-header .topbar--login:not(.masthead) {
    flex-direction: column !important;
    align-items: flex-start !important;
    padding-inline: 16px !important;
    row-gap: 10px !important;
  }

  body.certlink-portal-login .region-top-header .topbar--login:not(.masthead) .brand {
    max-width: 100%;
  }

  body.certlink-portal-login .region-top-header .topbar--login:not(.masthead) .topbar-actions {
    align-self: flex-end !important;
    width: auto;
  }

  .shell {
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 14px;
    padding: 14px 14px 16px;
  }

  /* Topbar dashboard: menos sangría en móvil; marca arriba, logo a la derecha abajo. */
  .topbar:not(.topbar--login) {
    flex-direction: column;
    align-items: flex-start;
    padding: 0 16px 0 var(--certlink-masthead-pad-left, 16px);
    row-gap: 10px;
  }

  .topbar:not(.topbar--login) .brand {
    max-width: 100%;
  }

  .topbar:not(.topbar--login) .topbar-actions {
    align-self: flex-end;
    width: auto;
  }

  .topbar--login:not(.masthead) {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 14px;
  }

  .topbar-actions {
    width: 100%;
    justify-content: flex-end;
  }

  .brand {
    width: 100%;
  }

  .brand-copy h1 {
    font-size: 26px;
  }

  .brand-copy p {
    font-size: 14px;
  }

  .certlink-mark {
    width: 48px;
    height: 48px;
  }

  .certlink-portal-nav {
    flex-direction: column !important;
    align-items: stretch !important;
    row-gap: 8px;
  }

  .certlink-portal-nav__links {
    flex: 0 1 auto !important;
    max-width: 100%;
  }

  .certlink-portal-nav__right {
    margin-left: 0 !important;
    align-self: flex-end !important;
    width: auto;
    justify-content: flex-end !important;
  }

  html.certlink-portal-route body.certlink-portal-route .region-primary-menu .certlink-portal-nav,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-portal-nav {
    flex-direction: column !important;
    align-items: stretch !important;
    row-gap: 8px !important;
  }

  html.certlink-portal-route body.certlink-portal-route .region-primary-menu .certlink-portal-nav__links,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-portal-nav__links {
    flex: 0 1 auto !important;
    max-width: 100% !important;
  }

  html.certlink-portal-route body.certlink-portal-route .region-primary-menu .certlink-portal-nav__right,
  html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-portal-nav__right {
    margin-left: 0 !important;
    align-self: flex-end !important;
    width: auto !important;
  }

  .controls {
    grid-template-columns: 1fr;
    margin: 12px 0 16px;
  }

  .path-projects .controls {
    grid-template-columns: 1fr;
  }

  .setup-btn {
    height: auto !important;
    min-height: 0 !important;
    line-height: 1.25 !important;
    padding: 5px 14px !important;
  }

  .search-label {
    height: auto !important;
    min-height: 32px !important;
    line-height: 1.25 !important;
  }

  .search-by,
  .search-wrap {
    height: auto !important;
    min-height: 32px !important;
    line-height: 1.25 !important;
  }

  .path-translators .view-certlink-translators .view-filters .setup-btn,
  .path-clients .view-client-list .view-filters input[type="submit"] {
    height: auto !important;
    min-height: 0 !important;
    line-height: 1.25 !important;
    padding: 5px 14px !important;
  }

  .meta {
    gap: 8px;
  }

  .chip {
    width: 100%;
    justify-content: flex-start;
  }

  .certlink-custom-page thead th {
    font-size: 15px;
    padding: var(--certlink-table-head-py) var(--certlink-table-head-px);
  }

  .certlink-custom-page tbody td {
    font-size: 15px;
    padding: 12px 10px;
  }

  .certlink-portal-admin-form .certlink-admin-form-panel {
    padding: 14px 12px 16px;
  }

  .certlink-portal-admin-form .certlink-admin-form-panel .layout-region,
  .certlink-portal-admin-form .certlink-admin-form-panel .layout-region--content,
  .certlink-portal-admin-form .certlink-admin-form-panel .node-form,
  .certlink-portal-admin-form .certlink-admin-form-panel .user-form,
  .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form {
    max-width: 100%;
  }
}

@media (max-width: 768px) {
  html.certlink-portal-route {
    --certlink-portal-content-max-vw: 95vw;
    --certlink-portal-masthead-max-vw: 95vw;
    --certlink-portal-chrome-max-px: 100%;
    --certlink-portal-chrome-gutter: 0px;
    --certlink-portal-chrome-pad-x: 8px;
    --certlink-portal-shell-pad-x: 12px;
  }

  /* Sin position:fixed: tapaba #navbar-top / #navbar-main en listados (p. ej. /clients). */
  body.certlink-portal-route .certlink-custom-page:not(.certlink-portal-admin-form) {
    position: relative !important;
    inset: auto !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    padding: 8px 0 !important;
  }

  .shell {
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 12px;
    padding: 12px var(--certlink-portal-shell-pad-x, 12px);
  }

  .brand-copy h1 {
    font-size: 24px;
  }

  .brand-copy p {
    font-size: 13px;
    line-height: 1.35;
  }

  .abroadlink-logo img {
    width: 150px;
  }

  .certlink-portal-nav__links {
    gap: 2px 0;
  }

  .certlink-portal-nav__sep {
    margin: 0 6px;
  }

  .path-translators .view-certlink-translators .view-filters form.controls {
    grid-template-columns: 1fr !important;
  }

  .path-translators .view-certlink-translators .view-filters .form-actions {
    width: 100%;
  }

  .path-translators .view-certlink-translators .view-filters .form-actions .setup-btn {
    width: 100%;
  }

  .certlink-custom-page table {
    min-width: 680px !important;
  }

  body.certlink-portal-login .certlink-portal-admin-form .certlink-admin-form-panel .user-login-form {
    width: 100%;
    max-width: 100%;
    min-height: 0;
    padding: 4px 6px 8px;
  }
}

@media (max-width: 576px) {
  html.certlink-portal-route {
    --certlink-portal-chrome-pad-x: 6px;
    --certlink-portal-shell-pad-x: 8px;
  }

  .certlink-custom-page {
    padding: 6px 0 !important;
  }

  .shell {
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 10px;
    padding: 10px var(--certlink-portal-shell-pad-x, 8px);
  }

  .topbar {
    margin-bottom: 10px;
  }

  .brand-copy h1 {
    font-size: 22px;
  }

  .certlink-mark {
    width: 42px;
    height: 42px;
    border-radius: 12px;
  }

  .certlink-custom-page thead th,
  .certlink-custom-page tbody td {
    font-size: 14px;
  }

  .certlink-logout-btn {
    font-size: 11px;
  }
}

/* =============================================================================
 * Nav portal (#navbar-main): ancho completo del chrome + EN/ES | Sign out a la derecha.
 * Flex: enlaces a la izquierda; margin-left:auto en __right dentro de nav al 100%.
 * ============================================================================= */
html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar nav.certlink-portal-nav,
html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar .certlink-portal-nav {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: flex-start !important;
  column-gap: 12px !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar .certlink-portal-nav__links {
  flex: 1 1 auto !important;
  min-width: 0 !important;
}

html.certlink-portal-route body.certlink-portal-route #navbar-main #CollapsingNavbar .certlink-portal-nav__right {
  flex: 0 0 auto !important;
  margin-left: auto !important;
}

/* =============================================================================
 * Enlaces sin subrayado — overrides finales (carga tarde, alta especificidad).
 * Claro no quita el subrayado del estado base de <a>; mensajes y descripciones
 * del núcleo llevan <a> con estilos del tema.
 * ============================================================================= */
html.certlink-portal-route body.certlink-portal-route a[href],
html.certlink-portal-route body.certlink-portal-route .link[href] {
  -webkit-text-decoration: none !important;
  text-decoration: none !important;
  text-decoration-line: none !important;
  text-underline-position: from-font;
  border-bottom: none !important;
}

html.certlink-portal-route body.certlink-portal-route a[href]:hover,
html.certlink-portal-route body.certlink-portal-route a[href]:focus,
html.certlink-portal-route body.certlink-portal-route .link[href]:hover,
html.certlink-portal-route body.certlink-portal-route .link[href]:focus {
  -webkit-text-decoration: none !important;
  text-decoration: none !important;
}

html.certlink-portal-route body.certlink-portal-route .region-highlighted a[href],
html.certlink-portal-route body.certlink-portal-route .region-content a[href],
html.certlink-portal-route body.certlink-portal-route .messages a[href],
html.certlink-portal-route body.certlink-portal-route [class*="messages"] a[href],
html.certlink-portal-route body.certlink-portal-route .messages__content a[href],
html.certlink-portal-route body.certlink-portal-route [role="status"] a[href],
html.certlink-portal-route body.certlink-portal-route [role="alert"] a[href] {
  -webkit-text-decoration: none !important;
  text-decoration: none !important;
  text-decoration-line: none !important;
  color: #024a7a !important;
  text-shadow: none !important;
  border-bottom: none !important;
}

html.certlink-portal-route body.certlink-portal-route .region-highlighted a[href]:hover,
html.certlink-portal-route body.certlink-portal-route .messages a[href]:hover,
html.certlink-portal-route body.certlink-portal-route [class*="messages"] a[href]:hover,
html.certlink-portal-route body.certlink-portal-route .messages__content a[href]:hover,
html.certlink-portal-route body.certlink-portal-route [role="status"] a[href]:hover,
html.certlink-portal-route body.certlink-portal-route [role="alert"] a[href]:hover {
  color: #013753 !important;
  -webkit-text-decoration: none !important;
  text-decoration: none !important;
  text-shadow: none !important;
}

html.certlink-portal-route body.certlink-portal-route .form-item__description a[href],
html.certlink-portal-route body.certlink-portal-route .fieldset__description a[href],
html.certlink-portal-route body.certlink-portal-route .form-item .description a[href],
html.certlink-portal-route body.certlink-portal-route .claro-details__description a[href],
html.certlink-portal-route body.certlink-portal-route .user-form a[href],
html.certlink-portal-route body.certlink-portal-route .node-form a[href],
html.certlink-portal-route body.certlink-portal-route .filter-help a[href],
html.certlink-portal-route body.certlink-portal-route details a[href],
html.certlink-portal-route body.certlink-portal-route .vertical-tabs a[href] {
  -webkit-text-decoration: none !important;
  text-decoration: none !important;
  text-decoration-line: none !important;
  color: #b8e6ff !important;
  text-shadow: 0 0 8px rgba(0, 30, 50, 0.45);
  border-bottom: none !important;
}

html.certlink-portal-route body.certlink-portal-route .form-item__description a[href]:hover,
html.certlink-portal-route body.certlink-portal-route .fieldset__description a[href]:hover,
html.certlink-portal-route body.certlink-portal-route .user-form a[href]:hover,
html.certlink-portal-route body.certlink-portal-route .node-form a[href]:hover,
html.certlink-portal-route body.certlink-portal-route details a[href]:hover {
  color: #e8f6ff !important;
  text-shadow: 0 0 12px rgba(117, 208, 255, 0.55);
  -webkit-text-decoration: none !important;
  text-decoration: none !important;
}

/* Sobreescribe el azul de .region-content en páginas CertLink (settings, tablas). */
html.certlink-portal-route body.certlink-portal-route .region-content .certlink-custom-page a.certlink-portal-text-link[href],
html.certlink-portal-route body.certlink-portal-route .region-content .certlink-custom-page .certlink-settings-summary tbody td a.certlink-portal-text-link[href] {
  color: #ffffff !important;
  text-shadow: none !important;
  -webkit-text-decoration: none !important;
  text-decoration: none !important;
  border-bottom: none !important;
}

html.certlink-portal-route body.certlink-portal-route .region-content .certlink-custom-page a.certlink-portal-text-link[href]:hover,
html.certlink-portal-route body.certlink-portal-route .region-content .certlink-custom-page .certlink-settings-summary tbody td a.certlink-portal-text-link[href]:hover {
  color: #d4efff !important;
  text-shadow: 0 0 12px rgba(117, 208, 255, 0.55) !important;
  -webkit-text-decoration: none !important;
  text-decoration: none !important;
}

/* Botón descarga PDF: css/portal-download-btn.css (weight alto al final del agregador). */

/* Submit / form-actions: véase bloque «Sistema unificado de botones» al final del archivo. */

/* /settings/user: usar las mismas reglas que .path-projects (bloque "Vistas con contenido
 * largo" + margin-bottom del .shell). Un override previo con mayor especificidad ponía
 * margin-bottom:0 en .shell y min-height:100vh en el overlay y recortaba el fondo inferior. */

/* ==========================================================================
   Sistema unificado de botones (portal CertLink)
   Primario = mismo tratamiento visual que botón configuración ⚙️ (relleno marca + texto blanco).
   El bloque a.setup-btn--icon no se rediseña aquí salvo coincidente con tokens (mismo aspecto ya).
   Secundario = outline sobre el degradado.
   ========================================================================== */

/* --- Primario (sólido marca; engranaje: reglas siguientes sólo tamaño/forma del icono).
 * Set password (pass-reset-flow): tamaño maqueta en portal-set-password.css — no fill 1rem. */
html.certlink-portal-route body:not(.certlink-portal-pass-reset-flow) .certlink-custom-page input.certlink-portal-fill-btn,
html.certlink-portal-route body:not(.certlink-portal-pass-reset-flow) .certlink-custom-page button.certlink-portal-fill-btn,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .setup-btn:not(.setup-btn--icon),
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters input[type="submit"],
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters button[type="submit"],
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters .button:not(.button--danger),
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions input[type="submit"]:not(.certlink-portal-upload-save-btn),
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions input.form-submit:not(.certlink-portal-upload-save-btn),
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions button.form-submit:not(.certlink-portal-upload-save-btn),
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions button[type="submit"]:not(.certlink-portal-upload-save-btn),
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions button.btn-primary:not(.btn-danger):not(.certlink-portal-upload-save-btn),
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions .button--primary:not(.button--danger):not(.certlink-portal-upload-save-btn),
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions button[data-drupal-selector="edit-submit"] {
  appearance: none !important;
  -webkit-appearance: none !important;
  box-sizing: border-box !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: var(--certlink-btn-fill-primary-min-height) !important;
  height: auto !important;
  padding: var(--certlink-btn-fill-primary-py) var(--certlink-btn-fill-primary-px) !important;
  border-radius: var(--certlink-btn-fill-primary-r) !important;
  font-family: inherit !important;
  font-size: 1rem !important;
  font-weight: var(--certlink-btn-fill-primary-fw) !important;
  line-height: 1.2 !important;
  text-align: center !important;
  text-decoration: none !important;
  cursor: pointer !important;
  border: none !important;
  vertical-align: middle !important;
  white-space: nowrap !important;

  background: var(--certlink-btn-fill-primary-bg) !important;
  background-color: var(--certlink-btn-fill-primary-bg) !important;
  background-image: none !important;
  color: var(--certlink-btn-fill-primary-color) !important;
  border-color: transparent !important;
  box-shadow: var(--certlink-btn-fill-primary-shadow) !important;
  transition:
    transform 0.22s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.22s ease,
    background-color 0.22s ease,
    border-color 0.22s ease,
    color 0.2s ease,
    filter 0.2s ease;
}

html.certlink-portal-route body:not(.certlink-portal-pass-reset-flow) .certlink-custom-page input.certlink-portal-fill-btn:hover,
html.certlink-portal-route body:not(.certlink-portal-pass-reset-flow) .certlink-custom-page button.certlink-portal-fill-btn:hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .setup-btn:not(.setup-btn--icon):hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters input[type="submit"]:hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters button[type="submit"]:hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters .button:not(.button--danger):hover,
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions input[type="submit"]:not(.certlink-portal-upload-save-btn):hover,
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions button[type="submit"]:not(.certlink-portal-upload-save-btn):hover,
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions button.btn-primary:not(.btn-danger):not(.certlink-portal-upload-save-btn):hover,
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions .button--primary:not(.button--danger):not(.certlink-portal-upload-save-btn):hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions button[data-drupal-selector="edit-submit"]:hover {
  transform: translateY(-2px);
  filter: brightness(1.12);
  background-color: var(--certlink-btn-fill-primary-bg) !important;
  color: var(--certlink-btn-fill-primary-color) !important;
  border-color: transparent !important;
  box-shadow: var(--certlink-btn-fill-hover-shadow) !important;
}

html.certlink-portal-route body:not(.certlink-portal-pass-reset-flow) .certlink-custom-page input.certlink-portal-fill-btn:focus-visible,
html.certlink-portal-route body:not(.certlink-portal-pass-reset-flow) .certlink-custom-page button.certlink-portal-fill-btn:focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .setup-btn:not(.setup-btn--icon):focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters input[type="submit"]:focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters button[type="submit"]:focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters .button:not(.button--danger):focus-visible,
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions input[type="submit"]:not(.certlink-portal-upload-save-btn):focus-visible,
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions button[type="submit"]:not(.certlink-portal-upload-save-btn):focus-visible,
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions button.btn-primary:not(.btn-danger):not(.certlink-portal-upload-save-btn):focus-visible,
html.certlink-portal-route body.certlink-portal-route:not(.certlink-portal-login):not(.certlink-portal-pass-reset-flow) .certlink-custom-page .form-actions .button--primary:not(.button--danger):not(.certlink-portal-upload-save-btn):focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions button[data-drupal-selector="edit-submit"]:focus-visible {
  outline: none !important;
  filter: brightness(1.12);
  background-color: var(--certlink-btn-fill-primary-bg) !important;
  color: var(--certlink-btn-fill-primary-color) !important;
  border-color: transparent !important;
  box-shadow: var(--certlink-btn-fill-focus-shadow) !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-custom-page a.setup-btn.setup-btn--icon {
  appearance: none !important;
  -webkit-appearance: none !important;
  box-sizing: border-box !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  width: var(--certlink-btn-fill-primary-min-height) !important;
  min-width: var(--certlink-btn-fill-primary-min-height) !important;
  max-width: var(--certlink-btn-fill-primary-min-height) !important;
  min-height: var(--certlink-btn-fill-primary-min-height) !important;
  height: var(--certlink-btn-fill-primary-min-height) !important;
  border-radius: var(--certlink-btn-fill-primary-r) !important;
  font-family: inherit !important;
  font-size: 1.375rem !important;
  font-weight: var(--certlink-btn-fill-primary-fw) !important;
  line-height: 1 !important;
  text-align: center !important;
  text-decoration: none !important;
  cursor: pointer !important;
  border: none !important;
  vertical-align: middle !important;
  white-space: nowrap !important;
  background: var(--certlink-btn-primary-bg) !important;
  color: var(--certlink-btn-primary-color) !important;
  box-shadow: var(--certlink-btn-fill-primary-shadow) !important;
  transition:
    transform 0.22s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.22s ease,
    filter 0.2s ease;
}

html.certlink-portal-route body.certlink-portal-route .certlink-custom-page a.setup-btn.setup-btn--icon:hover {
  transform: translateY(-2px);
  filter: brightness(1.12);
  box-shadow: var(--certlink-btn-fill-hover-shadow) !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-custom-page a.setup-btn.setup-btn--icon:focus-visible {
  outline: none !important;
  filter: brightness(1.12);
  box-shadow: var(--certlink-btn-fill-focus-shadow) !important;
}

html.certlink-portal-route .certlink-custom-page input.certlink-portal-fill-btn:disabled,
html.certlink-portal-route .certlink-custom-page button.certlink-portal-fill-btn:disabled,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .setup-btn:not(.setup-btn--icon):disabled,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions input[type="submit"]:disabled,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions button[type="submit"]:disabled,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions button.btn-primary:disabled,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-user-settings-page .form-actions button[data-drupal-selector="edit-submit"]:disabled,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters input[type="submit"]:disabled,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters button[type="submit"]:disabled {
  opacity: 0.55 !important;
  cursor: not-allowed !important;
  filter: none !important;
  transform: none !important;
}

/* --- Secundario (outline) — Cancel, reset vistas, Cancelar en modal, Solicitar acceso login --- */
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters input[type="reset"],
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters .button.button--danger,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions .button.button--danger,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions a.button.button--danger,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions [data-drupal-selector="edit-delete"],
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-logout-modal span.btn-outline-light.certlink-portal-error-btn,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page #certlink-logout-modal span.btn-outline-light.certlink-portal-error-btn,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-portal-admin-form.certlink-custom-page .form-actions a.certlink-login-request-access {
  appearance: none !important;
  -webkit-appearance: none !important;
  box-sizing: border-box !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 0 !important;
  height: auto !important;
  padding: var(--certlink-btn-fill-primary-py) var(--certlink-btn-px) !important;
  border-radius: var(--certlink-btn-r) !important;
  font-family: inherit !important;
  font-size: 1rem !important;
  font-weight: var(--certlink-btn-fw) !important;
  line-height: 1.2 !important;
  text-align: center !important;
  cursor: pointer !important;
  text-decoration: none !important;

  background: transparent !important;
  color: var(--certlink-btn-secondary-color) !important;
  border: var(--certlink-btn-secondary-border) !important;
  box-shadow: none !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-portal-admin-form.certlink-custom-page .form-actions a.certlink-login-request-access {
  white-space: normal !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters input[type="reset"]:hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions .button.button--danger:hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions a.button.button--danger:hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions [data-drupal-selector="edit-delete"]:hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-logout-modal span.btn-outline-light.certlink-portal-error-btn:hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page #certlink-logout-modal span.btn-outline-light.certlink-portal-error-btn:hover,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-portal-admin-form.certlink-custom-page .form-actions a.certlink-login-request-access:hover {
  background: rgba(255, 255, 255, 0.1) !important;
  filter: none !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .view-filters input[type="reset"]:focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions .button.button--danger:focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions a.button.button--danger:focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .form-actions [data-drupal-selector="edit-delete"]:focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-logout-modal span.btn-outline-light.certlink-portal-error-btn:focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page #certlink-logout-modal span.btn-outline-light.certlink-portal-error-btn:focus-visible,
html.certlink-portal-route body.certlink-portal-route .certlink-custom-page .certlink-portal-admin-form.certlink-custom-page .form-actions a.certlink-login-request-access:focus-visible {
  outline: 2px solid rgba(255, 255, 255, 0.85) !important;
  outline-offset: 2px;
}

/* Save en /settings/user: refuerzo (Bootstrap); variables = mismo sólido que ⚙️ */
html.certlink-portal-route body.path-settings-user .certlink-custom-page .certlink-user-settings-page .form-actions button#edit-submit.btn.btn-primary,
html.certlink-portal-route body.path-settings-user .certlink-custom-page .certlink-user-settings-page .form-actions input#edit-submit.certlink-portal-fill-btn,
html.certlink-portal-route body.path-settings-user .certlink-custom-page .certlink-user-settings-page .form-actions button#edit-submit.certlink-portal-fill-btn {
  background-color: var(--certlink-btn-fill-primary-bg) !important;
  background-image: none !important;
  color: var(--certlink-btn-fill-primary-color) !important;
  border-color: transparent !important;
  box-shadow: var(--certlink-btn-fill-primary-shadow) !important;
}

html.certlink-portal-route body.path-settings-user .certlink-custom-page .certlink-user-settings-page .form-actions button#edit-submit.btn.btn-primary:hover,
html.certlink-portal-route body.path-settings-user .certlink-custom-page .certlink-user-settings-page .form-actions input#edit-submit.certlink-portal-fill-btn:hover,
html.certlink-portal-route body.path-settings-user .certlink-custom-page .certlink-user-settings-page .form-actions button#edit-submit.certlink-portal-fill-btn:hover {
  background-color: var(--certlink-btn-fill-primary-bg) !important;
  color: var(--certlink-btn-fill-primary-color) !important;
  border-color: transparent !important;
}

/* Cancel account (/settings/user): misma altura y padding vertical que Save (tokens fill-primary). */
html.certlink-portal-route body.path-settings-user .certlink-custom-page .certlink-user-settings-page .form-actions [data-drupal-selector="edit-delete"],
html.certlink-portal-route body.path-settings-user .certlink-custom-page .certlink-user-settings-page .form-actions .button.button--danger,
html.certlink-portal-route body.path-settings-user .certlink-custom-page .certlink-user-settings-page .form-actions a.button.button--danger {
  min-height: 40px !important;
  height: 40px !important;
  width: 180px !important;
  padding: 0 16px !important;
  border-radius: 8px !important;
  line-height: normal !important;
  font-weight: var(--certlink-btn-fill-primary-fw) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  white-space: nowrap !important;
  box-sizing: border-box !important;
}

/* Conmutador EN - ES (barra portal) */
html.certlink-portal-route .certlink-lang-switch {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.9rem;
}
html.certlink-portal-route .certlink-lang-switch__link {
  color: var(--muted);
  text-decoration: none;
  font-weight: 600;
}
html.certlink-portal-route .certlink-lang-switch__link:hover,
html.certlink-portal-route .certlink-lang-switch__link:focus-visible {
  color: var(--text);
  text-decoration: underline;
}
html.certlink-portal-route .certlink-lang-switch__link.is-active {
  color: var(--text);
  cursor: default;
  text-decoration: none;
}
html.certlink-portal-route .certlink-lang-switch__sep {
  color: var(--muted);
  user-select: none;
}

/* --------------------------------------------------------------------------
 * Login (NO set password): primarios = mismo bloque visual que .certlink-logout-btn.
 * Set password (pass-reset-flow): maqueta en portal-set-password.css.
 * -------------------------------------------------------------------------- */
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"],
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button[type="submit"],
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--primary:not(.button--danger),
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .btn-primary:not(.btn-danger) {
  appearance: none !important;
  -webkit-appearance: none !important;
  border: none !important;
  background: var(--certlink-btn-fill-primary-bg) !important;
  background-color: var(--certlink-btn-fill-primary-bg) !important;
  background-image: none !important;
  color: var(--certlink-btn-fill-primary-color) !important;
  font-family: inherit !important;
  box-shadow: var(--certlink-btn-fill-primary-shadow) !important;
  transition:
    transform 0.22s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.22s ease,
    filter 0.2s ease,
    color 0.18s ease !important;
  cursor: pointer !important;
}

html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"]:hover,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit:hover,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit:hover,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button[type="submit"]:hover,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--primary:not(.button--danger):hover,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .btn-primary:not(.btn-danger):hover {
  transform: translateY(-2px);
  filter: brightness(1.12);
  color: var(--certlink-btn-fill-primary-color) !important;
  box-shadow: var(--certlink-btn-fill-hover-shadow) !important;
}

html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"]:active,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit:active,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit:active,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button[type="submit"]:active,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--primary:not(.button--danger):active,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .btn-primary:not(.btn-danger):active {
  transform: translateY(0);
  filter: brightness(1.06);
}

html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"]:focus-visible,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit:focus-visible,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit:focus-visible,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button[type="submit"]:focus-visible,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--primary:not(.button--danger):focus-visible,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .btn-primary:not(.btn-danger):focus-visible {
  outline: none !important;
  filter: brightness(1.12);
  color: var(--certlink-btn-fill-primary-color) !important;
  box-shadow: var(--certlink-btn-fill-focus-shadow) !important;
}

html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input[type="submit"]:disabled,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions input.form-submit:disabled,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button.form-submit:disabled,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions button[type="submit"]:disabled,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .button--primary:disabled,
html.certlink-portal-route body.certlink-portal-login:not(.certlink-portal-pass-reset-flow) .certlink-portal-admin-form .certlink-admin-form-panel .form-actions .btn-primary:disabled {
  opacity: 0.55 !important;
  cursor: not-allowed !important;
  filter: none !important;
  transform: none !important;
}

/* ==========================================================================
 * LOGIN NATIVO Drupal (login / pass / reset) — aspecto tipo LOGIN.jpg
 *
 * Selectores con body.certlink-portal-auth-card (preprocess_html en certlink):
 * no depender solo de path-user-login (p. ej. prefijo de idioma en la URL).
 * Implementación con CSS sobre el HTML de Drupal + regiones del subtema.
 * ========================================================================== */

/* Fondo: mismo gradiente que el resto del portal (evita plano #023859 distinto). */
html.certlink-portal-route:has(body.certlink-portal-auth-card) {
  background: linear-gradient(180deg, var(--abroadlink-blue) 0%, #02486f 100%) !important;
  background-color: transparent !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  height: auto !important;
  min-height: 100% !important;
}

html.certlink-portal-route body.certlink-portal-auth-card {
  background: linear-gradient(180deg, var(--abroadlink-blue) 0%, #02486f 100%) !important;
  background-color: transparent !important;
  background-attachment: fixed !important;
  min-height: 100vh !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

html.certlink-portal-route body.certlink-portal-auth-card .dialog-off-canvas-main-canvas {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  flex: 1 1 auto !important;
  width: 100% !important;
  min-height: min(100vh, 100dvh) !important;
  box-sizing: border-box !important;
  background: transparent !important;
  /* Aire respecto al borde superior del viewport (debajo del skip link oculto). */
  padding-top: max(28px, calc(env(safe-area-inset-top, 0px) + 24px)) !important;
}

/*
 * Pass / reset (no portada): el padding del canvas dejaba una franja entre el
 * viewport y #navbar-top; la cabecera debe arrancar arriba (safe-area solo).
 */
html.certlink-portal-route body.certlink-portal-login.certlink-portal-auth-card:not(.certlink-portal-home) .dialog-off-canvas-main-canvas {
  padding-top: max(0px, env(safe-area-inset-top, 0px)) !important;
  align-items: stretch !important;
}

html.certlink-portal-route body.certlink-portal-login.certlink-portal-auth-card:not(.certlink-portal-home) {
  align-items: stretch !important;
}

html.certlink-portal-route body.certlink-portal-login.certlink-portal-auth-card:not(.certlink-portal-home) #navbar-top {
  padding-top: max(0px, env(safe-area-inset-top, 0px)) !important;
  padding-bottom: 0 !important;
  margin-top: 0 !important;
}

/*
 * Cabecera CertLink (bloques en regiones header/top_header): el portal la oculta
 * por defecto; en login la reactivamos y la integramos visualmente en la tarjeta.
 */
html.certlink-portal-route body.certlink-portal-auth-card #page-wrapper.certlink-portal-shell > header.certlink-main-header[role="banner"] {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  max-width: 450px !important;
  margin: 0 auto !important;
  padding: 2.25rem 3rem 0.75rem !important;
  box-sizing: border-box !important;
  text-align: center !important;
  background: linear-gradient(180deg, var(--abroadlink-blue) 0%, #02486f 100%) !important;
  background-color: transparent !important;
  border-radius: 16px 16px 0 0 !important;
}

html.certlink-portal-route body.certlink-portal-auth-card #page-wrapper.certlink-portal-shell > header.certlink-main-header[role="banner"] .site-branding,
html.certlink-portal-route body.certlink-portal-auth-card #page-wrapper.certlink-portal-shell > header.certlink-main-header[role="banner"] .navbar-brand,
html.certlink-portal-route body.certlink-portal-auth-card #page-wrapper.certlink-portal-shell > header.certlink-main-header[role="banner"] .block {
  text-align: center !important;
}

html.certlink-portal-route body.certlink-portal-auth-card #page-wrapper.certlink-portal-shell > header.certlink-main-header[role="banner"] img {
  display: block !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/*
 * Tarjeta: contenedor CertLink (.content-region) y región nativa .region-content.
 * max-width, radio y sombra alineados con la referencia visual LOGIN.jpg.
 */
html.certlink-portal-route body.certlink-portal-auth-card .certlink-main-content .content-region,
html.certlink-portal-route body.certlink-portal-auth-card .certlink-main-content .region.region-content {
  background: linear-gradient(180deg, var(--abroadlink-blue) 0%, #02486f 100%) !important;
  background-color: transparent !important;
  max-width: 450px !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  margin-top: 0 !important;
  padding: 1.25rem 3rem 3rem !important;
  box-sizing: border-box !important;
  border-radius: 0 0 16px 16px !important;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.4) !important;
}

/* Evita doble padding si .region.region-content va anidada dentro de .content-region. */
html.certlink-portal-route body.certlink-portal-auth-card .content-region .region.region-content {
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

/*
 * Duplicados «Solicitar acceso» / enlaces de cuenta: pestañas locales del núcleo
 * (ul.nav.secondary) o bloque de tareas; también copias en pie si el pie se muestra.
 */
html.certlink-portal-route body.certlink-portal-auth-card .block-local-tasks-block,
html.certlink-portal-route body.certlink-portal-auth-card .block[class*="local-tasks"],
html.certlink-portal-route body.certlink-portal-auth-card .region-content ul.nav.nav-tabs.secondary,
html.certlink-portal-route body.certlink-portal-auth-card .region-content ul.nav.secondary {
  display: none !important;
}

html.certlink-portal-route body.certlink-portal-auth-card footer.certlink-footer-region[role="contentinfo"] a[href*="user/password"],
html.certlink-portal-route body.certlink-portal-auth-card footer.certlink-footer-region[role="contentinfo"] a[href*="user/pass"],
html.certlink-portal-route body.certlink-portal-auth-card footer.certlink-footer-region[role="contentinfo"] a[href*="user/register"] {
  display: none !important;
}

/* Campos del formulario nativo #user-login-form y solicitud de contraseña #user-pass. */
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[type="text"],
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[type="password"],
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[type="email"],
html.certlink-portal-route body.certlink-portal-auth-card #user-pass input[type="text"],
html.certlink-portal-route body.certlink-portal-auth-card #user-pass input[type="email"],
html.certlink-portal-route body.certlink-portal-auth-card .user-form input[type="text"],
html.certlink-portal-route body.certlink-portal-auth-card .user-form input[type="password"],
html.certlink-portal-route body.certlink-portal-auth-card .user-form input[type="email"],
html.certlink-portal-route body.certlink-portal-auth-card .user-form .password-field {
  width: 100% !important;
  max-width: 100% !important;
  background-color: #ffffff !important;
  color: #1a2b36 !important;
  border: none !important;
  border-radius: 8px !important;
  height: var(--certlink-auth-control-height) !important;
  min-height: var(--certlink-auth-control-height) !important;
  max-height: var(--certlink-auth-control-height) !important;
  padding: 8px 12px !important;
  font-size: 14px !important;
  box-sizing: border-box !important;
}

html.certlink-portal-route body.certlink-portal-auth-card #user-login-form label,
html.certlink-portal-route body.certlink-portal-auth-card #user-pass label {
  color: #f2fbff !important;
  font-weight: 600 !important;
}

/* Botón de envío (#edit-submit en formulario único). */
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form #edit-submit,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[type="submit"].form-submit,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[data-drupal-selector="edit-submit"],
html.certlink-portal-route body.certlink-portal-auth-card #user-pass #edit-submit,
html.certlink-portal-route body.certlink-portal-auth-card #user-pass input[type="submit"].form-submit,
html.certlink-portal-route body.certlink-portal-auth-card #user-pass input[data-drupal-selector="edit-submit"],
html.certlink-portal-route body.certlink-portal-auth-card .user-form #edit-submit,
html.certlink-portal-route body.certlink-portal-auth-card .user-form input[type="submit"].form-submit,
html.certlink-portal-route body.certlink-portal-auth-card .user-form input[data-drupal-selector="edit-submit"],
html.certlink-portal-route body.certlink-portal-auth-card .certlink-user-pass-reset-form #edit-submit,
html.certlink-portal-route body.certlink-portal-auth-card .certlink-user-pass-reset-form input[type="submit"].form-submit {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  height: var(--certlink-auth-control-height) !important;
  min-height: var(--certlink-auth-control-height) !important;
  max-height: var(--certlink-auth-control-height) !important;
  margin-top: 0 !important;
  padding: 8px 12px !important;
  background-color: #012338 !important;
  color: #ffffff !important;
  border: none !important;
  border-radius: 8px !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  cursor: pointer !important;
  box-sizing: border-box !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* Botón secundario «Request access» en /user/login: mismo tamaño y alineación que #edit-submit. */
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form .form-actions a.certlink-login-request-access {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  height: var(--certlink-auth-control-height) !important;
  min-height: var(--certlink-auth-control-height) !important;
  max-height: var(--certlink-auth-control-height) !important;
  margin: 0 !important;
  padding: 8px 12px !important;
  font-family: Montserrat, "Open Sans", system-ui, sans-serif !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  border-radius: 8px !important;
  box-sizing: border-box !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  white-space: nowrap !important;
  background-color: transparent !important;
  color: #ffffff !important;
  border: 1px solid rgba(255, 255, 255, 0.55) !important;
  text-decoration: none !important;
  cursor: pointer !important;
}

html.certlink-portal-route body.certlink-portal-auth-card #user-login-form .form-actions a.certlink-login-request-access:hover {
  background: rgba(255, 255, 255, 0.1) !important;
  border-color: #ffffff !important;
  color: #ffffff !important;
}

/* Altura de controles de Login unificada a 48px para coincidir con los campos de texto y la maqueta */
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[type="text"],
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[type="password"],
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[type="email"],
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form #edit-submit,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[type="submit"].form-submit,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[data-drupal-selector="edit-submit"],
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form .form-actions a.certlink-login-request-access {
  height: 48px !important;
  min-height: 48px !important;
  max-height: 48px !important;
}

/* Color en hover para el botón «Log in» */
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form #edit-submit:hover,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[type="submit"].form-submit:hover,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form input[data-drupal-selector="edit-submit"]:hover {
  background-color: #013753 !important;
  color: #ffffff !important;
}


html.certlink-portal-route body.certlink-portal-auth-card #user-login-form .form-actions {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  column-gap: 10px !important;
  row-gap: 10px !important;
  align-items: stretch !important;
}

html.certlink-portal-route body.certlink-portal-auth-card #user-pass .form-actions,
html.certlink-portal-route body.certlink-portal-auth-card .user-form .form-actions,
html.certlink-portal-route body.certlink-portal-auth-card .certlink-user-pass-reset-form .form-actions {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  align-items: stretch !important;
}

html.certlink-portal-route body.certlink-portal-auth-card .user-form fieldset.account,
html.certlink-portal-route body.certlink-portal-auth-card .user-form fieldset.account .fieldset-wrapper,
html.certlink-portal-route body.certlink-portal-auth-card .certlink-user-pass-reset-form fieldset.account,
html.certlink-portal-route body.certlink-portal-auth-card .certlink-user-pass-reset-form fieldset.account .fieldset-wrapper {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

/* Botón secundario «Back» en /user/pass: misma altura que #edit-submit. */
html.certlink-portal-route body.certlink-portal-auth-card #user-pass .form-actions .certlink-user-pass-back,
html.certlink-portal-route body.certlink-portal-auth-card #user-pass .form-actions a.certlink-user-pass-back.btn {
  box-sizing: border-box !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  min-width: 0 !important;
  height: var(--certlink-auth-control-height) !important;
  min-height: var(--certlink-auth-control-height) !important;
  max-height: var(--certlink-auth-control-height) !important;
  margin: 0 0 0.75rem 0 !important;
  padding: 8px 12px !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  border-radius: 8px !important;
  border-width: 1px !important;
  border-style: solid !important;
  text-decoration: none !important;
  color: #e8f4ff !important;
  border-color: rgba(232, 244, 255, 0.88) !important;
  background-color: transparent !important;
}

html.certlink-portal-route body.certlink-portal-auth-card #user-pass .form-actions .certlink-user-pass-back:hover,
html.certlink-portal-route body.certlink-portal-auth-card #user-pass .form-actions .certlink-user-pass-back:focus-visible {
  color: #ffffff !important;
  border-color: rgba(255, 255, 255, 0.95) !important;
}

/* Enlaces del bloque de ayuda y acciones secundarias: sin subrayado, tono claro. */
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form a:not(.login-forgot),
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form .certlink-login-request-access,
html.certlink-portal-route body.certlink-portal-auth-card #user-pass a:not(.login-forgot) {
  color: #b8e8ff !important;
  text-decoration: none !important;
}

html.certlink-portal-route body.certlink-portal-auth-card #user-login-form a:not(.login-forgot):hover,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form .certlink-login-request-access:hover,
html.certlink-portal-route body.certlink-portal-auth-card #user-pass a:not(.login-forgot):hover {
  color: #ffffff !important;
  text-decoration: none !important;
}

/* Maqueta login: «Forgot your password?» en naranja accent, no azul claro. */
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form .certlink-login-help a,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form a.login-forgot,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form .certlink-login-help .certlink-portal-text-link {
  color: var(--al-orange, #e09030) !important;
  text-decoration: none !important;
}

html.certlink-portal-route body.certlink-portal-auth-card #user-login-form .certlink-login-help a:hover,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form a.login-forgot:hover,
html.certlink-portal-route body.certlink-portal-auth-card #user-login-form .certlink-login-help .certlink-portal-text-link:hover {
  color: #ffffff !important;
  text-decoration: none !important;
  text-shadow: none !important;
}

html.certlink-portal-route .certlink-override-upload-current {
  margin: 0 0 1rem;
  font-size: 0.95rem;
  line-height: 1.45;
  color: rgba(255, 255, 255, 0.88);
}

/* Botón subir fichero naranja: css/portal-form-file-upload.css (plantilla + PDF manual). */

/* ---------- Paginador del Portal (Views Pager) ---------- */
html.certlink-portal-route .pager,
html.certlink-portal-route nav[role="navigation"].pager,
html.certlink-portal-route .pagination-wrapper {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  width: 100% !important;
  margin: 0 !important; /* Acoplado al fondo de la tabla */
  padding: var(--space-6, 24px) 0 !important; /* Incrementado relleno vertical a 24px */
  list-style: none !important;
  list-style-type: none !important;
  background: rgba(0, 0, 0, 0.12) !important; /* Fondo oscuro translúcido */
  border-top: 1px solid rgba(255, 255, 255, 0.08) !important; /* Línea divisoria sutil */
  border-bottom: none !important;
  border-left: none !important;
  border-right: none !important;
  clear: both !important;
  border-bottom-left-radius: 14px;
  border-bottom-right-radius: 14px;
}

html.certlink-portal-route .pager ul,
html.certlink-portal-route .pagination,
html.certlink-portal-route ul.pagination,
html.certlink-portal-route .pager__items {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  list-style: none !important;
  list-style-type: none !important;
  margin: 0 !important;
  padding: var(--space-2, 8px) 0 !important; /* Relleno vertical interno de 8px */
  gap: 0 !important; /* Eliminado el gap para que los botones se peguen horizontalmente */
  background: transparent !important;
  border: none !important;
}

html.certlink-portal-route .pager li,
html.certlink-portal-route .pagination li,
html.certlink-portal-route .pager__item,
html.certlink-portal-route .page-item,
html.certlink-portal-route .pager-item {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  list-style: none !important;
  list-style-type: none !important;
  background-image: none !important;
  margin: 0 !important;
  padding: 0 !important;
  font-family: var(--font-sans) !important;
  font-size: var(--fs-sm, 14px) !important;
  color: rgba(255, 255, 255, 0.72) !important;
}

/* Evitar los puntos de viñeta usando pseudoelementos ::before si algún tema los inyecta */
html.certlink-portal-route .pager li::before,
html.certlink-portal-route .pagination li::before,
html.certlink-portal-route .pager__item::before,
html.certlink-portal-route .page-item::before,
html.certlink-portal-route .pager-item::before {
  content: "" !important;
  display: none !important;
}

/* Botones y Enlaces del paginador (Por defecto sin bordes redondeados y superpuestos) */
html.certlink-portal-route .pager li a,
html.certlink-portal-route .pagination li a,
html.certlink-portal-route .pager__item a,
html.certlink-portal-route .page-link,
html.certlink-portal-route .pager__item.pager__item--current,
html.certlink-portal-route .pager li.active span,
html.certlink-portal-route .pagination li.active span,
html.certlink-portal-route .pager li.pager-current,
html.certlink-portal-route .pager li.is-active a,
html.certlink-portal-route .pagination li.active a {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 34px !important;
  height: 34px !important;
  padding: 0 12px !important;
  border-radius: 0 !important; /* Rectangulares para unirse limpiamente */
  margin-left: -1px !important; /* Superponer bordes de 1px para evitar doble grosor */
  background: rgba(255, 255, 255, 0.06) !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  color: #fff !important;
  font-weight: 600 !important;
  text-decoration: none !important;
  transition: all 0.15s ease !important;
  cursor: pointer !important;
}

/* Redondear extremo izquierdo del primer botón */
html.certlink-portal-route .pager li:first-child a,
html.certlink-portal-route .pager li:first-child span,
html.certlink-portal-route .pagination li:first-child a,
html.certlink-portal-route .pagination li:first-child span,
html.certlink-portal-route .pager__item:first-child a,
html.certlink-portal-route .pager__item:first-child span,
html.certlink-portal-route .page-item:first-child .page-link {
  border-top-left-radius: var(--radius-md, 8px) !important;
  border-bottom-left-radius: var(--radius-md, 8px) !important;
  margin-left: 0 !important;
}

/* Redondear extremo derecho del último botón */
html.certlink-portal-route .pager li:last-child a,
html.certlink-portal-route .pager li:last-child span,
html.certlink-portal-route .pagination li:last-child a,
html.certlink-portal-route .pagination li:last-child span,
html.certlink-portal-route .pager__item:last-child a,
html.certlink-portal-route .pager__item:last-child span,
html.certlink-portal-route .page-item:last-child .page-link {
  border-top-right-radius: var(--radius-md, 8px) !important;
  border-bottom-right-radius: var(--radius-md, 8px) !important;
}

/* Hover en enlaces activos */
html.certlink-portal-route .pager li a:hover,
html.certlink-portal-route .pagination li a:hover,
html.certlink-portal-route .pager__item a:hover,
html.certlink-portal-route .page-link:hover,
html.certlink-portal-route .pager li.is-active a:hover {
  background: var(--al-orange, #e09030) !important;
  border-color: var(--al-orange, #e09030) !important;
  color: #fff !important;
  box-shadow: 0 4px 12px rgba(224, 144, 48, 0.35) !important;
  transform: translateY(-1px);
  z-index: 2; /* Asegurar que el botón enfocado quede sobre los bordes contiguos */
}

/* Item activo / página actual (Estilo Naranja Premium con Brillo) */
html.certlink-portal-route .pager__item.pager__item--current,
html.certlink-portal-route .pager li.active span,
html.certlink-portal-route .pagination li.active span,
html.certlink-portal-route .pager li.pager-current,
html.certlink-portal-route .pager li.is-active a,
html.certlink-portal-route .pagination li.active a {
  background: var(--al-orange, #e09030) !important;
  border-color: var(--al-orange, #e09030) !important;
  color: #fff !important;
  pointer-events: none !important;
  box-shadow: 0 2px 8px rgba(224, 144, 48, 0.25) !important;
  z-index: 1;
}

/* Ocultar elementos vacíos o textos invisibles de accesibilidad si molestan en el flujo flex */
html.certlink-portal-route .pager .visually-hidden,
html.certlink-portal-route .pagination .visually-hidden {
  position: absolute !important;
  overflow: hidden !important;
  clip: rect(1px, 1px, 1px, 1px) !important;
  width: 1px !important;
  height: 1px !important;
  word-wrap: normal !important;
}

/* ---------- Paginador Custom CertLink (< X to Y >) ---------- */
.certlink-portal-pager {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 20px;
  padding: 4px 12px;
}

html.certlink-portal-route .panel-foot {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  flex-wrap: wrap !important;
  gap: 16px !important;
}

.certlink-pager-arrow {
  appearance: none;
  -webkit-appearance: none;
  background: transparent;
  border: none;
  color: rgba(255, 255, 255, 0.85);
  font-family: inherit;
  font-size: 1.125rem;
  font-weight: bold;
  cursor: pointer;
  padding: 0 8px;
  line-height: 1;
  transition: color 0.18s ease, transform 0.18s ease;
  user-select: none;
}

.certlink-pager-arrow:hover:not(:disabled) {
  color: var(--al-orange, #e09030);
  transform: scale(1.15);
}

.certlink-pager-arrow:active:not(:disabled) {
  transform: scale(0.95);
}

.certlink-pager-arrow:disabled {
  color: rgba(255, 255, 255, 0.25);
  cursor: not-allowed;
  pointer-events: none;
}

.certlink-pager-text {
  font-size: 0.9rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.9);
  user-select: none;
}

/* ========== Rediseño Premium de Mensajes de Error (Error Messages) ========== */

/* Contenedor del mensaje de error (.alert-danger / .messages--error) */
html.certlink-portal-route .alert-danger,
html.certlink-portal-route .messages--error,
html.certlink-portal-route [data-drupal-messages] .alert-danger,
html.certlink-portal-route [data-drupal-messages] [role="alert"] {
  display: flex !important;
  align-items: center !important;
  gap: var(--space-4, 16px) !important;
  background: #e09030 !important;
  border: none !important;
  border-radius: var(--radius-lg, 12px) !important;
  box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255, 255, 255, 0.22) !important;
  padding: var(--space-4, 16px) var(--space-5, 20px) !important;
  color: #fff !important;
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  font-size: var(--fs-lg, 17px) !important;
  box-sizing: border-box !important;
  animation: alertIn 320ms cubic-bezier(0.16, 0.84, 0.44, 1) both !important;
  margin: 0 auto 20px auto !important;
  width: 100% !important;
  max-width: 700px !important;
}

@keyframes alertIn {
  0%   { opacity: 0; transform: translateY(-12px); }
  60%  { transform: translateY(2px); }
  100% { opacity: 1; transform: translateY(0); }
}

/* Ocultar el icono y la cabecera por defecto del tema para el error */
html.certlink-portal-route .alert-danger > svg.bi,
html.certlink-portal-route .alert-danger .alert-heading,
html.certlink-portal-route [role="alert"] > svg.bi,
html.certlink-portal-route [role="alert"] .alert-heading,
html.certlink-portal-route .messages--error .alert-heading {
  display: none !important;
}

/* Dibujar el icono circular de exclamación dinámico */
html.certlink-portal-route .alert-danger::before,
html.certlink-portal-route .messages--error::before,
html.certlink-portal-route [data-drupal-messages] [role="alert"]::before {
  content: '' !important;
  width: 38px !important;
  height: 38px !important;
  flex: none !important;
  display: block !important;
  background: rgba(255, 255, 255, 0.18) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'%3E%3C/circle%3E%3Cpath d='M12 8v4M12 16h.01'%3E%3C/path%3E%3C/svg%3E") no-repeat center / 20px !important;
  border-radius: 50% !important;
}

/* Contenedor del texto del mensaje */
html.certlink-portal-route .alert-danger > div,
html.certlink-portal-route [role="alert"] > div {
  flex: 1 !important;
  font-size: calc(var(--fs-lg, 17px) + 4px) !important;
  color: #fff !important;
  text-align: left !important;
}


/* Botón cerrar / Dismiss del error */
html.certlink-portal-route .alert-danger .btn-close,
html.certlink-portal-route .alert-danger button.close,
html.certlink-portal-route [role="alert"] .btn-close,
html.certlink-portal-route [role="alert"] button.close {
  flex: none !important;
  width: 30px !important;
  height: 30px !important;
  display: grid !important;
  place-items: center !important;
  border: none !important;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6 6 18M6 6l12 12'%3E%3C/path%3E%3C/svg%3E") no-repeat center / 14px !important;
  color: transparent !important;
  font-size: 0 !important;
  border-radius: var(--radius-sm, 4px) !important;
  cursor: pointer !important;
  transition: background var(--dur-1, 120ms) var(--ease-out), color var(--dur-1, 120ms) var(--ease-out) !important;
  opacity: 0.75 !important;
  padding: 0 !important;
  margin: 0 !important;
}

html.certlink-portal-route .alert-danger .btn-close:hover,
html.certlink-portal-route .alert-danger button.close:hover,
html.certlink-portal-route [role="alert"] .btn-close:hover,
html.certlink-portal-route [role="alert"] button.close:hover {
  background-color: rgba(255, 255, 255, 0.2) !important;
  opacity: 1 !important;
}

/* ==========================================================================
   Alineación y diseño Premium para avisos fuera del recuadro central (Login/Pass)
   ========================================================================== */

@keyframes alertIn {
  0% {
    opacity: 0;
    transform: translateY(-12px);
  }
  60% {
    transform: translateY(2px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Animación de entrada para las alertas del portal en la cabecera */
body.certlink-portal-login .certlink-portal-shell-messages .alert,
body.certlink-portal-login .certlink-portal-shell-messages .messages,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .messages {
  animation: alertIn 320ms cubic-bezier(0.16, 0.84, 0.44, 1) both !important;
}

/* Ancho dinámico adaptado al panel inferior */
body.certlink-portal-login.certlink-portal-home .certlink-portal-shell-messages--login-card {
  width: 100% !important;
  max-width: var(--certlink-login-card-max, 450px) !important;
  margin: 0 auto 16px !important;
}

body.certlink-portal-request-access .certlink-portal-shell-messages--login-card {
  width: 100% !important;
  max-width: 560px !important;
  margin: 0 auto 16px !important;
}

body.certlink-portal-login:not(.certlink-portal-home) .certlink-portal-shell-messages--login-card,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages--login-card {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 auto 16px !important;
}

/* Transición y colapso para el autoocultado suave (desplazar hacia arriba) */
body.certlink-portal-login .certlink-portal-shell-messages .alert,
body.certlink-portal-login .certlink-portal-shell-messages .messages,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .messages {
  max-height: 500px !important;
  opacity: 1 !important;
  transform: translateY(0) !important;
  transition: max-height 0.4s ease, opacity 0.4s ease, transform 0.4s ease, margin 0.4s ease, padding 0.4s ease, border-width 0.4s ease !important;
}

body.certlink-portal-login .certlink-portal-shell-messages .alert.is-hiding,
body.certlink-portal-login .certlink-portal-shell-messages .messages.is-hiding,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .alert.is-hiding,
body.certlink-portal-pass-reset-flow .certlink-portal-shell-messages .messages.is-hiding {
  max-height: 0 !important;
  opacity: 0 !important;
  transform: translateY(-12px) !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  border-top-width: 0 !important;
  border-bottom-width: 0 !important;
  border-left-width: 0 !important;
  border-right-width: 0 !important;
  overflow: hidden !important;
}

/* Forzar que el contenedor .shell apile sus hijos verticalmente en login/recovery */
html.certlink-portal-route body.certlink-portal-pass-reset-flow .certlink-custom-page > .shell {
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  display: flex !important;
  margin-top: 24px !important;
  margin-bottom: 80px !important;
}

/* =========================================================================
   AbroadLink Translations — V2 Vistas Rediseñadas Premium (Linguist & Specs)
   ========================================================================= */

/* Ajuste horizontal de las vistas al 100% de su contenedor externo para integrarse de forma nativa */
.certlink-v2-specifications,
.certlink-v2-linguist-profile {
  width: 100% !important;
  max-width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* --- Linguist Profile Premium Design --- */
.certlink-v2-linguist-profile .panel-top {
  display: flex;
  justify-content: flex-end;
  margin-bottom: var(--space-6, 24px);
}

.certlink-v2-linguist-profile .certlink-v2-back-btn.setup-btn,
.certlink-v2-specifications .certlink-v2-back-btn.setup-btn {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  text-decoration: none !important;
  text-shadow: none !important;
  white-space: nowrap !important;
}

/* Maqueta Project Specification.html: Back --fs-md (15px). */
.certlink-v2-specifications .certlink-v2-back-btn.setup-btn {
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  font-size: var(--fs-md, 15px) !important;
}

.certlink-v2-linguist-profile .certlink-v2-back-btn.setup-btn svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

.certlink-v2-linguist-profile .detail-card {
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  border-radius: var(--radius-xl, 14px) !important;
  overflow: hidden !important;
}

.certlink-v2-linguist-profile .detail-card table {
  width: 100% !important;
  border-collapse: collapse !important;
  border: none !important;
  margin: 0 !important;
  table-layout: auto !important;
}

.certlink-v2-linguist-profile .detail-card tr {
  border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
  background: none !important;
}

.certlink-v2-linguist-profile .detail-card tr:last-child {
  border-bottom: none !important;
}

.certlink-v2-linguist-profile .detail-card th.field-label {
  text-align: left !important;
  width: 33% !important;
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  font-size: var(--fs-lg, 17px) !important;
  letter-spacing: var(--tracking-caps, 0.08em) !important;
  text-transform: uppercase !important;
  color: var(--al-white, #fff) !important;
  background: var(--al-navy-900, #001f36) !important;
  padding: var(--space-5, 20px) var(--space-6, 24px) !important;
  border-right: 1px solid rgba(255, 255, 255, 0.06) !important;
  border-left: none !important;
  border-top: none !important;
  border-bottom: none !important;
  vertical-align: middle !important;
  white-space: nowrap !important;
}

.certlink-v2-linguist-profile .detail-card td.field-value {
  padding: var(--space-5, 20px) var(--space-6, 24px) !important;
  font-size: var(--fs-xl, 20px) !important;
  color: rgba(255, 255, 255, 0.94) !important;
  background: linear-gradient(180deg, rgba(0, 31, 54, 0.35), rgba(0, 48, 80, 0.1)) !important;
  border: none !important;
  vertical-align: middle !important;
  white-space: normal !important;
  word-break: break-word !important;
  overflow-wrap: anywhere !important;
  line-height: 1.45 !important;
  text-overflow: clip !important;
  overflow: visible !important;
}

.certlink-v2-linguist-profile .detail-card td.field-value.muted {
  color: rgba(255, 255, 255, 0.5) !important;
}

/* Aislar la tabla del perfil frente a estilos genéricos de tablas del portal. */
html.certlink-portal-route .certlink-linguist-profile-page .certlink-v2-linguist-profile .detail-card table.detail-card-table {
  min-width: 0 !important;
  table-layout: auto !important;
}

html.certlink-portal-route .certlink-linguist-profile-page .certlink-v2-linguist-profile .detail-card table.detail-card-table th.field-label,
html.certlink-portal-route .certlink-linguist-profile-page .certlink-v2-linguist-profile .detail-card table.detail-card-table td.field-value {
  box-shadow: none !important;
  outline: none !important;
}

/* Valores largos (p. ej. Qualifications): varias líneas; anula nowrap de .certlink-custom-page tbody td. */
html.certlink-portal-route .certlink-linguist-profile-page.certlink-custom-page .certlink-v2-linguist-profile .detail-card table.detail-card-table tbody td.field-value {
  white-space: normal !important;
  word-break: break-word !important;
  overflow-wrap: anywhere !important;
  line-height: 1.45 !important;
  text-overflow: clip !important;
  overflow: visible !important;
}

html.certlink-portal-route .certlink-linguist-profile-page .certlink-v2-linguist-profile .detail-card table.detail-card-table tbody tr:hover {
  background: transparent !important;
}

.certlink-v2-linguist-profile .detail-card .code {
  font-family: var(--font-mono) !important;
  font-size: var(--fs-lg, 17px) !important;
  color: rgba(255, 255, 255, 0.94) !important;
  letter-spacing: 0.01em !important;
}

.certlink-v2-linguist-profile .detail-card .field-value a.link {
  color: var(--al-orange-300, #f3c483) !important;
  text-decoration: none !important;
  border-bottom: 1px solid rgba(243, 196, 131, 0.45) !important;
  transition: color var(--dur-1) var(--ease-out), border-color var(--dur-1) var(--ease-out) !important;
}

.certlink-v2-linguist-profile .detail-card .field-value a.link:hover {
  color: #fff !important;
  border-bottom-color: #fff !important;
}

/* Botón de descarga de CV */
.certlink-v2-linguist-profile .dl-btn {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-family: var(--font-sans) !important;
  font-weight: 700 !important;
  font-size: var(--fs-sm, 13px) !important;
  color: var(--al-navy, #003050) !important;
  background: var(--al-white, #fff) !important;
  border: 1px solid var(--border-1, #d9dee4) !important;
  border-radius: var(--radius-md, 8px) !important;
  padding: 9px var(--space-5, 20px) !important;
  cursor: pointer !important;
  text-decoration: none !important;
  transition: box-shadow var(--dur-1) var(--ease-out), transform var(--dur-1) var(--ease-out) !important;
}

.certlink-v2-linguist-profile .dl-btn svg {
  width: 16px !important;
  height: 16px !important;
  color: var(--al-navy, #003050) !important;
  fill: none !important;
}

/* Misma animación que certlink-download-btn: anillo naranja, texto navy legible. */
.certlink-v2-linguist-profile .dl-btn:hover,
.certlink-v2-linguist-profile .dl-btn:focus,
.certlink-v2-linguist-profile .dl-btn:focus-visible {
  color: var(--al-navy, #003050) !important;
  background: var(--al-white, #ffffff) !important;
  background-color: var(--al-white, #ffffff) !important;
  border: 1px solid var(--al-gray-200, #d4dde6) !important;
  transform: none !important;
  filter: none !important;
  text-shadow: none !important;
  box-shadow: var(--shadow-focus, 0 0 0 3px rgba(224, 144, 48, 0.35)) !important;
  text-decoration: none !important;
  outline: none !important;
}

.certlink-v2-linguist-profile .dl-btn:hover svg,
.certlink-v2-linguist-profile .dl-btn:focus svg,
.certlink-v2-linguist-profile .dl-btn:focus-visible svg {
  color: var(--al-navy, #003050) !important;
}

.certlink-v2-linguist-profile .dl-btn:active {
  transform: translateY(1px) !important;
}

.public-profiles-links {
  display: inline;
  line-height: inherit;
}

.public-profiles-links .link + .link::before {
  content: " · ";
  color: rgba(255, 255, 255, 0.4);
  border-bottom: none;
}

/* --- Project Specifications Premium Design --- */
.certlink-v2-specifications .panel-top {
  display: flex;
  justify-content: flex-end;
  margin-bottom: var(--space-6, 24px);
}

/* Ficha spec-card y secciones */
.certlink-v2-specifications .spec-card {
  background: rgba(0, 31, 54, 0.28) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: var(--radius-xl, 14px) !important;
  padding: var(--space-6, 24px) var(--space-8, 32px) !important;
  margin-bottom: var(--space-6, 24px) !important;
}

.certlink-v2-specifications .spec-section + .spec-section {
  margin-top: var(--space-5, 20px) !important;
  padding-top: var(--space-5, 20px) !important;
  border-top: 1px solid rgba(255, 255, 255, 0.10) !important;
}

.certlink-v2-specifications .spec-section-title {
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  /* Maqueta Project Specification.html: --fs-sm (13px). */
  font-size: var(--fs-sm, 13px) !important;
  letter-spacing: var(--tracking-caps, 0.08em) !important;
  text-transform: uppercase !important;
  color: var(--al-orange-300, #f3c483) !important;
  margin: 0 0 16px !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
}

.certlink-v2-specifications .spec-section-title svg {
  width: 14px !important;
  height: 14px !important;
  flex: none !important;
}

.certlink-v2-specifications .spec-grid {
  display: grid !important;
  /* Tercera columna algo más ancha (mitad del ensanche previo 1→1.75fr). */
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.675fr) minmax(0, 1.375fr) !important;
  gap: 12px 20px !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
}

.certlink-v2-specifications .spec-item {
  display: flex !important;
  flex-direction: column !important;
  /* Separación etiqueta↔valor: 2× el margen original de maqueta (2px → 4px). */
  row-gap: 4px !important;
  min-width: 0 !important;
  max-width: 100% !important;
  overflow: hidden !important;
}

.certlink-v2-specifications .spec-item.nudge-left {
  margin-left: 0 !important;
}

.certlink-v2-specifications .spec-item .spec-label {
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  /* Maqueta: --fs-md (15px). */
  font-size: var(--fs-md, 15px) !important;
  letter-spacing: var(--tracking-caps, 0.08em) !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.55) !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.2 !important;
}

.certlink-v2-specifications .spec-item .spec-value {
  /* Valores de ficha: --fs-2xl menos 2pt (ajuste UI). */
  font-size: calc(var(--fs-2xl, 24px) - 2pt) !important;
  font-weight: 500 !important;
  color: var(--al-white, #fff) !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.25 !important;
  min-width: 0 !important;
  max-width: 100% !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
}

/* Código XTRF / Industry: siempre pueden partir (evita desborde a la derecha). */
.certlink-v2-specifications .spec-item--break,
.certlink-v2-specifications .spec-item--break .spec-value,
.certlink-v2-specifications .spec-value--break,
html.certlink-portal-route body.path-projects .certlink-v2-specifications .spec-item--break .spec-value,
html.certlink-portal-route body.path-projects .certlink-v2-specifications .spec-value--break {
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  /* Códigos sin espacios (LGIL…): partir en cualquier carácter si hace falta. */
  word-break: break-all !important;
  max-width: 100% !important;
}

/* Solo en escritorio amplio: preferir una línea si cabe; si no, que corte. */
@media (min-width: 1100px) {
  .certlink-v2-specifications .spec-grid > .spec-item:nth-child(3):not(.spec-item--break) .spec-value {
    white-space: nowrap !important;
  }
}

/* Tabla de idiomas y documentos */
.certlink-v2-specifications .table-card {
  background: linear-gradient(180deg, rgba(0, 31, 54, 0.45), rgba(0, 48, 80, 0.15)) !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  border-radius: var(--radius-xl, 14px) !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
}

.certlink-v2-specifications .table-card table {
  width: 100% !important;
  border-collapse: collapse !important;
  border: none !important;
  margin: 0 !important;
  table-layout: auto !important;
  height: auto !important;
}

.certlink-v2-specifications .table-card table.certlink-v2-spec-language-table {
  --certlink-v2-spec-cert-col-width: 96px;
  table-layout: fixed !important;
}

.certlink-v2-specifications .table-card thead tr {
  background: var(--al-navy-900, #001f36) !important;
  height: auto !important;
  margin: 0 !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table thead th,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card th {
  text-align: left !important;
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  /* Maqueta: --fs-md (15px). */
  font-size: var(--fs-md, 15px) !important;
  line-height: 1.4 !important;
  letter-spacing: var(--tracking-caps, 0.08em) !important;
  text-transform: uppercase !important;
  color: var(--al-white, #fff) !important;
  padding: 10px 20px !important;
  white-space: nowrap !important;
  border: none !important;
  background: none !important;
  height: auto !important;
  vertical-align: middle !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table thead th.doc-col,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card th.doc-col {
  text-align: left !important;
  padding-left: 20px !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card th.doc-col .certlink-certificate-column-icon {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  width: 26px !important;
  height: 26px !important;
  margin: 0 !important;
  vertical-align: middle !important;
  color: var(--al-white, #fff) !important;
}

.certlink-v2-specifications .table-card th.doc-col .doc-ico svg,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card th.doc-col .certlink-certificate-column-icon__svg {
  width: 26px !important;
  height: 26px !important;
}

.certlink-v2-specifications .table-card tbody td {
  padding: 14px 20px !important;
  /* Maqueta: --fs-lg (17px). */
  font-size: var(--fs-lg, 17px) !important;
  line-height: 1.5 !important;
  color: rgba(255, 255, 255, 0.94) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
  border-top: none !important;
  border-left: none !important;
  border-right: none !important;
  vertical-align: middle !important;
  background: none !important;
  height: auto !important;
  text-align: left !important;
}

/* Cinco columnas de datos con el mismo ancho; certificado mantiene ancho fijo. */
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-source,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-target,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-translator,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-role,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-ai-model {
  width: calc((100% - var(--certlink-v2-spec-cert-col-width, 96px)) / 5) !important;
  min-width: 0 !important;
  max-width: none !important;
  text-align: left !important;
  white-space: normal !important;
  word-break: break-word !important;
  overflow-wrap: anywhere !important;
}

/* Source/Target: mismo margen izquierdo en cabecera (SOURCE) y valores (DE-DE, FR-FR, …). */
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-source,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-target {
  padding-left: 20px !important;
  padding-right: 12px !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table thead th.certlink-v2-col-source,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table thead th.certlink-v2-col-target {
  padding-top: 10px !important;
  padding-bottom: 10px !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table tbody td.certlink-v2-col-source,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table tbody td.certlink-v2-col-target {
  padding-top: 14px !important;
  padding-bottom: 14px !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-ai-model {
  line-height: 1.35 !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-link {
  width: var(--certlink-v2-spec-cert-col-width, 96px) !important;
  min-width: var(--certlink-v2-spec-cert-col-width, 96px) !important;
  max-width: var(--certlink-v2-spec-cert-col-width, 96px) !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table thead th.certlink-v2-col-ai-model {
  white-space: nowrap !important;
}

.certlink-v2-specifications .table-card tbody tr:last-child td {
  border-bottom: none !important;
}

.certlink-v2-specifications .table-card tbody tr {
  transition: background var(--dur-1) var(--ease-out) !important;
  background: none !important;
}

.certlink-v2-specifications .table-card tbody tr:hover {
  background: rgba(255, 255, 255, 0.05) !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card td.dl-cell {
  text-align: left !important;
  padding-left: 20px !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card td.dl-cell .dl-btn {
  margin: 0 !important;
  display: inline-grid !important;
}

.certlink-v2-specifications .table-card td.na {
  color: rgba(255, 255, 255, 0.6) !important;
}

.certlink-v2-specifications .table-card a.translator-link {
  color: var(--al-orange, #e09030) !important;
  font-weight: 700 !important;
  text-decoration: none !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  border-bottom: none !important;
  transition: color var(--dur-1) var(--ease-out) !important;
}

.certlink-v2-specifications .table-card a.translator-link .ext-ico {
  width: 14px !important;
  height: 14px !important;
  flex: none !important;
  opacity: 0.9 !important;
}

.certlink-v2-specifications .table-card a.translator-link:hover, 
.certlink-v2-specifications .table-card a.translator-link:focus-visible {
  color: var(--al-orange-300, #f3c483) !important;
  text-decoration: underline !important;
  text-underline-offset: 3px !important;
}

/* Fila de documentos (.docs-row) */
.certlink-v2-specifications .table-card tr.docs-row td {
  background: rgba(0, 31, 54, 0.35) !important;
  padding-top: 12px !important;
  padding-bottom: 12px !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
}

.certlink-v2-specifications .table-card tr.docs-row:last-child td {
  border-bottom: none !important;
}

.certlink-v2-specifications .docs-cell {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-start !important;
  gap: 8px !important;
}

.certlink-v2-specifications .docs-label {
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  /* Maqueta: --fs-sm (13px). */
  font-size: var(--fs-sm, 13px) !important;
  letter-spacing: var(--tracking-caps, 0.08em) !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.55) !important;
  white-space: nowrap !important;
}

.certlink-v2-specifications .docs-list {
  display: flex !important;
  align-items: center !important;
  gap: 8px 16px !important;
  flex-wrap: wrap !important;
}

.certlink-v2-specifications .doc-chip {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  background: transparent !important;
  border: 0 !important;
  padding: 2px 0 !important;
  font-family: var(--font-mono) !important;
  /* Maqueta: --fs-sm (13px). */
  font-size: var(--fs-sm, 13px) !important;
  color: rgba(255, 255, 255, 0.62) !important;
  text-decoration: none !important;
  transition: color var(--dur-1) var(--ease-out) !important;
}

.certlink-v2-specifications .doc-chip svg {
  width: 12px !important;
  height: 12px !important;
  color: rgba(255, 255, 255, 0.4) !important;
  flex: none !important;
  transition: color var(--dur-1) var(--ease-out) !important;
}

.certlink-v2-specifications .doc-chip:hover {
  color: var(--al-white, #fff) !important;
}

.certlink-v2-specifications .doc-chip:hover svg {
  color: var(--al-orange-300, #f3c483) !important;
}

/* Botón de descarga de la columna Certificate */
.certlink-v2-specifications .dl-btn {
  width: 32px !important;
  height: 32px !important;
  display: inline-grid !important;
  place-items: center !important;
  background: var(--al-white, #fff) !important;
  border: 1px solid var(--border-1, #d9dee4) !important;
  border-radius: var(--radius-md, 6px) !important;
  cursor: pointer !important;
  padding: 0 !important;
  transition: transform var(--dur-1) var(--ease-out), box-shadow var(--dur-1) var(--ease-out) !important;
}

.certlink-v2-specifications .dl-btn svg {
  width: 16px !important;
  height: 16px !important;
  color: var(--al-navy, #003050) !important;
  fill: none !important;
}

/* Misma animación que certlink-download-btn (anillo naranja, sin texto azul claro). */
.certlink-v2-specifications .dl-btn:hover,
.certlink-v2-specifications .dl-btn:focus,
.certlink-v2-specifications .dl-btn:focus-visible {
  color: var(--al-navy, #003050) !important;
  background: var(--al-white, #ffffff) !important;
  background-color: var(--al-white, #ffffff) !important;
  border: 1px solid var(--al-gray-200, #d4dde6) !important;
  transform: none !important;
  filter: none !important;
  text-shadow: none !important;
  box-shadow: var(--shadow-focus, 0 0 0 3px rgba(224, 144, 48, 0.35)) !important;
  text-decoration: none !important;
  outline: none !important;
}

.certlink-v2-specifications .dl-btn:hover svg,
.certlink-v2-specifications .dl-btn:focus svg,
.certlink-v2-specifications .dl-btn:focus-visible svg {
  color: var(--al-navy, #003050) !important;
}

.certlink-v2-specifications .dl-btn:active {
  transform: translateY(1px) !important;
}

/* Media Queries para Responsive — Project specifications / share móvil */

@media (max-width: 960px) {
  .certlink-v2-specifications .spec-grid,
  html.certlink-portal-route body.path-projects .certlink-v2-specifications .spec-grid {
    grid-template-columns: 1fr !important;
    gap: 14px !important;
  }

  .certlink-v2-specifications .spec-grid > .spec-item:nth-child(3) .spec-value,
  .certlink-v2-specifications .spec-item--break .spec-value,
  .certlink-v2-specifications .spec-value--break {
    white-space: normal !important;
    word-break: break-all !important;
    overflow-wrap: anywhere !important;
  }
}

@media (max-width: 768px) {
  .certlink-project-details-page .shell,
  .certlink-share-specs-page .shell {
    padding: 16px 14px 22px !important;
    border-radius: 16px !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
  }

  .certlink-project-details-page .certlink-v2-panel,
  .certlink-share-specs-page .certlink-v2-panel {
    padding: 12px 10px 16px !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
  }

  .certlink-v2-specifications,
  .certlink-v2-linguist-profile {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    overflow-x: hidden !important;
  }

  .certlink-v2-specifications .spec-card {
    padding: 16px 14px !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    overflow-x: hidden !important;
  }

  .certlink-v2-specifications .spec-grid {
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }

  .certlink-v2-specifications .spec-item {
    min-width: 0 !important;
    max-width: 100% !important;
  }

  .certlink-v2-specifications .spec-item .spec-label,
  .certlink-v2-specifications .spec-item .spec-value {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: break-word !important;
    max-width: 100% !important;
  }

  .certlink-v2-specifications .spec-grid > .spec-item:nth-child(3) .spec-value {
    white-space: normal !important;
  }

  .certlink-v2-specifications .table-card {
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -webkit-overflow-scrolling: touch;
  }

  .certlink-v2-specifications .table-card .certlink-portal-grid-wrap,
  .certlink-v2-specifications .table-card .table-wrap {
    max-width: 100% !important;
    overflow-x: auto !important;
  }

  /* Anula min-width: 900px de .certlink-custom-page table en specs móvil. */
  .certlink-project-details-page .certlink-v2-specifications .table-card table,
  .certlink-share-specs-page .certlink-v2-specifications .table-card table,
  .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table {
    min-width: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    table-layout: fixed !important;
  }

  html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table thead th,
  html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table tbody td,
  .certlink-v2-specifications .table-card thead th,
  .certlink-v2-specifications .table-card tbody td {
    white-space: normal !important;
    word-break: break-word !important;
    overflow-wrap: anywhere !important;
    max-width: 100% !important;
    padding: 10px 8px !important;
    font-size: 13px !important;
    line-height: 1.35 !important;
  }

  html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-source,
  html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-target {
    padding-left: 8px !important;
    padding-right: 6px !important;
  }

  html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table .certlink-v2-col-link {
    width: 44px !important;
    min-width: 44px !important;
    max-width: 52px !important;
    padding-left: 4px !important;
    padding-right: 4px !important;
  }

  .certlink-v2-linguist-profile .detail-card {
    overflow-x: auto !important;
  }

  .certlink-v2-linguist-profile .detail-card th.field-label {
    white-space: normal !important;
  }

  .certlink-v2-linguist-profile .detail-card td.field-value {
    white-space: normal !important;
    word-break: break-word !important;
    overflow-wrap: anywhere !important;
    line-height: 1.45 !important;
  }
}

@media (max-width: 480px) {
  .certlink-project-details-page .shell,
  .certlink-share-specs-page .shell {
    padding: 12px 10px 18px !important;
  }

  .certlink-v2-specifications .spec-card {
    padding: 14px 12px !important;
  }

  .certlink-v2-specifications .spec-item .spec-value {
    font-size: 16px !important;
    line-height: 1.3 !important;
  }

  html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table thead th,
  html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table tbody td,
  .certlink-v2-specifications .table-card thead th,
  .certlink-v2-specifications .table-card tbody td {
    padding: 8px 6px !important;
    font-size: 12px !important;
  }
}

/* Centrado vertical y horizontal de la columna de certificado y descarga en Project Specifications */
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table thead th.certlink-v2-col-link,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table tbody td.certlink-v2-col-link {
  text-align: center !important;
  padding-left: 10px !important;
  padding-right: 10px !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table thead th.certlink-v2-col-link .certlink-certificate-column-icon {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 auto !important;
  width: 26px !important;
  height: 26px !important;
  vertical-align: middle !important;
  color: var(--al-white, #fff) !important;
}

html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table tbody td.certlink-v2-col-link .dl-btn,
html.certlink-portal-route body.certlink-portal-route .certlink-v2-specifications .table-card table.certlink-v2-spec-language-table tbody td.certlink-v2-col-link .certlink-cert-status-btn {
  margin: 0 auto !important;
  display: inline-grid !important;
  place-items: center !important;
  float: none !important;
}





