/* Capa de marca Grovex para el panel del CRM (v12).
   Valores tomados del Panel de Gro (grovex.cl/panel, bundle.css) para que el
   CRM se vea igual. Se carga encima del diseño oficial (nginx la inyecta en
   index.html), así que sobrevive a las actualizaciones: no toca el código del
   panel, solo reescribe sus variables y unos pocos componentes.

   Especificidad: `html:root:root` (0,2,1) le gana al `html:root` (0,1,1) que
   escribe Apariencia en runtime, sin depender del orden de carga. */

@import url("https://fonts.googleapis.com/css2?family=Sora:wght@400;500;600;700;800&display=swap");

/* ---------- Tema claro ---------- */
html:root:root {
  /* Texto: la letra del sistema, como el Panel de Gro. Títulos: Sora. */
  --font-sans: ui-sans-serif, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial;
  --font-display-grovex: "Sora", ui-sans-serif, system-ui, sans-serif;

  --paper-rgb: 248 250 252;      /* --bg   #F8FAFC */
  --paper-2-rgb: 243 246 249;    /* --soft #F3F6F9 */
  --paper-3-rgb: 230 235 240;    /* --line #E6EBF0 (hover) */
  --card-rgb: 255 255 255;       /* --card */

  --ink-rgb: 10 18 64;           /* --ink   #0A1240 */
  --ink-2-rgb: 45 53 92;
  --ink-3-rgb: 79 88 120;        /* --slate #4F5878 */
  --ink-4-rgb: 90 99 128;

  --brand-rgb: 106 243 205;      /* --mint #6AF3CD */
  --brand-600-rgb: 141 247 218;  /* mint hover #8DF7DA */
  --brand-700-rgb: 79 224 184;
  --brand-on-rgb: 10 18 64;      /* texto navy sobre menta */
  --brand-ink-rgb: 11 107 82;    /* --ok #0B6B52: verde legible sobre blanco */
  --brand-soft: #e3fbf2;         /* --ok-bg */

  --line: #e6ebf0;               /* --line  */
  --line-2: #eef2f5;

  --shadow-coro-1: 0 1px 2px rgba(10, 18, 64, 0.04), 0 1px 1px rgba(10, 18, 64, 0.03);  /* --sh  */
  --shadow-coro-2: 0 12px 32px -14px rgba(10, 18, 64, 0.28);                           /* --sh2 */
  --shadow-coro-3: 0 30px 80px -20px rgba(10, 18, 64, 0.5);

  --grovex-navy: #0a1240;
  --grovex-blue: #15276e;
  --grovex-mint: #6af3cd;
  --grovex-line2: #d3dce3;       /* --line2: bordes de botones y campos */
  --grovex-focus: #0e8a69;       /* --focus */
}

/* ---------- Siempre en modo claro ----------
   El panel sigue poniendo la clase `dark` si alguien elige el modo oscuro o su
   equipo lo pide, pero aquí no se redefine nada para ella: las variables del
   tema claro (`html:root:root`, más específicas que `.dark`) mandan siempre.
   El cuerpo queda blanco y el menú lateral navy en cualquier caso. */
html:root.dark { color-scheme: light; }

html:root body { font-size: 14.5px; }

/* ---------- Menú lateral (.side del Panel de Gro) ----------
   Se redefinen las variables solo dentro del <aside>: todo lo que hay dentro
   (texto, hover, activo, menú de usuario) se adapta solo. */
html:root #root > div > aside.border-r {
  --paper-2-rgb: 10 18 64;
  --paper-3-rgb: 26 34 80;       /* hover: blanco al 6 % sobre navy */
  --card-rgb: 21 39 110;
  --ink-rgb: 255 255 255;
  --ink-2-rgb: 207 210 221;      /* blanco al 74 % sobre navy */
  --ink-3-rgb: 160 164 184;      /* blanco al 50-62 % */
  --ink-4-rgb: 160 164 184;
  --brand-ink-rgb: 106 243 205;
  --line: rgba(255, 255, 255, 0.07);
  --line-2: rgba(255, 255, 255, 0.07);
  --grovex-focus: #6af3cd;
  background-color: #0a1240;
  background-image: none;
  border-right-color: rgba(255, 255, 255, 0.06);
  color-scheme: dark;
}
html:root #root > div > aside.border-r nav a {
  position: relative;
  border-radius: 10px;
}
/* Ítem activo: fondo azul de marca, texto blanco, ícono y barra menta. */
html:root #root > div > aside.border-r a.bg-brand\/15 {
  background-color: #15276e;
  color: #ffffff;
  font-weight: 500;
}
html:root #root > div > aside.border-r a.bg-brand\/15 svg { color: #6af3cd; }
html:root #root > div > aside.border-r a.bg-brand\/15::before {
  content: "";
  position: absolute;
  left: -8px;
  top: 9px;
  bottom: 9px;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: #6af3cd;
}

/* ---------- Tipografía ---------- */
html:root .font-display,
html:root .h-display,
html:root h1,
html:root h2,
html:root h3 {
  font-family: var(--font-display-grovex);
  letter-spacing: -0.02em;
  text-wrap: balance;
}
html:root h1 { letter-spacing: -0.03em; }
html:root .h-display { font-weight: 600; }

