/* COPIA del sistema de diseño de MarcaCheck (nuevo-frontend/demo/assets/css/marca.css, 11/10/2026: el héroe entra sin esperar al JS).
   No se edita acá: los cambios los hace el diseñador y se vuelven a copiar.
   Único cambio: las fuentes se sirven desde nuestro dominio (/fuentes/) en vez de Google Fonts. */
/* ==========================================================================
   MarcaCheck · Sistema de diseño "Vigilancia serena"
   Tokens + base + componentes compartidos por landing, alta y app.
   Los colores son los de la marca actual, sin cambios: solo se ordenan
   en una escala y se fija un único valor por rol.
   ========================================================================== */

@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url('/fuentes/inter-v1.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:600 800;font-display:swap;src:url('/fuentes/plus-jakarta-sans-v1.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500 600;font-display:swap;src:url('/fuentes/jetbrains-mono-v1.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}

:root {
  /* --- Color: tinta (azul marino) --- */
  --tinta-950: #071A2D;
  --tinta-900: #0E2A47;
  --tinta-800: #173F63;
  --tinta-700: #24506F;
  --tinta-200: #C8D7E4;

  /* --- Color: acento (verde azulado) --- */
  --acento-600: #08766C;   /* texto y bordes sobre claro (AA) */
  --acento-500: #0E9A8D;   /* rellenos: botones, barras, puntos */
  --acento-100: #E4F7F5;

  /* --- Color: neutros --- */
  --fondo: #F5F7FA;
  --superficie: #FFFFFF;
  --sutil: #EEF2F7;
  --borde: #E3E8EF;
  --texto: #0E2A47;
  --texto-2: #64748B;

  /* --- Color: semánticos (riesgo) --- */
  --alto: #D85B48;   --alto-100: #FBEEEB;
  --medio: #B8862F;  --medio-100: #F9F2E4;
  --bajo: #173F63;   --bajo-100: #EAF0F6;
  /* Tonos de TEXTO sobre los fondos de riesgo: única derivación nueva, para
     llegar a contraste AA (el rojo y el ámbar de marca sobre su fondo suave
     dan 3,3:1). Para volver al color original, igualarlos a --alto y --medio. */
  --alto-texto: #B5432F;
  --medio-texto: #8E6520;

  /* --- Color: isotipo (solo en el logo) --- */
  --iso-azul: #015AF9;

  /* --- Tipografía --- */
  --f-display: "Plus Jakarta Sans", "Segoe UI", system-ui, sans-serif;
  --f-texto: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
  --f-mono: "JetBrains Mono", "Cascadia Mono", "SFMono-Regular", Consolas, monospace;

  --t-11: 11px; --t-12: 12px; --t-13: 13px; --t-14: 14px; --t-16: 16px;
  --t-18: 18px; --t-20: 20px; --t-24: 24px; --t-30: 30px; --t-38: 38px;
  --t-48: 48px; --t-60: 60px;

  /* --- Espaciado (base 4) --- */
  --e-1: 4px; --e-2: 8px; --e-3: 12px; --e-4: 16px; --e-5: 20px; --e-6: 24px;
  --e-8: 32px; --e-10: 40px; --e-12: 48px; --e-16: 64px; --e-20: 80px; --e-24: 96px;

  /* --- Radios --- */
  --r-xs: 6px;    /* chips, insignias */
  --r-sm: 10px;   /* botones, campos */
  --r-md: 14px;   /* tarjetas */
  --r-lg: 20px;   /* paneles, modales */
  --r-full: 999px;

  /* --- Elevación (sombras teñidas de tinta, nunca negras) --- */
  --s-1: 0 1px 2px rgba(14, 42, 71, .05);
  --s-2: 0 1px 2px rgba(14, 42, 71, .05), 0 4px 14px rgba(14, 42, 71, .06);
  --s-3: 0 2px 4px rgba(14, 42, 71, .05), 0 12px 32px rgba(14, 42, 71, .10);
  --s-4: 0 8px 16px rgba(14, 42, 71, .08), 0 28px 64px rgba(14, 42, 71, .16);
  --anillo: 0 0 0 3px rgba(14, 154, 141, .28);

  /* --- Movimiento --- */
  --ease-salida: cubic-bezier(.22, 1, .36, 1);
  --ease-entrada: cubic-bezier(.64, 0, .78, 0);
  --ease-suave: cubic-bezier(.4, 0, .2, 1);
  --d-rapida: 140ms;
  --d-media: 240ms;
  --d-lenta: 420ms;

  --ancho-max: 1200px;
}

/* ===================== base ===================== */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  font-family: var(--f-texto);
  font-size: var(--t-14);
  line-height: 1.55;
  color: var(--texto);
  background: var(--fondo);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-feature-settings: "cv11", "ss01";
}
img, svg { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; color: inherit; }
a { color: var(--acento-600); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
::selection { background: var(--acento-100); color: var(--tinta-950); }
:focus-visible { outline: none; box-shadow: var(--anillo); border-radius: var(--r-xs); }

h1, h2, h3, h4 { font-family: var(--f-display); letter-spacing: -.01em; line-height: 1.15; font-weight: 700; color: var(--tinta-900); }
h1, h2 { letter-spacing: -.02em; word-spacing: .06em; }
h3, h4 { word-spacing: .04em; }
.num { font-variant-numeric: tabular-nums; }
.mono { font-family: var(--f-mono); }
.rotulo {
  font-family: var(--f-mono); font-size: var(--t-11); font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase; color: var(--acento-600);
}
.texto-2 { color: var(--texto-2); }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ===================== logo ===================== */
.logo { display: inline-flex; align-items: center; gap: 10px; color: var(--tinta-900); text-decoration: none !important; }
.logo img { width: 28px; height: auto; }
.logo b { font-family: var(--f-display); font-weight: 700; font-size: 19px; letter-spacing: -.02em; }
.logo b span { color: var(--acento-500); }
.logo.claro { color: #fff; }
.logo.claro img { background: #fff; border-radius: 9px; padding: 4px 5px; width: 34px; box-shadow: 0 2px 8px rgba(0,0,0,.25); }

/* ===================== botones ===================== */
.btn {
  --alto-btn: 40px;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: var(--alto-btn); padding: 0 16px; border-radius: var(--r-sm);
  font-size: var(--t-14); font-weight: 600; line-height: 1; white-space: nowrap;
  border: 1px solid transparent; background: none; cursor: pointer; text-decoration: none !important;
  transition: background var(--d-rapida) var(--ease-suave), border-color var(--d-rapida), color var(--d-rapida),
              transform var(--d-rapida) var(--ease-salida), box-shadow var(--d-media) var(--ease-salida);
  user-select: none;
}
.btn svg { width: 16px; height: 16px; flex: none; }
.btn:active:not(:disabled) { transform: translateY(1px) scale(.99); }
.btn:disabled { opacity: .45; cursor: not-allowed; }
/* letra blanca sobre el verde oscuro (Marco, 13/10/2026): la tinta sobre el verde medio se leía azul sobre azul */
.btn-primario { background: var(--acento-600); color: #fff; box-shadow: 0 1px 0 rgba(255,255,255,.25) inset, 0 1px 2px rgba(8,118,108,.25); }
.btn-primario:hover:not(:disabled) { background: #06655C; box-shadow: 0 1px 0 rgba(255,255,255,.25) inset, 0 6px 18px rgba(14,154,141,.28); }
.btn-tinta { background: var(--tinta-900); color: #fff; }
.btn-tinta:hover:not(:disabled) { background: var(--tinta-800); }
.btn-secundario { background: var(--superficie); border-color: var(--borde); color: var(--tinta-900); box-shadow: var(--s-1); }
.btn-secundario:hover:not(:disabled) { border-color: #CBD5E1; background: #FBFCFD; }
.btn-fantasma { color: var(--texto-2); }
.btn-fantasma:hover:not(:disabled) { background: var(--sutil); color: var(--tinta-900); }
.btn-peligro { background: var(--alto-100); color: var(--alto-texto); }
.btn-peligro:hover:not(:disabled) { background: #F7DFD9; }
.btn-chico { --alto-btn: 32px; padding: 0 12px; font-size: var(--t-13); border-radius: 8px; }
.btn-grande { --alto-btn: 48px; padding: 0 22px; font-size: var(--t-16); border-radius: 12px; }
.btn-bloque { width: 100%; }
.btn-icono { width: var(--alto-btn); padding: 0; }

/* ===================== campos ===================== */
.campo { display: grid; gap: 6px; }
.campo > label, .etiqueta { font-size: var(--t-13); font-weight: 600; color: var(--tinta-900); }
.campo .ayuda { font-size: var(--t-12); color: var(--texto-2); }
.entrada, select.entrada, textarea.entrada {
  width: 100%; height: 42px; padding: 0 14px; border-radius: var(--r-sm);
  border: 1px solid var(--borde); background: var(--superficie); font-size: var(--t-14);
  transition: border-color var(--d-rapida), box-shadow var(--d-media) var(--ease-salida);
}
textarea.entrada { height: auto; min-height: 96px; padding: 12px 14px; resize: vertical; line-height: 1.5; }
select.entrada {
  appearance: none; padding-right: 36px; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%2364748B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center;
}
.entrada::placeholder { color: #94A3B8; }
.entrada:hover { border-color: #CBD5E1; }
.entrada:focus { outline: none; border-color: var(--acento-500); box-shadow: var(--anillo); }
.entrada.error { border-color: var(--alto); box-shadow: 0 0 0 3px rgba(216,91,72,.15); }
.con-icono { position: relative; }
.con-icono > svg { position: absolute; left: 13px; top: 50%; translate: 0 -50%; width: 16px; height: 16px; color: var(--texto-2); pointer-events: none; }
.con-icono > .entrada { padding-left: 38px; }
.con-icono kbd { position: absolute; right: 10px; top: 50%; translate: 0 -50%; }
kbd {
  font-family: var(--f-mono); font-size: 11px; padding: 2px 6px; border-radius: 5px;
  border: 1px solid var(--borde); border-bottom-width: 2px; background: var(--superficie); color: var(--texto-2);
}
.check { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-size: var(--t-14); }
.check input { accent-color: var(--acento-500); width: 16px; height: 16px; }

/* control segmentado (Mensual / Anual, pestañas compactas) */
.segmentado {
  position: relative; display: inline-grid; grid-auto-flow: column; grid-auto-columns: 1fr;
  padding: 4px; border-radius: 12px; background: var(--sutil); border: 1px solid var(--borde);
}
.segmentado button {
  position: relative; z-index: 1; height: 34px; padding: 0 16px; border: 0; background: none; cursor: pointer;
  border-radius: 9px; font-size: var(--t-13); font-weight: 600; color: var(--texto-2); white-space: nowrap;
  transition: color var(--d-media);
}
.segmentado button[aria-pressed="true"] { color: var(--tinta-900); }
.segmentado .pastilla {
  position: absolute; z-index: 0; top: 4px; bottom: 4px; left: 4px; border-radius: 9px;
  background: var(--superficie); box-shadow: var(--s-2);
  transition: transform var(--d-media) var(--ease-salida), width var(--d-media) var(--ease-salida);
}

/* ===================== superficies ===================== */
.tarjeta {
  background: var(--superficie); border: 1px solid var(--borde); border-radius: var(--r-md);
  box-shadow: var(--s-1);
}
.tarjeta-pad { padding: var(--e-6); }
.tarjeta.interactiva { transition: box-shadow var(--d-media) var(--ease-salida), border-color var(--d-media), transform var(--d-media) var(--ease-salida); }
.tarjeta.interactiva:hover { box-shadow: var(--s-3); border-color: #D5DDE7; transform: translateY(-1px); }
.separador { height: 1px; background: var(--borde); border: 0; }

/* ===================== insignias ===================== */
.insignia {
  display: inline-flex; align-items: center; gap: 6px; height: 22px; padding: 0 8px; border-radius: var(--r-xs);
  font-size: var(--t-11); font-weight: 600; line-height: 1; white-space: nowrap;
  background: var(--sutil); color: var(--texto-2);
}
.insignia .punto { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.insignia.alto { background: var(--alto-100); color: var(--alto-texto); }
.insignia.medio { background: var(--medio-100); color: var(--medio-texto); }
.insignia.bajo { background: var(--bajo-100); color: var(--bajo); }
.insignia.ok { background: var(--acento-100); color: var(--acento-600); }
.insignia.tinta { background: var(--tinta-900); color: #fff; }
.insignia.borde { background: var(--superficie); border: 1px solid var(--borde); }
.insignia.mono { font-family: var(--f-mono); letter-spacing: .06em; text-transform: uppercase; font-size: 10.5px; }

/* punto "en vivo" */
.vivo { position: relative; width: 8px; height: 8px; border-radius: 50%; background: var(--acento-500); flex: none; }
.vivo::after {
  content: ""; position: absolute; inset: 0; border-radius: 50%; background: var(--acento-500);
  animation: latido 2s var(--ease-salida) infinite;
}
@keyframes latido { 0% { transform: scale(1); opacity: .55; } 80%, 100% { transform: scale(2.8); opacity: 0; } }

/* ===================== avisos (toasts) ===================== */
.avisos { position: fixed; z-index: 90; right: 24px; bottom: 24px; display: grid; gap: 8px; width: min(360px, calc(100vw - 32px)); }
.aviso {
  display: flex; align-items: flex-start; gap: 10px; padding: 12px 14px; border-radius: 12px;
  background: var(--tinta-950); color: #fff; box-shadow: var(--s-4); font-size: var(--t-13);
  animation: avisoEntra var(--d-lenta) var(--ease-salida) both;
}
.aviso svg { width: 18px; height: 18px; color: var(--acento-500); flex: none; margin-top: 1px; }
.aviso .deshacer { margin-left: auto; color: #7FE0D5; font-weight: 600; background: none; border: 0; cursor: pointer; }
.aviso.sale { animation: avisoSale var(--d-media) var(--ease-entrada) both; }
@keyframes avisoEntra { from { opacity: 0; transform: translateY(12px) scale(.98); } }
@keyframes avisoSale { to { opacity: 0; transform: translateY(6px) scale(.98); } }

/* ===================== esqueletos y botones ocupados ===================== */
.esqueleto { position: relative; overflow: hidden; background: #E9EEF4; border-radius: 8px; }
.esqueleto::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient(100deg, transparent 20%, rgba(255,255,255,.75) 45%, rgba(228,247,245,.9) 52%, transparent 75%); animation: barrido 1.5s cubic-bezier(.4, 0, .2, 1) infinite; }
@keyframes girar { to { transform: rotate(360deg); } }
/* 2. Esqueletos con brillo diagonal teñido de acento, escalonados */
.esq { position: relative; overflow: hidden; background: #E9EEF4; border-radius: 8px; }
.esq::after {
  content: ""; position: absolute; inset: 0; transform: translateX(-100%);
  background: linear-gradient(100deg, transparent 20%, rgba(255,255,255,.75) 45%, rgba(228,247,245,.9) 52%, transparent 75%);
  animation: barrido 1.5s cubic-bezier(.4, 0, .2, 1) infinite; animation-delay: var(--r, 0ms);
}
@keyframes barrido { to { transform: translateX(100%); } }
.esq.osc { background: #DCE3EB; }
.esq.circ { border-radius: 50%; }
.esq-tarjeta { background: var(--superficie); border: 1px solid var(--borde); border-radius: var(--r-md); padding: 20px; display: grid; gap: 12px; animation: aparece var(--d-lenta) var(--ease-salida) both; animation-delay: var(--r, 0ms); }
.esq-fila { display: flex; align-items: center; gap: 12px; }
.esq-respira { animation: respira 1.8s ease-in-out infinite; }
@keyframes respira { 50% { opacity: .55; } }
.esqueleto-vista { display: grid; gap: 16px; }
.esqueleto-vista .cab-esq { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; margin-bottom: 12px; }

/* 7. Botones ocupados: el texto se apaga y aparece un anillo que gira */
.btn.ocupado { position: relative; color: transparent !important; pointer-events: none; }
.btn.ocupado > * { opacity: 0; }
.btn.ocupado::after {
  content: ""; position: absolute; inset: 0; margin: auto; width: 16px; height: 16px; border-radius: 50%;
  border: 2px solid currentColor; border-color: var(--anillo-c, var(--tinta-900)) transparent var(--anillo-c, var(--tinta-900)) transparent; opacity: .85;
  animation: girar .7s linear infinite;
}
.btn-primario.ocupado { --anillo-c: #fff; }
.btn-tinta.ocupado { --anillo-c: #fff; }
.btn.listo-ok { background: var(--acento-100) !important; color: var(--acento-600) !important; border-color: transparent !important; }


/* ===================== revelado al hacer scroll ===================== */
.revela { opacity: 0; transform: translateY(14px); transition: opacity .6s var(--ease-salida), transform .6s var(--ease-salida); transition-delay: var(--retraso, 0ms); }
.revela.visible { opacity: 1; transform: none; }

/* Héroe: entra solo con CSS, sin esperar al JS. Título y bajada no tocan la
   opacidad: se pintan en el primer cuadro y cuentan para el LCP. */
.entra { animation: entra .55s var(--ease-salida) backwards; animation-delay: var(--retraso, 0ms); }
.entra-texto { animation: entra-texto .45s var(--ease-salida) backwards; animation-delay: var(--retraso, 0ms); }
@keyframes entra { from { opacity: 0; transform: translateY(12px); } }
@keyframes entra-texto { from { transform: translateY(6px); } }

/* ===================== acordeón ===================== */
.acordeon { border-top: 1px solid var(--borde); }
.acordeon details { border-bottom: 1px solid var(--borde); }
.acordeon summary {
  list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 20px 4px; cursor: pointer; font-weight: 600; font-size: var(--t-16); color: var(--tinta-900);
}
.acordeon summary::-webkit-details-marker { display: none; }
.acordeon summary .mas { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: var(--sutil); flex: none; transition: transform var(--d-media) var(--ease-salida), background var(--d-rapida); }
.acordeon summary .mas svg { width: 14px; height: 14px; }
.acordeon details[open] summary .mas { transform: rotate(45deg); background: var(--acento-100); color: var(--acento-600); }
.acordeon .respuesta { padding: 0 4px 22px; color: var(--texto-2); max-width: 720px; }
.acordeon details[open] .respuesta { animation: aparece var(--d-media) var(--ease-salida); }

@keyframes aparece { from { opacity: 0; transform: translateY(6px); } }

/* ===================== preferencias de movimiento ===================== */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; scroll-behavior: auto !important; }
  .revela { opacity: 1; transform: none; }
}

/* ===================== miniatura de marca ===================== */
.mini-logo {
  width: var(--t, 40px); height: var(--t, 40px); border-radius: calc(var(--t, 40px) * .26); flex: none;
  display: inline-grid; place-items: center; font-family: var(--f-display); font-weight: 700;
  font-size: calc(var(--t, 40px) * .34); letter-spacing: .02em; box-shadow: inset 0 0 0 1px rgba(14,42,71,.08);
}
.mini-logo.sin-logo { background: var(--sutil); color: var(--texto-2); }

/* marca sin logo: rótulo neutro, nunca algo que parezca un logo */
.mini-logo.sin-logo-marca {
  background: var(--fondo); color: var(--texto-2); box-shadow: none; border: 1px dashed #CBD5E1;
  font-family: var(--f-texto); font-weight: 600; font-size: clamp(9.5px, calc(var(--t) * .2), 13px); line-height: 1.15;
  letter-spacing: 0; text-align: center; text-transform: none;
}
.mini-logo.sin-logo-marca.chica svg { width: 55%; height: 55%; stroke-width: 1.75; }