/* ---------- Botones (.btn del Panel de Gro) ---------- */
html:root .btn,
html:root .btn-primary,
html:root .btn-ghost,
html:root .btn-danger {
  border-radius: 10px;
  font-weight: 600;
  min-height: 38px;
}
html:root .btn { border-color: var(--grovex-line2); }
html:root .btn:hover { border-color: rgb(var(--ink-3-rgb)); background-color: rgb(var(--card-rgb)); }
html:root .btn:active,
html:root .btn-primary:active { transform: scale(0.97); }
html:root .btn-primary {
  background-color: #0a1240;
  border-color: #0a1240;
  color: #ffffff;
}
html:root .btn-primary:hover { background-color: #15276e; border-color: #15276e; }
html:root .btn-sm { min-height: 34px; border-radius: 9px; }

/* ---------- Campos (.in del Panel de Gro) ---------- */
html:root .input,
html:root .textarea {
  border-color: var(--grovex-line2);
  border-radius: 10px;
}
html:root .input:focus,
html:root .textarea:focus {
  border-color: var(--grovex-focus);
  box-shadow: 0 0 0 3px rgba(14, 138, 105, 0.22);
}

/* ---------- Tarjetas y radios ---------- */
html:root .rounded-coro { border-radius: 16px; }      /* --r */
html:root .rounded-coro-sm { border-radius: 10px; }
html:root .card { border-color: var(--line); box-shadow: var(--shadow-coro-1); }

/* ---------- Foco visible ---------- */
html:root :focus-visible {
  outline: 2px solid var(--grovex-focus);
  outline-offset: 2px;
}

/* ---------- Logo en lugar del nombre ----------
   El panel dibuja el logotipo de Apariencia en una caja cuadrada y el nombre
   al lado. Aquí se cambia por el logotipo horizontal y el nombre por el chip
   "CRM". Dos versiones: letras navy (fondos claros) y blancas (oscuros). */
html:root:root {
  --grovex-logo-claro: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAABnCAMAAAAZgeTrAAABgFBMVEUAAAAVJ29q88wAAH4AAFUUJm4UJm0UJm0SKG4UJm4AAP8A//9+//4UJm0BPHkUJm4AVVVq88xp8sz///9o8sxp8sxp8sxp8sx//39q+NBV/6to68sVHG0AVaoA/wBn7cpVqqoAAKpn7sp/f38AAD8ZHV4Af38nJ3YGK1db6M0A/39a2dVa/9V/f/9o5rl6/7w/v79V//8APz8qKlU/P38//792urpmzMx0/+A/AD8///9f379f779t2rZt2tpn78xp78mqqqqq/6oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLOhSRAAAAgHRSTlMA/P0CA0+RMRPQAQECcASwA8+PAS+uUHECEgMSDAMBKgMDTQIECQIGBwsCCQkCDAUEAwQGBAQFBf8EBAgQBwdghQMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK/ZKh8AABBNSURBVHja7V0Hk9u2EsYdKfYiNolqpyu+c0ns9OT19v9/1ANYF8CCBCXdeWJxJ5OxLXIJ4sP2BUjITH9a8rOgDLKA/VcGZebfzVPyFSn44XdfBOinMpsn5mtIBhWK6g+bPH9crSmtVo/55mMNVODPM/S2cJQ1Fuu0SG4BJUm6XuXst/tynqW3Q4Ou/y0Fg8MCULHOA3rZdhaTt9FVhNzlSjBaUVkzOZk11xvYcaqpVsWtBhWrXXX5TK8Lx5d1cqtJxWrbWJuZXkldEbLShqOChCqu7TxvryceeXE7kdIdjR3nuXsNuief17fTKVmxW2d6BXU1XTwavbUjsyF5BWd3dXsqJUcyxyQXxiMj69sziKqtOet4QSrJ5/T2LFr/9Gk27RfEY3MmHtTb+o7MWuti5vxLcXs2pZvZ/b0QHuV2CI+C5XePOaOVmPzlESmzWUYuEw8q9VWSrvLvuYs/71bKvGN6TmZrGRn1H6L2D5SMlsCFXvtvXntRFKmYmtGByFyJzN9QjssQHwd/6568jMyJ7D3lb1uVf0XR2NUmZnsfUKr+z/7+j5UCwfWpaRSzGlXkOM4e/F3v1urt9o78xjUT49lxmnkzzEuu42aM7+mgL8peFX8k6w3DIhCL6H5VSMxThfd7ioywF3EWVhy7lGIrtBk41SvaLYH5Bv/mEbZs7dCK3dgh/BKOKqbsJ8aUcTVb+Drad7xs1djgJZ4wZsNu2LNBLxyBvUec/t5fBfmCP/JrKfM3ChOtLtRmTFCOGCRJTj5NhYMutGgR30ByQ6dagY7b/suCLNs3sdp/s4hpkuWivsblAXnH0OCZ0htspingpHT8XUexVBbd3SGJ4JjJwnJ59vHiGULiEfsG3MwvBe9Dd3PMKdy7gBSKJG7pDweSaF642E1tgaDvthDerILkF/qLczMMSETsuJ9RDzJ1QpkpmzM4ZVHPi5tuyKcH1ebEQ0K7GgTH/oWE/U8OZytM8JNNDC4CWePiEYzNa0mDlwIz7NlEPGzs1ejL0QkYAcQD6xcCgmPcQGLD6/o1HBMPHVwvXv0FnmrMFXtgtvcu4G/ifENygAakzPE8iE76dkt+X59rRqBOECkclRBwLwCEiod1czPAFjy+nzEHQcQAT1h0Mzo0ZsbewOYd3M84dAN0TW/U4z2SQC8vRc2F5BD8pbifkNUyht9tBBD7BgMEmh6UrIf+0lCp5QWNRfkb8k0oeyiCFhhgp7Qgonb7Yg0ejxgeP+nOaCYzSPIJ8frwWqPvNmjUYxcDZBSPyhvosMN1CqaxDq27EOqypxyA0rI60TEit18GEI+s3Mh2+ZH8b4LKEYOY9Ms0+3GjSRggvMlpAPG8UTyANJic0RaDn4gzvXrywQsbpwHadwAW3Y0EhbVG8PjbxDJKyhcP9UtVhiHMXWwtqFtOA5IzADEM7m43DinPheiitgpdbV1raYh7+WkR5NaQa9kOI5vnD+1NPxz3fYO4rVgEmb9Lzs9+fNoVoLz+5E8REEt0SdvYz5oECI37Ymsv+ZOVFWpZClGJTZ3Sip5dcc6HfCHvBa4hd9G7yhHn1zlet/IdUXKAYbJ4odzKJjnZTe7qCUiedOIRTFJYC8GFJ1GV21nSUdquJiBsjUKuDlTmNFCLTMbSZDMHHxc3U4FpJSxYaEw6p7Ash43YqxxcOrq/WtCMPCBMKoEAdpPaeaix/LuguETqo8m9FEfiT0v2RmDSY/rGvXmjEfg+1gLEctRCF3I5sQOPcqNVeCmIhPQfkJ6XJraHk97NOqOHOy4O7DIC76KYWwbeAXgqnIA8yQJSeCdUNPynPyiw62BiYpHzsNwP3MuxiXofawASsjUKeQ5kK3j/y92/NPx6zzbiQpGDHIQcwJzHnugEPHCB/wEPRoBIWsIAn+QYJD+pn6ckeZpPbiqFWQlqkR8kvDiLjwNCdbChEpBYcpqoxyoHanxMwKc3+uht36YaXVGJQYla9gkq10A1H1VSNhKY1CadSD5vsSlP7FR40o0lYWYPj2K7+gjnz6CA0FcSbnqG+tobdCMsOcMoyFSvUpsghNdvSyIDDmWqGxt0xON+BILCojP4KJczTmyv8slkVQetqRstkUTSCxAhHBBLmBS42i2ClFQMD6wCR8owunx+EnqnZr1G+mfv0ZqWcwMzn5jSAomfF3ESRY2VbE5uU5h+H1ysmIAIRgYFRFxjMHtrY4DQhS5dYcoTL17aJR6hlafmWSIQdcBkZYS56pJ0ky/JJSuwkwnIsao8CFJ/KCBiPtDrHRoX53jA6htQNQGR27uSR+agGUpIIZZ99pBsjrQIkULh493b9bHzWSQdIZIBcd+rvShUY1WzL2WnTG4WEfls84rQqi32Dkp4mWMp5ezkzBlSSd+8YWPVSM4CSX4jycUBnrgWZLf3WseQfeV+Frk0/6HRPKD8oiJU/dF4SEgHORqtJsUPXwmQBYk0rsHqIYZgdHBroJC6ThxMmMswZftsd1H94kafbFVFCrN+zArvkjNrfWcCoioJTAHEVHoBtkJlGZwJMsSxdJofTL5LJiR6VUZiyd0bm5EcOEhRyOrrAWKO2pnLASLlp7iQqF26wMMN++rJ6YDwWWg5qGQpQTlMD64TEBiTW20S0ZGHNw0Q4a0EJ14a3b3sZOVvuetGT2U5r6myescUOsN7kVXcje4cQDyu9uM6UiegXJtKjm8LyCWMunmmUffkvO5CrFnAYtM0QBSJMdwrR+P07OsAEionbzEJEB23l4BY2sQUWcxWB+DkPoOAG2Rmxih0VGsF1wpyf9xbAzIeGMIVqQeIgzXjqAJDEJvBO5llWaI58iUngdMyd5EQqrti77f/ioD47HSt0ZAG1G0iFWjuJEAIqKHEOCCq1tADTMJSrh6isXibZhojpHIlFGrhtQDx/a0eF3M0ufjAVy80AIm4IAOjpeKpB2jEPdCVG3PZMsNVLwZN/axyO/z7RM6clOfJRVlvViAf2alOq5GwHyrkGE1lv4N2UAsQk+t7O6BFGFfwpzrhAlCC0gC3VgCc7rM3AZBe4FxFAc1H+nKPp8chVEnV059t8lWaJKyBcTzdO1ygMkYLVMgqdW5U9TipyMo7OkCpUPPTp5kdVYlE5Rp2l6LrJHRuFGbO94vLBIZ+uW1u27Edb53cFWN7QGEJl763GIoY79670wEBPBGzLpS3D7gbFAPjLT6ibxpy9xj7/udfsKdST1vVEC/bkOkdJ1RJ1bbb/0ixEDcf5iMmiesCiiOxyUFo2tIDhEtz2+IaFpoc+CWw/LXD0vZChejCMqdFHE+9xECD79IAHkL03r1Bx48Asp5i1P2y2Qfy/fFxjW4EHcOX6vOYbwPilIPgl+gB4hlQrGxuZ5zBt02IWjKCOstVlLk8j1M5vNJ7x3dgIeFkzPqbFA3xmdxykga6gGS1YGx3+WOq3L+7HhM43kiw7SCGWXe10fcUNxRoqiy+e3sBWBpio5zaprm2Uu1x/msYUfb1MqKP4ZaQ1Wkjw+OrLUuuSePF6AGR6lNFMKEewox3MXiyVjFa7zKUPW8fpO1PujbkheNpgfiNb0+1xRYDOJpYnYDhUlLN7px68rkl1KdzgR6rQg/O0QNvgG31zHUByUewaOOaETdabrZesNZlW9q8NwEQIvBsWNphPFIgwspP8YhfULOvHsrD3fvcsBJct9YIdq59hVJOv1Otr1NT98mPesc+jHttHlKCc/W3I+CAyEGY6w7s4ACjeXalaPrdYD6n6/SOXQV7uuakRQA7X9xnU12gGtf6DZaZ3rkoGl7bWP7UcicDMroJSNkBYUrNOg4e0Voj7OO+992AfUEPcgamt1I+AkjxUUtnbTUP1kop6uchEjrTJWRsm5y6I0WSLeV11ggencu7RCs0gtJqEQnS29NCQ0zboVZdJ7lgnLXpE88nPUibGQTtp5HvHK6pDCFuwfrsHo1TYcDS2SlsnevpLEy4FFZdQ+BM1exRP9g4DZDBbbixqpbIh318v7Q85nhgj69B5HYW99lQyGLbJOyTozyFuo7vpax6vZ4/YHv8LZbjOxEQ9u/4lPEHBwyl19R1MzKwEd6CLd4muqla6kHZ1wii63ylKSIXs+rN24nHLrgsJjEUNfVYIwXuMUhE79mtNs0Zmuk1rDUEjvmDdJaDy8IeOCRb6UAbP4O0b1Orwg5ZLLT2QAXaVl3z3BP6Eu9ppNCMMa7OcTEUTQ70NRcN2d4wT3b2TMvUrbkq2imIxJuSN1I+YFd3+1MZ/w9E2K5ihy0v+VQCp3/QXtkIpBkbBoi2Q636b9qhf7WuIhbB7avhVTGUAhDtKkTUMXXq06wmHPqkw98Ag66bf8/jn8l7cG/TjcahcFLXY1KorLp+unLZT7gZeUgbUL/dImpo9PU9brvbwdABsSNT52oDvoCHlNKVQ+2f1FUB7rFzZ3KdaP3eT+EHXvLNUWXVp9YgPU8RGNjD9SB9pq9Al+KftfuZOTXzY6mjs9b1iXPr1YadckbS0xK+Zkvj6WCbGOSbpwybyEcNvX/n5+n6Md+N2fj0vHZ6g9u4cQWAoGY9yfVnMbgPMj9QB+7J94O8nLAlZ8wLja8BD4WIFIFG9OD7FIxqsj/5u+Kk0HC0d9H0bGwL5dWJCDtaVF/TZJmfDoWGW60SrvuAHMIajXZufYOIZNgBf/8mv+kyKMlg1D64zzriegIibyCFpzii8tsjGlEU5xz2GoycGV8MbZjmstAhkbY4w83d08PCPymVuIe0Ijpni5YBegymvlUHB1XcsOOVzCaU9pYmf1KMcx02vc7Cp7iuGRUS9rnD0Q+IDe454VuQ3UW1McOsw9p9OFZx/VYdLR8vbrCPTwwJiU+tNaquUn3l5wkNCW7YHH3lLELh0APvagBR1v8Sdr6PYjZ9qqzIH+jnDlfHCbG63JAgbva+nigdJKZUgTY7bDyTPeC7gLmyO/xjoKlQZUmzbDjJq7HzO7wihVVNcEn+o0p95LU4BCUNN1gnb7CtosEfcsXHQIsf7stiSsJXAxGsF+dbtyNq37X9YAWgv+frQl1F/6+QQh4r4462iITXpa+aDMqA95oU61Webzab3W5zPK7WAz2L1OyUoh892nz3wPVcI50OJiFXiMjHkbaFpKbha3ZUGkQfYfzIp4eBk/ND5yrxqPoYz/4qWFJpJ58EiRCrjxF1aX9eIG071UdEDHKdFJDdmd/NK3b1AZqwJaVI10e93qzqCzvA3W16EkxyteST78760mf6z0Y3gWpivtN+vFnlqhx2KHjIzgZ36nTWNZNPzvgW7u162+ZIMpIzN+BjjU6gnciv99T0fzVMj1w3+ad/LZpF9dLMNzHLJDJMM4qipWmQmSptc3+SIUk/Ejj3GSmDzJ8/VXwRRE4QkmTlC7HGjMXl1FZAflwnk+BgXzucP7j6qkJyTPUhSakjFcx4vDYkOz0pSdLcI9msoN5Ab6my61wkWH2adf5g95vktliMp07qVqYj/8y+gjjP1RtKCfGP2OEACfu++o5dMtuOt4WkSoX8a5Ov1us0LSil6bpr6fXL2XZ8NVAkeipn4fhqmGRlmQVPfukzyjK/fJqD8Jm+efo/QkHvtG0TgfsAAAAASUVORK5CYII=");
  --grovex-logo-oscuro: url("data:image/png;base64,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");
}
/* Menú lateral (siempre navy): logo blanco de 104 px. */
html:root #root > div > aside.border-r img.w-7.h-7 {
  content: var(--grovex-logo-oscuro);
  width: 104px;
  height: auto;
}
html:root #root > div > aside.border-r img.w-7.h-7 + div { font-size: 0; line-height: 0; }
html:root #root > div > aside.border-r img.w-7.h-7 + div > * { display: none; }
html:root #root > div > aside.border-r img.w-7.h-7 + div::before {
  content: "CRM";
  display: inline-block;
  padding: 4px 7px;
  border: 1px solid rgba(106, 243, 205, 0.35);
  border-radius: 999px;
  color: #6af3cd;
  font: 700 10.5px/1 ui-sans-serif, system-ui, sans-serif;
  letter-spacing: 0.14em;
}
/* Cabecera en celular: navy como el Panel de Gro, con logo blanco. */
html:root #root header.lg\:hidden {
  background-color: #0a1240;
  border-bottom-color: transparent;
  --ink-rgb: 255 255 255;
  --paper-3-rgb: 26 34 80;
}
html:root #root header img.w-6.h-6 {
  content: var(--grovex-logo-oscuro);
  width: 92px;
  height: auto;
}
html:root #root header img.w-6.h-6 + span { display: none; }
/* Tarjeta del login: según el tema. */
html:root #root img.w-12.h-12 {
  content: var(--grovex-logo-claro);
  width: auto;
  height: 46px;
}
html:root #root img.w-12.h-12 + h2 { display: none; }

@media (prefers-reduced-motion: reduce) {
  html:root .btn:active,
  html:root .btn-primary:active { transform: none; }
}

/* ---------- v4: revisión con taste-skill + README Grovex ---------- */

/* Título de pantalla de trabajo, no de landing: 30 px en Sora. El saludo de
   Inicio trae el tamaño en un style inline (clamp 36-48 px), de ahí el
   !important. */
html:root #root main h1.h-display,
html:root #root main h1 {
  font-size: clamp(24px, 2.1vw, 30px) !important;
  line-height: 1.15;
  font-weight: 600;
}
/* Sin palabra acentuada en los títulos: el README reserva el tratamiento
   especial solo para "turbo." en la web, y menta sobre blanco no se lee. */
html:root .accent {
  color: inherit;
  font-weight: inherit;
}

/* Etiquetas en frase normal, sin mayúsculas espaciadas (README: "en
   minúscula normal"). Cubre las clases del panel y los style inline del menú. */
html:root .eyebrow,
html:root .label,
html:root .uppercase,
html:root [style*="text-transform: uppercase"] {
  text-transform: none !important;
  letter-spacing: 0 !important;
}
html:root .eyebrow,
html:root .label,
html:root #root > div > aside.border-r [style*="text-transform: uppercase"] {
  font-size: 12px !important;
  font-weight: 600;
}

/* Avisos legibles sobre blanco: tonos de texto del design system. */
/* El panel pinta varios avisos con var(--state-*) en style inline, así que
   se cambian las variables además de las clases. */
html:root:root {
  --state-warn: #9a4a12;
  --state-bad: #b42335;
  --state-ok: #0b6b52;
}
html:root .text-state-warn { color: #9a4a12; }   /* hot-text */
html:root .text-state-bad { color: #b42335; }    /* --hot del Panel de Gro */
html:root .text-state-ok { color: #0b6b52; }     /* --ok del Panel de Gro */

/* Tarjetas: borde o sombra, no los dos. Se queda el borde #E6EBF0; la sombra
   solo en lo que flota (menús, diálogos), que usan shadow-coro-2/3. */
html:root:root { --shadow-coro-1: none; }
html:root .card { box-shadow: none; }

/* Cifras de ancho fijo para que las columnas y los KPI no bailen. */
html:root body { font-variant-numeric: tabular-nums; }

/* Encabezados de tabla sin franja de color: la tabla se ordena con reglas y
   alineación, no con bandas. */
html:root #root main thead,
html:root #root main thead tr,
html:root #root main thead th {
  background-color: transparent;
}

/* ---------- v5: auditoría con ui-ux-pro-max (medida en vivo) ---------- */

/* 1. "Cerrar sesión" y otros avisos rojos dentro del menú navy: el rojo
   oscuro de la v4 quedaba en 2,1:1. Rojo claro del Panel de Gro en oscuro. */
html:root #root > div > aside.border-r {
  --state-bad: #ff8a95;
}
html:root #root > div > aside.border-r .text-state-bad { color: #ff8a95; }

/* 2. Colores de canal usados como texto (chips "Chat web", "WhatsApp"): el
   panel los pone en style inline con el color de marca del canal, que sobre
   blanco no llega a 4,5:1. Versión oscura del mismo tono solo para el texto. */
html:root #root [style*="color: rgb(14, 159, 159)"] { color: #0a7373 !important; }   /* web 3,2 -> 5,6:1 */
html:root #root [style*="color: rgb(37, 211, 102)"] { color: #12773b !important; }   /* WhatsApp */
html:root .text-ch-web { color: #0a7373; }
html:root .text-ch-wa { color: #12773b; }

/* 5. Piso de tamaño: nada de lectura bajo 12 px; los globitos de conteo y
   las etiquetas compactas, 11 px. */
html:root .text-\[10px\],
html:root .text-\[10\.5px\],
html:root .text-\[11px\] {
  font-size: 12px;
}
html:root .badge.text-\[10px\],
html:root .badge.text-\[11px\],
html:root .rounded-full.text-\[10px\],
html:root .rounded-full.text-\[11px\],
html:root #root [style*="font-size: 10px"],
html:root #root [style*="font-size: 10.5px"] {
  font-size: 11px !important;
}

/* 6. Casillas de 16 px en el verde de marca (antes 13 px). */
html:root input[type="checkbox"],
html:root input[type="radio"] {
  width: 16px;
  height: 16px;
  accent-color: #0e8a69;
}

/* 3 y 4. Tablet y celular: objetivos de toque de 44 px y campos a 16 px
   (bajo 16 px el iPhone hace zoom al tocar el campo). */
@media (max-width: 1023px) {
  html:root #root > div > aside.border-r nav a,
  html:root #root header button,
  html:root .btn,
  html:root .btn-primary,
  html:root .btn-ghost,
  html:root .btn-danger,
  html:root .btn-sm {
    min-height: 44px;
  }
  html:root #root header button,
  html:root .btn-icon { min-width: 44px; }
  html:root .input,
  html:root .textarea,
  html:root #root input:not([type="checkbox"]):not([type="radio"]),
  html:root #root select,
  html:root #root textarea {
    font-size: 16px;
    min-height: 44px;
  }
}

/* 7. "Reducir movimiento": se quita lo que se desplaza (los íconos que flotan
   en el login, el scroll suave, el botón que se encoge), pero se mantienen los
   cambios de estado y de color, que informan. La versión de la v5 lo apagaba
   todo de golpe (Impeccable, v12). Ver también el bloque v12 más abajo. */
@media (prefers-reduced-motion: reduce) {
  html:root *,
  html:root *::before,
  html:root *::after {
    scroll-behavior: auto !important;
  }
  html:root #root [style*="coro-float-up"] {
    animation: none !important;
    opacity: 0 !important;
  }
}

/* ---------- v6: los 8 controles que seguían chicos y el modo oscuro ---------- */

/* El modo oscuro ya no existe (la capa fuerza el claro), así que se oculta su
   botón: el de la esquina del login y el del menú de usuario. */
html:root #root button[aria-label="Modo oscuro"],
html:root #root button[aria-label="Modo claro"],
html:root #root button:has(> svg.lucide-moon),
html:root #root button:has(> svg.lucide-sun) {
  display: none !important;
}

/* Enlaces "Abrir inbox", "Abrir salud" al pie de las tarjetas: 18 px de alto.
   Mínimo 24 px en escritorio (WCAG 2.2) y 44 px en celular. */
html:root #root main .border-t > a.inline-flex,
html:root #root main a.pill {
  min-height: 24px;
}

@media (max-width: 1023px) {
  /* Todo lo tocable del menú lateral: cerrar, menú de usuario, notificaciones. */
  html:root #root > div > aside.border-r button,
  html:root #root > div > aside.border-r a {
    min-height: 44px;
  }
  html:root #root > div > aside.border-r button.w-8,
  html:root #root > div > aside.border-r button.w-9 {
    min-width: 44px;
  }
  html:root #root main .border-t > a.inline-flex,
  html:root #root main a.pill {
    min-height: 44px;
  }
  /* Botones que en celular quedan solo con su ícono ("Actualizado"). */
  html:root .btn,
  html:root .btn-ghost {
    min-width: 44px;
  }
}

/* ---------- piel Grovex del widget de chat (página /demo) ----------
   Misma hoja que gro-widget.css de grovex.cl, sin sus @import: en el panel
   Sora ya viene de arriba y Satoshi cae a la letra del sistema. */

/* Piel Grovex para el widget de chat del CRM (crm.grovex.cl/widget.js).

   Se carga en la página que muestra el chat (grovex.cl), no en el CRM: el
   widget se dibuja dentro de esa página, así que esta hoja lo viste sin tocar
   el código del CRM y sobrevive a sus actualizaciones.

   Valores tomados de gro-chat.html (el chat de Gro en grovex.cl) y del design
   system Grovex. Todos los selectores van bajo #cbw-chat-root para ganarle a
   los estilos que el propio widget inyecta (#cbw-fab, #cbw-panel…).

   Lo que el widget no trae y por tanto aquí no existe: chips de sugerencias,
   formulario de contacto y botón de WhatsApp (son comportamiento, no estilo). */


#cbw-chat-root {
  --gx-navy: #0a1240;
  --gx-mint: #6af3cd;
  --gx-mint-hover: #8df7da;
  --gx-green-mid: #1fbd92;
  --gx-ease-out: cubic-bezier(.2, 0, 0, 1);
  font-family: "Satoshi", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif !important;
  right: calc(22px + env(safe-area-inset-right, 0px)) !important;
  bottom: calc(22px + env(safe-area-inset-bottom, 0px)) !important;
}

/* ---------- Botón flotante: la cara de Gro ----------
   Igual que en grovex.cl (gro-chat.html, .fw-bot con .gb-cara): solo el visor
   navy con los ojos menta y su borde menta, sin cuerpo ni brazos, con sombra
   y brillo menta, parpadeando. Al abrir el chat la cara se queda y aparece una
   X navy pequeña en su esquina. */
#cbw-chat-root #cbw-fab {
  position: relative;
  width: 70px;
  height: 76px;
  margin-right: -9px;
  padding: 0;
  border-radius: 0;
  /* La cara ocupa la caja del original (inset 14% 2%): 72 % del alto, centrada. */
  background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ijg2IDY2IDIyOCAyMDAiIHdpZHRoPSIyMjgiIGhlaWdodD0iMjAwIj48c3R5bGU+LmdiLWV5ZXt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2Zvcm0tYm94OmZpbGwtYm94O2FuaW1hdGlvbjpnYi1ibGluayA0LjZzIGluZmluaXRlfS5nYi1leWUrLmdiLWV5ZXthbmltYXRpb24tZGVsYXk6LjAzc30uZ2Itc21pbGV7b3BhY2l0eTowfUBrZXlmcmFtZXMgZ2ItYmxpbmt7MCUsNDYlLDUwJSx0b3t0cmFuc2Zvcm06c2NhbGVZKDEpfTQ4JXt0cmFuc2Zvcm06c2NhbGVZKC4wOCl9fUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5nYi1leWV7YW5pbWF0aW9uOm5vbmV9fTwvc3R5bGU+IDxkZWZzPiA8cmFkaWFsR3JhZGllbnQgaWQ9ImdiQm9keS1md2JvdCIgY3g9IjM2JSIgY3k9IjI2JSIgcj0iNzglIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNGMkZGRkIiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii4xNiIgc3RvcC1jb2xvcj0iI0I5RkJFOCI+PC9zdG9wPjxzdG9wIG9mZnNldD0iLjQ4IiBzdG9wLWNvbG9yPSIjNjZFQUM2Ij48L3N0b3A+PHN0b3Agb2Zmc2V0PSIuOCIgc3RvcC1jb2xvcj0iIzM0QzlBMyI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFGOUY4MCI+PC9zdG9wPjwvcmFkaWFsR3JhZGllbnQ+IDxsaW5lYXJHcmFkaWVudCBpZD0iZ2JTaGFkZS1md2JvdCIgeDE9IjAiIHkxPSIwIiB4Mj0iMCIgeTI9IjEiPjxzdG9wIG9mZnNldD0iLjU1IiBzdG9wLWNvbG9yPSIjMEU2RTU4IiBzdG9wLW9wYWNpdHk9IjAiPjwvc3RvcD48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwQjVDNDkiIHN0b3Atb3BhY2l0eT0iLjQyIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJnYlJpbS1md2JvdCIgeDE9IjEiIHkxPSIuMiIgeDI9Ii4zIiB5Mj0iLjgiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0U4RkZGOCIgc3RvcC1vcGFjaXR5PSIuOTUiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii4zNSIgc3RvcC1jb2xvcj0iIzlGRjhERiIgc3RvcC1vcGFjaXR5PSIuMiI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzlGRjhERiIgc3RvcC1vcGFjaXR5PSIwIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD4gPHJhZGlhbEdyYWRpZW50IGlkPSJnYkFybS1md2JvdCIgY3g9IjM4JSIgY3k9IjI4JSIgcj0iODAlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNENkZGRjIiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii40NSIgc3RvcC1jb2xvcj0iIzVGRTNCRiI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzIyQTE4NCI+PC9zdG9wPjwvcmFkaWFsR3JhZGllbnQ+IDxyYWRpYWxHcmFkaWVudCBpZD0iZ2JWaXNvci1md2JvdCIgY3g9IjQyJSIgY3k9IjMwJSIgcj0iODAlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMyNjM2OEEiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii40NSIgc3RvcC1jb2xvcj0iIzEwMUE1QyI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzA1MEEyQSI+PC9zdG9wPjwvcmFkaWFsR3JhZGllbnQ+IDxyYWRpYWxHcmFkaWVudCBpZD0iZ2JFeWUtZndib3QiIGN4PSI0NSUiIGN5PSIzOCUiIHI9IjY1JSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjRjBGRkZBIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIuNCIgc3RvcC1jb2xvcj0iIzhBRjdEQSI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNCRERCMyI+PC9zdG9wPjwvcmFkaWFsR3JhZGllbnQ+IDxmaWx0ZXIgaWQ9ImdiR2xvdy1md2JvdCIgeD0iLTYwJSIgeT0iLTYwJSIgd2lkdGg9IjIyMCUiIGhlaWdodD0iMjIwJSI+PGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNyIgcmVzdWx0PSJiIj48L2ZlR2F1c3NpYW5CbHVyPjxmZU1lcmdlPjxmZU1lcmdlTm9kZSBpbj0iYiI+PC9mZU1lcmdlTm9kZT48ZmVNZXJnZU5vZGUgaW49IlNvdXJjZUdyYXBoaWMiPjwvZmVNZXJnZU5vZGU+PC9mZU1lcmdlPjwvZmlsdGVyPiA8ZmlsdGVyIGlkPSJnYlNvZnQtZndib3QiIHg9Ii0yMCUiIHk9Ii0yMCUiIHdpZHRoPSIxNDAlIiBoZWlnaHQ9IjE0MCUiPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiPjwvZmVHYXVzc2lhbkJsdXI+PC9maWx0ZXI+IDxsaW5lYXJHcmFkaWVudCBpZD0iZ2JSaW1jLWZ3Ym90IiB4MT0iMCIgeTE9IjAiIHgyPSIxIiB5Mj0iMSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjRTRGRkY3Ij48L3N0b3A+PHN0b3Agb2Zmc2V0PSIuNCIgc3RvcC1jb2xvcj0iIzZBRjNDRCI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFGQkQ5MiI+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+IDxmaWx0ZXIgaWQ9ImdiRGVib3NzLWZ3Ym90IiB4PSItMzAlIiB5PSItMzAlIiB3aWR0aD0iMTYwJSIgaGVpZ2h0PSIxNjAlIj4gPGZlRmxvb2QgZmxvb2QtY29sb3I9IiMwQzcwNTgiIGZsb29kLW9wYWNpdHk9Ii45NSIgcmVzdWx0PSJjIj48L2ZlRmxvb2Q+PGZlQ29tcG9zaXRlIGluPSJjIiBpbjI9IlNvdXJjZUFscGhhIiBvcGVyYXRvcj0iaW4iIHJlc3VsdD0iZyI+PC9mZUNvbXBvc2l0ZT4gPGZlT2Zmc2V0IGluPSJTb3VyY2VBbHBoYSIgZHg9IjAiIGR5PSIxLjYiIHJlc3VsdD0ibyI+PC9mZU9mZnNldD48ZmVGbG9vZCBmbG9vZC1jb2xvcj0iI0M5RkZFRiIgZmxvb2Qtb3BhY2l0eT0iLjciPjwvZmVGbG9vZD48ZmVDb21wb3NpdGUgaW4yPSJvIiBvcGVyYXRvcj0iaW4iIHJlc3VsdD0iaGwiPjwvZmVDb21wb3NpdGU+IDxmZU1lcmdlPjxmZU1lcmdlTm9kZSBpbj0iaGwiPjwvZmVNZXJnZU5vZGU+PGZlTWVyZ2VOb2RlIGluPSJnIj48L2ZlTWVyZ2VOb2RlPjwvZmVNZXJnZT4gPC9maWx0ZXI+IDxjbGlwUGF0aCBpZD0iZ2JCb2R5Q2xpcC1md2JvdCI+PHBhdGggZD0iTTIwMCAyNmM4NCAwIDE1MCA3MCAxNTAgMTc2IDAgMTEyLTY0IDE5Mi0xNTAgMTkyUzUwIDMxNCA1MCAyMDJDNTAgOTYgMTE2IDI2IDIwMCAyNnoiPjwvcGF0aD48L2NsaXBQYXRoPiA8Y2xpcFBhdGggaWQ9ImdiVmlzb3JDbGlwLWZ3Ym90Ij48cGF0aCBkPSJNMjAwIDc0YzY2IDAgMTA0IDMwIDEwNiA5MiAyIDU4LTQwIDkyLTEwNiA5MnMtMTA4LTM0LTEwNi05MmMyLTYyIDQwLTkyIDEwNi05MnoiPjwvcGF0aD48L2NsaXBQYXRoPiA8L2RlZnM+ICAgICAgPHBhdGggY2xhc3M9ImdiLXZpc29yIiBkPSJNMjAwIDc0YzY2IDAgMTA0IDMwIDEwNiA5MiAyIDU4LTQwIDkyLTEwNiA5MnMtMTA4LTM0LTEwNi05MmMyLTYyIDQwLTkyIDEwNi05MnoiIGZpbGw9InVybCgjZ2JWaXNvci1md2JvdCkiPjwvcGF0aD4gPGcgY2xpcC1wYXRoPSJ1cmwoI2diVmlzb3JDbGlwLWZ3Ym90KSI+IDxwYXRoIGQ9Ik05NiAxNzZjMTItNjIgNTgtODYgMTE2LTg2IiBmaWxsPSJub25lIiBzdHJva2U9IiM2QUYzQ0QiIHN0cm9rZS1vcGFjaXR5PSIuMTgiIHN0cm9rZS13aWR0aD0iMyI+PC9wYXRoPiA8ZyBjbGFzcz0iZ2ItZmFjZSI+PGcgY2xhc3M9ImdiLWxvb2siPiA8ZyBjbGFzcz0iZ2ItZXllcyIgZmlsdGVyPSJ1cmwoI2diR2xvdy1md2JvdCkiPiA8ZWxsaXBzZSBjbGFzcz0iZ2ItZXllIiBjeD0iMTYwIiBjeT0iMTY4IiByeD0iMjAiIHJ5PSIzMCIgZmlsbD0idXJsKCNnYkV5ZS1md2JvdCkiPjwvZWxsaXBzZT4gPGVsbGlwc2UgY2xhc3M9ImdiLWV5ZSIgY3g9IjI0MCIgY3k9IjE2OCIgcng9IjIwIiByeT0iMzAiIGZpbGw9InVybCgjZ2JFeWUtZndib3QpIj48L2VsbGlwc2U+IDwvZz4gPHBhdGggY2xhc3M9ImdiLXNtaWxlIiBkPSJNMTc2IDIxNHEyNCAxNiA0OCAwIiBmaWxsPSJub25lIiBzdHJva2U9IiM2QUYzQ0QiIHN0cm9rZS13aWR0aD0iNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48L3BhdGg+IDwvZz48L2c+IDxwYXRoIGQ9Ik0yNzAgOTZjMjIgMTQgMzAgNDAgMjYgNzAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLW9wYWNpdHk9Ii4yOCIgc3Ryb2tlLXdpZHRoPSIxMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48L3BhdGg+IDxlbGxpcHNlIGN4PSIxNzAiIGN5PSI5NiIgcng9IjQ2IiByeT0iOSIgZmlsbD0iI2ZmZiIgb3BhY2l0eT0iLjEiPjwvZWxsaXBzZT4gPC9nPiAgPHBhdGggY2xhc3M9ImdiLXJpbSIgZD0iTTIwMCA3NGM2NiAwIDEwNCAzMCAxMDYgOTIgMiA1OC00MCA5Mi0xMDYgOTJzLTEwOC0zNC0xMDYtOTJjMi02MiA0MC05MiAxMDYtOTJ6IiBmaWxsPSJub25lIiBzdHJva2U9InVybCgjZ2JSaW1jLWZ3Ym90KSIgc3Ryb2tlLXdpZHRoPSI5Ij48L3BhdGg+IDwvc3ZnPg==") 50% 47% / auto 72% no-repeat;
  box-shadow: none;
  color: transparent;
  overflow: visible;
  filter: drop-shadow(0 7px 12px rgba(5, 10, 40, .45)) drop-shadow(0 0 9px rgba(106, 243, 205, .35));
  transition: transform .25s cubic-bezier(.2, .8, .2, 1);
  -webkit-tap-highlight-color: transparent;
}
#cbw-chat-root #cbw-fab svg { display: none; }
#cbw-chat-root #cbw-fab:hover { transform: scale(1.06); }
#cbw-chat-root #cbw-fab:active { transform: scale(.95); }
#cbw-chat-root #cbw-fab:focus-visible {
  outline: 2px solid var(--gx-mint);
  outline-offset: 2px;
  border-radius: 30%;
}

/* Globo "Hola, soy Gro. ¿Conversamos?": aparece a los 2,6 s y se va solo.
   Como en el original, "Hola, soy Gro." va en menta y negrita: ::before es el
   globo con esa parte y ::after pone "¿Conversamos?" en su hueco final. */
#cbw-chat-root #cbw-fab::before,
#cbw-chat-root #cbw-fab::after {
  position: absolute;
  white-space: nowrap;
  font-family: "Satoshi", system-ui, sans-serif;
  font-size: 12px;
  line-height: 15.6px;
  pointer-events: none;
  opacity: 0;
  transform: translateX(7px) scale(.96);
  animation: gx-hola 7s cubic-bezier(.2, .8, .2, 1) 2.6s forwards;
}
#cbw-chat-root #cbw-fab::before {
  content: "Hola, soy Gro.";
  right: calc(100% + 5px);
  bottom: 22px;
  padding: 9px calc(12px + 8.3em) 9px 12px;
  border-radius: 13px 13px 3px;
  background: #0f1a48;
  border: 1px solid rgba(106, 243, 205, .25);
  color: var(--gx-mint);
  font-weight: 600;
  box-shadow: 0 13px 27px -13px rgba(5, 10, 40, .7);
}
#cbw-chat-root #cbw-fab::after {
  content: "¿Conversamos?";
  right: calc(100% + 5px + 1px + 12px);
  bottom: calc(22px + 1px + 9px);
  color: #c9d6ec;
  font-weight: 500;
}
/* Chat abierto: el globo se va y ::after pasa a ser la X navy de la esquina. */
#cbw-chat-root:has(#cbw-panel.open) #cbw-fab::before { animation: none; opacity: 0; }
#cbw-chat-root:has(#cbw-panel.open) #cbw-fab::after {
  content: "";
  top: 2px;
  right: 2px;
  bottom: auto;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjRkZGRkZGIiBzdHJva2Utd2lkdGg9IjIuNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48cGF0aCBkPSJNNiA2bDEyIDEyTTE4IDZMNiAxOCIvPjwvc3ZnPg==") center / 11px no-repeat, #0a1240;
  box-shadow: 0 4px 9px -3px rgba(10, 18, 64, .5);
  animation: none;
  transition: opacity .25s, transform .3s cubic-bezier(.2, .8, .2, 1);
}
#cbw-chat-root:has(#cbw-panel.open) #cbw-fab::after { opacity: 1; transform: none; }
#cbw-chat-root:has(#cbw-panel.open) #cbw-fab::before { animation: none; opacity: 0; }

/* ---------- Ventana ----------
   Tema claro, como el chat abierto de grovex.cl: ventana blanca, encabezado
   con un degradado menta muy pálido, la cara de Gro sin esfera detrás,
   mensajes de Gro en menta suave y los del cliente en navy. */
#cbw-chat-root #cbw-panel {
  bottom: 87px;
  width: min(370px, calc(100vw - 32px));
  max-width: none;
  height: min(640px, calc(100vh - 150px));
  max-height: none;
  border-radius: 22px;
  background: #fff;
  color: var(--gx-navy);
  border: 1px solid rgba(10, 18, 64, .08);
  box-shadow: 0 40px 80px -30px rgba(10, 18, 64, .35), 0 12px 30px -12px rgba(10, 18, 64, .12);
  transform-origin: 100% 100%;
}
#cbw-chat-root #cbw-panel.open { animation: gx-in .32s var(--gx-ease-out); }

/* Encabezado: la cara de Gro, "Gro" en Sora con el chip IA y el punto verde. */
#cbw-chat-root #cbw-header {
  gap: 12px;
  padding: 16px 16px 14px;
  background: linear-gradient(160deg, #f1faf6, #fff);
  color: var(--gx-navy);
  border-bottom: 1px solid rgba(10, 18, 64, .07);
  font-weight: 400;
}
#cbw-chat-root #cbw-header::before {
  content: "";
  order: -1;
  width: 46px;
  height: 42px;
  flex: none;
  background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ijg2IDY2IDIyOCAyMDAiIHdpZHRoPSIyMjgiIGhlaWdodD0iMjAwIj48c3R5bGU+LmdiLWV5ZXt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2Zvcm0tYm94OmZpbGwtYm94O2FuaW1hdGlvbjpnYi1ibGluayA0LjZzIGluZmluaXRlfS5nYi1leWUrLmdiLWV5ZXthbmltYXRpb24tZGVsYXk6LjAzc30uZ2Itc21pbGV7b3BhY2l0eTowfUBrZXlmcmFtZXMgZ2ItYmxpbmt7MCUsNDYlLDUwJSx0b3t0cmFuc2Zvcm06c2NhbGVZKDEpfTQ4JXt0cmFuc2Zvcm06c2NhbGVZKC4wOCl9fUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5nYi1leWV7YW5pbWF0aW9uOm5vbmV9fTwvc3R5bGU+IDxkZWZzPiA8cmFkaWFsR3JhZGllbnQgaWQ9ImdiQm9keS1md2JvdCIgY3g9IjM2JSIgY3k9IjI2JSIgcj0iNzglIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNGMkZGRkIiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii4xNiIgc3RvcC1jb2xvcj0iI0I5RkJFOCI+PC9zdG9wPjxzdG9wIG9mZnNldD0iLjQ4IiBzdG9wLWNvbG9yPSIjNjZFQUM2Ij48L3N0b3A+PHN0b3Agb2Zmc2V0PSIuOCIgc3RvcC1jb2xvcj0iIzM0QzlBMyI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFGOUY4MCI+PC9zdG9wPjwvcmFkaWFsR3JhZGllbnQ+IDxsaW5lYXJHcmFkaWVudCBpZD0iZ2JTaGFkZS1md2JvdCIgeDE9IjAiIHkxPSIwIiB4Mj0iMCIgeTI9IjEiPjxzdG9wIG9mZnNldD0iLjU1IiBzdG9wLWNvbG9yPSIjMEU2RTU4IiBzdG9wLW9wYWNpdHk9IjAiPjwvc3RvcD48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwQjVDNDkiIHN0b3Atb3BhY2l0eT0iLjQyIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJnYlJpbS1md2JvdCIgeDE9IjEiIHkxPSIuMiIgeDI9Ii4zIiB5Mj0iLjgiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0U4RkZGOCIgc3RvcC1vcGFjaXR5PSIuOTUiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii4zNSIgc3RvcC1jb2xvcj0iIzlGRjhERiIgc3RvcC1vcGFjaXR5PSIuMiI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzlGRjhERiIgc3RvcC1vcGFjaXR5PSIwIj48L3N0b3A+PC9saW5lYXJHcmFkaWVudD4gPHJhZGlhbEdyYWRpZW50IGlkPSJnYkFybS1md2JvdCIgY3g9IjM4JSIgY3k9IjI4JSIgcj0iODAlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNENkZGRjIiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii40NSIgc3RvcC1jb2xvcj0iIzVGRTNCRiI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzIyQTE4NCI+PC9zdG9wPjwvcmFkaWFsR3JhZGllbnQ+IDxyYWRpYWxHcmFkaWVudCBpZD0iZ2JWaXNvci1md2JvdCIgY3g9IjQyJSIgY3k9IjMwJSIgcj0iODAlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMyNjM2OEEiPjwvc3RvcD48c3RvcCBvZmZzZXQ9Ii40NSIgc3RvcC1jb2xvcj0iIzEwMUE1QyI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzA1MEEyQSI+PC9zdG9wPjwvcmFkaWFsR3JhZGllbnQ+IDxyYWRpYWxHcmFkaWVudCBpZD0iZ2JFeWUtZndib3QiIGN4PSI0NSUiIGN5PSIzOCUiIHI9IjY1JSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjRjBGRkZBIj48L3N0b3A+PHN0b3Agb2Zmc2V0PSIuNCIgc3RvcC1jb2xvcj0iIzhBRjdEQSI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNCRERCMyI+PC9zdG9wPjwvcmFkaWFsR3JhZGllbnQ+IDxmaWx0ZXIgaWQ9ImdiR2xvdy1md2JvdCIgeD0iLTYwJSIgeT0iLTYwJSIgd2lkdGg9IjIyMCUiIGhlaWdodD0iMjIwJSI+PGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNyIgcmVzdWx0PSJiIj48L2ZlR2F1c3NpYW5CbHVyPjxmZU1lcmdlPjxmZU1lcmdlTm9kZSBpbj0iYiI+PC9mZU1lcmdlTm9kZT48ZmVNZXJnZU5vZGUgaW49IlNvdXJjZUdyYXBoaWMiPjwvZmVNZXJnZU5vZGU+PC9mZU1lcmdlPjwvZmlsdGVyPiA8ZmlsdGVyIGlkPSJnYlNvZnQtZndib3QiIHg9Ii0yMCUiIHk9Ii0yMCUiIHdpZHRoPSIxNDAlIiBoZWlnaHQ9IjE0MCUiPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiPjwvZmVHYXVzc2lhbkJsdXI+PC9maWx0ZXI+IDxsaW5lYXJHcmFkaWVudCBpZD0iZ2JSaW1jLWZ3Ym90IiB4MT0iMCIgeTE9IjAiIHgyPSIxIiB5Mj0iMSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjRTRGRkY3Ij48L3N0b3A+PHN0b3Agb2Zmc2V0PSIuNCIgc3RvcC1jb2xvcj0iIzZBRjNDRCI+PC9zdG9wPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFGQkQ5MiI+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+IDxmaWx0ZXIgaWQ9ImdiRGVib3NzLWZ3Ym90IiB4PSItMzAlIiB5PSItMzAlIiB3aWR0aD0iMTYwJSIgaGVpZ2h0PSIxNjAlIj4gPGZlRmxvb2QgZmxvb2QtY29sb3I9IiMwQzcwNTgiIGZsb29kLW9wYWNpdHk9Ii45NSIgcmVzdWx0PSJjIj48L2ZlRmxvb2Q+PGZlQ29tcG9zaXRlIGluPSJjIiBpbjI9IlNvdXJjZUFscGhhIiBvcGVyYXRvcj0iaW4iIHJlc3VsdD0iZyI+PC9mZUNvbXBvc2l0ZT4gPGZlT2Zmc2V0IGluPSJTb3VyY2VBbHBoYSIgZHg9IjAiIGR5PSIxLjYiIHJlc3VsdD0ibyI+PC9mZU9mZnNldD48ZmVGbG9vZCBmbG9vZC1jb2xvcj0iI0M5RkZFRiIgZmxvb2Qtb3BhY2l0eT0iLjciPjwvZmVGbG9vZD48ZmVDb21wb3NpdGUgaW4yPSJvIiBvcGVyYXRvcj0iaW4iIHJlc3VsdD0iaGwiPjwvZmVDb21wb3NpdGU+IDxmZU1lcmdlPjxmZU1lcmdlTm9kZSBpbj0iaGwiPjwvZmVNZXJnZU5vZGU+PGZlTWVyZ2VOb2RlIGluPSJnIj48L2ZlTWVyZ2VOb2RlPjwvZmVNZXJnZT4gPC9maWx0ZXI+IDxjbGlwUGF0aCBpZD0iZ2JCb2R5Q2xpcC1md2JvdCI+PHBhdGggZD0iTTIwMCAyNmM4NCAwIDE1MCA3MCAxNTAgMTc2IDAgMTEyLTY0IDE5Mi0xNTAgMTkyUzUwIDMxNCA1MCAyMDJDNTAgOTYgMTE2IDI2IDIwMCAyNnoiPjwvcGF0aD48L2NsaXBQYXRoPiA8Y2xpcFBhdGggaWQ9ImdiVmlzb3JDbGlwLWZ3Ym90Ij48cGF0aCBkPSJNMjAwIDc0YzY2IDAgMTA0IDMwIDEwNiA5MiAyIDU4LTQwIDkyLTEwNiA5MnMtMTA4LTM0LTEwNi05MmMyLTYyIDQwLTkyIDEwNi05MnoiPjwvcGF0aD48L2NsaXBQYXRoPiA8L2RlZnM+ICAgICAgPHBhdGggY2xhc3M9ImdiLXZpc29yIiBkPSJNMjAwIDc0YzY2IDAgMTA0IDMwIDEwNiA5MiAyIDU4LTQwIDkyLTEwNiA5MnMtMTA4LTM0LTEwNi05MmMyLTYyIDQwLTkyIDEwNi05MnoiIGZpbGw9InVybCgjZ2JWaXNvci1md2JvdCkiPjwvcGF0aD4gPGcgY2xpcC1wYXRoPSJ1cmwoI2diVmlzb3JDbGlwLWZ3Ym90KSI+IDxwYXRoIGQ9Ik05NiAxNzZjMTItNjIgNTgtODYgMTE2LTg2IiBmaWxsPSJub25lIiBzdHJva2U9IiM2QUYzQ0QiIHN0cm9rZS1vcGFjaXR5PSIuMTgiIHN0cm9rZS13aWR0aD0iMyI+PC9wYXRoPiA8ZyBjbGFzcz0iZ2ItZmFjZSI+PGcgY2xhc3M9ImdiLWxvb2siPiA8ZyBjbGFzcz0iZ2ItZXllcyIgZmlsdGVyPSJ1cmwoI2diR2xvdy1md2JvdCkiPiA8ZWxsaXBzZSBjbGFzcz0iZ2ItZXllIiBjeD0iMTYwIiBjeT0iMTY4IiByeD0iMjAiIHJ5PSIzMCIgZmlsbD0idXJsKCNnYkV5ZS1md2JvdCkiPjwvZWxsaXBzZT4gPGVsbGlwc2UgY2xhc3M9ImdiLWV5ZSIgY3g9IjI0MCIgY3k9IjE2OCIgcng9IjIwIiByeT0iMzAiIGZpbGw9InVybCgjZ2JFeWUtZndib3QpIj48L2VsbGlwc2U+IDwvZz4gPHBhdGggY2xhc3M9ImdiLXNtaWxlIiBkPSJNMTc2IDIxNHEyNCAxNiA0OCAwIiBmaWxsPSJub25lIiBzdHJva2U9IiM2QUYzQ0QiIHN0cm9rZS13aWR0aD0iNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48L3BhdGg+IDwvZz48L2c+IDxwYXRoIGQ9Ik0yNzAgOTZjMjIgMTQgMzAgNDAgMjYgNzAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLW9wYWNpdHk9Ii4yOCIgc3Ryb2tlLXdpZHRoPSIxMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48L3BhdGg+IDxlbGxpcHNlIGN4PSIxNzAiIGN5PSI5NiIgcng9IjQ2IiByeT0iOSIgZmlsbD0iI2ZmZiIgb3BhY2l0eT0iLjEiPjwvZWxsaXBzZT4gPC9nPiAgPHBhdGggY2xhc3M9ImdiLXJpbSIgZD0iTTIwMCA3NGM2NiAwIDEwNCAzMCAxMDYgOTIgMiA1OC00MCA5Mi0xMDYgOTJzLTEwOC0zNC0xMDYtOTJjMi02MiA0MC05MiAxMDYtOTJ6IiBmaWxsPSJub25lIiBzdHJva2U9InVybCgjZ2JSaW1jLWZ3Ym90KSIgc3Ryb2tlLXdpZHRoPSI5Ij48L3BhdGg+IDwvc3ZnPg==") center / contain no-repeat;
  filter: drop-shadow(0 7px 12px rgba(5, 10, 40, .45)) drop-shadow(0 0 9px rgba(106, 243, 205, .35));
}
#cbw-chat-root #cbw-header .cbw-htitle {
  flex: 1;
  min-width: 0;
  gap: 0;
  line-height: 1.6;
}
#cbw-chat-root #cbw-header .cbw-htitle > span:first-child {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: "Sora", system-ui, sans-serif;
  font-size: 16px;
  font-weight: 600;
}
#cbw-chat-root #cbw-header .cbw-htitle > span:first-child::after {
  content: "IA";
  padding: 2px 7px;
  border-radius: 99px;
  background: rgba(31, 189, 146, .12);
  color: #0e8a69;
  font: 700 10.5px/1.6 "Satoshi", system-ui, sans-serif;
  letter-spacing: .05em;
}
#cbw-chat-root #cbw-header .cbw-hsub {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 2px;
  font-family: "Satoshi", system-ui, sans-serif;
  font-size: 12.5px;
  line-height: 20px;
  font-weight: 400;
  color: #5b6484;
  opacity: 1;
}
#cbw-chat-root #cbw-header .cbw-hsub::before {
  content: "";
  width: 7px;
  height: 7px;
  flex: none;
  border-radius: 50%;
  background: var(--gx-green-mid);
  box-shadow: 0 0 0 3px rgba(31, 189, 146, .18);
}
#cbw-chat-root #cbw-header .cbw-hsub a { color: #0e8a69; }
#cbw-chat-root #cbw-close {
  width: 34px;
  height: 34px;
  flex: none;
  border-radius: 50%;
  background: rgba(10, 18, 64, .06) url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMEExMjQwIiBzdHJva2Utd2lkdGg9IjIuMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj48cGF0aCBkPSJNNiA2bDEyIDEyTTE4IDZMNiAxOCIvPjwvc3ZnPg==") center / 14px no-repeat;
  color: transparent;
  font-size: 0;
  transition: background-color .2s;
}
#cbw-chat-root #cbw-close:hover { background-color: rgba(10, 18, 64, .12); }
#cbw-chat-root #cbw-close:focus-visible { outline: 2px solid #0e8a69; outline-offset: 2px; }

/* ---------- Conversación ---------- */
#cbw-chat-root #cbw-msgs {
  min-height: 64px;
  padding: 16px;
  gap: 10px;
  background: transparent;
  scroll-behavior: smooth;
  overscroll-behavior: contain;
}
#cbw-chat-root .cbw-bubble {
  max-width: 86%;
  padding: 10px 13px;
  border-radius: 16px;
  font-size: 14px;
  line-height: 1.45;
}
#cbw-chat-root .cbw-bubble.bot {
  background: #f1faf6;
  color: var(--gx-navy);
  border: 1px solid rgba(31, 189, 146, .14);
  border-bottom-left-radius: 5px;
}
#cbw-chat-root .cbw-bubble.user {
  background: var(--gx-navy);
  color: #fff;
  font-weight: 500;
  border-bottom-right-radius: 5px;
}
#cbw-chat-root .cbw-bubble a { color: #0e8a69; font-weight: 600; text-underline-offset: 3px; }
#cbw-chat-root .cbw-bubble.user a { color: var(--gx-mint); }
#cbw-chat-root .cbw-bubble.note {
  background: transparent;
  border: 0;
  color: #5b6484;
  font-size: 12px;
}
#cbw-chat-root .cbw-media { border-radius: 12px; }

/* "Escribiendo…": tres puntos verdes animados en lugar del texto. */
#cbw-chat-root .cbw-bubble.typing {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  width: auto;
  padding: 13px 14px;
  background: #f1faf6;
  border: 1px solid rgba(31, 189, 146, .14);
  border-bottom-left-radius: 5px;
  font-size: 0;
  color: transparent;
  font-style: normal;
}
#cbw-chat-root .cbw-bubble.typing::before,
#cbw-chat-root .cbw-bubble.typing::after {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--gx-green-mid);
  animation: gx-type 1s infinite ease-in-out;
}
#cbw-chat-root .cbw-bubble.typing::before {
  box-shadow: 11px 0 0 var(--gx-green-mid);
  margin-right: 11px;
}
#cbw-chat-root .cbw-bubble.typing::after { animation-delay: .3s; }

/* ---------- Chips de respuesta rápida (gro-chips.js) ----------
   Como .fw-chip de grovex.cl: píldoras blancas con borde verde. */
#cbw-chat-root .gx-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  padding: 0 16px 12px;
}
#cbw-chat-root .gx-chips[hidden] { display: none; }
#cbw-chat-root .gx-chip {
  min-height: 36px;
  padding: 8px 12px;
  border-radius: 99px;
  border: 1px solid rgba(31, 189, 146, .45);
  background: #fff;
  color: var(--gx-navy);
  font: 500 13px/1.6 "Satoshi", system-ui, sans-serif;
  text-align: left;
  cursor: pointer;
  transition: background-color .2s, border-color .2s;
}
#cbw-chat-root .gx-chip:hover {
  background: #f1faf6;
  border-color: var(--gx-green-mid);
}
#cbw-chat-root .gx-chip:focus-visible {
  outline: 2px solid #0e8a69;
  outline-offset: 2px;
}

/* ---------- Formulario de datos (gro-chips.js) ----------
   Ocupa el lugar del campo de escribir hasta que la persona deja nombre,
   correo y teléfono. Campos como los del chat: gris claro, borde verde al
   escribir; etiquetas visibles y errores debajo de cada campo. */
#cbw-chat-root.gx-pide-datos #cbw-form { display: none; }
#cbw-chat-root .gx-datos {
  display: grid;
  gap: 10px;
  flex: none;
  max-height: 72%;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 14px 16px 12px;
  border-top: 1px solid rgba(10, 18, 64, .07);
  background: linear-gradient(180deg, #f1faf6, #fff 60%);
}
#cbw-chat-root .gx-datos[hidden] { display: none; }
#cbw-chat-root .gx-datos-titulo {
  margin: 0;
  font: 600 15px/1.3 "Sora", system-ui, sans-serif;
  color: var(--gx-navy);
}
#cbw-chat-root .gx-datos-sub {
  margin: -6px 0 2px;
  font-size: 12.5px;
  line-height: 1.45;
  color: #5b6484;
}
#cbw-chat-root .gx-campo { display: grid; gap: 4px; }
#cbw-chat-root .gx-campo label {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--gx-navy);
}
#cbw-chat-root .gx-campo input {
  height: 44px;
  padding: 0 14px;
  border-radius: 12px;
  border: 1px solid rgba(10, 18, 64, .12);
  background: #f6f8fb;
  color: var(--gx-navy);
  font: inherit;
  font-size: 16px;
  outline: none;
}
#cbw-chat-root .gx-campo input::placeholder { color: #5b6484; }
#cbw-chat-root .gx-campo input:focus {
  background: #fff;
  border-color: var(--gx-green-mid);
  box-shadow: 0 0 0 3px rgba(31, 189, 146, .16);
}
#cbw-chat-root .gx-campo input[aria-invalid="true"] {
  border-color: #b42335;
  box-shadow: 0 0 0 3px rgba(180, 35, 53, .12);
}
#cbw-chat-root .gx-error {
  margin: 0;
  font-size: 12.5px;
  font-weight: 600;
  color: #b42335;
}
#cbw-chat-root .gx-error[hidden] { display: none; }
#cbw-chat-root .gx-datos-enviar {
  height: 44px;
  margin-top: 2px;
  border: 0;
  border-radius: 12px;
  background: var(--gx-mint);
  color: var(--gx-navy);
  font: 700 15px/1 "Satoshi", system-ui, sans-serif;
  cursor: pointer;
  transition: background-color .2s;
}
#cbw-chat-root .gx-datos-enviar:hover { background: var(--gx-mint-hover); }
#cbw-chat-root .gx-datos-enviar:focus-visible { outline: 2px solid #0e8a69; outline-offset: 2px; }
#cbw-chat-root .gx-datos-nota {
  margin: 0;
  font-size: 11.5px;
  line-height: 1.5;
  color: #5b6484;
}
#cbw-chat-root .gx-datos-nota a { color: #0e8a69; text-decoration: underline; }

/* ---------- Escribir ---------- */
#cbw-chat-root #cbw-form {
  gap: 8px;
  padding: 12px 12px 8px;
  background: transparent;
  border-top: 1px solid rgba(10, 18, 64, .07);
}
#cbw-chat-root #cbw-input {
  height: 44px;
  padding: 0 14px;
  border-radius: 12px;
  border: 1px solid rgba(10, 18, 64, .12);
  background: #f6f8fb;
  color: var(--gx-navy);
  font: inherit;
  font-size: 16px;
}
#cbw-chat-root #cbw-input::placeholder { color: #5b6484; }
#cbw-chat-root #cbw-input:focus {
  background: #fff;
  border-color: var(--gx-green-mid);
  box-shadow: 0 0 0 3px rgba(31, 189, 146, .16);
}
#cbw-chat-root #cbw-send {
  width: 44px;
  height: 44px;
  flex: none;
  padding: 0;
  border-radius: 12px;
  background: var(--gx-mint) url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTQgMTJsMTYtOC02IDE2LTIuNS02LjVMNCAxMnoiIGZpbGw9IiMwQTEyNDAiLz48L3N2Zz4=") center / 18px no-repeat;
  color: transparent;
  font-size: 0;
  transition: background-color .2s;
}
#cbw-chat-root #cbw-send:hover:not(:disabled) { background-color: var(--gx-mint-hover); }
#cbw-chat-root #cbw-send:focus-visible { outline: 2px solid #0e8a69; outline-offset: 2px; }

/* ---------- Celular ---------- */
@media (max-width: 640px) {
  #cbw-chat-root {
    right: calc(14px + env(safe-area-inset-right, 0px)) !important;
    bottom: calc(14px + env(safe-area-inset-bottom, 0px)) !important;
  }
  #cbw-chat-root #cbw-fab { width: 68px; height: 74px; }
  #cbw-chat-root #cbw-panel {
    bottom: 84px;
    width: calc(100vw - 28px);
    height: calc(100vh - 150px);
  }
}

@keyframes gx-hola { 0% { opacity: 0; transform: translateX(7px) scale(.96); } 8%, 85% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateX(7px) scale(.96); } }
@keyframes gx-in { from { opacity: 0; transform: translateY(12px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes gx-type { 0%, 60%, 100% { opacity: .3; transform: none; } 30% { opacity: 1; transform: translateY(-3px); } }

@media (prefers-reduced-motion: reduce) {
  /* Sin desplazamientos: el panel aparece con opacidad, los puntitos laten y
     el saludo no se mueve. Los cambios de estado siguen visibles. */
  #cbw-chat-root #cbw-panel.open { animation: gx-aparece .2s ease-out; }
  #cbw-chat-root .cbw-bubble.typing::before,
  #cbw-chat-root .cbw-bubble.typing::after { animation: gx-late 1.2s ease-in-out infinite; }
  #cbw-chat-root #cbw-fab:hover,
  #cbw-chat-root #cbw-fab:active { transform: none; }
  #cbw-chat-root:not(:has(#cbw-panel.open)) #cbw-fab::before,
  #cbw-chat-root:not(:has(#cbw-panel.open)) #cbw-fab::after { animation-name: gx-hola-quieto; transform: none; }
}
@keyframes gx-hola-quieto { 0% { opacity: 0; } 8%, 85% { opacity: 1; } 100% { opacity: 0; } }
@keyframes gx-aparece { from { opacity: 0; } to { opacity: 1; } }
@keyframes gx-late { 0%, 100% { opacity: .35; } 50% { opacity: 1; } }

/* ---------- v12: auditoría Impeccable ---------- */

/* P1. Botones y segmentos con fondo de estado y texto blanco (el selector
   Activo/Entrenamiento/Pausado de Rendimiento). Los colores vienen fijos en el
   panel (#2DA771, #E58A2F, #DC4B3C) y con blanco quedaban en 2,6-3,6:1. Las
   variantes con transparencia (bg-state-ok/10) son otras clases y no cambian. */
html:root .bg-state-ok { background-color: #0b6b52; }    /* 6,9:1 con blanco */
html:root .bg-state-warn { background-color: #9a4a12; }  /* 6,7:1 */
html:root .bg-state-bad { background-color: #b42335; }   /* 6,5:1 */

/* P2. Series de los gráficos con la paleta Grovex (antes cobalto, violeta y
   magenta). Navy, verde, ocre, gris y rojo: se distinguen por luminosidad y
   no solo por tono, y todas pasan 3:1 sobre blanco. */
html:root:root {
  --serie-1: #15276e;
  --serie-2: #0e8a69;
  --serie-3: #9a4a12;
  --serie-4: #5b6484;
  --serie-5: #b42335;
}

/* P2. Títulos de tarjeta: una sola escala. En Inicio venían a 22 px y peso
   fino en un style inline; en otras secciones, a 14 px. */
html:root #root main h3 {
  font-family: var(--font-display-grovex);
  font-size: 18px !important;
  line-height: 1.3;
  font-weight: 600;
  letter-spacing: -0.02em;
}

/* P2. Iniciales de los avatares: el panel pinta un tono de identidad en línea
   y encima texto navy (3,7:1 en los tonos medios). Un velo blanco interior
   aclara el tono y deja las iniciales por sobre 6:1 sin perder la identidad. */
html:root #root .rounded-full[style*="color: var(--brand-on)"] {
  box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.5);
  color: #0a1240 !important;
  font-size: 11px !important;
}

/* P2. Sin etiqueta sobre el título de cada página ("Inicio", "Atención",
   "Operativa · CRM"): repite el menú y compite con el título. Las etiquetas de
   las cifras (Conversaciones, Resueltas por IA…) no se tocan. */
html:root #root main .eyebrow:has(+ h1),
html:root #root main div:has(+ h1) > .eyebrow {
  display: none;
}

/* P2. Texto de /demo a un ancho de lectura cómodo (antes ~111 caracteres). */
html:root #root main.max-w-3xl > p {
  max-width: 65ch;
}

/* P1. "Reducir movimiento" en el widget: sin desplazamientos, solo opacidad. */
@media (prefers-reduced-motion: reduce) {
  html:root #cbw-chat-root #cbw-panel.open { animation: gx-aparece .2s ease-out; }
  html:root #cbw-chat-root .cbw-bubble.typing::before,
  html:root #cbw-chat-root .cbw-bubble.typing::after { animation: gx-late 1.2s ease-in-out infinite; }
  html:root #cbw-chat-root #cbw-fab:hover,
  html:root #cbw-chat-root #cbw-fab:active { transform: none; }
}
@keyframes gx-aparece { from { opacity: 0; } to { opacity: 1; } }
@keyframes gx-late { 0%, 100% { opacity: .35; } 50% { opacity: 1; } }

/* Lo que dibuja el navegador, también con la marca: selección de texto,
   cursor de escritura y barras de desplazamiento. */
html:root ::selection { background: #6af3cd; color: #0a1240; }
html:root input,
html:root textarea { caret-color: #0e8a69; }
html:root:root { scrollbar-color: #c9d3dc transparent; }
html:root #root > div > aside.border-r { scrollbar-color: rgba(255, 255, 255, 0.18) transparent; }