/* Primera parte del CSS global del portal actual, en el mismo orden que App.razor: lo que va antes del CSS aislado de los
   componentes (Bheli.CompanyPortal.Web.styles.css). Después van los CSS Modules de las piezas compartidas (main.tsx) y
   recién después legacy.css, así team.css y los demás pisan a los módulos igual que en Blazor. *//* Copper/Amber preset. Raw color values belong only in this file.
   Components consume colors.css, never these palette/preset variables. */
:root,
[data-color-theme="bheli-copper"] {
    --palette-copper-50: #FFF7F1;
    --palette-copper-100: #FCEADB;
    --palette-copper-200: #F7D0B5;
    --palette-copper-300: #EFB28A;
    --palette-copper-400: #E18E5D;
    --palette-copper-500: #C96F3F;
    --palette-copper-600: #AC5530;
    --palette-copper-700: #8B4229;
    --palette-copper-800: #703624;
    --palette-copper-900: #5B2E21;
    --palette-copper-950: #32170F;
    --palette-amber-50: #FFF9EB;
    --palette-amber-100: #FFF0C7;
    --palette-amber-200: #FFDF8A;
    --palette-amber-300: #F5C65A;
    --palette-amber-400: #E3A43D;
    --palette-amber-500: #C98527;
    --palette-amber-600: #A5651D;
    --palette-amber-700: #804B1A;
    --palette-amber-800: #663D1A;
    --palette-amber-900: #553418;
    --palette-amber-950: #301A0B;
    --palette-neutral-0: #FFFFFF;
    --palette-neutral-50: #FBF8F6;
    --palette-neutral-100: #F5EFEB;
    --palette-neutral-200: #E9DED7;
    --palette-neutral-300: #D8C8BE;
    --palette-neutral-400: #B7A59B;
    --palette-neutral-500: #948078;
    --palette-neutral-600: #735F58;
    --palette-neutral-700: #594943;
    --palette-neutral-750: #463C3A;
    --palette-neutral-800: #3C312D;
    --palette-neutral-825: #322A26;
    --palette-neutral-850: #2C2421;
    --palette-neutral-900: #221B19;
    --palette-neutral-925: #1B1614;
    --palette-neutral-950: #15110F;
    --palette-neutral-1000: #0D0A09;
    --palette-success-50: #EFF8F3;
    --palette-success-100: #D8F0E2;
    --palette-success-200: #B4DFC8;
    --palette-success-300: #82C8A5;
    --palette-success-400: #52AC82;
    --palette-success-500: #338F67;
    --palette-success-600: #267451;
    --palette-success-700: #205D43;
    --palette-success-800: #1D4B37;
    --palette-success-900: #193E30;
    --palette-success-950: #0D241B;
    --palette-danger-50: #FFF4F2;
    --palette-danger-100: #FFE3DE;
    --palette-danger-200: #FFC8BF;
    --palette-danger-300: #F6A091;
    --palette-danger-400: #EC6C5E;
    --palette-danger-500: #D94F43;
    --palette-danger-600: #B93C34;
    --palette-danger-700: #96322D;
    --palette-danger-800: #7C2C29;
    --palette-danger-900: #672824;
    --palette-danger-950: #381211;
    --palette-info-50: #F2F7FC;
    --palette-info-100: #DDEAF7;
    --palette-info-200: #BDD5EE;
    --palette-info-300: #9BBCE2;
    --palette-info-400: #719BCF;
    --palette-info-500: #527FB9;
    --palette-info-600: #3D6EA8;
    --palette-info-700: #2E5C91;
    --palette-info-800: #294C75;
    --palette-info-900: #263F60;
    --palette-info-950: #17273D;
    /* Independently designed low-luminance fills, not inverted scales. */
    --palette-brand-dark-fill: #3A241A;
    --palette-brand-dark-hover: #4A2C1E;
    --palette-amber-dark-fill: #2C2112;
    --palette-success-dark-fill: #13251E;
    --palette-danger-dark-fill: #2B1715;
    --palette-info-dark-fill: #142033;

    --preset-canvas: light-dark(var(--palette-neutral-50), var(--palette-neutral-950));
    --preset-surface: light-dark(var(--palette-neutral-0), var(--palette-neutral-925));
    --preset-surface-subtle: light-dark(var(--palette-neutral-100), var(--palette-neutral-900));
    --preset-surface-muted: light-dark(var(--palette-neutral-200), var(--palette-neutral-850));
    --preset-surface-raised: light-dark(var(--palette-neutral-0), var(--palette-neutral-825));
    --preset-surface-inverse: light-dark(var(--palette-neutral-900), var(--palette-neutral-100));
    --preset-sidebar: light-dark(var(--palette-neutral-100), var(--palette-neutral-925));
    --preset-text-primary: light-dark(var(--palette-neutral-900), var(--palette-neutral-100));
    /* Texto del botón claro (secundario) según C04, #2A2420 en claro; antes el texto principal #221B19 (dueño, 26-10-2026). */
    --preset-button-secondary-text: light-dark(#2A2420, var(--palette-neutral-100));
    --preset-text-secondary: light-dark(var(--palette-neutral-700), var(--palette-neutral-300));
    --preset-text-muted: light-dark(#756A62, var(--palette-neutral-400));
    --preset-text-disabled: var(--palette-neutral-500);
    --preset-text-inverse: light-dark(var(--palette-neutral-0), var(--palette-neutral-950));
    --preset-border-subtle: light-dark(var(--palette-neutral-200), var(--palette-neutral-825));
    --preset-border-default: light-dark(var(--palette-neutral-300), var(--palette-neutral-750));
    --preset-border-strong: light-dark(var(--palette-neutral-400), var(--palette-neutral-700));
    --preset-control-border: light-dark(#978A80, #796C63);
    /* Terracota del kit (C26, base de acción y marca) en claro; antes copper-600 #AC5530 (decisión del dueño, 26-10-2026). */
    --preset-brand: light-dark(oklch(0.55 0.14 40), var(--palette-copper-400));
    /* Hover del kit (C26) en claro; antes copper-700 #8B4229 (decisión del dueño, 26-10-2026). */
    --preset-brand-hover: light-dark(oklch(0.49 0.14 40), var(--palette-copper-300));
    --preset-brand-active: light-dark(var(--palette-copper-800), var(--palette-copper-500));
    --preset-brand-subtle: light-dark(var(--palette-copper-50), var(--palette-brand-dark-fill));
    --preset-brand-subtle-hover: light-dark(var(--palette-copper-100), var(--palette-brand-dark-hover));
    --preset-brand-border: light-dark(var(--palette-copper-300), var(--palette-copper-700));
    --preset-on-brand: light-dark(var(--palette-neutral-0), #1E1A17);
    --preset-selection-bg: light-dark(var(--palette-copper-100), var(--palette-brand-dark-fill));
    --preset-selection-text: light-dark(var(--palette-copper-950), var(--palette-copper-200));
    --preset-ai-accent: light-dark(var(--palette-amber-600), var(--palette-amber-300));
    --preset-ai-bg: light-dark(var(--palette-amber-50), var(--palette-amber-dark-fill));
    --preset-ai-border: light-dark(var(--palette-amber-200), var(--palette-amber-700));
    --preset-ai-text: light-dark(var(--palette-amber-800), var(--palette-amber-200));
    --preset-success-bg: light-dark(var(--palette-success-50), var(--palette-success-dark-fill));
    --preset-success-text: light-dark(var(--palette-success-700), var(--palette-success-300));
    --preset-success-border: light-dark(var(--palette-success-300), var(--palette-success-600));
    --preset-success-icon: light-dark(var(--palette-success-600), var(--palette-success-300));
    --preset-warning-bg: var(--preset-ai-bg);
    --preset-warning-text: light-dark(var(--palette-amber-700), var(--palette-amber-300));
    --preset-warning-border: light-dark(var(--palette-amber-300), var(--palette-amber-600));
    --preset-warning-icon: var(--preset-ai-accent);
    --preset-danger-bg: light-dark(var(--palette-danger-50), var(--palette-danger-dark-fill));
    --preset-danger-text: light-dark(var(--palette-danger-700), var(--palette-danger-300));
    --preset-danger-border: light-dark(var(--palette-danger-300), var(--palette-danger-700));
    --preset-danger-icon: light-dark(var(--palette-danger-600), var(--palette-danger-300));
    --preset-danger-action: light-dark(var(--palette-danger-600), var(--palette-danger-400));
    --preset-danger-hover: light-dark(var(--palette-danger-700), var(--palette-danger-300));
    --preset-info-bg: light-dark(var(--palette-info-50), var(--palette-info-dark-fill));
    --preset-info-text: light-dark(var(--palette-info-700), var(--palette-info-300));
    --preset-info-border: light-dark(var(--palette-info-300), var(--palette-info-600));
    --preset-info-icon: light-dark(var(--palette-info-600), var(--palette-info-300));
    --preset-overlay: light-dark(rgba(50,23,15,0.38), rgba(0,0,0,0.62));
    --preset-shadow-color: light-dark(rgb(50 23 15 / .08), rgb(0 0 0 / .4));
    --preset-shadow-lg-color: light-dark(rgb(50 23 15 / .12), rgb(0 0 0 / .5));
    --preset-scroll-thumb: light-dark(var(--palette-neutral-400), var(--palette-neutral-700));
    --preset-scroll-thumb-hover: light-dark(var(--palette-neutral-500), var(--palette-neutral-600));
    --preset-code-text: light-dark(var(--palette-neutral-800), var(--palette-neutral-200));
    --preset-skeleton-highlight: light-dark(var(--palette-neutral-100), var(--palette-neutral-800));
    /* Chart series are not UI statuses. */
    --preset-chart-1: var(--preset-brand);
    --preset-chart-2: light-dark(var(--palette-info-600), #7FA7D6);
    --preset-chart-3: light-dark(#2E7D5B, var(--palette-success-300));
    --preset-chart-4: var(--preset-ai-accent);
    --preset-chart-5: light-dark(#9B4D6F, #D990AE);
    --preset-chart-6: light-dark(#3A7D78, #72B8B0);
    --preset-chart-7: light-dark(#6B5CA5, #A89BDB);
    --preset-chart-8: var(--preset-text-muted);
    /* Identidad Bheli (kit BRAND.md): valores exactos de marca. brand.css los consume vía --logo-*. */
    --bheli-cobre: #AC5530;
    --bheli-cobre-dark: #E18E5D;
    --bheli-miel: #A5651D;
    --bheli-miel-dark: #F5C65A;
    --bheli-crema: #FBF8F6;
    --bheli-arena: #F5EFEB;
    --bheli-arena-2: #E9DED7;
    --bheli-espresso: #1B1614;
    --bheli-espresso-0: #15110F;
    --bheli-carbon: #221B19;
    --bheli-font: 'Lexend', 'Segoe UI', system-ui, sans-serif;
    --bheli-logo-black: #000000;
    --bheli-logo-white: #FFFFFF;
}

/* Chat dedicado: tokens de la referencia aprobada, aislados del Dock y de la marca global. */
.chat-workspace {
    --chat-accent: oklch(0.55 0.14 40);
    --chat-accent-hover: oklch(0.49 0.14 40);
    --chat-accent-soft: oklch(0.955 0.025 50);
    --chat-accent-border: oklch(0.85 0.06 45);
    --chat-accent-text: oklch(0.45 0.12 40);
    --chat-ai-text: oklch(0.45 0.13 300);
    --chat-ai-soft: oklch(0.955 0.022 300);
    --chat-ai-border: oklch(0.86 0.05 300);
    --chat-unassigned-text: oklch(0.52 0.1 70);
    --chat-unassigned-soft: oklch(0.955 0.035 80);
    --chat-unassigned-border: oklch(0.86 0.06 80);
    --chat-text: #2A2420;
    --chat-text-secondary: #6B615A;
    /* C01: gris terciario AA sobre las cuatro superficies cálidas aprobadas. */
    --chat-text-tertiary: #756A62;
    /* C56 · íconos del cuadro de texto; C07 1.14.10 · línea entre grupos de la fila de filtros. */
    --chat-composer-icon: #5F554E;
    --chat-filter-divider: #E3DAD2;
    --chat-border: #ECE5DE;
    --chat-chip-border: #DFD5CC;
    --chat-list-background: #FFFFFF;
    --chat-thread-background: #F5EFE9;
    --chat-search-background: #F3EEE9;
    --chat-neutral-soft: #F2ECE6;
    --chat-active-background: oklch(0.955 0.012 60);
    --chat-own-background: oklch(0.955 0.035 55);
    --chat-own-text: var(--chat-text);
    --chat-note-background: oklch(0.95 0.02 70);
    --chat-menu-radius: 14px;
    --chat-row-radius: 12px;
    --chat-menu-shadow: 0 12px 32px rgb(42 36 32 / .14), 0 2px 6px rgb(42 36 32 / .06);
    --chat-bubble-shadow: 0 1px 1px rgb(42 36 32 / .07);
    --chat-toast-shadow: 0 8px 24px rgb(0 0 0 / .18);
    --chat-row-hover-shadow: inset 0 0 0 999px rgb(60 40 20 / .035);
    --chat-on-unread: #FFF;
    --chat-toast-background: #2A2420;
    --chat-toast-text: #FFFFFF;
}
:root[data-theme="dark"] .chat-workspace {
    --chat-on-unread: var(--primary-contrast);
    --chat-accent: var(--primary);
    --chat-accent-hover: var(--link-hover);
    --chat-accent-soft: var(--primary-soft);
    --chat-accent-border: #7B503D;
    --chat-accent-text: #F2B493;
    --chat-ai-text: #D6B8F4;
    --chat-ai-soft: #302437;
    --chat-ai-border: #665173;
    --chat-unassigned-text: #E7C17A;
    --chat-unassigned-soft: #362B1D;
    --chat-unassigned-border: #756044;
    --chat-text: var(--text);
    --chat-text-secondary: var(--text-muted);
    --chat-text-tertiary: var(--text-muted);
    --chat-composer-icon: #B7A59B;
    --chat-filter-divider: #5A4E48;
    --chat-border: var(--border);
    --chat-chip-border: var(--border);
    --chat-list-background: var(--surface);
    --chat-thread-background: var(--canvas);
    --chat-search-background: var(--surface-muted);
    --chat-neutral-soft: var(--surface-muted);
    --chat-active-background: var(--surface-muted);
    --chat-own-background: #493024;
    --chat-note-background: var(--surface-muted);
    --chat-menu-shadow: var(--shadow-lg);
}
/* Sin el adaptador JS, SYSTEM conserva la variante oscura del chat. */
@media (prefers-color-scheme: dark) {
    :root[data-theme="system"] .chat-workspace {
        --chat-on-unread: var(--primary-contrast);
        --chat-accent: var(--primary);
        --chat-accent-hover: var(--link-hover);
        --chat-accent-soft: var(--primary-soft);
        --chat-accent-border: #7B503D;
        --chat-accent-text: #F2B493;
        --chat-ai-text: #D6B8F4;
        --chat-ai-soft: #302437;
        --chat-ai-border: #665173;
        --chat-unassigned-text: #E7C17A;
        --chat-unassigned-soft: #362B1D;
        --chat-unassigned-border: #756044;
        --chat-text: var(--text);
        --chat-text-secondary: var(--text-muted);
        --chat-text-tertiary: var(--text-muted);
        --chat-composer-icon: #B7A59B;
        --chat-filter-divider: #5A4E48;
        --chat-border: var(--border);
        --chat-chip-border: var(--border);
        --chat-list-background: var(--surface);
        --chat-thread-background: var(--canvas);
        --chat-search-background: var(--surface-muted);
        --chat-neutral-soft: var(--surface-muted);
        --chat-active-background: var(--surface-muted);
        --chat-own-background: #493024;
        --chat-note-background: var(--surface-muted);
        --chat-menu-shadow: var(--shadow-lg);
    }
}
/* Paleta finita estable: los componentes seleccionan clases, nunca estilos inline. */
.chat-workspace .chat-avatar-tone-0 { --chat-avatar-hue: 0; }
.chat-workspace .chat-avatar-tone-1 { --chat-avatar-hue: 30; }
.chat-workspace .chat-avatar-tone-2 { --chat-avatar-hue: 60; }
.chat-workspace .chat-avatar-tone-3 { --chat-avatar-hue: 90; }
.chat-workspace .chat-avatar-tone-4 { --chat-avatar-hue: 120; }
.chat-workspace .chat-avatar-tone-5 { --chat-avatar-hue: 150; }
.chat-workspace .chat-avatar-tone-6 { --chat-avatar-hue: 180; }
.chat-workspace .chat-avatar-tone-7 { --chat-avatar-hue: 210; }
.chat-workspace .chat-avatar-tone-8 { --chat-avatar-hue: 240; }
.chat-workspace .chat-avatar-tone-9 { --chat-avatar-hue: 270; }
.chat-workspace .chat-avatar-tone-10 { --chat-avatar-hue: 300; }
.chat-workspace .chat-avatar-tone-11 { --chat-avatar-hue: 330; }
.chat-workspace :is(.chat-row-avatar, .chat-thread-avatar, .a1-filter-avatar, .a1-agent-avatar, .a2-agent-avatar, .chat-contact-agent-avatar, .chat-group-chip-avatar) {
    --chat-avatar-background: light-dark(oklch(0.93 0.035 var(--chat-avatar-hue, 50)), oklch(0.32 0.035 var(--chat-avatar-hue, 50)));
    --chat-avatar-text: light-dark(oklch(0.42 0.08 var(--chat-avatar-hue, 50)), oklch(0.85 0.05 var(--chat-avatar-hue, 50)));
}

.reply-library{--reply-accent:oklch(.55 .14 40);--reply-accent-hover:oklch(.49 .14 40);--reply-soft:oklch(.955 .025 50);--reply-accent-border:oklch(.85 .06 45);--reply-accent-text:oklch(.45 .12 40);--reply-text:#2A2420;--reply-secondary:#6B615A;--reply-meta:#756A62;--reply-line:#ECE5DE;--reply-control-border:#DFD5CC;--reply-surface:#FFF;--reply-hover:#F3EDE7;--reply-search:#F3EEE9;--reply-chat:#F5EFE9;--reply-own:oklch(.955 .035 55);--reply-variable:oklch(.92 .08 85);--reply-neutral:#EFE8E1;--reply-ochre:oklch(.955 .035 80);--reply-ochre-text:oklch(.52 .1 70);--reply-focus:oklch(.93 .04 50);--reply-floating:0 12px 32px rgb(42 36 32/.14),0 2px 6px rgb(42 36 32/.06)}

:root[data-theme=dark] .reply-library{--reply-accent:var(--primary);--reply-accent-hover:var(--link-hover);--reply-soft:var(--primary-soft);--reply-accent-border:#7B503D;--reply-accent-text:#F2B493;--reply-text:var(--text);--reply-secondary:var(--text-muted);--reply-meta:var(--text-muted);--reply-line:var(--border);--reply-control-border:var(--border);--reply-surface:var(--surface);--reply-hover:var(--surface-muted);--reply-search:var(--surface-muted);--reply-chat:var(--canvas);--reply-own:#493024;--reply-variable:#655027;--reply-neutral:var(--surface-muted);--reply-ochre:#362B1D;--reply-ochre-text:#E7C17A;--reply-focus:var(--primary-soft);--reply-floating:var(--shadow-lg)}

/* Chat › Equipo R1 · tokens de .tm (catálogo 1.13, mismos pares que el Chat y Respuestas), claro y oscuro; team.css
   solo los usa con var(). */
.tm{--tm-accent:oklch(.55 .14 40);--tm-accent-hover:oklch(.49 .14 40);--tm-accent-pressed:oklch(.44 .13 40);--tm-on-accent:#FFF;
 --tm-soft:oklch(.955 .025 50);--tm-soft-pressed:oklch(.93 .035 50);--tm-accent-border:oklch(.85 .06 45);--tm-accent-text:oklch(.45 .12 40);
 --tm-text:#2A2420;--tm-secondary:#6B615A;--tm-meta:#756A62;--tm-disabled:#B9AEA5;--tm-line:#ECE5DE;--tm-control-border:var(--control-border);
 --tm-surface:#FFF;--tm-page:#FBF8F5;--tm-hover:#F3EDE7;--tm-row-hover:#F6F1EC;--tm-search:#F3EEE9;--tm-secondary-bg:#F3EDE7;
 --tm-secondary-hover:#ECE4DC;--tm-secondary-pressed:#E3D9CF;--tm-neutral:#F2ECE6;--tm-switch-off:var(--control-border);--tm-ochre:oklch(.955 .035 80);
 --tm-ochre-text:oklch(.52 .1 70);--tm-error:oklch(.5 .17 25);--tm-focus:oklch(.93 .04 50);
 --tm-floating:0 12px 32px rgb(42 36 32/.14),0 2px 6px rgb(42 36 32/.06);
 --tm-knob:#FFF;--tm-toast-background:#2A2420;--tm-toast-text:#FFF;--tm-toast-link:oklch(.82 .09 50);--tm-menu-border:#EFE8E1;--tm-mask:var(--ui-mask)}
:root[data-theme=dark] .tm{--tm-accent:var(--primary);--tm-accent-hover:var(--link-hover);--tm-accent-pressed:var(--link-hover);--tm-on-accent:#1E1A17;
 --tm-soft:var(--primary-soft);--tm-soft-pressed:#4A3127;--tm-accent-border:#7B503D;--tm-accent-text:#F2B493;--tm-text:var(--text);
 --tm-secondary:var(--text-muted);--tm-meta:var(--text-muted);--tm-disabled:#7E746D;--tm-line:var(--border);--tm-control-border:var(--control-border);
 --tm-surface:var(--surface);--tm-page:var(--canvas);--tm-hover:var(--surface-muted);--tm-row-hover:var(--surface-muted);
 --tm-search:var(--surface-muted);--tm-secondary-bg:var(--surface-muted);--tm-secondary-hover:#3A332F;--tm-secondary-pressed:#433B36;
 --tm-neutral:var(--surface-muted);--tm-switch-off:var(--control-border);--tm-ochre:#362B1D;--tm-ochre-text:#E7C17A;--tm-error:oklch(.8 .1 25);
 --tm-focus:var(--primary-soft);--tm-floating:var(--shadow-lg);--tm-menu-border:var(--tm-line)}
/* K7 · C01 1.14.5: el anillo de foco es el token global --focus-ring-shadow (color-controls.css); el tema .tm ya no tiene copia. */
.tm .tm-avatar{--tm-avatar-background:light-dark(oklch(.93 .035 var(--chat-avatar-hue,50)),oklch(.32 .035 var(--chat-avatar-hue,50)));
 --tm-avatar-text:light-dark(oklch(.42 .08 var(--chat-avatar-hue,50)),oklch(.85 .05 var(--chat-avatar-hue,50)))}

/* A1 · C26: additional semantic pairs used by the revised components. */
:root {
 --ui-tertiary: light-dark(#756A62,var(--preset-text-muted));
 --ui-error: light-dark(oklch(.5 .17 25),oklch(.8 .1 25));
 --ui-on-primary: var(--on-brand);
 --ui-control-foreground: light-dark(#3E3631,var(--text-primary));
 --ui-hover: light-dark(#F3EDE7,var(--background-surface-muted));
 --ui-contact-tag-background: light-dark(#F2ECE6,var(--background-surface-muted));
 --ui-contact-tag-foreground: light-dark(#6B615A,var(--text-secondary));
 --channel-whatsapp-background: #25D366;
 --channel-whatsapp-foreground: #FFFFFF;
}
.reply-library {
 --reply-meta: var(--ui-tertiary);
 --reply-on-accent: var(--ui-on-primary);
 --reply-error: var(--ui-error);
}
:root{--ui-mask:#000;--ui-header-secondary:light-dark(#6B615A,var(--text-secondary));}

/* A1 decision3: accessible control borders preserve the approved hue, with adjusted lightness. */
:root{
 --ui-control-border:light-dark(oklch(.64 .02 65),oklch(.66 .025 55));
 --ui-accent-control-border:light-dark(oklch(.62 .06 45),oklch(.68 .06 45));
 --ui-ai-control-border:light-dark(oklch(.62 .05 300),oklch(.68 .05 300));
}
:root .reply-library,:root[data-theme=dark] .reply-library{
 --reply-control-border:var(--ui-control-border);
 --reply-focus:var(--primary);
}
/* Contactos (rondas K y K.1, C04/C07/C13/C27/C28 1.13): píldoras encendidas y presionadas, ✓ de la hoja de orden,
   × y «Deshacer» de las etiquetas, anillo de foco y textos desactivados. Valores del catálogo; en oscuro, los del tema. */
:root{
 --contact-pill-off-border:light-dark(#DFD5CC,var(--border-default));
 --contact-pill-on-background:light-dark(oklch(0.955 0.025 50),var(--brand-subtle));
 --contact-pill-on-border:light-dark(oklch(0.85 0.06 45),var(--brand-border));
 --contact-pill-on-text:light-dark(oklch(0.45 0.12 40),var(--selection-text));
 --contact-pill-pressed:light-dark(oklch(0.93 0.035 50),var(--background-surface-raised));
 --contact-pill-off-pressed:light-dark(oklch(0.955 0.025 50),var(--background-surface-muted));
 --contact-pill-off-pressed-border:light-dark(oklch(0.85 0.06 45),var(--border-default));
 --contact-sort-check:light-dark(oklch(0.5 0.14 40),var(--primary));
 --contact-tag-remove-hover:light-dark(rgba(42,36,32,.08),rgba(255,255,255,.10));
 --contact-tag-remove-pressed:light-dark(rgba(42,36,32,.12),rgba(255,255,255,.16));
 --contact-toast-action:light-dark(oklch(0.82 0.09 50),oklch(0.45 0.12 40));
 --contact-focus-ring:oklch(0.93 0.04 50);
 /* KH7 · C01/C30: sombra de lo que flota (menús, toasts, ventanas) y fondo de página detrás de una ventana. */
 --shadow-floating:0 12px 32px light-dark(rgba(42,36,32,.14),rgba(0,0,0,.45)),0 2px 6px light-dark(rgba(42,36,32,.06),rgba(0,0,0,.25));
 --backdrop-page:light-dark(rgba(42,36,32,.40),rgba(0,0,0,.55));
 --contact-disabled-text:#B9AEA5;
 /* KD4 · C15: variante neutra de la etiqueta (#F2ECE6 / #6B615A); en oscuro, los neutros del tema. */
 --contact-tag-neutral-background:light-dark(#F2ECE6,var(--palette-neutral-850));
 --contact-tag-neutral-text:light-dark(#6B615A,var(--palette-neutral-300));
}
/* C15 1.14.3 · Etiquetas R1: los 20 colores de etiqueta viven en una sola definición, contacts/tagColor.ts (relleno y
   texto de su par, iguales en claro y en oscuro); la etiqueta recibe --contact-tag-background/-foreground en línea. */
/* Píldora de etiqueta de los filtros (C15 1.14.3): sin elegir, la píldora de C07 con un punto de 10 px de su relleno
   (anillo de 1 px) a 6 px del nombre; elegida, llena de su relleno, sin borde, con ✓ y el texto de su par. Sin color
   guardado no recibe variables y va neutra; nunca un color de respaldo. */
.c2-tag-chip {
    --contact-tag-chip-background: var(--contact-tag-background, var(--contact-tag-neutral-background));
    --contact-tag-chip-foreground: var(--contact-tag-foreground, var(--contact-tag-neutral-text));
    --contact-tag-dot-ring: light-dark(rgba(42,36,32,.2), rgba(255,255,255,.24));
}
.c2-tag-dot { flex: 0 0 10px; width: 10px; height: 10px; border-radius: 50%; background: var(--contact-tag-chip-background); box-shadow: 0 0 0 1px var(--contact-tag-dot-ring); }
/* El punto de color de una etiqueta (selector) es el color de su texto; sin color, el neutro. Nunca vacío. */
.e1-tag-dot { --contact-tag-dot: var(--contact-tag-foreground, var(--contact-tag-neutral-text)); }
/* C1 reutiliza el avatar ChatAvatar con sus pares fuera del workspace del chat. */
.c1-workspace .chat-avatar-tone-0{--chat-avatar-hue:0}
.c1-workspace .chat-avatar-tone-1{--chat-avatar-hue:30}
.c1-workspace .chat-avatar-tone-2{--chat-avatar-hue:60}
.c1-workspace .chat-avatar-tone-3{--chat-avatar-hue:90}
.c1-workspace .chat-avatar-tone-4{--chat-avatar-hue:120}
.c1-workspace .chat-avatar-tone-5{--chat-avatar-hue:150}
.c1-workspace .chat-avatar-tone-6{--chat-avatar-hue:180}
.c1-workspace .chat-avatar-tone-7{--chat-avatar-hue:210}
.c1-workspace .chat-avatar-tone-8{--chat-avatar-hue:240}
.c1-workspace .chat-avatar-tone-9{--chat-avatar-hue:270}
.c1-workspace .chat-avatar-tone-10{--chat-avatar-hue:300}
.c1-workspace .chat-avatar-tone-11{--chat-avatar-hue:330}
.c1-workspace :is(.c1-avatar,.c1-mobile-avatar,.c1-detail-avatar,.c1-agent-avatar){
    --contact-avatar-background:light-dark(oklch(.93 .035 var(--chat-avatar-hue,50)),oklch(.32 .035 var(--chat-avatar-hue,50)));
    --contact-avatar-foreground:light-dark(oklch(.42 .08 var(--chat-avatar-hue,50)),oklch(.85 .05 var(--chat-avatar-hue,50)));
}
.c1-workspace .c1-agent-avatar.agent{
    --contact-avatar-background:light-dark(oklch(.955 .022 300),oklch(.3 .06 300));
    --contact-avatar-foreground:light-dark(oklch(.45 .13 300),oklch(.86 .08 300));
}
/* E1.4 · EC6 (E43): empleado IA y toast con los mismos valores que el chat (--chat-ai-*, --chat-toast-*, S7), en claro y oscuro;
   el bloque del chat no se toca (sus pruebas de contrato fijan sus selectores).
   E1.4 · EC2/EC3/EC5: tonos del mapa según data-ref="calor-tonos" (1–3 con número oscuro, 4–5 con blanco, ≥ 4,5:1);
   serie anterior #B9AEA5; línea guía, aviso y sombra del interruptor como tokens (sin literales en statistics.css).
   E1.3 · Estadísticas: colores de la referencia aprobada (docs/design/referencias/Referencia Componentes Estadisticas.dc.html),
   aislados como los del chat: en claro los del catálogo y en oscuro los del tema. Los textos usan --text, --text-secondary y --text-muted (C29). */
/* KH13: los tokens del calendario de rango también valen donde se reutiliza (Contactos). */
.stat-workspace,.stat-range{--stat-accent:oklch(0.55 0.14 40);--stat-accent-soft:oklch(0.955 0.025 50);--stat-accent-border:oklch(0.85 0.06 45);--stat-accent-text:oklch(0.45 0.12 40);--stat-on-accent:#FFFFFF;--stat-card:#FFFFFF;--stat-line:#ECE5DE;--stat-menu-border:#EFE8E1;--stat-chip-border:#DFD5CC;--stat-soft:#F3EDE7;--stat-hover:#F6F1EC;--stat-heat-base:#F3EEE9;--stat-heat-ink:#2A2420;--stat-ink:#2A2420;--stat-future:#B9AEA5;--stat-handle:#DDD3CA;--stat-float:0 12px 32px rgb(42 36 32/.14),0 2px 6px rgb(42 36 32/.06);--stat-sheet-shadow:0 -6px 30px rgb(42 36 32/.18);--stat-good:oklch(0.45 0.1 150);--stat-bad:oklch(0.45 0.12 40);--stat-heat-1:oklch(0.95 0.03 50);--stat-heat-2:oklch(0.88 0.06 48);--stat-heat-3:oklch(0.76 0.1 45);--stat-heat-4:oklch(0.55 0.14 40);--stat-heat-5:oklch(0.45 0.13 38);--stat-heat-on:#FFFFFF;--stat-series-1:oklch(0.55 0.14 40);--stat-series-2:oklch(0.5 0.06 250);--stat-series-total:#2A2420;--stat-series-ai:oklch(0.5 0.13 300);--stat-track:#F3EEE9;--stat-table-head:#F6F1EC;--stat-row-line:#F0EAE4;--stat-fail:oklch(0.45 0.12 40);--stat-read-text:oklch(0.55 0.14 40);--stat-subtab-on:oklch(0.955 0.025 50);--stat-subtab-on-border:oklch(0.85 0.06 45);--stat-subtab-on-text:oklch(0.45 0.12 40);--stat-subtab-border:#DFD5CC;--stat-segment-on-shadow:0 1px 2px rgb(42 36 32/.12);--stat-ai-soft:oklch(0.955 0.022 300);--stat-ai-border:oklch(0.86 0.05 300);--stat-ai-text:oklch(0.45 0.13 300);--stat-toast-bg:#2A2420;--stat-toast-text:#FFFFFF;--stat-toast-shadow:0 8px 24px rgb(0 0 0/.18);--stat-previous:#B9AEA5;--stat-guide:#DDD3CA;--stat-warn:oklch(0.48 0.1 70);--stat-knob-shadow:0 1px 2px rgb(0 0 0/.2)}
:root[data-theme="dark"] .stat-workspace,:root[data-theme="dark"] .stat-range{--stat-accent:var(--primary);--stat-accent-soft:oklch(0.3 0.05 45);--stat-accent-border:#7B503D;--stat-accent-text:oklch(0.86 0.08 55);--stat-on-accent:var(--primary-contrast);--stat-card:#211C19;--stat-line:#3A322D;--stat-menu-border:var(--border);--stat-chip-border:var(--border);--stat-soft:var(--surface-muted);--stat-hover:var(--surface-muted);--stat-heat-base:#2E2724;--stat-heat-ink:#F3ECE6;--stat-heat-on:#1B1512;--stat-series-1:oklch(0.7 0.13 45);--stat-series-2:oklch(0.74 0.06 250);--stat-series-total:#F3ECE6;--stat-series-ai:oklch(0.74 0.12 300);--stat-track:#2E2724;--stat-table-head:#2E2724;--stat-row-line:#3A322D;--stat-fail:oklch(0.78 0.12 40);--stat-read-text:oklch(0.86 0.08 55);--stat-subtab-on:oklch(0.3 0.05 45);--stat-subtab-on-border:#7B503D;--stat-subtab-on-text:oklch(0.86 0.08 55);--stat-subtab-border:var(--border);--stat-segment-on-shadow:0 1px 2px rgb(0 0 0/.4);--stat-heat-1:oklch(0.34 0.05 45);--stat-heat-2:oklch(0.42 0.08 44);--stat-heat-3:oklch(0.49 0.11 42);--stat-heat-4:oklch(0.66 0.13 42);--stat-heat-5:oklch(0.76 0.13 48);--stat-ink:#F5EFEB;--stat-future:#B9AEA5;--stat-handle:var(--border);--stat-float:var(--shadow-lg);--stat-sheet-shadow:var(--shadow-lg);--stat-good:oklch(0.8 0.12 150);--stat-bad:oklch(0.8 0.1 45);--stat-ai-soft:#302437;--stat-ai-border:#665173;--stat-ai-text:#D6B8F4}
/* E1.3 · C31: mini avatar de 18 px del panel de ▾ con el tono de la persona. */
.stat-workspace :is(.stat-assignee-avatar,.stat-sender-avatar,.stat-team-avatar,.stat-rank-avatar){--stat-avatar-soft:light-dark(oklch(.9 .05 var(--chat-avatar-hue,50)),oklch(.32 .05 var(--chat-avatar-hue,50)));--stat-avatar-text:light-dark(oklch(.38 .09 var(--chat-avatar-hue,50)),oklch(.86 .06 var(--chat-avatar-hue,50)))}
/* E1.1 · ES10: el detalle de Estadísticas reutiliza ChatAvatar con sus pares fuera del chat. */
.stat-workspace .chat-avatar-tone-0{--chat-avatar-hue:0}
.stat-workspace .chat-avatar-tone-1{--chat-avatar-hue:30}
.stat-workspace .chat-avatar-tone-2{--chat-avatar-hue:60}
.stat-workspace .chat-avatar-tone-3{--chat-avatar-hue:90}
.stat-workspace .chat-avatar-tone-4{--chat-avatar-hue:120}
.stat-workspace .chat-avatar-tone-5{--chat-avatar-hue:150}
.stat-workspace .chat-avatar-tone-6{--chat-avatar-hue:180}
.stat-workspace .chat-avatar-tone-7{--chat-avatar-hue:210}
.stat-workspace .chat-avatar-tone-8{--chat-avatar-hue:240}
.stat-workspace .chat-avatar-tone-9{--chat-avatar-hue:270}
.stat-workspace .chat-avatar-tone-10{--chat-avatar-hue:300}
.stat-workspace .chat-avatar-tone-11{--chat-avatar-hue:330}
.stat-workspace .stat-detail-avatar{
    --chat-avatar-background:light-dark(oklch(.93 .035 var(--chat-avatar-hue,50)),oklch(.32 .035 var(--chat-avatar-hue,50)));
    --chat-avatar-text:light-dark(oklch(.42 .08 var(--chat-avatar-hue,50)),oklch(.85 .05 var(--chat-avatar-hue,50)));
}

/* A2 C01/C27: shared bottom-sheet roles, preserving the existing dark surfaces. */
:root[data-theme]{--ui-sheet-overlay:light-dark(rgba(42,36,32,.35),rgba(0,0,0,.62));--ui-sheet-handle:light-dark(#DDD3CA,var(--text-muted));--ui-menu-border:light-dark(#EFE8E1,var(--border));}
/* E1.4 · EC2: sombra del botón flotante del dock (E1.3) como token, sin literales en chat-dock.css. */
:root{--chat-dock-launcher-shadow:0 8px 22px rgb(42 36 32/.25)}

/* E2.1 · EE4: estado de los mensajes salientes (referencia entrega-estado): entregado sin leer y fallido. */
.stat-workspace{--stat-delivered:oklch(0.78 0.08 50);--stat-failed:oklch(0.5 0.17 25)}
:root[data-theme="dark"] .stat-workspace{--stat-delivered:oklch(0.52 0.07 50);--stat-failed:oklch(0.68 0.16 25)}
/* Theme-independent color contract. Replace the preset, not component CSS.
   light-dark() requires modern browsers (Chrome/Edge 123+, Firefox 120+, Safari 17.5+).
   No Organization configuration or branding editor is implemented here. */
:root { color-scheme: light; }
:root[data-theme="dark"] { color-scheme: dark; }
@media (prefers-color-scheme: dark) {
    :root[data-theme="system"], :root:not([data-theme]) { color-scheme: dark; }
}
:root,
[data-color-theme] {
    --background-canvas: var(--preset-canvas);
    --background-surface: var(--preset-surface);
    --background-surface-subtle: var(--preset-surface-subtle);
    --background-surface-muted: var(--preset-surface-muted);
    --background-surface-raised: var(--preset-surface-raised);
    --background-surface-inverse: var(--preset-surface-inverse);
    --background-sidebar: var(--preset-sidebar);
    --background-topbar: var(--background-surface);
    --text-primary: var(--preset-text-primary);
    --text-secondary: var(--preset-text-secondary);
    --text-muted: var(--preset-text-muted);
    --text-disabled: var(--preset-text-disabled);
    --text-inverse: var(--preset-text-inverse);
    --icon-primary: var(--text-secondary);
    --icon-secondary: var(--text-muted);
    --icon-muted: var(--text-disabled);
    --icon-inverse: var(--text-inverse);
    --border-subtle: var(--preset-border-subtle);
    --border-default: var(--preset-border-default);
    --border-strong: var(--preset-border-strong);
    --border-brand: var(--preset-brand-border);
    --brand-default: var(--preset-brand);
    --brand-hover: var(--preset-brand-hover);
    --brand-active: var(--preset-brand-active);
    --brand-subtle: var(--preset-brand-subtle);
    --brand-subtle-hover: var(--preset-brand-subtle-hover);
    --brand-border: var(--border-brand);
    --on-brand: var(--preset-on-brand);
    /* Primary dependency deliberately shared by links, focus and navigation.
       Default focus is darker than proposed copper-500 for stronger contrast. */
    --focus-ring: var(--brand-default);
    --focus-offset: var(--background-canvas);
    --selection-background: var(--preset-selection-bg);
    --selection-text: var(--preset-selection-text);
    --link-default: light-dark(color-mix(in srgb, var(--brand-default) 85%, var(--text-primary)), var(--brand-default));
    --link-hover: var(--brand-hover);
    --link-active: var(--brand-active);
    --ai-accent: var(--preset-ai-accent);
    --ai-background: var(--preset-ai-bg);
    --ai-border: var(--preset-ai-border);
    --ai-text: var(--preset-ai-text);
    --status-success-background: var(--preset-success-bg);
    --status-success-text: var(--preset-success-text);
    --status-success-border: var(--preset-success-border);
    --status-success-icon: var(--preset-success-icon);
    --status-warning-background: var(--preset-warning-bg);
    --status-warning-text: var(--preset-warning-text);
    --status-warning-border: var(--preset-warning-border);
    --status-warning-icon: var(--preset-warning-icon);
    --status-danger-background: var(--preset-danger-bg);
    --status-danger-text: var(--preset-danger-text);
    --status-danger-border: var(--preset-danger-border);
    --status-danger-icon: var(--preset-danger-icon);
    --status-info-background: var(--preset-info-bg);
    --status-info-text: var(--preset-info-text);
    --status-info-border: var(--preset-info-border);
    --status-info-icon: var(--preset-info-icon);
    --action-danger-background: var(--preset-danger-action);
    --action-danger-hover: var(--preset-danger-hover);
    --action-danger-text: var(--on-brand);
    --control-background: var(--background-surface);
    --control-border: var(--preset-control-border);
    --control-placeholder: var(--text-muted);
    --control-disabled-background: var(--background-surface-subtle);
    --control-disabled-text: var(--text-disabled);
    --button-secondary-background: var(--background-surface-subtle);
    --button-secondary-text: var(--preset-button-secondary-text);
    --button-secondary-hover: var(--background-surface-muted);
    --navigation-hover: var(--brand-subtle);
    --navigation-active-background: var(--selection-background);
    --navigation-active-text: var(--link-default);
    --navigation-active-indicator: var(--brand-default);
    --chat-own-background: var(--selection-background);
    --chat-own-text: var(--selection-text);
    --chat-other-background: var(--background-surface-subtle);
    --chat-other-text: var(--text-primary);
    --chat-ai-background: var(--ai-background);
    --chat-ai-text: var(--ai-text);
    --chat-ai-border: var(--ai-border);
    --chat-quote-background: var(--background-canvas);
    --chat-quote-border: var(--brand-border);
    --chat-composer-background: var(--background-surface);
    --code-background: var(--background-surface-subtle);
    --code-text: var(--preset-code-text);
    --overlay-background: var(--preset-overlay);
    --shadow-color: var(--preset-shadow-color);
    --shadow-lg-color: var(--preset-shadow-lg-color);
    --scrollbar-track: var(--background-sidebar);
    --scrollbar-thumb: var(--preset-scroll-thumb);
    --scrollbar-thumb-hover: var(--preset-scroll-thumb-hover);
    --progress-track: var(--border-subtle);
    --progress-value: var(--brand-default);
    --skeleton-base: var(--background-surface-muted);
    --skeleton-highlight: var(--preset-skeleton-highlight);
    --chart-series-1: var(--preset-chart-1);
    --chart-series-2: var(--preset-chart-2);
    --chart-series-3: var(--preset-chart-3);
    --chart-series-4: var(--preset-chart-4);
    --chart-series-5: var(--preset-chart-5);
    --chart-series-6: var(--preset-chart-6);
    --chart-series-7: var(--preset-chart-7);
    --chart-series-8: var(--preset-chart-8);

    /* Compatibility aliases; no independent palettes per portal/module. */
    --ink: var(--text-primary);
    --canvas: var(--background-canvas);
    --surface: var(--background-surface);
    --surface-muted: var(--background-surface-subtle);
    --text: var(--text-primary);
    --border: var(--border-default);
    --primary: var(--brand-default);
    --primary-hover: var(--brand-hover);
    --primary-contrast: var(--on-brand);
    --primary-soft: var(--brand-subtle);
    --accent: var(--ai-accent);
    --success: var(--status-success-text);
    --success-bg: var(--status-success-background);
    --warning: var(--status-warning-text);
    --warning-bg: var(--status-warning-background);
    --error: var(--status-danger-text);
    --error-bg: var(--status-danger-background);
    --info: var(--status-info-text);
    --info-bg: var(--status-info-background);
    --avatar-agent-bg: var(--ai-background);
    --avatar-agent-fg: var(--ai-text);
}
/* Identidad Bheli: logo, loader y avatar (componentes Brand de Bheli.Web.Feedback).
   Los hosts enlazan este archivo tras colors.css, sin tocar otros CSS:
   <link rel="stylesheet" href="/_content/Bheli.Web.Feedback/brand.css" />
   Los valores crudos de marca viven solo en themes/bheli-copper.css (--bheli-*);
   aquí solo se consumen por variable. Sin literales de color en este archivo. */

/* Lexend autoalojada (nombres definitivos verificados en wwwroot/brand/fonts del Agente A).
   Los hosts deben exponer wwwroot/brand en la ruta /brand/ (igual que /brand/ui/avatar-assistant.svg). */
@font-face {
    font-family: 'Lexend';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/brand/fonts/Lexend-Regular.woff2') format('woff2'), url('/brand/fonts/Lexend-Regular.ttf') format('truetype');
}

@font-face {
    font-family: 'Lexend';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('/brand/fonts/Lexend-Medium.woff2') format('woff2'), url('/brand/fonts/Lexend-Medium.ttf') format('truetype');
}

@font-face {
    font-family: 'Lexend';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('/brand/fonts/Lexend-SemiBold.woff2') format('woff2'), url('/brand/fonts/Lexend-SemiBold.ttf') format('truetype');
}

/* 700: valores grandes de las tarjetas y títulos (C01/C29); sin este archivo el navegador sintetiza la negrita desde 600. */
@font-face {
    font-family: 'Lexend';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('/brand/fonts/Lexend-Bold.woff2') format('woff2'), url('/brand/fonts/Lexend-Bold.ttf') format('truetype');
}

/* Fuente global de la interfaz con fallback del kit. */
body {
    font-family: var(--bheli-font, 'Segoe UI', system-ui, sans-serif);
}

/* Logo: isotipo inline + wordmark en texto vivo. */
.bheli-logo {
    display: inline-flex;
    align-items: center;
    font-family: var(--bheli-font, 'Segoe UI', system-ui, sans-serif);
}

/* Size admite cualquier entero >=16: el componente aporta solo --logo-size invariante inline.
   Excepción dimensional acotada para conservar la API sin JS ni attr() tipado experimental;
   colores, proporciones y excepciones permanecen aquí. data-logo-size identifica las excepciones. */

.bheli-logo--horizontal {
    flex-direction: row;
    gap: calc(var(--logo-size, 24) * 1px / 6);
}

.bheli-logo--vertical {
    flex-direction: column;
    gap: calc(var(--logo-size, 24) * 0.1px);
    text-align: center;
}

.bheli-logo__mark {
    display: block;
    flex: none;
}

.bheli-logo__top {
    fill: var(--logo-top);
}

.bheli-logo__bottom {
    fill: var(--logo-bottom);
}

.bheli-logo__wordmark {
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1;
    white-space: nowrap;
    color: var(--logo-wordmark);
}

/* Regla general del kit: horizontal .667 del isotipo, vertical .48. */
.bheli-logo--horizontal .bheli-logo__wordmark {
    font-size: calc(var(--logo-size, 24) * 0.667px);
}

.bheli-logo--vertical .bheli-logo__wordmark {
    font-size: calc(var(--logo-size, 24) * 0.48px);
}

/* Excepciones explícitas: cabecera isotipo 24 + texto 18 gap 8; auth isotipo 48 + texto 28 gap 5. */
.bheli-logo--horizontal[data-logo-size="24"] {
    gap: 8px;
}

.bheli-logo--horizontal[data-logo-size="24"] .bheli-logo__wordmark {
    font-size: 18px;
}

.bheli-logo--vertical[data-logo-size="48"] {
    gap: 5px;
}

.bheli-logo--vertical[data-logo-size="48"] .bheli-logo__wordmark {
    font-size: 28px;
}

/* Temas del logo, símbolo y wordmark. auto usa light, dark con data-theme explícito y SO con SYSTEM/sin atributo. */
.bheli-logo--theme-light,
.bheli-logo--theme-auto {
    --logo-top: var(--bheli-cobre);
    --logo-bottom: var(--bheli-miel);
    --logo-wordmark: var(--bheli-espresso);
}

.bheli-logo--theme-dark {
    --logo-top: var(--bheli-cobre-dark);
    --logo-bottom: var(--bheli-miel-dark);
    --logo-wordmark: var(--bheli-crema);
}

:root[data-theme="dark"] .bheli-logo--theme-auto {
    --logo-top: var(--bheli-cobre-dark);
    --logo-bottom: var(--bheli-miel-dark);
    --logo-wordmark: var(--bheli-crema);
}

@media (prefers-color-scheme: dark) {
    :root:not([data-theme]) .bheli-logo--theme-auto,
    :root[data-theme="system"] .bheli-logo--theme-auto {
        --logo-top: var(--bheli-cobre-dark);
        --logo-bottom: var(--bheli-miel-dark);
        --logo-wordmark: var(--bheli-crema);
    }
}

.bheli-logo--theme-mono-black {
    --logo-top: var(--bheli-logo-black);
    --logo-bottom: var(--bheli-logo-black);
    --logo-wordmark: var(--bheli-logo-black);
}

.bheli-logo--theme-mono-white {
    --logo-top: var(--bheli-logo-white);
    --logo-bottom: var(--bheli-logo-white);
    --logo-wordmark: var(--bheli-logo-white);
}

.bheli-logo--theme-one-color {
    --logo-top: var(--bheli-cobre);
    --logo-bottom: var(--bheli-cobre);
    --logo-wordmark: var(--bheli-cobre);
}

/* Loader: los módulos se encienden en orden, ciclo de 1.6 s, opacidad de 0.18 a 1. */
.bheli-loader {
    display: inline-flex;
}

.bheli-loader svg {
    display: block;
}

.bheli-loader--theme-light {
    --logo-top: var(--bheli-cobre);
    --logo-bottom: var(--bheli-miel);
}

.bheli-loader--theme-dark {
    --logo-top: var(--bheli-cobre-dark);
    --logo-bottom: var(--bheli-miel-dark);
}

.bheli-loader--16 svg {
    width: 16px;
    height: 16px;
}

.bheli-loader--24 svg {
    width: 24px;
    height: 24px;
}

.bheli-loader--32 svg {
    width: 32px;
    height: 32px;
}

.bheli-loader--48 svg {
    width: 48px;
    height: 48px;
}

.bheli-loader path {
    opacity: 0.18;
    animation: bheli-loader-pulse 1.6s ease-in-out infinite;
}

.bheli-loader .bheli-loader__m1 {
    animation-delay: 0s;
}

.bheli-loader .bheli-loader__m2 {
    animation-delay: 0.2s;
}

.bheli-loader .bheli-loader__m3 {
    animation-delay: 0.4s;
}

.bheli-loader .bheli-loader__m4 {
    animation-delay: 0.6s;
}

@keyframes bheli-loader-pulse {
    0%, 100% {
        opacity: 0.18;
    }
    25% {
        opacity: 1;
    }
}

@media (prefers-reduced-motion: reduce) {
    .bheli-loader path {
        animation: none;
        opacity: 1;
    }
}

/* Avatar de Bheli Assistant. El fondo espresso cubre la ausencia del asset /brand/ui/. */
.bheli-avatar {
    display: block;
    flex: none;
    border-radius: 50%;
    object-fit: cover;
    background-color: var(--bheli-espresso);
}
h1:focus,
h1:focus-visible {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid var(--status-success-icon);
}

.invalid {
    outline: 1px solid var(--status-danger-icon);
}

.validation-message {
    color: var(--status-danger-text);
}

.blazor-error-boundary {
    /* Existing warning artwork is an asset exception, not a UI palette. */
    background: url(images/error-boundary.svg) no-repeat 1rem/1.8rem, var(--action-danger-background);
    padding: 1rem 1rem 1rem 3.7rem;
    color: var(--action-danger-text);
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: var(--control-border);
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
    color: var(--text-muted);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
    text-align: start;
}

/* ERP Ligero: tarjetas, tablas y formularios compactos, mobile-first.
   La navegación del módulo usa el app-shell del portal (.sidebar);
   estas clases cubren solo el contenido. */
.erp-main { padding: 1rem; max-width: 1100px; margin: 0 auto; }
.erp-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .75rem; margin-bottom: 1rem; }
.erp-card { background: var(--background-surface); border: 1px solid var(--border-subtle); border-radius: .6rem; padding: .8rem; }
.erp-card .kpi { font-size: 1.4rem; font-weight: 600; }
.erp-card .label { color: var(--text-muted); font-size: .85rem; }
.erp-table { width: 100%; border-collapse: collapse; margin: .75rem 0; font-size: .92rem; }
.erp-table th, .erp-table td { border-bottom: 1px solid var(--border-subtle); padding: .45rem .5rem; text-align: left; }
.erp-table th { background: var(--background-surface-subtle); }
.erp-read-placeholder { display: inline-block; min-width: calc(var(--space-5) * 3); background: var(--background-surface-subtle); border-radius: var(--radius-sm); }
.erp-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .6rem; margin: .75rem 0; }
.erp-form > * { min-width: 0; }
.erp-form label { display: grid; gap: .2rem; font-size: .85rem; color: var(--text-primary); }
.erp-form input:not([type=checkbox]):not([type=hidden]), .erp-form select { padding: var(--space-2); border: var(--border-width) solid var(--control-border); border-radius: var(--radius-sm); max-width: 100%; min-width: 0; min-height: calc(var(--space-5) * 2); }
.erp-form label:has(input[type=checkbox]) { display: flex; align-items: center; gap: var(--space-2); min-height: calc(var(--space-5) * 2); }
.erp-form input[type=checkbox] { padding: 0; width: calc(var(--space-4) + var(--space-1)); min-height: calc(var(--space-4) + var(--space-1)); }
.erp-form-action { display: grid; align-self: end; }
@media (min-width: 700px) { .erp-form input:not([type=checkbox]):not([type=hidden]), .erp-form select, .erp-form label:has(input[type=checkbox]) { min-height: calc(var(--space-4) + var(--space-5)); } }
.erp-btn { padding: .45rem .9rem; border: 0; border-radius: .4rem; background: var(--primary); color: var(--on-brand); cursor: pointer; font-family: inherit; font-weight: 500; min-height: var(--touch-target, 44px); display: inline-flex; align-items: center; justify-content: center; }
.erp-btn.secondary { background: var(--button-secondary-background); color: var(--button-secondary-text); }
.erp-btn.danger { background: var(--action-danger-background); color: var(--action-danger-text); }
.erp-btn:disabled { background: var(--control-disabled-background); color: var(--control-disabled-text); opacity: 1; cursor: default; }
.erp-status { display: inline-block; padding: .1rem .5rem; border-radius: 1rem; font-size: .8rem; background: var(--background-surface-subtle); }
.erp-error { color: var(--error); margin: .5rem 0; }
.erp-section { margin: 1.25rem 0; }
.erp-row-actions { display: flex; gap: .35rem; flex-wrap: wrap; }

/* Controles ERP compartidos: misma tipografía y unidad legible en todos los motores. */
.erp-form input, .erp-form select, .erp-form textarea { font-family: inherit; font-size: 1rem; color: var(--text-primary); background: var(--background-surface); }
.erp-form input:not([type=checkbox]):not([type=hidden]), .erp-form select { min-height: var(--control-height-mobile, 48px); }
.erp-organization { min-width: 0; overflow-wrap: anywhere; }
.topbar.erp-topbar { z-index: 30; }
/* En móvil la empresa ocupa una fila propia: nunca se comprime entre marca y cuenta. */
@media (width < 900px) {
    /* portal.css se carga después; la cabecera ERP conserva su composición sobre .topbar. */
    .topbar.erp-topbar { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; }
    .erp-topbar .menu-button { grid-column: 1; grid-row: 1; }
    .erp-topbar .brand { grid-column: 2; grid-row: 1; }
    .erp-topbar .user-menu { grid-column: 3; grid-row: 1; min-width: 0; max-width: 48vw; }
    .erp-topbar .user-trigger { max-width: 100%; }
    .erp-topbar .user-trigger-name { min-width: 0; max-width: 100%; }
    .erp-topbar .erp-organization { grid-column: 1 / -1; grid-row: 2; }
}
.erp-task-links, .erp-pagination { display: flex; gap: var(--space-2); flex-wrap: wrap; margin-block: var(--space-3); }
.erp-inline-confirm { border: var(--border-width) solid var(--border-subtle); padding: var(--space-3); margin-block: var(--space-3); }
.erp-global-nav { display: block; }
.erp-module-nav { display: none; }
@media (min-width: 700px) {
    .erp-form input:not([type=checkbox]):not([type=hidden]), .erp-form select { min-height: var(--control-height, 40px); }
    .erp-global-nav { display: none; }
    .erp-module-nav { display: block; }
}
/* Generado desde ContactWorkspace.razor.css del portal actual (scripts/razor-css-to-module.py): misma cascada que Blazor. */
.c1-workspace.b-mkaucp{container-type:inline-size; min-width:0; width:100%;}
.b-mkaucp .c2-tag-choices{max-height:14rem; overflow:auto;}
.b-mkaucp .c2-tag-filter .actions{padding-top:.75rem;}
.b-mkaucp .c2-contact-table{table-layout:fixed;}
.b-mkaucp .c2-contact-table .c1-check{width:2.5rem;}
.b-mkaucp .c2-contact-table .c1-chat{width:3rem;}
.b-mkaucp .c1-auto .c2-contact-table .c1-col-phone{width:7rem;}
.b-mkaucp .c1-auto .c2-contact-table .c1-col-tags{width:10rem;}
.b-mkaucp .c1-auto .c2-contact-table .c1-col-lastvisibleconversationactivityat{width:8.5rem;}
.b-mkaucp .c1-auto .c2-contact-table .c1-col-inbox,.b-mkaucp .c1-auto .c2-contact-table .c1-col-agent{width:7rem;}
.b-mkaucp .c1-auto .c2-contact-table .c1-col-email{width:11rem;}
.b-mkaucp .c1-auto .c2-contact-table .c1-col-createdat{width:7rem;}
.b-mkaucp .c2-cell-value{display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.b-mkaucp .c1-name a .c2-cell-value{flex:1;}
.b-mkaucp .c2-tags{display:flex; flex-wrap:nowrap; align-items:center; gap:.25rem; min-width:0;}
.b-mkaucp .c2-tags .chip{min-width:0; max-width:7rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.72rem; padding:.15rem .4rem; line-height:1.25;}
.b-mkaucp .c2-tag-trigger{flex-shrink:0; width:var(--control-height);}
.b-mkaucp .c2-tag-popover{position:fixed; inset:auto; margin:0; width:max-content; max-width:calc(100vw - 2rem); max-height:min(28rem,65dvh); overflow:auto; padding:12px; border:1px solid var(--border-subtle); border-radius:14px; background:var(--surface); color:var(--text); box-shadow:var(--shadow-floating);}
.b-mkaucp .c2-tag-popover ul{display:flex; flex-wrap:wrap; gap:8px; max-width:280px; margin:0; padding:0; list-style:none;}
.b-mkaucp .c2-tag-popover li{min-width:0; max-width:100%;}
.b-mkaucp .c2-directory{display:none; border:1px solid var(--border); border-radius:var(--control-radius); background:var(--surface);}
.b-mkaucp .c2-directory-select{padding:.4rem .65rem; border-bottom:1px solid var(--border);}
.b-mkaucp .c2-directory-row{display:flex; gap:.4rem; align-items:flex-start; padding:.5rem .4rem; border-bottom:1px solid var(--border);}
.b-mkaucp .c2-directory-row:last-child{border-bottom:0;}
.b-mkaucp .c2-directory-check{display:flex; align-items:center; justify-content:center; flex-shrink:0; width:2.5rem; min-height:var(--control-height-mobile);}
.b-mkaucp .c2-directory-check input{width:1.15rem; height:1.15rem; accent-color:var(--primary);}
.b-mkaucp .c2-directory-body{flex:1; min-width:0;}
.b-mkaucp .c2-directory-name{display:block; color:var(--text); font-weight:500; min-height:var(--control-height-mobile); align-content:center; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-decoration:none;}
.b-mkaucp .c2-directory-activity,.b-mkaucp .c2-directory-meta{color:inherit; font-size:.75rem;}
.b-mkaucp .c2-directory-meta{display:flex; gap:.6rem; margin-block:.25rem;}
.b-mkaucp .c2-directory-meta span{overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.b-mkaucp .c2-file-choice{position:relative; flex-wrap:wrap; margin-bottom:.75rem;}
.b-mkaucp .c2-file-input{position:absolute; width:1px; height:1px; min-width:0; min-height:0; overflow:hidden; clip-path:inset(50%); pointer-events:none; opacity:0;}
.b-mkaucp .c2-file-input:focus-visible + .c2-file-trigger{outline:2px solid var(--primary); outline-offset:2px;}
.b-mkaucp .c2-file-trigger{cursor:pointer;}
.b-mkaucp .c2-file-options{margin-block:1rem;}
.b-mkaucp .c2-file-options summary{cursor:pointer; min-height:var(--control-height); align-content:center;}
.b-mkaucp .c2-file-help{color:inherit; font-size:.82rem; margin-left:1.8rem;}
@container (max-width:600px){.b-mkaucp .c2-directory-table.c1-auto{display:none;}
.b-mkaucp .c2-directory{display:block;}
}
.b-mkaucp svg.chat-r2-icon{width:1.15rem; height:1.15rem; flex:0 0 1.15rem;}
.b-mkaucp .button{display:inline-flex; gap:.5rem; align-items:center;}
.b-mkaucp select{min-height:var(--control-height); border:1px solid var(--border); border-radius:var(--control-radius); background:var(--surface); color:var(--text); padding:.45rem .65rem;}
.b-mkaucp .c1-col-phone{white-space:nowrap;}
.c1-back.b-mkaucp{margin:0 0 1rem;}
.c1-back a.b-mkaucp{display:inline-flex; align-items:center; gap:.6rem; min-height:var(--control-height); text-decoration:none;}
.b-mkaucp .c1-icon{width:var(--control-height); min-width:var(--control-height); padding:.55rem; justify-content:center;}
.b-mkaucp .actions{align-items:center;}
.b-mkaucp .c1-search-row{display:flex; gap:.75rem; align-items:center; margin-block:1rem;}
.b-mkaucp .c1-search{display:flex; gap:.6rem; flex:1; min-width:0; align-items:center; padding-inline:.75rem; border:1px solid var(--border); border-radius:var(--control-radius); background:var(--surface);}
.b-mkaucp .c1-search input{min-width:0; width:100%; min-height:var(--control-height); border:0; background:transparent; color:var(--text); font:inherit; padding:.45rem 0;}
.b-mkaucp .c1-table-tools{display:flex; justify-content:space-between; align-items:center; gap:.75rem; margin-block:.75rem;}
.b-mkaucp .c1-table-tools p{font-size:.82rem; color:inherit; margin:0;}
.b-mkaucp .c1-table-tools select{max-width:13rem;}
.b-mkaucp .c1-table-scroll{overflow:visible; max-width:100%; border:1px solid var(--border); border-radius:var(--control-radius); background:var(--surface);}
.b-mkaucp .c1-table{width:100%; border-collapse:collapse; font-size:.82rem;}
.b-mkaucp .c1-table th{text-align:left; background:var(--surface); font-weight:500;}
.b-mkaucp .c1-table th,.b-mkaucp .c1-table td{padding:.55rem .65rem; border-bottom:1px solid var(--border); vertical-align:middle; overflow-wrap:anywhere;}
.b-mkaucp .c1-table tr:last-child td{border-bottom:0;}
.b-mkaucp .c1-check{width:2.5rem;}
.b-mkaucp .c1-check input{width:1.15rem; height:1.15rem; accent-color:var(--primary);}
.b-mkaucp .c1-name{min-width:8rem;}
.b-mkaucp .c1-name a{display:flex; gap:.65rem; align-items:center; min-height:var(--control-height); color:var(--text); text-decoration:none; font-weight:500;}
.b-mkaucp .c1-avatar{display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; border-radius:50%; width:2rem; height:2rem; background:var(--primary-soft,var(--surface)); color:var(--primary); font-size:.72rem; font-weight:400;}
.b-mkaucp .c1-tags{display:flex; flex-wrap:wrap; align-items:center; gap:.35rem;}
.b-mkaucp .c1-tags .chip{max-width:100%; overflow-wrap:anywhere; font-size:.75rem;}
.b-mkaucp .c1-chosen .c1-table th:not(.c1-check),.b-mkaucp .c1-chosen .c1-table td:not(.c1-check){min-width:9rem;}
.b-mkaucp .c1-chat{width:3rem;}
.b-mkaucp .c1-popover{position:relative;}
.b-mkaucp .c1-popover summary{list-style:none; cursor:pointer;}
.b-mkaucp .c1-popover summary::-webkit-details-marker{display:none;}
.b-mkaucp .c1-popover-panel{position:absolute; right:0; top:100%; z-index:40; min-width:16rem; max-width:min(22rem,calc(100vw - 2rem)); max-height:65vh; overflow:auto; padding:1rem; background:var(--surface); border:1px solid var(--border); border-radius:14px; box-shadow:var(--shadow-floating);}
.b-mkaucp .checkbox-row{display:flex; align-items:center; gap:.65rem; min-height:var(--control-height);}
.b-mkaucp .checkbox-row input{flex-shrink:0; width:1.15rem; height:1.15rem; accent-color:var(--primary);}
.b-mkaucp .c1-dialog{border:1px solid var(--border); border-radius:var(--control-radius); background:var(--surface); color:var(--text); width:32rem; max-width:calc(100vw - 2rem); max-height:calc(100dvh - 2rem); padding:1.25rem; overflow:auto;}
.b-mkaucp .c1-dialog::backdrop{background:var(--backdrop-page);}
.b-mkaucp .c1-dialog-head{display:flex; justify-content:space-between; align-items:center; gap:1rem; margin-bottom:1rem;}
.b-mkaucp .c1-dialog-head h2{margin:0;}
.b-mkaucp .c1-dialog .field{margin-block:.85rem;}
.b-mkaucp .c1-dialog textarea{width:100%; min-height:12rem;}
.b-mkaucp .c1-form-grid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem;}
.b-mkaucp .c1-editor{max-width:48rem;}
.b-mkaucp .c1-editor .field span:not(:where(.feedback-field-error)){font-size:.82rem;}
.b-mkaucp .c1-editor .field span:not(:where(.c1-inline-tag-selector *, .feedback-field-error)){color:inherit;}
.b-mkaucp .c1-editor details{margin-block:1rem;}
.b-mkaucp .c1-editor summary,.b-mkaucp .c1-sessions summary{min-height:var(--control-height); cursor:pointer; padding-block:.5rem;}
.b-mkaucp .c1-detail-grid{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.4fr); gap:1.25rem;}
.b-mkaucp .c1-detail-grid dl{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2fr); gap:.6rem 1rem;}
.b-mkaucp .c1-detail-grid dt{color:inherit;}
.b-mkaucp .c1-detail-grid dd{margin:0; overflow-wrap:anywhere;}
.b-mkaucp .c1-session-head{display:flex; align-items:center; justify-content:space-between; gap:1rem;}
.b-mkaucp .c1-session-head h3{margin:0;}
.b-mkaucp .c1-session-head p{color:inherit; font-size:.82rem;}
.b-mkaucp .c1-sessions article{margin-bottom:1rem;}
.b-mkaucp .c1-pagination{display:flex; justify-content:space-between; flex-wrap:wrap; align-items:center; gap:1rem; margin-top:1rem; font-size:.82rem;}
.b-mkaucp .c1-pagination label{display:flex; align-items:center; gap:.6rem;}
.b-mkaucp .c1-pagination .actions{gap:.25rem;}
.b-mkaucp .c1-import{width:48rem;}
.b-mkaucp .c1-steps{display:flex; list-style:none; gap:.75rem; padding:0; font-size:.8rem; color:inherit;}
.b-mkaucp .c1-steps [aria-current=step]{color:var(--primary); font-weight:500;}
.b-mkaucp .c1-mapping{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.85rem 1rem;}
.b-mkaucp .c1-example{font-size:.82rem; color:inherit; overflow-wrap:anywhere;}
.b-mkaucp .c1-preview-field{display:none;}
.b-mkaucp .c1-preview-table td{min-width:5rem;}
@media(min-width:601px){.b-mkaucp .c1-preview-table{min-width:64rem;}
.b-mkaucp .c1-preview-table th,.b-mkaucp .c1-preview-table td:nth-child(6),.b-mkaucp .c1-preview-table td:nth-child(7){white-space:nowrap;}
.b-mkaucp .c1-preview-table th:last-child,.b-mkaucp .c1-preview-table td:last-child{min-width:10rem;}
}
.b-mkaucp .c1-drop{border:1px dashed var(--border); padding:1rem; border-radius:var(--control-radius);}
.b-mkaucp .c1-drop input{max-width:100%;}
@container (max-width:730px){.b-mkaucp .c1-detail-grid{grid-template-columns:1fr;}
}
@container (max-width:480px){.b-mkaucp .c1-avatar{display:none;}
.b-mkaucp .c1-search-row{flex-wrap:wrap; gap:.25rem;}
.b-mkaucp .c1-search{flex-basis:100%;}
.b-mkaucp .c1-table-tools{align-items:flex-start; flex-direction:column;}
.b-mkaucp .c1-table-tools .actions{width:100%; justify-content:flex-end; gap:.4rem; flex-wrap:wrap;}
.b-mkaucp .c1-table-tools select{width:100%; max-width:none; min-width:0; flex-basis:100%;}
.b-mkaucp .c1-search input{min-height:var(--control-height-mobile);}
.b-mkaucp .c1-table th,.b-mkaucp .c1-table td{padding-inline:.4rem;}
.b-mkaucp .c1-auto .c1-name{min-width:0;}
}
@media(max-width:600px){.b-mkaucp .c1-form-grid{grid-template-columns:1fr;}
.b-mkaucp .c1-detail-grid dl{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);}
.b-mkaucp .c1-dialog{padding:1rem; max-width:calc(100vw - 1rem); max-height:calc(100dvh - 1rem);}
.b-mkaucp .c1-import .c1-steps{gap:.4rem; font-size:.72rem; flex-wrap:wrap;}
.b-mkaucp .c1-preview-field{display:flex;}
.b-mkaucp .c1-preview-table td:not(:first-child):not(:nth-child(2)):not(:last-child):not(.c1-reviewed),.b-mkaucp .c1-preview-table th:not(:first-child):not(:nth-child(2)):not(:last-child):not(.c1-reviewed){display:none;}
.b-mkaucp .c1-preview-table td{min-width:0;}
.b-mkaucp .c1-pagination .actions{flex-wrap:wrap;}
.b-mkaucp .c1-icon,.b-mkaucp .checkbox-row,.b-mkaucp .c1-back a{min-height:var(--control-height-mobile);}
}
.b-mkaucp .c2-contact-table th,.b-mkaucp .c2-contact-table td{overflow-wrap:normal;}
.b-mkaucp .c2-tag-filter{position:fixed; inset:auto; margin:0;}
.b-mkaucp .c2-tags .c2-tag-trigger{width:2rem; min-width:2rem; height:2rem; min-height:2rem; padding:.25rem;}
@container (max-width:600px){.b-mkaucp .c2-tags .c2-tag-trigger{width:var(--control-height-mobile); min-width:var(--control-height-mobile); height:var(--control-height-mobile); min-height:var(--control-height-mobile);}
}
.b-mkaucp .c2-tags .chip{display:block;}
@container (max-width:600px){.b-mkaucp .c2-directory-check{width:var(--control-height-mobile);}
.b-mkaucp .c2-directory .c1-icon{width:var(--control-height-mobile); min-width:var(--control-height-mobile);}
}
/* I13/C22 · primera carga: la tabla ya armada con 5 filas de esqueleto de 56 px, sin caja
   (la tabla no tiene bordes: el esqueleto ocupa el mismo lugar que las filas). */
.e1-contact-skeleton.b-mkaucp{opacity:0; animation:e1-show-wait 1ms 150ms forwards;}
.e1-contact-skeleton > .e1-skeleton-row{border-bottom:1px solid var(--border-subtle);}
.b-mkaucp .e1-skeleton-row{height:56px;}
.b-mkaucp .e1-skeleton-line{display:flex; align-items:center; gap:12px; height:100%;}
.b-mkaucp .e1-skeleton-avatar{flex:none; width:28px; height:28px; border-radius:50%; background:var(--background-surface-subtle);}
.b-mkaucp .e1-skeleton-bar{height:12px; flex:2 1 0; border-radius:var(--radius-sm); background:var(--background-surface-subtle);}
.b-mkaucp .e1-skeleton-short{flex:1 1 0;}
.b-mkaucp .e1-skeleton-card{height:auto; min-height:64px; padding:10px 0;}
/* K1 · C22 1.14.5: en línea, para que el párrafo del contador tenga el alto de su texto y quede en el mismo lugar. */
.b-mkaucp .c1-total-skel{display:inline-block; vertical-align:middle; width:120px; height:12px; border-radius:var(--radius-sm); background:var(--background-surface-subtle);}
.e1-order-menu.b-mkaucp{width:max-content; max-width:calc(100vw - 16px);}
.e1-order-menu .button.b-mkaucp{display:flex; width:100%; justify-content:flex-start;}
@keyframes e1-show-wait{ to { opacity:1; } }
.c1-workspace.b-mkaucp{position:relative;}
.c1-progress.b-mkaucp{position:absolute; top:0; left:0; right:0; z-index:5; height:2px; overflow:hidden; opacity:0; animation:e1-show-wait 1ms 150ms forwards;}
.c1-progress.b-mkaucp::before{content:""; position:absolute; top:0; bottom:0; left:0; width:40%; background:var(--primary); animation:c1-progress 1.1s ease-in-out infinite;}
@keyframes c1-progress{ from { transform:translateX(-100%); } to { transform:translateX(250%); } }
.c1-refreshing.b-mkaucp :is(.c1-table-scroll,.c2-directory,.c1-detail-panel){opacity:.55; transition:opacity .15s .15s;}
.b-mkaucp .c1-auto .c2-contact-table .c1-col-tags{width:154px;}
.b-mkaucp .c2-tags{display:flex; flex-wrap:wrap; align-items:flex-start; align-content:start; gap:4px; min-width:0; max-width:100%;}
.b-mkaucp .c2-tags .chip{flex:0 1 auto; max-width:100%; font-size:.8125rem; line-height:20px; padding:1px 6px; box-sizing:border-box;}
.b-mkaucp .c2-tags .chip[hidden],.b-mkaucp .c2-tags .c2-tag-trigger[hidden]{display:none;}
.b-mkaucp .c2-tags .c2-tag-trigger{flex:0 0 auto; width:auto; min-width:32px; height:32px; min-height:32px; padding:2px 4px;}
.b-mkaucp .c2-tags .chip:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
@container (max-width:600px){.b-mkaucp .c2-tags .c2-tag-trigger{width:auto; min-width:44px; height:44px; min-height:44px;}
}
.b-mkaucp .c2-tags .chip{min-height:24px;height:24px;border-radius:var(--control-radius);}
.c1-workspace.b-mkaucp{position:relative;container-type:inline-size;padding-bottom:16px;scroll-padding-bottom:76px}
.b-mkaucp .page-header{align-items:center;gap:16px}
.b-mkaucp .page-titles{display:flex;align-items:center;gap:10px}
.b-mkaucp .page-header h1{font-size:26px;font-weight:700;margin:0}
.b-mkaucp .button{border:0;border-radius:999px;min-height:40px;padding:0 18px;font-size:14px;font-weight:600;gap:8px;white-space:nowrap;text-decoration:none;box-shadow:none}
.b-mkaucp .button:not(.secondary):not(.ghost){background:var(--primary);color:var(--primary-contrast,var(--on-brand))}
.b-mkaucp .button.secondary{background:var(--background-surface-subtle);color:var(--text-primary)}
.b-mkaucp .button.ghost{background:transparent;color:var(--text-secondary)}
.b-mkaucp .c1-icon,.b-mkaucp .report-columns-launcher{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;min-width:36px;height:36px;min-height:36px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--text-secondary);text-decoration:none}
@media (hover: hover){.b-mkaucp .c1-icon:hover,.b-mkaucp .report-columns-launcher:hover{background:var(--background-surface-subtle)}
}
.b-mkaucp .c1-icon svg,.b-mkaucp .report-columns-launcher svg{width:18px;height:18px}
.b-mkaucp :is(button,a,input):focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.b-mkaucp .c1-search-row{display:flex;align-items:center;flex-wrap:nowrap;gap:10px;margin-block:18px 12px;min-width:0}
.b-mkaucp .c1-search{display:flex;align-items:center;gap:8px;flex:1 1 260px;min-width:180px;height:40px;padding-inline:12px;border:1.5px solid transparent;border-radius:999px;background:var(--background-surface-subtle)}
.b-mkaucp .c1-search:focus-within{border:1.5px solid var(--primary);outline:none}
.b-mkaucp .c1-search input{width:100%;min-width:0;height:38px;min-height:0;border:0;outline:0!important;background:transparent;box-shadow:none!important;padding:0;font:inherit;color:var(--text-primary)}
.b-mkaucp .c1-search input::-webkit-search-cancel-button{display:none}
.b-mkaucp .c1-search svg{width:16px;height:16px;flex:none;color:var(--text-secondary)}
.b-mkaucp .c1-search .c1-icon{width:28px;min-width:28px;height:28px;min-height:28px}
.b-mkaucp .c1-filter-strip{display:flex;align-items:center;gap:6px;min-width:0;overflow-x:auto;scrollbar-width:none;padding:4px 12px 4px 0}
.b-mkaucp .c1-filter-strip::-webkit-scrollbar{display:none}
@media(min-width:768px){.b-mkaucp .c1-search-row>.c1-search{flex:1 1 320px;min-width:320px}
}
@media(min-width:768px){.b-mkaucp .c1-filter-strip{padding-right:5px;margin-right:-5px}
}
@media(max-width:767px){.b-mkaucp .c1-filter-strip>.chip,.b-mkaucp .c1-filter-strip .bh-filter-trigger{position:relative}
.b-mkaucp .c1-filter-strip>.chip::before,.b-mkaucp .c1-filter-strip .bh-filter-trigger::before{content:"";position:absolute;inset:-3px -1px}
}
.b-mkaucp .c1-filter-strip>.chip{display:inline-flex;align-items:center;gap:6px;flex:none;border:1px solid var(--border-default);border-radius:999px;min-height:32px;padding:0 10px;background:var(--surface);font-size:13px;font-weight:600;color:var(--text-secondary);white-space:nowrap}
.b-mkaucp .c1-filter-strip>.chip.active,.b-mkaucp .c1-filter-options .chip.active{background:var(--contact-pill-on-background);color:var(--contact-pill-on-text);border-color:var(--contact-pill-on-border)}
.b-mkaucp .c1-filter-strip>.chip svg{width:15px;height:15px}
.b-mkaucp .c1-filter-strip>.chip.c1-date-pill svg{width:14px;height:14px;flex:0 0 14px}
/* C15 1.14.3: píldora de etiqueta. Sin elegir, la de C07 con el punto de su color; elegida, llena de su relleno, sin borde,
   con ✓ de 14 px y el texto de su par. */
.b-mkaucp :is(.c1-filter-strip>.chip,.c1-filter-options .chip).c2-tag-chip{gap:6px}
.b-mkaucp :is(.c1-filter-strip>.chip,.c1-filter-options .chip).c2-tag-chip.active{background:var(--contact-tag-chip-background);border-color:transparent;color:var(--contact-tag-chip-foreground)}
.b-mkaucp :is(.c1-filter-strip>.chip,.c1-filter-options .chip).c2-tag-chip.active svg{width:14px;height:14px;flex:0 0 14px;color:inherit}
.b-mkaucp .c1-filter-group h3{font-size:14px;font-weight:600;margin:0 0 10px}
.b-mkaucp .c1-range{margin-top:14px}
.b-mkaucp .c1-range-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:12px}
.b-mkaucp .c1-range-fields .field{display:flex;flex-direction:column;gap:6px;margin:0;min-width:0}
.b-mkaucp .c1-range-fields .c1-field-label{display:block;font-size:14px;font-weight:600;line-height:20px;color:var(--text-primary)}
.b-mkaucp .c1-range-fields .field>input{width:100%;height:42px;min-height:42px;border:1px solid var(--border-default);border-radius:10px;background:var(--surface);color:var(--text-primary);padding:0 12px;font:inherit;font-size:14.5px}
.b-mkaucp .c1-range-fields .field>input::placeholder{color:var(--ui-tertiary)}
.b-mkaucp .c1-range-fields .field>input[aria-invalid=true]{border-color:var(--error)}
@media(max-width:767px){.b-mkaucp .c1-range-fields{grid-template-columns:1fr}
}
.b-mkaucp .c1-range-calendar .stat-range-month.second{display:none}
.b-mkaucp .c1-range-calendar .stat-range-month header .stat-range-prev-mobile{display:flex}
.b-mkaucp .c1-range-calendar .stat-range-foot{display:none}
.b-mkaucp .c1-range-calendar .stat-range-month{min-width:0}
.b-mkaucp .c1-filter-group h3:not(:first-child){margin-top:18px}
.b-mkaucp .c1-filter-options{display:flex;flex-wrap:wrap;gap:6px;margin-block:10px}
.b-mkaucp .c1-filter-options .chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:6px 10px;border-radius:999px;border:1px solid var(--border-default);background:var(--surface);color:var(--text-secondary);font-size:13px}
.b-mkaucp .c1-filter-options .chip>svg{width:15px;height:15px;flex:none}
.b-mkaucp button.chip{font-family:inherit}
.b-mkaucp .c1-filter-options .chip:has(>.c1-agent-avatar){padding-left:5px}
.b-mkaucp .c1-filter-options .c1-agent-avatar{width:20px;height:20px;min-width:20px;font-size:9px}
.b-mkaucp .c1-filter-options .c1-agent-avatar svg{width:14px;height:14px}
.b-mkaucp .c1-filter-group p{font-size:12.5px;color:var(--text-secondary)}
.b-mkaucp .bh-table-toolbar p{margin:0;font-size:13px}
.b-mkaucp .c1-table-scroll,.b-mkaucp .c2-directory{border:0;border-radius:0;box-shadow:none;background:transparent}
.b-mkaucp .c2-directory-table{box-sizing:border-box}
.b-mkaucp .c2-contact-table{max-width:none!important}
.b-mkaucp .bh-table-frame.c1-table-scroll{overflow:visible;max-width:100%}
.b-mkaucp .bh-table-frame.c1-table-scroll.c1-scroll-x{overflow-x:auto;overscroll-behavior-x:contain}
.b-mkaucp .c1-scroll-x .c2-contact-table [data-sticky-column]{position:sticky;z-index:1;background:var(--background-canvas)}
.b-mkaucp .c1-scroll-x .c2-contact-table th[data-sticky-column]{z-index:2}
.b-mkaucp .c1-scroll-x .c2-contact-table [data-sticky-column="last"]{box-shadow:inset -1px 0 0 var(--border-subtle),8px 0 10px -8px var(--shadow-lg-color,var(--shadow-color))}
.b-mkaucp .c2-contact-table thead>tr{z-index:3}
@media (hover: hover){.b-mkaucp .c1-scroll-x .c2-contact-table tbody tr:hover>[data-sticky-column]{background:var(--background-surface-subtle)}
}
.b-mkaucp .c1-scroll-x .c2-contact-table tbody tr:active>[data-sticky-column],.b-mkaucp .c1-scroll-x [data-contact-row]:is([aria-selected=true],[aria-current=true])>[data-sticky-column]{background:var(--brand-subtle)}
.b-mkaucp .c2-contact-table{table-layout:fixed;width:100%}
.b-mkaucp .c2-contact-table :is(th,td){box-sizing:border-box}
.b-mkaucp .c2-contact-table{font-size:13.5px;background:transparent}
.b-mkaucp .c2-contact-table th{height:40px;font-size:12px;font-weight:600;background:var(--background-canvas);color:var(--text-muted);position:sticky;top:0;z-index:1}
.b-mkaucp .c2-contact-table td{height:56px;padding-block:8px;vertical-align:middle;align-content:center;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle)}
.b-mkaucp .c2-contact-table tr{align-items:center;cursor:pointer}
@media (hover: hover){.b-mkaucp .c2-contact-table tbody tr:hover{background:var(--background-surface-subtle)}
}
.b-mkaucp .c2-contact-table tbody tr:active,.b-mkaucp [data-contact-row]:is([aria-selected=true],[aria-current=true]){background:var(--brand-subtle)}
.b-mkaucp .c2-contact-table .c1-name a{min-height:0;font-size:14px;font-weight:600;color:var(--text-primary)}
.b-mkaucp .c1-column-order{display:flex;align-items:center;gap:4px;max-width:100%;padding:0;border:0;background:transparent;font:inherit;color:inherit;text-align:left;min-height:32px}
.b-mkaucp .c1-column-order span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-mkaucp .c1-column-order svg{width:14px;height:14px;flex:none}
.b-mkaucp .c1-column-static{display:flex;align-items:center;min-height:32px;white-space:nowrap}
.b-mkaucp .c1-order-up{transform:rotate(180deg)}
.b-mkaucp .c1-avatar{display:inline-flex;width:28px;height:28px;min-width:28px;border-radius:50%;align-items:center;justify-content:center;font-size:11px}
.b-mkaucp .c1-agent{display:flex;align-items:center;gap:6px;min-width:0}
.b-mkaucp .c1-agent-avatar{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;min-width:18px;border-radius:50%;font-size:9px}
.b-mkaucp .c1-agent-avatar svg{width:14px;height:14px}
.b-mkaucp .c1-unassigned{color:var(--text-muted)}
.b-mkaucp .c2-contact-table :is(th,td).c1-chat{padding-inline:10px}
.b-mkaucp .c1-chat .c1-icon{opacity:1;color:var(--text-muted)}
@media (hover: hover){.b-mkaucp tr:hover .c1-chat .c1-icon{background:var(--background-surface-muted)}
}
.b-mkaucp tr:focus-within .c1-chat .c1-icon{background:var(--background-surface-muted)}
.b-mkaucp .c2-tags{align-items:center;align-content:center;gap:4px}
.b-mkaucp .c2-tags .chip{height:20px;min-height:20px;padding:0;border:0;border-radius:999px;background:transparent;line-height:20px}
.b-mkaucp mark.chat-match{background:transparent;color:var(--link-default);font-weight:700}
.b-mkaucp .c1-pagination{min-height:56px;margin-top:8px;padding-right:calc(var(--c1-dock-width,100px) + 12px);justify-content:space-between;flex-wrap:nowrap}
.b-mkaucp .c1-pagination .actions{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;min-width:0}
.b-mkaucp .c1-pagination .c1-range{white-space:nowrap}
.b-mkaucp .c1-pagination .c1-page-numbers{display:inline-flex;align-items:center;gap:2px}
.b-mkaucp .c1-page-size{display:flex;align-items:center;gap:8px;min-width:0}
.b-mkaucp .c1-page-size .bh-choice{width:80px}
.b-mkaucp .c1-empty{padding:48px 16px;text-align:center}
.b-mkaucp .c1-empty h2{font-size:15px;font-weight:600}
.b-mkaucp .c1-empty p{font-size:14px;color:var(--text-secondary)}
.b-mkaucp .c1-empty-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:8px}
.b-mkaucp .c1-detail-panel{position:fixed;top:var(--c1-panel-top,104px);right:0;bottom:0;width:320px;padding:0 18px;border-left:1px solid var(--border-subtle);background:var(--surface);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg);z-index:35}
.b-mkaucp .c1-detail-panel:is(:focus,:focus-visible){outline:none}
.b-mkaucp .c1-detail-panel[data-focus-quiet] :focus-visible{outline:none}
.b-mkaucp .c1-detail-panel>header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:8px;padding-block:12px;background:var(--surface);z-index:2}
.b-mkaucp .c1-detail-panel>.c1-contact-detail{min-height:0;overflow-y:auto;padding-bottom:24px;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}
.b-mkaucp .c1-detail-panel>.c1-contact-detail::-webkit-scrollbar{width:6px}
.b-mkaucp .c1-detail-panel>.c1-contact-detail::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}
.b-mkaucp .c1-detail-panel>header h2{font-size:16px;font-weight:700;margin:0}
.b-mkaucp .c1-detail-skeleton>div{display:grid;gap:10px;padding-block:4px 8px}
.b-mkaucp .c1-detail-skeleton>div>span{display:block;height:16px;border-radius:var(--radius-sm);background:var(--background-surface-subtle)}
.b-mkaucp .c1-detail-skeleton>div>span:nth-child(2){width:72%}
.b-mkaucp .c1-detail-skeleton>div>span:nth-child(3){width:56%}
.b-mkaucp .c1-detail-skeleton>div>span.c1-skeleton-row{height:44px;width:100%}
.b-mkaucp .c1-panel-mobile-back{display:none}
.b-mkaucp .c1-detail-identity{text-align:center;padding:12px 0 20px}
.b-mkaucp .c1-detail-avatar{display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;font-size:24px}
.b-mkaucp .c1-detail-identity h3{font-size:17px;font-weight:600;margin:12px 0 4px}
.b-mkaucp .c1-detail-identity p{margin:0 0 12px;color:var(--text-secondary)}
.b-mkaucp .c1-contact-detail section{padding-block:16px;border-top:1px solid var(--border-subtle)}
.b-mkaucp .c1-contact-detail h3{font-size:14px;font-weight:600;margin:0 0 12px}
.b-mkaucp .c1-contact-detail dl{display:grid;grid-template-columns:minmax(70px,1fr) minmax(0,2fr);gap:10px;font-size:13px}
.b-mkaucp .c1-contact-detail dt{color:var(--text-secondary)}
.b-mkaucp .c1-contact-detail dd{margin:0;overflow-wrap:anywhere}
.b-mkaucp .c1-meta{color:var(--text-muted);font-size:12px;font-weight:400}
.b-mkaucp .c1-conversation-row{display:flex;align-items:center;gap:10px;width:100%;border:0;border-radius:12px;padding:10px;background:transparent;color:var(--text-primary);text-align:left}
@media (hover: hover){.b-mkaucp .c1-conversation-row:hover{background:var(--background-surface-subtle)}
}
.b-mkaucp .c1-conversation-row>svg{width:20px;height:20px;flex:none}
.b-mkaucp .c1-conversation-row>span{display:grid;gap:4px;min-width:0;font-size:13px}
.b-mkaucp .c1-conversation-row time{font-size:12px;color:var(--text-muted)}
.b-mkaucp .c1-disclosure summary,.b-mkaucp .c2-file-options summary{display:flex;align-items:center;gap:8px;min-height:40px;list-style:none;cursor:pointer;font-size:14px;font-weight:600}
.b-mkaucp .c1-disclosure summary::-webkit-details-marker,.b-mkaucp .c2-file-options summary::-webkit-details-marker{display:none}
.b-mkaucp .c1-disclosure summary>svg,.b-mkaucp .c2-file-options summary>svg{width:16px;height:16px;transform:rotate(-90deg);flex:none}
.b-mkaucp details[open]>summary>svg{transform:none}
.b-mkaucp .c1-disclosure>div,.b-mkaucp .c1-disclosure>dl{padding-left:24px}
.b-mkaucp .c1-editor{max-width:900px;padding-bottom:80px}
.b-mkaucp .c1-editor .field{display:flex;flex-direction:column;gap:6px;align-self:start}
.b-mkaucp .c1-editor .field>input{height:42px;min-height:42px;border:1px solid var(--border-default);border-radius:10px;background:var(--surface);color:var(--text-primary);padding:0 12px;font:inherit}
.b-mkaucp .c1-phone-field{display:flex;align-items:center;gap:0;box-sizing:border-box;height:42px;min-height:42px;border:1px solid var(--border-default);border-radius:10px;background:var(--surface);color:var(--text-primary);padding:0 12px;font:inherit}
.b-mkaucp .c1-phone-field>span,.b-mkaucp .c1-phone-field>strong{flex:none;color:var(--text-primary)}
.b-mkaucp .c1-editor .field .c1-phone-field input.c1-phone-input{width:100%;height:40px;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--text-primary);font:inherit;min-width:0;padding:0 0 0 2px}
.b-mkaucp .c1-phone-field:focus-within{outline:3px solid var(--focus-ring);outline-offset:2px}
.b-mkaucp .c1-editor .field .c1-phone-field input.c1-phone-input:focus{outline:0}
.b-mkaucp .c1-optional{font-size:12px;color:var(--text-muted)}
.c1-workspace.c1-editing.b-mkaucp{max-width:900px}
.b-mkaucp .c1-editor .field .c1-field-label{display:block;font-size:14px;font-weight:600;line-height:20px;color:var(--text-primary)}
.b-mkaucp .c1-editor .field .c1-field-label .c1-optional{font-size:inherit;font-weight:400;color:var(--ui-tertiary)}
.b-mkaucp .c1-editor .field #c1-phone-help{font-size:12.5px;color:var(--text-secondary)}
.b-mkaucp .c1-editor-actions{position:absolute;top:0;right:0;display:flex;justify-content:flex-end;gap:8px}
.b-mkaucp .c1-inline-tag-selector .c1-tags{margin-bottom:8px}
.b-mkaucp .c1-tag-menu{width:280px;max-width:calc(100vw - 16px);position:fixed;inset:auto;margin:0;max-height:65dvh;padding:6px;border:1px solid var(--border-subtle);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-floating)}
.b-mkaucp .c1-tag-menu .c1-search{width:100%;min-width:0;height:38px;margin-bottom:6px}
.b-mkaucp .c1-tag-options>button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:40px;padding:10px 12px;border:0;border-radius:10px;background:transparent;color:var(--text-primary);font:inherit}
@media (hover: hover){.b-mkaucp .c1-tag-options>button:hover:not(:disabled){background:var(--background-surface-subtle)}
}
.b-mkaucp .c1-tag-options>button:disabled{background:transparent;color:var(--control-disabled-text);cursor:default}
.b-mkaucp .c1-tag-options svg{width:16px;height:16px}
.b-mkaucp .c1-tag-manage{display:block;min-height:40px;padding:10px 12px;border-top:1px solid var(--border-subtle);color:var(--link-default);text-decoration:none}
.b-mkaucp .c1-tag-menu .trace{font-size:12px;margin:6px 12px;color:var(--text-secondary)}
.b-mkaucp .c1-sheet-head{display:none}
@media(max-width:767px){.b-mkaucp .c1-sheet:popover-open{position:fixed;inset:0;box-sizing:border-box;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:0 16px 16px;border:0;border-radius:0;box-shadow:none;overflow-y:auto}
.b-mkaucp .c1-sheet-head{display:flex;align-items:center;gap:4px;position:sticky;top:0;z-index:2;box-sizing:border-box;height:56px;margin:0 -16px 12px;padding:0 8px;border-bottom:1px solid var(--border-subtle);background:var(--surface)}
.b-mkaucp .c1-sheet-head h2{flex:1 1 auto;min-width:0;margin:0;overflow:hidden;font-size:17px;font-weight:700;line-height:24px;text-overflow:ellipsis;white-space:nowrap}
.b-mkaucp .c1-sheet .c1-search{height:44px}
.b-mkaucp .c1-sheet .c1-tag-options>button{min-height:44px}
}
.b-mkaucp .c1-dialog{border-radius:16px;box-shadow:var(--shadow-floating)}
.b-mkaucp .c1-dialog-head{position:sticky;top:-20px;background:var(--surface);z-index:3;padding-block:8px}
.b-mkaucp .c1-import .c1-mobile-back{display:none}
.b-mkaucp .c1-dialog-head h2{font-size:16px;font-weight:700}
.b-mkaucp dialog.c1-import[open]{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"head head" "body body" "sum foot";width:min(1280px,calc(100vw - 64px));max-height:calc(100dvh - 64px);padding:0;overflow:hidden}
.b-mkaucp .c1-import h3{font-size:15px}
.b-mkaucp .c1-import>.c1-dialog-head{grid-area:head;position:static;display:flex;align-items:center;gap:16px;margin:0;padding:14px 20px;border-bottom:1px solid var(--border-subtle);background:var(--surface)}
.b-mkaucp .c1-import>.c1-dialog-head h2{flex:1 1 auto;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-mkaucp .c1-import>.c2-step-of{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.b-mkaucp .c1-import>.c2-step-of:is(:focus,:focus-visible){outline:none}
.b-mkaucp .c1-import>.c1-import-body{grid-area:body;min-height:0;overflow-y:auto;padding:16px 20px}
.b-mkaucp .c1-import>.c1-import-body:has(>.c2-map-list){padding-bottom:0}
.b-mkaucp .c1-import>.c1-import-summary{grid-area:sum;display:flex;align-items:center;min-width:0;margin:0;padding:12px 20px;border-top:1px solid var(--border-subtle);background:var(--surface);font-size:13px;color:var(--text-secondary)}
.b-mkaucp .c1-import>.c1-import-foot{grid-area:foot;position:static;display:flex;justify-content:flex-end;align-items:center;gap:10px;margin:0;padding:12px 20px;border-top:1px solid var(--border-subtle);background:var(--surface)}
.b-mkaucp .c6-result{display:flex;align-items:flex-start;gap:12px;margin:0 0 16px}
.b-mkaucp .c6-result:last-child{margin-bottom:0}
.b-mkaucp .c6-result-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;border-radius:50%}
.b-mkaucp .c6-result-icon svg{width:20px;height:20px;flex:0 0 20px;stroke-width:2.5}
.b-mkaucp .c6-result-warn svg{stroke-width:3}
.b-mkaucp .c6-result-ok{background:var(--status-success-background);color:var(--status-success-icon)}
.b-mkaucp .c6-result-warn{background:var(--status-warning-background);color:var(--status-warning-icon)}
.b-mkaucp .c6-result-text{display:flex;flex-direction:column;min-width:0;padding-top:4px}
.b-mkaucp .c6-result-text p{margin:0}
.b-mkaucp .c6-result-title{font-size:17px;font-weight:700;line-height:24px;color:var(--text-primary)}
.b-mkaucp .c6-result-note{font-size:14px;line-height:20px;color:var(--text-secondary)}
.b-mkaucp .c6-result-links{display:flex;flex-wrap:wrap;column-gap:16px}
.b-mkaucp .c6-link{display:inline-flex;align-items:center;min-height:32px;padding:0;border:0;background:none;font:inherit;font-size:14px;font-weight:600;color:var(--link-default);cursor:pointer}
@media (hover: hover){.b-mkaucp .c6-link:hover{text-decoration:underline}
}
.b-mkaucp .c6-link:disabled{background:transparent;color:var(--text-muted);cursor:default;text-decoration:none}
.b-mkaucp .c6-pending>div{padding-left:0}
.b-mkaucp .c6-pending-scroll{overflow-x:auto;max-width:100%}
.b-mkaucp .c6-pending-table{width:100%;font-size:13.5px}
.b-mkaucp .c6-pending-table :is(thead,th){background:transparent}
.b-mkaucp .c6-pending-table th{font-size:12px;font-weight:600;color:var(--text-muted);white-space:nowrap}
.b-mkaucp .c6-pending-table :is(th,td){border-bottom:1px solid var(--border-subtle);overflow-wrap:normal}
.b-mkaucp .c6-pending-table td{height:44px;padding-block:0;color:var(--text-primary);white-space:nowrap}
.b-mkaucp .c6-pending-table :is(th,td).c6-pending-rownum{width:48px;color:var(--text-secondary)}
.b-mkaucp .c6-pending-table td.c6-pending-reason{color:var(--status-warning-text);font-weight:600}
.b-mkaucp .c6-pending-mobile{display:none;margin:0;padding:0;list-style:none}
.b-mkaucp .c2-preview-pills{display:flex;flex-wrap:wrap;gap:6px;margin-block:12px}
.b-mkaucp .c2-preview-pills .chip{font-family:inherit;min-height:32px;padding:6px 12px;border-radius:999px;border:1px solid var(--border-default);background:var(--surface);font-size:13px;font-weight:600}
.b-mkaucp .c2-preview-pills .chip.active{background:var(--contact-pill-on-background);border-color:var(--contact-pill-on-border);color:var(--contact-pill-on-text)}
.b-mkaucp .c2-preview-scroll{overflow-x:auto;max-width:100%}
.b-mkaucp .c2-preview-table{min-width:64rem}
.b-mkaucp .c2-preview-table th{vertical-align:top;text-align:left}
.b-mkaucp .c2-preview-field{display:block;font-size:12px;font-weight:600}
.b-mkaucp .c2-preview-source{display:block;font-size:11px;font-weight:400;color:var(--text-muted)}
.b-mkaucp .c2-preview-omitted{background:var(--background-surface-subtle);color:var(--text-muted)}
.b-mkaucp .c2-preview-warn{background:var(--status-warning-background)}
.b-mkaucp .c2-preview-rownum{position:sticky;left:0;background:var(--surface);z-index:2}
.b-mkaucp .c2-preview-table :is(th,td).c2-preview-rownum{box-sizing:border-box;width:48px;min-width:0;max-width:48px;padding-inline:12px}
.b-mkaucp .c2-preview-flag{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-left:6px;border-radius:50%;background:var(--status-warning-text);color:var(--surface);font-size:12px;font-weight:700}
.b-mkaucp .c2-preview-mobile{display:none}
.b-mkaucp .c2-tagline{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;font-size:13px;color:var(--text-secondary)}
.b-mkaucp .c2-tagline-tag{display:inline-flex;align-items:center;gap:6px;border:0;border-radius:6px;background:transparent;padding:0;font:inherit;font-size:12.5px;color:var(--text-secondary)}
.b-mkaucp button.c2-tagline-tag{cursor:pointer;min-height:32px}
.b-mkaucp .c2-preview-table .e3-row-diagnostic{display:inline-block;vertical-align:middle;margin:0 0 0 8px}
.b-mkaucp .c2-preview-table .e3-row-diagnostic>summary{min-height:24px;font-size:13px}
.b-mkaucp .c2-preview-table .e3-row-diagnostic[open]{display:block;margin:4px 0 0}
.b-mkaucp .c2-preview-pager{justify-content:flex-end;align-items:center;gap:4px;margin-block:8px 0;font-size:12.5px;color:var(--text-secondary)}
.b-mkaucp .c2-preview-pager .c1-icon{width:32px;min-width:32px;height:32px;min-height:32px}
@media(max-width:767px){.b-mkaucp .c2-preview-scroll{display:none}
.b-mkaucp .c2-preview-mobile{display:block}
.b-mkaucp .c2-preview-pills{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-right:24px;-webkit-mask-image:linear-gradient(to right,black calc(100% - 24px),transparent);mask-image:linear-gradient(to right,black calc(100% - 24px),transparent)}
.b-mkaucp .c2-preview-pills::-webkit-scrollbar{display:none}
.b-mkaucp .c2-preview-pills .chip{flex:none}
.b-mkaucp .c2-preview-mrow{border-bottom:1px solid var(--border-subtle);padding-block:8px}
.b-mkaucp .c2-preview-mrow summary{display:grid;grid-template-columns:16px minmax(0,1fr) auto;column-gap:8px;align-items:center;min-height:44px;list-style:none;cursor:pointer}
.b-mkaucp .c2-preview-mrow summary>span{grid-column:2;grid-row:1}
.b-mkaucp .c2-preview-mrow summary>small{grid-column:2;grid-row:2;font-size:12px;font-weight:400;color:var(--text-muted)}
.b-mkaucp .c2-preview-mrow summary>svg{grid-column:1;grid-row:1 / span 2}
.b-mkaucp .c2-preview-mrow summary>.c2-preview-flag{grid-column:3;grid-row:1 / span 2}
.b-mkaucp .c2-preview-mrow summary::-webkit-details-marker{display:none}
}
.b-mkaucp .c1-steps{gap:12px;margin:0}
.b-mkaucp .c2-map-head{display:grid;grid-template-columns:minmax(120px,200px) minmax(0,1fr) 200px 24px;gap:16px;align-items:center;margin:-16px -20px 0;padding:10px 20px;border-bottom:1px solid var(--border-subtle);font-size:12px;font-weight:600;color:var(--text-muted)}
.b-mkaucp .c2-map-list{list-style:none;margin:0 -20px;padding:0;display:grid;gap:0}
.b-mkaucp .c2-map-list:is(:focus,:focus-visible){outline:none}
.b-mkaucp .c2-map-row{display:grid;grid-template-columns:minmax(120px,200px) minmax(0,1fr) 200px 24px;gap:16px;align-items:center;box-sizing:border-box;height:44px;min-height:44px;padding:0 20px;border-bottom:1px solid var(--border-subtle)}
.b-mkaucp .c2-map-row:last-child{border-bottom:0}
.b-mkaucp .c2-map-file{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-mkaucp .c2-map-example{font-size:13px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-mkaucp .c2-map-row>.bh-choice{width:200px;min-width:0}
.b-mkaucp .c2-map-row .bh-choice-trigger{width:200px;height:32px;min-height:32px;padding:0 12px;gap:8px;justify-content:space-between;border:0;border-radius:999px;background:var(--background-surface-subtle);font-size:13.5px;font-weight:600;color:var(--text-primary)}
.b-mkaucp .c2-map-row .bh-choice-trigger>span{flex:1 1 auto;min-width:0;text-align:left}
.b-mkaucp .c2-map-row:has(.c2-map-omit) .bh-choice-trigger{font-weight:500;color:var(--text-secondary)}
.b-mkaucp .c2-map-row .bh-choice-trigger[aria-invalid=true]{box-shadow:inset 0 0 0 1.5px var(--status-danger-text)}
.b-mkaucp .c2-map-row svg{width:16px;height:16px}
.b-mkaucp .c2-map-row>span[aria-hidden] svg{color:var(--status-success-text,var(--text-secondary))}
.b-mkaucp .c2-map-omit{color:var(--text-muted)}
.b-mkaucp .c2-map-error{list-style:none}
.b-mkaucp .c1-steps li{display:flex;align-items:center;gap:6px;font-size:12.5px;white-space:nowrap}
.b-mkaucp .c1-step-circle{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:1px solid var(--border-strong);border-radius:50%;flex:none;font-size:12px}
.b-mkaucp .c1-step-circle svg{width:14px;height:14px}
.b-mkaucp .c1-steps [aria-current=step] .c1-step-circle,.b-mkaucp .c1-step-done .c1-step-circle{background:var(--primary);color:var(--on-brand);border-color:var(--primary)}
.b-mkaucp .c1-drop{display:flex;align-items:center;justify-content:center;text-align:center;gap:12px;min-height:170px;border:1px dashed var(--border-strong);border-radius:14px;padding:20px}
.b-mkaucp .c1-drop>svg{width:28px;height:28px;color:var(--text-secondary)}
.b-mkaucp .c1-drop p{margin:0;color:var(--text-secondary)}
.b-mkaucp .c2-file-choice{margin:0;justify-content:center}
.b-mkaucp .c1-template{margin-block:8px 12px}
.b-mkaucp .c1-window-actions,.b-mkaucp .c1-import>.actions,.b-mkaucp .c1-window>.actions{display:flex;justify-content:flex-end;gap:10px;padding-top:16px}
.b-mkaucp .feedback-toast{position:fixed;left:50%;right:auto;bottom:calc(var(--c1-toast-offset,56px) + 24px);transform:translateX(-50%);max-width:calc(100vw - 32px);width:max-content;background:var(--background-surface-inverse);color:var(--text-inverse);border:0;border-radius:999px;box-shadow:var(--shadow-floating);z-index:100}
.b-mkaucp .feedback-toast .button{color:inherit;text-decoration:underline}
.c1-mobile-overflow.b-mkaucp{display:none}
@media(hover:none){.b-mkaucp .c1-chat .c1-icon{opacity:1}
}
@media(max-width:767px){.b-mkaucp .page-header h1{font-size:18px}
.b-mkaucp .page-header{gap:8px}
.b-mkaucp .page-actions{gap:4px}
.b-mkaucp .page-actions .button{padding-inline:12px}
.b-mkaucp .button{min-height:44px}
.b-mkaucp .c1-icon{width:40px;min-width:40px;height:40px;min-height:40px}
.b-mkaucp .c1-desktop-action{display:none!important}
.c1-mobile-overflow.b-mkaucp{display:block}
.b-mkaucp .c1-search-row{display:flex;flex-direction:column;align-items:stretch;gap:6px}
.b-mkaucp .c1-search{flex:0 0 40px;min-width:0}
.b-mkaucp .c1-filter-strip{width:100%;min-height:48px;mask-image:linear-gradient(to right,black calc(100% - 24px),transparent)}
.b-mkaucp .c1-filter-strip>.chip{min-height:40px}
.b-mkaucp .c2-directory-table{display:none!important}
.b-mkaucp .c2-directory{display:block}
.b-mkaucp .c2-directory-select{display:none}
.b-mkaucp .c2-directory-row{align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border-subtle);-webkit-tap-highlight-color:transparent}
.b-mkaucp .c2-directory-check{display:none}
.b-mkaucp .c2-directory-check.c1-selection-active{display:flex;width:28px}
.b-mkaucp .c2-directory-row:has(.c1-selection-active) .c1-mobile-avatar{display:none}
.b-mkaucp .c1-mobile-avatar{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;border-radius:50%;font-size:13px}
.b-mkaucp .c2-directory-name{min-height:0;font-weight:600;font-size:15px;line-height:22px}
.b-mkaucp .c2-directory-phone{display:block;font-size:13px;line-height:20px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.b-mkaucp .c2-directory-meta{display:inline-flex;margin:0 6px 0 0;font-size:13px;line-height:20px;vertical-align:middle}
.b-mkaucp .c2-directory-body>.c2-tags{display:flex;max-width:100%;flex-wrap:nowrap;max-height:20px;overflow:visible}
.b-mkaucp .c2-tags .c2-tag-trigger{position:relative;height:20px;min-height:20px;width:auto;min-width:24px}
.b-mkaucp .c2-tags .c2-tag-trigger::before{content:"";position:absolute;inset:-12px -10px}
.b-mkaucp .c1-pagination{gap:8px;padding-right:calc(var(--c1-dock-width,56px) + 12px);align-items:center;font-size:12px;flex-wrap:nowrap;min-height:56px}
.b-mkaucp .c1-pagination .actions{display:flex;flex-wrap:nowrap;align-items:center;gap:4px;min-width:0}
.b-mkaucp .c1-pagination .c1-range{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:none}
.b-mkaucp .c1-pagination .c1-page-numbers{display:none}
.b-mkaucp .c1-pagination .c1-icon{width:40px;min-width:40px;height:40px;min-height:40px}
.b-mkaucp .c1-page-size{flex-direction:row;align-items:center;gap:6px;flex:none}
.b-mkaucp .c1-page-size .bh-choice{width:68px}
.b-mkaucp .c1-detail-panel{inset:0;width:100%;border:0;padding-inline:16px;z-index:60;max-height:100dvh}
.b-mkaucp .c1-detail-panel>header{padding-block:10px;justify-content:flex-start}
.b-mkaucp .c1-detail-panel>header h2{flex:1;min-width:0;font-size:18px}
.b-mkaucp .c1-panel-mobile-back{display:inline-flex}
.b-mkaucp .c1-panel-close{display:none}
.b-mkaucp .c1-form-grid{grid-template-columns:1fr;gap:16px}
.b-mkaucp .c1-editor-actions{position:fixed;inset:auto 0 var(--c1-keyboard-offset,0) 0;z-index:65;background:var(--surface);border-top:1px solid var(--border-subtle);padding:10px 12px calc(14px + env(safe-area-inset-bottom));display:grid;grid-template-columns:minmax(max-content,1fr) minmax(max-content,1.4fr)}
.b-mkaucp .c1-editor-actions .button{justify-content:center;padding-inline:16px}
.b-mkaucp .c1-editor{padding-bottom:100px}
.b-mkaucp dialog.c1-import[open]{position:fixed;inset:0;box-sizing:border-box;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0;padding:0;
        grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto minmax(0,1fr) auto;grid-template-areas:"head" "step" "sum" "body" "foot"}
.b-mkaucp .c1-import>.c1-dialog-head{box-sizing:border-box;height:56px;padding:0 8px;gap:4px}
.b-mkaucp .c1-import>.c1-dialog-head h2{font-size:17px}
.b-mkaucp .c1-import .c1-mobile-back{display:inline-flex}
.b-mkaucp .c1-import .c1-steps{display:none}
.b-mkaucp .c1-import>.c2-step-of{grid-area:step;position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal;padding:12px 16px 0;font-size:13px;font-weight:600;color:var(--link-default)}
.b-mkaucp .c1-import>.c1-import-summary{padding:2px 16px 12px;border-top:0;border-bottom:1px solid var(--border-subtle)}
.b-mkaucp .c1-import>.c1-import-summary:empty{padding:0 0 12px}
.b-mkaucp .c1-import>.c1-import-body{padding:16px}
.b-mkaucp .c1-import>.c1-import-foot{display:grid;grid-template-columns:minmax(max-content,1fr) minmax(max-content,1.4fr);gap:10px;padding:10px 12px calc(14px + env(safe-area-inset-bottom))}
.b-mkaucp .c1-import>.c1-import-foot .button{width:100%;min-width:0;min-height:44px;justify-content:center;padding-inline:16px;white-space:nowrap;text-align:center}
.b-mkaucp .c1-import>.c1-import-foot>:only-child{grid-column:1 / -1}
.b-mkaucp .c6-pending-scroll{display:none}
.b-mkaucp .c6-pending-mobile{display:block}
.b-mkaucp .c6-pending-mobile li{display:flex;flex-direction:column;gap:2px;padding:10px 0;border-bottom:1px solid var(--border-subtle)}
.b-mkaucp .c6-pending-mobile li:last-child{border-bottom:0}
.b-mkaucp .c6-pending-mobile strong{font-size:15px;font-weight:600;line-height:22px;color:var(--text-primary)}
.b-mkaucp .c6-pending-mobile span{font-size:13px;line-height:20px;color:var(--status-warning-text);overflow-wrap:anywhere}
.b-mkaucp .c6-pending>summary{min-height:44px}
.b-mkaucp .c6-link{min-height:44px}
.b-mkaucp .c2-map-head{display:none}
.b-mkaucp .c2-map-list{margin:-16px -16px 0}
.b-mkaucp .c2-map-row{grid-template-columns:minmax(0,1fr) auto 20px;grid-template-rows:auto auto;column-gap:10px;row-gap:0;height:56px;min-height:56px;padding:0 16px}
.b-mkaucp .c2-map-file{grid-column:1;grid-row:1;align-self:end;font-size:15px}
.b-mkaucp .c2-map-example{grid-column:1;grid-row:2;align-self:start}
.b-mkaucp .c2-map-row>.bh-choice{grid-column:2;grid-row:1 / span 2;align-self:center;width:136px}
.b-mkaucp .c2-map-row .bh-choice-trigger{width:136px;height:40px;min-height:40px}
.b-mkaucp .c2-map-row>span[aria-hidden],.b-mkaucp .c2-map-row>.c2-map-omit{grid-column:3;grid-row:1 / span 2;align-self:center}
@media(max-width:359px){.b-mkaucp .c2-map-row>.bh-choice,.b-mkaucp .c2-map-row .bh-choice-trigger{width:116px}
}
.b-mkaucp .c1-steps{flex-wrap:wrap;gap:8px}
.b-mkaucp .c1-dialog .c1-icon{width:40px;min-width:40px}
}
@media(min-width:768px){.b-mkaucp .c2-directory{display:none}
}
@media(prefers-reduced-motion:reduce){.b-mkaucp *,.b-mkaucp *::before,.b-mkaucp *::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}
.e1-contact-skeleton.b-mkaucp,.c1-progress.b-mkaucp{opacity:1}
.c1-progress.b-mkaucp::before{width:100%;animation:none}
}
.b-mkaucp :is(.c1-avatar,.c1-mobile-avatar,.c1-detail-avatar,.c1-agent-avatar){background:var(--contact-avatar-background);color:var(--contact-avatar-foreground)}
.b-mkaucp .c1-search input{background:transparent!important;box-shadow:none}
.b-mkaucp .c1-search-row .report-columns-launcher{border:0!important;box-shadow:none}
.b-mkaucp .report-columns-launcher,.b-mkaucp .c1-icon{border:0!important}
.b-mkaucp .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.b-mkaucp .c1-drop{flex-direction:column}
@media(max-width:767px){.b-mkaucp .c1-filter-options .chip{min-height:40px}
.b-mkaucp .c1-search .c1-icon{width:40px;min-width:40px;height:40px;min-height:40px}
}
@media(max-width:359px){.b-mkaucp .c1-page-size>span{display:none}
.b-mkaucp .c1-pagination{font-size:11px;gap:4px}
}
@media(max-width:767px){.b-mkaucp .bh-selection-toolbar{gap:6px}
.b-mkaucp .bh-selection-toolbar>.actions{min-width:0;flex:1;flex-wrap:nowrap;gap:4px}
.b-mkaucp .bh-selection-toolbar strong{font-size:12px;line-height:16px}
.b-mkaucp .bh-selection-toolbar>.button{padding-inline:8px;gap:6px;flex:none}
}
.b-mkaucp dialog.c1-mobile-sheet{border:0;padding:0 0 env(safe-area-inset-bottom);background:var(--surface);color:var(--text);width:100%;max-width:100%;margin:auto 0 0;border-radius:18px 18px 0 0;box-shadow:var(--shadow-floating);overflow:hidden;max-height:calc(100dvh - 12px)}
.b-mkaucp .c1-mobile-more{display:none;min-height:1px}
.b-mkaucp .c1-mobile-end{display:none}
.b-mkaucp .c1-mobile-loading{display:flex;align-items:center;justify-content:center;gap:10px;min-height:56px;color:var(--text-secondary);font-size:13px}
.b-mkaucp .c1-mobile-error{display:flex;align-items:center;justify-content:center;gap:8px;min-height:56px;font-size:13px;color:var(--text-secondary)}
.b-mkaucp .c1-filter-strip>.chip:active:not(:disabled),.b-mkaucp .c1-filter-options .chip:active:not(:disabled){background-color:var(--contact-pill-off-pressed);border-color:var(--contact-pill-off-pressed-border);color:inherit}
.b-mkaucp .c1-filter-strip>.chip.active:active:not(:disabled),.b-mkaucp .c1-filter-options .chip.active:active:not(:disabled){background-color:var(--contact-pill-pressed);color:var(--contact-pill-on-text);border-color:var(--contact-pill-on-border)}
.b-mkaucp :is(.c1-filter-strip>.chip,.c1-filter-options .chip).c2-tag-chip.active:active:not(:disabled){background-color:var(--contact-tag-chip-background);border-color:transparent;color:var(--contact-tag-chip-foreground);filter:brightness(.94)}
@media(max-width:767px){.b-mkaucp .c1-desktop-pagination{display:none!important}
.b-mkaucp .c1-mobile-more{display:flex;align-items:center;justify-content:center;min-height:56px}
.b-mkaucp .c1-mobile-end{display:block;height:84px}
}
.b-mkaucp dialog.c1-mobile-sheet::backdrop{background:var(--ui-sheet-overlay)}
.b-mkaucp dialog.c1-mobile-sheet .bh-sheet-handle{display:flex;justify-content:center;padding:12px 0 6px}
.b-mkaucp dialog.c1-mobile-sheet .bh-sheet-handle>span{width:36px;height:4px;border-radius:2px;background:var(--ui-sheet-handle)}
.b-mkaucp dialog.c1-mobile-sheet [role="menu"]{display:flex;flex-direction:column;padding:8px 0 14px}
.b-mkaucp .c1-sheet-item{display:flex;align-items:center;gap:14px;min-height:56px;padding:0 20px;border:0;background:transparent;color:var(--text);font:inherit;font-size:15px;text-align:left;cursor:pointer}
@media (hover: hover){.b-mkaucp .c1-sheet-item:hover{background:var(--background-surface-subtle)}
}
.b-mkaucp .c1-sheet-item:active{background:var(--brand-subtle)}
.b-mkaucp .c1-sheet-item svg{width:20px;height:20px;flex:none}
.b-mkaucp .c1-sheet-item .c1-sheet-main{flex:1}
.b-mkaucp .c1-sheet-item .c1-sheet-sub{font-size:13.5px;color:var(--text-secondary)}
.b-mkaucp .c1-sheet-item .c1-sheet-text{flex:1;display:flex;flex-direction:column;line-height:1.3}
.b-mkaucp .c1-sheet-item .c1-sheet-text small{font-size:12.5px;color:var(--text-secondary)}
.b-mkaucp .c1-sort-sheet .c1-sheet-head{display:flex;align-items:center;gap:4px;min-height:48px;padding:0 8px;margin-inline:0}
.b-mkaucp .c1-sort-sheet .c1-sheet-head .c1-sheet-title{font-size:16px;font-weight:600}
.b-mkaucp .c1-table-scroll,.b-mkaucp .c2-directory{max-height:none;margin-bottom:var(--c1-toast-lane,0px);overflow:visible;scroll-padding-block:40px 12px}
.b-mkaucp .feedback-toast-timed{animation-duration:3s!important}
@media(prefers-reduced-motion:reduce){.b-mkaucp .feedback-toast-timed{animation:feedback-dismiss 3s steps(1,end) forwards!important}
}
.b-mkaucp .c1-dialog-back{display:none}
.b-mkaucp .c1-format .c1-field-label{display:block;margin-top:16px;font-size:14px;font-weight:600;line-height:20px;color:var(--text-primary)}
.b-mkaucp .c1-format .c1-filter-options{margin-block:8px 0}
.b-mkaucp .c1-export-summary{margin:0;font-size:14px;line-height:20px;color:var(--text-secondary)}
@media(max-width:767px){.b-mkaucp .c1-import>.c1-dialog-head>h2:first-child{padding-left:8px}
}
@media(max-width:767px){.b-mkaucp dialog.c1-window[open]{position:fixed;inset:0;display:flex;flex-direction:column;box-sizing:border-box;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:0 16px;border:0;border-radius:0;box-shadow:none;overflow-y:auto}
.b-mkaucp .c1-window>.c1-dialog-head{position:sticky;top:0;flex:none;justify-content:flex-start;gap:4px;box-sizing:border-box;height:56px;margin:0 -16px 12px;padding:0 8px;border-bottom:1px solid var(--border-subtle)}
.b-mkaucp .c1-window>.c1-dialog-head h2{flex:1 1 auto;min-width:0;overflow:hidden;font-size:17px;line-height:24px;text-overflow:ellipsis;white-space:nowrap}
.b-mkaucp .c1-window .c1-dialog-back{display:inline-flex}
.b-mkaucp .c1-window .c1-dialog-close{display:none}
.b-mkaucp .c1-window>.actions{position:sticky;bottom:0;display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin:auto -16px 0;padding:10px 12px 14px;border-top:1px solid var(--border-subtle);background:var(--surface)}
.b-mkaucp .c1-window>.actions .button{width:100%;min-height:44px;justify-content:center}
.b-mkaucp .c1-window>.actions .c1-window-dismiss{display:none}
.b-mkaucp .bh-filter-panel footer{grid-template-columns:minmax(max-content,1fr) minmax(max-content,1.4fr)}
.b-mkaucp .bh-filter-panel footer .button{justify-content:center;padding-inline:16px}
}
.b-mkaucp .c1-sheet-item.c1-sort-entry{min-height:60px;padding-block:6px}
.b-mkaucp .c1-sheet-item.c1-sort-entry>svg:last-child{width:16px;height:16px;color:var(--text-muted)}
.b-mkaucp .c1-sort-sheet{display:flex;flex-direction:column;max-height:calc(100dvh - 34px - env(safe-area-inset-bottom))}
.b-mkaucp .c1-sort-sheet>:not(.c1-sort-columns){flex:none}
.b-mkaucp .c1-sort-sheet .c1-sheet-title:focus{outline:none}
.b-mkaucp .c1-sort-columns{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.b-mkaucp .c1-sheet-item.c1-sort-column{min-height:46px;flex:none}
.b-mkaucp .c1-sheet-item.c1-sort-column>svg{width:18px;height:18px;color:var(--contact-sort-check)}
.b-mkaucp .c1-sort-order{display:flex;flex-direction:column;gap:8px;padding:12px 16px;border-top:1px solid var(--border-subtle)}
.b-mkaucp .c1-sort-order-label{padding-left:4px;font-size:13px;font-weight:600;color:var(--text-secondary)}
.b-mkaucp .c1-sort-pills{display:flex;gap:6px}
.b-mkaucp .c1-sort-pill{flex:1;min-width:0;height:40px;padding:0 12px;display:flex;align-items:center;justify-content:center;border:1px solid var(--contact-pill-off-border);border-radius:999px;background:var(--background-surface);color:var(--text-secondary);font:inherit;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent}
.b-mkaucp .c1-sort-pill[aria-checked=true]{background:var(--contact-pill-on-background);border-color:var(--contact-pill-on-border);color:var(--contact-pill-on-text)}
.b-mkaucp .c1-sort-pill:active{background:var(--contact-pill-pressed)}
.b-mkaucp .c1-sort-pill:focus-visible{outline:3px solid var(--contact-focus-ring);outline-offset:2px}
.b-mkaucp .c1-sort-apply{padding:10px 16px 14px;border-top:1px solid var(--border-subtle)}
.b-mkaucp .c1-sort-apply .button{width:100%;height:44px}
.b-mkaucp .c1-order-arrow{display:inline-flex;flex:none}
/* J14 · C15 1.14.4 (D11): en la tabla, las etiquetas de una fila van en una sola línea centrada, 6 px entre ellas; las que
   no entran pasan a «+n», etiqueta neutra de 20 px. La celda nunca crece en alto (nunca dos líneas de etiquetas). */
.b-mkaucp .c2-contact-table .c2-tags{flex-wrap:nowrap; align-items:center; gap:6px; overflow:hidden; white-space:nowrap;}
.b-mkaucp .c2-contact-table .c2-tags .chip{flex:0 1 auto; min-width:0; max-width:100%; padding:0; border:0; background:none; line-height:20px;}
/* K5 · C15 1.14.5: «+n» es la misma etiqueta neutra en la fila del celular (antes texto suelto). */
.b-mkaucp :is(.c2-contact-table,.c2-directory) :is(.c2-tags,.c2-tag-probe-list) .c2-tag-trigger{flex:none; width:auto; min-width:0; height:20px; min-height:20px; padding:0 7px; border:0; border-radius:6px; background:#F2ECE6; color:#6B615A; font:inherit; font-size:11.5px; font-weight:600; line-height:20px;}
:root[data-theme=dark] .b-mkaucp :is(.c2-contact-table,.c2-directory) :is(.c2-tags,.c2-tag-probe-list) .c2-tag-trigger{background:#2A2320; color:#B7A59B;}
.b-mkaucp .c2-directory .c2-tags .c2-tag-trigger{margin-left:2px} /* K5: 6 px después de la última etiqueta (la fila usa 4 px entre etiquetas) */
/* J4 · C22 1.14.4: sin color conocido todavía, la píldora del filtro va con su forma y ancho finales y relleno de
   esqueleto, hasta que llega el catálogo (nunca gris y después de color). */
.b-mkaucp .c2-tag-chip.c2-tag-pending{background:var(--background-surface-subtle) !important; border-color:transparent !important; color:transparent !important;}
.b-mkaucp .c2-tag-chip.c2-tag-pending *{color:transparent !important;}
/* J12 · C28 1.14.4 (D9): la tabla sin fondo propio; las filas sobre el fondo de la página (color-controls.css pinta toda
   fila con la superficie) y la línea entre filas como única marca. Hover #F6F1EC (oscuro #241D1A); marcada en tinte. */
.b-mkaucp .c2-contact-table tbody tr{background-color:transparent}
@media (hover: hover){.b-mkaucp .c2-contact-table tbody tr:hover{background:#F6F1EC}
:root[data-theme=dark] .b-mkaucp .c2-contact-table tbody tr:hover{background:#241D1A}
.b-mkaucp .c1-scroll-x .c2-contact-table tbody tr:hover>[data-sticky-column]{background:#F6F1EC}
:root[data-theme=dark] .b-mkaucp .c1-scroll-x .c2-contact-table tbody tr:hover>[data-sticky-column]{background:#241D1A}
}
/* K1 · C22 1.14.5: el lanzador de columnas de la barra no dibuja nada en Contactos; vacío no ocupa el espacio entre
   botones y «Exportar» termina en el borde de la tabla, igual cargando y cargada. */
.b-mkaucp .c1-desktop-action>[data-report-launcher]:empty{display:none}
/* K4 · C15 1.14.5: copia oculta de las etiquetas del filtro para medir el ancho que pide la columna (ContactTable). */
.b-mkaucp .c2-contact-table .c2-tag-probe{position:absolute; left:0; top:0; width:0; height:0; overflow:hidden; visibility:hidden; pointer-events:none; font-weight:400;}
.b-mkaucp .c2-contact-table .c2-tag-probe-list{display:inline-flex; align-items:center; gap:6px; width:max-content; white-space:nowrap;}
.b-mkaucp .c2-contact-table .c2-tag-probe-list .chip{flex:none; max-width:none; padding:0; border:0; background:none; line-height:20px;}
/* C28 · referencia menu-por-pagina: en escritorio el paginado de Contactos es la misma pieza que el de Etiquetas: todo junto
   a la derecha, «Por página» en gris, botón compacto, el rango y los números redondos con la página actual en tinte. */
@media(min-width:768px){
.b-mkaucp .c1-pagination{justify-content:flex-end;gap:6px}
.b-mkaucp .c1-page-size{gap:6px}
.b-mkaucp .c1-page-size>span{font-size:12px;font-weight:400;color:#756A62}
.b-mkaucp .c1-page-size .bh-choice{width:auto}
.b-mkaucp .c1-page-size .bh-choice-trigger{width:auto;min-height:34px;height:34px;padding:0 10px 0 12px;gap:8px;border-radius:10px;font-size:13.5px}
.b-mkaucp .c1-pagination .c1-range{margin:0 6px;font-size:13px;font-weight:400;color:#6B615A;font-variant-numeric:tabular-nums}
.b-mkaucp .c1-pagination .actions .c1-icon{width:34px;min-width:34px;height:34px;min-height:34px;padding:0;border:0;border-radius:999px;font-size:13.5px;font-weight:600;font-variant-numeric:tabular-nums}
.b-mkaucp .c1-pagination .c1-page-numbers .button{background:transparent;color:#6B615A}
.b-mkaucp .c1-pagination .c1-page-numbers .button[aria-current=page]{background:oklch(.955 .025 50);color:oklch(.45 .12 40)}
:root[data-theme=dark] .b-mkaucp .c1-page-size>span,:root[data-theme=dark] .b-mkaucp .c1-pagination .c1-range,:root[data-theme=dark] .b-mkaucp .c1-pagination .c1-page-numbers .button{color:var(--text-muted)}
:root[data-theme=dark] .b-mkaucp .c1-pagination .c1-page-numbers .button[aria-current=page]{background:var(--primary-soft);color:#F2B493}
}
/* C22 · referencia contactos-cargando: la fila de esqueleto de la tabla ocupa todo el ancho (el motor de columnas la pasa
   a bloque y la celda se encogía al círculo, sin barras): círculo, nombre a la izquierda, dato a la derecha y la línea
   entre filas de borde a borde. */
.b-mkaucp .c2-contact-table .e1-skeleton-row{grid-column:1/-1;width:100%}
.b-mkaucp .c2-contact-table .e1-skeleton-row>td{grid-column:1/-1;display:block;width:100%;height:100%;padding:0 10px;box-sizing:border-box;border-bottom:1px solid var(--border-subtle)}
.b-mkaucp .c2-contact-table .e1-skeleton-bar{flex:0 0 28%;height:10px;border-radius:999px}
.b-mkaucp .c2-contact-table .e1-skeleton-row:nth-child(2n) .e1-skeleton-bar:not(.e1-skeleton-short){flex-basis:22%}
.b-mkaucp .c2-contact-table .e1-skeleton-row:nth-child(3n) .e1-skeleton-bar:not(.e1-skeleton-short){flex-basis:26%}
.b-mkaucp .c2-contact-table .e1-skeleton-short{flex:0 0 18%;margin-left:auto}
/* Generado desde ContactTagSelector.razor.css del portal actual (scripts/razor-css-to-module.py): misma cascada que Blazor. */
.e1-tag-assignment.b-12jf1h{min-width:0;}
.e1-tag-assignment.b-12jf1h .chat-r2-icon{width:18px; height:18px; flex:none;}
.e1-tag-assignment > .button.b-12jf1h{gap:8px;}
.c1-tags.b-12jf1h{display:flex; gap:var(--space-1); flex-wrap:wrap;}
.chip.b-12jf1h{display:inline-block; padding:var(--space-1) var(--space-2); border-radius:var(--radius-sm); background:var(--background-surface-subtle); overflow-wrap:anywhere;}
.e1-tag-selector.b-12jf1h{width:min(400px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); overflow-y:auto; padding:var(--space-4); border:1px solid var(--border-subtle); border-radius:var(--radius-sm); color:var(--text-primary); background:var(--background-surface);}
.e1-tag-selector.b-12jf1h::backdrop{background:var(--backdrop-page);}
.c1-dialog-head.b-12jf1h{display:flex; align-items:center; justify-content:space-between; gap:var(--space-2);}
.c1-dialog-head h2.b-12jf1h{font-size:inherit;}
.e1-tag-selector > input[type=search].b-12jf1h{display:block; width:100%; min-height:44px; padding:var(--space-2) var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--control-radius); background:var(--background-surface); color:var(--text-primary); font:inherit;}
.e1-tag-options.b-12jf1h{display:flex; flex-direction:column; gap:var(--space-2); margin-block:var(--space-3);}
.e1-tag-option.b-12jf1h{display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); min-height:48px; padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-sm); cursor:pointer; background:var(--background-surface);}
@media (hover: hover){.e1-tag-option:hover.b-12jf1h{background:var(--background-surface-subtle);}
}
.e1-tag-option:focus-within.b-12jf1h{outline:2px solid var(--shell-accent); outline-offset:2px;}
.e1-tag-option.selected.b-12jf1h{border-color:var(--shell-accent); background:var(--navigation-active-background);}
.e1-tag-option > span.b-12jf1h{min-width:0; overflow-wrap:anywhere;}
.e1-tag-option strong.b-12jf1h{font-weight:500;}
.e1-tag-option small.b-12jf1h{display:block; margin-top:var(--space-1); color:var(--text-muted);}
.e1-tag-option input.b-12jf1h{flex:none;}
.e1-tag-dot.b-12jf1h{display:inline-block; margin-right:var(--space-2); width:8px; height:8px; border-radius:50%; background:var(--contact-tag-dot);}
.contact-tag-wrap.b-12jf1h{display:inline-flex; align-items:center; max-width:100%; border-radius:5px; background:var(--contact-tag-background, var(--contact-tag-neutral-background)); color:var(--contact-tag-foreground, var(--contact-tag-neutral-text));}
.contact-tag-wrap.b-12jf1h .contact-tag{background:transparent; color:inherit;}
.contact-tag-wrap.b-12jf1h .contact-tag:not(:last-child){padding-right:2px;}
.c1-tag-remove.b-12jf1h{display:inline-flex; align-items:center; justify-content:center; flex:none; width:22px; height:22px; border:0; border-radius:4px; background:transparent; color:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent;}
@media (hover: hover){.c1-tag-remove:hover:not(:disabled).b-12jf1h{background:var(--contact-tag-remove-hover);}
}
.e1-tag-assignment .contact-tag-wrap .c1-tag-remove:disabled.b-12jf1h{background:transparent; color:inherit; cursor:default;}
.c1-tag-remove:disabled.b-12jf1h svg{opacity:.45;}
.c1-tag-remove:active.b-12jf1h{background:var(--contact-tag-remove-pressed);}
.c1-tag-remove.b-12jf1h svg.chat-r2-icon{width:14px; height:14px;}
@media (max-width:767px){.c1-inline-tag-selector .c1-tags.b-12jf1h{gap:8px;}
.c1-tag-remove.b-12jf1h{position:relative;}
.c1-tag-remove.b-12jf1h::before{content:""; position:absolute; inset:-11px -4px;}
}
.e1-tag-selector .actions.b-12jf1h{display:flex; justify-content:space-between; flex-wrap:wrap; position:sticky; bottom:0; padding-block:var(--space-2); background:var(--background-surface);}
.c1-toast-undo.b-12jf1h{display:inline-flex; align-items:center; min-height:32px; padding:0 4px; border:0; border-radius:4px; background:transparent; color:var(--contact-toast-action); font:inherit; font-size:13.5px; font-weight:600; text-decoration:none; white-space:nowrap; cursor:pointer;}
@media (hover: hover){.c1-toast-undo:hover:not(:disabled).b-12jf1h{text-decoration:underline;}
}
.c1-toast-undo:focus-visible.b-12jf1h{outline:3px solid var(--contact-focus-ring); outline-offset:2px;}
.c1-toast-undo:disabled.b-12jf1h{background:transparent; color:var(--contact-disabled-text); cursor:default;}
.e1-tag-assignment.c1-inline-tag-selector .c1-tags.b-12jf1h{gap:.35rem;}
@media (max-width:767px){.e1-tag-assignment.c1-inline-tag-selector .c1-tags.b-12jf1h{gap:12px 8px;}
.c1-inline-tag-selector .contact-tag-wrap.b-12jf1h{height:32px; padding:0 4px 0 10px; gap:2px; border-radius:8px;}
.c1-inline-tag-selector .contact-tag-wrap.b-12jf1h .contact-tag{height:auto; padding:0; font-size:13px; font-weight:600; line-height:1.2;}
.c1-inline-tag-selector .contact-tag-wrap.b-12jf1h .contact-tag:last-child{padding-right:6px;}
.c1-inline-tag-selector .c1-tag-remove.b-12jf1h{width:24px; height:24px;}
.c1-inline-tag-selector .c1-tag-remove.b-12jf1h::before{inset:-10px -3px;}
}
.c1-inline-tag-selector .c1-tags.b-12jf1h{margin-bottom:8px;}
.c1-tag-menu.b-12jf1h{position:fixed; inset:auto; z-index:40; box-sizing:border-box; width:280px; max-width:calc(100vw - 16px); margin:0; max-height:65dvh; overflow:auto; padding:6px; border:1px solid var(--border-subtle); border-radius:14px; background:var(--surface); box-shadow:var(--shadow-floating);}
.c1-tag-menu .c1-sheet-head.b-12jf1h{display:none;}
.c1-tag-menu .c1-search.b-12jf1h{display:flex; align-items:center; gap:8px; box-sizing:border-box; width:100%; min-width:0; height:38px; margin-bottom:6px; padding-inline:12px; border:1.5px solid transparent; border-radius:999px; background:var(--background-surface-subtle);}
.c1-tag-menu .c1-search:focus-within.b-12jf1h{border:1.5px solid var(--primary); outline:none;}
.c1-tag-menu .c1-search input.b-12jf1h{width:100%; min-width:0; height:38px; min-height:0; border:0; outline:0; background:transparent; box-shadow:none; padding:0; font:inherit; color:var(--text-primary);}
.c1-tag-menu .c1-search input.b-12jf1h::-webkit-search-cancel-button{display:none;}
.c1-tag-menu .c1-search.b-12jf1h svg{width:16px; height:16px; flex:none; color:var(--text-secondary);}
.c1-tag-menu .c1-icon.b-12jf1h{display:inline-flex; align-items:center; justify-content:center; flex:none; width:36px; min-width:36px; height:36px; min-height:36px; padding:0; border:0; border-radius:50%; background:transparent; color:var(--text-secondary); cursor:pointer;}
@media (hover: hover){.c1-tag-menu .c1-icon:hover.b-12jf1h{background:var(--background-surface-subtle);}
}
.c1-tag-menu .c1-icon.b-12jf1h svg{width:18px; height:18px;}
.c1-tag-menu .c1-search .c1-icon.b-12jf1h{width:28px; min-width:28px; height:28px; min-height:28px;}
.c1-tag-options > button.b-12jf1h{display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%; min-height:40px; padding:10px 12px; border:0; border-radius:10px; background:transparent; color:var(--text-primary); font:inherit;}
@media (hover: hover){.c1-tag-options > button:hover:not(:disabled).b-12jf1h{background:var(--background-surface-subtle);}
}
.c1-tag-options > button:disabled.b-12jf1h{background:transparent; color:var(--control-disabled-text); cursor:default;}
.c1-tag-options.b-12jf1h svg{width:16px; height:16px;}
.c1-tag-manage.b-12jf1h{display:block; min-height:40px; padding:10px 12px; border-top:1px solid var(--border-subtle); color:var(--link-default); text-decoration:none;}
.c1-tag-menu .trace.b-12jf1h{font-size:12px; margin:6px 12px; color:var(--text-secondary);}
@media (max-width:767px){.c1-tag-menu:popover-open.b-12jf1h{position:fixed; inset:0; width:100vw; max-width:100vw; height:100dvh; max-height:100dvh; margin:0; padding:0 16px 16px; border:0; border-radius:0; box-shadow:none; overflow-y:auto;}
.c1-tag-menu .c1-sheet-head.b-12jf1h{display:flex; align-items:center; gap:4px; position:sticky; top:0; z-index:2; box-sizing:border-box; height:56px; margin:0 -16px 12px; padding:0 8px; border-bottom:1px solid var(--border-subtle); background:var(--surface);}
.c1-tag-menu .c1-icon.b-12jf1h,.c1-tag-menu .c1-search .c1-icon.b-12jf1h{width:40px; min-width:40px; height:40px; min-height:40px;}
.c1-tag-menu .c1-sheet-head h2.b-12jf1h{flex:1 1 auto; min-width:0; margin:0; overflow:hidden; font-size:17px; font-weight:700; line-height:24px; text-overflow:ellipsis; white-space:nowrap;}
.c1-tag-menu .c1-search.b-12jf1h{height:44px;}
.c1-tag-menu .c1-tag-options > button.b-12jf1h{min-height:44px;}
}
/* Generado desde ContactImportWizard.razor.css del portal actual (scripts/razor-css-to-module.py): misma cascada que Blazor. */
.e2-import-tags.b-2zemy8{padding:var(--space-3); margin-bottom:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-sm); background:var(--background-surface-subtle);}
.e2-import-tags h4.b-2zemy8{margin:0 0 var(--space-2);}
.e2-import-tags p.b-2zemy8{margin-block:var(--space-2);}
.e2-import-pending.b-2zemy8{max-height:180px; overflow-y:auto;}
.e2-import-tag.b-2zemy8{display:flex; justify-content:space-between; align-items:center; gap:var(--space-2); padding-block:var(--space-2); border-bottom:1px solid var(--border-subtle);}
.e2-import-tag span.b-2zemy8{min-width:0; overflow-wrap:anywhere;}
.e2-import-tag small.b-2zemy8{display:block; color:var(--text-muted);}
.e2-import-resolver.b-2zemy8{display:grid; gap:var(--space-2); margin-top:var(--space-3);}
.e2-import-resolver h4.b-2zemy8{overflow-wrap:anywhere;}
.e2-import-resolver > .trace.b-2zemy8{margin:0;}
.e2-import-resolver > .button.b-2zemy8{justify-self:start;}
.e3-tag-results.b-2zemy8{margin-block:var(--space-3); overflow-wrap:anywhere;}
.e2-import-resolver input.b-2zemy8{box-sizing:border-box; width:100%; padding:var(--space-2); font:inherit; color:var(--text-primary); background:var(--background-surface); border:1px solid var(--border-subtle); border-radius:var(--control-radius);}
.e2-import-existing.b-2zemy8{max-height:180px; overflow-y:auto; display:flex; flex-direction:column; align-items:stretch;}
.e2-import-existing .button.b-2zemy8{justify-content:flex-start;}
@media(max-width:600px){.e2-import-tags .button.b-2zemy8,.e2-import-tags input.b-2zemy8{min-height:44px;}
}
/* Generado desde ContactTagBadge.razor.css del portal actual (scripts/razor-css-to-module.py): misma cascada que Blazor. */
.contact-tag.b-ahz2zb{display:inline-block;max-width:100%;height:20px;padding:0 7px;border:0;border-radius:999px;background:var(--contact-tag-neutral-background);color:var(--contact-tag-neutral-text);font-size:11.5px;font-weight:600;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.contact-tag-colored.b-ahz2zb{background:var(--contact-tag-background);color:var(--contact-tag-foreground)}
.contact-tag.b-ahz2zb mark.chat-match,.contact-tag.b-ahz2zb .chat-match.chat-match{padding:0;background:none;color:inherit;font-weight:700;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
/* Generado desde ManualCopyDialog.razor.css del portal actual (scripts/razor-css-to-module.py): misma cascada que Blazor. */
.e2-copy-dialog.b-gi7ebf{box-sizing:border-box; width:min(600px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); overflow-y:auto; padding:var(--space-4); border:1px solid var(--border-subtle); border-radius:var(--radius-sm); background:var(--background-surface); color:var(--text-primary);}
.e2-copy-dialog.b-gi7ebf::backdrop{background:var(--backdrop-page);}
.e2-copy-head.b-gi7ebf{display:flex; align-items:center; justify-content:space-between; gap:var(--space-2);}
.e2-copy-head h2.b-gi7ebf{margin:0;}
textarea.b-gi7ebf{box-sizing:border-box; width:100%; height:210px; max-height:40dvh; min-height:120px; padding:var(--space-3); font:inherit; font-size:inherit; color:var(--text-primary); background:var(--background-surface); border:1px solid var(--border-subtle); border-radius:var(--control-radius); resize:vertical;}
.actions.b-gi7ebf{display:flex; justify-content:flex-end; flex-wrap:wrap; gap:var(--space-2); margin-top:var(--space-3);}
@media(max-width:480px){.button.b-gi7ebf{min-height:44px;}
}
.e2-copy-head .button.b-gi7ebf{display:inline-flex;align-items:center;justify-content:center;width:36px;min-width:36px;height:36px;padding:0}
.e2-copy-head.b-gi7ebf svg{width:18px;height:18px}
.e2-copy-back.b-gi7ebf{display:none!important}
@media(max-width:767px){.e2-copy-dialog[open].b-gi7ebf{position:fixed; inset:0; display:flex; flex-direction:column; width:100vw; max-width:100vw; height:100dvh; max-height:100dvh; margin:0; padding:0 16px; border:0; border-radius:0;}
.e2-copy-head.b-gi7ebf{position:sticky; top:0; justify-content:flex-start; gap:4px; height:56px; margin:0 -16px 12px; padding:0 8px; border-bottom:1px solid var(--border-subtle); background:var(--background-surface);}
.e2-copy-head h2.b-gi7ebf{flex:1 1 auto; min-width:0; font-size:17px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.e2-copy-back.b-gi7ebf{display:inline-flex!important; width:40px!important; min-width:40px!important; height:40px!important;}
.e2-copy-close.b-gi7ebf{display:none!important;}
textarea.b-gi7ebf{flex:1 1 auto; max-height:none;}
.actions.b-gi7ebf{position:sticky; bottom:0; display:grid; grid-template-columns:minmax(0,1fr); margin:12px -16px 0; padding:10px 12px 14px; border-top:1px solid var(--border-subtle); background:var(--background-surface);}
.actions .button.b-gi7ebf{width:100%; min-height:44px; justify-content:center;}
.actions .e2-copy-done.b-gi7ebf{display:none;}
.actions .e2-copy-select.b-gi7ebf{background:var(--primary); color:var(--primary-contrast,var(--on-brand));}
}
/* Etiquetas R1 (kit 1.14.3): medidas de la referencia «Referencia Etiquetas.dc.html» con los tokens --tm-* del tema
   (claro y oscuro). Las piezas del kit de Configuración (tm-head, tm-tabs, tm-search, tm-pill, tm-btn, tm-menu-items,
   tm-window) vienen de team.css; aquí solo va lo propio de la pantalla. */
.b-6qd84q{--tg-check:var(--control-border)}

/* I3 · Encabezado: ← de 36 px en el color del título, título de 26 px, «Nueva etiqueta» de 40 px; pestañas a 12 px. */
.b-6qd84q .tg-head{margin:0 0 12px;flex-wrap:nowrap}
.b-6qd84q .tg-head .tm-head-title{gap:8px}
.b-6qd84q .tg-head h1{margin:0;font-size:26px;font-weight:700;line-height:40px;letter-spacing:-.01em}
.b-6qd84q .tg-back{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;margin-left:-6px;border-radius:999px;color:var(--tm-text)}
.b-6qd84q .tg-back .chat-r2-icon{width:20px;height:20px}
.b-6qd84q .tg-back:hover{background:var(--tm-hover)}
.b-6qd84q .tg-head .tm-btn .chat-r2-icon{width:16px;height:16px}
.b-6qd84q .tg-sub{margin:12px 0 0;font-size:12.5px;color:var(--tm-secondary)}

/* I4 · Buscador de 420 px y píldoras de estado a 8 px; línea vertical y «Más filtros» al final. */
.b-6qd84q .tg-filters{display:flex;align-items:center;gap:8px;margin-top:16px;min-width:0}
.b-6qd84q .tg-search{flex:0 0 420px;width:420px;min-width:0}
.b-6qd84q .tg-pill-row{display:flex;align-items:center;gap:8px;min-width:0;overflow-x:auto;scrollbar-width:none}
/* J15 · aire para el anillo de foco (2 + 2 px): el desplazamiento lateral de la fila lo cortaba arriba y abajo. */
.b-6qd84q .tg-pill-row{padding:4px;margin:-4px}
.b-6qd84q .tg-pill-row::-webkit-scrollbar{display:none}
.b-6qd84q .tg-state{flex:none;flex-wrap:nowrap;gap:8px}
.b-6qd84q .tg-pill-row>*{flex:none}
.b-6qd84q .tg-divider{flex:none;width:1px;height:20px;background:var(--tm-line)}
.b-6qd84q .tg-date-pill .chat-r2-icon{width:14px;height:14px}
.b-6qd84q .tg-filters .bh-filter-trigger{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px 0 12px;border:1px solid var(--tm-control-border);border-radius:999px;background:var(--tm-surface);color:var(--tm-secondary);font:inherit;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer}
.b-6qd84q .tg-filters .bh-filter-trigger .chat-r2-icon{width:14px;height:14px}
/* J8 · C07 1.14.4: «Más filtros» en tinte (encendida) mientras su panel o su hoja están abiertos. */
.b-6qd84q .tg-filters .bh-filter-trigger[aria-expanded=true]{background:var(--tm-soft);border-color:var(--tm-accent-border);color:var(--tm-accent-text)}
.b-6qd84q .tg-filter-options .tm-pill{gap:6px}
.b-6qd84q .tg-range-fields input::placeholder{color:var(--tm-meta);opacity:1}
/* J9 · celular: Desde y Hasta son botones con aspecto de campo (C05, 42 px) que abren «← Elegir fechas». */
.b-6qd84q .tg-date-button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:42px;padding:0 12px;border:1px solid var(--tm-control-border);border-radius:10px;background:var(--tm-surface);color:var(--tm-text);font:inherit;font-size:14.5px;text-align:left;cursor:pointer}
.b-6qd84q .tg-date-button .chat-r2-icon{flex:none;width:16px;height:16px;color:var(--tm-secondary)}
.b-6qd84q .tg-date-empty{color:var(--tm-meta)}
.b-6qd84q .tg-date-screen{display:flex;flex-direction:column;gap:8px}
.b-6qd84q .tg-date-screen .tg-sort-head{padding:0 0 4px;margin-left:-8px}
/* J9 · «← Elegir fechas»: el rango debajo del mes, centrado, 13 px; «Aplicar» a todo el ancho (44 px) en la barra fija. */
.b-6qd84q .tg-date-screen .stat-range-foot{display:flex;justify-content:center;text-align:center;font-size:13px;color:var(--tm-secondary)}
.b-6qd84q .bh-filter-panel footer:has(>.tg-wide){display:flex}
.b-6qd84q .bh-filter-panel footer>.tg-wide{flex:1;height:44px}
/* C07 · panel «Más filtros» en escritorio como la referencia panel-mas-filtros-etiquetas: 16 px de aire, radio 14,
   12 px entre partes, «Limpiar filtros» y «Aplicar» de 40 px (150 px como mínimo) abajo a la derecha, sin pie pegado. */
@media(min-width:768px){
 /* J10 · un solo grupo («Creación»): el panel no estira al ancho de la fila. FilterPanel.tsx pone el ancho de la
    fila en línea (box.width); sin tope, los 420 px de Desde/Hasta quedaban sueltos en una tarjeta de 1400+ px,
    con «Limpiar filtros»/«Aplicar» lejos a la derecha. El panel mide su contenido (16 px de aire + 420 px de
    Desde/Hasta) hasta 488 px; max-width gana sobre el ancho en línea. La hoja del celular no se toca. */
 .b-6qd84q dialog.bh-filter-panel{padding:16px;border-radius:14px;max-width:488px}
 .b-6qd84q .bh-filter-panel .bh-filter-groups{display:flex;flex-direction:column;gap:12px}
 .b-6qd84q .bh-filter-panel footer{position:static;margin:12px 0 0;padding:0;gap:8px}
 .b-6qd84q .bh-filter-panel footer .button{min-width:150px;height:40px;min-height:40px;padding:0 18px;border-radius:999px;font-size:14px;font-weight:600}
}
.b-6qd84q .tg-filter-group h3{margin:0 0 12px;font-size:12px;font-weight:600;color:var(--tm-meta)}
.b-6qd84q .tg-filter-options{display:flex;flex-wrap:wrap;gap:8px}
.b-6qd84q .tg-range{margin-top:12px;display:flex;flex-direction:column;gap:12px}
.b-6qd84q .tg-range-fields{display:grid;grid-template-columns:repeat(2,204px);gap:12px}
.b-6qd84q .tg-date{position:relative;display:block}
.b-6qd84q .tg-date .chat-r2-icon{position:absolute;top:50%;right:12px;width:16px;height:16px;color:var(--tm-secondary);transform:translateY(-50%);pointer-events:none}
.b-6qd84q .tg-filter-options .tm-pill .chat-r2-icon{width:14px;height:14px}
.b-6qd84q .tg-range-fields input{padding-right:38px!important;height:42px;width:100%;padding:0 12px;border:1px solid var(--tm-control-border);border-radius:10px;background:var(--tm-surface);color:var(--tm-text);font:inherit;font-size:14.5px}

/* I5 · Vacío centrado a 24 px de los filtros. */
.b-6qd84q .tg-empty{padding:24px 16px 0}
.b-6qd84q .tg-loading{margin-top:16px}

/* I8 · Barra de la tabla (44 px, a 12 px de los filtros) y barra de selección en el mismo lugar y alto. */
.b-6qd84q .tg-bar{display:flex;align-items:center;gap:8px;height:44px;margin-top:12px}
.b-6qd84q .tg-count{flex:1;font-size:14px;font-weight:600;white-space:nowrap}
.b-6qd84q .tg-bar-end{display:flex;align-items:center;gap:8px;margin-left:auto}
.b-6qd84q .tg-export{height:36px;padding:0 16px;font-size:14px}
.b-6qd84q .tg-export .chat-r2-icon{width:16px;height:16px}
.b-6qd84q .tg-bar .tm-icon-btn{color:var(--tm-text)}
.b-6qd84q .tg-selection{padding:0 6px;border-radius:12px;background:var(--tm-soft)}
.b-6qd84q .tg-selection>strong{flex:1;font-size:14px;font-weight:600;color:var(--tm-accent-text);white-space:nowrap}
.b-6qd84q .tg-selection>.tm-icon-btn{color:var(--tm-accent-text)}
.b-6qd84q .tg-bar-actions{display:flex;align-items:center;gap:8px}
.b-6qd84q .tg-bar-btn{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 14px;border:0;border-radius:999px;background:var(--tm-surface);color:var(--tm-text);font:inherit;font-size:13.5px;font-weight:600;white-space:nowrap;cursor:pointer}
.b-6qd84q .tg-bar-btn .chat-r2-icon{width:16px;height:16px}

/* I6 · Tabla C28 sin caja: solo la línea entre filas, encabezado de 40 px y filas de 56 px centradas. */
.b-6qd84q .tg-table-wrap{margin-top:4px;min-width:0}
.b-6qd84q .tg-table-wrap[hidden]{display:none}
.b-6qd84q .tg-columns-launcher{display:none}
.b-6qd84q .tg-table{width:100%;border-collapse:collapse;table-layout:auto}
.b-6qd84q .tg-table th{height:40px;padding:0 12px;text-align:left;font-size:12px;font-weight:600;color:var(--tm-meta);border-bottom:1px solid var(--tm-line);white-space:nowrap;background:var(--tm-page);position:sticky;top:0;z-index:1}
.b-6qd84q .tg-table td{height:56px;padding:0 12px;border-bottom:1px solid var(--tm-line);font-size:13.5px;color:var(--tm-secondary);white-space:nowrap;vertical-align:middle}
/* J12 · C28 1.14.4 (D9): sin fondo propio; color-controls.css pinta toda fila con la superficie. */
.b-6qd84q .tg-table tbody tr{background-color:transparent}
.b-6qd84q .tg-table tbody tr:hover td{background:var(--tm-row-hover)}
.b-6qd84q .tg-table tbody tr.tg-marked td{background:var(--tm-soft)}
/* Filas marcadas seguidas: un solo tinte, sin línea entre ellas (referencia barra-seleccion-etiquetas). */
.b-6qd84q .tg-table tbody tr.tg-marked:has(+tr.tg-marked) td{border-bottom-color:transparent}
/* «Columnas y vistas» dibuja la tabla como grilla (feedback.css, data-view-managed): cada celda centra su contenido. */
.b-6qd84q .tg-table[data-view-managed=true]>:is(thead,tbody)>tr>:is(th,td):not([hidden]){display:flex!important;align-items:center;min-width:0}
.b-6qd84q .tg-table[data-view-managed=true]>:is(thead,tbody)>tr>.tg-col-contacts{justify-content:flex-end}
.b-6qd84q .tg-table[data-view-managed=true]>:is(thead,tbody)>tr>.tg-col-action{justify-content:flex-end}
.b-6qd84q .tg-table[data-view-managed=true]>tbody>tr>.tg-col-description{display:block!important;line-height:56px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* I6 · Primera columna fija con sombra cuando la tabla se desplaza de lado (ReportViews marca data-sticky-column y
   tg-scroll-x; fondos como Contactos: página, hover y marcada). */
.b-6qd84q .tg-table-wrap.tg-scroll-x .tg-table [data-sticky-column]{position:sticky;z-index:1;background:var(--tm-page)}
.b-6qd84q .tg-table-wrap.tg-scroll-x .tg-table th[data-sticky-column]{z-index:2}
.b-6qd84q .tg-table-wrap.tg-scroll-x .tg-table [data-sticky-column="last"]{box-shadow:inset -1px 0 0 var(--tm-line),8px 0 10px -8px var(--shadow-lg-color,var(--shadow-color))}
.b-6qd84q .tg-table-wrap.tg-scroll-x .tg-table tbody tr:hover>[data-sticky-column]{background:var(--tm-row-hover)}
.b-6qd84q .tg-table-wrap.tg-scroll-x .tg-table tbody tr.tg-marked>[data-sticky-column]{background:var(--tm-soft)}
.b-6qd84q .tg-col-check{width:44px;padding:0 0 0 13px!important}
.b-6qd84q .tg-col-tag{min-width:200px}
.b-6qd84q .tg-col-description{min-width:0;overflow:hidden;text-overflow:ellipsis}
.b-6qd84q .tg-col-contacts{min-width:110px;text-align:right!important;font-variant-numeric:tabular-nums}
.b-6qd84q th.tg-col-contacts .tg-sort{justify-content:flex-end}
.b-6qd84q .tg-col-created{min-width:130px}
.b-6qd84q .tg-col-action{width:50px;padding:0 4px 0 0!important;text-align:right}
.b-6qd84q .tg-sort{display:inline-flex;align-items:center;gap:4px;height:40px;padding:0;border:0;background:none;font:inherit;font-size:12px;font-weight:600;color:var(--tm-meta);cursor:pointer;white-space:nowrap}
.b-6qd84q th[aria-sort=ascending] .tg-sort,.b-6qd84q th[aria-sort=descending] .tg-sort{color:var(--tm-text)}
.b-6qd84q .tg-sort .chat-r2-icon{width:14px;height:14px}
.b-6qd84q .tg-tag-cell{display:inline-flex;align-items:center;gap:6px;max-width:100%;vertical-align:middle}
.b-6qd84q .tg-state-tag{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:6px;background:var(--tm-neutral);color:var(--tm-secondary);font-size:11.5px;font-weight:600;white-space:nowrap}
.b-6qd84q .tg-none,.b-6qd84q .tg-zero{color:var(--tm-meta)}
.b-6qd84q .tg-col-description .chat-match{padding:0;background:none;color:var(--tm-accent);font-weight:700}
.b-6qd84q .tg-count-link{color:var(--tm-text);text-decoration:none;font-variant-numeric:tabular-nums}
.b-6qd84q .tg-count-link:hover{color:var(--tm-accent);text-decoration:underline}
.b-6qd84q .tg-row-more{width:34px;height:34px;color:var(--tm-text)}
@media(hover:hover){
 .b-6qd84q .tg-table .tg-row-menu:not([open]) .tg-row-more{opacity:0}
 /* J6 · el ⋮ aparece con el mouse sobre cualquier celda de la fila o con el foco dentro de ella (pesa más que la regla
    que lo oculta: 0,5,2 contra 0,5,0). */
 .b-6qd84q .tg-table tbody tr:is(:hover,:focus-within) .tg-row-menu .tg-row-more,.b-6qd84q .tg-table .tg-row-menu .tg-row-more:focus-visible{opacity:1}
}
.b-6qd84q .tg-row-more .chat-r2-icon{width:18px;height:18px}

/* Casilla de C28 1.14.3: 18 px con borde de control; marcada, terracota con ✓; algunas, con −. Zona de 44 px. */
.b-6qd84q .tg-check{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:1.5px solid var(--tg-check);border-radius:5px;background:var(--tm-surface);color:var(--tm-on-accent);cursor:pointer;vertical-align:middle;position:relative}
.b-6qd84q .tg-check::before{content:"";position:absolute;inset:-13px}
.b-6qd84q .tg-check[aria-checked=true],.b-6qd84q .tg-check[aria-checked=mixed]{background:var(--tm-accent);border-color:var(--tm-accent)}
.b-6qd84q .tg-check .chat-r2-icon{width:13px;height:13px;stroke-width:3}

/* I10 · Paginado de 44 px a la derecha; un solo scroll, el de la página. */
.b-6qd84q .tg-pager{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-height:44px;margin-top:8px;padding-right:calc(var(--chat-launcher-width,56px) + 12px)}
.b-6qd84q .tg-pager-label{font-size:12px;color:var(--tm-meta)}
.b-6qd84q .tg-pager .tm-menu{position:relative}
.b-6qd84q .tg-size{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 10px 0 12px;border:1px solid var(--tm-control-border);border-radius:10px;background:var(--tm-surface);color:var(--tm-text);font:inherit;font-size:13.5px;cursor:pointer}
.b-6qd84q .tg-size .chat-r2-icon{width:16px;height:16px;color:var(--tm-secondary)}
/* J7 · C11 1.14.4 menú de valores cortos: debajo del botón y alineado a su borde izquierdo (lo ubica el paginado, fijo
   a la ventana; arriba solo si abajo no entra), del ancho de su contenido (la opción más larga, 12 px de aire y la
   columna del ✓ de 16 px) y nunca más angosto que el botón; opciones de 40 px. */
.b-6qd84q .tg-size-menu{top:calc(100% + 6px);bottom:auto;left:0;right:auto;width:max-content;min-width:100%;padding:6px}
.b-6qd84q .tg-size-menu [role=menuitemradio]{display:grid;grid-template-columns:auto 16px;gap:24px;min-height:40px;height:40px;padding:0 12px}
.b-6qd84q .tg-size-menu [role=menuitemradio]>.tg-option-text{font-variant-numeric:tabular-nums}
.b-6qd84q .tg-range-text{margin:0 6px;font-size:13px;color:var(--tm-secondary);font-variant-numeric:tabular-nums}
.b-6qd84q .tg-page{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:0;border-radius:999px;background:transparent;color:var(--tm-secondary);font:inherit;font-size:13.5px;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer}
.b-6qd84q .tg-page:hover:not(:disabled){background:var(--tm-hover)}
.b-6qd84q .tg-page[aria-current=page]{background:var(--tm-soft);color:var(--tm-accent-text)}
.b-6qd84q .tg-page:disabled{background:transparent;color:var(--tm-disabled);cursor:default}
.b-6qd84q .tg-page .chat-r2-icon{width:18px;height:18px}
.b-6qd84q .tg-gap{width:20px;text-align:center;color:var(--tm-meta)}

/* I9 · Menú de fila C11 (TeamMenu): opciones de 40 px con ícono de 18 px; separador antes de Archivar. */
.b-6qd84q .tg-row-menu{position:relative;display:inline-flex}
.b-6qd84q .tm-menu-divider{height:1px;margin:6px 0;background:var(--tm-line);flex:none}
.b-6qd84q .tg-option-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;text-align:left}
.b-6qd84q .tg-option-text small{font-size:12.5px;color:var(--tm-secondary)}
.b-6qd84q .tm-menu-items [role=menuitemradio]{display:flex;align-items:center;gap:12px;width:100%;min-height:40px;padding:10px 12px;border:0;border-radius:10px;background:none;color:var(--tm-text);font:inherit;font-size:14px;cursor:pointer}
.b-6qd84q .tm-menu-items [role=menuitemradio]:hover{background:var(--tm-row-hover)}
.b-6qd84q .tm-menu-items [role=menuitemradio] .chat-r2-icon{width:16px;height:16px;color:var(--tm-accent-text)}
.b-6qd84q .tg-sheet-tag{padding:0 20px 8px}

/* I2 · Ventana de 480 px y formulario (C05): campos de 42 px, ayuda de 12,5 px, error de 12 px con borde de error. */
.b-6qd84q .tg-form{display:flex;flex-direction:column;gap:14px}
.b-6qd84q .tg-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.b-6qd84q .tg-field>label,.b-6qd84q .tg-label{font-size:14px;font-weight:600;color:var(--tm-text)}
.b-6qd84q .tg-optional{color:var(--tm-meta);font-weight:400}
.b-6qd84q .tg-input{height:42px;width:100%;padding:0 12px;border:1px solid var(--tm-control-border);border-radius:10px;background:var(--tm-surface);color:var(--tm-text);font:inherit;font-size:14.5px;outline:0}
.b-6qd84q .tg-input::placeholder{color:var(--tm-meta)}
.b-6qd84q .tg-input:focus-visible{border-color:var(--tm-accent);box-shadow:0 0 0 3px var(--tm-focus)}
.b-6qd84q .tg-input.invalid,.b-6qd84q .tg-input.invalid:focus,.b-6qd84q .tg-input.invalid:focus-visible{border-color:var(--tm-error);box-shadow:none;outline:0}
.b-6qd84q .tg-textarea{height:auto;min-height:110px;padding:10px 12px;resize:vertical;line-height:1.45}
.b-6qd84q .tg-help{font-size:12.5px;color:var(--tm-secondary)}
.b-6qd84q .tg-help.tg-error{font-size:12px;color:var(--tm-error)}
.b-6qd84q .tg-preview{display:flex;align-items:center;gap:10px}
.b-6qd84q .tg-export-line{margin:0;font-size:14px;color:var(--tm-text)}
.b-6qd84q .tm-window:has(.tg-form),.b-6qd84q .tm-window:has(.tg-export-line),.b-6qd84q .tm-window:has(.tg-copy){width:480px}
.b-6qd84q .tm-window:has(:is(.tg-form,.tg-export-line,.tg-copy)) footer{padding:12px 20px 16px;border-top:1px solid var(--tm-line)}
.b-6qd84q .tm-window:has(:is(.tg-form,.tg-export-line,.tg-copy)) footer .tm-btn .chat-r2-icon{width:16px;height:16px}

/* J1 · C46 ventana de respaldo de «Copiar para pegar en Excel»: frase, campo de solo lectura de 132 px sin partir filas
   (desplazamiento lateral dentro del campo) y la cantidad debajo. */
.b-6qd84q .tg-copy{display:flex;flex-direction:column;gap:12px}
.b-6qd84q .tg-copy-line{margin:0;font-size:14px;font-weight:400;line-height:1.45;color:var(--tm-text)}
.b-6qd84q .tg-copy-text{display:block;box-sizing:border-box;width:100%;height:132px;margin:0;padding:10px 12px;border:1px solid var(--tm-control-border);border-radius:10px;background:var(--tm-surface);color:var(--tm-text);font:inherit;font-size:13px;line-height:1.55;font-variant-numeric:tabular-nums;white-space:pre;overflow:auto;resize:none;outline:0}
.b-6qd84q .tg-copy-text:focus{border-color:var(--tm-accent);box-shadow:0 0 0 3px var(--tm-focus)}
.b-6qd84q .tg-copy-meta{margin:-4px 0 0;font-size:12px;font-weight:400;color:var(--tm-meta)}
.b-6qd84q .tm-window.tm-confirm{width:420px}
/* J16 · C12: «¿Descartar los cambios?» con la línea de 1 px del pie sobre los botones, como las demás ventanas. */
.b-6qd84q .tm-window.tm-confirm footer{padding:12px 20px 16px;border-top:1px solid var(--tm-line)}

/* C45 · Selector de color: 10 columnas de 44 px; círculo de 28 px; elegido con anillo de 2 px a 2 px y punto de 8 px. */
.b-6qd84q .tg-colors{display:grid;grid-template-columns:repeat(10,44px)}
.b-6qd84q .tg-color{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:0;border-radius:999px;background:transparent;cursor:pointer}
.b-6qd84q .tg-swatch{position:relative;display:block;width:28px;height:28px;border-radius:50%}
.b-6qd84q .tg-color:hover .tg-swatch{box-shadow:0 0 0 2px var(--tm-surface),0 0 0 4px var(--tm-line)}
.b-6qd84q .tg-color[aria-checked=true] .tg-swatch{box-shadow:0 0 0 2px var(--tm-surface),0 0 0 4px var(--tm-text)}
.b-6qd84q .tg-swatch-dot{position:absolute;inset:10px;border-radius:50%}
.b-6qd84q .tg-color:focus-visible{outline:0;box-shadow:var(--focus-ring-shadow)}

/* J15 · C01/C04/C28 1.14.4 (D7): el anillo de foco terracota del tema también en los controles propios de Etiquetas
   (casillas, enlaces de conteo, paginado, orden, «Más filtros» y los campos-botón de fecha del celular). */
.b-6qd84q :is(.tg-check,.tg-count-link,.tg-size,.tg-page,.tg-sort,.tg-bar-btn,.tg-date-button,.tg-sort-column):focus-visible,
.b-6qd84q .tg-filters .bh-filter-trigger:focus-visible{outline:none;box-shadow:var(--focus-ring-shadow)}
.b-6qd84q .tg-count-link{border-radius:4px}

/* I11 · Celular: nada de escritorio; lista C17 con hojas inferiores; todo lo tocable de 44 px. */
.b-6qd84q .tg-list{margin:0;padding:0;list-style:none}
.b-6qd84q .tg-item{display:flex;align-items:center;gap:8px;min-height:64px;padding:8px 0;-webkit-touch-callout:none;user-select:none}
.b-6qd84q .tg-item.tg-marked{margin:0 -16px;padding:8px 16px;background:var(--tm-soft)}
.b-6qd84q .tg-item-check{display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:44px;margin-left:-13px}
.b-6qd84q .tg-item-text{display:flex;flex-direction:column;align-items:flex-start;gap:6px;flex:1;min-width:0}
.b-6qd84q .tg-item-line1{display:flex;align-items:center;gap:6px;max-width:100%}
.b-6qd84q .tg-item-line2{display:flex;max-width:100%;font-size:13.5px;color:var(--tm-secondary);white-space:nowrap;overflow:hidden;font-variant-numeric:tabular-nums}
.b-6qd84q .tg-item-count{flex:none}
.b-6qd84q .tg-item-date{min-width:0;overflow:hidden;text-overflow:ellipsis}
.b-6qd84q .tg-item .tg-row-more{width:44px;height:44px;margin-right:-12px}
.b-6qd84q .tg-more{display:flex;align-items:center;justify-content:center;gap:10px;min-height:56px;font-size:13px;color:var(--tm-secondary)}
.b-6qd84q .tg-table[hidden]{display:none!important}
.b-6qd84q .tg-sort-host{position:static}
.b-6qd84q .tg-sort-sheet .bheli-bottom-sheet{display:flex;flex-direction:column;padding:0}
.b-6qd84q .tg-sheet-title{font-size:16px;font-weight:700;color:var(--tm-text)}
.b-6qd84q .tg-sort-head{display:flex;align-items:center;gap:8px;padding:0 20px 8px 8px}
.b-6qd84q .tg-sort-back{width:44px;height:44px;flex:none}
.b-6qd84q .tg-sort-sheet h3{margin:0;font-size:12px;font-weight:600;color:var(--tm-meta)}
/* Referencia hoja-ordenar-etiquetas: cuerpo «Orden» con dos píldoras que se reparten el ancho y barra fija con Aplicar. */
.b-6qd84q .tg-sort-body{display:flex;flex-direction:column;gap:12px;padding:4px 16px 16px}
.b-6qd84q .tg-sort-body .tm-pills{display:flex;gap:8px}
.b-6qd84q .tg-sort-body .tm-pill{flex:1;justify-content:center}
.b-6qd84q .tg-sort-bar{display:flex;padding:10px 12px 14px;border-top:1px solid var(--tm-line)}
.b-6qd84q .tg-sort-column{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;padding:12px 20px;border:0;background:none;color:var(--tm-text);font:inherit;font-size:14px;cursor:pointer}
.b-6qd84q .tg-sort-column .chat-r2-icon{width:18px;height:18px;color:var(--tm-accent-text)}
.b-6qd84q .tg-sort-sheet .tm-pill{height:40px;padding:0 14px}
.b-6qd84q .tg-wide{width:100%}
@media(max-width:767px){
 .b-6qd84q .tg-head{margin:0 0 4px}
 .b-6qd84q .tg-head h1{font-size:18px;line-height:24px}
 .b-6qd84q .tg-back{width:44px;height:44px;margin-left:-12px}
 .b-6qd84q .tg-plus{width:44px;height:44px;padding:0;border-radius:999px}
 .b-6qd84q .tg-plus .chat-r2-icon{width:20px;height:20px}
 .b-6qd84q .tg-sub{display:none}
 .b-6qd84q .tg-filters{flex-direction:column;align-items:stretch;gap:12px;margin-top:12px}
 .b-6qd84q .tg-search{flex:none;width:100%}
 .b-6qd84q .tg-pill-row{overflow-x:auto;scrollbar-width:none;margin-right:-16px;padding:3px 12px 3px 0;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),transparent)}
 /* K3 · C07 1.14.5: con contenido escondido a la izquierda, también se desvanece ese lado (24 px). */
 .b-6qd84q .tg-pill-row[data-scrolled]{-webkit-mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 24px),transparent)}
 .b-6qd84q .tg-pill-row::-webkit-scrollbar{display:none}
 .b-6qd84q .tg-pill-row .tm-pill,.b-6qd84q .tg-filters .bh-filter-trigger{height:40px;padding:0 14px;position:relative}
 /* I11/E79 · 40 px visibles, 44 de zona táctil (patrón ::before de Contactos): no se ve ni mueve nada. */
 .b-6qd84q .tg-sort-sheet .tm-pill{position:relative}
 .b-6qd84q .tg-pill-row .tm-pill::before,.b-6qd84q .tg-filters .bh-filter-trigger::before,.b-6qd84q .tg-sort-sheet .tm-pill::before{content:"";position:absolute;inset:-3px 0}
 .b-6qd84q .tg-divider{display:none}
 .b-6qd84q .tg-bar{margin-top:4px;margin-right:-12px}
 .b-6qd84q .tg-bar .tm-icon-btn{width:44px;height:44px}
 .b-6qd84q .tg-selection{margin-right:0}
 /* J10 · C29 1.14.4: × · «{n} seleccionadas» · ⋮ al borde derecho; las acciones van en la hoja del ⋮ con su texto. */
 .b-6qd84q .tg-selection{gap:4px;padding:0}
 .b-6qd84q .tg-selection .tg-bar-actions[hidden]{display:none}
 .b-6qd84q .tg-selection-menu{position:static;margin-left:auto;display:inline-flex}
 .b-6qd84q .tg-selection-more{width:44px;height:44px;color:var(--tm-accent-text)}
 .b-6qd84q .tg-selection-more .chat-r2-icon{width:20px;height:20px}
 .b-6qd84q .tg-sheet-count{margin:0;padding:4px 20px 8px;font-size:13px;color:var(--tm-secondary)}
 .b-6qd84q .tg-colors{grid-template-columns:repeat(8,44px)}
 /* I11 · «Aplicar» de Ordenar: 44 px a todo el ancho. */
 .b-6qd84q .tg-sort-sheet .tg-wide{height:44px}
 .b-6qd84q .tm-window:has(:is(.tg-form,.tg-copy)){width:100%}
 .b-6qd84q .tg-copy-text{height:160px}
 body:has(dialog[open] .tg-copy) .chat-dock-launcher{display:none}
 /* I11 · editor en pantalla completa: título de 18 px; el botón Chats se esconde mientras está abierto. */
 .b-6qd84q .tm-window:has(:is(.tg-form,.tg-copy)) h2{font-size:18px}
 body:has(dialog[open] .tg-form) .chat-dock-launcher{display:none}
 .b-6qd84q .tg-range-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
 .b-6qd84q .tg-range-fields input{height:44px}
 /* C11 1.14.2 · hojas de Etiquetas a todo el ancho con opciones de 48 px (referencia hoja-fila y hoja-lista). */
 .b-6qd84q .tm-menu-items:not(.tm-filter-menu):has(>.bheli-bottom-sheet){padding:6px 0 calc(12px + env(safe-area-inset-bottom,0px))}
 .b-6qd84q .tg-sort-sheet.tm-menu-items:not(.tm-filter-menu):has(>.bheli-bottom-sheet){padding-bottom:env(safe-area-inset-bottom,0px)}
 .b-6qd84q .tm-menu-items:not(.tm-filter-menu):has(>.bheli-bottom-sheet) [role=menuitem]{min-height:48px;padding:12px 20px;border-radius:0;font-size:14px}
 .b-6qd84q .tm-menu-items:not(.tm-filter-menu):has(>.bheli-bottom-sheet) .bheli-sheet-handle{margin-bottom:0}
 /* C01 · el editor a pantalla completa a 16 px del borde. */
 .b-6qd84q .tm-window:has(:is(.tg-form,.tg-copy)) header{padding-left:4px}
 .b-6qd84q .tm-window:has(:is(.tg-form,.tg-copy)) .tm-window-body{padding-left:16px;padding-right:16px}
}
.b-6qd84q .tg-table>thead{background:none;position:relative;z-index:2}
/* Páginas legales públicas (B3) y enlaces del pie legal del ingreso. Solo `scope` es local (vite.config.ts); las demás
   clases conservan su nombre. Se registra en styles/scopedOrder.ts, antes de team.css: por eso la columna lleva
   .tm.auth-page.scope (más específica que .tm.auth-page de team.css). Colores solo con tokens del tema (claro y oscuro). */

/* Columna de lectura: el texto corrido se lee mejor en ~70 caracteres (640 px de texto a 14 px). */
.tm.auth-page.b-1m8bdw7 { max-width: 672px; }

.b-1m8bdw7 .legal-meta {
  margin: -16px 0 24px;
  color: var(--tm-secondary);
  font-size: 12.5px;
  line-height: 1.5;
}

.b-1m8bdw7 .legal-meta .tm-link { font-size: inherit; }

.b-1m8bdw7 .legal-section { margin-top: 24px; }

.b-1m8bdw7 h2 {
  margin: 0 0 8px;
  color: var(--tm-text);
  font-size: 19px;
  font-weight: 700;
  line-height: 1.3;
}

.b-1m8bdw7 p,
.b-1m8bdw7 li {
  color: var(--tm-text);
  font-size: 14px;
  line-height: 1.6;
  overflow-wrap: anywhere;
}

.b-1m8bdw7 p { margin: 0 0 8px; }

.b-1m8bdw7 ul {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0 0 8px;
  padding-inline-start: 20px;
}

@media (max-width: 767px) {
  .b-1m8bdw7 .legal-meta { margin: -8px 0 16px; }
  .b-1m8bdw7 h2 { font-size: 17px; }
}

/* Pie legal: la línea del responsable (sin cambios) y debajo los tres documentos. Enlaces subrayados (no solo color) y
   zona de toque de 26 px (≥ 24 px, WCAG 2.2 AA). */
.auth-legal-line { margin: 0; }

/* Mientras llega el código de los enlaces (carga aparte): el alto de su renglón, para que el pie no salte. */
.auth-legal-links-reserva { min-height: 30px; margin-top: 4px; }

.auth-legal-links ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0 16px;
  margin: 4px 0 0;
  padding: 0;
  list-style: none;
}

.auth-legal-links a {
  display: inline-block;
  padding: 4px 2px;
  border-radius: 4px;
  color: inherit;
  font: inherit;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.auth-legal-links a:hover { color: var(--text); }

.auth-legal-links a:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring-shadow);
}

/* El documento abierto: sin subrayado y en negrita (no depende solo del color). */
.auth-legal-links a[aria-current="page"] {
  color: var(--text);
  font-weight: 600;
  text-decoration: none;
}
/* Generado desde ChoiceMenu.razor.css del portal actual (scripts/razor-css-to-module.py): misma cascada que Blazor. */
.bh-choice.b-4trenz{min-width:0;anchor-scope:--bh-choice}
.bh-choice-trigger.b-4trenz{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:42px;padding:8px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font:inherit;anchor-name:--bh-choice}
.bh-choice-trigger span.b-4trenz{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bh-choice-trigger span[data-empty="true"].b-4trenz{color:var(--text-tertiary,#756A62)}
.bh-choice-trigger.b-4trenz svg,.bh-choice-menu.b-4trenz svg{width:16px;height:16px;flex:none}
.bh-choice-menu.b-4trenz{position:fixed;position-anchor:--bh-choice;position-area:bottom span-right;position-try-fallbacks:flip-block,flip-inline;margin:4px 0;padding:6px;width:max-content;min-width:240px;max-width:min(320px,calc(100vw - 16px));max-height:min(360px,60dvh);overflow:auto;border:1px solid var(--border-subtle,var(--border));border-radius:14px;background:var(--surface);color:var(--text);box-shadow:var(--shadow-floating)}
.bh-choice-menu button.b-4trenz{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:40px;border:0;border-radius:10px;padding:10px 12px;background:transparent;color:var(--text);font:inherit;text-align:left;white-space:nowrap}
@media (hover: hover){.bh-choice-menu button:hover.b-4trenz{background:light-dark(#F6F1EC,var(--background-surface-muted))}
}
.bh-choice-search.b-4trenz{width:100%;height:38px;border:0;border-radius:999px;background:var(--background-surface-subtle);color:var(--text);padding:0 12px;margin-bottom:6px}
.bh-choice-search.b-4trenz{display:flex;align-items:center;gap:8px}
.bh-choice-search input.b-4trenz{width:100%;min-width:0;height:36px;min-height:0!important;border:0!important;background:transparent!important;padding:0;color:var(--text);font:inherit;outline:0!important;box-shadow:none!important}
.bh-choice-search:focus-within.b-4trenz{outline:3px solid var(--focus-ring);outline-offset:2px}
.bh-choice-menu .bh-choice-clear.b-4trenz{width:28px;min-width:28px;min-height:28px;height:28px;padding:0;justify-content:center;border:0;border-radius:50%}
:is(button,input):focus-visible.b-4trenz{outline:3px solid var(--focus-ring,var(--primary));outline-offset:2px}
.bh-choice-trigger[aria-invalid=true].b-4trenz{border-color:var(--error)}
@media(max-width:767px){.bh-choice-trigger.b-4trenz{min-height:42px}
}
/* K6 · C11 1.14.5: menú de valores cortos (Por página): abajo y alineado al borde izquierdo del botón, arriba solo si
   abajo no entra; ancho de su contenido (opción más larga, 12 px de aire y la columna del ✓ de 16 px), nunca menos
   que el botón; opciones de 40 px. */
.bh-choice-menu.bh-choice-short.b-4trenz{position-area:bottom span-right;position-try-fallbacks:flip-block;margin:6px 0;min-width:anchor-size(width);width:max-content;padding:6px}
.bh-choice-menu.bh-choice-short button.b-4trenz{display:grid;grid-template-columns:auto 16px;gap:24px;height:40px;min-height:40px;padding:0 12px;font-weight:400;font-variant-numeric:tabular-nums}
.bh-choice-menu.bh-choice-short button.b-4trenz>svg{grid-column:2}
/* Generado desde DataTableFrame.razor.css del portal actual (scripts/razor-css-to-module.py): misma cascada que Blazor. */
.bh-table-frame.b-gn7l2u{min-width:0;max-width:100%;overflow:auto;border:0;border-radius:0;box-shadow:none;background:transparent}
/* Generado desde FilterPanel.razor.css del portal actual (scripts/razor-css-to-module.py): misma cascada que Blazor. */
.bh-filter-host.b-114x42b{display:contents}
.bh-filter-trigger.b-114x42b{display:inline-flex;align-items:center;gap:6px;flex:none;min-height:32px;padding:0 12px;border:1px solid var(--border-default,var(--border));border-radius:999px;background:var(--surface);color:var(--text-secondary);font:inherit;font-size:13px;font-weight:600;white-space:nowrap}
.bh-filter-trigger.b-114x42b svg{width:15px;height:15px}
.bh-filter-panel.b-114x42b{position:fixed;inset:auto;margin:0;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;padding:20px;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-floating);background:var(--surface);color:var(--text);z-index:50}
.bh-filter-panel.b-114x42b::backdrop{background:var(--backdrop-page)}
@media(min-width:768px){.bh-filter-panel.b-114x42b::backdrop{background:transparent}
}
.bh-filter-groups.b-114x42b{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px}
footer.b-114x42b{display:flex;justify-content:flex-end;gap:12px;position:sticky;bottom:-20px;margin:8px 0 -20px;padding:12px 0 20px;background:var(--surface)}
footer button.b-114x42b{min-width:150px}
.bh-filter-handle.b-114x42b{display:none}
@media(max-width:767px){.bh-filter-trigger.b-114x42b{min-height:40px}
.bh-filter-panel.b-114x42b{inset:auto 0 0;width:100%;max-width:100%;max-height:calc(100dvh - 12px);padding:0;border:0;border-radius:18px 18px 0 0;overflow:hidden}
.bh-filter-panel[open].b-114x42b{display:flex;flex-direction:column}
.bh-filter-handle.b-114x42b{display:block;flex:none;width:36px;height:4px;margin:12px auto 16px;border-radius:2px;background:var(--border)}
.bh-filter-groups.b-114x42b{grid-template-columns:1fr;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 16px 16px}
footer.b-114x42b{position:static;flex:none;display:grid;grid-template-columns:1fr 1.4fr;gap:10px;margin:0;padding:10px 12px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--border-subtle,var(--border));background:var(--surface)}
footer button.b-114x42b{min-width:0;min-height:44px}
}
/* C01: abierto con el mouse, el foco queda en el panel mismo, sin anillo (FilterPanel.tsx). */
.bh-filter-panel.b-114x42b:focus{outline:none}
/* Generado desde SelectionToolbar.razor.css del portal actual (scripts/razor-css-to-module.py): misma cascada que Blazor. */
.bh-table-toolbar.b-16evmr4{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;margin:8px 0;color:inherit;font-size:14px}
.bh-selection-toolbar.b-16evmr4{border-radius:12px;padding:0 8px;background:var(--primary-soft);color:var(--text)}
/* Generado desde TaskWindow.razor.css del portal actual (scripts/razor-css-to-module.py): misma cascada que Blazor. */
.bh-task-window.b-1hpgdka{width:480px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 24px);margin:auto;padding:20px;border:1px solid var(--border-subtle,var(--border));border-radius:16px;overflow:auto;background:var(--surface);color:var(--text);box-shadow:var(--shadow-floating)}
.bh-task-window.b-1hpgdka::backdrop{background:var(--backdrop-page)}
@media(max-width:767px){.bh-task-window.b-1hpgdka{position:fixed;inset:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0;padding:16px 12px 88px}
}
/* CSS global del portal actual, copiado byte a byte y en el mismo orden que App.razor (T11). No se edita aquí:
   las diferencias propias del portal nuevo van en CSS Modules de cada componente. *//* Bheli Company Portal: SaaS del cliente, mobile-first, light/dark/system. */
.login-persistence { display: flex; align-items: center; gap: var(--space-2); min-height: var(--touch-target); margin-bottom: var(--space-3); cursor: pointer; }
.login-persistence input { width: 1.25rem; height: 1.25rem; flex-shrink: 0; }
/* Color contract/preset shared with Platform Admin; structural tokens stay here. */
:root {
    --radius-sm: 8px;
    --radius: 12px;
    --radius-lg: 16px;
    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 24px;
    --space-6: 32px;
    --space-7: 48px;
    --font: 'Lexend', system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    --shadow: 0 1px 2px var(--shadow-color);
    --shadow-lg: 0 8px 16px var(--shadow-lg-color);
    --content-max: 1080px;
    --content-narrow: 640px;
    --touch-target: 44px;
    --control-height: 40px;
    --control-height-mobile: 48px;
    --control-radius: var(--radius-sm);
    --border-width: 1px;
    --sidebar-width: 240px;
    --header-height: 56px;
}

* { box-sizing: border-box; }
/* C01 / A3 N4: native controls inherit Lexend, including controls in overlays. */
button, input, select, textarea { font: inherit; }

body {
    margin: 0;
    background: var(--canvas);
    color: var(--text);
    font-family: var(--font);
    line-height: 1.5;
}

/* Jerarquía tipográfica por tokens: títulos semibold, nunca bold arbitrario. */
h1 {
    font-weight: 600;
}

h2 {
    font-weight: 600;
}

h3 {
    font-weight: 600;
}

.skip {
    position: absolute;
    left: -999px;
    top: 0;
    background: var(--primary);
    color: var(--primary-contrast);
    padding: .6rem 1rem;
    z-index: 50;
}

.skip:focus { left: 0; }

/* Foco visible de teclado en controles interactivos (el h1 no es
   interactivo y nunca pinta foco). */
button:focus-visible,
a:focus-visible,
input:not(.bheli-composite-input):focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}

.topbar {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .6rem 1rem;
    background: var(--surface);
    border-bottom: 1px solid var(--border);
    position: sticky;
    top: 0;
    z-index: 10;
}

/* Back explícito mobile: control canónico de navegación, no micro-enlace.
   Solo en vistas anidadas que lo renderizan. */
.mobile-back {
    display: none;
}

@media (max-width: 699px) {
    /* Page navigation canonica: barra de ancho completo que integra el
       Back al flujo de la pagina, nunca chip aislado ni micro-link. */
    .mobile-back {
        display: flex;
        align-items: center;
        gap: var(--space-2);
        min-height: 48px;
        min-width: var(--touch-target);
        padding: var(--space-2) var(--space-1);
        margin-bottom: var(--space-3);
        border-bottom: 1px solid var(--border);
        color: var(--text);
        text-decoration: none;
        font-weight: 600;
        font-size: 1rem;
    }

    .mobile-back > span[aria-hidden="true"] {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: var(--touch-target);
        height: var(--touch-target);
        flex: none;
        border: 1px solid var(--border);
        border-radius: var(--radius-sm);
        background: var(--surface);
        font-size: 1.3rem;
        line-height: 1;
    }

    .mobile-back:hover > span[aria-hidden="true"] {
        background: var(--surface-muted);
    }

    /* En mobile manda el Back canónico; el breadcrumb desktop se oculta
       para no duplicar navegación. */
    .breadcrumb {
        display: none;
    }
}

/* App-shell: topbar compacto + sidebar persistente en desktop y drawer
   overlay en mobile. Mismo contrato visual que PlatformAdmin. */
.nav-toggle {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.menu-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    flex: none;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    background: var(--surface);
    color: var(--text);
    font-size: 1.25rem;
    cursor: pointer;
}

.drawer-scrim {
    display: none;
}

.brand {
    font-weight: 600;
    font-size: 1.15rem;
    color: var(--text);
    text-decoration: none;
}

.brand-sub {
    display: block;
    font-weight: 500;
    font-size: 0.72rem;
    color: var(--text-muted);
    line-height: 1.2;
}

.sidebar {
    position: fixed;
    top: var(--header-height);
    bottom: 0;
    left: 0;
    width: min(var(--sidebar-width), 84vw);
    padding: var(--space-4);
    background: var(--surface);
    border-right: 1px solid var(--border);
    transform: translateX(-100%);
    transition: transform 0.18s ease-out;
    overflow-y: auto;
    z-index: 30;
}

@media (prefers-reduced-motion: reduce) {
    .sidebar {
        transition: none;
    }
}

.nav-toggle:checked ~ .sidebar {
    transform: none;
}

.nav-toggle:checked ~ .drawer-scrim {
    display: block;
    position: fixed;
    inset: var(--header-height) 0 0 0;
    background: var(--overlay-background);
    z-index: 25;
}

.sidebar nav {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

/* Q23: la navegacion inactiva baja jerarquia; la activa es inequivoca. */
.nav-link {
    display: flex;
    align-items: center;
    min-height: 44px;
    padding: var(--space-2) var(--space-3);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    text-decoration: none;
}

.nav-link:hover {
    background: var(--surface-muted);
}

.nav-link.active {
    background: var(--primary-soft);
    color: var(--primary-hover);
    font-weight: 600;
}

.shell-main {
    min-width: 0;
}

@media (min-width: 900px) {
    .menu-button,
    .drawer-scrim {
        display: none;
    }

    .sidebar {
        transform: none;
    }

    .shell-main {
        margin-left: var(--sidebar-width);
    }
}

/* Menú de usuario: utilidades globales, no navegación del producto. */
.user-menu {
    margin-left: auto;
    position: relative;
}

.user-trigger {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    min-height: 44px;
    padding: var(--space-1) var(--space-2);
    border-radius: var(--radius-sm);
    cursor: pointer;
    list-style: none;
    color: var(--text);
}

.user-trigger::-webkit-details-marker {
    display: none;
}

.user-trigger:hover,
.user-menu[open] .user-trigger {
    background: var(--surface-muted);
}

.user-trigger .avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--primary-soft);
    color: var(--primary-hover);
    font-weight: 600;
}

.user-trigger .chevron {
    color: var(--text-muted);
    font-size: 0.8rem;
}

.user-menu .menu {
    position: absolute;
    right: 0;
    top: calc(100% + var(--space-1));
    min-width: 220px;
    padding: var(--space-2);
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow-lg);
    z-index: 40;
}

.user-menu .menu a {
    display: flex;
    align-items: center;
    min-height: 44px;
    padding: var(--space-2) var(--space-3);
    border-radius: var(--radius-sm);
    color: var(--text);
    text-decoration: none;
}

.user-menu .menu a:hover {
    background: var(--surface-muted);
}

.user-menu .menu form {
    margin: 0;
}

.user-menu .menu button[type="submit"] {
    display: flex;
    align-items: center;
    width: 100%;
    min-height: 44px;
    padding: var(--space-2) var(--space-3);
    border: 0;
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--text);
    font: inherit;
    cursor: pointer;
    text-align: left;
}

.user-menu .menu button[type="submit"]:hover {
    background: var(--surface-muted);
}

/* Las secciones y filtros ordinarios hacen reflow: ningún destino requiere swipe. */
.context-nav {
    display: flex;
    gap: var(--space-1);
    flex-wrap: wrap;
    margin-bottom: var(--space-4);
    padding-bottom: var(--space-2);
    border-bottom: 1px solid var(--border);
}

@media (max-width: 699px) {
    .context-nav .context-link { white-space: normal; overflow-wrap: anywhere; }
}

.context-link {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: var(--space-2) var(--space-3);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    text-decoration: none;
    font-weight: 500;
}

.context-link:hover {
    background: var(--surface-muted);
    color: var(--text);
}

.context-link.active {
    background: var(--primary-soft);
    color: var(--primary-hover);
    font-weight: 600;
}

.actions, .inline { display: flex; gap: var(--space-2); align-items: center; flex-wrap: wrap; }
.inline > * { min-width: 0; max-width: 100%; }

/* Tablas con scroll horizontal interno: la pagina nunca desborda.
   Grilla especializada documentada: contenida, señalizada y con columna
   clave fija en mobile. */
.table-wrap {
    overflow-x: auto;
    border: var(--border-width) solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
}

@media (max-width: 699px) {
    .table-wrap {
        background-image: linear-gradient(to right, var(--surface) 0, transparent 0),
            linear-gradient(to left, var(--shadow-lg-color), transparent 1.25rem);
        background-repeat: no-repeat;
        background-position: left center, right center;
        background-size: auto, 1.25rem 100%;
        background-attachment: local, scroll;
    }

    .table-wrap table th:first-child,
    .table-wrap table td:first-child {
        position: sticky;
        left: 0;
        background: var(--surface);
        z-index: 1;
    }

    .table-wrap table thead th:first-child {
        background: var(--surface-muted);
    }
}

.wrap { max-width: var(--content-max); margin: 0 auto; padding: 1rem; }
.wrap.narrow { max-width: var(--content-narrow); }

.hero { padding: 2.5rem 0 1.5rem; }
.hero h1 { font-size: 2rem; margin: 0 0 .5rem; font-weight: 600; }
.hero p { color: var(--text-muted); font-size: 1.1rem; max-width: 40rem; }
.cta-row { display: flex; gap: .6rem; flex-wrap: wrap; margin-top: 1rem; }

.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: .6rem 1.1rem;
    border: 0;
    border-radius: var(--radius);
    background: var(--primary);
    color: var(--primary-contrast);
    font-family: inherit;
    font-size: 1rem;
    font-weight: 500;
    text-decoration: none;
    cursor: pointer;
}
.button.ghost { background: transparent; color: var(--link-default); border: 1px solid var(--border); }
.button.secondary { background: var(--button-secondary-background); color: var(--button-secondary-text); }
.button:disabled { background: var(--control-disabled-background); color: var(--control-disabled-text); opacity: 1; cursor: default; }

.grid-cards { display: grid; grid-template-columns: 1fr; gap: var(--space-4); margin: 1rem 0; }
@media (min-width: 700px) {
    .grid-cards.cols-2 { grid-template-columns: 1fr 1fr; }
    .hero h1 { font-size: 2.6rem; }
}

.card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 1rem;
}
.card h2, .card h3 { margin-top: 0; }
.card .go { margin-top: .8rem; }

/* Tile de destino único (§11.4): toda la superficie es el enlace.
   Sin botón genérico cuando la card entera representa un destino. */
.card-link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3);
    text-decoration: none;
    color: inherit;
    cursor: pointer;
}
.card-link:hover { border-color: var(--primary); }
.card-link:focus-visible {
    outline: 3px solid var(--focus-ring);
    outline-offset: 2px;
}
.card-link:active { background: var(--surface-muted); }
.card-link-body { display: grid; gap: .4rem; }
.card-link-go {
    flex: none;
    font-size: 1.4rem;
    line-height: 1;
    color: var(--text-muted);
}
.card-link:hover .card-link-go { color: var(--primary); }

.badge {
    display: inline-block;
    padding: .15rem .6rem;
    border-radius: 999px;
    font-size: .8rem;
    background: var(--border);
    color: var(--text);
}
.badge-active { background: var(--success-bg); color: var(--success); }
.badge-inactive { background: var(--background-surface-subtle); color: var(--text-primary); }
.badge-warning { background: var(--warning-bg); color: var(--warning); }
.badge-error { background: var(--error-bg); color: var(--error); }

.field { display: grid; gap: .3rem; margin-bottom: .8rem; }
.field label { font-weight: 500; }
.field .hint { color: var(--text-muted); font-size: .85rem; font-weight: 400; }
.field input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), .field select, .field textarea, .cfg1-search input, .cfg1-toolbar select {
    width: 100%;
    min-height: 44px;
    padding: .6rem .7rem;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    color: var(--text);
    font-size: 1rem;
}
.field input[type="checkbox"], .field input[type="radio"] { width: 1.25rem; height: 1.25rem; min-height: 0; padding: 0; flex: none; accent-color: var(--primary); }
.field .checkbox-row { display: flex; align-items: center; gap: var(--space-2); min-height: var(--touch-target); font-weight: 400; }
fieldset.field { border: var(--border-width) solid var(--border); border-radius: var(--radius-sm); padding: var(--space-3); }
.field input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), .field select, .field textarea, .cfg1-search input, .cfg1-toolbar select { min-width: 0; font-family: inherit; }
.field, .field fieldset, form fieldset { min-width: 0; max-width: 100%; }
form fieldset { margin-inline: 0; }
h1[tabindex="-1"]:focus, h1[tabindex="-1"]:focus-visible { outline: none; }
.field textarea { min-height: 96px; resize: vertical; }

.steps { display: flex; gap: .4rem; list-style: none; padding: 0; margin: 0 0 1rem; }
.steps li {
    flex: 1;
    text-align: center;
    font-size: .8rem;
    color: var(--text-muted);
    border-top: 3px solid var(--border);
    padding-top: .3rem;
}
.steps li.now { color: var(--text); border-color: var(--primary); font-weight: 600; }

/* Progreso compacto del wizard: solo mobile muestra paso actual; desktop
   conserva la secuencia completa. Sin deep-link alterado. */
.step-progress { display: none; font-weight: 600; margin: 0 0 1rem; }

@media (max-width: 699px) {
    .step-progress { display: block; }
    ol.steps { display: none; }
}

.jobs { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; margin: 1rem 0; }
.jobs button {
    min-height: 64px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    color: var(--text);
    font-size: 1rem;
    cursor: pointer;
}
.jobs button.picked { border: 2px solid var(--primary); }

.review { display: grid; gap: .4rem; margin: 1rem 0; }
.review dt { font-weight: 600; }
.review dd { margin: 0 0 .5rem; white-space: pre-wrap; }

.chat { display: grid; gap: .5rem; margin: 1rem 0; }
.msg {
    max-width: 85%;
    padding: .6rem .8rem;
    border-radius: var(--radius);
    background: var(--chat-other-background);
    color: var(--chat-other-text);
    border: 1px solid var(--border-subtle);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    min-width: 0;
}
.msg.in { justify-self: start; }
.msg.out { justify-self: end; background: var(--chat-own-background); color: var(--chat-own-text); border: 0; }
.msg .who { display: block; font-size: .75rem; opacity: .75; margin-bottom: .2rem; }
.human-composer { position: sticky; bottom: var(--space-2); z-index: 2; }
.human-composer textarea { min-height: 4.5rem; }
.trace { font-size: .8rem; color: var(--text-muted); }

.alert {
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-sm);
    border: 1px solid transparent;
    margin: 1rem 0;
    background: var(--surface);
}
/* Vista de soporte: banner persistente ámbar, visible en desktop y mobile,
   sin cubrir navegación ni contenido. Señal por texto, no solo por color. */
.support-banner {
    position: sticky;
    top: 0;
    z-index: 20;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2) var(--space-3);
    padding: var(--space-2) var(--space-4);
    background: var(--warning-bg);
    border-bottom: 2px solid var(--warning);
    color: var(--text);
}
.support-banner form { margin-left: auto; }
.alert-error { background: var(--error-bg); border-color: var(--error); color: var(--error); }
.alert-warning { background: var(--warning-bg); border-color: var(--warning); color: var(--warning); }
.alert-success { background: var(--success-bg); border-color: var(--success); color: var(--success); }
.alert-info { background: var(--info-bg); border-color: var(--status-info-border); color: var(--info); }

/* Encabezado de pagina: titulo, subtitulo y acciones alineadas.
   Misma anatomia que PlatformAdmin. */
.page-header {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--space-3) var(--space-4);
    margin-bottom: var(--space-4);
}

.page-header .page-titles {
    flex: 1 1 240px;
    min-width: 0;
}

.page-header .page-titles h1 {
    margin: 0;
}

.page-header .page-subtitle {
    margin: 0;
    color: var(--text-muted);
}

.page-header .page-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}

.breadcrumb { font-size: .85rem; color: var(--text-muted); margin-bottom: .6rem; }
.breadcrumb a { color: var(--primary); }

.foot {
    max-width: var(--content-max);
    margin: 2rem auto 0;
    padding: 1rem;
    color: var(--text-muted);
    font-size: .85rem;
    border-top: 1px solid var(--border);
}

.empty-state { text-align: center; padding: 3rem 1rem; }
.empty-state p { color: var(--text-muted); }

.rows { display: grid; gap: .6rem; margin: 1rem 0; }
.rowline {
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
    align-items: center;
    justify-content: space-between;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: .8rem 1rem;
}
.rowline.link { text-decoration: none; color: var(--text); }
.rowline.link:hover { border-color: var(--primary); }

/* Lista de definición para fichas de detalle (misma primitiva admin). */
dl.detail {
    display: grid;
    grid-template-columns: minmax(120px, 180px) 1fr;
    gap: var(--space-2) var(--space-3);
    margin: 0 0 var(--space-4);
}

dl.detail dt {
    color: var(--text-muted);
}

dl.detail dd {
    margin: 0;
    overflow-wrap: anywhere;
}

@media (max-width: 699px) {
    dl.detail {
        grid-template-columns: 1fr;
    }
}
.rowline > div:first-child { display: grid; gap: .2rem; justify-items: start; }
.rowline details { flex-basis: 100%; }

/* ResponsiveDataView canónico: tabla en desktop, filas de lista con
   etiqueta visible en mobile. Cada td lleva data-label con el nombre
   de su columna; sin data-label no hay transformación. */
.data-table {
    width: 100%;
    border-collapse: collapse;
}

@media (max-width: 699px) {
    .data-table thead {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
    }

    .data-table,
    .data-table tbody,
    .data-table tr,
    .data-table td {
        display: block;
        width: 100%;
    }

    .data-table tr {
        border: 1px solid var(--border);
        border-radius: var(--radius-sm);
        background: var(--surface);
        margin-bottom: var(--space-3);
        padding: var(--space-2) var(--space-3);
    }

    .data-table td {
        display: flex;
        align-items: baseline;
        flex-wrap: wrap;
        gap: var(--space-2);
        border: 0;
        padding: var(--space-1) 0;
        font-size: 1rem;
    }

    .data-table td > * {
        min-width: 0;
        overflow-wrap: anywhere;
    }

    .data-table td[data-label]::before {
        content: attr(data-label);
        flex: none;
        min-width: 8rem;
        color: var(--text-muted);
        font-size: 0.85rem;
        font-weight: 500;
    }

    .data-table td.row-action {
        padding-top: var(--space-2);
    }
}

.card h3 { margin-top: 1.2rem; }

/* Breadcrumb Desktop: solo desktop; en mobile manda el Back canonico
   (regla de ocultamiento anterior). */
@media (min-width: 700px) {
    .breadcrumb {
        display: flex;
        align-items: center;
        /* El flex recorta los espacios del texto junto a los enlaces ("Inicio/ Mi perfil"): el hueco los repone. */
        column-gap: .3em;
        margin-bottom: var(--space-3);
    }

    .breadcrumb ol {
        display: flex;
        align-items: center;
        gap: var(--space-2);
        list-style: none;
        padding: 0;
        margin: 0;
        font-size: 0.9rem;
    }

    .breadcrumb li {
        display: flex;
        align-items: center;
        gap: var(--space-2);
        color: var(--text-muted);
    }

    .breadcrumb li + li::before {
        content: "›";
        color: var(--text-muted);
    }

    .breadcrumb a {
        color: var(--primary);
        text-decoration: none;
    }

    .breadcrumb a:hover {
        text-decoration: underline;
    }
}

/* ContextBarMobile & ContextSheetMobile (§3.2) */
.context-bar-mobile {
    display: none;
}

@media (max-width: 699px) {
    .context-bar-mobile {
        display: block;
        background: var(--surface);
        border-bottom: 1px solid var(--border);
        position: sticky;
        top: var(--header-height);
        z-index: 20;
    }

    .context-sheet-toggle summary {
        display: flex;
        align-items: center;
        justify-content: space-between;
        min-height: 44px;
        padding: var(--space-2) var(--space-4);
        cursor: pointer;
        list-style: none;
        font-weight: 500;
    }

    .context-sheet-toggle summary::-webkit-details-marker {
        display: none;
    }

    .context-bar-text {
        display: flex;
        align-items: center;
        gap: var(--space-2);
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .context-parent-name {
        color: var(--text-muted);
        font-size: 0.85rem;
    }

    .context-sep {
        color: var(--text-muted);
    }

    .context-section-name {
        color: var(--text);
        font-weight: 600;
        font-size: 1rem;
    }

    .context-chevron {
        font-size: 1rem;
        color: var(--text-muted);
    }

    .context-sheet-toggle[open] .context-chevron {
        transform: rotate(180deg);
    }

    .context-sheet {
        padding: var(--space-2) var(--space-3) var(--space-4);
        background: var(--surface);
        border-top: 1px solid var(--border);
        display: flex;
        flex-direction: column;
        gap: var(--space-1);
    }

    .context-sheet-header {
        padding: var(--space-2) var(--space-3);
        display: flex;
        flex-direction: column;
        gap: 2px;
        border-bottom: 1px solid var(--border);
        margin-bottom: var(--space-2);
    }

    .context-sheet-header strong {
        font-size: 0.85rem;
        color: var(--text);
    }

    .context-sheet-header span {
        font-size: 0.75rem;
        color: var(--text-muted);
    }

    .context-sheet-link {
        display: flex;
        align-items: center;
        min-height: 44px;
        padding: var(--space-2) var(--space-3);
        border-radius: var(--radius-sm);
        text-decoration: none;
        color: var(--text);
        font-size: 1rem;
    }

    .context-sheet-link:hover {
        background: var(--surface-muted);
    }

    .context-sheet-link.active {
        background: var(--primary-soft);
        color: var(--primary-hover);
        font-weight: 600;
    }
}

/* Shell v2: sidebar FULL/RAIL + identidad firmada (I2/I3). Solo tokens. */
:root {
    --sidebar-rail: 64px;
}

.sidebar-collapse {
    display: none;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    flex: none;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    background: var(--surface);
    color: var(--text);
    font-size: 1.1rem;
    line-height: 1;
    cursor: pointer;
}

.sidebar nav .nav-link {
    gap: var(--space-3);
}

.nav-icon {
    width: 22px;
    height: 22px;
    flex: none;
}

.nav-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.user-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    flex: none;
    border-radius: 50%;
    background: var(--primary-soft);
    color: var(--primary-hover);
    font-weight: 600;
    font-size: .85rem;
}

.user-trigger-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 12rem;
}

@media (min-width: 900px) {
    .sidebar-collapse {
        display: inline-flex;
    }

    body.shell-rail [data-company-shell] .sidebar {
        width: var(--sidebar-rail);
        padding: var(--space-4) var(--space-2);
    }

    body.shell-rail [data-company-shell] .shell-main {
        margin-left: var(--sidebar-rail);
    }

    body.shell-rail [data-company-shell] .sidebar nav .nav-link {
        justify-content: center;
        padding: var(--space-2);
    }

    body.shell-rail [data-company-shell] .nav-label {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip-path: inset(50%);
        white-space: nowrap;
    }
}

/* El header ocupa su altura intrínseca; sidebar y workspace comparten la segunda fila. */
.app-shell {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    height: 100dvh;
    min-width: 0;
}
.app-shell .skip { position: absolute; left: -999px; top: 0; padding: var(--space-3) var(--space-4); background: var(--brand-default); color: var(--on-brand); z-index: 90; }
.app-shell .skip:focus { left: 0; }
.app-shell .shell-header { min-width: 0; z-index: 30; background: var(--surface); }
.app-shell .topbar {
    position: relative;
    /* El menú de cuenta pasa por encima de la ContextBar, no por debajo. */
    z-index: 30;
    top: auto;
    height: auto;
    min-height: var(--header-height);
    flex-wrap: wrap;
    padding-block: var(--space-2);
}
.app-shell .brand { min-width: 0; overflow-wrap: anywhere; }
.app-shell .brand-sub { white-space: normal; }
.app-shell .shell-workspace {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr);
    position: relative;
    min-height: 0;
    min-width: 0;
}
.app-shell .shell-main { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr) auto auto; position: relative; min-width: 0; min-height: 0; margin-left: 0; overflow: hidden; }
.app-shell .shell-main > main { grid-column: 1; grid-row: 2; min-height: 0; min-width: 0; width: 100%; overflow-y: auto; }
.app-shell .shell-main > .shell-context-desktop { grid-column: 1 / -1; grid-row: 1; }
.app-shell .sidebar {
    position: static;
    inset: auto;
    margin: 0;
    width: 100%;
    max-width: none;
    max-height: none;
    height: 100%;
    min-height: 0;
    color: var(--text);
    transform: none;
    transition: none;
    border: 0;
    border-right: var(--border-width) solid var(--border);
    overflow-y: auto;
}
.app-shell .sidebar:not([open]) { display: none; }
.app-shell .sidebar[open] { display: block; }
.app-shell .sidebar:modal {
    position: fixed;
    inset: 0 auto 0 0;
    width: min(var(--sidebar-width), calc(100vw - var(--space-5)));
    max-height: 100dvh;
    height: 100dvh;
    z-index: 80;
}
.app-shell .sidebar::backdrop { background: var(--overlay-background); }
.shell-drawer-heading { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); flex-wrap: wrap; position: sticky; top: 0; background: var(--surface); }
.shell-close, .context-sheet-close { display: none; }
.shell-enhanced .shell-close, .shell-enhanced .context-sheet-close { display: inline-flex; }
.app-shell .sidebar .nav-label { white-space: normal; overflow-wrap: anywhere; }
.app-shell .user-menu { min-width: 0; }
.app-shell .user-trigger { max-width: 100%; }
.app-shell .user-trigger-name { min-width: 0; max-width: min(12rem, 35vw); }
.app-shell .user-menu .menu {
    width: min(20rem, calc(100vw - var(--space-6)));
    min-width: 0;
    max-height: 70dvh;
    overflow-y: auto;
    overflow-wrap: anywhere;
}
.app-shell .user-menu .menu a { display: flex; align-items: center; min-height: var(--touch-target); padding: var(--space-2) var(--space-3); color: var(--text); text-decoration: none; border-radius: var(--radius-sm); }
.app-shell .user-menu .menu a:hover { background: var(--surface-muted); }
.app-shell .user-menu .menu button { min-height: var(--touch-target); }
.app-shell .context-bar-mobile { position: relative; top: auto; }
.app-shell .context-bar-text { min-width: 0; flex-wrap: wrap; white-space: normal; overflow: visible; }
.app-shell .context-parent-name, .app-shell .context-section-name { overflow-wrap: anywhere; }
.app-shell .context-sheet { max-height: 50dvh; overflow-y: auto; }
.app-shell .context-sheet-header { align-items: start; }
.shell-context-desktop { display: none; }
.shell-organization { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); padding: var(--space-1) var(--space-4); color: var(--text); text-decoration: none; min-height: var(--touch-target); overflow-wrap: anywhere; border-bottom: var(--border-width) solid var(--border); }
.shell-organization > span { color: var(--text-muted); }
.app-shell .org-context strong { overflow: visible; white-space: normal; overflow-wrap: anywhere; }
@media (width < 768px) {
    /* Sin JS la misma navegación está en el flujo y el enlace de apertura lleva a ella. */
    html:not(.shell-enhanced) .app-shell .shell-workspace { display: block; overflow-y: auto; }
    html:not(.shell-enhanced) .app-shell .sidebar { height: auto; }
    html:not(.shell-enhanced) .app-shell .shell-main { display: block; overflow: visible; }
    /* El SSR trae open para noJS; con el helper preparado no ocupa una fila antes de showModal. */
    html.shell-enhanced .app-shell .sidebar[open]:not(:modal) { display: none; }
}
@media (min-width: 700px) {
    .shell-context-desktop { display: flex; padding: var(--space-3) var(--space-4); margin: 0; }
}
@media (min-width: 900px) {
    .app-shell .shell-workspace { grid-template-columns: var(--sidebar-width) minmax(0, 1fr); }
    .app-shell .shell-drawer-heading, .app-shell .menu-button { display: none; }
    body.shell-rail .app-shell .shell-workspace { grid-template-columns: var(--sidebar-rail) minmax(0, 1fr); }
    body.shell-rail .app-shell .sidebar { width: 100%; }
    body.shell-rail .app-shell .shell-main { margin-left: 0; }
}

/* QA H1–H13: estructura Company opt-in; colores derivados del contrato light/dark. */
[data-company-shell] {
    --shell-accent: var(--link-default);
    --shell-hover: color-mix(in srgb, var(--background-surface-subtle) 70%, var(--background-surface-muted));
    --shell-radius-popover: 10px;
    --shell-font: 14.5px;
    --shell-badge-font: 11.5px;
    --shell-width-motion: 200ms ease;
    --shell-label-motion: 150ms ease;
    --shell-popover-shadow: 0 10px 28px var(--shadow-lg-color);
}
.app-shell[data-company-shell] .shell-topbar {
    height: var(--header-height); min-height: var(--header-height); padding: 0 var(--space-4);
    flex-wrap: nowrap; gap: var(--space-2); background: var(--background-topbar);
}
.shell-topbar .shell-brand { display: inline-flex; align-items: center; height: 36px; padding: 0 6px; border-radius: var(--radius-sm); flex: none; font-size: 17px; letter-spacing: -.01em; }
.shell-topbar .shell-brand:hover { background: var(--background-surface-subtle); text-decoration: none; }
.shell-divider { width: 1px; height: 24px; margin-inline: var(--space-1); background: var(--border-subtle); flex: none; }
.shell-icon { width: 18px; height: 18px; flex: none; }
.shell-chevron { width: 16px; height: 16px; flex: none; color: var(--text-muted); }
.company-menu { min-width: 0; position: relative; }
.company-trigger, .shell-topbar .user-trigger { display: flex; align-items: center; gap: var(--space-2); cursor: pointer; color: var(--text-primary); font-size: var(--shell-font); list-style: none; }
.company-trigger::-webkit-details-marker, .shell-topbar .user-trigger::-webkit-details-marker { display: none; }
.company-trigger { height: 36px; padding: 0 10px; border-radius: var(--radius-sm); }
.company-trigger > .shell-icon { width: 16px; height: 16px; color: var(--text-muted); }
.company-trigger-name { max-width: 240px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.company-trigger:hover, .company-menu[open] > summary, .shell-topbar .user-trigger:hover, .shell-topbar .user-menu[open] > summary { background: var(--background-surface-subtle); }
.company-trigger[aria-busy="true"] { opacity: .65; cursor: progress; }
.shell-header-actions { display: flex; align-items: center; gap: var(--space-2); margin-left: auto; min-width: 0; }
.shell-tools { display: flex; align-items: center; gap: var(--space-1); flex: none; }
.shell-tool { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: var(--radius-sm); text-decoration: none; color: var(--text-muted); }
.shell-tool:hover { background: var(--background-surface-subtle); color: var(--text-primary); }
.shell-tool.active { background: var(--navigation-active-background); color: var(--shell-accent); }
.shell-topbar .user-menu { position: relative; margin-left: 0; }
.shell-topbar .user-trigger { height: 40px; min-height: 40px; padding: 0 8px 0 4px; border: 0; border-radius: 999px; }
.shell-topbar .user-trigger-name { max-width: 180px; }
.shell-topbar .user-avatar { width: 28px; height: 28px; background: var(--navigation-active-background); color: var(--shell-accent); font-size: var(--shell-badge-font); font-weight: 700; }
.shell-popover { position: absolute; top: calc(100% + 6px); padding: 6px; background: var(--background-surface); border: 1px solid var(--border-subtle); border-radius: var(--shell-radius-popover); box-shadow: var(--shell-popover-shadow); z-index: 60; max-height: min(70dvh, 560px); overflow-y: auto; }
.company-popover { left: 0; width: 268px; }
.user-popover { right: 0; width: 240px; }
.shell-menu-heading { font-size: 12px; font-weight: 600; color: var(--text-muted); padding: 6px var(--space-2); }
.shell-menu-divider { height: 1px; background: var(--border-subtle); margin: 6px 0; }
.shell-menu-item { display: flex; align-items: center; gap: var(--space-2); width: 100%; min-height: 40px; padding: 6px var(--space-2); background: transparent; border: 0; border-radius: 6px; color: var(--text-primary); text-decoration: none; text-align: left; font-family: inherit; font-size: var(--shell-font); cursor: pointer; }
.shell-menu-item:hover { background: var(--background-surface-subtle); text-decoration: none; }
.shell-menu-item > .shell-icon { width: 16px; height: 16px; color: var(--text-muted); }
.company-avatar { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; flex: none; border-radius: 6px; background: var(--navigation-active-background); color: var(--shell-accent); font-size: 10.5px; font-weight: 700; }
.shell-option-name { min-width: 0; flex: 1; overflow-wrap: anywhere; }
.company-option[aria-checked="true"] > .shell-icon { color: var(--shell-accent); }
.shell-user-identity { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2); }
.shell-user-identity .user-avatar { width: 32px; height: 32px; }
.shell-user-identity > div { min-width: 0; }
.shell-user-identity strong { display: block; font-size: 14px; font-weight: 600; overflow-wrap: anywhere; }
.shell-user-identity > div > span, .shell-menu-context { display: block; font-size: 12.5px; color: var(--text-muted); overflow-wrap: anywhere; }
.shell-nav-badge { margin-left: auto; margin-right: 2px; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; background: var(--shell-accent); color: var(--on-brand); font-size: var(--shell-badge-font); font-weight: 700; text-align: center; flex: none; }
.shell-nav-dot { display: none; }
.shell-collapse-right { display: none; }
.shell-collapse-left, .shell-collapse-right { width: 14px; height: 14px; flex: none; }

@media (min-width: 900px) and (hover: hover) and (pointer: fine) {
    .app-shell[data-company-shell] .shell-workspace { display: grid; grid-template-columns: var(--sidebar-rail) minmax(0,1fr); transition: none; overflow: visible; }
    .app-shell[data-company-shell] .shell-main { display: grid; grid-column: 2; margin-left: 0; overflow: hidden; }
    .app-shell[data-company-shell] .sidebar[open]:not(:modal) { display: block; }
    .app-shell[data-company-shell] .sidebar { position: relative; grid-column: 1; grid-row: 1; padding: 0; width: var(--sidebar-width); overflow: visible; background: var(--background-sidebar); z-index: 20; transition: width var(--shell-label-motion); box-shadow: 4px 0 16px var(--shadow-lg-color); }
    .app-shell[data-company-shell] .shell-drawer-heading, .app-shell[data-company-shell] .menu-button { display: none; }
    .app-shell[data-company-shell] .sidebar nav { height: 100%; overflow-y: auto; overflow-x: hidden; padding: var(--space-2); gap: 2px; }
    .app-shell[data-company-shell] .sidebar .nav-link { position: relative; min-height: 40px; height: 40px; flex: none; padding: 0 10px 0 15px; gap: var(--space-3); justify-content: flex-start; white-space: nowrap; font-size: var(--shell-font); color: var(--text-muted); }
    .app-shell[data-company-shell] .sidebar .nav-link:hover:not(.active) { background: var(--shell-hover); }
    .app-shell[data-company-shell] .sidebar .nav-link.active { background: var(--navigation-active-background); color: var(--shell-accent); }
    .app-shell[data-company-shell] .nav-icon { width: 18px; height: 18px; flex: none; }
    .app-shell[data-company-shell] .sidebar .nav-label { position: static; width: auto; height: auto; clip-path: none; white-space: nowrap; overflow-wrap: normal; overflow: hidden; opacity: 1; transition: opacity var(--shell-label-motion); flex: 1; }
    .app-shell[data-company-shell] .shell-main > main { padding-left: var(--space-4); }
    html.shell-rail .app-shell[data-company-shell] .shell-workspace { grid-template-columns: var(--sidebar-rail) minmax(0,1fr); }
    html.shell-rail .app-shell[data-company-shell] .sidebar { width: var(--sidebar-rail); box-shadow: none; }
    html.shell-rail .app-shell[data-company-shell] .sidebar .nav-label { opacity: 0; pointer-events: none; }
    html.shell-rail .app-shell[data-company-shell] .shell-nav-badge { display: none; }
    html.shell-rail .app-shell[data-company-shell] .shell-nav-dot { display: block; position: absolute; left: 28px; top: 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--shell-accent); box-shadow: 0 0 0 2px var(--background-sidebar); }
    html.shell-rail .app-shell[data-company-shell] .active .shell-nav-dot { box-shadow: 0 0 0 2px var(--navigation-active-background); }
    html.shell-rail .app-shell[data-company-shell] .shell-collapse-left { display: none; }
    html.shell-rail .app-shell[data-company-shell] .shell-collapse-right { display: block; }
}
@media (width < 768px) {
    .app-shell[data-company-shell] .shell-topbar { padding-inline: var(--space-2); gap: var(--space-1); }
    .shell-topbar .shell-brand { padding: 0 2px; }
    .shell-topbar .shell-divider { display: none; }
    .shell-topbar .company-menu { flex: 1; }
    .shell-topbar .company-trigger { padding-inline: var(--space-1); min-height: var(--touch-target); }
    .shell-topbar .company-trigger > .shell-icon { display: none; }
    .shell-topbar .company-trigger-name { max-width: 100%; font-size: 13px; }
    .shell-header-actions { gap: var(--space-1); flex: none; }
    .shell-topbar .user-trigger-name, .shell-topbar .user-trigger > .shell-chevron { display: none; }
    .shell-topbar .user-trigger { min-width: var(--touch-target); min-height: var(--touch-target); padding: 0; justify-content: center; }
    .shell-topbar .shell-tool { width: var(--touch-target); height: var(--touch-target); }
    .company-popover { position: fixed; top: calc(var(--header-height) + 6px); left: var(--space-2); width: min(268px, calc(100vw - var(--space-4))); }
    .shell-menu-item { min-height: var(--touch-target); }
    .app-shell[data-company-shell] .sidebar-collapse { display: none; }
}
@media (prefers-reduced-motion: reduce) {
    .app-shell[data-company-shell] .shell-workspace, .app-shell[data-company-shell] .sidebar, .app-shell[data-company-shell] .nav-label { transition: none; }
}

/* N1–N6: contexto integrado y navegación adaptable al ancho real de la cabecera. */
html .app-shell[data-company-shell][data-single-destination="true"] .shell-workspace { grid-template-columns: minmax(0, 1fr); }
.app-shell[data-company-shell][data-single-destination="true"] .shell-main { grid-column: 1; }
.shell-header-context { flex: 1; min-width: 0; }
.shell-context-row { display: flex; align-items: center; gap: var(--space-2); width: 100%; min-width: 0; }
.shell-context-name { flex: none; max-width: 10rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-muted); }
.shell-context-visible { display: flex; align-items: center; gap: var(--space-1); flex: 1; min-width: 0; }
.shell-context-visible .context-link { flex: none; margin: 0; min-height: 40px; white-space: nowrap; }
.shell-context-overflow { flex: none; position: relative; }
.shell-context-overflow summary { display: flex; align-items: center; gap: var(--space-1); min-height: 40px; padding: var(--space-2); border-radius: var(--radius-sm); cursor: pointer; list-style: none; }
.shell-context-overflow summary::-webkit-details-marker { display: none; }
.shell-context-overflow summary:hover { background: var(--shell-hover); }
.shell-context-overflow summary.active, .shell-overflow-links .active { background: var(--navigation-active-background); color: var(--shell-accent); }
.shell-overflow-links { left: 0; right: auto; width: max-content; min-width: 12rem; max-width: min(22rem, calc(100vw - var(--space-4))); max-height: 60dvh; overflow-y: auto; transform: translateX(var(--shell-menu-offset, 0px)); }
.shell-header-context .context-bar-mobile, .shell-context-compact-name { display: none; }
.shell-header-context [hidden] { display: none !important; }
.shell-header-context .context-sheet { transform: translateX(var(--shell-menu-offset, 0px)); }
    .shell-header-context .context-bar-summary { display: flex; align-items: center; justify-content: space-between; gap: var(--space-1); min-height: var(--touch-target); padding: 0 var(--space-1); background: transparent; border: 0; cursor: pointer; list-style: none; }
    .shell-header-context summary::-webkit-details-marker { display: none; }
    .shell-header-context .context-bar-text { display: flex; flex-direction: column; align-items: flex-start; gap: 0; flex-wrap: nowrap; line-height: 1.35; }
    .shell-header-context .context-parent-name { font-size: .75rem; font-weight: 400; color: var(--text-muted); }
    .shell-header-context .context-section-name { font-size: .8125rem; font-weight: 500; }
    .shell-header-context .context-sep { display: none; }
    .shell-header-context .context-chevron { flex: none; font-size: 1rem; color: var(--text-muted); }
    .shell-header-context details[open] .context-chevron { transform: rotate(180deg); }
    .shell-header-context .context-sheet { position: absolute; top: calc(100% + var(--space-2)); left: 0; right: auto; display: flex; flex-direction: column; gap: var(--space-1); padding: var(--space-2) var(--space-3) var(--space-4); background: var(--surface); width: min(22rem, calc(100vw - var(--space-4))); max-height: 65dvh; z-index: 70; border: var(--border-width) solid var(--border); border-radius: var(--radius-sm); box-shadow: var(--shell-popover-shadow); }
    .shell-header-context .context-sheet-header { display: flex; flex-direction: column; gap: var(--space-1); padding: var(--space-2) var(--space-3); border-bottom: var(--border-width) solid var(--border); margin-bottom: var(--space-2); }
    .shell-header-context .context-sheet-header strong { font-size: .875rem; }
    .shell-header-context .context-sheet-header > span { font-size: .75rem; color: var(--text-muted); }
    .shell-header-context .context-sheet-link { display: flex; align-items: center; min-height: var(--touch-target); padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); text-decoration: none; color: var(--text); }
    .shell-header-context .context-sheet-link:hover { background: var(--shell-hover); }
    .shell-header-context .context-sheet-link.active { background: var(--navigation-active-background); color: var(--shell-accent); font-weight: 600; }
/* Sin JavaScript, el selector nativo conserva todos los destinos sin desbordarse. */
html:not(.shell-enhanced) [data-company-shell] .shell-context-row { display: none; }
html:not(.shell-enhanced) [data-company-shell] .shell-header-context .context-bar-mobile { display: block; background: transparent; border: 0; padding: 0; }
html:not(.shell-enhanced) [data-company-shell] .shell-context-compact-name { display: block; }
html:not(.shell-enhanced) [data-company-shell] .shell-header-context .context-sheet { position: fixed; top: calc(var(--header-height) + var(--space-2)); left: var(--space-2); right: var(--space-2); width: auto; }
@media (min-width: 900px) and (hover: hover) and (pointer: fine) {
    html:not(.shell-enhanced) .app-shell[data-company-shell] .shell-workspace { grid-template-columns: var(--sidebar-width) minmax(0, 1fr); }
}
@media (width < 900px), (hover: none), (pointer: coarse) {
    body .app-shell[data-company-shell] .shell-workspace { grid-template-columns: minmax(0, 1fr); }
    .app-shell[data-company-shell] .shell-main { grid-column: 1; }
    .app-shell[data-company-shell] .menu-button { display: inline-flex; flex: none; width: var(--touch-target); min-height: var(--touch-target); }
    .app-shell[data-company-shell] .shell-drawer-heading { display: flex; }
    html.shell-enhanced .app-shell[data-company-shell] .sidebar[open]:not(:modal) { display: none; }
    .app-shell[data-company-shell] .sidebar:modal { width: min(var(--sidebar-width), calc(100vw - var(--space-5))); }
    .shell-topbar .user-trigger-name, .shell-topbar .user-trigger > .shell-chevron { display: none; }
    .shell-topbar .user-trigger { min-width: var(--touch-target); min-height: var(--touch-target); padding: 0; justify-content: center; }
    .shell-topbar .shell-tool { width: var(--touch-target); height: var(--touch-target); }
    .shell-topbar .shell-divider { display: none; }

    .shell-header-actions { flex: none; }
}
/* El drawer depende del puntero; el contexto depende únicamente del espacio útil. */
@media (width < 900px) {
    .shell-context-row { display: none; }
    .shell-header-context .context-bar-mobile { display: block; background: transparent; border: 0; padding: 0; margin: 0; }
    .shell-context-compact-name { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}
.shell-header-context[data-context-compact] .shell-context-row { display: none; }
.shell-header-context[data-context-compact] .context-bar-mobile { display: block; background: transparent; border: 0; padding: 0; }
@media (hover: none), (pointer: coarse) {
    .shell-context-visible .context-link, .shell-context-overflow summary { min-height: var(--touch-target); }
}
@media (width < 360px) {
    .shell-topbar .shell-brand .bheli-logo__wordmark { display: none; }
}

/* Identidad Bheli (bloque C/D): cabecera con logo horizontal 24/18 gap 8,
   auth con lockup vertical 48/28 y cargas con loader de marca.
   Tamaños y legibilidad existentes se conservan; solo cambia la familia. */
.brand.bheli-brand {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.auth-shell {
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* Pie legal del ingreso (dueño, 2026-11-02): al fondo de la pantalla, debajo del contenido, sin competir con él. En
   el celular main ya termina donde empieza la barra fija de acciones, así que el pie nunca queda debajo de ella. */
.auth-legal {
    margin-top: auto;
    width: 100%;
    max-width: 640px;
    padding: 0 16px 16px;
    color: var(--text-muted);
    font-size: 12px;
    line-height: 1.5;
    text-align: center;
    text-wrap: balance;
}

.auth-shell { min-height: 100dvh; }

/* Con la barra fija de acciones del celular manda la altura de team.css (main termina donde empieza la barra). */
@media (max-width: 767px) {
    main.auth-shell:has(.auth-actions) { min-height: 0; }
}

.auth-brand {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--space-6) var(--space-4) 0;
    text-align: center;
}

.bheli-loading {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

/* El loader conserva su API light/dark y sigue al tema efectivo por CSS:
   data-theme oscuro y SYSTEM con SO oscuro usan los tokens oscuros del preset. */
:root[data-theme="dark"] .bheli-loader--theme-light {
    --logo-top: var(--bheli-cobre-dark);
    --logo-bottom: var(--bheli-miel-dark);
}

@media (prefers-color-scheme: dark) {
    :root[data-theme="system"] .bheli-loader--theme-light {
        --logo-top: var(--bheli-cobre-dark);
        --logo-bottom: var(--bheli-miel-dark);
    }
}

.chat-history-pager .bheli-loader {
    margin-right: 6px;
    vertical-align: -3px;
}
/* C1's data directory uses the available content width; other page templates keep their sizing. */
main.wrap.contacts-main { max-width:none; width:100%; }

/* E1: geometría común del rail y navegación de contexto en una sola cabecera. */
.app-shell[data-company-shell] {
    --sidebar-rail: 72px;
    --sidebar-width: 240px;
    --chat-page-padding: var(--space-4);
}
.app-shell[data-company-shell] .sidebar .nav-link { min-height: 48px; height: 48px; }
.app-shell[data-company-shell] .nav-icon { width: 24px; height: 24px; }
.shell-context-name { display: inline-flex; align-items: center; gap: var(--space-2); font-weight: 600; color: var(--text-primary); }
.shell-context-name > .shell-icon { width: 22px; height: 22px; color: var(--shell-accent); }
.shell-context-visible .context-link { display: inline-flex; flex-direction: column; justify-content: center; gap: var(--space-1); min-height: 62px; padding: var(--space-2); font-size: 12px; }
.shell-context-visible .context-link > .shell-icon { width: 25px; height: 25px; }
@media (min-width: 769px) {
    .app-shell[data-company-shell] .shell-topbar { --header-height: 74px; }
}
@media (min-width: 900px) and (hover: hover) and (pointer: fine) {
    body.shell-rail .app-shell[data-company-shell] .sidebar { padding:0; }
    .app-shell[data-company-shell] .sidebar nav { padding: var(--space-2) 12px; }
    .app-shell[data-company-shell] .sidebar .nav-link { padding: 12px; width: 216px; gap: 12px; }
    html.shell-rail .app-shell[data-company-shell] .sidebar .nav-link { width: 48px; }
    html.shell-rail .app-shell[data-company-shell] .sidebar .nav-label { display:none; }
    html.shell-rail .app-shell[data-company-shell] .shell-nav-dot { left: 32px; }
}

/* Marco exterior único de Chat; las tarjetas y el dock mantienen su padding interior. */
.app-shell[data-company-shell] .shell-main > main.chat-section-main {
    width: 100%; max-width: none; margin: 0;
    padding: var(--chat-page-padding);
}
main.chat-section-main > :is(h1,.page-header) { margin-top: 0; }
.app-shell[data-company-shell] .shell-main > main.chat-section-main.chat-main { padding:0; }
/* Contactos C7-09 · catálogo 1.10 "Módulo Chat" (M15): el lugar de la barra de scroll se reserva siempre en el contenedor
   de sus páginas, así la cabecera no salta cuando la página no tiene scroll. Conversaciones (.chat-main) hace su scroll
   adentro y no lo usa; el resto del portal no cambia. */
.app-shell[data-company-shell] .shell-main > main.chat-section-main:not(.chat-main) { scrollbar-gutter: stable; }
.cfg1-page-heading { display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4); }
.cfg1-page-heading h1 { margin:0;min-width:0;overflow-wrap:anywhere; }
.cfg1-page-heading .page-back-icon { display:grid;place-items:center;flex:none;width:44px;height:44px;min-height:44px;margin:0;padding:0;border:1px solid var(--border);border-radius:50%; }
.cfg1-form, .cfg1-assignments, .cfg1-closures { min-width:0; margin-block:var(--space-4); }
.cfg1-form { max-width:52rem; }
.cfg1-toolbar, .cfg1-search, .cfg1-form-actions, .cfg1-selector-controls, .cfg1-selector-title,
.cfg1-step-heading, .cfg1-inline-actions { display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap; }
.cfg1-toolbar { justify-content:space-between;margin-block:var(--space-4); }
.cfg1-search { flex:1;min-width:0; }
.cfg1-search input { min-width:0;flex:1;width:auto; }
.cfg1-selector .sr-only { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0; }
.cfg1-form-actions { margin-block:var(--space-4);padding-block:var(--space-2); }
.cfg1-assignment-columns, .cfg1-form-columns, .cfg1-time-pair { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4); }
.cfg1-assignment-columns>section { min-width:0; }
.cfg1-selector-title, .cfg1-selector-controls { justify-content:space-between;margin-block:var(--space-2); }
.cfg1-selector { min-width:0; }
.cfg1-activation:has(.cfg1-live) > .cfg1-startup { display:none; }
.cfg1-select-row { display:flex;align-items:center;gap:var(--space-3);min-height:52px;padding:var(--space-2);border-bottom:1px solid var(--border);cursor:pointer; }
.cfg1-select-row:hover, .cfg1-select-row.selected { background:var(--surface-muted); }
.cfg1-select-row input { width:20px;height:20px;flex:none; }
.cfg1-select-row span, .cfg1-select-row strong, .cfg1-select-row small { display:block;min-width:0;overflow-wrap:anywhere; }
.cfg1-select-row small { color:var(--text-secondary); }
.cfg1-days { display:flex;gap:var(--space-3);flex-wrap:wrap; }
.cfg1-days label { display:flex;align-items:center;gap:var(--space-1);min-height:44px; }
.cfg1-interval { display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;margin-block:var(--space-2); }
.cfg1-interval input[type=time] { width:8rem; }
.cfg1-advanced { margin-block:var(--space-4); }
.cfg1-advanced summary { min-height:44px;display:flex;align-items:center;cursor:pointer; }
.cfg1-details { display:grid;grid-template-columns:max-content minmax(0,1fr);gap:var(--space-2) var(--space-4); }
.cfg1-details dd { margin:0;overflow-wrap:anywhere; }
.cfg1-assignments .cfg1-desktop-label { display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);margin-block:0 var(--space-2);font-size:inherit; }
.cfg1-assignments .cfg1-desktop-label small { font-weight:normal; }
.cfg1-assignments .cfg1-schedule-summary { margin-block:var(--space-1); }
.cfg1-assignments .cfg1-assignment-body>.trace { margin-block:0 var(--space-1); }
.cfg1-assignments .cfg1-selector-title { margin-block:0 var(--space-1); }
.cfg1-assignments .cfg1-select-row { min-height:52px;padding-block:var(--space-1); }
.cfg1-assignments>.trace { margin-block:var(--space-1); }
.cfg1-assignments .cfg1-selector-controls { margin-block:var(--space-1); }
.cfg1-assignments .cfg1-form-actions { margin-block:var(--space-1) 0;padding-block:var(--space-1); }
.cfg1-disclosure { display:none; }
.cfg1-config-list .rowline { min-height:64px; }
.cfg1-config-entry { display:flex;align-items:center;gap:var(--space-3);min-width:0; }
.cfg1-config-entry>span { min-width:0; }
.cfg1-config-entry small { display:block; }
.cfg1-member-link { flex:1;min-width:0;overflow-wrap:anywhere;color:var(--text); }
.cfg1-member-link small { display:block; }
.cfg1-member-row, .cfg1-member-actions { display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap; }
@media(max-width:767px) {
    .cfg1-assignment-columns, .cfg1-form-columns, .cfg1-time-pair { grid-template-columns:1fr;gap:var(--space-3); }
    .cfg1-desktop-label { display:none; }
    .cfg1-assignments .cfg1-desktop-label { display:none; }
    .cfg1-assignments { margin-block:var(--space-2); }
    .cfg1-page-heading:has(~ .cfg1-assignments) { margin-bottom:var(--space-2); }
    .cfg1-assignments .cfg1-assignment-columns { gap:var(--space-2); }
    .cfg1-disclosure { display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);width:100%;min-height:48px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-3);font:inherit;text-align:left;cursor:pointer; }
    .cfg1-assignment-body.closed { display:none; }
    .cfg1-form-actions { background:var(--surface);min-height:48px;padding-bottom:max(var(--space-2),env(safe-area-inset-bottom));padding-inline-end:84px; }
    .cfg1-assignments .cfg1-form-actions { padding-inline-end:0;padding-top:0; }
    .cfg1-disclosure>span:first-of-type { margin-inline-start:auto; }
    .cfg1-details { grid-template-columns:1fr; }
}
@media(max-width:359px) {
    .cfg1-assignments .cfg1-form-actions { padding-inline-end:84px; }
}
main.chat-section-main :is(.reply-library,.reply-editor) { padding-top: 0; }
main.chat-section-main .reply-page-head { margin-top: 0; }
.chat-section-main .page-back {
    display:flex; align-items:center; gap:var(--space-2); min-height:48px;
    margin:0 0 var(--space-3); color:var(--text); font-weight:600; text-decoration:none;
}
.chat-section-main .page-back > span { display:grid; place-items:center; width:44px; height:44px; }
@media (min-width:768px) {
    .app-shell[data-company-shell] { --chat-page-padding: var(--space-5); }
}
@media (width < 900px), (hover: none), (pointer: coarse) {
    .app-shell[data-company-shell] .sidebar:modal {
        width:min(320px,calc(100vw - 24px)); max-width:none;
        padding:0; padding-bottom:env(safe-area-inset-bottom);
    }
    .app-shell[data-company-shell] .shell-drawer-heading {
        padding:var(--space-4); padding-top:max(var(--space-4),env(safe-area-inset-top));
        background:var(--background-sidebar); flex-wrap:nowrap;
    }
    .app-shell[data-company-shell] .sidebar nav { padding:0; }
    .app-shell[data-company-shell] .sidebar .nav-link { min-height:52px; height:52px; padding:0 16px; gap:var(--space-3); }
    .app-shell[data-company-shell] .shell-close {
        display:grid; place-items:center; width:48px; height:48px; padding:0;
        border:0; border-radius:var(--radius-sm); background:transparent; color:var(--text); cursor:pointer;
    }
    .app-shell[data-company-shell] .shell-close:hover { background:var(--shell-hover); }
    .app-shell[data-company-shell] .shell-close .shell-icon { width:24px; height:24px; }
}
.cfg1-participation-info small { display: block; }
/* A1 · C02/C04: consistent header icon buttons, independent of text glyph rasterisation. */
.app-shell .shell-topbar .menu-button,.app-shell .shell-topbar .shell-tool{width:40px;height:40px;min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center;border:0;border-radius:50%;padding:0;background:transparent;color:var(--text-secondary);}
.app-shell .shell-topbar :is(.menu-button,.shell-tool):hover{background:var(--ui-hover);}
.app-shell .shell-topbar :is(.menu-button,.shell-tool):focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;}
.app-shell .shell-topbar :is(.menu-button,.shell-tool)>svg{width:20px;height:20px;flex:none;stroke-width:2;}
.context-bar-summary{min-height:40px;gap:4px;}
.context-bar-summary>.context-chevron{width:16px;height:16px;flex:none;color:var(--ui-header-secondary);}

/* Corrección B-1 · Bandejas › Miembros: la oferta de Coordinador de atención tiene tres respuestas (Cancelar, Dejar como Agente
   y Pasar a Coordinador); el diálogo se ensancha para que vayan en una fila y se vea cuál avanza (M11). */
.confirmation-dialog:has([data-part=pasar-coordinador]){width:min(100% - 2 * var(--space-4),640px)}
/* C11: explicit button triggers retain the existing menu appearance. */
[data-chat-menu-trigger]{appearance:none;font:inherit;text-align:inherit;color:inherit;background:transparent;border:0;cursor:pointer;}
/* Contexto V1: columna real cuando cabe; en compacto reemplaza el hilo, nunca lo cubre. */
.chat-icon-action {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; min-width: 44px; height: 44px; border-radius: var(--radius-sm);
    color: var(--text); text-decoration: none; background: transparent; border: 0;
}
.chat-icon-action svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.chat-icon-action:hover, .chat-contact-trigger:hover { background: var(--surface-muted); }
.chat-icon-action:focus-visible, .chat-contact-trigger:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.chat-contact-trigger { display: flex; flex: 1; min-width: 0; gap: var(--space-3); align-items: center; min-height: 48px; padding: var(--space-1); border-radius: var(--radius-sm); text-decoration: none; color: var(--text); cursor: pointer; }
.chat-identity-disclosure { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; color: var(--text-muted); }
.chat-contact-trigger:hover, .chat-contact-trigger[aria-expanded="true"] { background: var(--primary-soft); }
.chat-context-long-text { white-space: pre-wrap; overflow-wrap: anywhere; }
.chat-schedule-summary { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2); padding: var(--space-2) var(--space-4); background: var(--primary-soft); }
.chat-schedule-summary span { min-width: 0; overflow-wrap: anywhere; }
.chat-schedule-surface { color: var(--text); background: var(--surface); padding: 0; border: 1px solid var(--border); border-radius: var(--radius-lg); width: min(520px, calc(100% - 32px)); max-height: calc(100dvh - 32px); box-shadow: var(--shadow-lg); }
.chat-schedule-surface:modal { display: flex; flex-direction: column; }
/* SSR sin JavaScript: el editor ocupa su espacio real, no queda debajo del historial. */
.chat-schedule-surface[open]:not(:modal) { position: relative; display: flex; flex-direction: column; flex: 0 1 auto; min-height: 0; margin: var(--space-2) auto; max-height: calc(100dvh - 160px); }
.chat-schedule-surface::backdrop { background: var(--overlay-background); }
.chat-schedule-surface .chat-context-head { display: flex; justify-content: space-between; }
.chat-schedule-date-fields { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: var(--space-3); }
@media(max-width:699px) { .chat-schedule-surface { margin: auto 0 0; width: 100%; max-width: 100%; max-height: 90dvh; border-radius: var(--radius-lg) var(--radius-lg) 0 0; } }
.chat-context-surface { display: flex; flex-direction: column; min-width: 0; min-height: 0; width: 100%; height: 100%; color: var(--text); background: var(--surface); border: 0; padding: 0; margin: 0; box-sizing: border-box; }
.chat-detail-pane.context-open:not(.context-inline) > .chat-detail { display: none; }
.chat-context-return { flex: none; gap: var(--space-1); width: fit-content; max-width: 100%; padding: 0 var(--space-2); justify-content: flex-start; }
.chat-context-return svg { flex: none; }
.chat-context-back-text { font-size: .875rem; }
.chat-context-close-icon { display: none; }
.chat-context-head { display: grid; grid-template-columns: minmax(0, 1fr); align-items: center; gap: var(--space-1); min-height: 64px; padding: var(--space-2) var(--space-3); border-bottom: 1px solid var(--border); }
.chat-context-head h2 { font-size: 1rem; margin: 0; min-width: 0; overflow-wrap: anywhere; }
.chat-context-body { flex: 1; min-height: 0; overflow-y: auto; padding: var(--space-4); overscroll-behavior: contain; }
.chat-context-identity { display: flex; align-items: center; gap: var(--space-3); overflow-wrap: anywhere; }
.chat-context-facts { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-1); margin: var(--space-4) 0; }
.chat-context-facts dt { color: var(--text-muted); font-size: .82rem; }
.chat-context-facts dd { margin: 0 0 var(--space-2); overflow-wrap: anywhere; }
.chat-context-tags { display: flex; flex-wrap: wrap; gap: var(--space-1); }
.chat-context-section { border-top: 1px solid var(--border); margin-top: var(--space-3); padding-top: var(--space-1); }
.chat-context-section > :is(summary,[data-chat-menu-trigger]) { min-height: 44px; cursor: pointer; font-weight: 600; }
.chat-context-record { display: grid; min-height: 44px; gap: var(--space-1); color: var(--text); text-decoration: none; padding: var(--space-2); overflow-wrap: anywhere; border-radius: var(--radius-sm); }
.chat-context-record:hover { background: var(--surface-muted); }
.chat-context-record span, .chat-context-record small { color: var(--text-muted); }
.chat-context-footer { padding: var(--space-3); margin-top: auto; border-top: 1px solid var(--border); }
.chat-detail-pane.context-inline { display: grid; grid-template-columns: minmax(400px, 1fr) 320px; }
.chat-detail-pane.context-inline > .chat-context-surface { position: static; width: 320px; height: 100%; max-height: 100%; border-left: 1px solid var(--border); }
.context-inline .chat-context-head h2 { order: -1; }
.context-inline .chat-context-head { display: flex; justify-content: space-between; gap: var(--space-2); }
.context-inline .chat-context-return { width: 44px; padding: 0; justify-content: center; }
.context-inline .chat-context-close-icon { display: block; }
.context-inline .chat-context-back-icon, .context-inline .chat-context-back-text { display: none; }
.chat-workspace .chat-filters-panel { border-bottom-color: transparent; padding-bottom: var(--space-2); }
.chat-workspace .chat-list-head { border-bottom: 0; }
.chat-js-action { display: none; }
.js .chat-js-action { display: block; }

/* Bheli Chat workspace + Dock persistente (v1): aplicacion de chat, no tabla. */
.chat-shell {
    display: grid;
    grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
    gap: var(--space-4);
    align-items: start;
}

.chat-list {
    display: grid;
    gap: var(--space-2);
    margin: var(--space-3) 0;
    max-height: calc(100vh - 320px);
    min-height: 240px;
    overflow-y: auto;
}

.chat-row {
    display: grid;
    gap: .2rem;
    justify-items: start;
    padding: var(--space-3);
    border: var(--border-width) solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    text-decoration: none;
    color: var(--text);
    min-height: var(--touch-target);
}

button.chat-row {
    font: inherit;
    text-align: start;
    cursor: pointer;
    width: 100%;
}

.chat-row:hover {
    border-color: var(--primary);
}

.chat-row.active {
    border-color: var(--primary);
    background: var(--primary-soft);
}

.chat-row-top {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    width: 100%;
}

.chat-row-top strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.chat-preview {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
    color: var(--text-muted);
}

.chat-unread-dot {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    border-radius: 999px;
    background: var(--primary);
    color: var(--primary-contrast);
    font-size: .75rem;
    font-weight: 600;
    margin-left: auto;
}

.chat-detail {
    display: grid;
    gap: var(--space-3);
    min-width: 0;
}

.chat-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    align-items: center;
}

/* Cabecera compacta: titulo + origen en una sola fila. */
.chat-top {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-3);
    margin-bottom: var(--space-2);
}

.chat-top h1 {
    font-size: 1.25rem;
    margin: 0;
}

.chat-origins {
    display: inline-flex;
    border: var(--border-width) solid var(--border);
    border-radius: 999px;
    overflow: hidden;
}

.chat-origins a {
    padding: var(--space-2) var(--space-4);
    min-height: var(--touch-target);
    display: inline-flex;
    align-items: center;
    text-decoration: none;
    color: var(--text-muted);
    font-weight: 600;
}

.chat-origins a.active {
    background: var(--primary);
    color: var(--primary-contrast);
}

.chat-subfilters {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-1);
    margin: var(--space-2) 0;
}

.chat-subfilters a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: var(--space-1) var(--space-3);
    border-radius: 999px;
    text-decoration: none;
    color: var(--text-muted);
    font-size: .9rem;
}

.chat-subfilters a.active {
    background: var(--surface-muted);
    color: var(--text);
    font-weight: 600;
}

.chat-filters-panel {
    margin: var(--space-2) 0;
}

.chat-filters-panel > :is(summary,[data-chat-menu-trigger]) {
    min-height: var(--touch-target);
    display: inline-flex;
    align-items: center;
    cursor: pointer;
    color: var(--text-muted);
    font-weight: 600;
}

.chat-search-pane {
    position: sticky;
    top: 0;
    background: var(--surface);
    padding: var(--space-2) 0;
    z-index: 1;
}

/* Filtros compactos y secundarios: la conversacion manda en el viewport. */
.chat-filters {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-1);
    margin: var(--space-2) 0;
}

.chip {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: var(--space-1) var(--space-3);
    border: var(--border-width) solid var(--border);
    border-radius: 999px;
    background: var(--surface);
    color: var(--text);
    text-decoration: none;
    font-size: .9rem;
}

.chip:hover {
    border-color: var(--primary);
}

.chip.active {
    background: var(--primary);
    border-color: var(--primary);
    color: var(--primary-contrast);
    font-weight: 600;
}

.chat-secondary {
    margin: var(--space-2) 0;
}

.chat-secondary > :is(summary,[data-chat-menu-trigger]) {
    min-height: var(--touch-target);
    display: inline-flex;
    align-items: center;
    cursor: pointer;
    color: var(--text-muted);
}

/* Pill de novedades realtime: converge con navegacion mejorada, sin reload. */
.update-pill {
    display: inline-flex;
    align-items: center;
    min-height: var(--touch-target);
    padding: var(--space-2) var(--space-4);
    margin: var(--space-2) 0;
    border-radius: 999px;
    background: var(--primary-soft);
    color: var(--primary-hover);
    font-weight: 600;
    text-decoration: none;
    border: var(--border-width) solid var(--primary);
}

.chat-search {
    display: flex;
    gap: var(--space-2);
    margin: var(--space-3) 0;
}

.chat-search input {
    flex: 1;
    min-width: 0;
    min-height: 40px;
}

.chat-search button {
    white-space: nowrap;
}
.dock-icon-button svg { width: 24px; height: 24px; }
.dock-icon-button[aria-pressed="true"] { color: var(--primary); background: var(--primary-soft); }

.dock-icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: var(--touch-target);
    min-height: var(--touch-target);
    border: 0;
    background: transparent;
    color: var(--text-muted);
    border-radius: var(--radius-sm);
    font-size: 1rem;
    flex: none;
    text-decoration: none;
    cursor: pointer;
}

.dock-icon-button:hover {
    background: var(--surface-muted);
    color: var(--text);
}

/* Mobile: lista primero; la conversacion ocupa la vista con volver. */
@media (max-width: 699px) {
    .chat-shell {
        grid-template-columns: minmax(0, 1fr);
    }

    .chat-shell.has-selection .chat-list-pane {
        display: none;
    }

    .chat-shell:not(.has-selection) .chat-detail-pane {
        display: none;
    }

    .chat-list {
        max-height: none;
    }
}

/* El workspace de Chat es una superficie del shell, no una pagina de cards. */
body:has(main.chat-main) {
    overflow: hidden;
}

body:has(main.chat-main) .topbar {
    min-height: var(--header-height);
    box-sizing: border-box;
}

.shell-main:has(main.chat-main) {
    height: calc(100dvh - var(--header-height));
    overflow: hidden;
}

.wrap.chat-main {
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: none;
    height: 100%;
    padding: 0;
    margin: 0;
    min-height: 0;
}

.chat-workspace {
    flex: 1;
    min-height: 0;
    height: 100%;
    gap: 0;
    align-items: stretch;
    grid-template-columns: var(--chat-list-w, 400px) auto minmax(0, 1fr);
    background: var(--surface);
}

/* El aviso realtime ocupa una fila compacta, no una fila implícita expandida
   que desplaza el panel CRM y el hilo al conectarse. No altera la política Chat. */
.chat-workspace:has(> .update-pill) { grid-template-rows: auto minmax(0, 1fr); }
.chat-workspace > .update-pill { grid-column: 1 / -1; grid-row: 1; justify-self: start; }
.chat-workspace:has(> .update-pill) > :is(.chat-list-pane, .chat-splitter, .chat-detail-pane) { grid-row: 2; }

/* El divisor oculto no debe auto-colocar el hilo en la columna intermedia antes de cargar JS. */
@media (min-width: 700px) {
    .chat-workspace .chat-list-pane { grid-column: 1; }
    .chat-workspace .chat-splitter { grid-column: 2; }
    .chat-workspace .chat-detail-pane { grid-column: 3; }
}

/* I1: divisor redimensionable entre lista y thread (patron W3C separator).
   Sin JavaScript la columna usa el ancho por defecto y el divisor se oculta. */
.chat-splitter {
    display: none;
    width: 8px;
    min-height: 0;
    padding: 0;
    border: 0;
    border-left: 1px solid var(--border);
    background: transparent;
    cursor: col-resize;
    touch-action: none;
}

.chat-splitter > span {
    display: block;
    width: 3px;
    height: 48px;
    margin: 40vh auto 0;
    border-radius: 999px;
    background: var(--border);
}

.chat-splitter:hover > span {
    background: var(--primary);
}

.chat-splitter:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: -2px;
}

.chat-splitter:focus-visible > span {
    background: var(--primary);
}

.js-chat-split .chat-splitter {
    display: block;
}

.chat-workspace.list-collapsed {
    grid-template-columns: 0 8px minmax(0, 1fr);
}

.chat-workspace.list-collapsed .chat-list-pane {
    display: none;
}

.chat-workspace .chat-list-pane {
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    border-right: 1px solid var(--border);
}

/* Q02: misma grilla que el header del thread (64px, mismo padding y borde). */
.chat-list-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-4);
    min-height: 64px;
    border-bottom: 1px solid var(--border);
}

.chat-list-head h1 {
    margin: 0;
    font-size: 1.35rem;
    font-weight: 600;
}

.chat-new-group, .chat-thread-action {
    color: var(--primary);
    font-size: .875rem;
    text-decoration: none;
}

.chat-new-group {
    padding: var(--space-2);
    min-height: 36px;
    display: inline-flex;
    align-items: center;
}

.chat-workspace .chat-search-pane {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    margin: 0 var(--space-3) var(--space-2);
    padding: 0;
    gap: 0;
}

.chat-workspace .chat-search input {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
    padding-right: 44px;
    border-radius: var(--radius-sm);
    background: var(--surface-muted);
    border: 1px solid var(--border);
    color: var(--text);
    font: inherit;
}

.chat-search-submit {
    position: absolute;
    right: 0;
    top: 0;
    width: 40px;
    height: 40px;
    border: 0;
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
    font-size: 1.35rem;
}

/* Q26: limpiar la busqueda sin reescribirla; en su propia fila para no
   tapar la lupa ni romper el input en mobile. */
.chat-search .chat-search-clear {
    flex: 1 0 100%;
    min-height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    margin-top: var(--space-1);
    padding: 0 var(--space-2);
    color: var(--primary);
    font-size: .85rem;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}

.chat-search-clear:hover {
    text-decoration: underline;
}

.chat-quick-filters {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    padding: 0 var(--space-3) var(--space-2);
    flex-wrap: wrap;
}

.chat-quick-filters .chip, .chat-filter-options .chip {
    min-height: 34px;
    padding: var(--space-1) var(--space-2);
    font-size: .82rem;
    white-space: nowrap;
}

.chat-workspace .chat-filters-panel {
    margin: 0;
    border-bottom: 0;
}

.chat-workspace .chat-filters-panel > :is(summary,[data-chat-menu-trigger]) {
    padding: 0 var(--space-4);
    min-height: 36px;
    font-size: .82rem;
}

.chat-filter-options {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
}

.chat-filter-caption {
    width: 100%;
    color: var(--text-muted);
    font-size: .8rem;
}

.chat-workspace .chat-list {
    display: block;
    flex: 1;
    min-height: 0;
    max-height: none;
    margin: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    /* Q24: scrollbar al tono del tema, sin angostarla (touch intacto). */
    scrollbar-color: var(--text-muted) transparent;
}

.chat-workspace .chat-row {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr);
    align-items: center;
    justify-items: stretch;
    gap: var(--space-3);
    min-height: 70px;
    padding: var(--space-2) var(--space-3);
    border: 0;
    border-bottom: 1px solid var(--border);
    border-radius: 0;
    background: var(--surface);
}

.chat-workspace .chat-row:hover { background: var(--surface-muted); }
.chat-workspace .chat-row.active {
    background: var(--primary-soft);
    box-shadow: inset 3px 0 var(--primary);
}

.chat-row-avatar, .chat-thread-avatar {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    flex: none;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: var(--surface-muted);
    color: var(--text);
    font-weight: 600;
}

/* Q28: el Empleado IA se distingue del humano sin leer el nombre. */
.chat-row-avatar.agent, .chat-thread-avatar.agent {
    background: var(--avatar-agent-bg);
    color: var(--avatar-agent-fg);
}

.chat-row-content { display: grid; gap: var(--space-1); min-width: 0; }
.chat-workspace .chat-row-top, .chat-row-bottom { display: flex; align-items: center; min-width: 0; gap: var(--space-2); }
.chat-workspace .chat-row-top strong { min-width: 0; font-size: .92rem; font-weight: 500; }
.chat-workspace .chat-row.unread strong { font-weight: 600; }
.chat-row-top time { margin-left: auto; flex: none; font-size: .73rem; color: var(--text-muted); }
.chat-row-bottom .chat-preview { display: block; min-width: 0; flex: 1; font-size: .82rem; }
.chat-row-bottom .chat-unread-dot { flex: none; min-width: 20px; height: 20px; }

.chat-workspace .chat-detail-pane, .chat-workspace .chat-detail {
    min-width: 0;
    min-height: 0;
    height: 100%;
}

.chat-workspace .chat-detail-pane { background: var(--canvas); }
.chat-workspace .chat-detail-pane > .empty-state { display: grid; place-items: center; height: 100%; margin: 0; }
.chat-workspace .chat-detail {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.chat-thread-head {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    min-height: 64px;
    padding: var(--space-2) var(--space-4);
    background: var(--surface);
    border-bottom: 1px solid var(--border);
}

.chat-thread-back { display: none; }
.chat-workspace.list-collapsed .chat-thread-back { display: inline-flex; align-items: center; min-height: 40px; color: var(--primary); text-decoration: none; }

.chat-thread-head strong, .chat-thread-head small { display: block; }
.chat-thread-head small { color: var(--text-muted); font-size: .8rem; }
.chat-thread-identity { flex: 1; min-width: 0; }
.chat-workspace .chat-thread-action { flex: none; margin: var(--space-2) var(--space-4); }
.chat-workspace .chat-detail > .alert { flex: none; margin: var(--space-2) var(--space-4); }

.conversation-viewport .chat {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    gap: var(--space-2);
    margin: 0;
    padding: var(--space-3) clamp(var(--space-3), 3vw, var(--space-5));
    scrollbar-color: var(--text-muted) transparent;
}

:is(.chat-workspace, .conversation-surface) .msg {
    width: fit-content;
    /* Markdown conserva los saltos del mensaje; el markup del renderer no agrega filas vacías. */
    white-space: normal;
    max-width: min(68%, 480px);
    padding: var(--space-2) var(--space-3);
    border-radius: var(--radius-lg);
    font-size: .93rem;
    line-height: 1.42;
    box-shadow: var(--shadow);
}
:is(.chat-workspace, .conversation-surface) .msg.out { align-self: flex-end; }
:is(.chat-workspace, .conversation-surface) .msg.in { align-self: flex-start; }
:is(.chat-workspace, .conversation-surface) .msg.out {
    background: var(--chat-own-background);
    color: var(--chat-own-text);
    border: 1px solid var(--border);
    border-bottom-right-radius: var(--radius-sm);
}
:is(.chat-workspace, .conversation-surface) .msg.in { border-bottom-left-radius: var(--radius-sm); }
:is(.chat-workspace, .conversation-surface) .msg.ai {
    background: var(--chat-ai-background);
    color: var(--chat-ai-text);
    border-color: var(--chat-ai-border);
}
:is(.chat-workspace, .conversation-surface) .msg .who { font-size: .76rem; color: var(--text-muted); opacity: 1; font-weight: 500; }
/* La metadata ocupa ancho de la última línea, nunca un footer vacío. */
.chat .msg-body { position: relative; --msg-meta-width: calc(5ch + var(--space-2)); }
.chat .msg-body.has-delivery-check { --msg-meta-width: calc(5ch + 1.5em + 2 * var(--space-2)); }
.chat .msg-meta {
    position: absolute;
    inset-inline-end: 0;
    bottom: 0;
    display: inline-flex;
    align-items: baseline;
    gap: var(--space-1);
    font-size: .72rem;
    line-height: 1.42;
    color: var(--text-muted);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.chat .msg .msg-meta time { display: inline; float: none; margin: 0; font: inherit; color: inherit; opacity: 1; }
.chat .msg-local-state, .chat .msg-simulated-state { display: block; margin-top: var(--space-1); font-size: .875rem; color: var(--text-muted); }
/* Solo la hoja final del texto (la marca markLastBlock en el cliente con msg-last): antes se buscaba con
   :has(~ *), que obligaba a recalcular el estilo de todo el chat ante cualquier cambio de la página. */
.chat .msg-body [data-msg-text] .msg-last::after {
    content: "";
    display: inline-block;
    width: var(--msg-meta-width);
    height: 1px;
    font-size: .72rem;
}
.chat .msg-body [data-msg-text] > :last-child { margin-bottom: 0; }
.chat-detail.kind-direct .msg > .who,
.chat-detail.kind-direct .msg-quote > .who{
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}

/* Q08/Q10: Markdown seguro con el mismo sistema visual humano/IA. */
.chat .msg [data-msg-text] p { margin: 0 0 .45em; }
.chat .msg [data-msg-text] p:last-child { margin-bottom: 0; }
.chat .msg [data-msg-text] ul,
.chat .msg [data-msg-text] ol { margin: .3em 0 .45em 1.25em; padding: 0; }
.chat .msg [data-msg-text] li { margin: .15em 0; }
.chat .msg [data-msg-text] li:last-child { margin-bottom: 0; }
.chat .msg [data-msg-text] strong { font-weight: 600; }
.chat .msg [data-msg-text] h1,
.chat .msg [data-msg-text] h2,
.chat .msg [data-msg-text] h3,
.chat .msg [data-msg-text] h4,
.chat .msg [data-msg-text] h5,
.chat .msg [data-msg-text] h6 { margin: .3em 0; font-size: 1em; font-weight: 600; }
.chat .msg [data-msg-text] code {
    padding: 0 .3em;
    border-radius: 4px;
    background: var(--code-background);
    color: var(--code-text);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: .85em;
}
.chat .msg [data-msg-text] pre {
    margin: .3em 0 .45em;
    padding: var(--space-2);
    border-radius: var(--radius-sm);
    background: var(--code-background);
    color: var(--code-text);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}
.chat .msg [data-msg-text] pre code { padding: 0; background: none; }
.chat .msg [data-msg-text] a { color: var(--link-default); text-decoration: underline; }
.chat .msg [data-msg-text] a:hover { color: var(--link-hover); }
.chat .msg [data-msg-text] a:active { color: var(--link-active); }

.chat-workspace .chat-to-end {
    align-self: center;
    flex: none;
    min-height: 36px;
    margin-top: -48px;
    margin-bottom: var(--space-2);
    padding: var(--space-1) var(--space-3);
    border: 1px solid var(--primary);
    border-radius: 999px;
    background: var(--surface);
    color: var(--primary);
    cursor: pointer;
    box-shadow: var(--shadow-lg);
    z-index: 1;
}

.chat-workspace .chat-to-end[hidden] { display: none; }

:is(.chat-workspace, .conversation-surface) .human-composer {
    position: static;
    flex: none;
    padding: var(--space-2) var(--space-3);
    padding-bottom: calc(var(--space-2) + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--border);
    background: var(--surface);
}

:is(.chat-workspace, .conversation-surface) .human-composer :is(form, .chat-composer-controls) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: var(--space-1);
    min-width: 0;
    padding: var(--space-1);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    background: var(--surface);
}
:is(.chat-workspace, .conversation-surface) .human-composer :is(form, .chat-composer-controls):focus-within {
    border-color: var(--primary);
    outline: 2px solid var(--primary);
    outline-offset: -2px;
}
/* Un solo foco para el composer integrado; el botón conserva su foco propio. */
:is(.chat-workspace, .conversation-surface) .human-composer textarea:focus-visible { outline: none; }
:is(.chat-workspace, .conversation-surface) .human-composer textarea {
    grid-column: 1;
    grid-row: 1;
    width: 100%;
    min-width: 0;
    min-height: var(--touch-target);
    max-height: calc(6lh + 2 * var(--space-2));
    padding: var(--space-2) var(--space-3);
    font: inherit;
    line-height: 1.4;
    color: var(--text);
    background: transparent;
    border: 0;
    border-radius: var(--radius-sm);
    resize: none;
    field-sizing: content;
    overflow-y: auto;
}

.human-composer .chat-send-button {
    grid-column: 2;
    grid-row: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--touch-target);
    min-width: var(--touch-target);
    height: var(--touch-target);
    min-height: var(--touch-target);
    padding: var(--space-2);
    border-radius: var(--radius);
}
.chat-send-button svg { width: 24px; height: 24px; }
.human-composer :is(form, .chat-composer-controls):has(.composer-quote) :is(textarea, .chat-send-button) { grid-row: 2; }

/* El renderer conserva la densidad del hilo independientemente del host. */
.chat-message-list { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-2); }
.chat-message-list .msg { flex: none; white-space: normal; }

/* El mismo eje vertical en Full/Dock/Simulator: el espacio corto queda antes del historial. */
.conversation-viewport { position: relative; display: flex; flex-direction: column; flex: 1; min-width: 0; min-height: 0; }
.conversation-viewport .chat::before { content: ""; display: block; flex: 1 0 0; width: 100%; }
.conversation-viewport .chat > :is(.msg, .msg-date, .chat-history-pager) { flex-shrink: 0; }
.conversation-viewport [hidden] { display: none; }
.conversation-viewport .chat-to-end {
    align-self: center; flex: none; min-height: var(--touch-target);
    margin: var(--space-1); padding: var(--space-1) var(--space-3);
    border: var(--border-width) solid var(--border); border-radius: var(--radius);
    background: var(--surface); color: var(--primary); cursor: pointer;
}
.conversation-typing { flex: none; padding: var(--space-1) var(--space-3); color: var(--text-muted); font-size: .875rem; }

@media (max-width: 699px) {
    .chat-workspace { grid-template-columns: minmax(0, 1fr); }
    .chat-workspace .chat-splitter,
    .js-chat-split .chat-splitter { display: none; }
    .chat-workspace.list-collapsed { grid-template-columns: minmax(0, 1fr); }
    .chat-workspace.list-collapsed .chat-list-pane { display: revert; }
    .chat-back { min-height: 44px; }
}

/* I4: el directorio Nuevo chat reusa filas, chips y search del panel. */
.chat-back {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: var(--space-1) var(--space-4);
    color: var(--primary);
    text-decoration: none;
    font-size: .875rem;
    font-weight: 600;
}

.chat-back:hover {
    text-decoration: underline;
}

.chat-rail-tooltip {
    position: fixed;
    z-index: 70;
    pointer-events: none;
    max-width: 220px;
    padding: var(--space-2) var(--space-3);
    background: var(--text);
    color: var(--surface);
    border-radius: var(--radius-sm);
    font-size: .82rem;
    box-shadow: var(--shadow-lg);
}

.chat-main .mobile-back { display: none; }

/* I6/I7: menus de fila y de header con <details> nativo (sin JS para abrir).
   Acciones siempre con backend real; nada muerto. */
.chat-row-wrap {
    position: relative;
}

.chat-row-wrap > .chat-row {
    padding-right: 52px;
}

.chat-row-menu {
    position: absolute;
    top: 8px;
    right: 6px;
}

.chat-row-menu > :is(summary,[data-chat-menu-trigger]),
.chat-thread-menu > :is(summary,[data-chat-menu-trigger]) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    min-height: 40px;
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 1.1rem;
    letter-spacing: .1em;
    cursor: pointer;
    list-style: none;
}

.chat-row-menu > :is(summary,[data-chat-menu-trigger])::-webkit-details-marker,
.chat-thread-menu > :is(summary,[data-chat-menu-trigger])::-webkit-details-marker {
    display: none;
}

.chat-row-menu > :is(summary,[data-chat-menu-trigger]) {
    opacity: 0;
}

.chat-row-wrap:hover .chat-row-menu > :is(summary,[data-chat-menu-trigger]),
.chat-row-menu:focus-within > :is(summary,[data-chat-menu-trigger]),
.chat-row-menu[open] > :is(summary,[data-chat-menu-trigger]) {
    opacity: 1;
}

.no-hover .chat-row-menu > :is(summary,[data-chat-menu-trigger]),
.no-hover .msg-menu > :is(summary,[data-chat-menu-trigger]) {
    opacity: 1;
}

.chat-row-menu > :is(summary,[data-chat-menu-trigger]):hover,
.chat-thread-menu > :is(summary,[data-chat-menu-trigger]):hover,
.chat-row-menu > :is(summary,[data-chat-menu-trigger]):focus-visible,
.chat-thread-menu > :is(summary,[data-chat-menu-trigger]):focus-visible {
    background: var(--surface-muted);
    color: var(--text);
    outline: 2px solid var(--primary);
    outline-offset: -2px;
}

.chat-row-menu-items,
.chat-thread-menu-items {
    position: absolute;
    right: 0;
    top: calc(100% + 4px);
    z-index: 5;
    display: grid;
    gap: 2px;
    min-width: 200px;
    padding: var(--space-1);
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    box-shadow: var(--shadow-lg);
}

.chat-row-menu.menu-up .chat-row-menu-items,
.chat-thread-menu.menu-up .chat-thread-menu-items {
    top: auto;
    bottom: calc(100% + 4px);
}

.chat-row-menu-items a,
.chat-thread-menu-items a,
.chat-thread-menu-items button,
.chat-row-menu-items button {
    display: flex;
    align-items: center;
    min-height: 40px;
    padding: var(--space-1) var(--space-3);
    border: 0;
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--text);
    font: inherit;
    text-align: start;
    text-decoration: none;
    cursor: pointer;
    width: 100%;
}

.chat-row-menu-items a:hover,
.chat-thread-menu-items a:hover,
.chat-thread-menu-items button:hover,
.chat-row-menu-items button:hover {
    background: var(--surface-muted);
}

.chat-thread-menu {
    position: relative;
    flex: none;
    margin-left: auto;
}

.chat-thread-menu > :is(summary,[data-chat-menu-trigger]) { width: 44px; height: 44px; min-width: 44px; min-height: 44px; color: var(--text); letter-spacing: normal; }
.chat-thread-menu > :is(summary,[data-chat-menu-trigger]) svg { width: 22px; height: 22px; fill: currentColor; }
.chat-thread-menu[open] > :is(summary,[data-chat-menu-trigger]) { background: var(--surface-muted); }
.chat-thread-menu-items { min-width: min(280px, calc(100vw - 32px)); max-width: calc(100vw - 32px); gap: var(--space-1); padding: var(--space-2); }
.chat-thread-menu-items :is(a, button) { min-height: 44px; gap: var(--space-3); }
.chat-thread-menu-items :is(a, button) svg { width: 20px; height: 20px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.chat-thread-menu-items :is(a, button):focus-visible { outline: 2px solid var(--primary); outline-offset: -2px; }
.chat-thread-menu-items button.chat-js-action { display: none; }
.js .chat-thread-menu-items button.chat-js-action { display: flex; }

/* I8/I9/I10/I11: acciones por mensaje, citas, info, seleccion y hint.
   Sin JavaScript funcionan Responder e Info; Copiar/Seleccionar se muestran
   solo con JavaScript (html.js) para no ofrecer botones muertos. */
.msg {
    position: relative;
}

/* Q11: el disparador flota en la esquina de la burbuja completa, nunca
   sobre la cita ni el texto: pertenece al mensaje, no a una parte. */
.msg-menu {
    position: absolute;
    top: -14px;
    right: -8px;
    z-index: 2;
}

/* El menú abierto recibe sus clicks, no los triggers de mensajes vecinos. */
.msg-menu[open] { z-index: 4; }

.msg-menu > :is(summary,[data-chat-menu-trigger]) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    min-height: 32px;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    background: var(--surface);
    box-shadow: var(--shadow);
    color: var(--text-muted);
    font-size: .95rem;
    letter-spacing: .1em;
    cursor: pointer;
    list-style: none;
    opacity: 0;
}

.msg-menu > :is(summary,[data-chat-menu-trigger])::-webkit-details-marker {
    display: none;
}

.msg:hover .msg-menu > :is(summary,[data-chat-menu-trigger]),
.msg:focus-within .msg-menu > :is(summary,[data-chat-menu-trigger]),
.msg-menu[open] > :is(summary,[data-chat-menu-trigger]) {
    opacity: 1;
}

.msg-menu > :is(summary,[data-chat-menu-trigger]):hover,
.msg-menu > :is(summary,[data-chat-menu-trigger]):focus-visible {
    color: var(--text);
    outline: 2px solid var(--primary);
    outline-offset: -2px;
}

.msg-menu-items {
    position: absolute;
    right: 0;
    top: calc(100% + 4px);
    z-index: 5;
    display: grid;
    gap: 2px;
    min-width: 180px;
    padding: var(--space-1);
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    box-shadow: var(--shadow-lg);
}

.msg-menu.menu-up .msg-menu-items {
    top: auto;
    bottom: calc(100% + 4px);
}

.msg-menu-items a,
.msg-menu-items button {
    display: flex;
    align-items: center;
    min-height: var(--touch-target);
    padding: var(--space-1) var(--space-3);
    border: 0;
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--text);
    font: inherit;
    text-align: start;
    text-decoration: none;
    cursor: pointer;
    width: 100%;
}

.msg-menu-items a:hover,
.msg-menu-items button:hover {
    background: var(--surface-muted);
}

.msg-menu-items [data-requires-js] {
    display: none;
}

html.js .msg-menu-items [data-requires-js] {
    display: flex;
}

/* Q14: separador de fecha del thread (Hoy, Ayer o fecha). */
.chat-floating-date {
    position: sticky;
    top: var(--space-2);
    z-index: 3;
    align-self: stretch;
    display: flex;
    justify-content: center;
    align-items: flex-start;
    flex: none;
    height: 0;
    /* Compensa el gap del hilo: aparecer/desaparecer nunca mueve mensajes. */
    margin-bottom: calc(-1 * var(--space-2));
    visibility: hidden;
    pointer-events: none;
}
.chat-floating-date[data-visible="true"] { visibility: visible; }
.chat-floating-date > span {
    max-width: 100%;
    padding: var(--space-1) var(--space-3);
    border-radius: var(--radius-lg);
    background: color-mix(in srgb, var(--surface-muted) 88%, transparent);
    color: var(--text-muted);
    font-size: .75rem;
    font-weight: 600;
    line-height: 1.5;
    box-shadow: var(--shadow);
    overflow-wrap: anywhere;
    pointer-events: none;
}

.msg-date {
    align-self: center;
    margin: var(--space-2) 0 var(--space-1);
}

.msg-date > span {
    display: inline-block;
    padding: var(--space-1) var(--space-3);
    border-radius: 999px;
    background: var(--surface-muted);
    color: var(--text-muted);
    font-size: .75rem;
    font-weight: 600;
}

.msg-quote {
    display: block;
    margin-bottom: var(--space-1);
    /* Q11: el menu flota arriba-derecha; la cita le deja sitio. */
    padding: var(--space-1) 40px var(--space-1) var(--space-2);
    border-left: 3px solid var(--chat-quote-border);
    border-radius: var(--radius-sm);
    background: var(--chat-quote-background);
    color: var(--text);
    text-decoration: none;
    font-size: .82rem;
}

:root[data-theme="dark"] .msg-quote {
    background: var(--chat-quote-background);
}

:root[data-theme="dark"] .msg.out .msg-quote {
    background: var(--chat-quote-background);
    border-left-color: var(--chat-quote-border);
}

/* Q09: cita inmediata y obvia: una linea compacta, sin perder el enlace. */
.msg-quote.compact {
    padding-top: 2px;
    padding-bottom: 2px;
    font-size: .76rem;
}

.msg-quote.compact > span:last-child {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}

.msg.out .msg-quote {
    background: var(--chat-quote-background);
    border-left-color: var(--chat-quote-border);
}

.msg-quote .who {
    font-size: .72rem;
}

.msg-info {
    min-width: 0;
    color: var(--text);
}

.msg-info > :is(summary,[data-chat-menu-trigger]) {
    display: flex;
    align-items: center;
    min-height: var(--touch-target);
    padding: var(--space-1) var(--space-3);
    cursor: pointer;
    border-radius: var(--radius-sm);
}

.msg-info > div {
    max-width: 260px;
    padding: var(--space-2) var(--space-3);
    font-size: .8rem;
    line-height: 1.4;
    color: var(--text-muted);
    overflow-wrap: anywhere;
}

.msg-info > :is(summary,[data-chat-menu-trigger]):hover,
.msg-info > :is(summary,[data-chat-menu-trigger]):focus-visible {
    color: var(--text);
    outline: 2px solid var(--primary);
    outline-offset: -2px;
}

.msg.selected {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}

.msg-select-bar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-2);
    flex: none;
    padding: var(--space-2) var(--space-4);
    border-top: 1px solid var(--border);
    background: var(--surface);
    font-size: .875rem;
}

/* En seleccion el pill de ir-al-final estorba a la barra: se oculta. */
.chat-workspace.selecting .chat-to-end {
    display: none;
}

/* El display de las acciones no debe sobrescribir el gating nativo hidden. */
.msg-select-bar[hidden],
.msg-select-bar a[data-select-reply][hidden],
.msg-select-bar button[hidden] {
    display: none;
}

.composer-quote {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    grid-column: 1 / -1;
    padding: var(--space-1) var(--space-3);
    border-left: 3px solid var(--primary);
    border-radius: var(--radius-sm);
    background: var(--surface-muted);
    font-size: .85rem;
}

.composer-quote > a {
    margin-left: auto;
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    min-height: 36px;
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    text-decoration: none;
    font-size: 1.2rem;
}

.composer-quote > a:hover {
    background: var(--surface);
    color: var(--text);
}

/* Q17: placeholder con el mismo muted medido AA del resto del texto. */
.chat-workspace .human-composer textarea::placeholder {
    color: var(--text-muted);
    opacity: 1;
}
/* Q13: indicador discreto con el nombre real mientras el empleado responde. */
.msg.temp-typing {
    animation: typing-pulse 1.6s ease-in-out infinite;
}

@keyframes typing-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: .55; }
}

@media (prefers-reduced-motion: reduce) {
    .msg.temp-typing {
        animation: none;
    }
}

/* F11: modo de seleccion multiple. El composer y los menus por burbuja se
   ocultan para no fingir normalidad; la barra contextual manda. */
.chat-workspace.selecting .human-composer,
.chat-workspace.selecting .msg-menu {
    display: none;
}

.msg-select-check {
    display: none;
}

.chat-workspace.selecting .msg {
    padding-left: 56px;
}

.chat-workspace.selecting .msg-select-check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    left: 4px;
    top: 8px;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: var(--radius-sm);
    background: transparent;
    cursor: pointer;
}

.msg-select-check > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border: 2px solid var(--text-muted);
    border-radius: 6px;
    background: var(--surface);
    color: transparent;
    font-size: 1rem;
    line-height: 1;
}

.msg-select-check[aria-checked="true"] > span {
    border-color: var(--primary);
    background: var(--primary);
    color: var(--primary-contrast);
}

.msg-select-check:hover > span,
.msg-select-check:focus-visible > span {
    border-color: var(--primary);
}

.msg-select-check:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: 2px;
}

.msg-select-bar a[data-select-reply],
.msg-select-bar button {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: var(--space-1) var(--space-3);
    border-radius: var(--radius-sm);
    color: var(--primary);
    font: inherit;
    font-weight: 600;
    text-decoration: none;
    background: transparent;
    border: 0;
    cursor: pointer;
}

.msg-select-bar a[data-select-reply]:hover,
.msg-select-bar button:hover {
    background: var(--surface-muted);
}

.msg-select-bar [data-selected-count] {
    font-weight: 600;
}

/* En el ancho de una sola columna el retorno vive dentro del header persistente. */
@media (max-width: 699px) {
    .chat-main .mobile-back { display: none; }
    /* F14: en modo directorio el movil muestra el directorio aunque haya
       seleccion preservada para el thread de desktop. */
    .chat-workspace.dir-mode.has-selection .chat-list-pane { display: flex; }
    .chat-workspace.dir-mode.has-selection .chat-detail-pane { display: none; }
    .chat-workspace.has-selection:not(.list-mode):not(.dir-mode) .chat-list-pane { display: none; }
    .chat-workspace.list-mode .chat-list-pane { display: flex; }
    .chat-workspace:not(.has-selection) .chat-detail-pane,
    .chat-workspace.list-mode .chat-detail-pane { display: none; }
    .chat-thread-back {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: none;
        min-width: 44px;
        min-height: 44px;
        border-radius: var(--radius-sm);
        color: var(--primary);
        font-size: 1.6rem;
        text-decoration: none;
    }
    .chat-thread-back span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    .chat-thread-back:hover { background: var(--surface-muted); }
    .chat-workspace .chat-detail > .chat { padding: var(--space-3); }
    .chat-workspace .msg { max-width: 86%; }
    .chat-workspace .human-composer { padding-inline: var(--space-2); }
    .msg-select-bar { gap: var(--space-1); padding: var(--space-2); }
    .msg-select-bar a[data-select-reply],
    .msg-select-bar button { padding: var(--space-1) var(--space-2); }
}
.chat-history-pager {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 8px;
    min-width: 0;
    padding-block: 8px;
    color: var(--muted);
}
.chat-history-pager [aria-disabled="true"] { pointer-events: none; opacity: .6; }
.chat-history-pager [hidden] { display: none !important; }
.chat[data-history-managed] { overflow-anchor: none; }

/* Solo la composición exterior usa la altura disponible del shell, no 100dvh menos 60px. */
.app-shell .shell-main:has(main.chat-main) { height: 100%; }
.app-shell .shell-main > .chat-main { overflow: hidden; }
/* Posponer reutiliza la superficie transaccional y el bottom sheet de Chat. */
.chat-snooze-presets { display: grid; gap: var(--space-2, 8px); border: 0; padding: 0; min-width: 0; }
.chat-snooze-presets label { display: flex; align-items: flex-start; gap: var(--space-2, 8px); padding-block: var(--space-2, 8px); }
.chat-snooze-presets small { display: block; color: var(--text-muted); overflow-wrap: anywhere; }
.chat-scheduled-workspace { min-width:0; flex:1; overflow:auto; background:var(--surface); }
.chat-scheduled-workspace .chat-context-body { max-width:50rem; margin-inline:auto; }
.scheduled-open .conversation-viewport > :not(.chat-scheduled-workspace) { display:none; }
.chat-scheduled-records { display:grid; gap:var(--space-3); }
.chat-scheduled-record { padding-block:var(--space-3); border-bottom:1px solid var(--border); }
.chat-scheduled-body { white-space:pre-wrap; overflow-wrap:anywhere; }
.chat-scheduled-record dl { display:grid; grid-template-columns:minmax(7rem,auto) minmax(0,1fr); gap:var(--space-2); }
.chat-scheduled-record dd { margin:0; overflow-wrap:anywhere; }
.chat-scheduled-record .actions { display:flex; flex-wrap:wrap; gap:var(--space-2); }
/* Chat bloque 1: tokens y composiciÃ³n exclusivos del workspace.
   Nunca se aplican al Dock ni al simulador. Light sigue la referencia aprobada;
   dark conserva el sistema de tema y los contrastes de la aplicaciÃ³n. */
.chat-workspace {
    color: var(--chat-text);
    background: var(--chat-list-background);
}

/* El breakpoint usa el espacio Ãºtil del chat, no el ancho del dispositivo. */
.chat-main { container: dedicated-chat / inline-size; }
.chat-workspace .chat-list-pane { background: var(--chat-list-background); border-color: var(--chat-border); }
.chat-workspace .chat-list-head { min-height: 56px; padding: 10px 8px 8px 18px; gap: 4px; }
.chat-workspace .chat-list-head h1 { font-size: 21px; font-weight: 600; min-width: 0; }
.chat-workspace .chat-list-head .chat-icon-action { border-radius: 999px; width: 38px; min-width: 38px; height: 38px; }
.chat-workspace .chat-search-pane { margin: 0 16px; }
.chat-workspace .chat-search { --control-background: var(--chat-search-background); --control-placeholder: var(--chat-text-secondary); }
.chat-workspace .chat-search input { min-height: 38px; height: 38px; border: 0; border-radius: 999px; background: var(--chat-search-background); color: var(--chat-text); padding-inline: 16px 44px; font-size: 13.5px; }
.chat-workspace .chat-search input::placeholder { color: var(--chat-text-secondary); opacity: 1; }
.chat-workspace .chat-search-submit { width: 38px; height: 38px; border-radius: 999px; color: var(--chat-text-secondary); }
.chat-workspace .chat-quick-filters { padding: 12px 16px 10px; gap: 6px; }
.chat-workspace .chat-quick-filters .chip { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 10px; border-radius: 999px; border: 1px solid var(--chat-chip-border); background: transparent; font-size: 13px; font-weight: 600; color: var(--chat-text-secondary); text-decoration: none; }
.chat-workspace .chat-quick-filters .chip.active { background: var(--chat-accent-soft); border-color: var(--chat-accent-border); color: var(--chat-accent-text); }
.chat-workspace .chat-list { padding: 2px 8px 16px; min-height: 0; }
.chat-workspace .chat-row-wrap { margin: 0; }
.chat-workspace .chat-row { grid-template-columns: 48px minmax(0, 1fr); min-height: 76px; gap: 12px; padding: 10px 12px; border: 0; border-radius: var(--chat-row-radius); background: var(--chat-list-background); color: var(--chat-text); }
.chat-workspace .chat-row-wrap > .chat-row { padding-right: 42px; }
.chat-workspace .chat-row:hover { background: var(--chat-list-background); box-shadow: var(--chat-row-hover-shadow); }
:root[data-theme="dark"] .chat-workspace .chat-row:hover { background: var(--surface-muted); }
.chat-workspace .chat-row.active { background: var(--chat-active-background); box-shadow: none; }
/* Realtime owns the existing 1500ms lifetime; static fill also survives reduced motion. */
.chat-workspace .chat-row.chat-row-realtime-highlight,
:root[data-theme="dark"] .chat-workspace .chat-row.chat-row-realtime-highlight { background: var(--chat-accent-soft); }
.chat-workspace .chat-row-avatar { width: 48px; height: 48px; background: var(--chat-avatar-background); color: var(--chat-avatar-text); font-size: 15px; }
.chat-workspace .chat-row-avatar.agent { background: var(--chat-ai-soft); color: var(--chat-ai-text); }
.chat-workspace .chat-row-top { gap: 6px; }
.chat-workspace .chat-row-top strong { font-size: 15.5px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-row.unread .chat-row-top strong { font-weight: 600; }
.chat-workspace .chat-row-top time { font-size: 12px; color: var(--chat-text-tertiary); }
.chat-workspace .chat-row.unread .chat-row-top time { color: var(--chat-accent); font-weight: 600; }
.chat-workspace .chat-preview { color: var(--chat-text-secondary); font-size: 13.5px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; }
.chat-workspace .chat-unread-dot { background: var(--chat-accent); color: var(--chat-on-unread); min-width: 20px; height: 20px; border-radius: 10px; padding-inline: 5px; font-size: 11.5px; font-weight: 600; }
.chat-workspace .chat-row .badge { border: 0; border-radius: 4px; background: var(--chat-neutral-soft); color: var(--chat-text-secondary); font-size: 10.5px; padding: 1px 4px; flex: none; }
.chat-workspace .chat-detail-pane { background: var(--chat-thread-background); }
.chat-workspace .chat-thread-head { background: var(--chat-list-background); border-color: var(--chat-border); gap: 8px; }
.chat-workspace .chat-thread-avatar { width: 40px; height: 40px; background: var(--chat-avatar-background); color: var(--chat-avatar-text); }
.chat-workspace .chat-thread-avatar.agent { background: var(--chat-ai-soft); color: var(--chat-ai-text); }
.chat-workspace .chat-thread-identity strong { font-size: 15.5px; font-weight: 600; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
.chat-workspace .chat-thread-identity small { font-size: 12.5px; color: var(--chat-text-secondary); }
.chat-workspace .conversation-viewport { background: var(--chat-thread-background); }
.chat-workspace .msg { font-size: 14px; line-height: 1.42; box-shadow: var(--chat-bubble-shadow); border: 0; padding: 8px 12px; }
.chat-workspace .msg.out, .chat-workspace .msg.out.ai { background: var(--chat-own-background); color: var(--chat-own-text); border-radius: 10px 10px 3px 10px; }
.chat-workspace .msg.in, .chat-workspace .msg.in.ai { background: var(--chat-list-background); color: var(--chat-text); border-radius: 10px 10px 10px 3px; }
.chat-workspace .msg .who { font-size: 12px; font-weight: 600; }
.chat-workspace .msg.ai .who { color: var(--chat-ai-text); }
.chat-workspace .msg-meta { font-size: 11px; color: var(--chat-text-secondary); }
.chat-workspace .msg-meta time { color: inherit; }
/* R04: reserva intrÃ­nseca del marcador localizado + hora, solo en el workspace opt-in.
   La hoja Markdown final es la misma del spacer legacy; no altera listas/citas anteriores. */
.chat-workspace .msg-body.has-simulated-meta .msg-meta {
    font-family: var(--font);
    font-weight: 400;
    font-style: normal;
}
.chat-workspace .msg-body.has-simulated-meta [data-msg-text] .msg-last::after {
    content: var(--msg-meta-content);
    width: auto;
    height: auto;
    line-height: 1.42;
    padding-inline-start: calc(var(--space-1) + var(--space-2));
    font-size: 11px;
    font-family: var(--font);
    font-weight: 400;
    font-style: normal;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    visibility: hidden;
}
.chat-workspace .msg-delivery-check[data-delivery-status="READ"] { color: var(--chat-accent); }
.chat-workspace .chat-workspace-system-note { justify-self: center; max-width: 85%; margin: 8px auto; padding: 5px 10px; border-radius: 999px; background: var(--chat-note-background); color: var(--chat-text-secondary); text-align: center; font-size: 12px; line-height: 1.4; }
.chat-workspace .chat-history-pager { align-self: stretch; width: 100%; }
.chat-workspace .msg-date { background: var(--chat-list-background); color: var(--chat-text-secondary); box-shadow: var(--chat-bubble-shadow); border-radius: 999px; }
.chat-workspace .human-composer { border: 0; background: var(--chat-thread-background); padding: 8px 16px 14px; }
.chat-workspace .human-composer :is(form, .chat-composer-controls) { background: var(--chat-list-background); border: 0; border-radius: 28px; padding: 4px 6px; box-shadow: var(--chat-bubble-shadow); }
.chat-workspace .human-composer textarea { font-size: 14.5px; line-height: 22px; color: var(--chat-text); }
.chat-workspace .human-composer .chat-send-button { background: var(--chat-accent); color: var(--primary-contrast); border-radius: 999px; }
.chat-workspace .chat-thread-menu-items, .chat-workspace .chat-row-menu-items { background: var(--chat-list-background); border-color: var(--chat-border); border-radius: var(--chat-menu-radius); box-shadow: var(--chat-menu-shadow); max-width: min(296px, calc(100cqw - 24px)); }
.chat-workspace .chat-thread-menu-items :is(a, button), .chat-workspace .chat-row-menu-items :is(a, button) { border-radius: 10px; font-size: 14px; color: var(--chat-text); }
.chat-workspace .empty-state { color: var(--chat-text-secondary); font-size: 13.5px; }
.chat-workspace .empty-state strong { display: block; font-size: 15px; color: var(--chat-text); font-weight: 600; }
.chat-workspace :is(a, button, :is(summary,[data-chat-menu-trigger]), input:not(.bheli-composite-input)):focus-visible { outline: 2px solid var(--chat-accent); outline-offset: 2px; }
.chat-workspace [hidden] { display: none !important; }
.chat-workspace .feedback-toast { position: fixed; inset: auto auto calc(24px + env(safe-area-inset-bottom, 0px)) 50%; transform: translateX(-50%); z-index: 70; max-width: min(520px, calc(100vw - 32px)); margin: 0; padding: 10px 16px; border: 0; border-radius: 999px; background: var(--chat-toast-background); color: var(--chat-toast-text); font-size: 13.5px; box-shadow: var(--chat-toast-shadow); pointer-events: none; }
.chat-workspace .feedback-toast-timed { animation-duration: 2.8s; }

/* Selectores nativos: el contenido sigue operable sin JavaScript. */
.chat-workspace :is(.chat-type-menu, .chat-list-menu, .chat-inbox-selector, .chat-assign-menu, .chat-bulk-menu) { position: relative; }
.chat-workspace .chat-type-menu { flex: 1; min-width: 0; }
.chat-workspace :is(.chat-type-menu, .chat-list-menu, .chat-inbox-selector, .chat-assign-menu, .chat-bulk-menu) > :is(summary,[data-chat-menu-trigger]) { display: flex; align-items: center; gap: 6px; min-height: 38px; list-style: none; cursor: pointer; border-radius: 10px; }
.chat-workspace :is(.chat-type-menu, .chat-list-menu, .chat-inbox-selector, .chat-assign-menu, .chat-bulk-menu) > :is(summary,[data-chat-menu-trigger])::-webkit-details-marker { display: none; }
.chat-workspace .chat-inbox-selector { margin: 12px 12px 0; }
.chat-workspace .chat-inbox-selector > :is(summary,[data-chat-menu-trigger]) { padding: 8px 10px; border: 1px solid var(--chat-border); border-radius: 12px; font-size: 13.5px; font-weight: 600; }
.chat-workspace .chat-inbox-selector > :is(summary,[data-chat-menu-trigger]) > span:first-child { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-inbox-menu-items { left: 0; right: 0; }
.chat-workspace .chat-inbox-menu-items > strong { padding: 6px 10px; color: var(--chat-text-tertiary); font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.chat-workspace :is(.chat-inbox-avatar, .chat-assignee-avatar) { display: grid; place-items: center; flex: none; width: 32px; height: 32px; border-radius: 8px; background: var(--chat-neutral-soft); color: var(--chat-text-secondary); }
.chat-workspace .chat-assignee-avatar { border-radius: 999px; }
.chat-workspace .chat-view-back { display: grid; place-items: center; width: 38px; min-height: 38px; color: var(--chat-text); text-decoration: none; font-size: 22px; }
.chat-workspace .chat-type-menu > :is(summary,[data-chat-menu-trigger]) { width: fit-content; max-width: 100%; padding: 4px 8px; margin-left: -8px; }
.chat-workspace .chat-type-menu > :is(summary,[data-chat-menu-trigger]) h1 { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.chat-workspace .chat-list-menu > :is(summary,[data-chat-menu-trigger]) { width: 36px; justify-content: center; }
.chat-workspace :is(.chat-type-menu-items, .chat-list-menu-items, .chat-inbox-menu-items, .chat-assign-menu-items, .chat-bulk-menu-items) { position: absolute; z-index: 20; top: calc(100% + 6px); display: grid; gap: 2px; padding: 6px; border: 1px solid var(--chat-border); border-radius: var(--chat-menu-radius); background: var(--chat-list-background); box-shadow: var(--chat-menu-shadow); max-width: calc(100cqw - 24px); }
.chat-workspace .chat-type-menu-items { width: 320px; left: -8px; }
.chat-workspace .chat-list-menu-items { width: 268px; right: 0; }
.chat-workspace :is(.chat-type-menu-items, .chat-list-menu-items, .chat-inbox-menu-items, .chat-assign-menu-items, .chat-bulk-menu-items) :is(a, button) { display: flex; align-items: center; gap: 12px; min-height: 40px; width: 100%; padding: 8px 10px; border: 0; border-radius: 10px; background: transparent; color: var(--chat-text); text-align: start; text-decoration: none; font: inherit; font-size: 14px; cursor: pointer; }
.chat-workspace :is(.chat-type-menu-items, .chat-list-menu-items, .chat-inbox-menu-items, .chat-assign-menu-items, .chat-bulk-menu-items) :is(a, button):hover { background: var(--chat-active-background); }
.chat-workspace :is(.chat-type-menu-items, .chat-inbox-menu-items) a > span:nth-child(2) { flex: 1; min-width: 0; }
.chat-workspace .chat-type-menu-items strong { display: block; font-weight: 500; }
.chat-workspace .chat-type-menu-items small { display: block; color: var(--chat-text-tertiary); font-size: 12px; }
.chat-workspace .chat-type-icon { display: grid; place-items: center; flex: none; width: 32px; height: 32px; border-radius: 999px; background: var(--chat-neutral-soft); color: var(--chat-text-secondary); }
.chat-workspace .chat-type-icon.agent { background: var(--chat-ai-soft); color: var(--chat-ai-text); }
.chat-workspace :is(.chat-list-menu, .chat-quick-filters, .chat-type-icon) svg { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.chat-workspace .chat-quick-filters .chat-ai-filter.active { background: var(--chat-ai-soft); border-color: var(--chat-ai-border); color: var(--chat-ai-text); }
.chat-workspace .chat-filter-divider { flex: none; width: 1px; height: 20px; background: var(--chat-filter-divider); }
.chat-workspace .chat-quick-filters .chat-supervise-filter.active { background: var(--chat-text); color: var(--chat-list-background); border-color: var(--chat-text); }
.chat-workspace .chat-switch-track { display: inline-flex; align-items: center; width: 28px; height: 16px; padding: 2px; background: var(--chat-chip-border); border-radius: 999px; flex: none; }
.chat-workspace .chat-switch-track > span { width: 12px; height: 12px; background: var(--chat-list-background); border-radius: 999px; }
.chat-workspace .chat-unread-filter.active .chat-switch-track { background: var(--chat-accent); justify-content: flex-end; }
.chat-workspace .chat-owner-pill { display: inline-flex; align-items: center; gap: 4px; height: 20px; padding: 0 7px; max-width: 60%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; flex: 0 1 auto; border-radius: 999px; background: var(--chat-neutral-soft); color: var(--chat-text-secondary); font-size: 11.5px; font-weight: 500; }
.chat-workspace .chat-owner-pill:is(.agent, .ai, .employee) { background: var(--chat-ai-soft); color: var(--chat-ai-text); }
.chat-workspace .chat-owner-pill:is(.unassigned, .pending) { background: var(--chat-unassigned-soft); color: var(--chat-unassigned-text); font-weight: 600; }
.chat-workspace .chat-kind-tag { display: inline-flex; align-items: center; flex: none; height: 20px; padding: 0 8px; border-radius: 999px; background: var(--chat-neutral-soft); color: var(--chat-text-secondary); font-size: 11.5px; font-weight: 500; white-space: nowrap; }
.chat-workspace .chat-hidden-ai { margin: 8px 16px 16px; padding: 8px 12px; border: 1px dashed var(--chat-ai-border); border-radius: 12px; color: var(--chat-ai-text); font-size: 12.5px; }
.chat-workspace .chat-hidden-ai a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 8px; color: inherit; font-weight: 600; }
.chat-workspace .chat-selection-bar { display: flex; flex-wrap: nowrap; min-width: 0; align-items: center; gap: 8px; padding: 4px 8px; margin: 8px 16px; border-radius: 12px; background: var(--chat-neutral-soft); color: var(--chat-text); font-size: 13.5px; }
.chat-workspace .chat-selection-bar > span { flex: 1 1 0; min-width: 0; }
.chat-workspace .chat-selection-bar > button { flex: 1 1 auto; min-width: 0; max-width: 100%; white-space: normal; word-break: normal; line-height: 1.35; }
.chat-workspace .chat-selection-bar > a { display: grid; place-items: center; min-width: 36px; min-height: 36px; color: inherit; font-size: 24px; text-decoration: none; }
/* R5.1 (R5-7) · C35 Casilla: cuadrada de 18 px, radio 5, borde 1,5 px de controles (C35 1.22, 3:1 en claro y oscuro); marcada, terracota con ✓ blanca (en oscuro,
   los tokens del tema). Nunca la del navegador. Tocar la fila entera marca (ChatRowItem); el anillo de foco, solo con teclado. */
.chat-workspace { --chat-check-border: var(--ui-control-border); --chat-check-ring: var(--contact-focus-ring); --chat-check-on: var(--primary); }
.chat-workspace .chat-row-checkbox { -webkit-appearance: none; appearance: none; position: absolute; z-index: 1; top: calc(50% - 9px); left: 11px; width: 18px; height: 18px; margin: 0; box-sizing: border-box; border: 1.5px solid var(--chat-check-border); border-radius: 5px; background: var(--chat-list-background); cursor: pointer; }
.chat-workspace .chat-row-checkbox:checked { border-color: var(--chat-check-on); background: var(--chat-check-on); }
.chat-workspace .chat-row-wrap > .chat-row-checkbox:focus-visible { outline: none; border-color: var(--chat-check-on); box-shadow: 0 0 0 3px var(--chat-check-ring); }
.chat-workspace .chat-row-check-mark { position: absolute; z-index: 2; top: calc(50% - 9px); left: 11px; display: grid; place-items: center; width: 18px; height: 18px; color: var(--chat-on-unread); pointer-events: none; visibility: hidden; }
.chat-workspace .chat-row-checkbox:checked + .chat-row-check-mark { visibility: visible; }
.chat-workspace .chat-row-check-mark .chat-r2-icon { width: 12px; height: 12px; stroke-width: 3; }
.chat-workspace .chat-row-wrap:has(.chat-row-checkbox) .chat-row { padding-left: 42px; }
.chat-workspace .chat-row-wrap:has(.chat-row-checkbox:checked) .chat-row { background: var(--chat-accent-soft); }
.chat-workspace .chat-ownership-notice { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin: 12px 16px; padding: 12px 16px; border: 1px solid var(--chat-border); border-radius: 16px; background: var(--chat-list-background); font-size: 13.5px; line-height: 1.35; }
.chat-workspace .chat-ownership-notice > :is(p, span) { flex: 1; margin: 0; min-width: 0; }
.chat-workspace .chat-ownership-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-left: auto; }
.chat-workspace .chat-ownership-notice .button { border-radius: 999px; }
.chat-workspace .chat-ownership-notice.management-only { margin: 0; padding: 4px 16px; border: 0; border-radius: 0; background: transparent; }
.chat-workspace .chat-owner-mobile { display: none; }
.chat-workspace .chat-owner-header { max-width: 35%; height: 28px; padding-inline: 10px; font-size: 12.5px; }
.chat-workspace .chat-assign-menu-items { width: 264px; bottom: calc(100% + 6px); top: auto; right: 0; }

@container dedicated-chat (max-width: 859px) {
    .chat-workspace, .chat-workspace.list-collapsed { grid-template-columns: minmax(0, 1fr); }
    .chat-workspace .chat-splitter { display: none; }
    .chat-workspace .chat-list-pane, .chat-workspace .chat-detail-pane { grid-column: 1; }
    .chat-workspace .chat-list-pane { border: 0; }
    .chat-workspace.has-selection:not(.list-mode):not(.dir-mode) .chat-list-pane { display: none; }
    .chat-workspace.list-mode .chat-list-pane, .chat-workspace.dir-mode .chat-list-pane, .chat-workspace:not(.has-selection) .chat-list-pane { display: flex; }
    .chat-workspace:not(.has-selection) .chat-detail-pane, .chat-workspace.list-mode .chat-detail-pane, .chat-workspace.dir-mode .chat-detail-pane { display: none; }
    .chat-workspace .chat-thread-back { display: inline-flex; align-items: center; justify-content: center; flex: none; min-width: 44px; min-height: 44px; color: var(--chat-text); font-size: 24px; text-decoration: none; }
    .chat-workspace .chat-thread-back span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    .chat-workspace .chat-thread-head { padding: 8px; gap: 4px; }
    .chat-workspace .msg { max-width: 86%; }
    .chat-workspace .conversation-viewport .chat { padding: 12px; }
    .chat-workspace .chat-list-head .chat-icon-action { width: 44px; min-width: 44px; height: 44px; }
    .chat-workspace .chat-quick-filters .chip { min-height: 44px; }
    .chat-workspace .chat-search input { min-height: 44px; height: 44px; font-size: 16px; }
    .chat-workspace .chat-search-submit { width: 44px; height: 44px; }
    .chat-workspace .human-composer { padding-inline: 8px; padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px)); }
    .chat-workspace .human-composer textarea { font-size: 16px; }
    .chat-workspace .chat-supervise-filter span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    .chat-workspace .chat-supervise-filter { min-width: 44px; justify-content: center; padding-inline: 8px; }
    .chat-workspace :is(.chat-type-menu, .chat-list-menu, .chat-inbox-selector, .chat-assign-menu) > :is(summary,[data-chat-menu-trigger]) { min-height: 44px; }
    .chat-workspace .chat-list-menu > :is(summary,[data-chat-menu-trigger]) { min-width: 44px; }
    .chat-workspace .chat-selection-bar > a { min-width: 44px; min-height: 44px; }
    .chat-workspace .chat-ownership-actions { flex: 1 0 100%; justify-content: flex-end; position: relative; }
    /* Con dos acciones, anclar al botÃ³n izquierdo puede sacar el menÃº
       de la pantalla; la barra completa es el anclaje compacto estable. */
    .chat-workspace .chat-ownership-actions .chat-assign-menu { position: static; }
    .chat-workspace .chat-owner-header { display: none; }
    .chat-workspace .chat-thread-identity .chat-owner-mobile { display: block; font-size: 12.5px; }
    .chat-workspace .chat-owner-mobile.agent { color: var(--chat-ai-text); }
    .chat-workspace .chat-owner-mobile.unassigned { color: var(--chat-unassigned-text); }
    .chat-workspace .chat-thread-identity:has(.chat-owner-mobile) > small:not(.chat-owner-mobile) { display: none; }
    .chat-workspace .chat-view-back { width: 44px; min-height: 44px; }
}

/* Chat P1-P10: contadores workspace solo lectura y aviso de otras bandejas.
   Los spans con [hidden] nunca se muestran: el realtime de MAIN los revela al actualizar. */
.chat-workspace .chat-counter { display: inline-flex; align-items: center; justify-content: center; flex: none; min-width: 20px; height: 20px; border-radius: 10px; padding-inline: 5px; background: var(--chat-accent); color: var(--chat-on-unread); font-size: 11.5px; font-weight: 600; }
.chat-workspace .chat-counter[hidden] { display: none; }
.chat-workspace :is(.chat-type-menu-items, .chat-list-menu-items) .chat-counter { margin-inline-start: auto; }
.chat-workspace .chat-counter-unassigned { background: transparent; border: 1px solid var(--chat-unassigned-text); color: var(--chat-unassigned-text); }
.chat-workspace .chat-inbox-menu-items .chat-inbox-option { display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; gap: 4px 8px; min-width: 0; }
.chat-workspace .chat-inbox-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-inbox-counts { display: inline-flex; align-items: center; gap: 4px; }
.chat-workspace .chat-inbox-unassigned { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.chat-workspace .chat-inbox-unassigned:has(.chat-counter[hidden]) { display: none; }
.chat-workspace .chat-inbox-unassigned small { font-size: 11.5px; }
.chat-workspace .chat-inbox-selector > :is(summary,[data-chat-menu-trigger]) > .chat-inbox-summary-identity { display: grid; gap: 2px; white-space: normal; }
.chat-workspace .chat-inbox-summary-identity > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-inbox-summary-identity > small { color: var(--chat-text-secondary); font-size: 12px; font-weight: 400; overflow-wrap: anywhere; }
.chat-workspace .chat-inbox-phones { grid-column: 2 / -1; min-width: 0; margin: 0; color: var(--chat-text-secondary); font-size: 12px; white-space: normal; overflow-wrap: anywhere; }

/* P7: confirmaciÃ³n y resultados masivos solo lectura inicial; el realtime de MAIN los conserva. */
.chat-workspace .chat-confirm { display: grid; gap: 8px; margin: 0 16px 8px; padding: 12px; border: 1px solid var(--chat-border); border-radius: 10px; background: var(--chat-active-background); color: var(--chat-text); font-size: 13.5px; }
.chat-workspace .chat-confirm strong { font-size: 14px; }
.chat-workspace .chat-confirm p { margin: 0; }
.chat-workspace .chat-confirm-names { color: var(--chat-text-secondary); font-size: 12.5px; overflow-wrap: anywhere; }
.chat-workspace .chat-confirm label { display: grid; gap: 4px; font-weight: 600; }
.chat-workspace .chat-confirm select, .chat-workspace .chat-confirm input[type="datetime-local"] { min-height: 38px; border: 1px solid var(--chat-border); border-radius: 8px; background: var(--chat-list-background); color: var(--chat-text); padding-inline: 10px; font: inherit; }
.chat-workspace .chat-confirm-actions { display: flex; gap: 8px; justify-content: flex-end; }
.chat-workspace .chat-bulk-results { display: grid; gap: 6px; margin: 0 16px 8px; padding: 12px; border: 1px solid var(--chat-border); border-radius: 10px; background: var(--chat-list-background); color: var(--chat-text); font-size: 13px; }
.chat-workspace .chat-bulk-results p { margin: 0; }
.chat-workspace .chat-bulk-results .chat-bulk-failure { color: var(--chat-unassigned-text); }
.chat-workspace .chat-bulk-results .chat-bulk-warning { color: var(--chat-ai-text); }
.chat-workspace .chat-bulk-results .chat-undo-receipt { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }

/* Observaciones UI: ellipsis de selecciÃ³n, chevron Chats como referencia,
   asignar visible, transferir en ellipsis, bÃºsqueda en hilo. Tokens del
   workspace: paridad light/dark sin colores sueltos. */
.chat-workspace .chat-select-chevron { flex: none; width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; color: var(--chat-text-secondary); }
.chat-workspace .chat-bulk-menu { margin-left: auto; flex: none; }
.chat-workspace .chat-bulk-menu > :is(summary,[data-chat-menu-trigger]) { width: 38px; min-height: 38px; justify-content: center; }
.chat-workspace .chat-bulk-menu > :is(summary,[data-chat-menu-trigger]) svg { width: 20px; height: 20px; flex: none; fill: none; stroke: currentColor; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
.chat-workspace .chat-bulk-menu-items { width: 268px; right: 0; }
.chat-workspace .chat-menu-divider { height: 1px; background: var(--chat-border); margin: 6px 10px; }
.chat-workspace .chat-assign-empty { margin: 0; padding: 8px 10px; font-size: 13px; color: var(--chat-text-secondary); }
.chat-workspace .chat-thread-menu-items .chat-transfer-menu-item { display: grid; gap: 6px; padding: 8px 10px; }
.chat-workspace .chat-thread-menu-items .chat-transfer-menu-item label { display: grid; gap: 4px; font-size: 13px; font-weight: 600; color: var(--chat-text); }
.chat-workspace .chat-thread-menu-items .chat-transfer-menu-item select { min-height: 38px; border: 1px solid var(--chat-border); border-radius: 8px; background: var(--chat-list-background); color: var(--chat-text); padding-inline: 10px; font: inherit; font-weight: 400; }
.chat-workspace .chat-search-toggle { display: grid; place-items: center; flex: none; width: 38px; height: 38px; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text); cursor: pointer; padding: 0; text-decoration: none; }
.chat-workspace .chat-search-toggle:hover { background: var(--chat-active-background); }
.chat-workspace .chat-search-toggle svg { width: 19px; height: 19px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.chat-workspace .chat-thread-search-panel { padding: 8px 16px; border-bottom: 1px solid var(--chat-border); background: var(--chat-list-background); }
.chat-workspace .chat-thread-search-form { display: flex; align-items: center; gap: 6px; }
.chat-workspace .chat-thread-search-form input[type="search"] { flex: 1; min-width: 0; min-height: 38px; border: 1px solid var(--chat-border); border-radius: 999px; background: var(--chat-thread-background); color: var(--chat-text); padding-inline: 14px; font: inherit; font-size: 14px; }
.chat-workspace .chat-thread-search-form button { position: static; inset: auto; display: grid; place-items: center; flex: none; min-width: 38px; height: 38px; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text); font-size: 16px; cursor: pointer; }
.chat-workspace .chat-thread-search-form button:hover { background: var(--chat-active-background); }
.chat-workspace .chat-thread-search-result { margin: 6px 2px 0; font-size: 12.5px; color: var(--chat-text-secondary); }
.chat-workspace .chat-thread-search-back { display: inline-flex; align-items: center; min-height: 36px; margin-top: 2px; font-size: 13px; font-weight: 600; color: var(--chat-accent-text); }
.chat-workspace .chat-thread-search-form .chat-search-clear { display: grid; place-items: center; flex: none; min-width: 38px; min-height: 38px; border-radius: 50%; color: var(--chat-text); text-decoration: none; font-size: 16px; }
.chat-workspace .chat-thread-search-form .chat-search-clear:hover { background: var(--chat-active-background); }

/* Solo simulaciones: identidad y responsable comparten un enlace, sin controles
   anidados. En estrecho el estado conserva el borde derecho y el subtÃ­tulo. */
.chat-workspace .chat-simulation-identity { gap: 8px; }
.chat-workspace .chat-simulation-owner { margin-inline-start: auto; max-width: 45%; height: auto; min-height: 28px; padding: 4px 8px; font-size: 12.5px; white-space: normal; overflow-wrap: anywhere; }

/* Overrides narrow/coarse DESPUÃ‰S de las bases nuevas: a igual especificidad
   gana el orden y el mÃ³vil conserva 44px. Mismo breakpoint y tokens aprobados,
   sin rediseÃ±o. Solo controles touch nuevos (policy mÃ³vil 44px); el tag kind
   de primera fila (11.5px, no touch) no se eleva. */
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .chat-simulation-identity { display: grid; grid-template-columns: 40px minmax(0, 1fr) 18px; gap: 4px 8px; }
    .chat-workspace .chat-simulation-identity .chat-thread-avatar { grid-column: 1; grid-row: 1 / 3; }
    .chat-workspace .chat-simulation-identity .chat-thread-identity { grid-column: 2; grid-row: 1; }
    .chat-workspace .chat-simulation-identity .chat-identity-disclosure { grid-column: 3; grid-row: 1; }
    .chat-workspace .chat-simulation-owner { grid-column: 2 / 4; grid-row: 2; justify-self: end; max-width: 100%; font-size: 11.5px; min-height: 20px; padding: 2px 6px; }
    .chat-workspace .chat-bulk-menu > :is(summary,[data-chat-menu-trigger]) { min-height: 44px; min-width: 44px; }
    .chat-workspace .chat-search-toggle { width: 44px; height: 44px; }
    .chat-workspace .chat-thread-search-form input[type="search"] { min-height: 44px; font-size: 16px; }
    .chat-workspace .chat-thread-search-form button { min-width: 44px; height: 44px; }
    .chat-workspace .chat-thread-search-form .chat-search-clear { min-width: 44px; min-height: 44px; }
    .chat-workspace .chat-thread-search-back { min-height: 44px; }
}

/* R2: exclusivamente /portal/chat. Los datasets son el contrato del helper
   global existente; este stylesheet nunca introduce comportamiento del Dock. */
.chat-workspace .chat-r2-icon { width: 18px; height: 18px; flex: none; vertical-align: middle; }
.chat-workspace .chat-search-pane input { padding-inline: 44px 40px; }
.chat-workspace .chat-search-pane .chat-search-submit { left: 0; right: auto; inset-inline: 0 auto; display: grid; place-items: center; }
.chat-workspace .chat-filters-panel:not([open]) { display: none; }
.chat-workspace .chat-row-wrap > .chat-row { padding-right: 12px; }
.chat-workspace .chat-row-menu { top: auto; bottom: 6px; right: 8px; }
.chat-workspace .chat-row-menu > :is(summary,[data-chat-menu-trigger]) { width: 32px; height: 32px; background: var(--chat-list-background); border-radius: 50%; }
.chat-workspace .chat-row-menu .chat-r2-icon { width: 16px; height: 16px; }
.chat-workspace .chat-row-wrap:has(.chat-row.active) .chat-row-menu > :is(summary,[data-chat-menu-trigger]) { background: var(--chat-active-background); }
/* R5.1 (R5-4, C17 1.21): como WhatsApp, el número de no leídos va a la derecha, bajo la hora. La ⌄ no reserva lugar: al
   pasar el mouse (o con el menú abierto o enfocado) aparece a la derecha del número y el número se corre su ancho; la hora no
   se mueve. En táctil no hay ⌄ (.no-hover) y el número queda siempre a la derecha. */
.chat-workspace .chat-row-wrap .chat-row-bottom { padding-right: 0; }
:root:not(.no-hover) .chat-workspace .chat-row-wrap:has(.chat-row-menu:is(:focus-within, [open])) .chat-row-bottom { padding-right: 32px; }
@media (hover: hover) { :root:not(.no-hover) .chat-workspace .chat-row-wrap:has(.chat-row-menu):hover .chat-row-bottom { padding-right: 32px; } }
.chat-workspace .chat-row-bottom { position: relative; }
.chat-workspace .chat-row-bottom .chat-unread-dot { margin-inline-start: auto; }
.chat-workspace .chat-owner-pill .chat-r2-icon { width: 14px; height: 14px; }
.chat-workspace .chat-owner-avatar { display: inline-grid; place-items: center; flex: 0 0 14px; width: 14px; height: 14px; border-radius: 50%; background: oklch(.93 .035 var(--chat-avatar-hue,50)); color: oklch(.42 .08 var(--chat-avatar-hue,50)); font-size: 7px; font-weight: 700; text-transform: uppercase; line-height: 1; }
.chat-workspace :is(.chat-owner-header,.chat-simulation-owner) .chat-owner-avatar { flex-basis: 18px; width: 18px; height: 18px; font-size: 8px; }
.chat-workspace .chat-owner-header .chat-r2-icon { width: 14px; height: 14px; }
.chat-workspace .chat-thread-identity { min-width: 0; }
.chat-workspace .chat-thread-identity > small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.chat-workspace .chat-contact-trigger { cursor: pointer; border-radius: 10px; }
.chat-workspace .chat-contact-trigger:hover { background: var(--chat-search-background); }
.chat-workspace .chat-menu-count { margin-inline-start: auto; color: var(--chat-text-secondary); font-size: 12.5px; font-weight: 400; }
.chat-workspace :is(.chat-list-menu-items,.chat-thread-menu-items) > :is(a,button) { display: flex; align-items: center; gap: 12px; }
.chat-workspace :is(.chat-list-menu-items,.chat-thread-menu-items) button:disabled { opacity: .5; cursor: not-allowed; }
.chat-workspace .chat-assignment-section { display: block; padding: 8px 10px 4px; text-transform: uppercase; color: var(--chat-text-tertiary); font-size: 11px; font-weight: 600; letter-spacing: .04em; }
.chat-workspace .chat-assignee-avatar { --chat-avatar-background: oklch(.93 .035 var(--chat-avatar-hue,50)); --chat-avatar-text: oklch(.42 .08 var(--chat-avatar-hue,50)); width: 26px; height: 26px; font-size: 10px; font-weight: 700; background: var(--chat-avatar-background); color: var(--chat-avatar-text); }
.chat-workspace .chat-assignee-avatar.agent, .chat-workspace .chat-ai-badge { background: var(--chat-ai-soft); color: var(--chat-ai-text); }
.chat-workspace .chat-ai-badge { border-radius: 4px; padding: 2px 4px; font-size: 10.5px; font-weight: 600; }
.chat-workspace .chat-assignee-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-assign-menu-items :is(button,label) { gap: 8px; }
.chat-workspace .chat-assign-menu-items small { flex: none; white-space: nowrap; color: var(--chat-text-secondary); font-size: 11.5px; }
.chat-workspace .chat-assign-header .chat-assign-menu-items { top: 100%; bottom: auto; right: 0; }
.chat-workspace .chat-ownership-notice > .chat-r2-icon { width: 20px; height: 20px; color: var(--chat-text-secondary); }
.chat-workspace .chat-ownership-notice.agent > .chat-r2-icon { color: var(--chat-ai-text); }
.chat-workspace .chat-ownership-notice:is(.unassigned,.activation-failed) { background: var(--chat-unassigned-soft); border-color: var(--chat-unassigned-soft); color: var(--chat-unassigned-text); }
.chat-workspace .chat-ownership-notice:is(.unassigned,.activation-failed) > .chat-r2-icon { color: inherit; }
.chat-workspace .chat-inbox-selector > :is(summary,[data-chat-menu-trigger]) > span.chat-inbox-avatar:first-child { flex: 0 0 32px; width: 32px; height: 32px; overflow: visible; }
.chat-workspace .chat-inbox-selector > :is(summary,[data-chat-menu-trigger]) > .chat-inbox-summary-identity { flex: 1; min-width: 0; }
.chat-workspace .chat-inbox-summary-identity > small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; overflow-wrap: normal; }
.chat-workspace .chat-inbox-option .chat-inbox-avatar { grid-row: 1 / 4; }
/* CH7 (propuesta): la bandeja actual lleva ✓ y su fila tiene el tinte de la opción elegida. */
.chat-workspace .chat-inbox-option[aria-current="true"] { background: var(--chat-active-background); }
/* Texto solo para el lector de pantalla (p. ej., qué significa el número de otras bandejas). */
.chat-workspace .chat-visually-hidden { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.chat-workspace .chat-inbox-option .chat-inbox-counts { grid-column: 3; grid-row: 1 / 4; }
.chat-workspace .chat-inbox-phones { grid-column: 2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* R5.1 (R5-5, C17 1.21): «N sin asignar» en el ámbar de su etiqueta, como en la fila y en la etiqueta del chat; el rojo
   (y el terracota, que se lee como rojo) quedan para los errores. La guarda check_chat_r5 lo comprueba. */
.chat-workspace .chat-inbox-unassigned { grid-column: 2; color: var(--chat-unassigned-text); font-size: 11.5px; }
.chat-workspace .chat-connection-notice { display: flex; align-items: center; gap: 6px; flex: none; min-height: 34px; margin: 8px 12px 0; padding: 4px 10px; border-radius: 10px; background: var(--chat-unassigned-soft); color: var(--chat-unassigned-text); font-size: 12.5px; font-weight: 600; }
.chat-workspace .chat-connection-notice .chat-r2-icon { width: 14px; height: 14px; }
/* Conversación de un cliente sumada por Agentes IA en Mis conversaciones: se supervisa, no es propia. */
.chat-workspace .chat-row-supervised { display: inline-flex; flex: none; margin-left: auto; color: var(--chat-text-tertiary); }
.chat-workspace .chat-row-supervised .chat-r2-icon { width: 14px; height: 14px; }
.chat-workspace .chat-row-supervised + time { margin-left: 0; }
/* Sin asignar: primera fila de la lista (tinte ocre del chat) que sube con ella al desplazar, como «Archivados» en
   WhatsApp; ya no queda fija ni tapa chats (decisión del dueño, 26-10-2026). Abre la cola existente. */
.chat-workspace .chat-unassigned-entry { display: flex; align-items: center; gap: 8px; width: calc(100% - 16px); min-height: 44px; margin: 4px 8px; padding: 0 12px; border: 0; border-radius: 12px; background: var(--chat-unassigned-soft); color: var(--chat-unassigned-text); font: inherit; font-size: 14px; font-weight: 600; text-align: start; cursor: pointer; }
@media (hover: hover) { .chat-workspace .chat-unassigned-entry:hover { filter: brightness(.98); } }
.chat-workspace .chat-unassigned-entry:focus-visible { outline: 2px solid var(--chat-accent); outline-offset: 2px; }
.chat-workspace .chat-unassigned-entry-icon { display: inline-flex; width: 28px; justify-content: center; }
.chat-workspace .chat-unassigned-entry .chat-r2-icon { width: 16px; height: 16px; flex: none; }
.chat-workspace .chat-unassigned-entry-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-unassigned-entry-count { flex: none; min-width: 20px; text-align: end; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.chat-workspace .chat-connection-mobile { display: none; }
.chat-workspace .feedback-toast { bottom: var(--chat-toast-bottom,100px); left: var(--chat-toast-left,50vw); transform: translateX(-50%); }
.chat-workspace .chat-scheduled-counter { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; padding: 4px 8px; border-radius: 999px; background: var(--chat-neutral-soft); color: var(--chat-text-secondary); white-space: nowrap; }
.chat-workspace .chat-scheduled-counter .chat-r2-icon { width: 14px; height: 14px; }
.chat-workspace .chat-schedule-composer { display: grid; place-items: center; width: 38px; min-width: 38px; height: 38px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text-secondary); font: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.chat-workspace .chat-schedule-composer .chat-r2-icon { width: 19px; height: 19px; }
.chat-workspace .conversation-viewport { position: relative; }
.chat-workspace .chat-r2-schedule-panel { position: absolute; z-index: 25; left: 12px; right: 12px; bottom: 80px; max-height: calc(100% - 92px); overflow-y: auto; border-radius: 16px; padding: 16px; background: var(--chat-list-background); box-shadow: 0 12px 32px rgba(42,36,32,.14); color: var(--chat-text); }
.chat-workspace .chat-r2-schedule-panel > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.chat-workspace .chat-r2-schedule-panel h2 { margin: 0; font-size: 16px; font-weight: 600; }
.chat-workspace .chat-r2-schedule-panel > header > a { display: grid; place-items: center; width: 36px; height: 36px; color: inherit; border-radius: 50%; }
.chat-workspace .chat-r2-schedule-panel textarea { --control-background: #F6F1EC; width: 100%; min-height: 90px; border: 0; border-radius: 12px; padding: 12px; background: var(--control-background); color: var(--chat-text); font: inherit; resize: vertical; }
:root[data-theme="dark"] .chat-workspace .chat-r2-schedule-panel textarea { --control-background: var(--chat-search-background); }
.chat-workspace .chat-r2-schedule-panel .field { margin: 10px 0; }
.chat-workspace .chat-r2-schedule-panel label, .chat-workspace .chat-r2-schedule-panel legend { font-size: 13px; }
.chat-workspace .chat-r2-schedule-panel fieldset { min-width: 0; border: 0; padding: 0; margin: 12px 0; }
.chat-workspace .chat-r2-schedule-panel :is(.feedback-field-error,.field-error,.chat-r2-field-error) { color: oklch(.5 .17 25); font-size: 12px; }
.chat-workspace .chat-r2-date-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.chat-workspace .chat-r2-date-chips .chip { display: inline-flex; align-items: center; cursor: pointer; border: 1px solid var(--chat-chip-border); border-radius: 999px; padding: 7px 10px; min-height: 36px; background: var(--chat-list-background); color: var(--chat-text-secondary); }
.chat-workspace .chat-r2-date-chips .chip:has(input:checked) { background: var(--chat-accent-soft); border-color: var(--chat-accent-border); color: var(--chat-accent-text); }
.chat-workspace .chat-r2-date-chips input, .chat-workspace .chat-r2-day input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.chat-workspace :is(.chip,.chat-r2-day):has(input:focus-visible) { outline: 2px solid var(--chat-accent); outline-offset: 2px; }
.chat-workspace .chat-r2-select { position: relative; }
.chat-workspace .chat-r2-select > :is(summary,[data-chat-menu-trigger]) { display: flex; align-items: center; justify-content: space-between; gap: 8px; list-style: none; cursor: pointer; min-height: 38px; padding: 8px 10px; border: 1px solid var(--chat-border); border-radius: 10px; font-size: 13px; }
.chat-workspace .chat-r2-select > :is(summary,[data-chat-menu-trigger])::-webkit-details-marker, .chat-workspace .chat-r2-calendar > :is(summary,[data-chat-menu-trigger])::-webkit-details-marker { display: none; }
.chat-workspace .chat-r2-select > div { display: grid; gap: 2px; max-height: 240px; overflow: auto; margin-top: 4px; padding: 6px; background: var(--chat-list-background); border: 1px solid var(--chat-border); border-radius: 10px; }
.chat-workspace .chat-r2-select label { display: flex; align-items: center; gap: 8px; padding: 8px; min-height: 36px; cursor: pointer; }
.chat-workspace .chat-r2-select input { accent-color: var(--chat-accent); }
.chat-workspace .chat-r2-schedule-panel footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 14px; }
.chat-workspace .chat-r2-zone { margin-right: auto; flex: 1 1 150px; min-width: 0; }
.chat-workspace .chat-r2-zone > :is(summary,[data-chat-menu-trigger]) { border: 0; color: var(--chat-text-secondary); padding-inline: 0; justify-content: flex-start; }
.chat-workspace .chat-r2-zone > div { max-width: 100%; }
.chat-workspace .chat-r2-calendar > :is(summary,[data-chat-menu-trigger]) { display: flex; align-items: center; gap: 8px; list-style: none; min-height: 38px; font-size: 13px; cursor: pointer; }
.chat-workspace .chat-r2-calendar-body { border: 1px solid var(--chat-border); border-radius: 12px; padding: 8px; max-width: 320px; }
.chat-workspace .chat-r2-calendar-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.chat-workspace .chat-r2-calendar-head button { display: grid; place-items: center; width: 36px; height: 36px; border: 0; border-radius: 50%; background: transparent; color: inherit; }
.chat-workspace .chat-r2-calendar-head strong { font-size: 13px; font-weight: 600; text-transform: capitalize; }
.chat-workspace .chat-r2-calendar-grid { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 2px; }
.chat-workspace .chat-r2-weekday { font-size: 11px; color: var(--chat-text-tertiary); text-align: center; padding: 6px 0; }
.chat-workspace .chat-r2-day { display: grid; place-items: center; height: 36px; border-radius: 8px; cursor: pointer; }
.chat-workspace .chat-r2-day.outside { color: var(--chat-text-tertiary); }
.chat-workspace .chat-r2-day:has(input:checked) { background: var(--chat-accent); color: var(--chat-on-unread); }
.chat-workspace .chat-r2-time { display: flex; align-items: end; gap: 6px; }
.chat-workspace .chat-r2-time legend { margin-bottom: 6px; }
.chat-workspace .chat-r2-time label { display: grid; gap: 4px; }
.chat-workspace .chat-r2-time input { max-width: 72px; min-height: 36px; border-radius: 8px; border: 1px solid var(--chat-border); background: var(--chat-list-background); color: inherit; padding: 6px; }
.chat-workspace .chat-r2-recurrence-custom { display: none; gap: 8px; }
.chat-workspace .chat-r2-schedule-panel form:has(input[name="ScheduleForm.Repeat"][value="CUSTOM"]:checked) .chat-r2-recurrence-custom { display: grid; }
.chat-workspace .chat-r2-schedule-panel form:has(input[name="ScheduleForm.Repeat"][value="NONE"]:checked) .chat-r2-recurrence-end { display: none; }
.chat-workspace .chat-r2-recurrence-custom fieldset { display: flex; flex-wrap: wrap; gap: 8px; }
.chat-workspace .chat-r2-recurrence-custom label { display: inline-flex; align-items: center; gap: 6px; }
.chat-workspace .chat-r2-preview { border: 0; background: transparent; color: var(--chat-text-secondary); font: inherit; font-size: 12px; min-height: 36px; text-align: start; padding: 8px; }
:root[data-theme="dark"] .chat-workspace :is(.chat-row-avatar,.chat-thread-avatar,.chat-assignee-avatar):not(.agent) { background: oklch(.32 .035 var(--chat-avatar-hue,50)); color: oklch(.85 .05 var(--chat-avatar-hue,50)); }
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .chat-connection-mobile:not([hidden]) { display: flex; margin-top: 4px; }
    .chat-workspace .chat-search-toggle { display: none; }
    .chat-workspace .chat-owner-mobile:not([hidden]) { align-items: center; gap: 4px; }
    .chat-workspace .chat-owner-mobile .chat-r2-icon { width: 14px; height: 14px; }
    .chat-workspace .chat-inbox-selector > :is(summary,[data-chat-menu-trigger]) { flex-wrap: wrap; }
    .chat-workspace .chat-r2-schedule-panel { left: 12px; right: 12px; padding: 12px; bottom: 80px; max-height: calc(100% - 88px); }
    .chat-workspace .chat-r2-schedule-panel textarea { font-size: 16px; }
    .chat-workspace .chat-r2-schedule-panel footer .button, .chat-workspace .chat-r2-select label, .chat-workspace .chat-r2-date-chips .chip { min-height: 44px; }
    .chat-workspace .chat-r2-calendar-head button, .chat-workspace .chat-schedule-composer { min-width: 44px; min-height: 44px; }
    .chat-workspace .chat-r2-zone { flex-basis: 100%; }
    .chat-workspace .chat-r2-day { min-height: 40px; }
}
@media (prefers-reduced-motion: reduce) { .chat-workspace .chat-row { animation: none; transition: none; } }
.chat-workspace .chat-r2-sender-icon { width: 12px; height: 12px; }
.chat-workspace .chat-row-delivery { display: inline-flex; vertical-align: middle; margin-right: 4px; color: var(--chat-text-secondary); }
.chat-workspace .chat-row-delivery .chat-r2-icon { width: 14px; height: 14px; }
.chat-workspace .chat-row-delivery.read { color: var(--chat-accent); }
.chat-workspace .msg .chat-sender-ai { color: var(--chat-ai-text); }
.chat-workspace .chat-r2-custom-date { display: none; margin-top: 8px; }
.chat-workspace .chat-r2-when:has([data-chat-date-custom]:checked) .chat-r2-custom-date { display: block; }
.chat-workspace .chat-detail { position: relative; }
.chat-workspace .chat-r2-snoozed { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; align-self: start; margin: 8px 12px; padding: 4px 10px; border-radius: 10px; background: var(--chat-unassigned-soft); color: var(--chat-unassigned-text); font-size: 12.5px; }
.chat-workspace .chat-r2-snoozed button { border: 0; background: transparent; color: inherit; min-height: 36px; padding: 4px 8px; font: inherit; text-decoration: underline; cursor: pointer; }
.chat-workspace .chat-r2-snoozed .chat-r2-icon { width: 14px; height: 14px; }
.chat-workspace .chat-bulk-submenu > :is(summary,[data-chat-menu-trigger]) { display: flex; align-items: center; gap: 12px; min-height: 40px; padding: 8px 10px; border-radius: 10px; list-style: none; cursor: pointer; font-size: 14px; }
.chat-workspace .chat-bulk-submenu > :is(summary,[data-chat-menu-trigger])::-webkit-details-marker { display: none; }
.chat-workspace .chat-bulk-submenu > :is(summary,[data-chat-menu-trigger]) .chat-r2-icon:last-child { margin-left: auto; }
.chat-workspace .chat-bulk-submenu > div { padding-left: 29px; }
.chat-workspace .chat-bulk-submenu[open] > :is(summary,[data-chat-menu-trigger]) .chat-r2-icon:last-child { transform: rotate(90deg); }
.chat-workspace .chat-bulk-menu-items > button > .chat-r2-icon:last-child:not(:first-child) { margin-inline-start: auto; }
.chat-workspace .chat-bulk-menu-items .chat-r2-icon { width: 17px; height: 17px; }
.chat-workspace .chat-bulk-assign-picker > button { display: flex; align-items: center; gap: 8px; width: 100%; min-height: 40px; border: 0; border-radius: 10px; padding: 8px; background: transparent; color: var(--chat-text); font: inherit; text-align: left; cursor: pointer; }
.chat-workspace .chat-bulk-assign-picker > button:hover { background: var(--chat-active-background); }
.chat-workspace .chat-bulk-assign-picker > button small { flex: none; font-size: 11.5px; color: var(--chat-text-secondary); white-space: nowrap; }
.chat-workspace .feedback-toast:has(.chat-toast-undo) { pointer-events: auto; display: flex; align-items: center; gap: 8px; }
.chat-workspace .chat-toast-undo { display: flex; gap: 4px; }
.chat-workspace .chat-toast-undo button { color: inherit; font-size: 12.5px; min-height: 36px; padding: 4px 8px; }
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .chat-r2-snoozed button, .chat-workspace .chat-bulk-submenu > :is(summary,[data-chat-menu-trigger]), .chat-workspace .chat-bulk-submenu button, .chat-workspace .chat-bulk-assign-picker > button { min-height: 44px; }
}

/* R3: override the more specific shared outgoing rule, never the Dock. */
.chat-workspace .msg:is(.out,.in,.ai) { border: 0; box-shadow: 0 1px 1px rgba(42,36,32,.07); }
.chat-workspace .msg :is(.chat-sender-ai-deleted,.chat-sender-ai[data-chat-ai-deleted="true"]) { color: #80756D; }
.chat-workspace :is(.chat-row,.chat-thread-identity) .chat-simulation-tag { display: inline-flex; align-items: center; height: 18px; padding: 0 4px; border: 0; border-radius: 4px; background: #F0E8E1; color: #6B615A; font-size: 10.5px; font-weight: 500; vertical-align: middle; }
.chat-workspace .chat-thread-identity strong .chat-simulation-tag { margin-inline-start: 8px; }
:root[data-theme="dark"] .chat-workspace .chat-simulation-tag { background: var(--chat-neutral-soft); color: var(--chat-text-secondary); }
:root[data-theme="dark"] .chat-workspace .chat-owner-avatar { background: oklch(.32 .035 var(--chat-avatar-hue,50)); color: oklch(.85 .05 var(--chat-avatar-hue,50)); }
.chat-workspace .human-composer form:has(.chat-schedule-composer) { grid-template-columns: minmax(0,1fr) auto auto; align-items: end; }
.chat-workspace .human-composer .chat-schedule-composer { grid-column: 2; grid-row: 1; }
.chat-workspace .human-composer form:has(.chat-schedule-composer) .chat-send-button { grid-column: 3; }
.chat-workspace .human-composer form:has(.composer-quote) .chat-schedule-composer { grid-row: 2; }
.chat-workspace .human-composer textarea { max-height: calc(5 * 22px + 18px); }
.chat-workspace .conversation-viewport:has([data-chat-schedule-panel]) .human-composer { visibility: hidden; pointer-events: none; }
/* Disabled must remain visibly unavailable, including on hover and offline. R5.1 final (K.4, como color-controls.css): la ×
   de una etiqueta (C15) define su propio desactivado en su pieza y queda fuera; :where no cambia el peso de la regla. */
.chat-workspace :is(button,input,textarea,select,a,:is(summary,[data-chat-menu-trigger])):is(:disabled,[aria-disabled="true"]):not(:where(.c1-tag-remove)),
.chat-workspace :is(button,input,textarea,select,a,:is(summary,[data-chat-menu-trigger])):is(:disabled,[aria-disabled="true"]):not(:where(.c1-tag-remove)):hover { background: #D9CFC6; color: #fff; border-color: #D9CFC6; box-shadow: none; opacity: 1; cursor: not-allowed; }
.chat-workspace .human-composer .chat-send-button:is(:disabled,[aria-disabled="true"]),
.chat-workspace .human-composer .chat-send-button:is(:disabled,[aria-disabled="true"]):hover { background: #D9CFC6; color: #fff; border-color: #D9CFC6; box-shadow: none; opacity: 1; cursor: not-allowed; }
:root[data-theme="dark"] .chat-workspace :is(button,input,textarea,select,a,:is(summary,[data-chat-menu-trigger])):is(:disabled,[aria-disabled="true"]):not(:where(.c1-tag-remove)),
:root[data-theme="dark"] .chat-workspace :is(button,input,textarea,select,a,:is(summary,[data-chat-menu-trigger])):is(:disabled,[aria-disabled="true"]):not(:where(.c1-tag-remove)):hover,
:root[data-theme="dark"] .chat-workspace .human-composer .chat-send-button:is(:disabled,[aria-disabled="true"]),
:root[data-theme="dark"] .chat-workspace .human-composer .chat-send-button:is(:disabled,[aria-disabled="true"]):hover { background: oklch(.35 .01 60); color: oklch(.7 .01 60); border-color: oklch(.35 .01 60); }

/* ===== Ronda 4: Ã­tems B y C. Solo el chat completo (.chat-workspace), nunca el Dock. ===== */

/* B3: avisos con dos botones en mÃ³vil: una sola fila, mismo ancho (50 % menos medio gap), nunca apilados. */
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .chat-ownership-actions.has-several { flex-wrap: nowrap; }
    .chat-workspace .chat-ownership-actions.has-several > * { flex: 0 0 calc(50% - 4px); min-width: 0; }
    .chat-workspace .chat-ownership-actions.has-several > .chat-assign-menu > :is(summary,[data-chat-menu-trigger]),
    .chat-workspace .chat-ownership-actions.has-several > .button { width: 100%; justify-content: center; padding-inline: 12px; font-size: 14px; white-space: nowrap; }
}

/* B4: burbuja como WhatsApp: texto 14/1.42, padding 6 10 7, chevron dentro arriba a la derecha sobre un
   degradado del color de la burbuja, hora 11 px abajo a la derecha alineada con la Ãºltima lÃ­nea. */
.chat-workspace .msg { padding: 6px 10px 7px; max-width: min(560px, 78%); color: var(--chat-text); font-size: 14px; line-height: 1.42; }
.chat-workspace .msg.out { --msg-bg: var(--chat-own-background); }
.chat-workspace .msg.in { --msg-bg: var(--chat-list-background); }
.chat-workspace .chat > .msg.msg-run { margin-top: -6px; }
.chat-workspace .msg-menu { top: 0; right: 0; }
.chat-workspace .msg-menu > :is(summary,[data-chat-menu-trigger]) { position: relative; display: block; width: 40px; height: 24px; min-width: 0; min-height: 0; padding: 0; border: 0; border-radius: 0 10px 0 0; background: linear-gradient(to right, transparent, var(--msg-bg) 45%); box-shadow: none; color: var(--chat-text-tertiary); }
.chat-workspace .msg-menu > :is(summary,[data-chat-menu-trigger]) .chat-r2-icon { position: absolute; top: 3px; right: 4px; width: 18px; height: 18px; }
.chat-workspace .msg-menu > :is(summary,[data-chat-menu-trigger]):hover { outline: 0; color: var(--chat-text-secondary); }
.chat-workspace .msg-menu > :is(summary,[data-chat-menu-trigger]):focus-visible { outline: 2px solid var(--chat-accent); outline-offset: -2px; }
.no-hover .chat-workspace .msg-menu > :is(summary,[data-chat-menu-trigger]) { display: none; }
.no-hover .chat-workspace .msg { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.chat-workspace .msg-menu-items { right: 4px; top: calc(100% + 2px); min-width: 200px; padding: 6px; gap: 2px; border: 1px solid var(--chat-border); border-radius: var(--chat-menu-radius); background: var(--chat-list-background); box-shadow: var(--chat-menu-shadow); }
.chat-workspace .msg-menu.menu-up .msg-menu-items { top: auto; bottom: calc(100% + 2px); }
.chat-workspace .msg-menu-items > :is(a, button), .chat-workspace .msg-info > :is(summary,[data-chat-menu-trigger]) { display: flex; align-items: center; gap: 12px; min-height: 40px; padding: 8px 10px; border-radius: 10px; color: var(--chat-text); font-size: 14px; list-style: none; }
.chat-workspace .msg-info > :is(summary,[data-chat-menu-trigger])::-webkit-details-marker { display: none; }
.chat-workspace .msg-menu-items > :is(a, button):hover, .chat-workspace .msg-info > :is(summary,[data-chat-menu-trigger]):hover { background: var(--chat-active-background); outline: 0; }
.chat-workspace .msg-info > div { padding: 2px 10px 8px 40px; color: var(--chat-text-secondary); }
.chat-workspace .msg-menu-items .chat-menu-divider { margin: 4px 10px; }
/* La hora y los vistos quedan por encima del degradado del chevron y abajo a la derecha, 5 px por debajo del texto
   (como WhatsApp): en burbujas de una lÃ­nea el chevron queda arriba con aire y nunca los tapa. */
.chat-workspace .msg-meta { z-index: 3; bottom: -5px; gap: 3px; color: var(--chat-text-tertiary); font-family: var(--font); font-size: 11px; font-weight: 400; font-style: normal; line-height: 1.42; }
.chat-workspace .msg-delivery-check { display: inline-flex; align-self: center; }
.chat-workspace .msg-delivery-check .chat-r2-icon { width: 15px; height: 15px; }
/* Espaciador invisible al final del texto: mismo contenido de la hora (y vistos 3 + 15 px) mÃ¡s 8 px de aire. */
.chat-workspace .chat .msg-body [data-msg-text] .msg-last::after {
    content: var(--msg-meta-content);
    display: inline-block;
    width: auto;
    height: auto;
    padding-inline: 8px 0;
    font-family: var(--font);
    font-size: 11px;
    font-weight: 400;
    font-style: normal;
    font-variant-numeric: tabular-nums;
    line-height: 1;
    white-space: nowrap;
    visibility: hidden;
}
.chat-workspace .chat .msg-body.has-delivery-check [data-msg-text] .msg-last::after { padding-inline-end: 18px; }
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .msg { max-width: 85%; }
}

/* B5: toda cita muestra el autor, tambiÃ©n en los chats internos de a dos. */
.chat-workspace .chat-detail.kind-direct .msg-quote > .who { position: static; width: auto; height: auto; overflow: visible; clip-path: none; white-space: normal; }

/* B6: Ã— para limpiar dentro del buscador (Ã­cono 16 px, Ã¡rea 32 px); sin la Ã— nativa del navegador. */
.chat-workspace .chat-search-pane input::-webkit-search-cancel-button,
.chat-workspace .chat-search-pane input::-webkit-search-decoration { -webkit-appearance: none; appearance: none; display: none; }
.chat-workspace .chat-search-x { position: absolute; top: 50%; right: 4px; transform: translateY(-50%); display: grid; place-items: center; width: 32px; height: 32px; min-height: 0; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text-tertiary); cursor: pointer; }
.chat-workspace .chat-search-x .chat-r2-icon { width: 16px; height: 16px; }
.chat-workspace .chat-search-x:hover { background: var(--chat-active-background); }

/* B7: hora con un solo rÃ³tulo y dos campos separados por ":"; dÃ­as pasados en gris sin clic; hoy marcado. */
.chat-workspace .chat-r2-time { display: flex; align-items: center; gap: 6px; margin: 12px 0 0; padding: 0; border: 0; }
.chat-workspace .chat-r2-time legend { margin: 0 0 6px; padding: 0; color: var(--chat-text); font-size: 13px; font-weight: 600; }
.chat-workspace .chat-r2-time input { --control-background: #F6F1EC; box-sizing: border-box; width: 56px; max-width: 56px; height: 40px; min-height: 40px; padding: 0 8px; border: 0; border-radius: 10px; background: var(--control-background); color: var(--chat-text); font: inherit; font-size: 15px; font-variant-numeric: tabular-nums; text-align: center; }
.chat-workspace .chat-r2-time input:focus, .chat-workspace .chat-r2-time input:focus-visible { outline: 0; box-shadow: 0 0 0 2px var(--chat-accent); }
.chat-workspace .chat-r2-time > span { color: var(--chat-text-secondary); font-weight: 600; }
:root[data-theme="dark"] .chat-workspace .chat-r2-time input { --control-background: var(--surface-muted); }
.chat-workspace .chat-r2-day.past { color: #B9AEA5; cursor: default; pointer-events: none; }
.chat-workspace .chat-r2-day.past:hover { background: transparent; }
:root[data-theme="dark"] .chat-workspace .chat-r2-day.past { color: color-mix(in srgb, var(--text-muted) 55%, transparent); }
.chat-workspace .chat-r2-day.today:not(:has(input:checked)) { box-shadow: inset 0 0 0 1.5px var(--chat-accent); }
/* B7/C3: el panel se ancla abajo, en el lugar del cuadro de texto, y hace scroll interno si no entra. */
.chat-workspace .chat-r2-schedule-panel { bottom: 14px; max-height: calc(100% - 24px); overflow-y: auto; overscroll-behavior: contain; }
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .chat-r2-schedule-panel { bottom: calc(14px + env(safe-area-inset-bottom, 0px)); max-height: calc(100% - 24px); }
}
/* C3: CuÃ¡ndo, Mensaje y Repetir con el mismo peso, tamaÃ±o y sangrÃ­a. */
.chat-workspace .chat-r2-schedule-panel :is(.field > label, .chat-r2-when > legend) { display: block; margin: 0 0 6px; padding: 0; color: var(--chat-text); font-size: 13px; font-weight: 600; }

/* B8: en todos los menÃºs del chat, Ã­cono en caja fija de 18 Ã— 18 px y 12 px hasta el texto. */
.chat-workspace :is(.chat-thread-menu-items, .chat-list-menu-items, .chat-bulk-menu-items, .msg-menu-items) :is(a, button, :is(summary,[data-chat-menu-trigger])) { gap: 12px; }
.chat-workspace :is(.chat-thread-menu-items, .chat-list-menu-items, .chat-bulk-menu-items, .msg-menu-items) :is(a, button, :is(summary,[data-chat-menu-trigger])) > svg:first-child { flex: 0 0 18px; width: 18px; height: 18px; }

/* B9: panel de detalle fijo como cuarta columna o superpuesto en escritorio (mÃ³vil sin cambios). */
.chat-workspace .chat-detail-pane { position: relative; }
.chat-workspace .chat-detail-pane.context-inline > .chat-context-surface { width: 320px; background: var(--chat-list-background); border-left: 1px solid var(--chat-border); }
.chat-workspace .chat-detail-pane.context-overlay > .chat-detail { display: flex; }
.chat-workspace .chat-detail-pane.context-overlay > .chat-context-surface { position: absolute; z-index: 30; top: 0; right: 0; bottom: 0; width: 320px; height: auto; background: var(--chat-list-background); border-left: 1px solid var(--chat-border); box-shadow: 0 12px 32px rgba(42,36,32,.14); }
.chat-workspace .context-overlay .chat-context-head { display: flex; justify-content: space-between; gap: var(--space-2); }
.chat-workspace .context-overlay .chat-context-head h2 { order: -1; }
.chat-workspace .context-overlay .chat-context-return { width: 44px; padding: 0; justify-content: center; }
.chat-workspace .context-overlay .chat-context-close-icon { display: block; }
.chat-workspace .context-overlay :is(.chat-context-back-icon, .chat-context-back-text) { display: none; }
/* Con el panel fijo abierto por defecto, el nombre del encabezado no queda resaltado de forma permanente. */
.chat-workspace .chat-detail-pane.context-inline .chat-contact-trigger[aria-expanded="true"]:not(:hover) { background: transparent; }

/* C1: 4 px entre el Ã­cono y el nombre en la firma de la IA (tambiÃ©n "Empleado IA eliminado"). */
.chat-workspace .msg .who.chat-sender-ai:not([hidden]) { display: inline-flex; align-items: center; gap: 4px; }

/* C2: 6 px entre notas del historial seguidas y 12 px entre una nota y una burbuja (fechas sin cambio). */
.chat-workspace .chat > .chat-workspace-system-note[data-timeline] { margin-block: 0; }
.chat-workspace .chat > .chat-workspace-system-note[data-timeline] + .chat-workspace-system-note[data-timeline] { margin-top: -2px; }
.chat-workspace .chat > .msg + .chat-workspace-system-note[data-timeline],
.chat-workspace .chat > .chat-workspace-system-note[data-timeline] + .msg { margin-top: 4px; }
.chat-workspace .chat > .msg-date + .chat-workspace-system-note[data-timeline] { margin-top: 8px; }
.chat-workspace .chat > .chat-workspace-system-note[data-timeline] + .msg-date { margin-top: 16px; }

/* C4: Ir al final como WhatsApp: botÃ³n redondo de 40 px, 12 px sobre el cuadro de texto o el aviso. */
.chat-workspace .chat-to-end { position: relative; align-self: flex-end; display: grid; place-items: center; width: 40px; height: 40px; min-height: 40px; margin: -52px 16px 12px auto; padding: 0; border: 0; border-radius: 50%; background: var(--chat-list-background); color: var(--chat-text-secondary); box-shadow: 0 2px 6px rgba(42,36,32,.16); z-index: 4; }
.chat-workspace .chat-to-end .chat-r2-icon { width: 20px; height: 20px; }
.chat-workspace .chat-to-end-count { position: absolute; top: -6px; right: -4px; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 10px; background: var(--chat-accent); color: var(--chat-on-unread); font-size: 11px; font-weight: 600; line-height: 20px; text-align: center; }
/* La secciÃ³n del cuadro de texto tiene 8 px de padding arriba: el botÃ³n queda a 12 px del campo visible. */
.chat-workspace .chat-to-end:has(~ .human-composer):not(:has(~ .chat-ownership-notice)) { margin-bottom: 4px; }

/* El âŒ„ de la fila mide sus 32 px reales: con el mÃ­nimo de 40 px de la base tapaba la hora ("Ayer") en tÃ¡ctil y al pasar el mouse. */
.chat-workspace .chat-row-menu > :is(summary,[data-chat-menu-trigger]) { min-width: 32px; min-height: 32px; }

/* C5: en mÃ³vil el aviso de conexiÃ³n va en el flujo, bajo el encabezado, y empuja el hilo. */
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .chat-detail > .chat-connection-mobile:not([hidden]) { position: static; display: flex; flex: none; margin: 8px 12px 0; }
}

/* C6: en mÃ³vil, quiÃ©n atiende va en la segunda lÃ­nea, sin fondo, en lugar del subtÃ­tulo. */
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .chat-simulation-owner { display: none; }
    .chat-workspace .chat-thread-identity .chat-owner-mobile { display: flex; align-items: center; gap: 4px; min-width: 0; max-width: 100%; padding: 0; background: none; color: var(--chat-text-secondary); font-size: 12.5px; line-height: 1.3; }
    .chat-workspace .chat-owner-mobile.agent { color: var(--chat-ai-text); }
    .chat-workspace .chat-owner-mobile.unassigned { color: var(--chat-unassigned-text); }
    .chat-workspace .chat-owner-mobile .chat-owner-symbol { display: inline-flex; flex: none; }
    .chat-workspace .chat-owner-mobile .chat-r2-icon { width: 14px; height: 14px; }
    .chat-workspace .chat-owner-mobile .chat-owner-avatar { flex: 0 0 16px; width: 16px; height: 16px; font-size: 7.5px; }
    .chat-workspace .chat-owner-mobile .chat-owner-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

/* ===== Ronda 5: Ã­tems E1â€“E15. Solo el chat completo (.chat-workspace), nunca el Dock. ===== */

/* E1: Ã­tem desactivado en los menÃºs del chat: texto e Ã­cono gris claro, sin fondo ni efecto al pasar, cursor normal. */
.chat-workspace :is(.chat-list-menu-items, .chat-thread-menu-items, .chat-bulk-menu-items, .chat-row-menu-items, .msg-menu-items, .chat-bulk-assign-picker) :is(button, a):is(:disabled, [aria-disabled="true"]),
.chat-workspace :is(.chat-list-menu-items, .chat-thread-menu-items, .chat-bulk-menu-items, .chat-row-menu-items, .msg-menu-items, .chat-bulk-assign-picker) :is(button, a):is(:disabled, [aria-disabled="true"]):hover { background: none; border-color: transparent; box-shadow: none; color: #B9AEA5; opacity: 1; cursor: default; outline: none; }
.chat-workspace :is(.chat-list-menu-items, .chat-thread-menu-items, .chat-bulk-menu-items, .chat-row-menu-items, .msg-menu-items, .chat-bulk-assign-picker) :is(button, a):is(:disabled, [aria-disabled="true"]) .chat-r2-icon { color: inherit; }
:root[data-theme="dark"] .chat-workspace :is(.chat-list-menu-items, .chat-thread-menu-items, .chat-bulk-menu-items, .chat-row-menu-items, .msg-menu-items, .chat-bulk-assign-picker) :is(button, a):is(:disabled, [aria-disabled="true"]),
:root[data-theme="dark"] .chat-workspace :is(.chat-list-menu-items, .chat-thread-menu-items, .chat-bulk-menu-items, .chat-row-menu-items, .msg-menu-items, .chat-bulk-assign-picker) :is(button, a):is(:disabled, [aria-disabled="true"]):hover { background: none; color: color-mix(in srgb, var(--text-muted) 55%, transparent); }

/* E2: fila pospuesta: etiqueta ocre "Vuelve â€¦" con el estilo de "Sin asignar", en una lÃ­nea, antes de la vista previa. */
.chat-workspace .chat-snooze-pill { min-width: 0; max-width: 75%; flex-shrink: 0; background: var(--chat-unassigned-soft); color: var(--chat-unassigned-text); font-weight: 600; }
.chat-workspace .chat-snooze-pill .chat-r2-icon { flex: none; width: 12px; height: 12px; }
.chat-workspace .chat-snooze-pill > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* E4: encabezado del panel del contacto como WhatsApp (avatar de 72 px, nombre y telÃ©fono) y avisos neutros. */
.chat-workspace .chat-contact-profile { display: grid; justify-items: center; gap: 4px; padding: 4px 0 8px; text-align: center; }
.chat-workspace .chat-contact-avatar { --chat-avatar-background: oklch(0.93 0.035 var(--chat-avatar-hue, 50)); --chat-avatar-text: oklch(0.42 0.08 var(--chat-avatar-hue, 50)); display: grid; place-items: center; width: 72px; height: 72px; margin-bottom: 6px; border-radius: 50%; background: var(--chat-avatar-background); color: var(--chat-avatar-text); font-size: 26px; font-weight: 600; }
/* CH1: el ícono de persona del avatar grande mide 32 px; el logo del canal conserva su tamaño de C20 (19 px). */
.chat-workspace .chat-contact-avatar > .chat-avatar-content .chat-r2-icon { width: 32px; height: 32px; }
:root[data-theme="dark"] .chat-workspace .chat-contact-avatar { background: oklch(.32 .035 var(--chat-avatar-hue,50)); color: oklch(.85 .05 var(--chat-avatar-hue,50)); }
.chat-workspace .chat-contact-name { color: var(--chat-text); font-size: 17px; font-weight: 600; overflow-wrap: anywhere; }
.chat-workspace .chat-contact-subtitle { color: #6B615A; font-size: 13px; }
:root[data-theme="dark"] .chat-workspace .chat-contact-subtitle { color: var(--chat-text-secondary); }
.chat-workspace .chat-contact-profile .badge { margin: 6px 0 0; }
.chat-workspace .chat-context-notice { margin: 8px 0; padding: 10px 12px; border: 0; border-radius: 10px; background: #F6F1EC; color: #6B615A; font-size: 13px; line-height: 1.45; }
/* El tÃ­tulo del aviso sin permiso va en su propia lÃ­nea, como en la ronda 4. */
.chat-workspace .chat-context-notice strong { display: block; margin-bottom: 2px; color: inherit; font-weight: 600; }
:root[data-theme="dark"] .chat-workspace .chat-context-notice { background: var(--chat-search-background); color: var(--chat-text-secondary); }

/* E5: en tÃ¡ctil las filas no muestran el âŒ„: el menÃº se abre manteniendo presionada la fila (500 ms), sin seleccionar texto. */
.no-hover .chat-workspace .chat-row-menu > :is(summary,[data-chat-menu-trigger]) { display: none; }
.no-hover .chat-workspace .chat-row-wrap { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }

/* E6: Programar con tÃ­tulo y pie fijos; solo el contenido entre ambos se desplaza. Alto mÃ¡ximo: el Ã¡rea de la
   conversaciÃ³n menos 28 px. El campo Mensaje no se estira a mano: crece solo de 3 a 8 lÃ­neas. */
.chat-workspace .chat-r2-schedule-panel[data-chat-schedule-panel]:not([data-chat-snooze-panel]) { display: flex; flex-direction: column; max-height: calc(100% - 28px); overflow: hidden; }
.chat-workspace .chat-r2-schedule-panel[data-chat-schedule-panel]:not([data-chat-snooze-panel]) > header { flex: none; }
.chat-workspace .chat-r2-schedule-form { display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0; }
.chat-workspace .chat-r2-schedule-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.chat-workspace .chat-r2-schedule-form > footer { flex: none; margin-top: 12px; }
.chat-workspace .chat-r2-schedule-panel #chat-r2-schedule-content { resize: none; field-sizing: content; min-height: calc(3lh + 24px); max-height: calc(8lh + 24px); overflow-y: auto; }

/* E7: indicador circular de 16 px arriba del historial mientras cargan los mensajes anteriores. */
.chat-workspace .chat-history-loading { display: flex; justify-content: center; padding: 8px 0 4px; }
.chat-workspace .chat-history-loading[hidden] { display: none; }
.chat-workspace .chat-spinner { width: 16px; height: 16px; border: 2px solid var(--chat-border); border-top-color: var(--chat-accent); border-radius: 50%; animation: chat-r5-spin .8s linear infinite; }
@keyframes chat-r5-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .chat-workspace .chat-spinner { animation-duration: 2.4s; } }

/* E10: "Mostrar" en la misma lÃ­nea, a la derecha; si no entra, el texto hace elipsis y "Mostrar" sigue visible. */
.chat-workspace .chat-hidden-ai:not([hidden]) { display: flex; align-items: center; gap: 8px; }
.chat-workspace .chat-hidden-ai > span { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-hidden-ai > a { flex: none; margin-left: auto; }

/* E11: en mÃ³vil el chip de programados lleva solo el Ã­cono y el nÃºmero (su nombre accesible es "2 programados"). */
.chat-workspace .chat-scheduled-number { display: none; }
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .chat-scheduled-counter .chat-scheduled-text { display: none; }
    .chat-workspace .chat-scheduled-counter .chat-scheduled-number { display: inline; }
}

/* E6: los radios ocultos del calendario y de los chips no se pintan aunque estÃ©n desactivados (dÃ­as pasados):
   la regla general de controles desactivados les daba fondo y opacidad 1 y quedaba un punto bajo cada dÃ­a. */
.chat-workspace :is(.chat-r2-day, .chat-r2-date-chips) input:disabled { opacity: 0; background: none; border: 0; box-shadow: none; }
/* E5: el menÃº de la fila toma el ancho de su opciÃ³n mÃ¡s larga (hasta su mÃ¡ximo) en vez de partirla en dos lÃ­neas. */
.chat-workspace .chat-row-menu-items { width: max-content; }

/* Ronda 6: identidad, participantes, menÃº contextual y filtros homogÃ©neos. */
.chat-workspace .chat-participants-title { font-size:11.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--chat-text-tertiary); margin:16px 0 6px; }
.chat-workspace .chat-participant { display:flex; align-items:center; gap:12px; min-height:56px; }
.chat-workspace .chat-participant .chat-thread-avatar { flex:0 0 40px; width:40px; height:40px; }
.chat-workspace .chat-participant-text { min-width:0; flex:1; }
.chat-workspace .chat-participant-text strong { display:block; font-size:14.5px; font-weight:600; }
.chat-workspace .chat-participant-text strong span { font-weight:400; color:var(--chat-text-tertiary); }
.chat-workspace .chat-participant-text small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12.5px; color:var(--chat-text-secondary); }
.chat-workspace .chat-instructions-summary { display:flex; align-items:center; gap:6px; list-style:none; }
.chat-workspace .chat-instructions-summary::-webkit-details-marker { display:none; }
.chat-workspace .chat-instructions-summary svg { width:16px; height:16px; }
.chat-workspace details:not([open])>.chat-instructions-summary svg { transform:rotate(-90deg); }
.chat-workspace .msg.message-menu-open { box-shadow:inset 0 0 0 100vmax rgba(42,36,32,.08); }
:root[data-theme="dark"] .chat-workspace .msg.message-menu-open { box-shadow:inset 0 0 0 100vmax rgba(255,255,255,.08); }
.chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-ai-filter,.chat-supervise-filter) { height:32px; min-height:32px; border-radius:999px; border:1px solid #DFD5CC; padding:0 12px 0 10px; display:flex; align-items:center; gap:6px; font-size:13px; font-weight:600; background:#FFF; color:#6B615A; }
.chat-workspace .chat-quick-filters svg { width:15px; height:15px; }
.chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-supervise-filter).active { background:oklch(.955 .025 50); border-color:oklch(.85 .06 45); color:oklch(.45 .12 40); }
.chat-workspace .chat-quick-filters .chat-ai-filter.active { background:oklch(.955 .022 300); border-color:oklch(.86 .05 300); color:oklch(.45 .13 300); }
:root[data-theme="dark"] .chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-ai-filter,.chat-supervise-filter) { background:transparent; border-color:var(--chat-border); color:var(--chat-text-secondary); }
:root[data-theme="dark"] .chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-supervise-filter).active { background:oklch(.3 .05 45); border-color:oklch(.45 .08 45); color:oklch(.86 .08 55); }
:root[data-theme="dark"] .chat-workspace .chat-quick-filters .chat-ai-filter.active { background:oklch(.3 .06 300); border-color:oklch(.45 .09 300); color:oklch(.86 .08 300); }
.chat-starting .chat-list-pane::before { content:""; position:absolute; left:0; right:0; top:0; height:2px; background:oklch(.93 .03 50); z-index:20; }
.chat-starting .chat-list-pane::after { content:""; position:absolute; left:0; top:0; width:35%; height:2px; background:oklch(.55 .14 40); z-index:21; animation:chat-start-progress 1.2s ease-in-out infinite alternate; }
@keyframes chat-start-progress { to { left:65%; } }
@media(prefers-reduced-motion:reduce) { .chat-starting .chat-list-pane::after { animation:none; width:100%; } }
@container dedicated-chat (max-width:767px) { .chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-ai-filter,.chat-supervise-filter) { height:44px; min-height:44px; } .chat-workspace .chat-quick-filters .chat-supervise-filter { width:44px; padding:0; } }

.chat-workspace .chat-match { background:none; color:oklch(.45 .12 40); font-weight:700; }
:root[data-theme="dark"] .chat-workspace .chat-match { color:oklch(.86 .08 55); }

/* R6 bÃºsqueda contextual: cuarta columna o encabezado compacto. */
.chat-workspace .chat-search-results { display:flex; flex-direction:column; min-height:0; }
.chat-workspace .chat-search-results .chat-context-header { display:flex; justify-content:space-between; align-items:center; padding:16px; border-bottom:1px solid var(--chat-border); }
.chat-workspace .chat-thread-search-form { display:flex; align-items:center; border-radius:999px; background:var(--chat-search-background,#F3EEE9); padding:0 10px; gap:6px; min-width:0; }
.chat-workspace .chat-search-results .chat-thread-search-form { margin:12px; }
.chat-workspace .chat-thread-search-form input { flex:1; width:0; border:0; background:transparent; min-width:0; box-shadow:none; }
.chat-workspace .chat-thread-search-form svg { width:16px; height:16px; flex-shrink:0; }
.chat-workspace .chat-search-count { margin:0 16px 8px; font-size:12.5px; color:var(--chat-text-tertiary); }
.chat-workspace .chat-search-result-list { overflow-y:auto; padding:0 8px; }
.chat-workspace .chat-search-result { display:block; width:100%; text-align:left; padding:10px; border:0; border-radius:10px; background:transparent; }
.chat-workspace .chat-search-result:hover,.chat-workspace .chat-search-result.active { background:var(--chat-active-background,oklch(.955 .025 50)); }
.chat-workspace .chat-search-result small { display:block; font-size:12px; color:var(--chat-text-tertiary); margin-bottom:4px; }
.chat-workspace .chat-search-result>span { font-size:13.5px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.chat-workspace .chat-search-compact { display:flex; align-items:center; gap:4px; padding:8px; position:relative; flex-shrink:0; min-height:64px; }
.chat-workspace .chat-search-compact .chat-thread-search-form { flex:1; }
.chat-workspace .chat-search-compact button { width:32px; height:40px; flex-shrink:0; padding:4px; }
.chat-workspace .chat-search-compact>button svg { width:16px; height:16px; }
.chat-workspace .chat-search-position { font-size:12px; white-space:nowrap; color:var(--chat-text-secondary); }
.chat-workspace .chat-search-empty { position:absolute; top:100%; left:0; right:0; padding:8px; background:var(--chat-list-background); font-size:12.5px; z-index:4; }
.chat-workspace .chat-search-match { background:oklch(.92 .08 85); color:var(--chat-text); border-radius:3px; padding:0 2px; }
.chat-workspace .chat-search-active-match { background:oklch(.55 .14 40); color:white; border-radius:3px; padding:0 2px; }
.chat-workspace .msg.chat-search-halo { outline:3px solid oklch(.86 .07 50); }
:root[data-theme="dark"] .chat-workspace .chat-search-match { background:oklch(.4 .08 85); }
.chat-workspace .chat-mobile-search-action { display:none; }
@container dedicated-chat (max-width:767px) { .chat-workspace .chat-search-toggle { display:none; } .chat-workspace .chat-mobile-search-action { display:flex; } }

.chat-workspace .chat-thread-search-form input[type="search"] {border:0;background:transparent;box-shadow:none;padding:0;min-width:0;outline:0;}

.chat-workspace .chat-thread-search-form button,.chat-workspace .chat-search-back,.chat-workspace .chat-search-compact>button,.chat-workspace .chat-search-results .chat-context-header button {border:0;background:transparent;border-radius:50%;color:var(--chat-text-secondary);display:grid;place-items:center;cursor:pointer;}
.chat-workspace .chat-thread-search-form button:hover,.chat-workspace .chat-search-back:hover,.chat-workspace .chat-search-compact>button:hover {background:var(--chat-neutral-soft);}
.chat-workspace .chat-thread-search-form:focus-within {outline:2px solid var(--primary);outline-offset:2px;}
.chat-workspace .chat-search-compact>button:disabled {opacity:.4;cursor:default;}

@container dedicated-chat (max-width:767px) { .chat-workspace .chat-search-compact button {width:44px;height:44px;} }

/* R6: retain the IA identity and let the search pill own its background. */
.chat-workspace .chat-contact-avatar.agent,
:root[data-theme="dark"] .chat-workspace .chat-contact-avatar.agent { background:var(--chat-ai-soft); color:var(--chat-ai-text); }
.chat-workspace .chat-thread-search-form input[type="search"] { --control-background:transparent; }

.chat-starting .chat-list-pane { position:relative; }

/* R7: estados perceptibles en filtros y controles; solo dentro del chat. */
.chat-workspace :is(button:not(:disabled),a[href],:is(summary,[data-chat-menu-trigger])) { cursor:pointer; }
@media(hover:hover) {
.chat-workspace :is(.chat-type-menu,.chat-list-menu,.chat-thread-menu,.chat-row-menu,.chat-inbox-menu)>:is(summary,[data-chat-menu-trigger]):hover,
.chat-workspace :is(.chat-context-return,.chat-context-record,.chat-context-section>:is(summary,[data-chat-menu-trigger]),.chat-schedule-composer,.chat-search-results .chat-context-header button):hover,
.chat-workspace .chat-thread-menu-items :is(a,button):not(:disabled):hover,
.chat-workspace .chat-row-menu-items :is(a,button):not(:disabled):hover { background:var(--chat-neutral-soft); }
}
.chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-ai-filter,.chat-supervise-filter) { transition:background-color 120ms,border-color 120ms,color 120ms; }
.chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-ai-filter,.chat-supervise-filter):focus-visible { outline:2px solid oklch(.55 .14 40); outline-offset:2px; }
@media(hover:hover) {
.chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-ai-filter,.chat-supervise-filter):not(.active):hover { background:#F3EDE7;border-color:#CFC4BA;color:#2A2420; }
.chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-supervise-filter).active:hover {background:oklch(.93 .04 50);border-color:oklch(.8 .08 45);}
.chat-workspace .chat-quick-filters .chat-ai-filter.active:hover {background:oklch(.93 .035 300);border-color:oklch(.8 .07 300);}
:root[data-theme="dark"] .chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-ai-filter,.chat-supervise-filter):not(.active):hover {background:rgba(255,255,255,.06);border-color:var(--chat-text-tertiary);color:var(--chat-text);}
:root[data-theme="dark"] .chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-supervise-filter).active:hover {background:oklch(.34 .06 45);border-color:oklch(.5 .08 45);}
:root[data-theme="dark"] .chat-workspace .chat-quick-filters .chat-ai-filter.active:hover {background:oklch(.34 .07 300);border-color:oklch(.5 .09 300);}
}
.chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-ai-filter,.chat-supervise-filter):not(.active):active {background:#ECE4DC;}
.chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-supervise-filter).active:active {background:oklch(.91 .05 50);}
.chat-workspace .chat-quick-filters .chat-ai-filter.active:active {background:oklch(.91 .045 300);}
:root[data-theme="dark"] .chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-ai-filter,.chat-supervise-filter):not(.active):active {background:rgba(255,255,255,.1);}
:root[data-theme="dark"] .chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-supervise-filter).active:active {background:oklch(.38 .07 45);}
:root[data-theme="dark"] .chat-workspace .chat-quick-filters .chat-ai-filter.active:active {background:oklch(.38 .08 300);}
@media(prefers-reduced-motion:reduce) { .chat-workspace .chat-quick-filters :is(.chat-unread-filter,.chat-ai-filter,.chat-supervise-filter) {transition:none;} }
.chat-workspace input[type="search"]::-webkit-search-cancel-button,.chat-workspace input[type="search"]::-webkit-search-decoration {appearance:none;-webkit-appearance:none;display:none;}
.chat-workspace .chat-profile-link {display:flex;flex-direction:column;align-items:center;gap:8px;color:inherit;text-decoration:none;}
.chat-workspace .chat-profile-avatar {position:relative;display:block;}
.chat-workspace .chat-profile-veil {position:absolute;inset:0;border-radius:50%;background:rgba(42,36,32,.4);display:grid;place-items:center;color:white;opacity:0;transition:opacity 120ms;}
.chat-workspace .chat-profile-veil svg {width:22px;height:22px;}
.chat-workspace .chat-profile-link .chat-contact-name svg {display:inline;width:16px;height:16px;opacity:.55;vertical-align:middle;}
.chat-workspace .chat-profile-tooltip {position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);white-space:nowrap;background:#2A2420;color:white;font-size:12px;border-radius:6px;padding:6px 8px;opacity:0;visibility:hidden;transition:opacity 120ms,visibility 0s 120ms;pointer-events:none;z-index:5;}
.chat-workspace .chat-profile-link:focus-visible .chat-profile-tooltip {opacity:1;visibility:visible;transition-delay:0s;}
.chat-workspace .chat-profile-link:focus-visible .chat-profile-veil {opacity:1;}
@media(hover:hover) { .chat-workspace .chat-profile-link:hover .chat-contact-name {color:var(--chat-accent-text,oklch(.45 .12 40));text-decoration:underline;} .chat-workspace .chat-profile-link:hover .chat-profile-veil {opacity:1;} .chat-workspace .chat-profile-link:hover .chat-profile-tooltip {opacity:1;visibility:visible;transition-delay:400ms;} }
.chat-workspace :is(.chat-list,.chat-list-body,.chat,.chat-context-body,.chat-search-result-list,.chat-context-surface) {scrollbar-width:thin;scrollbar-color:rgba(42,36,32,.25) transparent;}
.chat-workspace :is(.chat-list,.chat-list-body,.chat,.chat-context-body,.chat-search-result-list,.chat-context-surface)::-webkit-scrollbar {width:6px;height:6px;}
.chat-workspace :is(.chat-list,.chat-list-body,.chat,.chat-context-body,.chat-search-result-list,.chat-context-surface)::-webkit-scrollbar-thumb {border-radius:999px;background:rgba(42,36,32,.25);}
.chat-workspace ::-webkit-scrollbar-track {background:transparent;}
.chat-workspace ::-webkit-scrollbar-button {display:none;width:0;height:0;}
.chat-workspace ::-webkit-scrollbar-thumb:hover {background:rgba(42,36,32,.4);}
:root[data-theme="dark"] .chat-workspace :is(.chat-list,.chat-list-body,.chat,.chat-context-body,.chat-search-result-list,.chat-context-surface) {scrollbar-color:rgba(255,255,255,.2) transparent;}
:root[data-theme="dark"] .chat-workspace ::-webkit-scrollbar-thumb {background:rgba(255,255,255,.2);}
:root[data-theme="dark"] .chat-workspace ::-webkit-scrollbar-thumb:hover {background:rgba(255,255,255,.35);}
.chat-workspace .chat-search-navigation {display:flex;align-items:center;gap:4px;height:56px;min-height:56px;padding:0 12px;border-top:1px solid var(--chat-border);background:var(--chat-composer-background,var(--chat-list-background));}
.chat-workspace .chat-search-navigation .chat-search-position {flex:1;font-size:13px;min-width:0;}
.chat-workspace .chat-search-navigation button {width:44px;height:44px;border:0;background:transparent;color:var(--chat-text-secondary);border-radius:50%;display:grid;place-items:center;flex-shrink:0;}
.chat-workspace .chat-search-navigation button:disabled {opacity:.4;cursor:default;}
.chat-workspace .chat-search-navigation button:hover:not(:disabled) {background:var(--chat-neutral-soft);}
.chat-workspace .chat-search-navigation svg {width:18px;height:18px;}
.chat-workspace .chat-search-navigation .chat-spinner {margin-right:auto;}
@container dedicated-chat (max-width:767px) {
.chat-workspace .chat-search-compact {height:64px;}
.chat-workspace .chat-search-compact>.chat-search-back {width:44px;height:44px;}
.chat-workspace .chat-search-compact .chat-thread-search-form {height:44px;}
.chat-workspace .chat-context-head {height:56px;min-height:56px;display:flex;flex-direction:row;align-items:center;gap:8px;padding:0 12px;border-bottom:1px solid var(--chat-border);}
.chat-workspace .chat-context-head .chat-context-return {width:44px;height:44px;min-height:44px;padding:0;display:grid;place-items:center;flex-shrink:0;background:transparent;}
.chat-workspace .chat-context-head .chat-context-back-text {display:none;}
.chat-workspace .chat-context-head h2 {margin:0;font-size:17px;font-weight:600;}
}
@media(prefers-reduced-motion:reduce) { .chat-workspace :is(.chat-profile-veil,.chat-profile-tooltip) {transition:none;} }
/* El tooltip del perfil queda dentro de la región desplazable, encima del avatar. */
.chat-workspace .chat-profile-link {padding-top:24px;}
/* Chromium usa su barra nativa si thin/color están activos; dejar el tamaño a WebKit evita las flechas. */
@supports selector(::-webkit-scrollbar) and (not (-moz-appearance: none)) {
.chat-workspace :is(.chat-list,.chat-list-body,.chat,.chat-context-body,.chat-search-result-list,.chat-context-surface),
:root[data-theme="dark"] .chat-workspace :is(.chat-list,.chat-list-body,.chat,.chat-context-body,.chat-search-result-list,.chat-context-surface) {scrollbar-width:auto;scrollbar-color:auto;}
}
.r3-quick-filters{display:flex;flex-wrap:nowrap;gap:4px;align-items:center;min-width:0;max-width:100%;overflow:visible}
.r3-quick-filters>.chip,.r3-quick-filters>.r3-filter-overflow{flex:0 0 auto}
.r3-quick-filters .chip{min-height:40px;padding:6px 8px;gap:4px;white-space:nowrap}
.r3-quick-filters svg{width:18px;height:18px;flex:0 0 auto}
.r3-quick-filters .r3-filter-icon,.r3-agent-clear,.r3-filter-overflow>:is(summary,[data-chat-menu-trigger]){width:40px;min-width:40px;justify-content:center}
.r3-quick-filters [hidden]{display:none!important}
.r3-agent-control{display:flex;align-items:center;gap:0;min-width:0;flex:0 0 auto}
.r3-agent-filter{position:relative;min-width:0}
.r3-agent-filter>:is(summary,[data-chat-menu-trigger]){display:flex;min-width:0}
.r3-agent-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:90px;min-width:0}
.r3-agent-popup,.r3-filter-popup{z-index:90;box-sizing:border-box;padding:8px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--surface);color:var(--text);box-shadow:0 8px 24px rgb(0 0 0/.16);overflow:auto;margin:0}
.r3-agent-popup>input{width:100%;box-sizing:border-box;min-width:0}
.r3-agent-options{max-height:min(320px,45dvh);overflow:auto;margin-top:8px}
.r3-agent-options>button,.r3-filter-popup>button{display:flex;width:100%;align-items:center;gap:8px;min-height:44px;text-align:left;background:transparent;border:0;border-radius:var(--control-radius);padding:8px;color:var(--text)}
.r3-agent-options>button>span,.r3-filter-popup>button>span{flex:1;overflow-wrap:anywhere}
.r3-agent-options>button[aria-selected=true],.r3-filter-popup>button[aria-pressed=true]{background:var(--primary-soft);color:var(--primary)}
.r3-filter-popup .chat-filter-options{position:static;display:flex;flex-wrap:wrap;padding:0;gap:4px}
.r3-filter-popup .chat-filter-group + .chat-filter-group{margin-top:12px}
.r3-filter-popup .chat-filter-group:not(:has(> :not([hidden]))){display:none}
.chat-workspace .r3-quick-filters .r3-filter-popup .chip{height:auto;min-height:40px;white-space:normal;text-align:start;font-weight:500;line-height:1.35}
.chat-workspace .r3-filter-popup .chip svg{width:16px;height:16px;flex:none}
@media(max-width:640px){.chat-workspace .r3-quick-filters .r3-filter-popup .chip{min-height:44px}}
.chat-workspace :is(.chat-row-avatar,.chat-thread-avatar,.chat-contact-avatar)>svg{width:55%;height:55%;flex:none}
.r3-overflow-active{font-size:.75rem;line-height:1}
.r3-filter-pagination{display:flex;gap:8px;justify-content:space-between;padding:8px}
@media(pointer:coarse){.r3-quick-filters .chip{min-height:44px}.r3-quick-filters .r3-filter-icon,.r3-agent-clear,.r3-filter-overflow>:is(summary,[data-chat-menu-trigger]){width:44px;min-width:44px}}

.chat-workspace .r3-quick-filters{display:flex;flex-wrap:nowrap;gap:4px;overflow:visible}
.chat-workspace .r3-quick-filters .chip{height:40px;min-height:40px;padding:6px 8px;gap:4px;font-weight:500}
.chat-workspace .r3-agent-filter>:is(summary,[data-chat-menu-trigger]){width:auto;max-width:126px;min-width:82px;box-sizing:border-box}
.chat-workspace .r3-quick-filters .r3-filter-icon,.chat-workspace .r3-quick-filters .r3-agent-clear,.chat-workspace .r3-filter-overflow>:is(summary,[data-chat-menu-trigger]){width:40px;min-width:40px;justify-content:center}
.r3-filter-icon.active{position:relative}.r3-filter-icon.active::after{content:'✓';position:absolute;right:0;bottom:0;font-size:10px;line-height:12px}
@media(pointer:coarse){.chat-workspace .r3-quick-filters .chip{height:44px;min-height:44px}.chat-workspace .r3-filter-popup .chip{height:auto;min-height:44px}.chat-workspace .r3-quick-filters .r3-filter-icon,.chat-workspace .r3-quick-filters .r3-agent-clear,.chat-workspace .r3-filter-overflow>:is(summary,[data-chat-menu-trigger]){width:44px;min-width:44px}}

/* I7: recuperar las píldoras aprobadas; el tamaño depende de la columna, también en dock. */
.chat-workspace .chat-list-pane { container-name: chat-list; container-type: inline-size; }
.chat-workspace .chat-i1-filters { display:flex; flex-wrap:nowrap; align-items:center; gap:6px; }
.chat-workspace .chat-i1-filters .chip { height:32px; min-height:32px; flex:none; padding:0 12px 0 10px; font-weight:600; white-space:nowrap; }
.chat-workspace .chat-i1-filters svg { width:15px; height:15px; }
.chat-dock-window[data-fullscreen="false"] .chat-workspace .chat-i1-filters .chat-supervise-filter { width:32px; min-width:32px; padding:0; justify-content:center; }
@container chat-list (width < 400px) {
    .chat-workspace .chat-i1-filters .chat-supervise-filter { width:32px; min-width:32px; padding:0; justify-content:center; }
    .chat-workspace .chat-i1-filters .chat-supervise-filter span { display:none; }
}
@container chat-list (width < 300px) {
    .chat-workspace .chat-i1-filters { padding-inline:4px; gap:2px; }
}
/* A1 · C07/C11: the actual row width decides compact labels; the disclosure always remains visible. */
.chat-workspace .chat-a1-filters{display:flex;align-items:center;flex-wrap:nowrap;gap:6px;padding:10px 8px;min-width:0;}
.chat-workspace .chat-a1-filters>.chip,.chat-workspace .chat-a1-filters .a1-selected-filters>.chip,.chat-workspace .chat-a1-filters .a1-more-filters>:is(summary,[data-chat-menu-trigger]){display:inline-flex;align-items:center;justify-content:center;gap:5px;flex:none;height:32px;min-height:32px;padding:0 9px;border:1px solid var(--chat-chip-border);border-radius:999px;font-size:13px;font-weight:600;white-space:nowrap;background:var(--chat-list-background);color:var(--chat-text-secondary);}
.chat-workspace .chat-a1-filters .chat-r2-icon{width:15px;height:15px;flex:none;}
.chat-workspace .chat-a1-filters .chip.active,.chat-workspace .a1-more-filters[open]>:is(summary,[data-chat-menu-trigger]){background:var(--chat-accent-soft);color:var(--chat-accent-text);border-color:var(--chat-accent-border);}
.chat-workspace .chat-a1-filters :is(.chat-ai-filter.active,.a1-employee-filter){background:var(--chat-ai-soft);border-color:var(--chat-ai-border);color:var(--chat-ai-text);}
.chat-workspace .chat-a1-filters .a1-more-filters{margin:0;flex:none;position:relative;}
.chat-workspace .chat-a1-filters .a1-more-filters>:is(summary,[data-chat-menu-trigger]){width:32px;min-width:32px;padding:0;list-style:none;color:var(--ui-control-foreground);}
.chat-workspace .chat-a1-filters .a1-more-filters>:is(summary,[data-chat-menu-trigger]) .chat-r2-icon{width:16px;height:16px;}
.chat-workspace .chat-a1-filters[data-supervise-compact=true] .chat-supervise-filter,.chat-workspace .chat-a1-filters[data-ai-compact=true] .chat-ai-filter{width:32px;min-width:32px;padding:0;}
.chat-workspace .chat-a1-filters[data-supervise-compact=true] .chat-supervise-filter .a1-filter-label,.chat-workspace .chat-a1-filters[data-ai-compact=true] .chat-ai-filter .a1-filter-label{display:none;}
.chat-workspace .chat-a1-filters[data-supervise-compact=false] .chat-supervise-filter .a1-filter-label{position:static;width:auto;height:auto;overflow:visible;clip-path:none;display:inline;}
.a1-selected-filters:empty{display:none;}.a1-selected-filters{display:flex;align-items:center;gap:6px;min-width:0;flex:0 1 auto;overflow-x:auto;scrollbar-width:none;}
.a1-selected-filters::-webkit-scrollbar{display:none;}
.chat-a1-filters[data-more-end=true] .a1-selected-filters{mask-image:linear-gradient(to right,var(--ui-mask) calc(100% - 28px),transparent);}
.chat-a1-filters[data-more-start=true] .a1-selected-filters{mask-image:linear-gradient(to right,transparent,var(--ui-mask) 28px);}
.chat-a1-filters[data-more-start=true][data-more-end=true] .a1-selected-filters{mask-image:linear-gradient(to right,transparent,var(--ui-mask) 28px,var(--ui-mask) calc(100% - 28px),transparent);}
/* S1: en la columna única (Conversaciones de una columna y el dock, en el celular y en escritorio) bandeja, buscador, fila
   de píldoras y títulos de sección arrancan en un solo borde de 16 px y terminan a 16 px del otro lado. Las filas no
   cambian (su avatar sigue en 20). Misma condición que pasa el chat a una columna. */
@container dedicated-chat (max-width: 859px){
 .chat-workspace .chat-inbox-selector{margin-inline:16px;}
 .chat-workspace .chat-a1-filters{padding-inline:16px;}
 .chat-workspace .chat-filter-caption{margin-inline-start:8px;}
}
.chat-workspace .a1-filter-popup{box-sizing:border-box;width:260px;padding:6px;border:1px solid var(--chat-border);border-radius:14px;background:var(--chat-list-background);color:var(--chat-text);box-shadow:var(--chat-menu-shadow);overflow-y:auto;z-index:95;}
.chat-workspace .a1-filter-content>button{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:10px 12px;border:0;border-radius:10px;background:transparent;color:var(--chat-text);font-size:14px;text-align:left;white-space:nowrap;}
.chat-workspace .a1-filter-content>button:hover{background:var(--chat-search-background);}
.a1-filter-content>button>span:not(.chat-menu-count):not(.a1-agent-avatar){flex:1;min-width:0;}
.a1-filter-content>button small{display:block;color:var(--chat-text-secondary);font-size:12.5px;font-weight:400;overflow:hidden;text-overflow:ellipsis;}
.a1-filter-popup .chat-menu-count{margin-left:auto;color:var(--chat-text-tertiary);font-size:12.5px;font-weight:400;flex:none;}
.a1-unchecked{visibility:hidden;}
.a1-filter-content>header{display:flex;align-items:center;gap:6px;min-height:40px;}
.a1-agent-search{display:flex;align-items:center;gap:6px;min-height:38px;background:var(--chat-search-background);border-radius:999px;padding:0 10px;margin:6px;}
.a1-agent-search>input{min-width:0;width:100%;border:0;background:transparent;color:var(--chat-text);box-shadow:none;}
.a1-filter-avatar,.chat-workspace .a1-filter-avatar{width:18px;height:18px;min-width:18px;border-radius:50%;display:grid;place-items:center;background:var(--chat-avatar-background);color:var(--chat-avatar-text);font-size:11px;flex:none;}
.a1-agent-avatar,.chat-workspace .a1-agent-avatar{width:28px;height:28px;min-width:28px;border-radius:50%;display:grid;place-items:center;background:var(--chat-avatar-background);color:var(--chat-avatar-text);font-size:11px;flex:none;}
.a1-agent-avatar:has(>.chat-r2-icon){background:var(--chat-ai-soft);color:var(--chat-ai-text);}
.chat-workspace :is(.chat-list-menu-items,.chat-row-menu-items,.chat-thread-menu-items,.chat-bulk-menu-items){min-width:240px;width:max-content;max-width:320px;}
.chat-workspace :is(.chat-list-menu-items,.chat-row-menu-items,.chat-thread-menu-items,.chat-bulk-menu-items)>:is(a,button){white-space:nowrap;}
.chat-workspace .chat-detail-pane.context-inline{grid-template-columns:minmax(520px,1fr) 320px;}
.chat-workspace .chat-owner-pill{min-width:0;}
.chat-workspace .chat-owner-pill>.chat-owner-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.chat-workspace .chat-owner-pill[data-owner-compact=true]>.chat-owner-label{visibility:hidden;}
.chat-section-trigger{display:flex;align-items:center;gap:8px;min-height:40px;width:100%;border:0;background:transparent;color:var(--chat-text);font-size:14px;font-weight:600;text-align:left;padding:0;cursor:pointer;}
.chat-section-trigger>.chat-section-chevron{width:16px;height:16px;transform:rotate(-90deg);flex:none;}
.chat-section-trigger[aria-expanded=true]>.chat-section-chevron{transform:none;}
.chat-section-content{padding-left:24px;}
/* R5.1 · C04: «+ Agregar» del detalle del contacto es un secundario como «Reasignar» y «Editar» (40 px, 44 en el celular, con su
   fondo, hover y presionado de .button.secondary); antes medía 36 px con otro fondo y, en oscuro, sin hover. */
.chat-workspace .e1-tag-assignment>.button{height:40px;min-height:40px;padding:0 14px;border:0;font-size:14px;font-weight:600;}
.chat-workspace .e1-tag-assignment>.button>.chat-r2-icon{width:16px;height:16px;}
/* C20: official channel marks inherit the row's surface, including selected/hover/dark states. */
.chat-avatar-content{display:contents;}
:is(.chat-row-avatar,.chat-thread-avatar,.chat-contact-avatar){position:relative;overflow:visible;}
.chat-channel-badge{position:absolute;right:-2px;bottom:-2px;display:grid;place-items:center;width:19px;height:19px;border-radius:50%;box-shadow:0 0 0 2px var(--channel-ring,var(--chat-list-background));}
.chat-channel-badge[data-channel=whatsapp]{background:var(--channel-whatsapp-background);color:var(--channel-whatsapp-foreground);}
.chat-channel-badge>.chat-r2-icon{width:100%;height:100%;}
.chat-thread-avatar>.chat-channel-badge{width:16px;height:16px;}
.chat-row.active{--channel-ring:var(--chat-active-background);}
:root[data-theme=dark] .chat-row:hover{--channel-ring:var(--surface-muted);}
@media(prefers-reduced-motion:reduce){.chat-section-chevron{transition:none;}.a1-selected-filters{scroll-behavior:auto;}}

/* A1 C10/C27: separadores del panel y controles táctiles del contacto. */
.chat-workspace .chat-context-section{border-color:var(--chat-border);}
.chat-workspace dialog.a1-filter-popup{margin:0;color:var(--chat-text);}
.chat-workspace dialog.a1-filter-popup::backdrop{background:var(--preset-overlay);}
.chat-workspace dialog.a1-filter-popup[data-sheet=false]::backdrop{background:transparent;}
@container dedicated-chat (max-width:767px){.chat-workspace .e1-tag-assignment>.button{height:44px;min-height:44px;}}

.chat-workspace .chat-inbox-selector>[data-chat-menu-trigger]{width:100%;}
@media(max-width:767px){
 .chat-workspace .chat-a1-filters>.chip,.chat-workspace .chat-a1-filters .a1-selected-filters>.chip,.chat-workspace .chat-a1-filters .a1-more-filters>[data-chat-menu-trigger]{height:40px;min-height:40px;}
 .chat-workspace .chat-a1-filters .a1-more-filters>[data-chat-menu-trigger],.chat-workspace .chat-a1-filters[data-supervise-compact=true] .chat-supervise-filter,.chat-workspace .chat-a1-filters[data-ai-compact=true] .chat-ai-filter{width:40px;min-width:40px;}
}

/* A1 decision3: stronger borders only on the revised filter controls. */
:root[data-theme] .chat-workspace .chat-a1-filters>.chip,:root[data-theme] .chat-workspace .chat-a1-filters .a1-selected-filters>.chip,:root[data-theme] .chat-workspace .chat-a1-filters .a1-more-filters>[data-chat-menu-trigger]{border-color:var(--ui-control-border);}
:root[data-theme] .chat-workspace .chat-a1-filters .chip.active,:root[data-theme] .chat-workspace .chat-a1-filters .a1-more-filters[open]>[data-chat-menu-trigger]{border-color:var(--ui-accent-control-border);}
:root[data-theme] .chat-workspace .chat-a1-filters :is(.chat-ai-filter.active,.a1-employee-filter){border-color:var(--ui-ai-control-border);}

/* Preserve the existing avatar glyph geometry through the channel wrapper. */
.chat-workspace :is(.chat-row-avatar,.chat-thread-avatar,.chat-contact-avatar)>.chat-avatar-content>svg{width:55%;height:55%;flex:none;}

/* A2 S11/S13: pending chips and one shared sheet surface. */
.chat-workspace dialog.a2-filter-popup{padding:0;border:1px solid var(--ui-menu-border);border-radius:14px;background:var(--chat-list-background);color:var(--chat-text);box-shadow:var(--chat-menu-shadow);overflow:hidden;}
.chat-workspace dialog.a2-filter-popup::backdrop{background:transparent;}
.chat-workspace dialog.a2-filter-popup[data-sheet=true]::backdrop{background:var(--ui-sheet-overlay);}
/* S2 · C27: el menú ⋮ de la lista en el celular va en esta misma hoja (dialog.a2-filter-popup + ChatBottomSheet), abajo y a
   todo el ancho, con las mismas opciones; cada opción de 52 px, como las demás hojas de menú (Asignar, Equipo). */
.chat-workspace dialog.chat-list-sheet{position:fixed;inset:auto 0 0 0;width:100%;max-width:100vw;max-height:calc(100dvh - 12px);margin:0;}
.chat-workspace dialog.chat-list-sheet .chat-list-menu-items{position:static;width:auto;min-width:0;max-width:none;padding:0 8px 12px;border:0;border-radius:0;background:transparent;box-shadow:none;overflow-y:auto;}
.chat-workspace dialog.chat-list-sheet .chat-list-menu-items>:is(a,button){min-height:52px;border-radius:12px;font-size:15px;}
.bheli-bottom-sheet{display:flex;flex-direction:column;min-height:0;height:100%;max-height:inherit;background:inherit;}
.bheli-sheet-handle{display:none;}
.a2-filter-scroll{overflow-y:auto;min-height:0;padding:16px 14px;}
.a2-filter-chips{display:flex;flex-wrap:wrap;gap:6px;}
.chat-workspace .a2-filter-chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;height:32px;max-width:100%;padding:0 12px;border:1px solid var(--ui-control-border);border-radius:999px;background:var(--chat-list-background);color:var(--chat-text-secondary);font-size:13px;font-weight:500;white-space:nowrap;}
.chat-workspace .a2-filter-chip>span:last-child{overflow:hidden;text-overflow:ellipsis;}
.chat-workspace .a2-filter-chip.active{background:var(--chat-accent-soft);border-color:var(--ui-accent-control-border);color:var(--chat-accent-text);font-weight:600;}
.chat-workspace .a2-filter-chip.a2-filter-ai.active{background:var(--chat-ai-soft);border-color:var(--ui-ai-control-border);color:var(--chat-ai-text);}
.a2-filter-agents{margin-top:18px;}.a2-filter-agents>h2{font-size:12.5px;font-weight:600;color:var(--chat-text-secondary);margin:0 0 10px;}
.chat-workspace .a2-agent-avatar{width:20px;height:20px;min-width:20px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:9px;background:var(--chat-avatar-background);color:var(--chat-avatar-text);}
.a2-agent-avatar:has(svg){background:var(--chat-ai-soft);color:var(--chat-ai-text);}.a2-agent-avatar>svg{width:14px;height:14px;}
.a2-filter-agents .a1-agent-search{margin:0 0 10px;}.a1-agent-search>button{background:transparent;border:0;border-radius:50%;height:32px;width:32px;flex:none;color:var(--chat-text-secondary);}
.a2-filter-actions{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--ui-menu-border);flex:none;background:var(--chat-list-background);}
.chat-workspace .a2-filter-actions>.button{flex:1;min-height:40px;height:40px;border:0;border-radius:999px;padding:0 12px;justify-content:center;}
.chat-workspace .a2-filter-actions>.primary{background:var(--primary);color:var(--primary-contrast);}
.chat-workspace .a2-filter-actions>.secondary{background:var(--ui-hover);color:var(--chat-text);}
.chat-workspace .chat-search.bheli-composite-field{background:var(--chat-search-background);border-radius:999px;}
.chat-workspace .chat-thread-search-form.bheli-composite-field{background:var(--chat-search-background);border-radius:999px;outline:none;padding:0 10px;}
.chat-workspace :is(.chat-thread-back,.chat-view-back,.chat-back,.chat-context-return){width:36px;min-width:36px;height:36px;min-height:36px;padding:0;border:0;border-radius:50%;align-items:center;justify-content:center;flex:none;}
.chat-workspace :is(.chat-thread-back,.chat-view-back,.chat-back,.chat-context-return)>.chat-r2-icon{width:20px;height:20px;}
.chat-workspace .chat-thread-back>span{display:none;}
@media(max-width:767px){
 .chat-workspace dialog.a2-filter-popup[data-sheet=true]{max-width:100vw;border:0;border-radius:18px 18px 0 0;padding-bottom:env(safe-area-inset-bottom);}
 .bheli-sheet-handle{display:grid;place-items:center;height:20px;min-height:20px;flex:none;touch-action:none;}
 .bheli-sheet-handle>span{width:36px;height:4px;border-radius:2px;background:var(--ui-sheet-handle);}
 .chat-dock-window[data-fullscreen=true] .chat-dock-surface>.bheli-bottom-sheet>.bheli-sheet-handle{display:none;}
 .chat-workspace .a2-filter-chip{min-height:40px;height:40px;}
 .chat-workspace :is(.chat-thread-back,.chat-view-back,.chat-back,.chat-context-return){width:44px;min-width:44px;height:44px;min-height:44px;}
}

.chat-workspace .chat-search-back{width:36px;min-width:36px;height:36px;min-height:36px;border:0;border-radius:50%;}
.chat-workspace .chat-search-back>.chat-r2-icon{width:20px;height:20px;}
@media(max-width:767px){.chat-workspace .chat-search-back{width:44px;min-width:44px;height:44px;min-height:44px;}}

.chat-workspace .chat-back{display:inline-flex;}
.chat-workspace .chat-context-head .chat-context-return{width:36px;min-width:36px;height:36px;min-height:36px;}
@media(max-width:767px){.chat-workspace .chat-context-head .chat-context-return{width:44px;min-width:44px;height:44px;min-height:44px;}}
.chat-workspace :is(.chat-thread-back,.chat-view-back,.chat-back,.chat-search-back,.chat-panel-back),
.chat-workspace :is(.chat-thread-back,.chat-view-back,.chat-back,.chat-search-back,.chat-panel-back)>.chat-r2-icon,
.chat-workspace .chat-context-return>.chat-context-back-icon{color:var(--chat-text);}

.chat-workspace .a2-filter-ai>.a2-agent-avatar{background:var(--chat-ai-soft);color:var(--chat-ai-text);}

/* R9 keeps the original search/row geometry while the outer shape owns focus. */
:root[data-theme] .chat-workspace .chat-search.bheli-composite-field{height:38px;}
:root[data-theme] .chat-workspace .chat-search.bheli-composite-field input.bheli-composite-input{height:100%;min-height:0;}
@media(max-width:767px){:root[data-theme] .chat-workspace .chat-search.bheli-composite-field{height:44px;}}

/* CH2 (como WhatsApp): al elegir mensajes, cada mensaje es una fila de todo el ancho; la casilla va a la izquierda,
   centrada con la burbuja, y la fila elegida se tiñe con el tinte de selección de la lista (C17). Tocar la fila elige.
   Sobrescribe la casilla montada sobre la burbuja de chat.css (que sigue sirviendo al chat sin la app). */
/* El relleno lateral del historial, en una variable: la fila llega de borde a borde sin desbordar (el historial cambia de
   relleno en el chat angosto y en el dock). */
.chat-workspace[data-chat-app] .conversation-viewport .chat { --msg-row-pad: clamp(var(--space-3), 3vw, var(--space-5)); }
@container dedicated-chat (max-width: 859px) { .chat-workspace[data-chat-app] .conversation-viewport .chat { --msg-row-pad: 12px; } }
.chat-workspace[data-chat-app].selecting .chat > .msg-select-row { display: flex; align-items: center; gap: 4px; flex: none; align-self: stretch; margin-inline: calc(-1 * var(--msg-row-pad)); padding: 2px var(--msg-row-pad) 2px 4px; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.chat-workspace[data-chat-app].selecting .chat > .msg-select-row.msg-run-row { margin-top: -6px; }
.chat-workspace[data-chat-app].selecting .msg-select-row.out > .msg { margin-inline-start: auto; }
.chat-workspace[data-chat-app].selecting .msg-select-row.selected { background: var(--chat-accent-soft); }
.chat-workspace[data-chat-app].selecting .msg-select-row > .msg { align-self: center; margin-block: 0; padding-left: 10px; }
/* Al elegir, tocar la burbuja elige la fila y nada más: ni abre la cita, ni el archivo, ni el video. */
.chat-workspace[data-chat-app].selecting .msg-select-row > .msg { pointer-events: none; }
.chat-workspace[data-chat-app].selecting .msg-select-row > .msg.selected { outline: 0; }
.chat-workspace[data-chat-app].selecting .msg-select-row .msg-select-check { position: static; display: inline-grid; place-items: center; flex: none; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-on-unread); cursor: pointer; }
.chat-workspace[data-chat-app].selecting .msg-select-row .msg-select-check::before { content: ""; grid-area: 1 / 1; width: 18px; height: 18px; box-sizing: border-box; border: 1.5px solid var(--chat-check-border); border-radius: 5px; background: var(--chat-list-background); }
.chat-workspace[data-chat-app].selecting .msg-select-row .msg-select-check[aria-checked="true"]::before { border-color: var(--chat-check-on); background: var(--chat-check-on); }
.chat-workspace[data-chat-app].selecting .msg-select-row .msg-select-check .chat-r2-icon { grid-area: 1 / 1; position: relative; width: 12px; height: 12px; stroke-width: 3; visibility: hidden; }
.chat-workspace[data-chat-app].selecting .msg-select-row .msg-select-check[aria-checked="true"] .chat-r2-icon { visibility: visible; }
.chat-workspace[data-chat-app].selecting .msg-select-row .msg-select-check:focus-visible { outline: none; }
.chat-workspace[data-chat-app].selecting .msg-select-row .msg-select-check:focus-visible::before { border-color: var(--chat-check-on); box-shadow: 0 0 0 3px var(--chat-check-ring); }
@media (hover: hover) { .chat-workspace[data-chat-app].selecting .msg-select-row:not(.selected):hover { background: var(--chat-active-background); } }
/* La barra de selección ocupa la cabecera de la conversación (C29): mismo alto, × · «{n} seleccionados» · acciones de ícono. */
.chat-workspace[data-chat-app] .msg-select-bar { display: flex; align-items: center; gap: 4px; flex-wrap: nowrap; padding: 0 12px 0 8px; border-top: 0; background: var(--chat-accent-soft); font-size: 14px; }
.chat-workspace[data-chat-app] .msg-select-bar [data-selected-count] { flex: 1 1 auto; min-width: 0; overflow: hidden; color: var(--chat-text); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace[data-chat-app] .msg-select-actions { display: inline-flex; flex: none; align-items: center; gap: 2px; }
.chat-workspace[data-chat-app] .msg-select-bar .msg-select-action { display: inline-grid; place-items: center; width: 38px; min-width: 38px; height: 38px; min-height: 38px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text); cursor: pointer; }
.chat-workspace[data-chat-app] .msg-select-bar .msg-select-action .chat-r2-icon { width: 20px; height: 20px; }
.chat-workspace[data-chat-app] .msg-select-bar .msg-select-action:disabled { color: var(--control-disabled-text); cursor: default; }
@media (hover: hover) { .chat-workspace[data-chat-app] .msg-select-bar .msg-select-action:hover:not(:disabled) { background: var(--chat-active-background); } }
.chat-workspace[data-chat-app] .msg-select-bar .msg-select-action:active:not(:disabled) { background: var(--chat-active-background); }
@container dedicated-chat (max-width:767px) { .chat-workspace[data-chat-app] .msg-select-bar .msg-select-action { width: 40px; min-width: 40px; height: 40px; min-height: 40px; } }

/* CH1: lo mínimo del detalle del contacto (C23): Etiquetas, Agente asignado y Datos del contacto, cada bloque con su título
   y una línea arriba como las secciones; «Reasignar» y «Editar» a la derecha del bloque. */
.chat-workspace .chat-contact-block { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--chat-border); }
.chat-workspace .chat-contact-block h3 { margin: 0 0 8px; color: var(--chat-text); font-size: 14px; font-weight: 600; line-height: 20px; }
.chat-workspace .chat-contact-block-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.chat-workspace .chat-contact-block-head h3 { margin: 0; }
.chat-workspace .chat-contact-block .chat-context-facts { margin: 0; }
/* R5.1 (R5-1): «Editar» y «Reasignar» con el mismo espacio entre ícono y texto que «+ Agregar» (8 px, el de Contactos). */
.chat-workspace .chat-contact-edit { flex: none; gap: 8px; white-space: nowrap; }
.chat-workspace .chat-assign-panel > [data-chat-menu-trigger] { gap: 8px; }
.chat-workspace .chat-contact-edit .chat-r2-icon { width: 16px; height: 16px; }
.chat-workspace .chat-contact-agent { display: flex; align-items: center; gap: 10px; min-height: 40px; }
.chat-workspace .chat-contact-agent-avatar { display: grid; place-items: center; flex: none; width: 32px; height: 32px; border-radius: 50%; background: var(--chat-avatar-background); color: var(--chat-avatar-text); font-size: 12px; font-weight: 600; }
.chat-workspace .chat-contact-agent-avatar.agent { background: var(--chat-ai-soft); color: var(--chat-ai-text); }
.chat-workspace .chat-contact-agent-avatar.chat-contact-agent-none { background: var(--chat-unassigned-soft); color: var(--chat-unassigned-text); }
.chat-workspace .chat-contact-agent-avatar .chat-r2-icon { width: 16px; height: 16px; }
.chat-workspace .chat-contact-agent-name { flex: 1 1 auto; min-width: 0; overflow: hidden; color: var(--chat-text); font-size: 14px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-assign-panel { flex: none; }
/* Botones del panel como C04: píldoras de 14 px / 600, alto 40 (44 en el celular). */
.chat-workspace #chat-contact-context :is(.button, .chat-assign-panel > [data-chat-menu-trigger]) { border-radius: 999px; }
.chat-workspace :is(.chat-contact-edit, .chat-contact-retry, .chat-assign-panel > :is(summary,[data-chat-menu-trigger])) { min-height: 40px; padding: 0 14px; font-size: 14px; font-weight: 600; }
.chat-workspace .chat-assign-panel > :is(summary,[data-chat-menu-trigger]) .chat-r2-icon { width: 16px; height: 16px; }
@container dedicated-chat (max-width:767px) { .chat-workspace :is(.chat-contact-edit, .chat-contact-retry, .chat-assign-panel > :is(summary,[data-chat-menu-trigger])) { min-height: 44px; } }
.chat-workspace .chat-assign-panel .chat-assign-menu-items { top: calc(100% + 6px); bottom: auto; right: 0; }
.chat-workspace #chat-contact-context .feedback-section { margin: 12px 0 0; }

/* CH5 (como WhatsApp): «Nuevo grupo» como primera fila de Nuevo chat y sus pasos en el mismo panel. */
.chat-workspace.dir-mode .chat-list-head { justify-content: flex-start; gap: 8px; }
.chat-workspace .chat-new-group-icon { display: grid; place-items: center; background: var(--chat-accent); color: var(--chat-on-unread); }
.chat-workspace .chat-new-group-icon .chat-r2-icon { width: 22px; height: 22px; }
.chat-workspace .chat-new-group-row { min-height: 64px; }
/* Elegidos arriba, como chips con su avatar de 20 px (C20) y ×. */
.chat-workspace .chat-group-chips { display: flex; flex-wrap: wrap; gap: 6px; flex: none; max-height: 30%; overflow-y: auto; margin: 0 16px 10px; }
.chat-workspace .chat-group-chip { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; min-height: 32px; padding: 0 2px 0 6px; border-radius: 999px; background: var(--chat-neutral-soft); color: var(--chat-text); font-size: 13px; font-weight: 500; }
.chat-workspace .chat-group-chip-avatar { display: grid; place-items: center; flex: none; width: 20px; height: 20px; border-radius: 50%; background: var(--chat-avatar-background); color: var(--chat-avatar-text); font-size: 8px; font-weight: 600; }
.chat-workspace .chat-group-chip-avatar.agent { background: var(--chat-ai-soft); color: var(--chat-ai-text); }
.chat-workspace .chat-group-chip-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-group-chip-remove { display: inline-grid; place-items: center; flex: none; width: 28px; height: 28px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text-secondary); cursor: pointer; }
.chat-workspace .chat-group-chip-remove .chat-r2-icon { width: 14px; height: 14px; }
@media (hover: hover) { .chat-workspace .chat-group-chip-remove:hover { background: var(--chat-active-background); } }
.chat-workspace .chat-group-chip-remove:active { background: var(--chat-active-background); }
/* Filas con círculo de elección a la derecha; tocar la fila elige. */
.chat-workspace .chat-group-option { grid-template-columns: 48px minmax(0, 1fr) 24px; align-items: center; }
.chat-workspace .chat-group-check { display: grid; place-items: center; width: 20px; height: 20px; box-sizing: border-box; border: 1.5px solid var(--chat-check-border); border-radius: 50%; background: var(--chat-list-background); color: transparent; }
.chat-workspace .chat-group-check .chat-r2-icon { width: 12px; height: 12px; stroke-width: 3; }
.chat-workspace .chat-group-option[aria-checked="true"], :root[data-theme] .chat-workspace .chat-group-option[aria-checked="true"] { background: var(--chat-accent-soft); }
.chat-workspace .chat-group-option[aria-checked="true"] .chat-group-check { border-color: var(--chat-check-on); background: var(--chat-check-on); color: var(--chat-on-unread); }
.chat-workspace .chat-list .chat-group-option:focus-visible { outline: none; }
.chat-workspace .chat-list .chat-group-option:focus-visible .chat-group-check { border-color: var(--chat-check-on); box-shadow: 0 0 0 3px var(--chat-check-ring); }
/* Paso del nombre: el campo, el resumen de miembros y la barra fija abajo con «Crear grupo». */
.chat-workspace .chat-group-form { display: flex; flex: 1; flex-direction: column; min-height: 0; }
.chat-workspace .chat-group-name { padding: 16px 16px 12px; }
.chat-workspace .chat-group-name .field { display: grid; gap: 6px; margin: 0 0 12px; }
.chat-workspace .chat-group-name .field label { color: var(--chat-text); font-size: 14px; font-weight: 600; }
.chat-workspace .chat-group-summary { padding: 0; border-radius: 8px; }
.chat-workspace .chat-group-summary p { margin: 0; color: var(--chat-text-secondary); font-size: 13.5px; line-height: 1.45; }
.chat-workspace .chat-group-summary:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 2px; }
.chat-workspace .chat-group-name .feedback-section { margin: 0 0 12px; }
.chat-workspace .chat-group-option { min-height: 64px; }
/* Escritorio (propuesta CH5, paso «Nuevo grupo»): «Crear grupo» va bajo el resumen; en el celular, en la barra fija (C21). */
.chat-workspace .chat-group-form > .chat-group-name { flex: none; }
.chat-workspace .chat-group-form > .chat-group-bar { padding: 12px 16px 16px; border-top: 0; background: transparent; }
@container dedicated-chat (max-width:767px) {
    .chat-workspace .chat-group-form > .chat-group-name { flex: 1; }
    .chat-workspace .chat-group-form > .chat-group-bar { padding: 10px 12px 14px; border-top: 1px solid var(--chat-border); background: var(--chat-list-background); }
}
/* Barra fija abajo del panel (C21): sólida, con la acción principal a todo el ancho. */
.chat-workspace .chat-group-bar { display: flex; flex: none; padding: 10px 12px 14px; border-top: 1px solid var(--chat-border); background: var(--chat-list-background); }
.chat-workspace .chat-group-bar .button { flex: 1 1 auto; min-height: 40px; border-radius: 999px; } /* C04: el principal es una píldora. */
@container dedicated-chat (max-width:767px) { .chat-workspace .chat-group-bar .button { min-height: 44px; } .chat-workspace .chat-group-chip-remove { width: 32px; height: 32px; } }
/* ===== Chat › Conversaciones · Quién atiende R1 (P1–P5). Medidas de la propuesta aprobada (25-10-2026); colores por token
   del tema con su par oscuro (C26). Persona: neutro; empleado IA: morado con user-cog; sin asignar: ocre; tuya: nada. ===== */

/* P2 · píldora del encabezado (escritorio): 32 px, 13 px en una línea, máximo 280 px con «…» (el nombre completo va en title). */
.chat-workspace .chat-owner-header { flex: none; gap: 6px; height: 32px; max-width: 280px; padding: 0 12px 0 10px; border-radius: 999px; font-size: 13px; font-weight: 500; }
.chat-workspace .chat-owner-header.person { padding-left: 6px; }
.chat-workspace .chat-owner-header.unassigned { font-weight: 600; }
.chat-workspace .chat-owner-header .chat-owner-symbol { display: inline-flex; flex: none; }
.chat-workspace .chat-owner-header .chat-owner-avatar { flex: 0 0 20px; width: 20px; height: 20px; font-size: 8px; }
.chat-workspace .chat-owner-header.agent .chat-r2-icon { width: 16px; height: 16px; }
.chat-workspace .chat-owner-header.unassigned .chat-r2-icon { width: 14px; height: 14px; }
.chat-workspace .chat-owner-header > .chat-owner-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* P2 · celular: la misma información en la segunda línea, 12,5 px / 600 con el color de la píldora, 5 px entre ícono y texto. */
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .chat-thread-identity .chat-owner-mobile { gap: 5px; font-weight: 600; }
    .chat-workspace .chat-owner-mobile.person { color: var(--chat-text-secondary); }
    .chat-workspace .chat-owner-mobile .chat-owner-avatar { flex: 0 0 15px; width: 15px; height: 15px; font-size: 7px; }
    .chat-workspace .chat-owner-mobile.agent .chat-r2-icon { width: 14px; height: 14px; }
    .chat-workspace .chat-owner-mobile.unassigned .chat-r2-icon { width: 13px; height: 13px; }
}

/* P3 · etiqueta de quién atiende en la fila (C15): 20 px, 11,5 px, padding 0 7px 0 4px, 4 px entre ícono y texto, 6 px hasta
   el mensaje y como máximo el 60 % de la línea. Mismos colores que la píldora del encabezado (E48). */
.chat-workspace .chat-row-bottom { gap: 6px; }
.chat-workspace .chat-row-bottom > .chat-owner-pill:not(.chat-snooze-pill) { gap: 4px; height: 20px; max-width: 60%; padding: 0 7px 0 4px; font-size: 11.5px; font-weight: 500; }
.chat-workspace .chat-row-bottom > .chat-owner-pill.unassigned { font-weight: 600; }
.chat-workspace .chat-row-bottom > .chat-owner-pill .chat-owner-avatar { flex: 0 0 14px; width: 14px; height: 14px; font-size: 7px; }
.chat-workspace .chat-row-bottom > .chat-owner-pill.agent .chat-r2-icon { flex: none; width: 13px; height: 13px; }
.chat-workspace .chat-row-bottom > .chat-owner-pill.unassigned .chat-r2-icon { flex: none; width: 12px; height: 12px; }

/* P4 · barra de quién atiende (C14): radio 16, padding 10 10 10 16, 10 px entre ícono y texto, texto 13,5 / 1,35 y botones a
   la derecha con 8 px; si no entran, bajan a otra línea alineados a la derecha. */
.chat-workspace .chat-ownership-notice:not(.management-only) { gap: 10px 12px; margin: 8px 16px 14px; padding: 10px 10px 10px 16px; border-radius: 16px; }
.chat-workspace .chat-ownership-notice:not(.management-only) > p { flex: 1 1 200px; font-size: 13.5px; line-height: 1.35; }
.chat-workspace .chat-ownership-notice.person { background: var(--chat-list-background); border-color: var(--chat-border); color: var(--chat-text-secondary); }
.chat-workspace .chat-ownership-notice.person > .chat-r2-icon { width: 18px; height: 18px; color: inherit; }
.chat-workspace .chat-ownership-notice.agent { background: var(--chat-ai-soft); border-color: var(--chat-ai-border); color: var(--chat-ai-text); }
.chat-workspace .chat-ownership-notice.agent > .chat-r2-icon { width: 19px; height: 19px; color: inherit; }
.chat-workspace .chat-ownership-notice:is(.unassigned,.activation-failed) { border-color: var(--chat-unassigned-border); }
.chat-workspace .chat-ownership-notice.unassigned > .chat-r2-icon { width: 18px; height: 18px; }
.chat-workspace .chat-ownership-notice .chat-ownership-actions { gap: 8px; }
.chat-workspace .chat-ownership-notice .chat-ownership-actions :is(.button, .chat-assign-menu > [data-chat-menu-trigger]) { height: 40px; min-height: 40px; padding: 0 18px; font-size: 14px; font-weight: 600; white-space: nowrap; }
.chat-workspace :is(.chat-ownership-notice, .chat-contact-block-head) .chat-assign-menu > [data-chat-menu-trigger] { gap: 6px; }
.chat-workspace .chat-assign-menu > [data-chat-menu-trigger] > .chat-r2-icon:first-child { width: 16px; height: 16px; }
.chat-workspace .chat-assign-menu > [data-chat-menu-trigger] > .chat-r2-icon:last-child { width: 15px; height: 15px; }

/* P4 · menú Asignar (C11, guía «Asignar»): 280 px; desde la barra se abre hacia arriba alineado al borde derecho del botón.
   Personas: avatar de 26 px, nombre 14 px y «N activas» 12,5 px a la derecha; agentes IA: user-cog morado en un círculo de
   26 px y «IA» 11 px / 600 en morado. */
.chat-workspace .chat-assign-menu:not(.chat-assign-header) > .chat-assign-menu-items { width: 280px; }
.chat-workspace .chat-ownership-actions .chat-assign-menu > .chat-assign-menu-items { top: auto; bottom: calc(100% + 8px); right: 0; }
.chat-workspace .chat-assign-menu-items > .bheli-bottom-sheet { gap: 2px; }
.chat-workspace .chat-assign-menu-items .chat-assignment-section { padding: 6px 12px 4px; font-size: 11.5px; }
.chat-workspace .chat-assign-menu-items button { gap: 12px; min-height: 40px; padding: 8px 12px; border-radius: 10px; font-size: 14px; }
.chat-workspace .chat-assign-menu-items .chat-assignee-avatar.agent .chat-r2-icon { width: 15px; height: 15px; }
.chat-workspace .chat-assign-menu-items small { color: var(--chat-text-tertiary); font-size: 12.5px; }
.chat-workspace .chat-assign-menu-items .chat-ai-badge { flex: none; padding: 0; border-radius: 0; background: none; color: var(--chat-ai-text); font-size: 11px; font-weight: 600; }
.chat-workspace :is(.chat-assign-sheet-backdrop, .chat-assign-sheet-title) { display: none; }

/* P4 · celular (C27): el mismo menú en la hoja inferior compartida (ChatBottomSheet): radio 18 arriba, tirador, fondo de la
   página, opciones de 52 px y título 16 px / 700 con el texto del botón que la abrió; tocar el fondo la cierra. */
@media (max-width: 767px) {
    .chat-workspace .chat-assign-menu[open]:not(.chat-assign-header) > .chat-assign-sheet-backdrop { display: block; position: fixed; inset: 0; z-index: 90; padding: 0; border: 0; border-radius: 0; background: var(--ui-sheet-overlay); cursor: default; }
    .chat-workspace .chat-assign-menu:not(.chat-assign-header) > .chat-assign-menu-items,
    .chat-workspace .chat-ownership-actions .chat-assign-menu > .chat-assign-menu-items { position: fixed; inset: auto 0 0 0; z-index: 91; width: auto; max-width: none; max-height: 85dvh; overflow-y: auto; padding: 8px 8px calc(20px + env(safe-area-inset-bottom, 0px)); border: 0; border-radius: 18px 18px 0 0; background: var(--chat-list-background); box-shadow: 0 -8px 32px rgba(42,36,32,.16); }
    .chat-workspace .chat-assign-menu-items > .bheli-bottom-sheet > .bheli-sheet-handle { margin-bottom: 4px; }
    .chat-workspace .chat-assign-menu-items .chat-assign-sheet-title { display: block; padding: 2px 12px 8px; color: var(--chat-text); font-size: 16px; font-weight: 700; }
    .chat-workspace .chat-assign-menu:not(.chat-assign-header) .chat-assignment-section { padding: 8px 12px 4px; }
    .chat-workspace .chat-assign-menu:not(.chat-assign-header) .chat-assign-menu-items button { min-height: 52px; border-radius: 12px; font-size: 15px; }
    .chat-workspace .chat-assign-menu:not(.chat-assign-header) .chat-assignee-avatar { width: 32px; height: 32px; font-size: 11.5px; }
    .chat-workspace .chat-assign-menu:not(.chat-assign-header) .chat-assign-menu-items small { font-size: 13px; }
}

/* P4 · celular: los botones bajan a una segunda fila a todo el ancho, de 44 px; 1 : 1,4 si los dos textos entran y, si no, el
   secundario toma el ancho de su texto (padding 16 px) y el principal el resto (C21). */
@container dedicated-chat (max-width: 859px) {
    .chat-workspace .chat-ownership-notice:not(.management-only) { gap: 10px; margin: 8px 10px calc(12px + env(safe-area-inset-bottom, 0px)); padding: 12px 12px 12px 14px; }
    /* Si ni así entran (320 px y «Tomar conversación»), el principal baja a su propia fila a todo el ancho: nunca se sale. */
    .chat-workspace .chat-ownership-actions.has-several { flex-wrap: wrap; }
    .chat-workspace .chat-ownership-actions.has-several > .chat-assign-menu { flex: 1 1 0; min-width: max-content; }
    .chat-workspace .chat-ownership-actions.has-several > .button { flex: 1.4 1 0; min-width: max-content; }
    .chat-workspace .chat-ownership-actions.has-several > .chat-assign-menu > [data-chat-menu-trigger] { padding-inline: 16px; }
    .chat-workspace .chat-ownership-notice .chat-ownership-actions :is(.button, .chat-assign-menu > [data-chat-menu-trigger]) { height: 44px; min-height: 44px; }
}

/* P5 · panel del contacto: bajo el nombre, el canal con su logo (15 px) y su nombre (13 px, terciario); la bandeja no se repite.
   «Agente asignado»: avatar de 32 px y nombre de 15 px; empleado IA en morado con user-cog de 17 px y «IA». */
.chat-workspace .chat-contact-channel { display: inline-flex; align-items: center; gap: 6px; margin-top: 2px; color: var(--chat-text-tertiary); font-size: 13px; }
.chat-workspace .chat-contact-channel-logo { display: grid; place-items: center; flex: none; width: 15px; height: 15px; border-radius: 50%; }
.chat-workspace .chat-contact-channel-logo[data-channel=whatsapp] { background: var(--channel-whatsapp-background); color: var(--channel-whatsapp-foreground); }
.chat-workspace .chat-contact-channel-logo > .chat-r2-icon { width: 100%; height: 100%; }
.chat-workspace .chat-contact-agent { margin-top: 10px; min-height: 36px; }
.chat-workspace .chat-contact-agent-avatar { font-size: 12px; font-weight: 700; }
.chat-workspace .chat-contact-agent-avatar.agent .chat-r2-icon { width: 17px; height: 17px; }
.chat-workspace .chat-contact-agent-name { flex: 0 1 auto; font-size: 15px; font-weight: 400; }
.chat-workspace .chat-contact-agent-ai { flex: none; color: var(--chat-ai-text); font-size: 11px; font-weight: 600; }
/* Toast (C13, C27): centrado sobre la columna de la conversación (--chat-toast-left, positionToast); mientras se ve, la lista
   de mensajes deja libre abajo lo que el toast le tapa más 12 px (--chat-toast-space) para que no tape la última línea. */
.chat-workspace .conversation-viewport .chat[data-toast-space] { padding-bottom: var(--chat-toast-space); scroll-padding-bottom: var(--chat-toast-space); }
/* Con left al centro, un fijo solo puede usar el ancho que le queda a la derecha (la mitad en el celular): el toast toma el ancho de su texto, hasta el tope de max-width, y no se parte en dos líneas sin necesidad. */
.chat-workspace .feedback-toast { width: max-content; }
/* P4 (revisión del dueño): si con los botones al lado el texto pasa de 2 líneas, los botones bajan a su propia fila, alineados
   a la derecha (data-stacked lo pone ChatOwnershipNotice al medir). */
.chat-workspace .chat-ownership-notice[data-stacked] > .chat-ownership-actions { flex: 1 0 100%; justify-content: flex-end; }
/* Chat de un enlace sin acceso (decisión del dueño, pregunta 1): aviso en línea C14 neutro en el lugar del chat, con volver. */
.chat-workspace .chat-unavailable { display: grid; place-items: center; flex: 1 1 auto; min-height: 100%; padding: 16px; }
.chat-workspace .chat-unavailable > .chat-unavailable-notice { width: min(560px, 100%); margin: 0; }
.chat-workspace .chat-unavailable-notice > .chat-r2-icon { width: 18px; height: 18px; color: inherit; }

/* ===== Archivos del chat R2 (2026-10-31, pedido del dueño: «tiene que parecer WhatsApp» y «todo debe seguir el kit»):
   cuadro de texto en una píldora (clip · texto · programar · micrófono o enviar), menú del clip (C11; hoja C27 en el
   celular), panel de adjuntos sobre la conversación, barra de la nota de voz y archivos en la burbuja (imagen y video con
   marco de 3 px y la hora encima, audio con ▶ y barra, documento como tarjeta, estados). El catálogo no define estas
   piezas: se arman con las del chat (C04, C11, C14, C16, C19, C20, C22, C27) y su ficha queda propuesta en
   artifacts/chat-media-r2/reporte/pendientes_catalogo.md. Solo el chat (.chat-workspace, también el Dock). ===== */

/* --- Cuadro de texto: una píldora como la referencia Chat Bheli v3 y WhatsApp; la cita ocupa su propia línea. --- */
.chat-workspace .human-composer form[data-media-composer] { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 2px; padding: 4px 5px 4px 6px; }
.chat-workspace .human-composer form[data-media-composer] > .composer-quote { flex: 1 0 100%; }
.chat-workspace .human-composer form[data-media-composer] > textarea { flex: 1 1 0; width: auto; min-width: 0; min-height: 40px; padding: 9px 8px; }
.chat-workspace .human-composer form[data-media-composer] > :is(.chat-attach-menu, .chat-attach-composer, .chat-schedule-composer, .chat-send-button, .chat-mic-button) { flex: none; }
.chat-workspace .human-composer form[data-media-composer] > .chat-schedule-composer { width: 40px; min-width: 40px; height: 40px; }
.chat-workspace .human-composer form[data-media-composer] > .chat-send-button { width: 40px; min-width: 40px; height: 40px; min-height: 40px; padding: 0; }
.chat-workspace .human-composer form[data-media-composer] > .chat-send-button svg { width: 20px; height: 20px; }
/* Mientras hay una nota de voz en curso, su barra reemplaza al cuadro (que sigue en la página con su borrador). */
.chat-workspace .human-composer[data-recording="true"] > form[data-media-composer] { display: none; }

/* Botones de ícono del cuadro, de la barra de la nota de voz y del documento (C04: redondos, sin fondo). */
.chat-workspace .chat-attach-composer,
.chat-workspace .human-composer .chat-mic-button,
.chat-workspace .chat-recorder-action,
.chat-workspace .chat-media-download { display: grid; place-items: center; width: 40px; min-width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text-secondary); cursor: pointer; font: inherit; -webkit-tap-highlight-color: transparent; }
.chat-workspace :is(.chat-attach-composer, .chat-mic-button, .chat-recorder-action, .chat-media-download) .chat-r2-icon { width: 20px; height: 20px; }
@media (hover: hover) {
    .chat-workspace :is(.chat-attach-composer, .chat-schedule-composer, .chat-mic-button, .chat-recorder-action, .chat-media-download):not(:disabled):hover { background: var(--chat-neutral-soft); color: var(--chat-text); }
}
.chat-workspace :is(.chat-attach-composer, .chat-schedule-composer, .chat-mic-button, .chat-recorder-action, .chat-media-download):not(:disabled):active { background: var(--chat-active-background); }
.chat-workspace .chat-attach-menu[open] > .chat-attach-composer { background: var(--chat-neutral-soft); color: var(--chat-text); }
/* E65: el desactivado genérico pinta un círculo gris; un botón de ícono se ve apagado, sin fondo. */
.chat-workspace .human-composer .chat-attach-composer:disabled,
.chat-workspace .human-composer .chat-attach-composer:disabled:hover,
.chat-workspace .msg .chat-media-download:disabled,
.chat-workspace .msg .chat-media-download:disabled:hover { background: transparent; border-color: transparent; color: var(--chat-text-tertiary); opacity: .55; cursor: default; }
.chat-workspace .human-composer .chat-recorder-send .chat-r2-icon { width: 22px; height: 22px; }

/* --- Menú del clip (C11): sobre el clip, alineado a su borde izquierdo; opciones de 40 px con ícono de 18 px. --- */
.chat-workspace .chat-attach-menu { position: relative; display: flex; }
.chat-workspace .chat-attach-menu-items { position: absolute; z-index: 20; left: 0; bottom: calc(100% + 10px); width: max-content; min-width: 240px; max-width: 320px; padding: 6px; border: 1px solid var(--chat-border); border-radius: var(--chat-menu-radius); background: var(--chat-list-background); box-shadow: var(--chat-menu-shadow); }
.chat-workspace .chat-attach-menu-items > .bheli-bottom-sheet { gap: 2px; height: auto; }
.chat-workspace .chat-attach-menu-items button { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 40px; padding: 10px 12px; border: 0; border-radius: 10px; background: transparent; color: var(--chat-text); font: inherit; font-size: 14px; line-height: 1.3; text-align: start; white-space: nowrap; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.chat-workspace .chat-attach-menu-items button .chat-r2-icon { flex: none; width: 18px; height: 18px; color: var(--chat-text-secondary); }
@media (hover: hover) {
    .chat-workspace .chat-attach-menu-items button:hover { background: var(--chat-active-background); }
}
.chat-workspace .chat-attach-menu-items button:active { background: var(--chat-accent-soft); }
.chat-workspace .chat-attach-sheet-backdrop { display: none; }

/* --- Barra de la nota de voz, como WhatsApp: descartar · punto y duración · pausar · enviar, en la misma píldora. --- */
.chat-workspace .human-composer .chat-recorder { display: flex; align-items: center; justify-content: flex-end; gap: 4px; min-height: 48px; padding: 4px 5px 4px 6px; }
.chat-workspace .chat-recorder-state { display: flex; flex: 0 1 auto; align-items: center; gap: 8px; min-width: 0; margin-inline: 4px 8px; color: var(--chat-text); font-size: 14px; }
.chat-workspace .chat-recorder-dot { flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--chat-text-tertiary); }
.chat-workspace .chat-recorder-dot.live { background: var(--error); animation: chat-recorder-pulse 1.2s ease-in-out infinite; }
@keyframes chat-recorder-pulse { 50% { opacity: .35; } }
.chat-workspace .chat-recorder-clock { flex: none; min-width: 4ch; font-size: 15px; font-weight: 500; font-variant-numeric: tabular-nums; }
.chat-workspace .chat-recorder-text { min-width: 0; overflow: hidden; color: var(--chat-text-secondary); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-recorder-state[data-failed="true"] { flex: 1 1 auto; }
.chat-workspace .chat-recorder-state[data-failed="true"] .chat-recorder-text { color: var(--error); white-space: normal; }
.chat-workspace .chat-recorder-alert { flex: none; width: 18px; height: 18px; color: var(--error); }
.chat-workspace .human-composer .chat-recorder .chat-media-retry { flex: none; }
.chat-workspace .human-composer .chat-recorder .chat-recorder-send { width: 40px; min-width: 40px; height: 40px; min-height: 40px; padding: 0; }

/* --- Panel de adjuntos: tapa los mensajes (escritorio) o toda la conversación (celular), como WhatsApp. --- */
.chat-workspace .chat-detail { position: relative; }
.chat-workspace .chat-attach-host { position: absolute; inset: 0; z-index: 6; display: flex; flex-direction: column; min-height: 0; }
.chat-workspace .chat-attach-panel { display: grid; flex: 1 1 auto; grid-template-rows: auto minmax(0, 1fr) auto auto; min-height: 0; background: var(--chat-thread-background); color: var(--chat-text); }
.chat-workspace .chat-attach-head { display: flex; align-items: center; min-height: 56px; padding: 8px 12px; }
.chat-workspace .chat-attach-close { display: grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.chat-workspace .chat-attach-close .chat-r2-icon { width: 22px; height: 22px; }
@media (hover: hover) {
    .chat-workspace .chat-attach-close:not(:disabled):hover { background: var(--chat-neutral-soft); }
}
.chat-workspace .chat-attach-close:not(:disabled):active { background: var(--chat-active-background); }
.chat-workspace .chat-attach-stage { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px; min-height: 0; padding: 8px 24px 16px; overflow: hidden; }
/* La imagen entra entera; un fondo claro deja ver las de fondo transparente (un logo oscuro no queda invisible). */
.chat-workspace .chat-attach-image { display: block; flex: 0 1 auto; max-width: 100%; max-height: 100%; min-height: 0; border-radius: 4px; background: #F3EEE9; object-fit: contain; }
.chat-workspace .chat-attach-video { display: block; flex: 0 1 auto; max-width: 100%; max-height: 100%; min-height: 0; border-radius: 4px; background: #1E1A17; }
.chat-workspace .chat-attach-card { display: flex; flex-direction: column; align-items: center; gap: 8px; max-width: min(420px, 100%); text-align: center; }
.chat-workspace .chat-attach-card-icon { display: grid; place-items: center; width: 88px; height: 88px; margin-bottom: 4px; border-radius: 20px; background: var(--chat-list-background); color: var(--chat-accent-text); box-shadow: var(--chat-bubble-shadow); }
.chat-workspace .chat-attach-card-icon .chat-r2-icon { width: 40px; height: 40px; }
.chat-workspace .chat-attach-card-name { display: -webkit-box; overflow: hidden; font-size: 15px; font-weight: 600; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.chat-workspace .chat-attach-card-detail { color: var(--chat-text-secondary); font-size: 13px; }
.chat-workspace .chat-attach-problem { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 12px; max-width: min(520px, 100%); }
.chat-workspace .chat-attach-problem p { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--error); font-size: 13.5px; }
.chat-workspace .chat-attach-problem p .chat-r2-icon { flex: none; width: 18px; height: 18px; }
.chat-workspace .chat-attach-compose { display: grid; justify-items: center; gap: 8px; padding: 0 24px 16px; }
.chat-workspace .chat-attach-compose > * { width: min(480px, 100%); }
.chat-workspace .chat-attach-recovery { margin: 0; color: var(--chat-text-secondary); font-size: 13px; text-align: center; }
.chat-workspace .chat-attach-compose > .chat-error { margin: 0; }
.chat-workspace .chat-attach-quote { margin: 0; }
/* El comentario: la misma píldora blanca del cuadro de texto. */
.chat-workspace .chat-attach-caption { display: flex; border-radius: 24px; background: var(--chat-list-background); box-shadow: var(--chat-bubble-shadow); }
.chat-workspace .chat-attach-caption:focus-within { box-shadow: 0 0 0 1px var(--chat-accent), var(--chat-bubble-shadow); }
.chat-workspace .chat-attach-caption textarea { flex: 1 1 auto; min-width: 0; min-height: 44px; max-height: calc(5 * 1.42em + 20px); padding: 11px 18px; border: 0; border-radius: 24px; background: transparent; color: var(--chat-text); font: inherit; font-size: 14px; line-height: 1.42; resize: none; field-sizing: content; overflow-y: auto; }
.chat-workspace .chat-attach-caption textarea:focus-visible { outline: none; box-shadow: none; }
.chat-workspace .chat-attach-caption textarea::placeholder { color: var(--chat-text-tertiary); opacity: 1; }
/* Abajo, sobre una línea: las miniaturas al centro y Enviar a la derecha. */
.chat-workspace .chat-attach-foot { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 16px; padding: 4px 20px 16px; border-top: 1px solid var(--chat-border); }
.chat-workspace .chat-attach-strip { display: flex; align-items: center; justify-content: safe center; gap: 10px; min-width: 0; padding: 14px 14px 6px; overflow-x: auto; scrollbar-width: thin; }
.chat-workspace .chat-attach-thumb { position: relative; flex: none; width: 56px; height: 56px; }
.chat-workspace .chat-attach-thumb-pick { position: relative; display: grid; place-items: center; width: 100%; height: 100%; padding: 0; overflow: hidden; border: 1px solid var(--chat-border); border-radius: 8px; background: var(--chat-list-background); color: var(--chat-text-secondary); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.chat-workspace .chat-attach-thumb-pick > :is(img, video) { display: block; width: 100%; height: 100%; object-fit: cover; pointer-events: none; }
/* Detrás de una imagen, un fondo claro: una de fondo transparente (un logo oscuro) se ve también en oscuro. */
.chat-workspace .chat-attach-thumb-pick > img { background: #F3EEE9; }
/* La elegida: borde terracota de 2 px (el color del anillo del kit); el foco del teclado sigue siendo el anillo, por fuera. */
.chat-workspace .chat-attach-thumb[data-selected] .chat-attach-thumb-pick::after { content: ""; position: absolute; inset: 0; border: 2px solid var(--focus-ring-accent, var(--chat-accent)); border-radius: 8px; pointer-events: none; }
.chat-workspace .chat-attach-thumb[data-state="error"] .chat-attach-thumb-pick { border-color: var(--error); }
.chat-workspace .chat-attach-thumb-file { display: grid; justify-items: center; gap: 1px; color: var(--chat-accent-text); }
.chat-workspace .chat-attach-thumb-file .chat-r2-icon { width: 22px; height: 22px; }
.chat-workspace .chat-attach-thumb-file small { color: var(--chat-text-secondary); font-size: 11px; font-weight: 600; line-height: 1.2; }
.chat-workspace .chat-attach-thumb-badge { position: absolute; left: 4px; bottom: 3px; display: flex; color: #FFFFFF; filter: drop-shadow(0 1px 1px rgb(0 0 0 / .5)); }
.chat-workspace .chat-attach-thumb-badge .chat-r2-icon { width: 14px; height: 14px; }
.chat-workspace :is(.chat-attach-thumb-busy, .chat-attach-thumb-error) { position: absolute; inset: 0; display: grid; place-items: center; border-radius: 7px; background: rgb(30 26 23 / .45); pointer-events: none; }
.chat-workspace .chat-attach-thumb-busy .chat-spinner { width: 20px; height: 20px; border-color: rgb(255 255 255 / .45); border-top-color: #FFFFFF; }
.chat-workspace .chat-attach-thumb-error { background: rgb(30 26 23 / .3); }
.chat-workspace .chat-attach-thumb-error .chat-r2-icon { width: 24px; height: 24px; padding: 2px; border-radius: 50%; background: #FFFFFF; color: oklch(0.5 0.17 25); }
/* La × de cada miniatura: al pasar el mouse o con el foco (siempre visible en pantallas táctiles, 44 px de zona). */
.chat-workspace .chat-attach-thumb-remove { position: absolute; z-index: 2; top: -11px; right: -11px; display: grid; place-items: center; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-list-background); opacity: 0; pointer-events: none; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.chat-workspace .chat-attach-thumb-remove::before { content: ""; position: absolute; inset: 3px; border-radius: 50%; background: var(--chat-text); box-shadow: 0 1px 2px rgb(42 36 32 / .25); }
.chat-workspace .chat-attach-thumb-remove .chat-r2-icon { position: relative; width: 14px; height: 14px; stroke-width: 2.5; }
.chat-workspace .chat-attach-thumb:is(:hover, :focus-within) .chat-attach-thumb-remove { opacity: 1; pointer-events: auto; }
@media (hover: hover) {
    .chat-workspace .chat-attach-thumb-remove:hover::before { background: var(--chat-text-secondary); }
}
.chat-workspace .chat-attach-add { display: grid; flex: none; place-items: center; width: 56px; height: 56px; padding: 0; border: 1px solid var(--control-border, #978A80); border-radius: 8px; background: var(--chat-list-background); color: var(--chat-text); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.chat-workspace .chat-attach-add .chat-r2-icon { width: 22px; height: 22px; }
@media (hover: hover) {
    .chat-workspace .chat-attach-add:hover { background: var(--chat-neutral-soft); }
}
.chat-workspace .chat-attach-add:active { background: var(--chat-active-background); }
/* Enviar: el botón principal redondo del chat, con el número de archivos (como el contador del botón Chats). */
.chat-workspace .chat-attach-send { position: relative; display: grid; place-items: center; width: 52px; height: 52px; padding: 0; border: 0; border-radius: 50%; background: var(--chat-accent); color: var(--primary-contrast, #FFFFFF); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.chat-workspace .chat-attach-send .chat-r2-icon { width: 24px; height: 24px; }
.chat-workspace .chat-attach-send .chat-spinner { width: 20px; height: 20px; border-color: rgb(255 255 255 / .45); border-top-color: currentColor; }
@media (hover: hover) {
    .chat-workspace .chat-attach-send:not(:disabled):hover { background: var(--chat-accent-hover); }
}
.chat-workspace .chat-attach-send:not(:disabled):active { background: oklch(0.44 0.13 40); }
.chat-workspace .chat-attach-count { position: absolute; top: -4px; right: -4px; display: grid; place-items: center; min-width: 22px; height: 22px; padding: 0 5px; border: 2px solid var(--chat-accent); border-radius: 11px; background: var(--chat-list-background); color: var(--chat-accent-text); font-size: 11.5px; font-weight: 700; line-height: 1; }
.chat-workspace .chat-attach-send:disabled .chat-attach-count { border-color: #D9CFC6; color: var(--chat-text-secondary); }
.chat-workspace .chat-attach-panel[data-loading] { display: block; }

/* --- Burbuja con archivo --- */
/* Imagen y video listos: marco de 3 px del color de la burbuja, esquinas de 7 px y hasta 330 px de ancho (WhatsApp). */
.chat-workspace .msg.msg-visual { padding: 3px; max-width: min(336px, 85%); }
.chat-workspace .msg.msg-visual > .who { padding: 3px 7px 2px; }
.chat-workspace .msg.msg-visual > .msg-quote { margin: 0 0 3px; }
.chat-workspace .chat .msg.msg-visual .msg-body [data-msg-text] { padding: 4px 7px 3px; }
.chat-workspace .chat .msg.msg-visual .msg-body > .msg-meta { inset-inline-end: 7px; bottom: -2px; }
.chat-workspace .chat-media-visual { position: relative; display: block; width: fit-content; max-width: 100%; overflow: hidden; border-radius: 7px; line-height: 0; }
.chat-workspace .chat-media-image { display: block; max-width: 100%; height: auto; padding: 0; overflow: hidden; border: 0; border-radius: 7px; background: var(--chat-neutral-soft); cursor: zoom-in; }
/* La primera vez el navegador la dimensiona al llegar: entra en 330 × 330 con su proporción, nunca menos de 160 × 120 (lo
   que sobra se recorta). Con sus medidas ya conocidas (data-sized) la burbuja reserva ese mismo lugar desde el inicio. */
.chat-workspace .chat-media-image:not([data-sized]) img { width: auto; height: auto; max-width: min(330px, 100%); max-height: 330px; min-width: min(160px, 100%); min-height: 120px; }
.chat-workspace .chat-media-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.chat-workspace .chat-media-video { display: block; width: 330px; max-width: 100%; height: auto; max-height: 330px; border-radius: 7px; background: #1E1A17; object-fit: cover; }
/* Sin pie: la hora y los vistos encima de la imagen, abajo a la derecha, sobre un degradado oscuro. */
.chat-workspace .chat-media-visual:is([data-has-meta], [data-kind="video"]):not([data-playing])::after { content: ""; position: absolute; inset: auto 0 0 0; height: 40px; border-radius: 0 0 7px 7px; background: linear-gradient(to top, rgb(0 0 0 / .5), transparent); pointer-events: none; }
.chat-workspace .chat .msg .chat-media-visual > .msg-meta { z-index: 2; inset: auto 8px 5px auto; color: #FFFFFF; line-height: 1.2; text-shadow: 0 1px 2px rgb(0 0 0 / .45); }
.chat-workspace .chat .msg .chat-media-visual > .msg-meta :is(time, .msg-delivery-check) { color: inherit; }
.chat-workspace .chat .msg .chat-media-visual > .msg-meta .msg-delivery-check[data-delivery-status="READ"] { color: oklch(0.82 0.09 50); }
/* Video: ▶ al centro y su duración abajo a la izquierda (al reproducir, sus controles). */
.chat-workspace .chat-media-play { position: absolute; z-index: 2; inset: 0; display: grid; place-items: center; width: 56px; height: 56px; margin: auto; padding: 0; border: 0; border-radius: 50%; background: rgb(0 0 0 / .5); color: #FFFFFF; cursor: pointer; }
.chat-workspace .chat-media-play .chat-r2-icon { width: 24px; height: 24px; margin-left: 3px; fill: currentColor; }
@media (hover: hover) {
    .chat-workspace .chat-media-play:hover { background: rgb(0 0 0 / .62); }
}
.chat-workspace .chat-media-duration { position: absolute; z-index: 2; left: 8px; bottom: 5px; display: flex; align-items: center; gap: 4px; color: #FFFFFF; font-size: 11px; line-height: 1.2; font-variant-numeric: tabular-nums; text-shadow: 0 1px 2px rgb(0 0 0 / .45); }
.chat-workspace .chat-media-duration .chat-r2-icon { width: 14px; height: 14px; }
/* El ⌄ del mensaje sobre una imagen sin nombre ni cita arriba: blanco sobre un degradado oscuro, como WhatsApp. */
.chat-workspace .msg.msg-visual-top .msg-menu { top: 3px; right: 3px; }
.chat-workspace .msg.msg-visual-top .msg-menu > :is(summary,[data-chat-menu-trigger]) { border-radius: 0 7px 0 0; background: radial-gradient(farthest-side at top right, rgb(0 0 0 / .45), transparent); color: #FFFFFF; }
/* Audio y nota de voz: ▶/⏸ · barra con su punto · duración debajo a la izquierda y la hora a la derecha. */
.chat-workspace .chat-media-audio { position: relative; display: flex; align-items: center; gap: 8px; width: 300px; max-width: 100%; min-height: 44px; padding: 2px 0 13px; }
.chat-workspace .chat-media-audio-play { display: grid; flex: none; place-items: center; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text-secondary); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.chat-workspace .chat-media-audio-play .chat-r2-icon { width: 22px; height: 22px; fill: currentColor; }
@media (hover: hover) {
    .chat-workspace button.chat-media-audio-play:hover { background: color-mix(in oklab, currentColor 10%, transparent); }
}
.chat-workspace .chat-media-audio-track { display: flex; flex: 1 1 auto; align-items: center; min-width: 0; height: 24px; }
/* Más peso que el fondo y el borde generales de los campos (color-controls.css, 0,3,1): el control deslizante no es un campo. */
.chat-workspace .chat-media-audio input.chat-media-audio-seek[type="range"] { width: 100%; height: 24px; margin: 0; padding: 0; border: 0; background: transparent; cursor: pointer; appearance: none; -webkit-appearance: none; }
.chat-workspace .chat-media-audio-seek::-webkit-slider-runnable-track { height: 4px; border-radius: 2px; background: linear-gradient(to right, var(--chat-accent) var(--chat-media-progress, 0%), color-mix(in oklab, var(--chat-text) 22%, transparent) var(--chat-media-progress, 0%)); }
.chat-workspace .chat-media-audio-seek::-moz-range-track { height: 4px; border-radius: 2px; background: linear-gradient(to right, var(--chat-accent) var(--chat-media-progress, 0%), color-mix(in oklab, var(--chat-text) 22%, transparent) var(--chat-media-progress, 0%)); }
.chat-workspace .chat-media-audio-seek::-webkit-slider-thumb { width: 14px; height: 14px; margin-top: -5px; border: 0; border-radius: 50%; background: var(--chat-accent); -webkit-appearance: none; appearance: none; }
.chat-workspace .chat-media-audio-seek::-moz-range-thumb { width: 14px; height: 14px; border: 0; border-radius: 50%; background: var(--chat-accent); }
.chat-workspace .chat-media-audio input.chat-media-audio-seek[type="range"]:disabled { cursor: default; opacity: 1; background: transparent; }
.chat-workspace .chat-media-audio-seek:focus-visible { outline: none; box-shadow: none; }
.chat-workspace .chat-media-audio-seek:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 2px var(--msg-bg, var(--chat-list-background)), 0 0 0 4px var(--focus-ring-accent, var(--chat-accent)); }
.chat-workspace .chat-media-audio-seek:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 2px var(--msg-bg, var(--chat-list-background)), 0 0 0 4px var(--focus-ring-accent, var(--chat-accent)); }
.chat-workspace .chat-media-audio[aria-busy] .chat-media-audio-track::before { content: ""; width: 100%; height: 4px; border-radius: 2px; background: color-mix(in oklab, var(--chat-text) 22%, transparent); }
.chat-workspace .chat-media-audio-time { position: absolute; left: 100px; bottom: -3px; color: var(--chat-text-tertiary); font-size: 11px; line-height: 1.42; font-variant-numeric: tabular-nums; }
.chat-workspace .chat .msg .chat-media-audio > .msg-meta { inset: auto 0 -3px auto; }
.chat-workspace .chat-media-voice { position: relative; flex: none; width: 44px; height: 44px; }
.chat-workspace .chat-media-voice-avatar { --chat-avatar-background: oklch(0.93 0.035 var(--chat-avatar-hue, 50)); --chat-avatar-text: oklch(0.42 0.08 var(--chat-avatar-hue, 50)); display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--chat-avatar-background); color: var(--chat-avatar-text); font-size: 15px; font-weight: 600; }
.chat-workspace .chat-media-voice-avatar.agent { background: var(--chat-ai-soft); color: var(--chat-ai-text); }
.chat-workspace .chat-media-voice-avatar > .chat-avatar-content { display: grid; place-items: center; }
.chat-workspace .chat-media-voice-avatar .chat-r2-icon { width: 22px; height: 22px; }
:root[data-theme="dark"] .chat-workspace .chat-media-voice-avatar:not(.agent) { background: oklch(.32 .035 var(--chat-avatar-hue,50)); color: oklch(.85 .05 var(--chat-avatar-hue,50)); }
.chat-workspace .chat-media-voice-mic { position: absolute; right: -3px; bottom: -2px; display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--msg-bg, var(--chat-list-background)); color: var(--chat-accent); }
.chat-workspace .chat-media-voice-mic .chat-r2-icon { width: 14px; height: 14px; stroke-width: 2.25; }
/* Documento: tarjeta con el ícono de su tipo, el nombre y Descargar; debajo «PDF · 1,2 MB» y la hora. */
.chat-workspace .chat-media-document { width: 300px; max-width: 100%; margin-top: 1px; }
.chat-workspace .chat-media-document-card { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 8px 4px 8px 10px; border-radius: 8px; background: color-mix(in oklab, var(--chat-text) 6%, transparent); }
.chat-workspace .chat-media-document-icon { display: grid; place-items: center; width: 36px; height: 40px; color: var(--chat-accent-text); }
.chat-workspace .chat-media-document-icon .chat-r2-icon { width: 30px; height: 30px; stroke-width: 1.5; }
.chat-workspace .chat-media-document-name { display: -webkit-box; overflow: hidden; font-size: 14px; font-weight: 500; line-height: 1.35; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.chat-workspace .chat-media-document-foot { display: flex; align-items: center; min-height: 18px; padding: 4px 64px 0 2px; }
.chat-workspace .chat-media-document-foot small { color: var(--chat-text-secondary); font-size: 12px; line-height: 1.3; }
/* Estados (descargando, no se pudo, ya no está): una fila; sin pie, la hora en su línea debajo. */
.chat-workspace .chat-media-state { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin: 1px 0 0; padding: 10px; border-radius: 8px; background: color-mix(in oklab, var(--chat-text) 6%, transparent); color: var(--chat-text-secondary); font-size: 13.5px; }
.chat-workspace .chat-media-state-icon { flex: none; width: 20px; height: 20px; color: var(--chat-text-tertiary); }
.chat-workspace .chat-media-state:is([data-media-state="failed"], [data-media-state="load-failed"]) .chat-media-state-icon { color: var(--error); }
.chat-workspace .chat-media-state-text { display: flex; flex: 1 1 140px; flex-direction: column; min-width: 0; }
.chat-workspace .chat-media-state-name { overflow: hidden; color: var(--chat-text-tertiary); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-media-foot { min-height: 18px; }
.chat-workspace .msg.msg-media:not(.msg-visual) { min-width: min(240px, 100%); }
.chat-workspace .chat-media-retry { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 12px; font-size: 13px; white-space: nowrap; }
.chat-workspace .chat-media-retry .chat-r2-icon { width: 15px; height: 15px; }

/* --- Visor de imágenes: a pantalla completa sobre un fondo oscuro; ‹ › recorren las de la conversación. --- */
.chat-workspace dialog.chat-media-viewer { position: fixed; inset: 0; width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 72px 80px 24px; border: 0; background: transparent; box-shadow: none; color: #FFFFFF; }
.chat-workspace dialog.chat-media-viewer[open] { display: flex; align-items: center; justify-content: center; }
.chat-workspace dialog.chat-media-viewer::backdrop { background: rgb(30 26 23); }
.chat-workspace .chat-media-viewer-bar { position: absolute; top: 8px; right: 8px; left: 20px; display: flex; align-items: center; gap: 4px; }
.chat-workspace .chat-media-viewer-who { display: flex; flex-direction: column; min-width: 0; margin-right: auto; line-height: 1.3; }
.chat-workspace .chat-media-viewer-who strong { overflow: hidden; font-size: 15px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-media-viewer-who span { color: rgb(255 255 255 / .82); font-size: 12.5px; }
.chat-workspace .chat-media-viewer-action,
.chat-workspace .chat-media-viewer-nav { display: grid; flex: none; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: #FFFFFF; cursor: pointer; }
.chat-workspace .chat-media-viewer-action .chat-r2-icon { width: 22px; height: 22px; }
.chat-workspace .chat-media-viewer-nav { position: absolute; top: 0; bottom: 0; width: 48px; height: 48px; margin: auto 0; background: rgb(255 255 255 / .12); }
.chat-workspace .chat-media-viewer-nav[data-direction="previous"] { left: 16px; }
.chat-workspace .chat-media-viewer-nav[data-direction="next"] { right: 16px; }
.chat-workspace .chat-media-viewer-nav .chat-r2-icon { width: 26px; height: 26px; }
@media (hover: hover) {
    .chat-workspace :is(.chat-media-viewer-action, .chat-media-viewer-nav):hover { background: rgb(255 255 255 / .2); }
}
.chat-workspace :is(.chat-media-viewer-action, .chat-media-viewer-nav):active { background: rgb(255 255 255 / .26); }
.chat-workspace .chat-media-viewer-figure { display: flex; flex-direction: column; align-items: center; gap: 12px; max-width: 100%; max-height: 100%; min-height: 0; margin: 0; }
.chat-workspace .chat-media-viewer-image { display: block; max-width: 100%; max-height: calc(100dvh - 140px); min-height: 0; border-radius: 4px; object-fit: contain; }
.chat-workspace .chat-media-viewer-figure figcaption { max-width: 640px; color: #FFFFFF; font-size: 14px; line-height: 1.42; text-align: center; overflow-wrap: anywhere; }

/* --- Celular: todo lo que se toca mide 44 px; el panel ocupa toda la conversación y el menú del clip es la hoja. --- */
@media (max-width: 767px) {
    .chat-workspace .human-composer form[data-media-composer] > textarea { min-height: 44px; padding-block: 11px; }
    .chat-workspace .human-composer form[data-media-composer] > :is(.chat-schedule-composer, .chat-send-button),
    .chat-workspace .chat-attach-composer,
    .chat-workspace .human-composer .chat-mic-button,
    .chat-workspace .chat-recorder-action,
    .chat-workspace .chat-media-download,
    .chat-workspace .human-composer .chat-recorder .chat-recorder-send,
    .chat-workspace .chat-media-audio-play { width: 44px; min-width: 44px; height: 44px; min-height: 44px; }
    .chat-workspace .chat-media-retry { min-height: 44px; }
    .chat-workspace .chat-media-audio input.chat-media-audio-seek[type="range"] { height: 44px; }
    .chat-workspace .chat-media-audio-track { height: 44px; }
    .chat-workspace .chat-media-audio-time { left: 104px; }
    .chat-workspace .chat-attach-menu[open] > .chat-attach-sheet-backdrop { display: block; position: fixed; inset: 0; z-index: 90; padding: 0; border: 0; border-radius: 0; background: var(--ui-sheet-overlay); cursor: default; }
    .chat-workspace .chat-attach-menu > .chat-attach-menu-items { position: fixed; inset: auto 0 0 0; z-index: 91; width: auto; min-width: 0; max-width: none; max-height: 85dvh; overflow-y: auto; padding: 8px 8px calc(20px + env(safe-area-inset-bottom, 0px)); border: 0; border-radius: 18px 18px 0 0; background: var(--chat-list-background); box-shadow: 0 -8px 32px rgba(42,36,32,.16); }
    .chat-workspace .chat-attach-menu-items > .bheli-bottom-sheet > .bheli-sheet-handle { margin-bottom: 4px; }
    .chat-workspace .chat-attach-menu-items button { min-height: 52px; border-radius: 12px; font-size: 15px; }
    .chat-workspace .chat-attach-host { z-index: 40; }
    .chat-workspace .chat-attach-head { min-height: 56px; padding: 6px 4px; }
    .chat-workspace .chat-attach-close { width: 44px; height: 44px; }
    .chat-workspace .chat-attach-stage { padding: 4px 12px 12px; }
    .chat-workspace .chat-attach-compose { padding: 0 12px 12px; }
    .chat-workspace .chat-attach-caption textarea { font-size: 16px; }
    /* Como WhatsApp en el celular: las miniaturas en su fila (con «+» primero, siempre a la vista) y debajo el comentario
       con Enviar al lado; la tira ya no pasa por debajo de Enviar. */
    .chat-workspace .chat-attach-panel { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "head head" "stage stage" "strip strip" "compose send"; }
    .chat-workspace .chat-attach-head { grid-area: head; }
    .chat-workspace .chat-attach-stage { grid-area: stage; }
    .chat-workspace .chat-attach-foot { display: contents; }
    .chat-workspace .chat-attach-strip { grid-area: strip; justify-content: flex-start; gap: 16px; padding: 18px 16px 10px; border-top: 1px solid var(--chat-border); }
    .chat-workspace .chat-attach-add { order: -1; }
    .chat-workspace .chat-attach-compose { grid-area: compose; padding: 0 8px calc(12px + env(safe-area-inset-bottom, 0px)) 12px; }
    .chat-workspace .chat-attach-compose > * { width: 100%; }
    .chat-workspace .chat-attach-send { grid-area: send; align-self: end; width: 48px; height: 48px; margin: 0 12px calc(12px + env(safe-area-inset-bottom, 0px)) 0; }
    .chat-workspace .chat-attach-thumb, .chat-workspace .chat-attach-add { width: 56px; height: 56px; }
    .chat-workspace .chat-attach-thumb-remove { top: -16px; right: -16px; width: 44px; height: 44px; }
    .chat-workspace .chat-attach-thumb-remove::before { inset: 10px; }
    .chat-workspace .msg.msg-visual { max-width: 85%; }
    .chat-workspace dialog.chat-media-viewer { padding: 64px 8px 16px; }
    .chat-workspace .chat-media-viewer-nav { top: auto; bottom: 16px; margin: 0; }
}
/* Pantallas táctiles: la × de cada miniatura siempre a la vista y con su zona de 44 px. */
@media (hover: none) {
    .chat-workspace .chat-attach-thumb-remove { opacity: 1; pointer-events: auto; top: -16px; right: -16px; width: 44px; height: 44px; }
    .chat-workspace .chat-attach-thumb-remove::before { inset: 10px; }
}
@media (max-width: 767px) {
    .chat-workspace .chat-attach-thumb-remove { opacity: 1; pointer-events: auto; }
}
@media (prefers-reduced-motion: reduce) {
    .chat-workspace .chat-recorder-dot.live { animation: none; }
}

/* --- Revisión independiente (2026-10-31) --- */
/* El menú del clip abierto queda por encima de las horas de las burbujas (que tienen su propia capa). */
.chat-workspace .human-composer[data-attach-menu="open"] { z-index: 30; }
/* La miniatura elegida muestra siempre su ×; las demás al pasar el mouse o con el foco. */
.chat-workspace .chat-attach-thumb[data-selected] .chat-attach-thumb-remove { opacity: 1; pointer-events: auto; }
/* Por qué Enviar está apagado (un adjunto con error). */
.chat-workspace .chat-attach-hint { margin: 0; color: var(--chat-text-secondary); font-size: 12.5px; text-align: center; }
/* Ícono del audio (no nota de voz), en el lugar del avatar: audífonos en el tinte terracota (C26). */
.chat-workspace .chat-media-audio-badge { display: grid; flex: none; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--chat-accent-soft); color: var(--chat-accent-text); }
.chat-workspace .chat-media-audio-badge .chat-r2-icon { width: 22px; height: 22px; }
/* Confirmar descartar con la anatomía de C12 del kit (referencia «confirmacion-destino»): 440 px, radio 16, título
   16/700, explicación 13,5 px y Cancelar + Descartar a la derecha en píldoras de 40 px (44 en el celular). */
.chat-workspace dialog.chat-attach-confirm { width: min(440px, calc(100vw - 32px)); max-width: none; padding: 20px; border: 1px solid var(--chat-border); border-radius: 16px; background: var(--chat-list-background); color: var(--chat-text); box-shadow: var(--chat-menu-shadow); }
.chat-workspace dialog.chat-attach-confirm[open] { display: flex; flex-direction: column; gap: 12px; }
.chat-workspace dialog.chat-attach-confirm h2 { margin: 0; font-size: 16px; font-weight: 700; line-height: 1.35; }
.chat-workspace dialog.chat-attach-confirm p { margin: 0; color: var(--chat-text-secondary); font-size: 13.5px; line-height: 1.42; }
.chat-workspace dialog.chat-attach-confirm .confirmation-actions { display: flex; justify-content: flex-end; gap: 8px; margin: 8px 0 0; }
.chat-workspace dialog.chat-attach-confirm .confirmation-actions .button { height: 40px; min-height: 40px; padding: 0 18px; border-radius: 999px; font-size: 14px; font-weight: 600; white-space: nowrap; }
/* Celular: el panel va en una ventana nativa a pantalla completa (capa superior), como WhatsApp. */
.chat-workspace dialog.chat-attach-host { position: fixed; inset: 0; width: 100%; max-width: none; height: 100%; max-height: none; margin: 0; padding: 0; border: 0; overflow: hidden; background: var(--chat-thread-background); color: var(--chat-text); }
.chat-workspace dialog.chat-attach-host[open] { display: flex; flex-direction: column; }
.chat-workspace dialog.chat-attach-host::backdrop { background: transparent; }
@media (max-width: 767px) {
    .chat-workspace dialog.chat-attach-confirm .confirmation-actions .button { height: 44px; min-height: 44px; }
}

/* ===== C56 · Cuadro de texto del chat (kit 1.14.10, BHELI_CHAT_CUADRO_TEXTO_R1). Escritorio: Adjuntar · Emojis · campo ·
   Programar · Nota de voz o Enviar, en una píldora de 48 px; con una línea, el texto y cada ícono comparten el centro
   (24 px desde arriba): botones alineados abajo, los de 38 px con 1 px de margen abajo. Solo Enviar lleva relleno. ===== */
.chat-workspace:where(:not(.chat-dock-window[data-fullscreen="false"] *)) .human-composer form[data-media-composer] > :is(.chat-attach-composer, .chat-schedule-composer),
.chat-workspace:where(:not(.chat-dock-window[data-fullscreen="false"] *)) .human-composer form[data-media-composer] > .chat-attach-menu > .chat-attach-composer,
.chat-workspace:where(:not(.chat-dock-window[data-fullscreen="false"] *)) .human-composer form[data-media-composer] .chat-emoji-button { width: 38px; min-width: 38px; height: 38px; min-height: 38px; margin-bottom: 1px; }
.chat-workspace:where(:not(.chat-dock-window[data-fullscreen="false"] *)) .human-composer form[data-media-composer] :is(.chat-attach-composer, .chat-emoji-button, .chat-schedule-composer, .chat-mic-button) { color: var(--chat-composer-icon); }
.chat-workspace:where(:not(.chat-dock-window[data-fullscreen="false"] *)) .human-composer form[data-media-composer] :is(.chat-attach-composer, .chat-emoji-button, .chat-schedule-composer, .chat-mic-button) .chat-r2-icon { width: 19px; height: 19px; }
/* C56 · superficie en claro: sombra 0 1px 2px .08 (oscuro: la superficie del tema sobre el fondo, sin cambio). */
:root:not([data-theme="dark"]) .chat-workspace:where(:not(.chat-dock-window[data-fullscreen="false"] *)) .human-composer form[data-media-composer] { box-shadow: 0 1px 2px rgba(42, 36, 32, .08); }
/* Un solo foco: con el foco en el panel de emojis, la píldora no dibuja el suyo (el buscador ya lo tiene). */
.chat-workspace .human-composer form[data-media-composer]:has(.chat-emoji-panel:focus-within) { outline: none; }
/* El Dock conserva su línea de antes (1,4 con su texto de 16 px). */
.chat-dock-window[data-fullscreen="false"] .human-composer textarea { line-height: 1.4; }
.chat-workspace .human-composer form[data-media-composer] > .chat-mic-button { width: 40px; min-width: 40px; height: 40px; min-height: 40px; }
/* Emojis: botón de ícono de C04 (sin fondo, hover y presionado como Adjuntar). */
.chat-workspace .chat-emoji { position: relative; display: flex; flex: none; }
.chat-workspace .chat-emoji-button { display: grid; place-items: center; padding: 0; border: 0; border-radius: 50%; background: transparent; cursor: pointer; font: inherit; -webkit-tap-highlight-color: transparent; }
@media (hover: hover) {
    .chat-workspace .chat-emoji-button:not(:disabled):hover { background: var(--chat-neutral-soft); color: var(--chat-text); }
}
.chat-workspace .chat-emoji-button:not(:disabled):active { background: var(--chat-active-background); }
.chat-workspace .chat-emoji-button[aria-expanded="true"] { background: var(--chat-neutral-soft); color: var(--chat-text); }
.chat-workspace .human-composer .chat-emoji-button:disabled { background: transparent; color: var(--chat-text-tertiary); opacity: .55; cursor: default; }
/* Panel de emojis: flotante como un menú de C11, 352 × 380 px, sobre el botón y alineado a su borde izquierdo, a 8 px. */
.chat-workspace .human-composer:has(.chat-emoji-panel) { z-index: 30; }
.chat-workspace .chat-emoji-panel { position: absolute; z-index: 20; left: 0; bottom: calc(100% + 8px); display: flex; flex-direction: column; box-sizing: border-box; width: 352px; height: 380px; border: 1px solid var(--ui-menu-border); border-radius: 14px; background: var(--chat-list-background); color: var(--chat-text); box-shadow: var(--chat-menu-shadow); overflow: hidden; }
.chat-workspace .chat-emoji-panel .chat-emoji-search { flex: none; margin: 8px 8px 4px; }
.chat-workspace .chat-emoji-scroll { flex: 1; min-height: 0; overflow-y: auto; padding: 0 4px 8px; overscroll-behavior: contain; scrollbar-width: thin; }
.chat-workspace .chat-emoji-rows { position: relative; width: 100%; }
.chat-workspace .chat-emoji-rows > * { position: absolute; top: 0; left: 0; right: 0; }
/* Título de grupo de C11: 11,5 px en mayúsculas, el gris terciario; fila de 30 px con el texto abajo. */
.chat-workspace .chat-emoji-group-title { display: flex; align-items: flex-end; box-sizing: border-box; height: 30px; padding: 0 8px 6px; color: var(--chat-text-tertiary); font-size: 11.5px; font-weight: 600; letter-spacing: .04em; line-height: 16px; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.chat-workspace .chat-emoji-grid { display: grid; grid-template-columns: repeat(9, 36px); justify-content: center; height: 36px; }
.chat-workspace .chat-emoji-cell { display: grid; place-items: center; width: 36px; height: 36px; padding: 0; border: 0; border-radius: 8px; background: transparent; font: inherit; font-size: 22px; line-height: 1; cursor: pointer; -webkit-tap-highlight-color: transparent; }
@media (hover: hover) {
    .chat-workspace .chat-emoji-cell:hover { background: var(--chat-active-background); }
}
.chat-workspace .chat-emoji-cell:active { background: var(--chat-accent-soft); }
.chat-workspace .chat-emoji-state { margin: 0; padding: 16px 12px; color: var(--chat-text-secondary); font-size: 13.5px; line-height: 1.4; }
.chat-workspace .chat-emoji-retry { padding: 0; border: 0; background: transparent; color: var(--chat-accent-text, var(--chat-accent)); font: inherit; font-weight: 600; cursor: pointer; }
@media (hover: hover) {
    .chat-workspace .chat-emoji-retry:hover { text-decoration: underline; }
}
/* Celular (≤ 767 px) y Dock (C44): Adjuntar · campo · Nota de voz o Enviar. Sin Emojis (el teclado trae los suyos) y sin
   Programar (se programa desde ⋮ de la conversación); la pantalla completa del Dock es Conversaciones y ahí rige C56. */
.chat-dock-window[data-fullscreen="false"] .human-composer :is(.chat-emoji, .chat-schedule-composer) { display: none; }
@media (max-width: 767px) {
    .chat-workspace .human-composer :is(.chat-emoji, .chat-schedule-composer) { display: none; }
    /* C56 · celular: margen 8 · 16 · 14 (el Dock conserva el suyo). */
    .chat-workspace:where(:not(.chat-dock-window[data-fullscreen="false"] *)) .human-composer { padding: 8px 16px calc(14px + env(safe-area-inset-bottom, 0px)); }
    .chat-workspace .human-composer form[data-media-composer] > .chat-attach-menu > .chat-attach-composer,
    .chat-workspace .human-composer form[data-media-composer] > .chat-attach-composer,
    .chat-workspace .human-composer form[data-media-composer] > .chat-mic-button { width: 44px; min-width: 44px; height: 44px; min-height: 44px; margin-bottom: 0; }
    .chat-workspace .human-composer textarea { max-height: calc(5 * 22px + 22px); }
}

/* ===== ⋮ de la conversación (BHELI_CHAT_CUADRO_TEXTO_R2 · C11 1.14.11, C27, C08) ===== */
/* Opciones de menú: presionado con el tinte suave (C11; un claro nunca se vuelve oscuro, ver color-controls.css). */
.chat-workspace :is(.chat-thread-menu-items, .chat-assign-menu-items) .chat-menu-option:not(:disabled):active,
.chat-workspace .chat-transfer-option:active { background: var(--chat-accent-soft); }
.chat-workspace .chat-menu-more > .chat-r2-icon:last-child { width: 16px; height: 16px; margin-left: auto; color: var(--chat-text-tertiary); }
/* Celular: la hoja inferior compartida (C27) con las medidas de la referencia aprobada «menu-conversacion-celular-oscuro»
   (Referencia Cuadro de texto celular menu.dc.html): relleno 8 · 8 · 14, opciones de 44 px con relleno 0 · 12, radio 10,
   texto 14 px, 12 px entre ícono y texto, íconos de 18 px en el gris de los íconos y separador con 6 · 12 de margen. */
.chat-workspace dialog.chat-thread-sheet .chat-thread-menu-items { position: static; display: flex; flex-direction: column; gap: 0; width: auto; min-width: 0; max-width: none; padding: 0 8px 14px; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.chat-workspace dialog.chat-thread-sheet :is(.chat-thread-menu-items, .chat-sheet-options) > :is(a, button) { min-height: 44px; height: auto; padding: 0 12px; gap: 12px; border-radius: 10px; font-size: 14px; white-space: normal; }
.chat-workspace dialog.chat-thread-sheet :is(.chat-thread-menu-items, .chat-sheet-options) > :is(a, button) > svg:first-child { flex: 0 0 18px; width: 18px; height: 18px; }
.chat-workspace dialog.chat-thread-sheet :is(.chat-thread-menu-items, .chat-sheet-options) > :is(a, button):not(:disabled):not([aria-disabled="true"]) > svg:first-child { color: var(--chat-composer-icon); }
.chat-workspace dialog.chat-thread-sheet .chat-menu-divider { margin: 6px 12px; }
.chat-workspace dialog.chat-thread-sheet .chat-sheet-options { position: static; display: flex; flex-direction: column; gap: 0; width: auto; min-width: 0; max-width: none; padding: 0 8px 14px; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
/* La hoja se desplaza por dentro cuando no entra (C11: nunca queda cortada); el encabezado «← …» queda arriba. */
.chat-workspace .chat-thread-sheet-body { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; outline: none; }
.chat-workspace dialog.chat-thread-sheet .chat-sheet-head { position: sticky; top: 0; z-index: 1; flex: none; background: var(--chat-list-background); }
/* «← {opción}»: ← de 44 px y el título, como «← Elegir fechas» (C07) y «← Ordenar por» (Contactos). */
.chat-workspace .chat-sheet-head { display: flex; align-items: center; gap: 4px; min-height: 56px; padding: 0 8px; }
.chat-workspace .chat-sheet-back { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text); font: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; }
@media (hover: hover) { .chat-workspace .chat-sheet-back:hover { background: var(--chat-neutral-soft); } }
.chat-workspace .chat-sheet-back:active { background: var(--chat-active-background); }
.chat-workspace .chat-sheet-back .chat-r2-icon { width: 20px; height: 20px; }
.chat-workspace .chat-sheet-title { min-width: 0; overflow: hidden; font-size: 17px; font-weight: 600; line-height: 24px; text-overflow: ellipsis; white-space: nowrap; }
/* «Transferir» (C08, nunca <select>): título, selector de 38 px a todo el ancho y el botón secundario de 36 px. */
.chat-workspace .chat-thread-menu-items .chat-transfer-menu-item { display: grid; gap: 8px; padding: 8px 10px; }
.chat-workspace .chat-transfer-title { font-size: 13px; font-weight: 600; color: var(--chat-text); }
.chat-workspace .chat-transfer-select { position: relative; }
.chat-workspace .chat-transfer-trigger { display: flex; align-items: center; justify-content: space-between; gap: 8px; box-sizing: border-box; width: 100%; height: 38px; padding: 0 12px; border: 1px solid var(--control-border, var(--chat-chip-border)); border-radius: 10px; background: var(--chat-list-background); color: var(--chat-text); font: inherit; font-size: 14px; text-align: start; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.chat-workspace .chat-transfer-trigger > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* V1: el gris terciario quedaba en 4,49:1 sobre el selector abierto; el secundario pasa 4,5 en los dos temas. */
.chat-workspace .chat-transfer-trigger .chat-transfer-placeholder { color: var(--chat-text-secondary); }
.chat-workspace .chat-transfer-trigger .chat-r2-icon { flex: none; width: 16px; height: 16px; color: var(--chat-text-secondary); }
@media (hover: hover) { .chat-workspace .chat-transfer-trigger:hover { background: var(--chat-neutral-soft); } }
.chat-workspace .chat-transfer-trigger:active, .chat-workspace .chat-transfer-trigger[aria-expanded="true"] { background: var(--chat-active-background); }
.chat-workspace .chat-transfer-trigger:focus-visible { outline: 2px solid var(--chat-accent); outline-offset: 2px; }
/* La lista mide al menos el ancho del selector (C08 1.14.9) y se desplaza por dentro. */
.chat-workspace .chat-transfer-popup { position: absolute; z-index: 30; top: calc(100% + 4px); left: auto; right: 0; box-sizing: border-box; min-width: 100%; width: max-content; max-width: min(480px, calc(100vw - 16px)); padding: 6px; border: 1px solid var(--ui-menu-border); border-radius: 14px; background: var(--chat-list-background); box-shadow: var(--chat-menu-shadow); }
.chat-workspace .chat-transfer-options { display: grid; gap: 4px; min-width: 0; }
.chat-workspace .chat-transfer-search { margin: 0 0 4px; }
.chat-workspace .chat-transfer-list { display: grid; gap: 2px; max-height: 240px; overflow-y: auto; overscroll-behavior: contain; }
.chat-workspace .chat-transfer-option { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 40px; padding: 0 10px; border: 0; border-radius: 10px; background: transparent; color: var(--chat-text); font: inherit; font-size: 14px; text-align: start; cursor: pointer; -webkit-tap-highlight-color: transparent; }
/* La elegida se marca con ✓ (C08); sin negrita: cambiar el peso obligaba a recalcular el layout al elegir. */
.chat-workspace .chat-transfer-option .chat-transfer-option-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-transfer-option .chat-r2-icon { flex: none; width: 16px; height: 16px; color: var(--chat-accent-text, var(--chat-accent)); }
@media (hover: hover) { .chat-workspace .chat-transfer-option:hover { background: var(--chat-neutral-soft); } }
.chat-workspace .chat-transfer-empty { margin: 0; padding: 10px; color: var(--chat-text-secondary); font-size: 13.5px; }
.chat-workspace .chat-transfer-submit { width: 100%; height: 36px; min-height: 36px; }
/* Dentro de ⋮ las opciones son transparentes y a la izquierda: «Transferir» recupera el secundario de C04 (fondo, hover,
   presionado y desactivado). */
.chat-workspace .chat-thread-menu-items .chat-transfer-submit { justify-content: center; padding: 0 14px; border: 0; border-radius: 10px; background: var(--button-secondary-background); color: var(--button-secondary-text); font-weight: 600; }
@media (hover: hover) { .chat-workspace .chat-thread-menu-items .chat-transfer-submit:not(:disabled):hover { background: var(--button-secondary-hover); } }
.chat-workspace .chat-thread-menu-items .chat-transfer-submit:not(:disabled):active { background: light-dark(#E3D9CF, var(--background-surface-raised)); }
.chat-workspace .chat-thread-menu-items .chat-transfer-submit:disabled { background: var(--control-disabled-background); color: var(--control-disabled-text); cursor: default; }
/* «Reasignar…» en ⋮ (escritorio): una opción más, a la izquierda, con chevron a la derecha. */
.chat-workspace .chat-thread-menu-items .chat-assign-header { display: grid; }
.chat-workspace .chat-thread-menu-items .chat-assign-header > .chat-menu-option { justify-content: flex-start; width: 100%; padding: 8px 10px; background: transparent; font-weight: 400; }
.chat-workspace .chat-thread-menu-items .chat-assign-header > .chat-menu-option[aria-expanded="true"] { background: var(--chat-active-background); }
/* Dentro de ⋮ las reglas de las opciones (44 px, relleno) no aplican al selector ni a su lista (C08: 38 y 40 px). */
.chat-workspace .chat-thread-menu-items .chat-transfer-trigger { min-height: 38px; height: 38px; padding: 0 12px; }
.chat-workspace .chat-thread-menu-items .chat-transfer-option { min-height: 40px; padding: 0 10px; }
/* En la hoja: la lista ocupa la hoja (sin popup) y cada bandeja mide 52 px. */
.chat-workspace dialog.chat-thread-sheet .chat-transfer-options { padding: 0 8px 14px; }
.chat-workspace dialog.chat-thread-sheet .chat-transfer-list { max-height: none; overflow: visible; }
.chat-workspace dialog.chat-thread-sheet .chat-transfer-option { min-height: 44px; padding: 0 12px; font-size: 14px; }
.chat-workspace dialog.chat-thread-sheet .chat-thread-menu-items .chat-transfer-menu-item { padding: 8px 12px; }
.chat-workspace dialog.chat-thread-sheet .chat-transfer-trigger { height: 44px; }
.chat-workspace dialog.chat-thread-sheet .chat-transfer-submit { height: 44px; min-height: 44px; }

/* Revisión R2 · «Transferir» desactivado también en oscuro: la regla E1 de las opciones desactivadas de los menús le
   quitaba el fondo (C04: el secundario desactivado conserva su forma). :is(:root, …) solo sube la especificidad. */
:is(:root, :root[data-theme]) .chat-workspace .chat-thread-menu-items .chat-transfer-submit:is(:disabled, :disabled:hover) { background: var(--control-disabled-background); color: var(--control-disabled-text); }
/* × del buscador de Transferir (C06): 32 px redonda, sin las medidas de las opciones del menú; hover y presionado. */
.chat-workspace .chat-transfer-search > .chat-transfer-search-clear { display: grid; place-items: center; flex: none; width: 32px; height: 32px; min-height: 32px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--chat-text-secondary); }
.chat-workspace .chat-transfer-search > .chat-transfer-search-clear > .chat-r2-icon,
.chat-workspace .chat-thread-menu-items .chat-transfer-search > .chat-transfer-search-clear > svg:first-child { flex: none; width: 16px; height: 16px; }
@media (hover: hover) { .chat-workspace :is(.chat-transfer-search, .chat-emoji-search) > button:hover { background: var(--chat-neutral-soft); } }
.chat-workspace :is(.chat-transfer-search, .chat-emoji-search) > button:active { background: var(--chat-active-background); }
.chat-workspace .chat-emoji-retry:active { color: var(--chat-accent); }
/* Vacío de la búsqueda de bandejas (C06/C18): «Sin resultados» · «No hay bandejas con “…”.» · «Borrar búsqueda». */
.chat-workspace .chat-transfer-empty { display: grid; justify-items: start; gap: 4px; padding: 10px; }
.chat-workspace .chat-transfer-empty > strong { color: var(--chat-text); font-size: 14px; font-weight: 600; }
.chat-workspace .chat-transfer-empty > span { color: var(--chat-text-secondary); font-size: 13.5px; }
.chat-workspace .chat-transfer-empty > .chat-transfer-empty-clear { min-height: 32px; width: auto; padding: 0; border: 0; background: transparent; color: var(--chat-accent-text, var(--chat-accent)); font: inherit; font-size: 13.5px; font-weight: 600; cursor: pointer; }
/* Dock de escritorio: ⋮ se desplaza dentro de la ventana; la lista va en línea bajo el selector (si flotara quedaría
   recortada por el menú) y empuja «Transferir». */
.chat-dock-window[data-fullscreen="false"] .chat-workspace .chat-transfer-popup { position: static; width: auto; max-width: none; margin-top: 4px; box-shadow: none; }
.chat-workspace dialog.chat-thread-sheet .chat-transfer-empty > .chat-transfer-empty-clear { min-height: 44px; }
/* Rendimiento: la lista de bandejas se abre y se cierra con una clase, la búsqueda oculta con una clase y el ✓ está en
   todas las bandejas y se ve solo en la elegida (elegir no inserta ni quita elementos de la página). */
/* Cerrada: oculta sin salir del layout, así abrirla o cerrarla no recalcula el layout (el desplegable nativo de antes era
   una ventana del sistema). En el Dock va en línea: ahí se quita. Sin capa propia (will-change): con ella componer
   costaba más de lo que ahorraba al pintar. */
.chat-workspace .chat-transfer-popup:not(.is-open) { visibility: hidden; pointer-events: none; }
.chat-dock-window[data-fullscreen="false"] .chat-workspace .chat-transfer-popup:not(.is-open) { display: none; }
.chat-workspace .chat-transfer-option.is-filtered { display: none; }
.chat-workspace .chat-transfer-option:not([aria-selected="true"]) > .chat-r2-icon { visibility: hidden; }
/* El nombre elegido no cambia el ancho de ⋮ (se corta con «…» dentro del selector): elegir no recalcula el layout del menú. */
.chat-workspace .chat-transfer-trigger > .chat-transfer-values { display: grid; flex: 1 1 auto; min-width: 0; contain: inline-size; }
.chat-workspace .chat-transfer-values > span { grid-area: 1 / 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-workspace .chat-transfer-values > span:not([data-current]) { visibility: hidden; }
/* Dock D1: window geometry only; its content is the existing chat. */
.chat-dock-window { --dock-top:56px; color:var(--text); }
.chat-dock-window [hidden] { display:none !important; }
.chat-dock-launcher { position:fixed;right:20px;bottom:20px;z-index:40;display:flex;align-items:center;gap:10px;height:48px;padding:0 10px 0 16px;border:1px solid #E3DAD2;border-radius:999px;background:var(--surface,#fff);color:var(--text,#2A2420);box-shadow:var(--chat-dock-launcher-shadow);cursor:pointer; }
.chat-dock-launcher:hover { background:var(--surface-muted,#F6F1EC); }
.chat-dock-launcher>svg { width:20px;height:20px;color:var(--primary,oklch(.55 .14 40)); }
.chat-dock-caption {font-size:14.5px;font-weight:600;}
.chat-dock-badge {display:grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:999px;background:var(--primary);color:var(--primary-contrast,#fff);font-size:12px;font-weight:600;}
.chat-dock-surface {position:fixed;right:20px;bottom:20px;z-index:40;width:380px;height:min(600px,calc(100dvh - 96px));border:1px solid #E3DAD2;border-radius:16px;box-shadow:0 18px 48px rgba(42,36,32,.18),0 2px 8px rgba(42,36,32,.08);overflow:hidden;background:var(--surface);padding:0;}
.chat-dock-surface>.bheli-bottom-sheet>.chat-workspace {height:100%;max-height:100%;min-height:0; margin:0;border:0;border-radius:0;}
.chat-dock-backdrop,.chat-dock-handle {display:none;}
.chat-dock-window[data-fullscreen="true"] .chat-dock-surface {left:var(--dock-full-left,0);top:var(--dock-full-top,56px);bottom:auto;right:auto;width:var(--dock-full-width,100%);height:var(--dock-full-height,calc(100dvh - 56px));border:0;border-radius:0;box-shadow:none;z-index:1;}
.chat-window-controls {display:flex;align-items:center;flex:none;gap:2px;}
.chat-window-separator {width:1px;height:20px;margin:0 4px;background:var(--border,#E3DAD2);}
.chat-window-controls :is(a,button) {display:grid;place-items:center;flex:none;width:32px;height:32px;min-width:32px;min-height:32px;border:0;border-radius:50%;padding:0;background:transparent;color:var(--text,#3E3631);cursor:pointer;}
@media(hover:hover) {.chat-window-controls :is(a,button):hover {background:var(--surface-muted,#F3EDE7);}}
.chat-window-controls svg {width:17px;height:17px;}
.chat-window-pin[aria-pressed="true"] {background:var(--primary-soft,oklch(.955 .025 50));color:var(--primary);}
.chat-dock-window[data-fullscreen="false"] .chat-list-pane {display:flex;flex-direction:column;}
.chat-dock-window[data-fullscreen="false"] .chat-list-head {order:-3;}
.chat-dock-window[data-fullscreen="false"] .chat-list-head h1 {font-size:18px;}
/* D5: sin la fila de enlaces (D4), el buscador queda a 12 px de la bandeja (C01). */
.chat-dock-window[data-fullscreen="false"] .chat-inbox-selector {order:-2;margin-bottom:12px;}
/* Medidas de escritorio de la cabecera (ventana y anclado). En la hoja del celular rige la de Conversaciones (D2, D3). */
@media(min-width:768px) {
 .chat-dock-window[data-fullscreen="false"] .chat-list-head {padding:8px;gap:2px;}
 .chat-dock-window[data-fullscreen="false"] .chat-list-head .chat-icon-action {width:32px;min-width:32px;}
 .chat-dock-window[data-fullscreen="false"] .chat-list-menu>:is(summary,[data-chat-menu-trigger]) {width:32px;min-width:32px;}
}
.chat-dock-window[data-fullscreen="false"] .chat-thread-head {padding:6px;gap:2px;min-height:60px;}
.chat-dock-window[data-fullscreen="false"] .chat-thread-back {width:32px;min-width:32px;padding:0;}
.chat-dock-window[data-fullscreen="false"] .chat-thread-back>span {display:none;}
.chat-dock-window[data-fullscreen="false"] .chat-thread-avatar {width:32px;height:32px;}
.chat-dock-window[data-fullscreen="false"] .chat-thread-identity strong {font-size:14px;}
.chat-dock-window[data-fullscreen="false"] .chat-thread-menu>:is(summary,[data-chat-menu-trigger]) {width:30px;min-width:30px;}
.chat-dock-window[data-fullscreen="false"] .chat-search-toggle {display:none;}
.chat-dock-window[data-fullscreen="false"] .chat-mobile-search-action {display:flex;}
.chat-dock-window[data-fullscreen="false"] .chat-quick-filters .chat-supervise-filter span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);}
.chat-dock-window[data-fullscreen="false"] .chat-quick-filters .chat-supervise-filter {width:36px;min-width:36px;padding:0;}
.chat-dock-window[data-fullscreen="false"] .chat-thread-identity .chat-owner-mobile {display:block;}
.chat-dock-window[data-fullscreen="false"] .chat-thread-identity:has(.chat-owner-mobile)>small:not(.chat-owner-mobile),.chat-dock-window[data-fullscreen="false"] :is(.chat-owner-header,.chat-simulation-owner,.chat-scheduled-counter) {display:none;}
.chat-dock-window[data-fullscreen="false"] .chat-ownership-actions {flex:1 0 100%;justify-content:flex-end;}
.chat-dock-window[data-fullscreen="false"] .chat-context-head {display:flex;min-height:56px;gap:8px;}
.chat-dock-window[data-fullscreen="false"] .chat-context-head h2 {font-size:17px;white-space:nowrap;}
.chat-dock-window[data-fullscreen="false"] .chat-context-back-text {display:none;}
.chat-dock-window[data-fullscreen="false"] .chat-context-return {width:44px;min-width:44px;}
@media(min-width:1200px) {
 .chat-dock-window[data-fullscreen="false"][data-mode="pinned"] .chat-dock-surface {right:0;top:var(--dock-top);bottom:0;width:400px;height:calc(100dvh - var(--dock-top));border:0;border-left:1px solid var(--border,#ECE5DE);border-radius:0;box-shadow:none;}
 .chat-dock-pinned .shell-main {margin-right:400px;}
}
/* C27 · E2.3 (EG3, E59): una pantalla del Chat que marca su raíz con data-floating-lane="scroll" (Estadísticas, Etiquetas)
   deja que el área de scroll llegue al borde de la ventana: el contenido pasa por detrás del botón Chats y el espacio del
   botón (su alto + 12 px) va dentro del scroll, como padding-bottom y scroll-padding-bottom. Las demás pantallas del shell
   no cambian. */
.app-shell .shell-main>main#main:has([data-floating-lane="scroll"]) {margin-bottom:0;padding-bottom:var(--portal-bottom-reserve,86px);scroll-padding-bottom:var(--portal-bottom-reserve,86px);}
@media(max-width:767px) {
 html:has(.chat-dock-window[data-fullscreen="false"]) main#main {padding-bottom:88px;}
 .chat-dock-launcher {right:16px;bottom:var(--dock-launcher-bottom,18px);width:56px;height:56px;padding:0;justify-content:center;border:0;background:var(--primary);color:var(--primary-contrast);box-shadow:var(--chat-dock-launcher-shadow);}
 .chat-dock-window[data-keyboard="true"] .chat-dock-launcher {display:none;}
 .chat-dock-launcher>svg {width:24px;height:24px;color:var(--primary-contrast,#fff);}
 .chat-dock-caption {display:none;}
 .chat-dock-badge {position:absolute;top:-4px;right:-4px;background:var(--surface,#fff);border:2px solid var(--primary);color:var(--primary);}
 .chat-dock-window[data-fullscreen="false"] .chat-dock-surface {left:0;right:0;bottom:var(--dock-keyboard-bottom,0px);width:100%;height:calc(var(--dock-viewport,100dvh) * .88);border:0;border-radius:18px 18px 0 0;display:flex;flex-direction:column;z-index:51;}
 .chat-dock-window[data-fullscreen="false"] .chat-dock-backdrop:not([hidden]) {display:block;position:fixed;inset:0;background:rgba(42,36,32,.35);border:0;z-index:50;}
 .chat-dock-window[data-fullscreen="false"] .chat-dock-handle {display:grid;place-items:center;height:20px;flex:none;touch-action:none;}
 .chat-dock-handle>span {width:36px;height:4px;border-radius:2px;background:var(--text-muted);}
 .chat-dock-window[data-fullscreen="false"] .chat-dock-surface>.bheli-bottom-sheet>.chat-workspace {flex:1;height:auto;min-height:0;}
 .chat-window-pin {display:none!important;}
 .chat-dock-window[data-fullscreen="false"] .chat-thread-head {gap:4px;}
}
:root[data-theme="dark"] .chat-dock-surface,:root[data-theme="dark"] .chat-dock-launcher {border-color:var(--border);}
.chat-dock-window :is(button,a):focus-visible {outline:2px solid var(--primary);outline-offset:2px;}

.chat-dock-window[data-fullscreen="false"] .chat-context-head h2 {flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;}

/* A secondary task replaces the same column, including its heading and return control. */
/* Rendimiento, sin :has() (cualquier cambio del chat recalculaba el estilo de toda la página): la vista lleva data-task-open
   con Programar abierto; la posposición va antes de la vista, así que basta el hermano (~), cuyo último paso es una clase. */
.chat-dock-window[data-fullscreen="false"] .chat-detail:has(.chat-r2-schedule-panel)>.chat-thread-head {display:none;}
.chat-dock-window[data-fullscreen="false"] .chat-detail>.chat-r2-schedule-panel~.conversation-viewport {visibility:hidden;}
.chat-dock-window[data-fullscreen="false"] .conversation-viewport[data-task-open]>:not(.chat-r2-schedule-panel) {visibility:hidden;}
.chat-dock-window[data-fullscreen="false"] .chat-r2-schedule-panel {position:absolute;inset:0;width:100%;height:100%;max-height:100%!important;border:0;border-radius:0;box-shadow:none;margin:0;padding:0;display:flex;flex-direction:column;background:var(--chat-list-background);z-index:20;}
.chat-dock-window[data-fullscreen="false"] .chat-r2-schedule-panel>header {display:flex;align-items:center;flex:none;min-height:56px;padding:6px 8px;gap:4px;border-bottom:1px solid var(--chat-border);}
.chat-dock-window[data-fullscreen="false"] .chat-r2-schedule-panel>header h2 {flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:17px;margin:0;}
.chat-dock-window[data-fullscreen="false"] .chat-r2-schedule-panel>header>a {display:grid;place-items:center;flex:none;width:44px;height:44px;}
.chat-dock-window[data-fullscreen="false"] .chat-r2-schedule-panel .chat-r2-schedule-body {padding:12px;}
.chat-dock-window[data-fullscreen="false"] .chat-r2-schedule-panel footer {padding:12px;margin:0;}
.chat-dock-window[data-fullscreen="false"] .chat-r2-schedule-panel[data-chat-snooze-panel]>form {overflow:auto;padding:12px;flex:1;min-height:0;}

/* Approved control colors; dark uses the existing theme equivalents. */
.chat-window-separator {background:#E3DAD2;}
.chat-window-controls :is(a,button) {color:#3E3631;}
@media(hover:hover) {.chat-window-controls :is(a,button):hover {background:#F3EDE7;}}
.chat-window-pin[aria-pressed="true"] {background:oklch(.955 .025 50);color:oklch(.45 .12 40);}
:root[data-theme="dark"] .chat-window-separator {background:var(--chat-border);}
:root[data-theme="dark"] .chat-window-controls :is(a,button) {color:var(--chat-text);}
@media(hover:hover) {:root[data-theme="dark"] .chat-window-controls :is(a,button):hover {background:var(--chat-search-background);}}
:root[data-theme="dark"] .chat-window-pin[aria-pressed="true"] {background:var(--chat-accent-soft);color:var(--chat-accent-text);}
@media(max-width:767px) {.chat-dock-window[data-fullscreen="false"] .chat-dock-surface {animation:chat-dock-sheet-up 90ms ease-out;}}
@keyframes chat-dock-sheet-up {from {transform:translateY(100%);} to {transform:translateY(0);}}
@media(prefers-reduced-motion:reduce) {.chat-dock-window[data-fullscreen="false"] .chat-dock-surface {animation:none;}}

/* Remove the unused narrow grid disclosure column; retain readable simulation and owner metadata. */
.chat-dock-window[data-fullscreen="false"] .chat-simulation-identity {display:flex;gap:4px;padding:0;}
.chat-dock-window[data-fullscreen="false"] .chat-contact-trigger .chat-thread-identity {flex:1;min-width:0;}
.chat-dock-window[data-fullscreen="false"] .chat-simulation-tag {padding-inline:3px;}
.chat-dock-window[data-fullscreen="false"] .chat-window-controls {gap:1px;}
.chat-dock-window[data-fullscreen="false"] .chat-thread-identity .chat-owner-mobile {display:flex;align-items:center;gap:4px;}

/* Temporary scroll range makes the same near-end message offset feasible after maximizing. */
.chat-message-list > [data-dock-anchor-tail] {flex:none;width:1px;margin-top:calc(-1 * var(--space-2));}
.chat-dock-window .chat-message-list {overflow-anchor:none;}

/* Keep standard name/owner labels readable alongside the three fixed 32px controls. */
.chat-dock-window[data-fullscreen="false"] .chat-thread-head {padding-inline:3px;gap:1px;}
.chat-dock-window[data-fullscreen="false"] .chat-simulation-tag {padding-inline:2px;}
.chat-dock-window[data-fullscreen="false"] .chat-context-head {padding:8px;gap:4px;}

/* A2 C27: the same surface and handle as the filter sheet, with a stable ChatApp instance. */
.chat-dock-surface>.bheli-bottom-sheet>.chat-workspace{flex:1;min-height:0;}
@media(max-width:767px){.chat-dock-window[data-fullscreen=false] .chat-dock-backdrop:not([hidden]){background:var(--ui-sheet-overlay);}.chat-dock-window[data-fullscreen=false] .chat-dock-surface{padding-bottom:env(safe-area-inset-bottom);}}

@media(min-width:768px){.chat-dock-window[data-fullscreen=false] .chat-r2-schedule-panel>header>a.chat-panel-back{width:36px;height:36px;border:0;border-radius:50%;}}
.chat-panel-back>.chat-r2-icon{width:20px;height:20px;}

.chat-dock-window[data-fullscreen=false] .chat-workspace :is(.chat-thread-back,.chat-context-return,.chat-panel-back){width:36px;min-width:36px;height:36px;min-height:36px;border:0;border-radius:50%;}
@media(max-width:767px){.chat-dock-window[data-fullscreen=false] .chat-workspace :is(.chat-thread-back,.chat-context-return,.chat-panel-back){width:44px;min-width:44px;height:44px;min-height:44px;}}

/* D2 (FOR-1): con barra fija en el celular, el botón Chats se esconde (C21/C27). */
@media (max-width:767px) {
.chat-dock-window[data-fixed-bar="true"] .chat-dock-launcher { display: none; }
}

/* D1: los controles de ventana son lo último de la cabecera y van al borde derecho por sí mismos, haya o no ✎ y ⋮
   (Nuevo chat, Añade miembros); el título usa el espacio que queda y termina en «…». */
.chat-dock-window[data-fullscreen="false"] .chat-window-controls {margin-left:auto;}
.chat-dock-window[data-fullscreen="false"] .chat-list-head>h1 {flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
/* D3: en la hoja del celular, ⤢ y — son botones de ícono de 44 px (Guía 3.6), como ✎ y ⋮ de Conversaciones. */
@media(max-width:767px) {
 .chat-dock-window[data-fullscreen="false"] .chat-window-controls {gap:0;}
 .chat-dock-window[data-fullscreen="false"] .chat-window-controls :is(a,button) {width:44px;height:44px;min-width:44px;min-height:44px;}
 .chat-dock-window[data-fullscreen="false"] .chat-window-controls svg {width:18px;height:18px;}
}
.reply-library,.reply-editor{min-width:0;max-width:100%;padding-block:16px}.reply-page-head{display:flex;gap:16px;justify-content:space-between;align-items:center;margin-block:16px 24px}.reply-page-head h1{margin:0}.reply-page-head p{margin:6px 0 0}.reply-searchbar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.reply-searchbar>input{flex:1;min-width:180px}.reply-segments{display:flex;gap:4px}.reply-segments button{min-height:40px;padding:8px 12px;border:0;background:transparent;border-radius:8px;color:var(--text-muted)}.reply-segments button[aria-pressed=true]{background:var(--primary-soft);color:var(--primary);font-weight:500}.reply-filters :is(summary,[data-chat-menu-trigger]){cursor:pointer;min-height:40px;display:flex;align-items:center}.reply-filters label{display:flex;gap:8px;align-items:center}.reply-count{color:var(--text-muted);font-size:.875rem}.reply-library-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,340px);gap:24px;align-items:start}.reply-library-grid:has(>.reply-list:only-child){grid-template-columns:1fr}.reply-list,.reply-detail{border:1px solid var(--border);border-radius:var(--radius,10px);background:var(--surface);min-width:0}.reply-row{display:grid;grid-template-columns:40px minmax(0,1fr) 100px;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border)}.reply-row:last-child{border-bottom:0}.reply-row.selected{background:var(--primary-soft)}.reply-row-main{display:block;text-align:left;border:0;background:transparent;padding:4px 0;min-height:64px;min-width:0}.reply-row-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-weight:500}.reply-row-title code{font-family:inherit;font-size:.8rem;color:var(--primary);background:var(--primary-soft);border-radius:4px;padding:2px 5px}.reply-excerpt{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--text-muted);font-size:.875rem;max-width:100%;margin-top:4px}.reply-row small,.reply-row-usage small{display:block;color:var(--text-muted);font-size:.75rem}.reply-star{border:0;background:transparent;color:var(--primary);font-size:1.35rem;min-width:40px;min-height:40px}.reply-row-usage{font-size:.875rem}.reply-detail{padding:20px}.reply-detail header{display:flex;gap:8px;justify-content:space-between;align-items:start}.reply-detail h2{margin:0;font-size:1.15rem;overflow-wrap:anywhere}.reply-preview{min-width:0}.reply-preview>p{font-size:.8rem}.reply-bubble{background:var(--primary-soft);padding:16px;border-radius:12px 12px 4px 12px;white-space:pre-wrap;overflow-wrap:anywhere}.reply-file-preview{margin:10px 0 0;border:1px solid var(--border);border-radius:8px;padding:10px;display:flex;gap:10px;align-items:center;min-width:0}.reply-file-preview img{width:100%;max-width:120px;max-height:160px;object-fit:contain;border-radius:6px}.reply-file-preview video{max-width:100%;max-height:220px}.reply-file-preview figcaption{overflow-wrap:anywhere;min-width:0}.reply-file-preview small{display:block;color:var(--text-muted)}.reply-metadata{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-block:20px}.reply-metadata dt{font-size:.8rem;color:var(--text-muted)}.reply-metadata dd{margin:4px 0 0}.reply-actions :is(summary,[data-chat-menu-trigger]){margin-top:10px}.reply-actions button,.reply-upload-row details button{display:block;min-height:40px;padding:8px 12px;width:100%;text-align:left;border:0;background:transparent}.reply-empty{padding:40px 20px;text-align:center}.reply-empty .bheli-logo{opacity:.15}.reply-editor-grid{display:grid;grid-template-columns:minmax(0,740px) minmax(260px,340px);gap:32px;align-items:start}.reply-fields{min-width:0}.reply-fields>label{display:block;margin-top:20px}.reply-short-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.reply-fields label{display:flex;flex-direction:column;gap:6px}.reply-fields input,.reply-fields textarea,.reply-fields select{max-width:100%;min-width:0}.reply-message-field{position:relative;margin-top:6px}.reply-message-field textarea{width:100%;min-height:190px;resize:vertical}.reply-token-menu{position:absolute;left:0;bottom:100%;margin-bottom:6px;width:min(100%,360px);max-height:240px;overflow-y:auto;border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:4px;box-shadow:0 8px 20px rgb(0 0 0/.12);z-index:60}.reply-token-menu button{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;border:0;background:transparent;text-align:left;min-height:44px;padding:10px;border-radius:6px}.reply-token-menu button[aria-selected=true]{background:var(--primary-soft);color:var(--primary)}.reply-token-menu small{color:var(--text-muted);font-size:.75rem}.reply-files{margin-top:20px}.reply-drop{padding:16px;border:1px dashed var(--border);border-radius:8px;display:flex;flex-direction:column;gap:8px}.reply-drop small{color:var(--text-muted)}.reply-drop input{width:100%}.reply-upload-row{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);min-width:0}.reply-upload-row>span{min-width:0;overflow-wrap:anywhere;flex:1}.reply-upload-row small{display:block;color:var(--text-muted)}.reply-upload-row>img{width:44px;height:44px;object-fit:cover;border-radius:6px}.reply-upload-row details{position:relative}.reply-upload-row details[open]{background:var(--surface);border:1px solid var(--border);border-radius:8px}.reply-upload-row progress{max-width:120px}.reply-variable-settings,.reply-organization{margin-top:20px;padding-block:14px;border-top:1px solid var(--border)}.reply-variable-settings :is(summary,[data-chat-menu-trigger]),.reply-organization :is(summary,[data-chat-menu-trigger]){cursor:pointer;min-height:44px}.reply-variable-row{padding-block:12px;border-bottom:1px solid var(--border)}.reply-variable-row small{display:block;color:var(--text-muted)}.reply-variable-row label{margin-top:8px}.reply-dialog{width:min(92vw,480px)}.reply-dialog label{display:flex;flex-direction:column;gap:6px;margin-block:14px}.reply-dialog input,.reply-dialog textarea{max-width:100%}.reply-library button:focus-visible,.reply-editor button:focus-visible,.reply-token-menu button:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.reply-loading{min-height:200px}.human-composer .reply-composer-attachments{padding:0 12px 10px}.human-composer .reply-composer-token{position:relative}.human-composer .reply-token-menu{bottom:100%;left:8px;width:min(calc(100% - 16px),380px)}.reply-composer-files{display:flex;gap:8px;flex-wrap:wrap;padding:10px 12px}.reply-composer-file{display:flex;gap:6px;align-items:center;max-width:100%;border:1px solid var(--border);padding:6px;border-radius:6px}.reply-composer-file img{width:36px;height:36px;object-fit:cover}.reply-composer-file span{overflow-wrap:anywhere;max-width:200px}.reply-composer-file button{min-height:40px;min-width:40px}.reply-fields label:has(>input[type=checkbox]),.reply-dialog label:has(>input[type=checkbox]){flex-direction:row;align-items:center}
@media(max-width:1020px){.reply-editor-grid{grid-template-columns:1fr minmax(220px,280px);gap:20px}.reply-library-grid{grid-template-columns:1fr 280px;gap:16px}}
@media(max-width:767px){.reply-library-grid,.reply-editor-grid{grid-template-columns:1fr}.reply-library[data-detail=True] .reply-list,.reply-library[data-detail=true] .reply-list{display:none}.reply-library[data-detail=true] .reply-searchbar,.reply-library[data-detail=True] .reply-searchbar,.reply-library[data-detail=true] .reply-count,.reply-library[data-detail=True] .reply-count{display:none}.reply-page-head{align-items:start;gap:10px}.reply-page-head h1{font-size:1.5rem}.reply-page-head .button{white-space:normal}.reply-short-fields{grid-template-columns:1fr}.reply-row{grid-template-columns:44px minmax(0,1fr);padding:8px}.reply-row-usage{display:none}.reply-star{min-height:44px;min-width:44px}.reply-searchbar>input{flex-basis:100%;min-width:0}.reply-token-menu{max-height:210px}.reply-editor-grid>.reply-preview{order:2}.reply-detail{padding:16px}.reply-searchbar button{min-height:44px}.reply-dialog{max-height:calc(100dvh - 32px)}.reply-file-preview{flex-wrap:wrap}.reply-file-preview img{max-width:100%}.reply-library{padding-block:8px}}
@media(prefers-reduced-motion:reduce){.reply-library *,.reply-editor *,.reply-dialog *{scroll-behavior:auto;transition:none;animation:none}}

.reply-chat-navigation{display:flex;gap:16px;padding:10px 16px;border-bottom:1px solid var(--border);font-size:.875rem}.reply-chat-navigation a{min-height:36px;display:flex;align-items:center}.reply-chat-navigation a[aria-current=page]{font-weight:500;color:var(--primary)}
.human-composer{position:relative}.reply-composer-uploads .reply-files{margin:0}.reply-composer-uploads .reply-drop{display:none}.reply-composer-uploads .reply-upload-row{margin-inline:12px}.reply-composer-uploads .reply-files:empty{display:none}
.reply-searchbar>.reply-search-field{flex:1;min-width:180px;margin:0}.reply-library button,.reply-editor button,.reply-dialog button,.reply-token-menu button{font-family:inherit}.reply-row-main{font-size:1rem;color:var(--text)}.reply-segments button[aria-pressed="true"]{background:var(--primary-soft);color:var(--primary);font-weight:500}
@media(max-width:767px){.reply-searchbar>.reply-search-field{flex-basis:100%;min-width:0}.reply-row-usage{display:flex;grid-column:2;gap:6px;align-items:baseline}.reply-fields input:not([type=checkbox]),.reply-fields select,.reply-dialog input:not([type=checkbox]),.reply-dialog select{font-size:16px;min-height:44px}}
:is(.chat-workspace,.conversation-surface) .human-composer{position:relative}
.reply-token-menu button>span{min-width:0}.reply-token-menu button>span>small{display:block;margin-top:3px}
.reply-upload-row{flex-wrap:wrap}.reply-upload-row>span{flex:1 1 140px}.reply-upload-row>span[role=alert]{flex-basis:100%}
body:has(.chat-dock-window[data-mode=minimized][data-fullscreen=false]) :is(.reply-library,.reply-editor){padding-bottom:calc(88px + env(safe-area-inset-bottom))}
.reply-file-select{position:relative;align-self:flex-start;max-width:100%;overflow:hidden;cursor:pointer}
.reply-file-select input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.reply-file-select:focus-within{outline:2px solid var(--primary);outline-offset:3px}
.reply-editor-actions{display:flex;justify-content:flex-end;gap:var(--space-3,12px);margin-top:var(--space-4,16px);padding-block:var(--space-3,12px);border-top:1px solid var(--border);background:var(--surface)}
/* CH3 (como WhatsApp): sin texto de ayuda a la vista bajo el campo de escribir; lo sigue leyendo el lector de pantalla
   (aria-describedby del campo) y «/» funciona igual. */
.reply-composer-hint{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.reply-detail-mobile-title{display:none;margin:0;font-size:1.5rem;overflow-wrap:anywhere}
#reply-detail-title:focus{outline:none}
@media(max-width:767px){
    /* La ContextBar del shell conserva Chat/Respuestas y las demás secciones. */
    .reply-library>.context-nav{display:none}
    .reply-library>.mobile-back{margin-block:0;padding-block:4px}
    .reply-library .reply-page-head{margin-block:8px 12px;align-items:center}
    .reply-library .reply-page-head p{display:none}
    .reply-library[data-detail=true]>.reply-page-head{display:none}
    .reply-detail-mobile-title{display:block}
    .reply-detail-desktop-title{display:none}
    .reply-library .reply-count{margin-block:8px}
    .reply-library .reply-searchbar{gap:8px;margin-bottom:8px}
    .reply-editor-actions{padding-bottom:calc(12px + env(safe-area-inset-bottom));justify-content:stretch}
    .reply-editor-actions>.button{flex:1;min-width:0;min-height:44px;white-space:normal}
    /* El launcher conserva su posición; el viewport de trabajo termina antes de él. */
    body:has(.chat-dock-launcher:not([hidden])) #main:has(.reply-library){margin-bottom:calc(88px + env(safe-area-inset-bottom))}
    body:has(.chat-dock-launcher:not([hidden])) :is(.reply-library,.reply-editor){padding-bottom:16px}
}
/* R3: tarea compacta, acciones en su cabecera y preview bajo demanda cuando falta ancho. */
.reply-editor-head { position:sticky; top:0; z-index:50; padding-block:12px; margin-block:0 24px; background:var(--surface); flex-wrap:wrap; }
.reply-editor-head .reply-editor-actions { margin:0; padding:0; border:0; }
.reply-editor-head h1 { flex:1 1 160px; }
.reply-editor-grid { grid-template-columns:minmax(0,740px) minmax(260px,340px); gap:24px; }
.reply-short-fields { grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)); gap:16px; }
.reply-fields>label { margin-top:16px; }
.reply-message-field textarea { box-sizing:border-box; min-height:94px; max-height:214px; height:94px; line-height:24px; padding:10px; resize:none; overflow-y:auto; overflow-wrap:anywhere; }
.reply-editor .reply-files { margin-top:12px; }
.reply-editor .reply-drop { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; padding:8px 12px; column-gap:12px; row-gap:4px; }
.reply-editor .reply-drop>span { grid-column:1; min-width:0; }
.reply-editor .reply-drop>small { grid-column:1; min-width:0; }
.reply-editor .reply-drop>.reply-file-select { grid-column:2; grid-row:1/3; align-self:center; }
.reply-editor :is(.reply-variable-settings,.reply-organization) { margin-top:12px; padding-block:0; }
.reply-editor :is(.reply-variable-settings,.reply-organization)>:is(summary,[data-chat-menu-trigger]) { min-height:44px; align-content:center; }
@media(max-width:540px) {
 .reply-editor .reply-drop { grid-template-columns:minmax(0,1fr); }
 .reply-editor .reply-drop>.reply-file-select { grid-column:1; grid-row:auto; }
}
.reply-preview-disclosure { min-width:0; }
.reply-preview-disclosure :is(summary,[data-chat-menu-trigger]) { min-height:44px; cursor:pointer; }
@media(min-width:1100px) {
 .reply-preview-disclosure>:is(summary,[data-chat-menu-trigger]) { display:none; }
 .reply-preview-disclosure::details-content { content-visibility:visible; display:block; }
}
@media(max-width:1099px) { .reply-editor-grid { grid-template-columns:minmax(0,740px); } }
@media(max-width:767px) { .reply-editor-head .reply-editor-actions { flex:1 1 100%; padding:0; } .reply-editor-head { gap:8px; margin-bottom:16px; } }
/* Respuestas R1: fichas C01–C25, aisladas de la inserción de respuestas en el chat. */
.reply-library{color:var(--reply-text)}

.reply-library .reply-page-head{background:transparent;position:static;gap:10px;padding:0;margin:0 0 22px;flex-wrap:nowrap}
.reply-library .reply-page-head h1{font-size:26px;font-weight:700;line-height:1.25;letter-spacing:-.01em;min-width:0}
.reply-library .reply-page-head p{font-size:14px;color:var(--reply-secondary)}
.reply-library .reply-editor{padding:0}
.reply-library .reply-editor-head h1{flex:1}
.reply-library .reply-editor-actions{margin:0;padding:0;border:0;background:transparent;flex:none;gap:10px}
.reply-library :is(.button,.chat-confirm-actions>.button){min-height:40px;height:40px;padding:0 18px;border:0;border-radius:999px;font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.reply-library .button.primary{background:var(--reply-accent);color:var(--primary-contrast)}
.reply-library .button.primary:hover{background:var(--reply-accent-hover)}
.reply-library .button.secondary{background:var(--reply-hover);color:var(--reply-text)}
.reply-library .chat-r2-icon{width:18px;height:18px;flex:none}
.reply-back{width:38px;height:38px;min-width:38px;min-height:38px;border:0;border-radius:50%;background:transparent;display:flex;align-items:center;justify-content:center;color:var(--reply-text);padding:0}
.reply-back .chat-r2-icon{width:21px;height:21px;stroke-width:2}
.reply-back:hover{background:var(--reply-hover)}
.reply-library .reply-editor-grid{grid-template-columns:minmax(0,680px) minmax(300px,420px);gap:28px;align-items:start}
.reply-short-fields{grid-template-columns:repeat(2,minmax(0,1fr))}
.reply-library .reply-fields :is(label,.reply-message-heading){font-size:14px;font-weight:600}
.reply-library .reply-fields :is(input:not([type=checkbox]),textarea){background:var(--reply-surface);color:var(--reply-text);border:1px solid var(--reply-control-border);border-radius:10px;font-size:14.5px;font-weight:400;min-height:42px;height:42px;padding:0 12px;box-shadow:none;width:100%}
.reply-library .reply-fields textarea{height:110px;min-height:110px;line-height:24px;padding:10px;resize:vertical;max-height:unset}
.reply-library .reply-fields :is(input:not(.bheli-composite-input),textarea):focus{border-color:var(--reply-accent);outline:0;box-shadow:0 0 0 3px var(--reply-focus)}
.reply-library :is(.reply-fields small,#reply-message-help){font-size:12.5px;font-weight:400;color:var(--reply-secondary)}
.reply-shortcut-control{display:flex;align-items:center;border:1px solid var(--reply-control-border);border-radius:10px;background:var(--reply-surface);height:42px;overflow:hidden}
.reply-shortcut-control>span{padding-left:12px;padding-right:4px;color:var(--reply-accent-text);font-size:15px;font-weight:700}
.reply-library .reply-fields .reply-shortcut-control input{border:0;height:100%;min-height:0;padding-left:0;background:transparent;border-radius:0;box-shadow:none}
.reply-shortcut-control:focus-within{border-color:var(--reply-accent);box-shadow:0 0 0 3px var(--reply-focus)}
.reply-message-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:20px}
.reply-message-heading>label{margin:0}
.reply-insert-menu,.reply-inbox-menu{position:relative}
.reply-library :is(.reply-insert-trigger,.reply-inbox-trigger){display:flex;align-items:center;gap:6px;cursor:pointer;list-style:none;color:var(--reply-text);background:var(--reply-surface);border:1px solid var(--reply-control-border)}
.reply-insert-trigger{border-radius:999px;min-height:32px;padding:0 10px;font-size:13px;font-weight:600}
.reply-insert-trigger .chat-r2-icon{width:15px;height:15px}
.reply-insert-trigger::-webkit-details-marker,.reply-inbox-trigger::-webkit-details-marker,.reply-library .reply-fields details>:is(summary,[data-chat-menu-trigger])::-webkit-details-marker{display:none}
.reply-options-menu{position:absolute;right:0;top:calc(100% + 6px);width:280px;max-width:calc(100vw - 32px);max-height:280px;overflow-y:auto;background:var(--reply-surface);border:1px solid var(--reply-line);border-radius:14px;box-shadow:var(--reply-floating);padding:6px;z-index:70}
.reply-options-menu>button{display:flex;align-items:center;width:100%;min-height:40px;padding:10px 12px;text-align:left;background:transparent;border:0;border-radius:10px;color:var(--reply-text);font-size:14px;gap:8px}
.reply-options-menu>button:hover,.reply-options-menu>button:focus-visible{background:var(--reply-hover)}
.reply-options-menu small{display:block;margin-top:2px;font-size:12px;font-weight:400}
.reply-library .reply-fields :is(.reply-variable-settings,.reply-organization){border:0;margin-top:20px;padding:0}
.reply-library .reply-fields :is(.reply-variable-settings,.reply-organization)>:is(summary,[data-chat-menu-trigger]){display:flex;align-items:center;gap:8px;list-style:none;min-height:40px;font-size:14px;color:var(--reply-text);cursor:pointer}
.reply-library .reply-fields :is(.reply-variable-settings,.reply-organization)>:is(summary,[data-chat-menu-trigger])>span{color:var(--reply-meta);font-weight:400}
.reply-library .reply-fields :is(.reply-variable-settings,.reply-organization)>:is(summary,[data-chat-menu-trigger])>.chat-r2-icon{width:16px;height:16px;transform:rotate(-90deg)}
.reply-library .reply-fields :is(.reply-variable-settings,.reply-organization)[open]>:is(summary,[data-chat-menu-trigger])>.chat-r2-icon{transform:none}
.reply-variable-row{margin-left:24px;border-bottom:1px solid var(--reply-line);display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.reply-variable-row>strong{font-size:14px;font-weight:600}
.reply-variable-row>code{font-size:12px;color:var(--reply-meta);background:transparent}
.reply-variable-row>label{flex-basis:100%;margin:2px 0 0}
.reply-variable-kind{font-size:11.5px;padding:2px 7px;border-radius:999px;background:var(--reply-neutral);color:var(--reply-secondary)}
.reply-variable-kind[data-automatic=false]{background:var(--reply-ochre);color:var(--reply-ochre-text)}
.reply-scope-options{margin:10px 0 16px 24px}
.reply-scope-options>strong{font-size:14px;font-weight:600}
.reply-scope-options>div{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.reply-scope-options button{display:flex;flex-direction:column;gap:2px;border:1px solid var(--reply-control-border);border-radius:12px;padding:8px 14px;background:var(--reply-surface);color:var(--reply-text);text-align:left;min-height:52px}
.reply-scope-options button[aria-pressed=true]{background:var(--reply-soft);border-color:var(--reply-accent-border);color:var(--reply-accent-text)}
.reply-scope-options strong{font-size:13.5px;font-weight:600}
.reply-scope-options small{font-size:12px}
.reply-library .reply-inbox-field{margin:0 0 16px 24px;display:flex;flex-direction:column;gap:6px}
.reply-inbox-trigger{border-radius:10px;height:42px;padding:0 12px;justify-content:space-between;font-weight:400}
.reply-inbox-menu .reply-options-menu{left:0;right:auto;width:100%}
.reply-active-switch{display:flex;align-items:center;gap:10px;width:calc(100% - 24px);margin-left:24px;text-align:left;background:transparent;border:0;padding:0;min-height:42px;color:var(--reply-text)}
.reply-active-switch>span:last-child{display:flex;flex-direction:column;gap:2px}
.reply-active-switch strong{font-size:14px;font-weight:600}
.reply-switch-track{position:relative;flex:none;width:36px;height:20px;border-radius:999px;background:var(--reply-control-border)}
.reply-switch-track>span{position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#FFF}
.reply-active-switch[aria-checked=true] .reply-switch-track{background:var(--reply-accent)}
.reply-active-switch[aria-checked=true] .reply-switch-track>span{left:18px}
.reply-preview-desktop{position:sticky;top:16px;min-width:0}
.reply-preview-mobile{display:none}
.reply-preview-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;margin-bottom:8px;font-size:13px}
.reply-preview-heading>strong{font-weight:600;color:var(--reply-secondary)}
.reply-preview-heading>span{font-size:12px;color:var(--reply-meta)}
.reply-preview-chat{display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-end;min-height:150px;padding:16px;background:var(--reply-chat);border:1px solid var(--reply-line);border-radius:14px}
.reply-editor-preview .reply-bubble{align-self:flex-end;max-width:94%;background:var(--reply-own);color:var(--reply-text);padding:6px 10px 7px;border-radius:10px 10px 3px 10px;box-shadow:0 1px 1px rgb(42 36 32/.07);font-size:14px;line-height:1.42}
.reply-sample-variable{font-weight:600;background:var(--reply-variable);border-radius:3px;padding-inline:1px}
.reply-preview-time{display:inline-flex;align-items:center;justify-content:flex-end;float:right;gap:3px;margin-left:10px;padding-top:6px;font-size:11px;line-height:14px;color:var(--reply-meta)}
.reply-preview-time .chat-r2-icon{width:16px;height:16px;color:var(--reply-accent)}
.reply-preview-empty{align-self:center;margin:auto;text-align:center;font-size:13px;color:var(--reply-meta)}
.reply-library .reply-searchbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.reply-library .reply-search-field{position:relative;display:flex;align-items:center;gap:8px;min-width:220px;flex:1;height:40px;padding:0 12px;border-radius:999px;background:var(--reply-search);color:var(--reply-meta)}
.reply-library .reply-search-field>input{height:40px;min-height:40px;flex:1;min-width:0;border:0;border-radius:999px;background:transparent;padding:0;font-size:13px;color:var(--reply-text);box-shadow:none}
.reply-search-field>input::-webkit-search-cancel-button{display:none}
.reply-search-field>button{display:flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--reply-meta);width:32px;height:32px;padding:0;border-radius:50%}
.reply-search-field>.chat-r2-icon{width:16px;height:16px}
.reply-filter-viewport{min-width:0;position:relative}
.reply-library .reply-segments{gap:6px;align-items:center}
.reply-library .reply-segments>button{flex:none;display:inline-flex;align-items:center;gap:5px;min-height:32px;height:32px;padding:0 12px 0 10px;border-radius:999px;border:1px solid var(--reply-control-border);background:var(--reply-surface);color:var(--reply-secondary);font-size:13px;font-weight:600;white-space:nowrap}
.reply-library .reply-segments>button[aria-pressed=true]{background:var(--reply-soft);border-color:var(--reply-accent-border);color:var(--reply-accent-text)}
.reply-segments .chat-r2-icon{width:15px;height:15px}
.reply-filter-divider{flex:none;width:1px;height:20px;background:var(--reply-control-border);margin-inline:3px}
.reply-library .reply-list{border:0;border-radius:0;background:transparent}
.reply-library .reply-row{grid-template-columns:minmax(0,1fr) auto 34px;padding:10px 12px;border:0;border-radius:12px;gap:20px}
.reply-library .reply-row:hover{background:var(--reply-hover)}
.reply-library .reply-row-main{padding:0;min-height:60px;font-size:15px}
.reply-library .reply-row-title{font-size:15px;font-weight:600;gap:6px}
.reply-library .reply-row-title code{font-size:12px;font-weight:600;border-radius:6px;padding:1px 6px;background:var(--reply-soft);color:var(--reply-accent-text)}
.reply-library .reply-excerpt{font-size:13.5px;color:var(--reply-secondary);margin-top:3px}
.reply-excerpt-variable{padding:1px 6px;border-radius:5px;background:var(--reply-neutral);font-size:12.5px;font-weight:500}
.reply-library .reply-row-main>small{font-size:12px;color:var(--reply-meta);margin-top:3px}
.reply-library .reply-row-usage{display:block;font-size:12px;color:var(--reply-meta);white-space:nowrap}
.reply-usage-mobile{display:none}
.reply-library .reply-star{width:34px;min-width:34px;height:34px;min-height:34px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--reply-meta)}
.reply-library .reply-star[aria-pressed=true]{color:var(--reply-accent)}
.reply-star[aria-pressed=true] .chat-r2-icon{fill:currentColor}
.reply-library button:hover:not(:disabled){cursor:pointer}
.reply-library button:disabled{opacity:.5;cursor:default}
.reply-library .reply-new>.chat-r2-icon{display:none}
.reply-library .reply-fields [aria-invalid=true]{border-color:var(--danger)}
.reply-editor .reply-dialog:has(.chat-confirm)>h2{display:none}
.reply-editor .reply-dialog .chat-confirm{background:transparent;border:0;padding:0}
.reply-editor .chat-confirm-actions{display:flex;flex-direction:row-reverse;gap:10px;justify-content:flex-start}
@media(max-width:1099px) and (min-width:768px){.reply-library .reply-editor-grid{grid-template-columns:minmax(0,1fr) minmax(300px,34%);gap:20px}}
@media(max-width:767px){
 .reply-library .reply-page-head h1{font-size:18px}
 .reply-library .reply-page-head{margin-bottom:16px}
 .reply-library .reply-editor-grid{grid-template-columns:minmax(0,1fr)}
 .reply-library .reply-short-fields{grid-template-columns:1fr}
 .reply-library .reply-editor{padding-bottom:90px}
 .reply-library .reply-editor-head .reply-editor-actions{position:fixed;bottom:var(--reply-keyboard-inset,0px);left:0;right:0;z-index:65;padding:10px 12px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--reply-line);background:var(--reply-surface);gap:8px;flex-wrap:nowrap}
 .reply-library .reply-editor-actions>.button{flex:1;min-height:44px;height:44px}
 .reply-library .reply-editor-actions>.button.primary{flex:1.4}
 .reply-library .reply-back{width:40px;height:40px;min-width:40px;min-height:40px}
 .reply-preview-desktop{display:none}
 .reply-preview-mobile{display:block;margin-top:14px}
 .reply-library .reply-new{width:40px;height:40px;min-height:40px;padding:0;border-radius:50%}
 .reply-library .reply-new>span{display:none}
 .reply-library .reply-new>.chat-r2-icon{display:block;width:20px;height:20px}
 .reply-library .reply-searchbar>.reply-search-field{flex-basis:100%;min-width:0}
 .reply-filter-viewport{flex-basis:100%;width:100%}
 .reply-library .reply-segments{overflow-x:auto;scrollbar-width:none;padding-block:4px;padding-right:12px;position:relative}
 .reply-segments::-webkit-scrollbar{display:none}

 .reply-library .reply-segments>button{min-height:40px;height:40px}
 .reply-library .reply-row{grid-template-columns:minmax(0,1fr) 40px;padding:10px 8px;gap:8px}
 .reply-library .reply-row-usage{display:none}
 .reply-library .reply-star{width:40px;height:40px;min-height:40px;min-width:40px}
 .reply-usage-mobile{display:inline}
 .reply-library .reply-row-title{flex-wrap:nowrap}
 .reply-library .reply-row-title code{flex:none}
 .reply-library .reply-insert-trigger{min-height:40px}
 .reply-library .reply-search-field>button{width:40px;height:40px}
 .reply-library .reply-editor :is(input:not([type=checkbox]),textarea){font-size:14.5px}
 .reply-editor .reply-message-field textarea{scroll-margin-bottom:110px}
}


.reply-variable-types{display:flex;align-items:center;flex-wrap:wrap;gap:6px;width:100%;margin-top:8px}
.reply-variable-types>strong{flex-basis:100%;font-size:14px;font-weight:600}
.reply-variable-types>button{border:1px solid var(--reply-control-border);background:var(--reply-surface);color:var(--reply-secondary);min-height:32px;padding:0 12px;border-radius:999px;font-size:13px}
.reply-variable-types>button[aria-pressed=true]{background:var(--reply-soft);border-color:var(--reply-accent-border);color:var(--reply-accent-text)}
.reply-library .reply-fields .reply-shortcut-control input:not([type=checkbox]){border:0;box-shadow:none;border-radius:0;height:40px;min-height:0}
.reply-library .reply-fields textarea#reply-content{height:110px;min-height:110px;line-height:24px;padding:10px;resize:vertical}
.reply-library .reply-search-field input[type=search]{background:transparent!important;border:0;border-radius:0;box-shadow:none;padding:0}
@media(max-width:767px){.reply-variable-types>button{min-height:40px}}

.reply-save-mobile{display:none}
@media(max-width:767px){.reply-save-desktop{display:none}.reply-save-mobile{display:inline}}

.reply-variable-row>.reply-variable-required{margin-left:0;width:100%}
.reply-library .reply-fields .reply-variable-row textarea{width:100%;min-height:110px;resize:vertical;}
/* C21/C27: reserve a bottom lane for the launcher and fixed action bar, including at mid-scroll. */
.app-shell .shell-main>main#main:has(.reply-library){margin-bottom:var(--portal-bottom-reserve,98px);scroll-padding-bottom:12px;}
@media(max-width:767px){
 .reply-library[data-editor=true] .reply-editor-head{padding-right:0;}
 .reply-library .reply-editor-head{position:static;}
}

.reply-row-name{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.reply-library .reply-row-title code{max-width:50%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
@media(max-width:767px){.reply-library .reply-row-main>small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
.reply-variable-identity{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}
.reply-variable-identity>strong{font-size:14px;font-weight:600}
.reply-variable-identity>code{flex-basis:100%;font-size:12px;color:var(--reply-meta);background:transparent}
.reply-preview-help{font-size:12px;color:var(--reply-meta);margin:10px 0 0;line-height:1.5}
.reply-editor .reply-drop>span{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600}
.reply-editor .reply-drop>span>.chat-r2-icon{width:16px;height:16px}
@media(min-width:768px){.reply-variable-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 18px}.reply-variable-row>.reply-variable-types,.reply-variable-row>.reply-variable-required{grid-column:1/-1}.reply-variable-row>label{min-width:0}.reply-variable-row>label:nth-of-type(2){grid-column:1/-1}}
@media(max-width:767px){.reply-library .reply-row-main>small{display:flex;align-items:baseline;gap:3px}.reply-row-scope{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reply-row-state,.reply-usage-mobile{flex-shrink:0;white-space:nowrap}}
/* A1 · C04/C05/C17/C19/C21: variable errors, compact rows and a real mobile detail. */
.reply-library .button.primary{color:var(--reply-on-accent);}
.reply-library .feedback-field-error{font-size:12px;color:var(--reply-error);}
.reply-library .reply-fields :is(input,textarea)[aria-invalid=true]{border-color:var(--reply-error);}
.reply-library .reply-variable-settings{border-top:1px solid var(--reply-line);padding-top:12px;}
.reply-variable-settings>header{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px;font-size:14px;margin-bottom:10px;}
.reply-variable-settings>header>strong{font-weight:600;}
.reply-variable-settings>header>span{color:var(--reply-meta);font-size:12.5px;}
.reply-library .reply-variable-settings .reply-variable-row{margin-left:0;}
.reply-editor .reply-drop{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:8px 12px;}
.reply-editor .reply-drop>.reply-drop-icon{grid-column:1;width:20px;height:20px;color:var(--reply-secondary);}
.reply-editor .reply-drop>.reply-drop-copy{grid-column:2;min-width:0;}
.reply-editor .reply-drop-copy>span{display:block;font-size:14px;font-weight:400;color:var(--reply-text);}
.reply-editor .reply-drop-copy>small{display:block;font-size:12px;color:var(--reply-secondary);}
.reply-editor .reply-drop>.reply-file-select{grid-column:3;grid-row:1;}
.reply-library .chat-match{font-weight:700;color:var(--reply-accent-text);background:transparent;padding:0;}
.reply-row-inactive,.reply-detail-mobile{display:none;}
.reply-detail-desktop>header{display:flex;align-items:start;justify-content:space-between;gap:8px;}
.reply-detail-options{padding:6px;min-width:240px;max-width:320px;background:var(--reply-surface);border:1px solid var(--reply-line);border-radius:14px;box-shadow:var(--reply-floating);z-index:95;}
.reply-detail-options>button{display:flex;align-items:center;width:100%;min-height:40px;padding:10px 12px;border:0;border-radius:10px;background:transparent;color:var(--reply-text);white-space:nowrap;text-align:left;font-size:14px;}
.reply-detail-options>button:hover{background:var(--reply-hover);}
@media(max-width:767px){
 .reply-library .reply-row{min-height:60px;padding-block:8px;}
 .reply-library .reply-row-main{min-height:44px;}
 .reply-library .reply-row-main>small{display:none;}
 .reply-library .reply-row-title{display:flex;flex-wrap:nowrap;gap:6px;min-width:0;}
 .reply-library .reply-row-name{font-size:14.5px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:0 1 auto;}
 .reply-library .reply-row-title>code{flex:0 1 auto;max-width:45%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;padding:1px 6px;border-radius:6px;background:var(--reply-soft);color:var(--reply-accent-text);}
 .reply-library .reply-row-inactive{display:inline-flex;flex:none;align-items:center;height:18px;padding:0 7px;border-radius:999px;font-size:11.5px;color:var(--reply-secondary);background:var(--reply-neutral);}
 .reply-library .reply-excerpt{font-size:13px;}
 .reply-library .reply-excerpt-variable{font-size:12.5px;font-weight:500;padding:1px 6px;border-radius:5px;}
 .reply-library .reply-star{color:var(--reply-meta);}
 .reply-library .reply-star[aria-pressed=true]{color:var(--reply-accent);}
 .reply-library[data-detail=true]>.mobile-back{display:none;}
 .reply-detail-desktop{display:none;}.reply-detail-mobile{display:block;}
 .reply-library .reply-detail{padding:0;border:0;position:static;}
 .reply-detail .reply-mobile-detail-head{display:flex;align-items:center;gap:8px;min-height:48px;margin-bottom:16px;}
 .reply-mobile-detail-head>h1{flex:1;min-width:0;margin:0;font-size:18px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
 .reply-detail-menu>:is(summary,[data-chat-menu-trigger]){display:grid;place-items:center;width:40px;height:40px;list-style:none;border:0;border-radius:50%;background:transparent;color:var(--reply-secondary);cursor:pointer;}
 .reply-mobile-metadata{display:grid;gap:16px;margin:20px 0;}
 .reply-mobile-metadata>div{min-width:0;}.reply-mobile-metadata dt{font-size:12px;font-weight:400;color:var(--reply-meta);}
 .reply-mobile-metadata dd{font-size:14.5px;margin:4px 0 0;overflow-wrap:anywhere;}
 .reply-mobile-metadata dd>a,.reply-detail-variable{display:block;}
 .reply-detail-variable>span{display:block;font-size:12.5px;color:var(--reply-secondary);}
 .reply-detail-actions{position:fixed;bottom:0;left:0;right:0;z-index:65;background:var(--reply-surface);border-top:1px solid var(--reply-line);padding:10px 12px calc(14px + env(safe-area-inset-bottom));}
 .reply-library .reply-detail-actions>.button{width:100%;height:44px;min-height:44px;}
 .reply-editor .reply-drop{grid-template-columns:20px minmax(0,1fr);}
 .reply-editor .reply-drop>.reply-file-select{grid-column:2;grid-row:2;justify-self:start;}
}

/* A1 decision3: the focused field uses a contrasting ring and border. */
.reply-library .reply-fields :is(input:not([type=checkbox]):not(.bheli-composite-input),textarea):focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary);}
.reply-library .reply-fields :is(input:not([type=checkbox]),textarea)[aria-invalid=true]:focus-visible{border-color:var(--ui-error);box-shadow:0 0 0 3px var(--ui-error);}

/* Scoped border corrections preserve the existing form sizes and typography. */
:root[data-theme] .reply-library .reply-fields .field :is(input:not([type=checkbox]),textarea){border-color:var(--ui-control-border);}
:root[data-theme] .reply-library .reply-fields .field :is(input:not([type=checkbox]):not(.bheli-composite-input),textarea):focus-visible{border-color:var(--primary);}
:root[data-theme] .reply-library .reply-fields .field :is(input,textarea)[aria-invalid=true]{border-color:var(--ui-error);}
:root[data-theme] .reply-library .reply-fields .field :is(input:not(.bheli-composite-input),textarea)[aria-invalid=true]:focus-visible{border-color:var(--ui-error);box-shadow:0 0 0 3px var(--ui-error);}
:root[data-theme] .reply-library .reply-fields .reply-shortcut-control input:not([type=checkbox]){border:0;}

/* A2 O1: pressed and selected rows retain normal readable text, including touch. */
.reply-library .reply-row{color:var(--reply-text);-webkit-tap-highlight-color:transparent;}
.reply-library .reply-row:is(:active,.selected),.reply-library .reply-row.selected:hover{background:var(--reply-soft);color:var(--reply-text);}
.reply-library .reply-row-main:is(:active,:focus){background:transparent;color:var(--reply-text);-webkit-tap-highlight-color:transparent;}
/* A2 O2/O3/O6: one detail, inline only while its list retains useful width. */
.reply-library .reply-detail{padding:0;border:0;border-radius:0;background:transparent;min-width:0;}
.reply-detail .reply-detail-head{display:flex;align-items:center;gap:6px;padding:12px 0;border-bottom:1px solid var(--reply-line);}
.reply-detail-head>h1{flex:1;min-width:0;margin:0;font-size:17px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.reply-detail .reply-detail-menu>[data-chat-menu-trigger],.reply-library .reply-back{display:grid;place-items:center;width:36px;height:36px;min-width:36px;min-height:36px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--reply-secondary);}
.reply-detail .reply-detail-back{display:none;}
.reply-library .reply-back:not(.reply-detail-close){color:var(--reply-text);}
.reply-library .reply-back>.chat-r2-icon{width:20px;height:20px;}
.reply-detail-body{padding:16px 0;}
.reply-detail .reply-preview-scene{min-height:180px;}
.reply-mobile-metadata{display:grid;gap:16px;margin:20px 0;}
.reply-mobile-metadata>div{min-width:0;}.reply-mobile-metadata dt{font-size:12px;font-weight:400;color:var(--reply-meta);}
.reply-mobile-metadata dd{font-size:14.5px;margin:4px 0 0;overflow-wrap:anywhere;}
.reply-mobile-metadata dd>a,.reply-detail-variable{display:block;}
.reply-detail-variable>span{display:block;font-size:12.5px;color:var(--reply-secondary);}
.reply-detail .reply-detail-actions{position:static;padding:0;border:0;background:transparent;}
.reply-library[data-detail-replaces=true][data-detail=true]>.reply-page-head,.reply-library[data-detail-replaces=true][data-detail=true]>.reply-searchbar,.reply-library[data-detail-replaces=true][data-detail=true]>.reply-count,.reply-library[data-detail-replaces=true][data-detail=true] .reply-list{display:none;}
.reply-library[data-detail-replaces=true] .reply-library-grid{display:block;}
.reply-library[data-detail-replaces=true] .reply-detail-head{background:var(--reply-surface);margin-inline:-16px;padding:8px 16px;}
.reply-library[data-detail-replaces=true] .reply-detail-back{display:grid;}
.reply-library[data-detail-replaces=true] .reply-detail-close{display:none;}
/* R8: visible overflow on both edges, driven by the existing observer. */
.reply-filter-viewport[data-more-end=true]{mask-image:linear-gradient(to right,var(--ui-mask) calc(100% - 28px),transparent);}
.reply-filter-viewport[data-more-start=true]{mask-image:linear-gradient(to right,transparent,var(--ui-mask) 28px);}
.reply-filter-viewport[data-more-start=true][data-more-end=true]{mask-image:linear-gradient(to right,transparent,var(--ui-mask) 28px,var(--ui-mask) calc(100% - 28px),transparent);}
/* R10: measured 400 + 260 + 24 minimum; distribute extra width in favor of the form. */
.reply-library .reply-editor-grid{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start;}
.reply-editor-grid>.reply-fields{flex:2 1 400px;min-width:min(100%,400px);}
.reply-editor-grid>.reply-preview-desktop{display:block;flex:1 1 260px;max-width:420px;min-width:260px;}
.reply-editor[data-one-column=true] .reply-editor-grid{display:block;}
.reply-editor[data-one-column=true] .reply-preview-desktop{display:none;}
.reply-editor[data-one-column=true] .reply-preview-mobile{display:block;}
.reply-editor[data-one-column=false] .reply-preview-mobile{display:none;}
.reply-editor .reply-drop{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px 12px;position:relative;padding-left:44px;}
.reply-editor .reply-drop>.reply-drop-icon{position:absolute;left:12px;top:12px;width:20px;height:20px;}
.reply-editor .reply-drop>.reply-drop-copy{flex:1 1 220px;min-width:0;}
.reply-editor .reply-drop>.reply-file-select{flex:none;}
/* R11: both first lines start at the same baseline; errors keep their field association. */
.reply-library .reply-variable-row{align-items:start;}
.reply-library .reply-variable-row>label{margin-top:0;}
.reply-variable-identity{align-items:start;align-content:start;}
.reply-variable-identity>strong,.reply-library .reply-variable-row>label{line-height:21px;}
.reply-inbox-search{display:flex;align-items:center;gap:8px;background:var(--reply-search);border-radius:999px;padding:0 12px;min-height:40px;}
/* A3 N1/N2: the list keeps its reference width; the panel scrolls above its action. */
.reply-library .reply-library-grid{display:block;}
.reply-library .reply-list{width:100%;max-width:820px;}
.reply-library[data-editor=false]>:is(.reply-page-head,.reply-searchbar,.reply-count){max-width:820px;}
.reply-library .reply-row:has(.reply-row-inactive) .reply-row-name{color:var(--reply-meta);}
.reply-library .reply-row{grid-template-columns:minmax(0,1fr) 34px;}
.reply-library .reply-row-main>small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.reply-shortcut-mobile,.reply-row-separator{display:none;}
.reply-row-summary{display:block;min-width:0;}
.reply-library .reply-detail{position:fixed;inset:var(--reply-detail-top,var(--header-height)) var(--reply-detail-right,0) var(--portal-bottom-reserve,86px) auto;width:320px;display:flex;flex-direction:column;z-index:60;background:var(--reply-surface);border-left:1px solid var(--reply-line);}
.reply-library[data-detail-mode=overlay] .reply-detail{box-shadow:var(--reply-floating);}
.reply-detail .reply-detail-head{flex:none;padding:8px 16px;min-height:56px;}
.reply-detail .reply-detail-body{min-height:0;flex:1;overflow-y:auto;padding:16px;}
.reply-detail .reply-detail-actions{flex:none;position:static;padding:12px 16px;border-top:1px solid var(--reply-line);background:var(--reply-surface);}
.reply-library .reply-detail-actions>.button{width:100%;height:40px;min-height:40px;}
/* N7: identical data rhythm in the panel and mobile detail. */
.reply-mobile-metadata{gap:12px;}
.reply-mobile-metadata dd{margin-top:2px;color:var(--reply-text);}
.reply-detail-variable+ .reply-detail-variable{margin-top:10px;}
.reply-detail-variable>strong{font-size:14.5px;font-weight:600;}
.reply-detail-variable>span{margin-top:2px;font-size:12.5px;}
@media(max-width:767px){
 main#main:has(.reply-library){padding-top:0;}
 .reply-library .reply-page-head{padding-top:16px;}
 .reply-library .reply-row{grid-template-columns:minmax(0,1fr) 44px;gap:8px;min-height:60px;padding:8px 2px 8px 12px;}
 .reply-library .reply-row-name{font-size:15px;flex:1;}
 .reply-library .reply-row-title>.reply-shortcut-desktop{display:none;}
 .reply-library .reply-row-summary{display:flex;align-items:baseline;gap:5px;margin-top:3px;}
 .reply-library .reply-shortcut-mobile{display:block;flex:0 1 auto;max-width:45%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 13px var(--font);color:var(--reply-accent-text);background:transparent;padding:0;}
 .reply-row-separator{display:block;flex:none;color:var(--text-disabled);}
 .reply-library .reply-excerpt{flex:1;min-width:0;margin:0;font-size:13px;}
 .reply-library .reply-excerpt-variable{padding:0;border-radius:0;background:transparent;font-size:13px;font-weight:500;color:var(--reply-text);}
 .reply-library .reply-star{width:44px;height:44px;min-width:44px;min-height:44px;}
 .reply-library[data-detail=true][data-editor=false]{padding-top:0;}
 .reply-library .reply-detail{position:static;width:100%;border:0;display:block;background:transparent;}
 .reply-library[data-detail-mode=overlay] .reply-detail{box-shadow:none;}
 .reply-library[data-detail-replaces=true] .reply-detail-head{height:56px;min-height:56px;padding:6px 16px;}
 .reply-detail .reply-detail-body{overflow:visible;padding:16px 0;}
 .reply-detail:has(.reply-detail-actions) .reply-detail-body{padding-bottom:90px;}
}
@media(max-width:767px){
 .reply-library .reply-back,.reply-detail .reply-detail-menu>[data-chat-menu-trigger]{width:44px;height:44px;min-width:44px;min-height:44px;}
 .reply-detail .reply-detail-head{margin-inline:-16px;padding:6px 16px;background:var(--reply-surface);}
 .reply-detail-head>h1{font-size:18px;}
 .reply-detail .reply-detail-back{display:grid;}.reply-detail .reply-detail-close{display:none;}
 .reply-detail .reply-detail-actions{position:fixed;bottom:0;left:0;right:0;padding:10px 12px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--reply-line);background:var(--reply-surface);z-index:65;}
 .reply-library .reply-detail-actions>.button{width:100%;height:44px;min-height:44px;}
 .reply-library .reply-segments{overflow-x:auto;scrollbar-width:none;padding-right:12px;}
 .reply-editor-grid>.reply-preview-desktop{display:none;}
}
/* C22 · carga canónica, como Contactos: título, loader de marca de 24 px con su texto y filas reservadas del alto de una
   respuesta (C17 sin borde: 87 px y tres líneas en escritorio, 64 px y dos en el celular). Aparecen a los 150 ms para no
   parpadear en cargas casi instantáneas. */
.reply-loading{max-width:820px;padding-block:8px}
.reply-loading-title{margin:0 0 22px;font-size:26px;font-weight:700;line-height:1.25;letter-spacing:-.01em}
.reply-wait{opacity:0;animation:reply-show-wait 1ms 150ms forwards}
.reply-wait-status{display:flex;align-items:center;gap:var(--space-2,8px);margin:0;padding:var(--space-2,8px) 0}
.reply-skeleton>div{display:grid;align-content:center;gap:8px;min-height:87px;padding:10px 12px}
.reply-skeleton span{display:block;width:45%;height:16px;border-radius:var(--radius-sm,8px);background:var(--background-surface-subtle)}
.reply-skeleton span:nth-child(2){width:75%;height:14px}
.reply-skeleton span:nth-child(3){width:30%;height:12px}
@keyframes reply-show-wait{to{opacity:1}}
@media(max-width:767px){.reply-loading-title{margin-bottom:12px;font-size:18px}.reply-skeleton>div{min-height:64px;padding:10px 8px}.reply-skeleton span:nth-child(3){display:none}}
@media(prefers-reduced-motion:reduce){.reply-wait{animation:none;opacity:1}}

/* C17: la carga progresiva comparte la fila de estado y el botón secundario del catálogo. */
.reply-library .reply-load-more{display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 0}
.reply-library .reply-load-more .button{font:inherit;white-space:nowrap}
@media(max-width:767px){.reply-library .reply-pagination{display:none}}
.stat-workspace{display:flex;flex-direction:column;gap:16px;min-width:0;color:var(--text);font:14px/1.45 var(--font)}
/* E1.3: los colores de la referencia aprobada viven en themes/bheli-copper.css (--stat-*); aquí solo se consumen. */
.stat-workspace button,.stat-workspace input{font:inherit}.stat-workspace svg{width:18px;height:18px;flex:none}
.stat-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.stat-heading h1{font-size:26px;font-weight:700;line-height:1.2;margin:0}.stat-heading p{font-size:13px;color:var(--text-muted);margin:4px 0 0}.stat-heading .button{height:40px;padding:0 16px 0 12px;border-radius:999px;border:0;background:var(--primary);color:var(--primary-contrast);font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;cursor:pointer}
.stat-tabs{display:flex;gap:22px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--border-subtle)}.stat-tabs a{flex:none;color:var(--text-muted);padding:8px 2px 10px;border-bottom:2px solid transparent;font-weight:500;text-decoration:none}.stat-tabs a.active{color:var(--primary);border-color:var(--primary);font-weight:600}
.stat-filter-row{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap}.stat-pill{height:32px;border-radius:999px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);white-space:nowrap;font-weight:600;font-size:13px!important;cursor:pointer}.stat-pill svg{width:15px;height:15px}.stat-pill.active{background:var(--stat-accent-soft);color:var(--stat-accent-text);border-color:var(--stat-accent-border)}.stat-filter-row .bh-filter-trigger{width:32px;height:32px;min-height:32px;padding:0;justify-content:center;border-radius:50%;color:var(--text);cursor:pointer}.stat-filter-row .bh-filter-panel .bh-filter-groups{display:flex;flex-direction:column;gap:16px}.stat-filter-group{display:flex;flex-direction:column;gap:8px;min-width:0}.stat-filter-group h3{font-size:12.5px;font-weight:600;color:var(--text-secondary);margin:0}.bh-filter-panel .stat-pill{height:32px;font-weight:500;gap:0;border-color:var(--stat-chip-border);background:var(--surface)}.bh-filter-panel .stat-pill.active{font-weight:600;background:var(--stat-accent-soft);color:var(--stat-accent-text);border-color:var(--stat-accent-border)}.stat-filter-search{display:flex;align-items:center;gap:8px;height:40px;border-radius:999px;background:var(--surface-muted);padding:0 14px}.stat-filter-search svg{width:16px;height:16px;flex:none;color:var(--text-muted)}.stat-filter-search input{flex:1;min-width:0;border:0;background:none;font:inherit;font-size:14px;color:var(--text);padding:0}.stat-filter-search input:focus{outline:none}.stat-filter-search:focus-within{outline:2px solid var(--primary);outline-offset:2px}.stat-pill.stat-assignee{padding:0 12px 0 6px;gap:6px}.stat-assignee small{font-size:12px;font-weight:500;color:var(--text-muted)}.stat-assignee-avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;width:18px;height:18px;border-radius:50%;font-size:8px;font-weight:700;line-height:1;background:var(--stat-avatar-soft);color:var(--stat-avatar-text)}.stat-assignee-ai{width:18px;height:18px;border-radius:50%;background:var(--stat-ai-soft);color:var(--stat-ai-text);display:inline-flex;align-items:center;justify-content:center;flex:none}.stat-assignee-ai svg{width:12px!important;height:12px!important}.stat-filter-row .bh-filter-panel footer{margin-top:16px;padding-top:12px;border-top:1px solid var(--stat-menu-border);gap:8px;justify-content:stretch}.stat-filter-row .bh-filter-panel footer button{flex:1;min-width:0;height:40px;min-height:40px;padding:0;gap:0;border-radius:999px;font-size:13.5px;font-weight:600;display:flex;align-items:center;justify-content:center;cursor:pointer}.stat-filter-row .bh-filter-panel footer button.secondary{background:var(--stat-soft);color:var(--text);border:0}.stat-filter-row .bh-filter-panel footer button:last-child{background:var(--stat-accent);color:var(--stat-on-accent);border:0}@media(min-width:768px){.stat-filter-row .bh-filter-panel{width:380px!important;padding:16px;border:1px solid var(--stat-menu-border);border-radius:14px;box-shadow:var(--stat-float)}}.stat-search-pill span{max-width:180px;overflow:hidden;text-overflow:ellipsis}
.stat-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin-top:-8px;font-size:12px;color:var(--text-muted)}.stat-meta button{border:0;background:none;color:var(--primary);font-weight:600;text-decoration:underline;padding:0;font-size:12px;cursor:pointer}.stat-error-inline{display:inline-flex;align-items:center;gap:6px;color:var(--stat-warn);font-weight:600}.stat-error-inline svg{width:14px;height:14px;flex:none}.stat-error-retry{color:var(--stat-accent-text)!important}
.stat-menu{position:relative}.stat-menu-items{position:absolute;top:calc(100% + 6px);left:0;z-index:60;min-width:280px;max-width:340px;padding:6px;border:1px solid var(--border-subtle);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-lg);display:flex;flex-direction:column}.stat-menu-items .bheli-sheet-handle{display:none}.stat-heading .stat-menu-items,.stat-table-menu{left:auto;right:0}.stat-menu-items button,.stat-menu-items a{border:0;min-height:40px;padding:8px 12px;border-radius:10px;background:none;color:var(--text);text-align:left;text-decoration:none;white-space:nowrap;cursor:pointer;display:flex;align-items:center;gap:10px;width:100%}.stat-menu-items button:hover,.stat-menu-items a:hover{background:var(--surface-muted)}.stat-menu-items hr{border:0;border-top:1px solid var(--border-subtle);margin:6px 0}@media(min-width:768px){.stat-menu .stat-period-menu{width:300px;min-width:300px;max-width:300px}.stat-menu .stat-period-menu.stat-range-open{width:600px;min-width:600px;max-width:calc(100vw - 48px);padding:16px;border-color:var(--stat-menu-border);box-shadow:var(--stat-float)}}.stat-check{flex:none;width:17px;display:flex;color:var(--primary)}.stat-check svg{width:17px;height:17px}.stat-export-menu a svg{width:18px;height:18px;color:var(--text-muted)}.stat-table-menu button,.stat-table-menu a{justify-content:space-between}.stat-compare{display:flex;gap:10px;align-items:center;justify-content:space-between}.stat-compare span{flex:1;white-space:nowrap}.stat-compare i{display:block;flex:none;width:36px;height:20px;background:var(--border);border-radius:999px;padding:2px}.stat-compare i:before{content:"";display:block;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:var(--stat-knob-shadow)}.stat-compare i.on{background:var(--primary)}.stat-compare i.on:before{transform:translateX(16px)}
.stat-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.stat-report-body{display:flex;flex-direction:column;gap:16px;min-width:0}.stat-metric,.stat-panel{background:var(--stat-card);border:1px solid var(--stat-line);border-radius:14px;padding:16px;min-width:0}/* E38: las tarjetas de una fila comparten la altura del nombre, el valor y la comparación (subgrid), así los valores quedan alineados aunque un nombre ocupe dos líneas. */.stat-metric{position:relative;display:grid;grid-row:span 3;grid-template-rows:subgrid;align-items:start;row-gap:6px;width:100%;margin:0;text-align:left;font:inherit;color:var(--text);cursor:pointer}.stat-metric:hover{border-color:var(--stat-chip-border)}.stat-metric:focus{outline:none}.stat-metric:focus-visible:not(.stat-quiet-focus){outline:2px solid var(--stat-accent);outline-offset:2px}.stat-metric-name{display:block;font-size:13px;font-weight:500;color:var(--text-secondary)}.stat-metric-tail{white-space:nowrap}.stat-metric-name .stat-info{display:inline-flex;vertical-align:-2px;margin-left:6px}.stat-info{background:none;border:0;padding:0;color:var(--text-muted);display:flex;cursor:help}.stat-info svg{width:14px;height:14px}.stat-metric-value{display:block;color:var(--text);font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}.stat-metric-value.empty{color:var(--text-muted)}.stat-metric-context{display:flex;align-items:center;gap:4px;font-size:12.5px;color:var(--text-secondary)}.stat-metric-context.empty{color:var(--text-muted)}.stat-metric-context svg{width:14px;height:14px;flex:none}.stat-metric-context.trend-good{color:var(--stat-good)}.stat-metric-context.trend-bad{color:var(--stat-bad)}
.stat-panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat-panel{display:flex;flex-direction:column;gap:12px}.stat-panel header{display:flex;align-items:center;gap:12px;justify-content:space-between}.stat-line-panel header{flex-wrap:wrap;row-gap:4px}.stat-line-panel .stat-panel-title{flex:1 1 auto;min-width:0}.stat-line-panel .stat-panel-title h2{white-space:nowrap}.stat-line-panel .stat-legend{margin-left:auto;display:flex;gap:12px;white-space:nowrap}.stat-panel-title{display:flex;align-items:center;gap:6px;min-width:0}.stat-panel h2{font-size:15px;font-weight:600;margin:0}.stat-line{height:190px;margin-left:40px;position:relative}.stat-line>svg{position:absolute;width:100%;height:100%;overflow:visible}.stat-line .grid{stroke:var(--border-subtle);stroke-width:1;vector-effect:non-scaling-stroke}.stat-line polyline{fill:none;stroke-width:2.2;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}.stat-line .current{stroke:var(--primary)}.stat-line .previous{stroke:var(--stat-previous);stroke-dasharray:5 4}.stat-y{position:absolute;right:calc(100% + 6px);top:-7px;bottom:-7px;display:flex;flex-direction:column;justify-content:space-between;text-align:right;font-size:11px;color:var(--text-muted)}.stat-x{display:flex;justify-content:space-between;margin-left:40px;font-size:11px;color:var(--text-muted)}.stat-chart-hit{position:absolute;inset:0;display:flex}.stat-chart-hit button{flex:1;border:0;padding:0;background:none;min-width:0;cursor:pointer}.stat-chart-hit button:hover{background:none}.stat-chart-hit button:focus-visible{background:none;outline:2px solid var(--primary);outline-offset:-2px}.stat-hover-line{position:absolute;top:0;bottom:0;width:1px;background:var(--stat-guide);pointer-events:none}.stat-dot{position:absolute;width:6px;height:6px;border-radius:50%;transform:translate(-50%,50%);pointer-events:none;background:var(--primary);box-shadow:0 0 0 2px var(--surface)}.stat-dot.previous{background:var(--stat-previous)}.stat-chart-tip{position:absolute;top:0;max-width:240px;background:var(--surface);border:0;padding:10px 12px;border-radius:10px;box-shadow:var(--stat-float);font-size:12.5px;display:flex;flex-direction:column;gap:4px;pointer-events:none;z-index:5}.stat-chart-tip>strong{display:block;font-size:12px;font-weight:600}.stat-chart-tip .tip-row{display:flex;align-items:center;gap:6px;color:var(--text)}.stat-chart-tip .tip-row i{width:8px;height:8px;border-radius:50%;background:var(--primary);flex:none}.stat-chart-tip .tip-row i.previous{background:var(--stat-previous)}.stat-chart-tip .tip-row strong{margin-left:auto;padding-left:12px;font-weight:600;font-variant-numeric:tabular-nums}.stat-line:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.stat-legend{display:flex;flex-wrap:wrap;gap:14px}.stat-legend button{background:none;border:0;padding:0;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);cursor:pointer}.stat-legend button[aria-pressed=false]{opacity:.5}.stat-legend i{width:18px;border-top:2.5px solid var(--primary)}.stat-legend i.previous{border-top:2.5px dashed var(--stat-previous)}
.stat-bars{display:flex;flex-direction:column;gap:12px}.stat-bars button{background:none;border:0;padding:0;text-align:left;color:var(--text);cursor:pointer}.stat-bars button>span{display:flex;justify-content:space-between;gap:8px;font-size:13.5px}.stat-bars strong{font-weight:400;color:var(--text-muted);font-variant-numeric:tabular-nums}.stat-bars i{display:block;position:relative;height:8px;background:var(--surface-muted);border-radius:999px;margin-top:5px;overflow:hidden}.stat-bars i:after{content:"";position:absolute;inset:0 auto 0 0;width:var(--stat-bar);background:var(--primary);border-radius:999px}
.stat-heatmap{display:grid;grid-template-columns:40px repeat(6,minmax(0,1fr));gap:4px;align-items:center;font-size:11px;color:var(--text-muted)}.stat-heatmap>span{text-align:center}.stat-heatmap>span:nth-child(7n+1){text-align:left}.stat-heatmap button{height:24px;min-height:24px;padding:0;background:var(--stat-heat-base);border:0;border-radius:4px;color:var(--text);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;display:flex;align-items:center;justify-content:center;cursor:pointer}.stat-heatmap button.heat-t1{background:var(--stat-heat-1);color:var(--stat-heat-ink)}.stat-heatmap button.heat-t2{background:var(--stat-heat-2);color:var(--stat-heat-ink)}.stat-heatmap button.heat-t3{background:var(--stat-heat-3);color:var(--stat-heat-ink)}.stat-heatmap button.heat-t4{background:var(--stat-heat-4);color:var(--stat-heat-on)}.stat-heatmap button.heat-t5{background:var(--stat-heat-5);color:var(--stat-heat-on)}.stat-heatmap button[data-part="celda-activa"]{font-weight:600;box-shadow:inset 0 0 0 2px var(--stat-ink)}.stat-heatmap button:focus{outline:none}.stat-demand{position:relative}.stat-heat-tip{position:absolute;left:0;top:0;z-index:5;min-width:200px;width:max-content;white-space:nowrap;background:var(--surface);color:var(--text);padding:8px 10px;border-radius:10px;box-shadow:var(--stat-float);font-size:12.5px;pointer-events:none}.stat-heat-tip strong{font-weight:600}.stat-heat-scale{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-muted)}.stat-heat-swatches{display:flex;gap:2px}.stat-heat-swatches i{width:12px;height:12px;border-radius:3px;background:var(--stat-heat-base)}.stat-heat-swatches i.heat-t1{background:var(--stat-heat-1)}.stat-heat-swatches i.heat-t2{background:var(--stat-heat-2)}.stat-heat-swatches i.heat-t3{background:var(--stat-heat-3)}.stat-heat-swatches i.heat-t4{background:var(--stat-heat-4)}.stat-heat-swatches i.heat-t5{background:var(--stat-heat-5)}
.stat-table-wrap{overflow-x:auto}.stat-panel table{width:100%;border-collapse:collapse}.stat-panel th{text-align:left;font-size:12px;color:var(--text-muted);font-weight:600;border-bottom:1px solid var(--border-subtle);padding:8px 12px;white-space:nowrap}.stat-panel td{padding:12px;border-bottom:1px solid var(--border-subtle);font-size:13.5px}.stat-panel td small{display:block;color:var(--text-muted);font-size:12px}.stat-panel .numeric{text-align:right;font-variant-numeric:tabular-nums}.stat-row-name,.stat-panel th button{border:0;background:none;color:inherit;padding:0;text-align:inherit;cursor:pointer}.stat-panel td .stat-row-name{color:var(--text);font-weight:600}.stat-panel tbody tr:hover{background:var(--surface-muted);cursor:pointer}.stat-panel footer{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-muted)}.stat-panel footer nav{display:flex;align-items:center;gap:8px}.stat-panel footer button{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:none;border:0;color:var(--text);cursor:pointer}.stat-panel footer button:disabled{opacity:.4;cursor:default}.stat-mobile-rows{display:none}.stat-search{display:flex;align-items:center;gap:8px;border-radius:999px;background:var(--surface-muted);padding:0 12px;min-height:40px;max-width:320px}.stat-search input{width:100%;border:0;outline:0!important;background:none!important;box-shadow:none!important;color:var(--text)}.stat-search:focus-within{outline:3px solid var(--primary)}
.stat-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:70;max-width:calc(100% - 32px);background:var(--stat-toast-bg);color:var(--stat-toast-text);font-size:13.5px;padding:10px 16px;border-radius:999px;box-shadow:var(--stat-toast-shadow);text-align:center}@media(max-width:767px){.stat-toast{bottom:calc(88px + env(safe-area-inset-bottom))}}.stat-empty{text-align:center;padding:48px 16px;color:var(--text-muted)}.stat-empty h2{font-size:19px;color:var(--text)}.stat-empty-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:16px}.stat-chart-empty{min-height:190px;display:grid;place-items:center;color:var(--text-muted)}.stat-error{padding:16px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}.stat-topbar{height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,var(--primary),transparent);background-size:40% 100%;background-repeat:no-repeat;animation:stat-topbar-slide 1.1s linear infinite}@keyframes stat-topbar-slide{from{background-position:100% 0}to{background-position:-40% 0}}.stat-attenuated{opacity:.55}.stat-skeleton{display:flex;flex-direction:column;gap:12px}.stat-skeleton-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.stat-skeleton-cards span{display:block;min-height:118px;border-radius:14px;background:var(--surface-muted);animation:stat-skeleton-pulse 1.4s ease-in-out infinite}.stat-skeleton-chart{min-height:280px;border-radius:14px;background:var(--surface-muted);animation:stat-skeleton-pulse 1.4s ease-in-out infinite}@keyframes stat-skeleton-pulse{0%,100%{opacity:1}50%{opacity:.55}}.stat-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(max-width:767px){.stat-skeleton-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-skeleton-chart{min-height:220px}}@media(prefers-reduced-motion:reduce){.stat-topbar,.stat-skeleton-cards span,.stat-skeleton-chart{animation:none}}.stat-filter-options{display:flex;flex-wrap:wrap;gap:6px}
.stat-detail{position:fixed;top:var(--shell-header-height,64px);right:0;bottom:0;width:360px;background:var(--surface);border-left:1px solid var(--border-subtle);box-shadow:var(--shadow-lg);z-index:65;display:flex;flex-direction:column}.stat-detail header{display:flex;align-items:center;gap:8px;padding:14px 8px 4px 16px}.stat-detail h2{font-size:16px;font-weight:600;margin:0;flex:1}.stat-detail header button{border:0;background:none;color:var(--text);width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.stat-detail-body{overflow-y:auto;padding:16px 18px;flex:1;min-height:0;padding-bottom:100px;display:flex;flex-direction:column;gap:12px}.stat-calc-meta{font-size:12.5px;color:var(--text-muted);margin:0}.stat-calc-meta span{white-space:nowrap}.stat-calc-item{display:flex;flex-direction:column;gap:3px}.stat-calc-item strong{font-size:14px;font-weight:600}.stat-calc-item p,.stat-detail-body>p{font-size:13.5px;margin:0;color:var(--text)}.stat-detail-body.list{padding:0 0 100px;gap:0}.stat-detail-body.list>.button{margin:12px 16px 0;align-self:flex-start}.stat-detail-body>.stat-detail-sub{flex:none;font-size:12.5px;color:var(--text-secondary);margin:0;padding:0 16px 10px;display:block;text-wrap:pretty}.stat-detail-row{flex:none;display:flex;align-items:center;gap:12px;min-height:60px;padding:8px 12px 8px 16px;border:0;color:var(--text);text-decoration:none;border-radius:0}.stat-detail-row:hover{background:var(--stat-hover)}.stat-detail-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.stat-detail-text strong{font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-detail-text small{font-size:12.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-detail-row>.shell-icon{width:16px;height:16px;flex:none;color:var(--text-muted)}.stat-detail-avatar{position:relative;flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--chat-avatar-background,var(--surface-muted));color:var(--chat-avatar-text,var(--text));font-size:13px;font-weight:600}.stat-detail-avatar>.chat-channel-badge{width:16px;height:16px;box-shadow:0 0 0 2px var(--surface)}.stat-detail header .stat-mobile-back{display:none}
@media(max-width:767px){.stat-heading h1{font-size:22px}.stat-heading .button{width:44px;height:44px;padding:0;justify-content:center;border-radius:50%}.stat-export-label,.stat-inbox-pill-text,.stat-inbox-pill-chevron{display:none}.stat-inbox-pill{padding:0 10px}.stat-filter-row{overflow-x:auto;scrollbar-width:none;padding:3px 0}.stat-filter-row>*{flex:none}.stat-pill{height:40px}.stat-filter-row .bh-filter-trigger{width:40px;height:40px;min-height:40px}.stat-tabs a{min-height:44px}.stat-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-metric{padding:14px 12px}.stat-metric-value{font-size:24px}.stat-panels{grid-template-columns:1fr}.stat-panel header{flex-wrap:wrap}.stat-panel{padding:16px}.stat-line{height:170px}.stat-y span:nth-child(even){visibility:hidden}.stat-menu-items{position:fixed;top:auto;bottom:0;left:0;right:0;width:100%;max-width:none;border-radius:18px 18px 0 0;padding:12px 16px calc(20px + env(safe-area-inset-bottom));z-index:100}.stat-menu-items .bheli-sheet-handle{display:flex;justify-content:center;padding:4px 0 8px}.stat-menu-items .bheli-sheet-handle span{width:36px;height:4px;border-radius:2px;background:var(--border)}.stat-menu-items button,.stat-menu-items a{min-height:44px}.stat-detail{inset:var(--header-height,56px) 0 0;width:auto}.stat-detail header .stat-mobile-back{display:flex}.stat-detail header .stat-desktop-close{display:none}.stat-detail header button{width:44px;height:44px}.stat-conversation-table .stat-table-wrap{display:none}.stat-mobile-rows{display:flex;flex-direction:column}.stat-mobile-rows>button{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:56px;border:0;border-bottom:1px solid var(--border-subtle);background:none;color:var(--text);padding:8px 0;text-align:left;cursor:pointer}.stat-mobile-rows>button span:first-child{min-width:0;flex:1}.stat-mobile-rows strong,.stat-mobile-rows small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-mobile-rows strong{font-size:14.5px;font-weight:600}.stat-mobile-rows small{font-size:12.5px;color:var(--text-muted);margin-top:2px}.stat-mobile-rows>button svg{color:var(--text-muted)}.stat-info{min-width:24px;min-height:24px;align-items:center;justify-content:center}.stat-metric-name .stat-info{min-width:0;min-height:0}.stat-legend button{min-height:32px}}
@media(prefers-reduced-motion:reduce){.stat-workspace *{scroll-behavior:auto;animation:none;transition:none}}
.stat-range{display:flex;flex-direction:column;gap:12px;min-width:0}.stat-range-calendars{display:flex;gap:24px;flex-wrap:wrap}.stat-range-month{flex:1;min-width:252px;display:flex;flex-direction:column;gap:8px}.stat-range-month header{height:32px;padding:0;border:0;display:flex;align-items:center;gap:4px}.stat-range-month header strong{font-size:14px;font-weight:600;flex:1;text-align:center;text-transform:capitalize}.stat-range-month header button{flex:none;width:32px;height:32px;min-height:32px;padding:0;border:0;background:none;color:var(--text);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.stat-range-month header button svg{width:16px;height:16px}.stat-range-month header button:hover:not(:disabled){background:var(--ui-hover)}.stat-range-month header button:disabled{color:var(--stat-future);background:none;cursor:default}.stat-range-month header .stat-range-next-mobile{display:none}.stat-range-month header .stat-range-prev-mobile{display:none}.stat-calendar-weekdays,.stat-calendar-grid{display:grid;grid-template-columns:repeat(7,36px);justify-content:center;row-gap:2px}.stat-calendar-weekdays span{text-align:center;font-size:11.5px;color:var(--text-muted)}.stat-calendar-day{height:36px;display:flex;align-items:center;justify-content:center}.stat-calendar-day.band{background:var(--stat-accent-soft)}.stat-calendar-day.band-start{border-top-left-radius:999px;border-bottom-left-radius:999px}.stat-calendar-day.band-end{border-top-right-radius:999px;border-bottom-right-radius:999px}.stat-range .stat-calendar-dot{width:34px;height:34px;min-height:34px;flex:none;padding:0;margin:0;gap:0;border:0;border-radius:50%;background:transparent;color:var(--text);font:inherit;font-size:13px;font-weight:400;display:flex;align-items:center;justify-content:center;cursor:pointer}button.stat-calendar-dot:hover:not(:disabled):not(.edge){background:var(--ui-hover)}.stat-range .stat-calendar-dot.today{box-shadow:inset 0 0 0 1.5px var(--stat-accent)}.stat-range .stat-calendar-dot.edge{background:var(--stat-accent);color:var(--stat-on-accent);font-weight:600}.stat-range .stat-calendar-dot.future,.stat-range .stat-calendar-dot:disabled{color:var(--stat-future);background:transparent;opacity:1;cursor:default}.stat-range p[role="alert"]{font-size:12px;color:var(--error);margin:0}.stat-range-foot{display:flex;align-items:center;gap:8px;padding-top:12px;border-top:1px solid var(--stat-menu-border)}.stat-range-foot>span:first-child{flex:1;min-width:0;font-size:13px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-range-foot .button{flex:none;width:auto;height:36px;min-height:36px;padding:0 16px;gap:0;border:0;border-radius:999px;font-size:13.5px;font-weight:600;display:flex;align-items:center;justify-content:center;cursor:pointer}.stat-range-foot .button.secondary{background:var(--stat-soft);color:var(--text)}.stat-range-foot .button:not(.secondary){background:var(--stat-accent);color:var(--stat-on-accent)}.stat-range-foot .button:disabled{opacity:.5;cursor:default}@media(max-width:767px){.stat-menu-items.stat-period-menu.stat-range-open{padding:8px 16px calc(16px + env(safe-area-inset-bottom));border:0;box-shadow:var(--stat-sheet-shadow)}.stat-menu-items.stat-period-menu.stat-range-open .bheli-sheet-handle{height:4px;min-height:4px;padding:0;margin:0 0 10px}.stat-menu-items.stat-period-menu.stat-range-open .bheli-sheet-handle span{background:var(--stat-handle)}.stat-range{gap:10px}.stat-range-month.second{display:none}.stat-range-month header .stat-range-prev-mobile{display:flex}.stat-range-month{min-width:0;gap:10px}.stat-range-month header{height:40px}.stat-range-month header strong{font-size:15px}.stat-range-month header button{width:40px;height:40px;min-height:40px}.stat-range-month header button svg{width:18px;height:18px}.stat-range-month header .stat-range-next-mobile{display:flex}.stat-calendar-weekdays{grid-template-columns:repeat(7,40px);font-size:12px}.stat-calendar-grid{grid-template-columns:repeat(7,40px)}.stat-calendar-day{height:40px}.stat-range .stat-calendar-dot{width:38px;height:38px;min-height:38px;font-size:14px}.stat-range-foot{flex-wrap:wrap;row-gap:10px;padding-top:0;border-top:0}.stat-range-foot>span:first-child{flex:1 1 100%}.stat-range-foot .button{flex:1;height:44px;min-height:44px;padding:0;font-size:14px}.bh-filter-panel .stat-pill{height:40px}}
dialog.stat-detail{padding:0;margin:0 0 0 auto;max-width:none;max-height:none;height:calc(100dvh - var(--shell-header-height,64px));color:var(--text);border:0;border-left:1px solid var(--border-subtle)}dialog.stat-detail:not([open]){display:none}dialog.stat-detail::backdrop{background:var(--ui-sheet-overlay)}@media(max-width:767px){dialog.stat-detail::backdrop{background:none}}.stat-menu-items:before{display:none}.stat-menu-items>.bheli-bottom-sheet{height:auto}.stat-origin-option{display:block;width:100%;text-align:left;min-height:44px;background:none;border:0;border-bottom:1px solid var(--border-subtle);color:var(--text)}.stat-return{display:flex;align-items:center;gap:8px;padding:8px 16px;color:var(--text);font-size:13px}.stat-return svg{width:20px;height:20px}@media(max-width:767px){dialog.stat-detail{height:calc(100dvh - var(--header-height,56px));margin:0;width:100%}}
.stat-inbox-menu .stat-inbox-option{display:flex;align-items:center;justify-content:flex-start;gap:10px;white-space:normal;min-height:48px}.stat-inbox-option>span:last-child{min-width:0;flex:1}.stat-inbox-option strong{display:block;font-size:14px;font-weight:600}.stat-inbox-option small{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--text-muted);margin-top:2px}.stat-inbox-option small svg{width:14px;height:14px}.stat-inbox-option small span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-inbox-menu .stat-search{margin:6px;max-width:none}.stat-inbox-menu .stat-search button{padding:0;width:28px;min-height:28px;display:grid;place-items:center;justify-content:center}
.stat-table-menu-trigger{width:36px;height:36px;align-items:center;justify-content:center;border-radius:50%;cursor:pointer}.stat-table-menu-trigger:hover{background:var(--surface-muted)}.stat-inbox-table .stat-table-wrap th,.stat-inbox-table .stat-table-wrap td{min-width:0}.stat-inbox-table .stat-mobile-rows>button{display:flex;width:100%}@media(max-width:767px){.stat-inbox-table .stat-table-wrap{display:none}.stat-table-menu-trigger{width:44px;height:44px}}

/* E1.4 · EC2: colores por token del tema (themes/bheli-copper.css). EC5 (C30): serie anterior #B9AEA5, cuadro sin borde, sin título de eje.
   EC3 (calor-tonos): tonos 1–3 con número oscuro. EC4: fila de 40 px en el celular. EC7: cuadro del mapa en una línea. EC8: sin velo en el celular.
   EC10 (C29): el ⓘ va pegado a la última palabra del nombre. EC14: fila de días en la hoja del celular. */
/* E1.4 · EC6 (C07/S7, E43): un empleado IA elegido o aplicado se pinta como en el chat, en morado. */
.stat-pill.stat-ai.active,.bh-filter-panel .stat-pill.stat-ai.active{background:var(--stat-ai-soft);border-color:var(--stat-ai-border);color:var(--stat-ai-text)}
/* E1.4 · EC9 (C31): pestañas con desvanecido de 28 px en el borde que tiene más (el JS marca fade-start/fade-end). */
.stat-tabs.fade-end{mask-image:linear-gradient(to right,black calc(100% - 28px),transparent)}
.stat-tabs.fade-start{mask-image:linear-gradient(to left,black calc(100% - 28px),transparent)}
.stat-tabs.fade-start.fade-end{mask-image:linear-gradient(to right,transparent,black 28px,black calc(100% - 28px),transparent)}
/* E1.4 · EC13/EC15 (C31): vacío sin filtros (data-ref="vacio") y con filtros (data-ref="vacio-filtros"). */
.stat-empty-card{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:40px 24px;background:var(--stat-card);border:1px solid var(--stat-line);border-radius:14px;color:var(--text)}
.stat-empty-card h2{margin:0;font-size:15px;font-weight:600;line-height:1.45;color:var(--text)}
.stat-empty-card p{margin:0;font-size:13.5px;line-height:1.45;color:var(--text-secondary)}
.stat-empty-card .stat-empty-actions{margin-top:6px;display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.stat-empty-card>.stat-empty-action{margin-top:6px}
.stat-empty-card button{height:36px;padding:0 16px;border:0;border-radius:999px;background:var(--stat-soft);color:var(--text);font-size:13.5px;font-weight:600;line-height:1.45;display:flex;align-items:center;cursor:pointer}
.stat-empty-card button:focus-visible{outline:2px solid var(--stat-accent);outline-offset:2px}
/* E1.4 · EC12 (C31): en el detalle de un tiempo cada fila muestra su tiempo a la derecha. */
.stat-detail-time{flex:none;font-size:13px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}
/* C34 · Dato que no aplica en una tabla (E2 · ED4): "—" en el gris terciario, con el motivo al pasar el mouse. */
.stat-workspace .stat-na{color:var(--text-muted)}
/* ── Estadísticas E2 · Mensajes y Equipo (C33, C34; referencia "Referencia Estadisticas Parte 2"). Colores por token. ── */
.stat-grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,520px),1fr));gap:16px;align-items:stretch}
/* C34 · Subpestañas: píldoras de 32 px bajo las pestañas; la encendida con tinte terracota (data-ref="equipo-subpestanas"). */
.stat-subtabs{display:flex;flex-wrap:wrap;gap:6px}
.stat-subtabs a{display:inline-flex;align-items:center;height:32px;padding:0 14px;border-radius:999px;border:1px solid var(--stat-subtab-border);background:var(--stat-card);color:var(--text-secondary);font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap}
.stat-subtabs a:hover{background:var(--stat-hover);text-decoration:none}
.stat-subtabs a.active{background:var(--stat-subtab-on);border-color:var(--stat-subtab-on-border);color:var(--stat-subtab-on-text)}
.stat-subtabs a:focus{outline:none}
.stat-subtabs a:focus-visible{outline:2px solid var(--stat-accent);outline-offset:2px}
/* C33 · Paleta de series: 1 terracota · 2 pizarra · Total 2,5 px · empleados IA morado; el punteado solo para el anterior. */
.stat-line polyline.s-total{stroke:var(--stat-series-total);stroke-width:2.6}
.stat-line polyline.s-1{stroke:var(--stat-series-1)}
.stat-line polyline.s-2{stroke:var(--stat-series-2)}
.stat-line polyline.s-ai{stroke:var(--stat-series-ai)}
.stat-dot.s-total{background:var(--stat-series-total)}
.stat-dot.s-1{background:var(--stat-series-1)}
.stat-dot.s-2{background:var(--stat-series-2)}
.stat-dot.s-ai{background:var(--stat-series-ai)}
.stat-chart-tip .tip-row i.s-total{background:var(--stat-series-total)}
.stat-chart-tip .tip-row i.s-1{background:var(--stat-series-1)}
.stat-chart-tip .tip-row i.s-2{background:var(--stat-series-2)}
.stat-chart-tip .tip-row i.s-ai{background:var(--stat-series-ai)}
.stat-series-panel .stat-legend button,.stat-legend-squares span{color:var(--text-secondary)}
.stat-legend i.s-total{border-top:2.5px solid var(--stat-series-total)}
.stat-legend i.s-1{border-top:2px solid var(--stat-series-1)}
.stat-legend i.s-2{border-top:2px solid var(--stat-series-2)}
.stat-legend i.s-ai{border-top:2px solid var(--stat-series-ai)}
.stat-legend-squares{display:flex;flex-wrap:wrap;gap:12px;margin-left:auto}
.stat-legend-squares span{display:flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap}
.stat-legend-squares i{width:10px;height:10px;border:0;border-radius:2px;background:var(--stat-series-1)}
.stat-legend-squares i.s-2{background:var(--stat-series-2)}
/* C33 · Mensajes por hora: columnas agrupadas y marcas cada 6 h. */
.stat-hours rect.s-1{fill:var(--stat-series-1)}
.stat-hours rect.s-2{fill:var(--stat-series-2)}
.stat-hours-x{position:relative;display:block;height:16px}
.stat-hours-x span{position:absolute;top:0;white-space:nowrap}
/* C33 · Barras horizontales de 8 px (entrega, motivos, bandejas, ranking) y resultados excluyentes de 14 px. */
.stat-barlist{display:flex;flex-direction:column;gap:12px}
.stat-barlist>button{display:flex;flex-direction:column;gap:4px;width:100%;margin:0;padding:0;border:0;background:none;text-align:left;font-size:14px;color:var(--text);cursor:pointer}
.stat-barlist>button>span{display:flex;align-items:center;gap:8px;min-width:0}
.stat-barlist-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat-barlist strong,.stat-outcome-legend strong{font-size:13px;font-weight:400;color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}
.stat-bar-track{display:block;height:8px;border-radius:4px;background:var(--stat-track)}
.stat-bar-fill{display:block;height:8px;border-radius:4px;background:var(--stat-series-1)}
.stat-bar-fill.s-2,.stat-bar-stack .s-2,.stat-outcome-bar .s-2,.stat-outcome-legend i.s-2{background:var(--stat-series-2)}
.stat-bar-fill.s-ai,.stat-outcome-bar .s-ai,.stat-outcome-legend i.s-ai{background:var(--stat-series-ai)}
.stat-bar-fill.s-pending,.stat-outcome-bar .s-pending,.stat-outcome-legend i.s-pending{background:var(--stat-previous)}
.stat-bar-fill.s-fail{background:var(--stat-fail)}
.stat-bar-stack{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--stat-track)}
.stat-bar-stack i,.stat-outcome-bar i{display:block;height:100%}
.stat-bar-stack .s-1,.stat-outcome-bar .s-1,.stat-outcome-legend i.s-1{background:var(--stat-series-1)}
.stat-barlist-note{margin:0;font-size:12px;color:var(--text-muted)}
.stat-chart-empty-short{min-height:120px}
.stat-outcome-bar{display:flex;height:14px;border-radius:7px;overflow:hidden}
.stat-outcome-legend{display:flex;flex-direction:column;gap:12px}
.stat-outcome-legend button{display:flex;align-items:center;gap:8px;width:100%;margin:0;padding:0;border:0;background:none;text-align:left;font-size:14px;color:var(--text);cursor:pointer}
.stat-outcome-legend i{flex:none;width:10px;height:10px;border-radius:2px}
.stat-barlist>button:focus,.stat-outcome-legend button:focus{outline:none}
.stat-barlist>button:focus-visible,.stat-outcome-legend button:focus-visible{outline:2px solid var(--stat-accent);outline-offset:4px;border-radius:4px}
/* C33 · Ranking: avatar de 28 px, selector segmentado de 28 px junto al título. */
.stat-ranking-head{flex-wrap:wrap;row-gap:8px}
.stat-segmented{display:flex;padding:2px;border-radius:999px;background:var(--stat-track)}
.stat-segmented button{height:28px;min-height:28px;padding:0 12px;border:0;border-radius:999px;background:transparent;color:var(--text-secondary);font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.stat-segmented button.on{background:var(--stat-card);color:var(--text);box-shadow:var(--stat-segment-on-shadow)}
.stat-segmented button:focus{outline:none}
.stat-segmented button:focus-visible{outline:2px solid var(--stat-accent);outline-offset:1px}
.stat-ranking>button{flex-direction:row;align-items:center;gap:10px}
.stat-barlist.stat-ranking>button>.stat-ranking-body{flex:1;min-width:0;display:flex;flex-direction:column;align-items:stretch;gap:4px}
.stat-ranking-body>span{display:flex;align-items:center;gap:8px}
.stat-ranking-body strong{font-weight:600;color:var(--text)}
/* C20 · avatar con el tono de la persona: 28 px en ranking y Equipo, 24 px en "Enviado por". */
.stat-workspace :is(.stat-rank-avatar,.stat-team-avatar,.stat-sender-avatar){display:inline-flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;min-width:28px;border-radius:50%;font-size:10.5px;font-weight:700;line-height:1;background:var(--stat-avatar-soft);color:var(--stat-avatar-text)}
/* C33 · Dispersión: ejes con título, marcas en unidades de tiempo, puntos de 7 px con el nombre al lado. */
.stat-scatter{position:relative;display:flex;flex-direction:column;gap:6px;padding-left:22px}
.stat-scatter-ytitle{position:absolute;left:0;top:100px;transform:translate(-50%,-50%) rotate(-90deg);transform-origin:center;margin-left:8px;font-size:11.5px;color:var(--text-secondary);white-space:nowrap}
.stat-scatter-plot{position:relative;height:200px;margin-left:40px;border-left:1px solid var(--stat-guide);border-bottom:1px solid var(--stat-guide)}
.stat-scatter-grid i{position:absolute;left:0;right:0;height:1px;background:var(--border-subtle)}
.stat-scatter-dot{position:absolute;width:14px;height:14px;min-height:14px;padding:0;border-radius:50%;border:2px solid var(--stat-card);background:var(--stat-series-1);transform:translate(-50%,50%);cursor:pointer;z-index:1}
.stat-scatter-dot:focus{outline:none}
.stat-scatter-dot:focus-visible{outline:2px solid var(--stat-accent);outline-offset:2px}
.stat-scatter-name{position:absolute;transform:translate(10px,-6px);font-size:11.5px;color:var(--text);white-space:nowrap;pointer-events:none}
.stat-scatter-name.left{transform:translate(calc(-100% - 10px),-6px)}
.stat-scatter-tip{position:absolute}
.stat-scatter-x{position:relative;display:block;height:16px;margin-left:40px}
.stat-scatter-x span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.stat-scatter-x span:first-child{transform:none}
.stat-scatter-x span:last-child{transform:translateX(-100%)}
.stat-scatter-xtitle{margin-left:40px;text-align:center;font-size:11.5px;color:var(--text-secondary)}
/* C34 · Tablas de un informe (mismo estilo que la parte 1): tarjeta, encabezado sombreado y filas de 52 px. */
.stat-data-table-panel{gap:8px}
table.stat-data-table{width:100%;border-collapse:collapse}
/* Como la referencia: el relleno y la separación de 12 px van en la fila; el encabezado es una franja sombreada de radio 8. */
table.stat-data-table>thead>tr{background:var(--stat-table-head);border-radius:8px;padding:10px 12px;gap:12px;font-size:12px;font-weight:600;color:var(--text-secondary)}
table.stat-data-table>thead>tr>th{background:none;padding:0;border:0;font-size:12px;font-weight:600;color:var(--text-secondary);white-space:normal}
table.stat-data-table>thead>tr>th.numeric{text-align:right}
table.stat-data-table>thead>tr>th button{font:inherit;color:inherit;padding:0}
table.stat-data-table>tbody>tr{min-height:52px;padding:6px 12px;gap:12px;border-bottom:1px solid var(--stat-row-line);box-sizing:border-box;font-size:13.5px;color:var(--text)}
table.stat-data-table>tbody>tr>td{padding:0;border:0;font-size:13.5px;color:var(--text)}
table.stat-data-table[data-view-managed=true]>:is(thead,tbody)>tr{gap:12px}
/* Cada celda mide su contenido y queda centrada en la fila de 52 px (como en la referencia). */
table.stat-data-table[data-view-managed=true]>tbody>tr>td{align-self:center}
table.stat-data-table[data-view-managed=true]>tbody>tr>td:not([hidden]){display:flex!important;align-items:center;min-width:0}
table.stat-data-table[data-view-managed=true]>tbody>tr>td.numeric:not([hidden]){justify-content:flex-end}
table.stat-data-table>tbody>tr:hover{background:var(--stat-hover);cursor:pointer}
.stat-data-table .stat-cell-muted{color:var(--text-secondary);font-variant-numeric:tabular-nums}
.stat-cell-ellipsis{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat-cell-two{display:flex;flex-direction:column;min-width:0;text-decoration:none}
.stat-cell-two:hover{text-decoration:none}
.stat-cell-two strong{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat-cell-two small{font-size:12.5px;font-weight:400;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat-direction{display:inline-flex;align-items:center;gap:6px}
.stat-direction svg{width:15px;height:15px;flex:none}
.stat-direction.in svg{transform:rotate(180deg)}
.stat-sender{display:flex;align-items:center;gap:8px;min-width:0}
.stat-workspace .stat-sender-avatar{width:24px;height:24px;min-width:24px;font-size:9.5px}
.stat-sender-ai,.stat-team-ai{flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--stat-ai-soft);color:var(--stat-ai-text)}
.stat-sender-ai,.stat-sender-icon{width:24px;height:24px}
.stat-team-ai{width:28px;height:28px}
.stat-sender-ai svg,.stat-sender-icon svg{width:13px;height:13px}
.stat-team-ai svg{width:15px;height:15px}
.stat-sender-icon{flex:none;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--stat-soft);color:var(--text-secondary)}
.stat-team-name{display:flex;align-items:center;gap:10px;min-width:0;font-weight:600}
/* MS6 · Estado: Recibido · Enviado (✓) · Entregado (✓✓ gris) · Leído (✓✓ terracota) · Fallido en terracota oscuro. */
.stat-msg-state{display:inline-flex;align-items:center;gap:4px;color:var(--text-secondary);font-weight:400;white-space:nowrap}
.stat-msg-state svg{width:14px;height:14px;flex:none}
.stat-msg-state.sent,.stat-msg-state.delivered,.stat-msg-state.pending{font-weight:500}
.stat-msg-state.read{color:var(--stat-read-text);font-weight:600}
.stat-msg-state.failed{color:var(--stat-fail);font-weight:600}
.stat-table-empty{margin:0;padding:24px 0;text-align:center;color:var(--text-muted)}
.stat-mobile-row{display:flex;flex-direction:column;gap:2px;min-height:56px;justify-content:center;padding:8px 0;border-bottom:1px solid var(--border-subtle);color:var(--text);text-decoration:none}
.stat-mobile-row:hover{text-decoration:none}
.stat-mobile-top{display:flex;align-items:center;gap:8px}
.stat-mobile-top strong{flex:1;min-width:0}
.stat-data-table-panel .stat-mobile-rows>button{justify-content:flex-start;gap:10px}
.stat-data-table-panel .stat-mobile-rows>button>span:nth-child(2){flex:1;min-width:0}
/* La regla general de la lista del celular estira el primer hijo; aquí el primero es el avatar, que conserva su tamaño. */
.stat-data-table-panel .stat-mobile-rows>button>:first-child{flex:none;min-width:28px}
@media(max-width:767px){
.stat-subtabs a{height:40px;padding:0 16px}
.stat-segmented button{height:36px;min-height:36px}
.stat-grid2{grid-template-columns:1fr}
.stat-data-table-panel .stat-table-wrap{display:none}
.stat-scatter-x span:nth-child(even){visibility:hidden}
.stat-scatter-plot .stat-y span:nth-child(even){visibility:hidden}
}
/* C34 · detalle de IA: la evidencia de la derivación en su propia línea, en el color del empleado IA. */
.stat-detail-text .stat-detail-evidence{color:var(--stat-ai-text);font-weight:500}
/* Referencia Parte 2: leyenda con 12 px entre series y trazo de 16 px; 10 px entre el encabezado y el gráfico. */
.stat-series-panel,.stat-hours-panel{gap:10px}
.stat-series-panel .stat-legend{gap:12px}
.stat-series-panel .stat-legend i{width:16px}
/* Referencia Parte 2: la marca de la leyenda es un trazo de 16 px (2 px; 2,5 px el Total) y el anterior, punteado de 2 px. */
.stat-series-panel .stat-legend i{height:2px;border:0;background:var(--stat-series-1)}
.stat-series-panel .stat-legend i.s-total{height:2.5px;background:var(--stat-series-total)}
.stat-series-panel .stat-legend i.s-2{background:var(--stat-series-2)}
.stat-series-panel .stat-legend i.s-ai{background:var(--stat-series-ai)}
.stat-series-panel .stat-legend i.previous{height:0;background:none;border-top:2px dashed var(--stat-previous)}
/* Referencia Parte 2 · tablas: el ⋮ del título mide 32 px en escritorio (44 px en el celular, como la parte 1). */
@media(min-width:768px){.stat-e2-table .stat-table-menu-trigger{width:32px;height:32px}}
/* Referencia Parte 2: la leyenda en 12 px gris secundario; las marcas cuadradas, sin trazo. */
.stat-series-panel .stat-legend,.stat-legend-squares{font-size:12px;color:var(--text-secondary)}
.stat-legend.stat-legend-squares i{border:0}
/* Celdas como en la referencia: dirección con 6 px entre flecha y texto, "Enviado por" con 8 px, nombre con 10 px. */
.stat-data-table .stat-direction{gap:6px}
.stat-data-table .stat-sender{gap:8px}
/* Referencia Parte 2: en motivos y ranking el valor ocupa el alto de la fila (sin centrar); la dispersión, 6 px entre partes. */
[data-ref="ia-motivos"] .stat-barlist>button>span,.stat-ranking-body>span{align-items:stretch}
.stat-scatter-panel{gap:6px}
.stat-metric{column-gap:6px}
/* Como la referencia: la celda contenedora va en 400 y solo el nombre en 600. */
.stat-data-table td .stat-row-name.stat-cell-two,.stat-data-table td .stat-row-name.stat-team-name{font-weight:400}
.stat-team-name .stat-cell-ellipsis{font-weight:600}
/* C33 · Ejes: en el celular, 3 marcas también en el eje de horas (0 h · 8 h · 16 h); en escritorio, cada 6 h (MS3). */
.stat-hours-x span.phone{display:none}
@media(max-width:767px){.stat-hours-x span.desk{display:none}.stat-hours-x span.phone{display:block}}
/* ux-disenar-y-revisar · M2 a 320–390 px (E2): nada se corta teniendo otra salida. */
.stat-metric-value{white-space:nowrap}
@media(max-width:767px){
/* Título de panel en dos líneas: el ⓘ queda pegado a la última palabra, como en las tarjetas (C32). */
.stat-panel-title{display:block;white-space:nowrap}
.stat-panel-title h2{display:inline;white-space:normal}
.stat-panel-title .stat-info{display:inline-flex;vertical-align:middle;margin-left:2px}
/* Reparto por bandeja: el total y su reparto bajan a otra línea antes que cortar el nombre de la bandeja. */
[data-ref="reparto-bandeja"] .stat-barlist>button>span{flex-wrap:wrap;row-gap:2px}
[data-ref="reparto-bandeja"] .stat-barlist-name{flex:1 0 auto;max-width:100%}
[data-ref="reparto-bandeja"] .stat-barlist strong{margin-left:auto}
/* Leyenda en dos filas: los botones conservan 32 px para el dedo, sin sumar el espacio entre series (M1). */
.stat-series-panel .stat-legend{row-gap:0}
/* El buscador corta su ayuda con "…", nunca en seco. */
.stat-search input{text-overflow:ellipsis}
/* Cómo terminaron: el nombre del resultado pasa a dos líneas en vez de cortarse. */
.stat-outcome-legend .stat-barlist-name{white-space:normal}
}
@media(max-width:359px){
/* 320 px: las tres subpestañas en una fila y el valor de la tarjeta en una línea ("1 min 24 s"). */
.stat-subtabs a{padding:0 12px}
.stat-metric-value{font-size:20px}
}

/* E2.1 · EE9 (C34 · Fila del detalle): se corta primero la bandeja; la fecha y la hora siempre completas. */
.stat-detail-text small.stat-detail-meta{display:flex;min-width:0;overflow:visible}
.stat-detail-meta .stat-detail-inbox{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stat-detail-meta .stat-detail-dot{flex:none;margin:0 4px}
.stat-detail-meta .stat-detail-when{flex:none;white-space:nowrap}
/* E2.1 · EE4 (C33 · Estado de un conjunto): colores del último estado de cada intento. */
.stat-outcome-bar .s-delivered,.stat-outcome-legend i.s-delivered{background:var(--stat-delivered)}
.stat-outcome-bar .s-failed,.stat-outcome-legend i.s-failed{background:var(--stat-failed)}
/* E2.1 · EE8 (C34 · Repartos con dos caminos): una línea antes del otro camino ("La tomó una persona"). */
.stat-barlist-separator{border:0;height:1px;margin:2px 0;background:var(--stat-row-line)}
/* E2.1 · EE7 (C28 · Encabezados): una línea; si no entra, dos líneas parejas, nunca una palabra sola. */
.stat-workspace table th{text-wrap:balance}

/* E2.1 · EE11 (referencia celular-mensajes): fila de 9 px arriba y abajo con la línea de arriba; nombre y estado; debajo,
   la dirección (13 px), el comienzo del mensaje y la fecha y hora en 12,5 px. Tarjetas del celular con 12 px de relleno
   y 12 px entre ellas; la lista de mensajes, con 12 px arriba y abajo y 14 px a los lados. */
.stat-msg-mobile-row{min-height:0;padding:9px 0;border-bottom:0;border-top:1px solid var(--stat-row-line);gap:2px}
.stat-msg-mobile-row .stat-mobile-top strong{font-size:14px}
.stat-msg-mobile-row .stat-msg-state{flex:none}
.stat-msg-mobile-line{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-secondary);min-width:0}
.stat-msg-mobile-line .stat-direction svg{width:13px;height:13px}
.stat-msg-mobile-preview{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat-msg-mobile-time{flex:none;white-space:nowrap}
@media(max-width:767px){
.stat-workspace .stat-metrics{gap:12px}
.stat-workspace .stat-metric{padding:12px;gap:4px}
.stat-workspace [data-ref~="tabla-mensajes"]{padding:12px 14px}
.stat-workspace .stat-metric [data-part="nombre"]{font-size:12.5px}
.stat-workspace .stat-metric [data-part="comparacion"]{font-size:12px;text-wrap:pretty}
}
/* La ⓘ de un encabezado va en la misma línea que su texto ("Traspasos con IA ⓘ"). */
.stat-workspace table th .stat-info{display:inline-flex;vertical-align:-2px;margin-left:4px}

/* E2.3 · EG2 (C17, E58): en la fila del celular cada dato va entero, nunca "…" sobre una cifra. Si la línea de alguna fila
   no entra, StatisticsWorkspace.razor.js oculta el último dato en todas (data-visible-parts) y ese dato queda en el detalle. */
.stat-mobile-rows small.stat-mobile-parts{display:flex;min-width:0;overflow:hidden;text-overflow:clip}
/* Más específico que ".stat-mobile-rows>button span:first-child" (que estira el primer hijo): cada dato con su ancho. */
.stat-mobile-rows>button small.stat-mobile-parts>span{flex:none;min-width:auto}
.stat-mobile-rows>button small.stat-mobile-parts>span.stat-mobile-text{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
/* En el celular, si la línea de la fila ocultó un dato, el detalle de esa fila empieza con todos sus datos
   (data-figures lo pone StatisticsWorkspace.razor.js al tocar la fila); si no ocultó nada, no se repiten (M6). */
/* Igual de específica que ".stat-detail-body>.stat-detail-sub" (que la pone en block) y después: gana. */
.stat-detail-body>.stat-detail-figures{display:none}
@media(max-width:767px){.stat-workspace[data-figures="show"] .stat-detail-body>.stat-detail-figures{display:block;color:var(--text);font-weight:500}}
.stat-mobile-parts>span+span::before{content:" · ";white-space:pre}
.stat-mobile-rows[data-visible-parts="2"] .stat-mobile-parts>span:nth-child(n+3),
.stat-mobile-rows[data-visible-parts="1"] .stat-mobile-parts>span:nth-child(n+2){display:none}
/* E2.3 · EG3 (C27): el espacio del botón Chats va una sola vez, dentro del scroll (chat-dock.css, data-floating-lane);
   la página ya no reserva 100 px propios abajo (al final quedaban 186 px vacíos bajo la última tabla, M1). */
/* E2.3 · EG5: todas las listas del celular de Estadísticas con el relleno de la de Mensajes (celular-mensajes): 12 px arriba
   y abajo, 14 px a los lados. */
@media(max-width:767px){
.stat-workspace :is(.stat-inbox-table,.stat-conversation-table,[data-ref~="tabla-equipo"]){padding:12px 14px}
}
/* E2.4 · EH6 (E48): en el celular, la lista de Conversaciones lleva el buscador y la línea de Mensajes: 8 px entre el
   título, el buscador y la lista, y una línea arriba de la primera fila. */
@media(max-width:767px){
.stat-workspace .stat-conversation-table{gap:8px}
.stat-conversation-table .stat-mobile-rows{border-top:1px solid var(--stat-row-line)}
}
/* E2.4 · EH7 (C02): la flecha de «Todas las bandejas» va centrada como la de la fecha (su envoltorio la dejaba en la
   línea base, 2 px más arriba). En el celular el envoltorio sigue oculto. */
@media(min-width:768px){.stat-inbox-pill-chevron{display:inline-flex}}
/* K2 · C34 1.14.5 (ui/RangeCalendar): el mes anterior y el actual, juntos a 24 px y alineados a la izquierda; nunca
   repartidos al ancho del panel. El nombre del mes, centrado en su mes aunque solo un lado tenga flecha. */
.stat-range-pair .stat-range-calendars{justify-content:flex-start}
@media(min-width:768px){.stat-range-pair .stat-range-month{flex:none;width:252px;min-width:252px}.stat-range-pair .stat-range-month header strong{font-size:13.5px}}
.stat-range-pair .stat-range-month header{position:relative}
.stat-range-pair .stat-range-month header strong{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.stat-range-pair .stat-range-month header button:last-child:not(:first-of-type){margin-left:auto}
.stat-range-pair .stat-range-month header button:disabled{color:#B9AEA5}
:root[data-theme=dark] .stat-range-pair .stat-range-month header button:disabled{color:#6E625A}
/* Chat › Equipo (R1) · catálogo 1.13: C03 encabezado, C04 botones (ux-boton), C06 buscador, C07 píldoras, C08 opciones,
   C09 interruptor, C13 toast, C15 etiqueta, C17 fila, C18 vacío, C21 barra fija, C28 paginado, C30 ventana y pasos,
   C34 pestañas, C36 hora. Todo color sale de los tokens --tm-*, que viven en el tema (bheli-copper.css) para claro y oscuro. */
.tm{display:block;min-width:0;padding-bottom:72px;color:var(--tm-text);font-size:14px}
/* Lexend en todo control sin ganarle a .tm-btn, .tm-pill ni .tm-link (especificidad 0). */
:where(.tm) :where(button,input,select,textarea){font:inherit}
.tm h1{margin:0;font-size:26px;font-weight:700;line-height:1.2;min-width:0}
.tm h2{margin:0;font-size:19px;font-weight:700}
.tm-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}

/* C34 · pestañas del menú Equipo, guardadas en la URL. */
.tm-tabs{display:flex;gap:24px;border-bottom:1px solid var(--tm-line);margin:0 0 16px;overflow-x:auto;scrollbar-width:none}
.tm-tabs::-webkit-scrollbar{display:none}
.tm-tabs a{flex:none;display:flex;align-items:center;min-height:44px;padding:0 2px;border-bottom:2px solid transparent;margin-bottom:-1px;
 color:var(--tm-secondary);font-size:14px;font-weight:600;text-decoration:none;white-space:nowrap}
.tm-tabs a:hover{color:var(--tm-text)}
.tm-tabs a[aria-current=page]{color:var(--tm-text);box-shadow:inset 0 -2px 0 var(--tm-accent)}

/* C03 · encabezado: ← en la fila del título, acciones a la derecha. */
.tm-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 16px}
.tm-head-title{display:flex;align-items:center;gap:8px;min-width:0;flex:1}
.tm-head-title h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-head-actions{display:flex;align-items:center;gap:8px;margin-left:auto}
.tm-head-meta{margin:-8px 0 16px;color:var(--tm-secondary);font-size:13.5px}
.tm-back,.tm-icon-btn{display:grid;place-items:center;flex:none;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:transparent;
 color:var(--tm-text);cursor:pointer;-webkit-tap-highlight-color:transparent}
.tm-back .chat-r2-icon{width:20px;height:20px;stroke-width:2}
.tm-icon-btn{width:34px;height:34px;color:var(--tm-secondary)}
.tm-icon-btn .chat-r2-icon{width:18px;height:18px}
@media(hover:hover){.tm-back:hover,.tm-icon-btn:hover{background:var(--tm-secondary-bg)}}
.tm-back:active,.tm-icon-btn:active{background:var(--tm-secondary-hover)}
.tm-plus{display:none}

/* C04 · botones (ux-boton): principal, secundario y de texto, con sus estados. */
.tm-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 18px;border:0;border-radius:999px;
 font-size:14px;font-weight:600;white-space:nowrap;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tm-btn.primary{background:var(--tm-accent);color:var(--tm-on-accent)}
@media(hover:hover){.tm-btn.primary:hover{background:var(--tm-accent-hover)}}
.tm-btn.primary:active{background:var(--tm-accent-pressed)}
.tm-btn.secondary{background:var(--tm-secondary-bg);color:var(--tm-text)}
@media(hover:hover){.tm-btn.secondary:hover{background:var(--tm-secondary-hover)}}
.tm-btn.secondary:active{background:var(--tm-secondary-pressed)}
.tm-btn:is(:disabled,[aria-disabled=true]){color:var(--tm-disabled);cursor:default;pointer-events:none}
.tm-btn.primary:is(:disabled,[aria-disabled=true]){background:var(--tm-secondary-bg)}
.tm-link{border:0;background:none;padding:0;color:var(--tm-accent-text);font-weight:600;text-decoration:none;cursor:pointer}
.tm-link:hover{text-decoration:underline}
/* C01/C04 1.14.4 (D7): el anillo de foco terracota del tema en todo lo que se toca; los campos y el buscador conservan
   su borde terracota (C05, C06). Solo con el teclado (:focus-visible). */
.tm :is(.tm-btn,.tm-back,.tm-icon-btn,.tm-pill,.tm-switch,.tm-row-main,.tm-option,.tm-link,.tm-tabs a):focus-visible{outline:none;box-shadow:var(--focus-ring-shadow)}

/* C06 · buscador píldora: filtra al escribir, × solo con texto, foco en la píldora. */
.tm-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px}
.tm-search{display:flex;align-items:center;gap:8px;flex:0 1 360px;min-width:320px;height:40px;padding:0 6px 0 14px;border:1.5px solid transparent;
 border-radius:999px;background:var(--tm-search);color:var(--tm-secondary)}
.tm-search:focus-within{border-color:var(--tm-accent);box-shadow:0 0 0 3px var(--tm-focus)}
.tm-search .chat-r2-icon{width:16px;height:16px;flex:none}
:root[data-theme] .tm .tm-search input.bheli-composite-input,.tm .tm-search input.bheli-composite-input{flex:1;min-width:0;height:100%;min-height:0;border:0;outline:0;border-radius:0;background:transparent;box-shadow:none;color:var(--tm-text);font-size:14px;padding:0}
.tm-search input::placeholder{color:var(--tm-meta)}
.tm-search input::-webkit-search-cancel-button{display:none}
.tm-search .tm-icon-btn{width:28px;height:28px}
.tm-count{margin-left:auto;color:var(--tm-secondary);font-size:13.5px;white-space:nowrap}
.tm mark{background:none;color:var(--tm-accent-text);font-weight:700}

/* C07 · píldoras de filtro y de opción (excluyentes o interruptor). */
.tm-pills{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.tm-pill{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px 0 10px;border:1px solid var(--tm-control-border);border-radius:999px;
 background:var(--tm-surface);color:var(--tm-secondary);font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tm-pill .chat-r2-icon{width:15px;height:15px}
@media(hover:hover){.tm-pill:hover{background:var(--tm-row-hover)}}
.tm-pill:active{background:var(--tm-soft);border-color:var(--tm-accent-border)}
.tm-pill[aria-pressed=true],.tm-pill[aria-checked=true]{background:var(--tm-soft);border-color:var(--tm-accent-border);color:var(--tm-accent-text)}
.tm-pill[aria-pressed=true]:active{background:var(--tm-soft-pressed)}
.tm-pill:disabled{color:var(--tm-disabled);cursor:default}
.tm .bh-filter-trigger{height:32px}

/* C08 · tarjetas de opción. */
.tm-options{display:flex;flex-wrap:wrap;gap:8px}
.tm-option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;flex:1 1 200px;padding:8px 14px;border:1px solid var(--tm-control-border);
 border-radius:12px;background:var(--tm-surface);color:var(--tm-text);text-align:left;cursor:pointer}
.tm-option[aria-disabled=true]{color:var(--tm-disabled);cursor:default;background:var(--tm-surface)}
.tm-option[aria-disabled=true] :is(strong,small){color:var(--tm-disabled)}
.tm-option strong{font-size:13.5px;font-weight:600}
.tm-option small{font-size:12px;color:var(--tm-secondary)}
.tm-option[aria-pressed=true]{background:var(--tm-soft);border-color:var(--tm-accent-border);color:var(--tm-accent-text)}

/* C09 · interruptor: pista 36 × 20, perilla 16; título y la línea de lo que pasa ahora. */
.tm-switch{display:flex;align-items:flex-start;gap:12px;width:100%;min-height:44px;padding:4px 0;border:0;background:transparent;color:var(--tm-text);
 text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tm-switch-track{position:relative;flex:none;width:36px;height:20px;margin-top:1px;border-radius:999px;background:var(--tm-switch-off);transition:background .15s}
.tm-switch-track::after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:var(--tm-knob);transition:left .15s}
.tm-switch[aria-checked=true] .tm-switch-track{background:var(--tm-accent)}
.tm-switch[aria-checked=true] .tm-switch-track::after{left:18px}
.tm-switch>span:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.tm-switch strong{font-size:14px;font-weight:600}
.tm-switch small{font-size:12.5px;color:var(--tm-secondary)}
.tm-switch[aria-disabled=true]{cursor:default}
.tm-switch[aria-disabled=true] .tm-switch-track{opacity:.45}
.tm-switch[aria-readonly=true]{cursor:default}
.tm-switch.compact{width:44px;min-height:44px;padding:0;align-items:center;justify-content:center}
.tm-switch.compact .tm-switch-track{margin:0}
@media(prefers-reduced-motion:reduce){.tm-switch-track,.tm-switch-track::after{transition:none}}

/* C15 · etiquetas. */
.tm-tag{display:inline-flex;align-items:center;gap:4px;flex:none;height:20px;padding:0 7px;border-radius:999px;background:var(--tm-neutral);
 color:var(--tm-secondary);font-size:11.5px;font-weight:600;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.tm-tag .chat-r2-icon{width:13px;height:13px}
.tm-tag.ochre{background:var(--tm-ochre);color:var(--tm-ochre-text)}
.tm-tag.accent{background:var(--tm-soft);color:var(--tm-accent-text)}

/* C17 · filas sin borde; acción principal a la vista, las demás al pasar el mouse. */
.tm-list{list-style:none;margin:0;padding:0}
.tm-row{position:relative;display:flex;align-items:center;gap:8px;min-height:64px;padding:0 8px 0 0;border-radius:12px}
/* Bandeja › Canales: el ⋮ de cada canal termina donde termina el ⋮ del encabezado (M12). */
.tm-row.tm-channel-row{padding-right:0}
.tm-row:hover{background:var(--tm-row-hover)}
.tm-row:has(.tm-row-main:active){background:var(--tm-soft)}
.tm-row-main{display:flex;align-items:center;gap:12px;flex:1;min-width:0;padding:10px 12px;border:0;border-radius:12px;background:none;color:inherit;
 text-align:left;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tm-row-icon{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:var(--tm-neutral);color:var(--tm-secondary)}
.tm-row-icon .chat-r2-icon{width:20px;height:20px}
.tm-row .chat-row-avatar{flex:none;width:40px;height:40px}
.tm-row-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.tm-line1{display:flex;align-items:center;gap:8px;min-width:0}
.tm-line1 strong{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
/* Q4.1: la etiqueta de estado va en la línea 1 y no se corta, en escritorio y en el celular: se corta primero el nombre. */
.tm-line1 .tm-tag{flex:none;max-width:none}
.tm-line2{font-size:13.5px;color:var(--tm-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Q10.2 · el nombre conserva 12 caracteres: si no entran junto a la etiqueta, la etiqueta pasa al inicio de la línea 2
   (TeamInterop.FitTagsAsync pone tm-tag-down en la fila). */
.tm-line2-tagged>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.tm-tag-l2{display:none}
.tm-row.tm-tag-down .tm-line1 .tm-tag{display:none}
.tm-row.tm-tag-down .tm-tag-l2{display:inline-flex;align-items:center;gap:6px;flex:none}
@media(min-width:768px){.tm-line2-tagged.tm-only-desktop{display:flex;align-items:center;gap:6px}}
.tm-line3{font-size:12px;color:var(--tm-meta);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-row-end{display:flex;align-items:center;gap:6px;flex:none;color:var(--tm-secondary);font-size:13.5px}
.tm-row-end>.chat-r2-icon{width:18px;height:18px;color:var(--tm-meta)}
.tm-row-hover{display:flex;align-items:center;gap:2px;opacity:0}
/* Miembros: el ancho de las acciones se reserva aunque falte alguna, así los interruptores quedan en columna. */
.tm-row:has(>.tm-switch.compact)>.tm-row-hover{width:70px;justify-content:flex-end}
.tm-menu-items [role=menuitem].tm-only-mobile{display:none}
/* Menú abierto: clase tm-menu-open (ui/rowHover.ts); con :has([aria-expanded=true]) abrir o cerrar cualquier menú del portal recalculaba el estilo de toda la página. */
.tm-row:hover .tm-row-hover,.tm-row:focus-within .tm-row-hover,.tm-row-hover.tm-menu-open{opacity:1}
@media(hover:none){.tm-row-hover{opacity:1}}
.tm-section{margin:24px 0 0;max-width:52rem}  /* X1: el detalle con el ancho del formulario (832 px, borde en 928). */
.tm-section-head{display:flex;align-items:center;gap:12px;justify-content:space-between;margin:0 0 8px}
.tm-section>p,.tm-hint{margin:4px 0 8px;color:var(--tm-secondary);font-size:12.5px}
/* X1: párrafos de 72 caracteres como máximo. X3: 16 px entre una ayuda y el grupo siguiente. */
.tm-section>p,.tm-hint,.tm-head-meta{max-width:72ch}
.tm-hint+.tm-field,.tm-section>p+.tm-field,.tm-switch+.tm-dl,.tm-switch-fix+.tm-dl{margin-top:16px}
.tm-switch-fix{display:inline-block;margin:0 0 0 48px;font-size:13px}


/* C20 · avatar de dos iniciales con el tono estable de la persona (mismos pares que el chat y Estadísticas). */
.tm .tm-avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;width:40px;height:40px;border-radius:50%;font-size:14px;font-weight:600;
 background:var(--tm-avatar-background);color:var(--tm-avatar-text)}
.tm .tm-avatar.small{width:32px;height:32px;font-size:12px}
.tm .tm-avatar .chat-r2-icon{width:20px;height:20px}
.tm .chat-avatar-tone-0{--chat-avatar-hue:0}
.tm .chat-avatar-tone-1{--chat-avatar-hue:30}
.tm .chat-avatar-tone-2{--chat-avatar-hue:60}
.tm .chat-avatar-tone-3{--chat-avatar-hue:90}
.tm .chat-avatar-tone-4{--chat-avatar-hue:120}
.tm .chat-avatar-tone-5{--chat-avatar-hue:150}
.tm .chat-avatar-tone-6{--chat-avatar-hue:180}
.tm .chat-avatar-tone-7{--chat-avatar-hue:210}
.tm .chat-avatar-tone-8{--chat-avatar-hue:240}
.tm .chat-avatar-tone-9{--chat-avatar-hue:270}
.tm .chat-avatar-tone-10{--chat-avatar-hue:300}
.tm .chat-avatar-tone-11{--chat-avatar-hue:330}

/* C18 · estados vacíos. */
.tm-empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:40px 16px;text-align:center}
.tm-empty strong{font-size:15px;font-weight:600}
.tm-empty span{color:var(--tm-secondary);font-size:13.5px;max-width:420px}
.tm-empty .tm-btn{margin-top:8px}
.tm-denied{display:flex;flex-direction:column;align-items:center;gap:6px;margin:64px auto;max-width:480px;text-align:center;color:var(--tm-text)}
.tm-denied strong{font-size:19px;font-weight:700}
.tm-denied span{color:var(--tm-secondary)}
.tm-denied .tm-btn{margin-top:12px}

/* C28 · paginado (escritorio) y C17 carga al bajar (celular). */
.tm-pager{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin:12px 0 0;padding-right:156px;color:var(--tm-secondary);font-size:13px}
.tm-pager span{margin-right:8px}
.tm-pager .tm-icon-btn:disabled{color:var(--tm-disabled);background:none;cursor:default}
.tm-more{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;color:var(--tm-secondary);font-size:13.5px}

/* C05 · campos. */
.tm-form{max-width:52rem;min-width:0}
.tm-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0 0 16px}
.tm-switch+.tm-fields{margin-top:12px}
.tm-field{display:flex;flex-direction:column;gap:6px;min-width:0;margin:0 0 16px}
.tm-fields .tm-field{margin:0}
.tm-field>label,.tm-field>span:first-child,.tm-label{font-size:14px;font-weight:600}
.tm-field :is(input:not([type=checkbox]),textarea){width:100%;height:42px;padding:0 12px;border:1px solid var(--tm-control-border);border-radius:10px;
 background:var(--tm-surface);color:var(--tm-text);font-size:14.5px}
.tm-field textarea{height:auto;min-height:110px;padding:10px 12px;resize:vertical}
.tm-field :is(input,textarea):focus{outline:none;border-color:var(--tm-accent);box-shadow:0 0 0 3px var(--tm-focus)}
.tm-field :is(input,textarea):disabled{background:var(--tm-page);color:var(--tm-secondary)}
.tm-field small,.tm-field-help{font-size:12.5px;color:var(--tm-secondary)}
.tm-field-error{font-size:12px;color:var(--tm-error)}
.tm-field.invalid :is(input,textarea){border-color:var(--tm-error)}
/* Bandejas D1 · el campo con error lleva solo su borde (C05): sin el recuadro de .invalid de app.css (validación de Blazor). */
.tm .tm-field.invalid{outline:0}
.tm .bh-choice-trigger{min-height:42px}
.tm-form-actions{display:flex;justify-content:flex-end;gap:8px;margin:24px 0 0}
/* X1: la barra de acciones con el ancho del formulario también fuera de un .tm-form (detalle del rol). */
.tm-form-actions{max-width:52rem}
.tm-notice{display:flex;align-items:flex-start;gap:8px;margin:0 0 16px;padding:10px 14px;border-radius:16px;background:var(--tm-neutral);color:var(--tm-text);font-size:13.5px}
.tm-notice .chat-r2-icon{width:16px;height:16px;flex:none;margin-top:2px;color:var(--tm-secondary)}
.tm-notice.error{background:color-mix(in srgb,var(--tm-error) 10%,var(--tm-surface))}
.tm-dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:10px 24px;margin:0 0 8px;font-size:14px}
.tm-dl dt{color:var(--tm-secondary)}
.tm-dl dd{margin:0;min-width:0;overflow-wrap:anywhere}

/* C30 · pasos y ventana. */
.tm-steps{display:flex;gap:16px;margin:0 0 16px;padding:0;list-style:none}
.tm-steps li{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--tm-secondary)}
.tm-steps i{display:grid;place-items:center;width:20px;height:20px;border:1px solid var(--tm-control-border);border-radius:50%;font-style:normal;font-size:11.5px;font-weight:600}
.tm-steps i .chat-r2-icon{width:12px;height:12px}
.tm-steps [aria-current=step]{color:var(--tm-text);font-weight:600}
.tm-steps [aria-current=step] i{background:var(--tm-accent);border-color:var(--tm-accent);color:var(--tm-on-accent)}
.tm-steps .done i{background:var(--tm-soft);border-color:var(--tm-accent-border);color:var(--tm-accent-text)}
.bh-task-window.tm-window{padding:0;display:none;flex-direction:column}
.bh-task-window.tm-window[open]{display:flex}
.tm-window header{display:flex;align-items:center;gap:8px;padding:16px 12px 8px 20px}
.tm-window header h2{flex:1;margin:0;font-size:16px;font-weight:700}
.tm-window-body{padding:4px 20px 8px;overflow:auto;min-height:0;flex:1}
.tm-window footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px 20px}
.tm-window .tm-back{display:none}
/* C12 · confirmación: compacta como «¿Descartar los cambios?», sin ×, en escritorio y en el celular. */
.bh-task-window.tm-window.tm-confirm{inset:0;width:calc(100vw - 32px);max-width:420px;height:fit-content;max-height:calc(100dvh - 32px);margin:auto;border-radius:16px;padding:0}
.tm-window.tm-confirm header{padding:20px 20px 8px}

/* C13 · toast: uno solo, centrado abajo. */
.tm .feedback-toast{position:fixed;left:50%;bottom:96px;z-index:30;width:max-content;max-width:calc(100vw - 32px);margin:0;padding:10px 18px;
 transform:translateX(-50%);border:0;border-radius:999px;background:var(--tm-toast-background);color:var(--tm-toast-text);font-size:13.5px;box-shadow:var(--tm-floating)}
.tm .feedback-toast .tm-link{color:var(--tm-toast-link)}
.tm .feedback-toast-timed{animation-duration:2.8s}

/* C36 · hora (botón con menú) y calendario de un mes. */
.tm-time{width:132px}
.tm-time-pair{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.tm-days{display:flex;gap:6px;flex-wrap:wrap}
.tm-day-rows{display:flex;flex-direction:column;gap:8px}
.tm-day-row{display:grid;grid-template-columns:170px 132px 132px auto;align-items:center;gap:12px}
/* Q7.5: sin la línea «Activo», el día encendido queda centrado con Entrada y Salida. */
.tm-day-row>.tm-switch{align-items:center}
.tm-date{position:relative}
.tm-date-panel{position:absolute;z-index:20;top:46px;left:0;width:300px;padding:12px;border:1px solid var(--tm-line);border-radius:14px;background:var(--tm-surface);box-shadow:var(--tm-floating)}
.tm-date-panel header{display:flex;align-items:center;justify-content:space-between;margin:0 0 8px;font-weight:600}
.tm-date-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.tm-date-grid>span{font-size:11.5px;color:var(--tm-meta);padding:4px 0}
.tm-date-grid button{height:36px;border:0;border-radius:50%;background:none;color:var(--tm-text);cursor:pointer}
.tm-date-grid button:hover{background:var(--tm-hover)}
.tm-date-grid button[aria-pressed=true]{background:var(--tm-accent);color:var(--tm-on-accent)}
.tm-date-grid button.today{box-shadow:inset 0 0 0 1px var(--tm-accent-border)}
.tm-date-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:42px;padding:0 12px;border:1px solid var(--tm-control-border);
 border-radius:10px;background:var(--tm-surface);color:var(--tm-text);cursor:pointer}
.tm-date-trigger .chat-r2-icon{width:16px;height:16px;color:var(--tm-secondary)}

/* Selector de varios (C08 + C28 casillas de 18 px). */
.tm-selector{display:flex;flex-direction:column;gap:8px;min-width:0}
.tm-selector-head{display:flex;align-items:center;gap:8px;justify-content:space-between}
.tm-selector .tm-search{flex:1 1 auto;min-width:0}
.tm-check-row{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:6px 12px;border:0;border-radius:12px;background:none;color:inherit;text-align:left;cursor:pointer}
.tm-check-row:hover{background:var(--tm-row-hover)}
.tm-check-row[aria-checked=true]{background:var(--tm-soft)}
.tm-check-row:disabled{cursor:default;color:var(--tm-secondary)}
.tm-box{display:grid;place-items:center;flex:none;width:18px;height:18px;border:1.5px solid var(--tm-control-border);border-radius:5px;background:var(--tm-surface);color:var(--tm-on-accent)}
.tm-box .chat-r2-icon{width:13px;height:13px;stroke-width:3}
[aria-checked=true]>.tm-box{background:var(--tm-accent);border-color:var(--tm-accent)}
.tm-check-row .chat-row-avatar{width:32px;height:32px}


/* C11 · menú ⋮ (ChatMenu con su store propio); en el celular es la hoja inferior compartida (ChatBottomSheet). */
.tm-menu{position:relative}
.tm-menu-items{position:absolute;top:calc(100% + 6px);right:0;z-index:60;display:flex;flex-direction:column;min-width:240px;max-width:320px;padding:6px;
 border:1px solid var(--tm-menu-border);border-radius:14px;background:var(--tm-surface);box-shadow:var(--tm-floating)}
.tm-menu-items [role=menuitem]{display:flex;align-items:center;gap:12px;width:100%;min-height:40px;padding:10px 12px;border:0;border-radius:10px;background:none;
 color:var(--tm-text);font-size:14px;text-align:left;white-space:nowrap;cursor:pointer}
.tm-menu-items [role=menuitem]:hover{background:var(--tm-row-hover)}
.tm-menu-items [role=menuitem] .chat-r2-icon{width:18px;height:18px;flex:none;color:var(--tm-secondary)}
/* Q12.1: lo que no aplica va desactivado con su motivo a la vista (en el celular no hay tooltip). */
.tm-menu-items [role=menuitem]>span{display:flex;flex-direction:column;gap:2px;min-width:0;text-align:left}
.tm-menu-items [role=menuitem] small{font-size:12px;font-weight:400;color:var(--tm-secondary);white-space:normal}
.tm-menu-items [role=menuitem][aria-disabled=true]{color:var(--tm-disabled);cursor:default}
.tm-menu-items [role=menuitem][aria-disabled=true]:hover{background:none}
.tm-menu-items a[role=menuitem]{color:var(--tm-text);text-decoration:none}
.tm-only-mobile{display:none}
/* Q9.1: en escritorio las acciones de lectura del rol van en la cabecera; en el celular, en la barra fija. */
.tm-form-actions.tm-read-actions{display:none}

/* C07 · «Más filtros»: el disparador es la píldora; el panel lleva los grupos como chips. */
.tm .bh-filter-trigger{display:inline-flex;align-items:center;height:auto;padding:0;border:0;background:none;color:inherit;cursor:pointer}
.tm .bh-filter-trigger:focus-visible{outline:none}
.tm .bh-filter-trigger:focus-visible .tm-pill{box-shadow:var(--focus-ring-shadow)}
.tm .bh-filter-group{display:flex;flex-direction:column;gap:8px;margin:0 0 16px}
.tm .bh-filter-group>strong{font-size:12.5px;font-weight:600;color:var(--tm-secondary)}
/* Q4.2 · C04: «Limpiar filtros» y «Aplicar» del panel, de 40 px y 14 px / 600 como los demás botones de Equipo (en el
   celular la barra del panel sigue en 44 px, C21). */
@media(min-width:768px){.tm .bh-filter-panel footer .button{min-height:40px;height:40px;padding:0 18px;border-radius:999px;font-size:14px;font-weight:600}}

/* C10 · sección plegable (ChatSection): chevron que rota −90° cerrada, título 14/600, contenido con sangría de 24 px. */
.tm .chat-section-trigger{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:0;border:0;background:none;color:var(--tm-text);
 font-size:14px;font-weight:600;text-align:left;cursor:pointer}
.tm .chat-section-trigger .chat-r2-icon{width:16px;height:16px;transition:transform .15s}
.tm .chat-section-trigger[aria-expanded=false] .chat-r2-icon{transform:rotate(-90deg)}
.tm .chat-section-content{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:4px 0 8px 24px}
.tm .chat-section-content[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.tm .chat-section-trigger .chat-r2-icon{transition:none}}

/* Un nivel de píldoras en el detalle (C07), guardado en la URL. */
.tm-sections{margin:0 0 8px}
.tm-pill[aria-selected=true]{background:var(--tm-soft);border-color:var(--tm-accent-border);color:var(--tm-accent-text)}
.tm-inbox-roles{margin-top:12px}
.tm-inbox-role{display:flex;align-items:center;gap:12px;justify-content:space-between;min-height:48px;padding:4px 0;border-bottom:1px solid var(--tm-line)}
.tm-inbox-role>span:first-child{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-change-list{margin:8px 0 0;padding-left:18px;color:var(--tm-secondary);font-size:13.5px}

/* C12 · ¿Descartar los cambios? */
.tm .tm-discard{max-width:420px;padding:20px;border:0;border-radius:16px;background:var(--tm-surface);color:var(--tm-text);box-shadow:var(--tm-floating)}
.tm .tm-discard h2{margin:0 0 16px;font-size:16px;font-weight:700}
.tm .tm-discard .confirmation-actions{display:flex;justify-content:flex-end;gap:8px}
.tm .tm-discard :is(button):focus:not(:focus-visible){outline:none;box-shadow:none}

/* Celular (≤ 767 px): una columna, fila de 2 líneas, «+» junto al título, filtros que se deslizan y barra fija (C21). */
@media(max-width:767px){
 .tm{padding-bottom:88px}
 .tm h1{font-size:18px}
 .tm-back{width:44px;height:44px}
 .tm-head{gap:8px}
 .tm-head-actions .tm-btn{display:none}
 .tm-head-actions .tm-btn.tm-keep{display:inline-flex}
 .tm-plus{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--tm-accent);color:var(--tm-on-accent)}
 .tm-plus .chat-r2-icon{width:20px;height:20px}
 .tm-toolbar{gap:8px}
 .tm-search{flex:1 1 100%;min-width:0}
 .tm-toolbar .tm-pills{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;flex:1 1 100%;padding-right:12px;-webkit-mask-image:linear-gradient(90deg,var(--tm-mask) calc(100% - 24px),transparent)}
 .tm-toolbar .tm-pills::-webkit-scrollbar{display:none}
 .tm-count{margin-left:0}
 .tm-pill{height:40px}
 .tm-row{min-height:64px}
 .tm-row-hover{display:none}
 .tm-only-mobile{display:block}
 .tm-tabs{gap:20px;-webkit-mask-image:linear-gradient(90deg,var(--tm-mask) calc(100% - 24px),transparent);padding-right:12px}
 .tm-only-desktop{display:none}
 .tm-line2-tagged.tm-only-mobile{display:flex;align-items:center;gap:6px}
 .tm-inbox-role{flex-wrap:wrap}
 .tm-row-main{padding:10px 8px}
 /* Fila del celular (C17 + C09 en la fila): el interruptor a la derecha de la línea 1, zona táctil de 44 px; la línea 2
    pasa por debajo con todo el ancho. */
 .tm-row>.tm-switch.compact{position:absolute;top:0;right:52px}
 .tm-row:has(>.tm-switch.compact)>.tm-row-hover{display:flex;position:absolute;top:0;right:8px;width:44px;opacity:1}
 .tm-row:has(>.tm-switch.compact)>.tm-row-hover .tm-icon-btn{width:44px;height:44px}
 .tm-menu-items [role=menuitem].tm-only-mobile{display:flex}
 .tm-row:has(>.tm-switch.compact) .tm-line1{padding-right:88px}
 .tm-fields{grid-template-columns:1fr}
 .tm-form-actions{position:fixed;left:0;right:0;bottom:0;z-index:30;margin:0;max-width:none;padding:10px 12px 14px;background:var(--tm-surface);border-top:1px solid var(--tm-line)}
 .tm-form-actions .tm-btn{height:44px;flex:1 1 0}
 .tm-form-actions.tm-read-actions{display:flex}
 .tm-form-actions .tm-btn.primary{flex-grow:1.4}
 .tm-pager{display:none}
 .tm-day-row{grid-template-columns:1fr 1fr;gap:8px}
 .tm-day-row>:first-child{grid-column:1/-1}
 .tm-dl{grid-template-columns:1fr;gap:2px 0}
 .tm-dl dd{margin-bottom:8px}
 .tm-window .tm-back{display:grid}
 .tm-window header [data-tm-close]{display:none}
 .tm-window footer{position:fixed;left:0;right:0;bottom:0;padding:10px 12px 14px;background:var(--tm-surface);border-top:1px solid var(--tm-line)}
 .tm-window footer .tm-btn{height:44px;flex:1 1 0}
 .tm-window.tm-confirm footer{position:static;padding:12px 20px 20px;border-top:0}
 .tm .feedback-toast{bottom:84px}
}

/* Etapa B de Accesos · Chat › Equipo: Miembros (B1), Configurar agente (B2), Grupos (B3), Acceso efectivo (B4), estados
   (B5) y celular (B6). Mismos tokens --tm-* del tema; nada de verde («Permitido» en texto principal, aprobado). */
.tm .meta,.tm td.meta,.tm dd.meta{color:var(--tm-meta)}
.tm .ochre,.tm td.ochre,.tm dd.ochre{color:var(--tm-ochre-text);font-weight:600}
.tm-pill.on{background:var(--tm-soft);border-color:var(--tm-accent-border);color:var(--tm-accent-text)}
.tm-pill .chat-r2-icon:last-child{margin-left:2px}
.tm-filter-menu{min-width:240px}
.tm-filter-menu [role=menuitemradio]{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:40px;padding:10px 12px;
 border:0;border-radius:10px;background:none;color:var(--tm-text);font-size:14px;text-align:left;white-space:nowrap;cursor:pointer}
.tm-filter-menu [role=menuitemradio]:hover{background:var(--tm-row-hover)}
.tm-filter-menu [role=menuitemradio] .chat-r2-icon{width:18px;height:18px;flex:none;color:var(--tm-accent-text)}
.tm-filter-search{padding:2px 2px 6px}
.tm-filter-search .tm-search{min-width:0;height:38px}
.tm-notice.ochre{background:var(--tm-ochre);color:var(--tm-text)}
.tm-notice.ochre .chat-r2-icon{color:var(--tm-ochre-text)}
.tm-notice strong{font-weight:600}
.tm-btn.small{height:36px;padding:0 14px;font-size:13.5px}
.tm-btn .chat-r2-icon{width:16px;height:16px}
.tm .tm-avatar.large{width:48px;height:48px;font-size:16px}

/* B1 · C28 tabla de Miembros: sin caja, encabezado 40 px (12/600 terciario), filas de 56 px con la línea entre filas;
   la última columna lleva «Configurar» a la vista y el ⋮. */
.tm-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13.5px}
.tm-table th{height:40px;padding:0 12px;text-align:left;font-size:12px;font-weight:600;color:var(--tm-meta);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tm-table:not(.tm-table-plain) thead th:nth-child(1){width:26%}
.tm-table:not(.tm-table-plain) thead th:nth-child(2){width:16%}
.tm-table:not(.tm-table-plain) thead th:nth-child(3){width:15%}
.tm-table:not(.tm-table-plain) thead th:nth-child(4){width:17%}
.tm-table:not(.tm-table-plain) thead th:nth-child(5){width:14%}
.tm-table:not(.tm-table-plain) thead th:last-child{width:160px}
/* El portal pinta tablas genéricas (fondo del encabezado y de la primera columna): Equipo va sin caja (C28). */
.tm .tm-table :is(thead,tbody,tr,th,td){background:transparent}
.tm-table tbody tr{height:56px;border-top:1px solid var(--tm-line);cursor:pointer}
/* Corrección B-6 (C27) · Miembros en escritorio: «Configurar» y el ⋮ van en el borde derecho, donde está el botón Chats. El área
   de scroll termina sobre el botón (como Respuestas), así ninguna fila visible queda debajo de él. */
@media(min-width:768px){
 .app-shell .shell-main>main#main:has(.tm-table[data-part=tabla]){margin-bottom:var(--portal-bottom-reserve,86px);padding-bottom:12px;scroll-padding-bottom:12px}
 main#main:has(.tm-table[data-part=tabla]) .tm{padding-bottom:12px}
}
.tm-table tbody tr:hover{background:var(--tm-row-hover)}
.tm-table tbody tr:active{background:var(--tm-soft)}
.tm-table td{padding:8px 12px;color:var(--tm-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Corrección B-6 · en inglés «Customer service coordinator» y «Not eligible: manual assignment» no caben en una línea: Rol del
   Chat, Asignación y Disponibilidad pasan a dos líneas (la fila de 56 px las contiene) en vez de cortarse. */
.tm-table:not(.tm-table-plain) td:is(:nth-child(2),:nth-child(4),:nth-child(5)){white-space:normal;line-height:18px}
.tm-table td.tm-table-actions{display:flex;align-items:center;justify-content:flex-end;gap:4px;height:56px;padding:0 4px 0 12px;overflow:visible}
.tm-person{display:flex;align-items:center;gap:10px;min-width:0}
.tm-person-text{display:flex;flex-direction:column;gap:1px;min-width:0}
.tm-person-text a{color:var(--tm-text);text-decoration:none;min-width:0;overflow:hidden;text-overflow:ellipsis}
.tm-person-text strong{font-size:14px;font-weight:600}
.tm-person-text small{font-size:12px;color:var(--tm-meta);overflow:hidden;text-overflow:ellipsis}
.tm-table-plain{table-layout:auto}
.tm-table-plain td{white-space:normal}
.tm-table-plain tbody tr{height:44px;cursor:default}
.tm-table-plain tbody tr:hover{background:none}
.tm-table-plain tbody th{padding:8px 12px 8px 0;font-size:14px;font-weight:600;color:var(--tm-text);text-align:left}
.tm-table-plain thead th:first-child{padding-left:0}
.tm-table-plain thead th{width:auto}

/* B2 · Configurar agente: dos columnas (A y B · C, D y E), títulos de sección cortos en mayúsculas como el diseño, y el pie
   F fijo al borde con «N cambios sin guardar», Cancelar y Guardar cambios. */
.tm-agent-head .tm-head-title{gap:12px}
.tm-head-link{font-size:14px;white-space:nowrap}
.tm-agent{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 40px;align-items:start}
.tm-agent-section+.tm-agent{margin-top:24px}
.tm-agent-column{display:flex;flex-direction:column;gap:24px;min-width:0}
.tm-agent-section{display:flex;flex-direction:column;gap:10px;min-width:0}
.tm .tm-cap{margin:0;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--tm-meta)}
.tm .tm-subtitle{margin:0;font-size:16px;font-weight:700}
.tm-agent-section .tm-dl{margin:0}
.tm-agent-section .tm-hint{margin:0}
.tm-role-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tm-role-cards .tm-option{padding:12px 14px;gap:4px}
.tm-role-cards .tm-option strong{font-size:14px}
.tm-agent-link{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;font-size:13.5px}
.tm-agent-link .chat-r2-icon{width:16px;height:16px}
.tm-special{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 14px;border-radius:12px;background:var(--tm-search);font-size:13.5px}
.tm-special strong{font-weight:600}
/* C37 · Bandeja del miembro: superficie blanca, borde de línea, radio 14, sin sombra; la única caja de su nivel. */
.tm-inbox-card{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border:1px solid var(--tm-line);border-radius:14px;background:var(--tm-surface)}
.tm-inbox-card-head{display:flex;align-items:center;gap:8px;min-width:0}
.tm-inbox-card-title{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.tm-inbox-card-title strong{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-inbox-card-title small{font-size:12.5px;color:var(--tm-secondary)}
.tm-inbox-card-switches{display:flex;flex-wrap:wrap;gap:4px 20px}
.tm-inbox-card-switches .tm-switch{width:auto;min-height:32px;align-items:center;padding:0}
.tm-inbox-card-switches .tm-switch-track{margin-top:0}
.tm-inbox-card-switches .tm-switch strong{font-weight:500;font-size:13.5px}
.tm-inbox-card-line{margin:0;font-size:13px;color:var(--tm-secondary)}
.tm-inbox-card-line.ochre{color:var(--tm-ochre-text);font-weight:600}
.tm-dl-actions{grid-template-columns:max-content minmax(0,1fr) max-content;align-items:baseline}
.tm-dl-actions .tm-dl-action{text-align:right}
.tm-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;padding:14px 16px;border:1px solid var(--tm-line);border-radius:14px;background:var(--tm-surface)}
.tm-summary strong{display:block;margin:0 0 6px;font-size:14px;font-weight:600}
.tm-summary ul{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;font-size:13.5px}
.tm-summary li{display:flex;align-items:flex-start;gap:6px}
.tm-summary li .chat-r2-icon{flex:none;width:16px;height:16px;margin-top:2px;color:var(--tm-secondary)}
.tm-summary .tm-cannot li{color:var(--tm-secondary)}
/* F en escritorio: pie del panel abajo, con su ancho libre a la derecha, como el paginado: «Guardar cambios» y «Chats» quedan en
   la misma línea sin taparse. */
.tm-agent-footer{display:flex;align-items:center;justify-content:flex-end;
 gap:8px;max-width:none;margin:24px 0 0;padding:16px 156px 16px 0;border-top:1px solid var(--tm-line);background:var(--tm-page)}
/* C21/C27 · Configurar agente y Grupos en escritorio: «Guardar cambios» siempre a la vista y el scroll termina sobre él (nada
   pasa por detrás). La página no se desplaza: lo hacen el contenido del panel y la lista de grupos, y el pie queda debajo. */
@media(min-width:768px){
 .app-shell .shell-main>main#main.chat-section-main:has(.tm-agent-footer){display:flex;flex-direction:column;overflow:hidden;padding-bottom:0}
 main#main:has(.tm-agent-footer)>.cfg1-activation,
 main#main:has(.tm-agent-footer)>.cfg1-activation>.tm:has(.tm-agent-footer){display:flex;flex-direction:column;flex:1 1 auto;min-height:0;padding-bottom:0}
 .tm:has(>.tm-agent-footer)>.tm-agent{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-gutter:stable}
 .tm-agent-footer{flex:none;margin:0}
 .tm-groups:has(.tm-agent-footer){flex:1 1 auto;min-height:0;align-items:stretch}
 .tm-groups:has(.tm-agent-footer)>.tm-groups-list{min-height:0;overflow-y:auto}
 .tm-groups-form:has(>.tm-agent-footer){display:flex;flex-direction:column;min-height:0}
 .tm-groups-form>.tm-form-body{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-gutter:stable}
}
.tm-table thead tr,.tm-table thead th{background:none}
.tm-agent-count{margin-right:auto;color:var(--tm-secondary);font-size:13.5px}
.tm-exception{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-bottom:1px solid var(--tm-line)}
.tm-exception:last-child{border-bottom:0}
.tm-exception>strong{font-size:14px;font-weight:600}
.tm-exception .tm-field{margin:4px 0 0}
.tm-group-row{display:flex;flex-direction:column;gap:6px;padding:12px 0;border-bottom:1px solid var(--tm-line)}

/* B4 · Acceso efectivo: «Calculado ahora» a la derecha del título; «¿Por qué?» como filas con el motivo y su salida. */
.tm-calculated{margin:0;font-size:13px;white-space:nowrap}
.tm-why{display:flex;flex-direction:column;gap:8px}
.tm-why-row{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--tm-line);border-radius:14px;background:var(--tm-surface);font-size:13.5px}
.tm-why-row strong{font-size:14px;font-weight:600}
.tm-why-row span{color:var(--tm-secondary)}
.tm-why-row .tm-link{align-self:flex-start;font-size:13.5px}

/* B3 · Grupos: lista a la izquierda (360 px) y formulario a la derecha; la fila elegida en tinte suave. */
.tm-groups{display:grid;grid-template-columns:360px minmax(0,1fr);gap:0 32px;align-items:start}
.tm-groups-list{min-width:0;padding-right:24px;border-right:1px solid var(--tm-line);min-height:60vh}
.tm-groups-list .tm-search{min-width:0;flex:1 1 auto}
.tm-groups-form{min-width:0;max-width:52rem}
.tm-row.selected{background:var(--tm-soft)}
.tm-row.selected:hover{background:var(--tm-soft-pressed)}
.tm-group-members-head{margin:8px 0 0}
.tm-group-members-head .tm-link{display:inline-flex;align-items:center;gap:4px;font-size:13.5px}
.tm-group-members-head .tm-link .chat-r2-icon{width:16px;height:16px}
.tm-group-members{margin:0 0 16px}
.tm-group-member{display:flex;align-items:center;gap:12px;min-height:52px;border-bottom:1px solid var(--tm-line)}
.tm-group-member-name{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.tm-group-member-name strong{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-group-member-name small{font-size:12px;color:var(--tm-meta)}
.tm-groups-form .tm-notice{margin-top:8px}
.tm-only-mobile-grid{display:none}
/* «+» de la cabecera como botón (no enlace): sin el borde ni la sombra genéricos de los botones del portal. */
.tm .tm-plus{border:0;box-shadow:none;padding:0;cursor:pointer}

@media(max-width:1099px){
 .tm-agent{grid-template-columns:1fr}
 .tm-groups{grid-template-columns:300px minmax(0,1fr)}
}
@media(max-width:767px){
 .tm-only-mobile-grid{display:grid}
 /* B1 · la fila del celular conserva su ⋮ (Configurar, chat interno, Pausar, Reanudar, Quitar del Chat): nunca se pierde. */
 .tm-member-row>.tm-row-hover{display:flex;opacity:1}
 .tm-member-row>.tm-row-hover .tm-icon-btn{width:44px;height:44px}
 /* Bandeja › Canales: el ⋮ de cada canal (Cambiar nombre, Desvincular, Desconectar) también queda a la vista. */
 .tm-channel-row>.tm-row-hover{display:flex;opacity:1}
 .tm-channel-row>.tm-row-hover .tm-icon-btn{width:44px;height:44px}
 .tm-role-cards{grid-template-columns:1fr}
 .tm-inbox-card-head{flex-wrap:wrap}
 .tm-inbox-card-head .tm-pills{order:3;flex:1 1 100%}
 .tm-summary{grid-template-columns:1fr}
 .tm-dl-actions{grid-template-columns:minmax(0,1fr) max-content;gap:2px 12px}
 .tm-dl-actions dt{grid-column:1/-1}
 .tm-dl-actions dd{margin-bottom:8px}
 .tm-agent-footer{position:fixed;left:0;right:0;bottom:0;z-index:30;flex-wrap:wrap;margin:0;padding:8px 12px 14px;background:var(--tm-surface)}
 /* C21/C27 · el scroll termina sobre la barra (nada pasa por debajo); el carril del botón Chats sigue dentro del scroll. */
 .app-shell .shell-main>main#main.chat-section-main:has(.tm-agent-footer){margin-bottom:var(--portal-actionbar-height,0px);
  padding-bottom:calc(var(--portal-bottom-reserve,86px) - var(--portal-actionbar-height,0px));scroll-padding-bottom:calc(var(--portal-bottom-reserve,86px) - var(--portal-actionbar-height,0px))}
 .tm-agent-footer .tm-agent-count{flex:1 1 100%;margin:0;font-size:12.5px}
 .tm-agent-footer .tm-btn{height:44px;flex:1 1 0}
 .tm-agent-footer .tm-btn.primary{flex-grow:1.4}
 .tm-head-link{display:none}
 .tm-groups{grid-template-columns:1fr}
 .tm-groups-list{padding-right:0;border-right:0;min-height:0}
 .tm-groups.has-form .tm-groups-list{display:none}
 .tm-group-member{flex-wrap:wrap;padding:8px 0}
 .tm-group-member .tm-pills{order:3;flex:1 1 100%}
 .tm-calculated{flex:1 1 100%}
}

/* Etapa C · Chat › Configuración. C1 Roles y permisos (C03 con subtítulo, C28 sin caja), C2 Editar rol (permisos en filas
   con tres estados C07 y su alcance como línea fija), C3 Bandeja › Reparto (C08 en tarjetas, C28 con el tope editable). */
.tm-head-title>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.tm .tm-head-sub{margin:0;color:var(--tm-secondary);font-size:13.5px;line-height:18px}
.tm-table.tm-roles-table thead th:nth-child(1){width:24%}
.tm-table.tm-roles-table thead th:nth-child(2){width:46%}
.tm-table.tm-roles-table thead th:nth-child(3){width:14%}
.tm-table.tm-roles-table thead th:nth-child(4){width:10%}
.tm-table.tm-roles-table thead th:last-child{width:56px}
.tm-table.tm-roles-table tbody th{padding:8px 12px;font-size:14px;font-weight:600;text-align:left}
.tm-table.tm-roles-table tbody th a{color:var(--tm-text);text-decoration:none}
.tm-table.tm-roles-table td:nth-child(2){white-space:normal;line-height:18px;color:var(--tm-secondary)}
.tm-table.tm-roles-table td:nth-child(4){font-variant-numeric:tabular-nums}
section[data-part=funciones-grupo]{margin-top:24px}
section[data-part=funciones-grupo]>.tm-subtitle{margin:0 0 4px}
.tm-fields.tm-fields-single{grid-template-columns:minmax(0,1fr)}
.tm-perm-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;padding:8px 0;border-bottom:1px solid var(--tm-line)}
.tm-perm-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.tm-perm-text strong{font-size:14px;font-weight:600}
.tm-perm-text small{font-size:12.5px;color:var(--tm-secondary)}
.tm-tristate{flex:none;flex-wrap:nowrap;gap:0}
.tm-tristate .tm-pill{border-radius:0;margin-left:-1px;white-space:nowrap}
.tm-tristate .tm-pill:first-child{border-radius:999px 0 0 999px;margin-left:0}
.tm-tristate .tm-pill:last-child{border-radius:0 999px 999px 0}
.tm-tristate .tm-pill[aria-pressed=true]{position:relative;z-index:1}
.tm-tristate .tm-pill[aria-disabled=true]{cursor:default}
.tm-notice.tm-notice-inline{margin:4px 0 0;padding:8px 12px}
.tm-mode-cards .tm-option{flex:1 1 180px}
.tm-routing-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.tm-routing-fields .tm-field{margin:0}
.tm-routing{grid-template-columns:minmax(0,1fr);align-content:start}
.tm-field.tm-field-narrow{max-width:360px;margin:4px 0 0}
.tm .tm-choice-field{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:42px;padding:0 12px 0 14px;
 border:1px solid var(--tm-control-border);border-radius:10px;background:var(--tm-surface);color:var(--tm-text);font-size:14.5px;text-align:left;cursor:pointer}
.tm .tm-choice-field>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm .tm-choice-field .chat-r2-icon{flex:none;width:16px;height:16px;color:var(--tm-secondary)}
.tm .tm-choice-field:focus-visible{outline:none;border-color:var(--tm-accent);box-shadow:0 0 0 3px var(--tm-focus)}
.tm-routing-table td,.tm-routing-table th{vertical-align:middle}
.tm-cap-field{display:inline-flex;flex-direction:column;gap:4px;margin:0}
.tm .tm-cap-field input{width:64px;height:34px;padding:0 10px;text-align:right;font-variant-numeric:tabular-nums}
.tm-routing-row{align-items:center;gap:12px;padding:10px 12px}
@media(max-width:767px){
 .tm-perm-row{flex-direction:column;align-items:stretch;gap:8px}
 .tm-tristate{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
 .tm-tristate .tm-pill{justify-content:center;padding:0 8px}
 .tm-routing-fields{grid-template-columns:1fr}
 .tm-field.tm-field-narrow{max-width:none}
}

/* Bandejas D1 · Chat › Configuración › Bandejas con las piezas de Equipo: lista (C28 en escritorio, C17 en el celular), ficha
   con el encabezado y las pestañas de Canales, Miembros y Reparto (C03 + C34), formulario único de alta y edición (C05, C08,
   C09) y una tarjeta por miembro como la C37 de Configurar agente. Solo tokens --tm-* del tema. */
/* C03 · con subtítulo, el ← y las acciones se alinean a la línea del título (el título toma el alto del ←). */
.tm-head:has(.tm-head-title>.tm-back+div>.tm-head-sub){align-items:flex-start}
.tm-head-title:has(>.tm-back+div>.tm-head-sub){align-items:flex-start}
.tm-head-title:has(>.tm-back+div>.tm-head-sub) h1{line-height:36px}
/* Reparto: el encabezado y las pestañas no se encogen cuando la página es una columna con el pie fijo. */
.tm-inboxes>:is(.tm-head,.tm-tabs,.tm-notice){flex:none}
.tm-inbox-title{display:flex;align-items:center;gap:8px;min-width:0}
.tm-inbox-title h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.tm-inbox-title .tm-tag,.tm-inbox-name .tm-tag,.tm-member-name .tm-tag{flex:none}
.tm-table.tm-inbox-table thead th:nth-child(1){width:40%}
.tm-table.tm-inbox-table thead th:nth-child(2){width:24%}
.tm-table.tm-inbox-table :is(th,td).number{text-align:right;font-variant-numeric:tabular-nums}
.tm-table.tm-inbox-table tbody th{padding:8px 12px;font-size:14px;font-weight:600;text-align:left}
/* C28 · el resto de las columnas en el texto secundario. */
.tm-table.tm-inbox-table td{color:var(--tm-secondary)}
.tm-inbox-name{display:flex;align-items:center;gap:8px;min-width:0}
.tm-inbox-name a{color:var(--tm-text);text-decoration:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Celular · línea 2: se achica solo el texto libre (el modo); los números nunca se cortan (C17). */
.tm-inbox-parts{display:flex;gap:4px;min-width:0}
.tm-inbox-parts>span{flex:none;white-space:nowrap}
.tm-inbox-parts>.tm-inbox-free{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
.tm-inbox-form .tm-fields{margin:0}
.tm-inbox-section{display:flex;flex-direction:column;gap:10px;margin:24px 0 0}
.tm-inbox-section .tm-dl{margin:0}
.tm-inbox-section .tm-switch{padding:0}
.tm-inbox-form .tm-field-narrow{margin:4px 0 0}
.tm-confirm-line{margin:0 0 8px;color:var(--tm-secondary);font-size:13.5px}
.tm-window-body .tm-field-error{display:block;margin:0 0 8px}
.tm-inbox-toolbar{justify-content:flex-end}
.tm-inbox-members{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.tm-member-card .tm-inbox-card-head{gap:10px}
.tm-member-card .tm-pill[aria-disabled=true]{cursor:default}
.tm-member-card .tm-pill[aria-disabled=true]:is(:hover,:active){background:var(--tm-surface);border-color:var(--tm-control-border)}
.tm-member-card .tm-pill[aria-disabled=true][aria-pressed=true]:is(:hover,:active){background:var(--tm-soft);border-color:var(--tm-accent-border)}
.tm-member-name{display:flex;align-items:center;gap:8px;min-width:0}
.tm-member-name strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.tm-member-card .tm-inbox-card-title small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-inbox-channels .tm-row:hover{background:none}
.tm-inbox-channels .tm-row-main{cursor:default}
.tm-row-icon.tm-channel-whatsapp{background:var(--channel-whatsapp-background);color:var(--channel-whatsapp-foreground)}
.tm-row-icon.tm-channel-whatsapp .chat-r2-icon{width:22px;height:22px}
/* C05 · todos los campos con el mismo borde de control del tema (el de los inputs, 3:1) y el de error. */
.tm :is(.bh-choice-trigger,.tm-choice-field,.tm-date-trigger){border-color:var(--control-border)}
.tm .bh-choice-trigger[aria-invalid=true]{border-color:var(--status-danger-text)}
/* C03 · el encabezado mide lo mismo con o sin botones: las pestañas no suben. */
.tm-inbox-head{min-height:40px}
/* C11 · una opción con su motivo: el ícono con la primera línea y el motivo en una línea. */
.tm-inboxes .tm-menu-items [role=menuitem]:has(small){align-items:flex-start}
.tm-inboxes .tm-menu-items [role=menuitem]:has(small)>.chat-r2-icon{margin-top:1px}
.tm-inboxes .tm-menu-items [role=menuitem] small{white-space:nowrap}
/* C11 · Opción con ayuda (1.14.7): la línea dice qué hace la opción, 12,5 px en el gris secundario. El menú toma el ancho
   de su opción más larga hasta 320 px; la ayuda que no entra pasa a una segunda línea (sin una palabra sola abajo). */
.tm-menu-items.tm-menu-with-help{width:max-content}
.tm-inboxes .tm-menu-items [role=menuitem] small.tm-menu-help{font-size:12.5px;line-height:1.45;white-space:normal;text-wrap:pretty}
.tm-notice.neutral .chat-r2-icon{color:var(--tm-secondary)}
.tm-inbox-add{display:flex;flex-direction:column;gap:16px;min-width:0}
.tm-inbox-add .tm-field{margin:0}
@media(max-width:1099px){
 .tm-inbox-members{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:767px){
 .tm-head-title:has(>.tm-back+div>.tm-head-sub) h1{line-height:44px}
 /* C21/C27 · como el pie de Configurar agente: el scroll del formulario termina sobre la barra fija (nada pasa por debajo)
    y el carril del botón Chats sigue dentro del scroll. */
 .app-shell .shell-main>main#main.chat-section-main:has(.tm-inbox-form>.tm-form-actions){margin-bottom:var(--portal-actionbar-height,0px);
  padding-bottom:calc(var(--portal-bottom-reserve,86px) - var(--portal-actionbar-height,0px));scroll-padding-bottom:calc(var(--portal-bottom-reserve,86px) - var(--portal-actionbar-height,0px))}
 .tm-inbox-section{margin-top:20px}
 .tm-member-card .tm-inbox-card-switches .tm-switch{min-height:44px}
 .tm-inbox-toolbar{margin-bottom:8px}
 .tm-inbox-head{min-height:44px}
 /* Q10.2 de Equipo · el nombre conserva 12 caracteres: si no entran junto a la etiqueta, la etiqueta baja de línea. */
 .tm-inbox-title{flex-wrap:wrap;row-gap:2px}
 .tm-inbox-title h1{flex:1 1 12ch;min-width:12ch}
 /* C04 · «Cambiar» con zona táctil de 44 px. */
 .tm-dl-actions .tm-dl-action .tm-link{display:inline-flex;align-items:center;min-height:44px}
 /* C04 · en el celular el ⋮ del encabezado y de cada miembro mide 44 px (como el de las filas de Miembros). */
 .tm-inboxes :is(.tm-head-actions,.tm-inbox-card-head) .tm-icon-btn{width:44px;height:44px}
 /* C27 · Guía §3.4: en el celular los menús de Equipo y Bandejas se abren en la hoja inferior compartida (ChatBottomSheet):
    pegada abajo, a todo el ancho, radio 18 arriba, tirador y el fondo de la página atenuado (una sombra, así tocar afuera
    sigue cerrándola). Opciones de 52 px, como el menú de asignar del chat. */
 .tm-menu-items:not(.tm-filter-menu):has(>.bheli-bottom-sheet){position:fixed;inset:auto 0 0 0;z-index:91;width:auto;min-width:0;max-width:none;max-height:85dvh;
  overflow-y:auto;padding:8px 8px calc(20px + env(safe-area-inset-bottom,0px));border:0;border-radius:18px 18px 0 0;
  box-shadow:0 0 0 100vmax var(--ui-sheet-overlay),0 -8px 32px rgba(42,36,32,.16)}
 .tm-menu-items>.bheli-bottom-sheet>.bheli-sheet-handle{margin-bottom:4px}
 .tm-menu-items:not(.tm-filter-menu):has(>.bheli-bottom-sheet) [role=menuitem]{min-height:52px;font-size:15px}
 /* Los filtros de Equipo viven en la franja que se desliza (con difuminado): ahí la hoja quedaría recortada; siguen como
    estaban hasta la ronda de Equipo. */
 .tm-inboxes .tm-menu-items [role=menuitem] small{white-space:normal}
 /* Tres pestañas entran siempre: sin el difuminado de «hay más». */
 .tm-inboxes .tm-tabs{-webkit-mask-image:none;mask-image:none;padding-right:0}
 /* C37 celular · la función en su propia línea, a todo el ancho. */
 .tm-inbox-card-head .tm-pills>.tm-pill{flex:1 1 0;justify-content:center}
}

/* Bandejas D2: etiquetas de excepción (C15), contador a la izquierda (C16), tabla de ajustes de Miembros (C38),
   detalle del miembro (C39), ✓ de la tarjeta elegida y tarjeta solo para leer (C08), barra de la pestaña (C03/C21). */
.tm .tm-tag.accent{background:var(--tm-soft);color:var(--tm-accent)}
.tm-inboxes .tm-table td>a{display:flex;align-items:center;gap:8px;min-width:0}
.tm-inboxes .tm-table td>a>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm .tm-inbox-toolbar{justify-content:flex-start;padding-left:44px}
.tm-notice .tm-btn{margin-left:auto;flex:none}
.tm-btn.small{height:36px;padding:0 14px;font-size:13.5px}
.tm-inbox-inactive{flex-wrap:wrap}
.tm-option{padding-right:36px}
.tm-option-check{position:absolute;top:9px;right:12px;display:inline-flex;color:var(--tm-accent)}
.tm-option-check svg{width:16px;height:16px}
.tm-readonly-mode{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.tm-readonly-mode .tm-option-readonly{flex:0 1 340px;cursor:default}
.tm-readonly-mode .tm-btn{height:36px}
.tm-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.tm-members-table th:nth-child(1){width:280px}
.tm-members-table th:nth-child(2){width:212px}
.tm-members-table th:nth-child(3){width:180px}
.tm-members-table th:nth-child(4){width:150px}
.tm-members-table th:nth-child(5){width:170px}
.tm-members-table th:nth-child(6){width:130px}
.tm-members-table th:nth-child(7){width:58px}
.tm-members-table td,.tm-members-table tbody th{height:56px}
.tm-members-table .meta{color:var(--tm-muted)}
.tm-members-table .tm-person{display:flex;align-items:center;gap:10px;min-width:0}
.tm-person-text{display:grid;gap:2px;min-width:0}
.tm-person-text small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tm-muted);font-size:12.5px;font-weight:400}
.tm-member-name{display:flex;align-items:center;gap:6px;min-width:0}
.tm-member-name strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14.5px}
.tm-cell-select{display:inline-flex;align-items:center;justify-content:space-between;gap:8px;width:200px;height:32px;padding:0 10px 0 12px;border:1px solid var(--control-border);border-radius:10px;background:var(--tm-surface);color:var(--tm-text);font:inherit;font-size:13.5px;cursor:pointer}
.tm-cell-select>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-cell-select svg{width:16px;height:16px;flex:none;color:var(--tm-muted)}
.tm-cell-switch{display:inline-flex;align-items:center;gap:8px}
.tm-cap-cell{display:inline-block}
.tm-cap-cell input{width:96px;height:32px;padding:0 10px;border:1px solid var(--control-border);border-radius:10px;background:var(--tm-surface);color:var(--tm-text);font:inherit;font-size:13.5px}
.tm-cap-cell input::placeholder{color:var(--tm-hint)}
.tm-cap-cell.invalid input{border-color:var(--tm-error)}
.tm-mobile-addbar{display:none}
.tm-member-detail{display:grid;gap:20px;max-width:640px}
.tm-detail-head{display:flex;align-items:center;gap:8px}
.tm-detail-head h2{flex:1;margin:0;font-size:18px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-detail-person{display:flex;align-items:center;gap:12px;color:var(--tm-muted);font-size:13.5px}
.tm-avatar.large{width:48px;height:48px;font-size:17px}
.tm-detail-section{display:grid;gap:10px;padding-top:16px;border-top:1px solid var(--tm-border)}
.tm-detail-section h3{margin:0;font-size:14px;font-weight:600}
.tm-detail-pills .tm-pill{min-height:40px}
.tm-detail-word{margin:0;color:var(--tm-text-2)}
.tm-detail-section .tm-cap-cell input{height:42px}
.tm-routing-members-head{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;flex-wrap:wrap}
.tm-routing-settings{display:inline-flex;align-items:center;gap:10px;color:var(--tm-muted);font-size:13px}
.tm-row-icon.tm-sim-icon{background:var(--tm-tag);color:var(--tm-tag-text)}
.tm-add-reason{margin:0;color:var(--tm-text-2);font-size:13.5px}
.tm :is(.tm-back,.tm-icon-btn):focus:not(:focus-visible){outline:none;box-shadow:none}
@media (max-width:767px){
.tm-inbox-toolbar{padding-left:16px}
.tm-inbox-title{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}
.tm-inbox-title h1{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tm-inbox-head .tm-plus{display:none}
.tm-inbox-inactive .tm-btn{margin-left:auto}
.tm-readonly-mode{flex-direction:column;align-items:stretch}
.tm-readonly-mode .tm-btn{width:100%;height:40px}
.tm-mobile-addbar{display:block;position:fixed;left:0;right:0;bottom:0;z-index:30;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--tm-surface);border-top:1px solid var(--tm-border)}
.tm-mobile-addbar .tm-btn{width:100%;height:44px}
.tm [data-part="miembros"] .tm-list{padding-bottom:76px}
}

.tm .tm-members-table thead th:first-child,.tm .tm-members-table tbody th:first-child{position:sticky;left:0;background:var(--tm-bg);z-index:1}
.tm .tm-members-table thead th:first-child{z-index:2}

.tm .tm-inbox-toolbar .tm-count{margin-left:0}

.tm-row-main>svg{width:20px;height:20px;flex:none;color:var(--tm-muted)}

/* Bandejas D2.1: radio de la tarjeta (C08), etiqueta de excepción con su par (C15), filas de la tabla a 60 px (C38),
   sin subtítulo en la ficha del celular (C03), aviso a 12 px (C14) y conteo bajo la tabla (C16). */
.tm-mode-cards .tm-option{flex-direction:row;align-items:flex-start;gap:10px;min-height:64px;padding:12px 14px;border-radius:12px}
.tm-option-text{display:grid;gap:2px;min-width:0}
.tm-radio{flex:none;width:18px;height:18px;margin-top:1px;border:1.5px solid var(--control-border);border-radius:50%;background:var(--tm-surface);display:inline-grid;place-content:center}
.tm-option[aria-checked="true"]{background:var(--tm-soft);border-color:var(--tm-accent);box-shadow:0 0 0 1px var(--tm-accent)}
.tm-option[aria-checked="true"] .tm-radio{border-color:var(--tm-accent)}
.tm-option[aria-checked="true"] .tm-radio::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--tm-accent)}
.tm-option[aria-pressed="true"] .tm-radio{border-color:var(--tm-accent)}
.tm-readonly-mode .tm-option-readonly{box-shadow:0 0 0 1px var(--tm-accent);background:var(--tm-soft);border-color:var(--tm-accent)}
.tm .tm-tag.accent{background:light-dark(#F7E8DF,#3A241A);color:light-dark(#A34A24,#F0B48C)}
.tm-members-table{table-layout:fixed}
.tm-table.tm-members-table thead th:nth-child(1){width:270px}
.tm-table.tm-members-table thead th:nth-child(2){width:244px}
.tm-table.tm-members-table thead th:nth-child(3){width:180px}
.tm-table.tm-members-table thead th:nth-child(4){width:170px}
.tm-table.tm-members-table thead th:nth-child(5){width:230px}
.tm-table.tm-members-table thead th:nth-child(6){width:120px}
.tm-table.tm-members-table thead th:nth-child(7){width:50px}
.tm-members-table td,.tm-members-table tbody th{height:60px}
.tm-members-table .tm-person-text small{font-size:13px;color:var(--tm-secondary)}
.tm-members-table .tm-cell-select{width:200px;font-size:13.5px}
.tm-members-table .tm-state-word{font-size:13px;color:var(--tm-secondary)}
.tm-members-table .tm-dash{font-size:13px;color:light-dark(#756A62,#A79A8F)}
.tm-members-table .tm-cell-switch>span{font-size:13px;color:var(--tm-secondary)}
.tm-detail-section .tm-cap-cell input{height:32px}
.tm-list-count{margin:0 0 8px;padding-left:12px;font-size:13.5px;color:var(--tm-secondary)}
.tm-routing-table td.meta{color:var(--tm-meta)}
@media (max-width:767px){
.tm-inbox-head .tm-head-sub{display:none}
.tm-inboxes .tm-notice{margin-top:12px}
.tm-list-count{padding-left:16px}
}

/* Bandejas D2.1 (2): encabezado en una fila (R4), aviso centrado (R15), sin cortes en en-US (R7),
   tope centrado y placeholder terciario (R8/R9), secciones del detalle a 14 px (R5). */
.tm-inbox-inactive{align-items:center}
.tm-members-table th,.tm-routing-table th{white-space:nowrap}
.tm-members-table td{vertical-align:middle}
.tm-members-table .tm-state-word,.tm-members-table .tm-cell-switch>span{white-space:nowrap}
.tm-cap-cell input::placeholder{color:var(--tm-meta)}
.tm-member-detail{gap:0}
.tm-detail-section{padding:14px 0;border-top:1px solid var(--border)}
.tm-routing-table td.meta{font-size:13.5px;font-weight:400}
.tm-members-table .tm-cap-cell{display:inline-flex;align-items:center;line-height:1}
.tm-members-table .tm-cap-cell input{height:32px}
.tm-members-table td{padding-top:6px;padding-bottom:6px}
@media (max-width:767px){
.tm-inbox-head{display:grid;grid-template-columns:40px minmax(0,1fr) 40px;align-items:start;gap:8px;margin-bottom:12px}
.tm-inbox-head .tm-head-title{display:contents}
.tm-inbox-head .tm-back{width:40px;height:40px;flex:none}
.tm-inbox-head .tm-head-actions{margin-left:0;flex:none}
.tm-inbox-title h1{font-size:18px;line-height:24px;font-weight:700}
.tm-inbox-head .tm-head-title>div>.tm-inbox-title h1{line-height:24px}
.tm-inbox-title h1{flex:none}
.tm-inbox-inactive{align-items:flex-start;flex-wrap:nowrap}
.tm-inbox-inactive .tm-btn{align-self:center}
.tm-list-count{padding-left:16px}
.app-shell .shell-main>main#main.chat-section-main:has(.tm-mobile-addbar){margin-bottom:76px}
}
/* Bandeja › Canales · Agregar canal: el token con «Mostrar» dentro del campo (C05) y la carga de los canales (C22). */
.tm-secret{position:relative;display:block}
.tm-field .tm-secret>input[type]{padding-right:46px}
.tm-secret>.tm-icon-btn{position:absolute;top:4px;right:4px}
.tm-secret>.tm-icon-btn.on{background:var(--tm-secondary-hover);color:var(--tm-text)}
/* El token se oculta con puntos sin ser campo de contraseña (Chromium, Firefox y WebKit lo soportan). */
.tm-secret>input.tm-masked{-webkit-text-security:disc}
.tm-channel-loading{display:flex;align-items:center;gap:8px;min-height:44px;color:var(--tm-secondary);font-size:13.5px}
.tm-window-body .tm-channel-add .tm-field-error{margin:0}
/* El menú del selector (C11, 240–320 px) nunca saca barra horizontal: un nombre de canal largo se recorta al final (C17). */
.tm .tm-channel-add .bh-choice-menu{overflow-x:hidden}
.tm .tm-channel-add .bh-choice-menu button>span{min-width:0;overflow:hidden;text-overflow:ellipsis}
@media(max-width:767px){.tm-secret>.tm-icon-btn{width:40px;height:40px;top:1px;right:1px}.tm-field .tm-secret>input[type]{padding-right:48px}}
/* Pantallas de acceso (ingreso, segundo factor, registro, recuperar, cambiar contraseña, invitación, soporte): columna de
   400 px centrada bajo el logo, con las piezas del kit (C03, C04, C05, C09, C14, C21); el título es el de .tm (26 px; 18 px
   en el celular). El autocompletado del navegador no pinta su fondo celeste. Acciones abajo a la derecha (secundaria y
   principal); en el celular, en la barra fija de tm-form-actions. */
.tm.auth-page{width:100%;max-width:432px;margin:0 auto;padding:24px 16px 48px}
.auth-page>h1{margin:0 0 24px}
.auth-page>.tm-head{margin-bottom:24px}
.auth-page .auth-intro{margin:-8px 0 16px;color:var(--tm-secondary);font-size:14px}
.auth-page .auth-mode{margin:0 0 16px}
.auth-page .tm-switch{margin:-4px 0 0}
.auth-page .tm-field input:-webkit-autofill{box-shadow:0 0 0 1000px var(--tm-surface) inset;-webkit-text-fill-color:var(--tm-text);caret-color:var(--tm-text)}
.auth-page .tm-field input:-webkit-autofill:focus{box-shadow:0 0 0 1000px var(--tm-surface) inset,0 0 0 3px var(--tm-focus)}
/* C04 cargando: el indicador común de aria-busy (color-controls.css) con el mismo texto y el mismo ancho: el indicador
   de 16 px y el gap de 8 px salen del padding. */
.auth-page .tm-btn[aria-busy=true]{padding:0 6px}
.auth-page .tm-btn[aria-busy=true]::before{margin-inline-end:0}
/* Celular: con la barra fija de acciones (69 px), la pantalla se desplaza dentro de main y termina donde empieza la barra,
   como los formularios del portal: nada queda debajo de la barra, ni con la página quieta (C21/C27, V2). */
@media(max-width:767px){.tm.auth-page{max-width:none;padding:16px 16px 24px}.auth-page>h1,.auth-page>.tm-head{margin-bottom:16px}
 main.auth-shell:has(.auth-actions){height:calc(100dvh - 69px);overflow-y:auto}}
/* Bandeja › Canales (dueño, 2026-10-28): la lista mide lo que su contenido necesita (640 px) y el ⋮ queda junto al
   canal, no al otro extremo de la pantalla. El menú del selector de un campo mide lo mismo que el campo. */
@media(min-width:768px){.tm [data-part="canales"] .tm-list,.tm [data-part="canales"] .tm-list-count{max-width:640px}}
.tm-field .bh-choice-menu{min-width:max(240px,anchor-size(width));max-width:min(max(320px,anchor-size(width)),calc(100vw - 16px))}
/* D9: «Cambiar el token» bajo el número que ya está conectado con token (Agregar canal). */
.tm-field .tm-replace-token{align-self:flex-start;margin-top:4px}
/* D4: el token en Canales › WhatsApp (formulario del portal actual): el ojo dentro del campo, sin tapar el texto. */
.field .wa-secret>input[type]{padding-right:46px}
.field .wa-secret>.tm-icon-btn{top:5px}
/* Canales › WhatsApp: carril inferior para el botón del dock, como Respuestas (C21/C27): el área de trabajo termina
   antes de él y nada queda debajo, tampoco a mitad del scroll. */
.app-shell .shell-main>main#main:has(.wa-token){margin-bottom:var(--portal-bottom-reserve,98px);scroll-padding-bottom:12px}
/* Configuración › Usuarios (2026-10-28): datos de acceso del usuario nuevo, para entregarlos a mano una sola vez. La
   contraseña va en letra de ancho fijo para que no se confundan l, I y 1. */
.tm-user-done{display:grid;gap:12px;max-width:760px;margin-bottom:16px}
.tm-user-done .tm-dl{align-items:center;margin:0}
.tm-dl-action-row{display:flex;align-items:center;gap:8px;min-width:0}
.tm-dl-action-row>span{min-width:0;overflow-wrap:anywhere}
.tm-access-value{min-width:0;overflow-wrap:anywhere;padding:2px 8px;border-radius:6px;background:var(--tm-neutral);color:var(--tm-text);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:14.5px;font-weight:600}
.tm-tab-count{margin-left:6px;color:var(--tm-secondary);font-size:12.5px;font-weight:500}
/* Configuración › Usuarios (C21/C27, V2): en el celular el scroll del formulario termina sobre la barra fija y el carril del
   botón Chats sigue dentro del scroll, como Nueva bandeja. En la portada de Configuración el scroll termina sobre el botón
   Chats, como Respuestas: ninguna fila queda debajo de él con la pantalla quieta. */
@media(max-width:767px){
 .app-shell .shell-main>main#main:has(.tm-user-form>.tm-form-actions),
 .app-shell .shell-main>main#main:has(.tm-user-done~.tm-form-actions){margin-bottom:var(--portal-actionbar-height,0px);
  padding-bottom:calc(var(--portal-bottom-reserve,86px) - var(--portal-actionbar-height,0px));scroll-padding-bottom:calc(var(--portal-bottom-reserve,86px) - var(--portal-actionbar-height,0px))}
}
.app-shell .shell-main>main#main:has(.settings-home){margin-bottom:var(--portal-bottom-reserve,86px);scroll-padding-bottom:12px}
/* Cuenta (Mi perfil, Preferencias, Seguridad) y Ajustes de la empresa: todo con el ancho del formulario (52rem), el título de
   cada sección pegado a su explicación y filas de datos que no se tocan (sin hover ni sangría de fila navegable). */
.acc-form,.acc-section,.acc-links,.acc-notice{max-width:52rem}
.acc-section>.tm-section-head{margin:0;min-height:36px}
.acc-section>.tm-hint{margin:-6px 0 4px}
.rows.acc-links{display:grid;gap:10px;margin:32px 0 0}
.acc-dl{margin:0}
.acc-empty{margin:0;color:var(--tm-secondary);font-size:14px}
.acc-list .tm-row{min-height:56px;padding:0;border-bottom:1px solid var(--tm-line);border-radius:0}
.acc-list .tm-row:last-child{border-bottom:0}
.acc-list .tm-row:hover,.acc-list .tm-row:has(.tm-row-main:active){background:none}
.acc-list .tm-row-main{padding:8px 0}
.acc-list .tm-line1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.acc-more{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.acc-inline-actions{display:flex;flex-wrap:wrap;gap:8px}
.acc-password .tm-fields{margin-bottom:12px}
.acc-trust{display:grid;gap:12px;margin-top:8px;padding:14px 16px;border:1px solid var(--tm-line);border-radius:12px}
.acc-trust-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.acc-trust-text{display:grid;gap:2px;min-width:0}
.acc-trust-text small{color:var(--tm-secondary);font-size:12.5px}
.acc-otp{display:grid;gap:12px;max-width:26rem}
.acc-zone{margin:4px 0 0}
.acc-signed-out{max-width:52rem}
@media(max-width:767px){
 .acc-row-action,.acc-inline-actions .tm-btn,.acc-trust-head .tm-btn,.acc-more .tm-btn{min-height:44px}
}
/* Seguridad no tiene barra fija: como la portada de Configuración, el scroll termina sobre el botón Chats (C27). */
.app-shell .shell-main>main#main:has(.acc-section[data-part=actividad]){margin-bottom:var(--portal-bottom-reserve,86px);scroll-padding-bottom:12px}
/* Webhook de Meta por canal (dueño, 2026-10-31): la URL de devolución de llamada y el identificador de verificación siempre
   a la vista, cada uno en su caja de 42 px con «Copiar» secundario de 36 px (anatomía de C51, sin «una sola vez»: el dueño
   pidió que no se pierda); la clave secreta de la app con el campo de C54 y solo sus últimos 4 a la vista. */
.tm.wa-hook-scope{padding-bottom:0;margin-top:12px}
.wa-hook{display:grid;gap:8px;min-width:0}
.wa-hook-title{margin:0;font-size:15px;font-weight:600}
.wa-hook>.tm-hint,.wa-hook>.tm-notice{margin:0}
.wa-hook-list{display:grid;gap:16px;margin:4px 0 0}
.wa-hook-row{display:grid;gap:6px;min-width:0}
.wa-hook-row>dt{font-size:14px;font-weight:600}
.wa-hook-row>dd{display:grid;justify-items:start;gap:6px;min-width:0;margin:0}
.wa-hook-value{display:flex;align-items:center;gap:8px;width:100%;min-width:0}
.wa-hook-value>code{display:flex;align-items:center;flex:1 1 auto;min-width:0;min-height:42px;padding:8px 12px;border-radius:10px;
 background:var(--tm-search);color:var(--tm-text);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:15px;line-height:1.4;
 overflow-wrap:anywhere;word-break:break-all}
.wa-hook-value>.tm-btn{flex:none}
.wa-hook-value .tm-btn .chat-r2-icon{width:16px;height:16px}
.wa-hook-note,.wa-hook-missing{margin:0}
.wa-hook-regenerate{font-size:13.5px}
@media(max-width:767px){.wa-hook-value{flex-wrap:wrap}.wa-hook-value>code{flex-basis:100%}.wa-hook-value>.tm-btn,.wa-hook-row>dd>.tm-btn{height:44px}}

/* Conectar un número de WhatsApp con pasos (C30 con pasos, 2026-10-31): dónde está en Meta, estados hecho/esperando y la
   clave secreta opcional. Celular: ← y × en la cabecera y «Paso n de 3 · nombre» una sola vez. */
/* C30 con pasos: 560 px en escritorio (sin pasos, 480). */
@media(min-width:768px){.bh-task-window.tm-window.tm-stepped{width:560px}}
.wa-step{display:grid;gap:12px;min-width:0}
.wa-steps{margin:0 0 4px;flex-wrap:wrap}
.wa-step-line{margin:0 0 4px;color:var(--tm-secondary);font-size:12.5px;font-weight:600}
.wa-meta-place{display:flex;align-items:flex-start;gap:8px;margin:0;padding:10px 12px;border-radius:12px;background:var(--tm-neutral);color:var(--tm-text);font-size:13.5px;line-height:1.45}
.wa-meta-place .chat-r2-icon{width:16px;height:16px;flex:none;margin-top:2px;color:var(--tm-accent-text)}
.wa-instructions{display:grid;gap:6px;margin:0;padding:0 0 0 20px;font-size:13.5px;line-height:1.45}
.wa-status-list{display:grid;gap:6px}
.wa-status{display:flex;align-items:flex-start;gap:8px;margin:0;font-size:13.5px;font-weight:600;line-height:1.45}
.wa-status .chat-r2-icon{width:16px;height:16px;flex:none;margin-top:2px}
.wa-status.done{color:var(--tm-text)}
.wa-status.done .chat-r2-icon{color:var(--status-success-icon)}
.wa-status.waiting{color:var(--tm-secondary)}
.wa-status.waiting .chat-r2-icon{color:var(--tm-secondary)}
.wa-later{margin:-4px 0 0 24px}
.wa-other-tasks{margin:0}
.wa-not-arriving{display:grid;gap:6px}
.wa-token-temp{margin:0}
.wa-secret{display:grid;gap:8px;margin-top:4px;padding-top:12px;border-top:1px solid var(--tm-line)}
.wa-secret-title{margin:0;font-size:14px;font-weight:600}
.wa-secret>.tm-hint{margin:0}
.wa-secret-off{display:flex;align-items:flex-start;gap:8px;margin:0;color:var(--tm-secondary);font-size:13px}
.wa-secret-off .chat-r2-icon{width:16px;height:16px;flex:none;margin-top:1px;color:var(--tm-secondary)}
.wa-secret-row{display:flex;gap:8px;align-items:center;min-width:0}
.wa-secret-row>.tm-secret{flex:1 1 auto;min-width:0}
.wa-secret-row>.tm-btn{flex:none}
.wa-channel-status{margin-top:12px}
@media(max-width:767px){
 .tm-window.tm-stepped header [data-tm-close]{display:grid}
 .wa-secret-row{flex-wrap:wrap}
 .wa-secret-row>.tm-btn{height:44px;flex:1 1 100%}
}
/* Solo composición del preview; burbujas, Markdown y composer vienen de chat.css. */
body:has(.simulator-main) { overflow: hidden; }
body:has(.simulator-main) .topbar { min-height: var(--header-height); box-sizing: border-box; }
.shell-main:has(.simulator-main) { height: calc(100dvh - var(--header-height)); overflow: hidden; }
.wrap.simulator-main { display: flex; flex-direction: column; width: 100%; max-width: none; height: 100%; min-height: 0; padding: 0; margin: 0; }
.simulator-context { flex: none; }
.simulator-context .breadcrumb { margin: var(--space-2) var(--space-4); }
.simulator-context .mobile-back { margin: 0; }
.simulator { flex: 1; display: flex; flex-direction: column; min-height: 0; min-width: 0; background: var(--canvas); }
.simulator-head { flex: none; display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-3); background: var(--surface); border-bottom: 1px solid var(--border); }
.simulator-identity { flex: 1; min-width: 0; }
.simulator-identity h1 { margin: 0; font-size: 1.1rem; overflow-wrap: anywhere; }
.simulator-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); font-size: .8rem; color: var(--text-muted); }
.simulator-head form { flex: none; }
.simulator-head .button { padding: var(--space-2); font-size: .875rem; }
.simulator-body { position: relative; flex: 1; min-height: 0; display: grid; grid-template-rows: auto minmax(0, 1fr); grid-template-columns: minmax(0, 1fr); }
.simulator-thread { grid-row: 2; grid-column: 1; display: flex; flex-direction: column; gap: 0; min-height: 0; }
.simulator-thread > .alert { flex: none; margin: var(--space-2) var(--space-3); padding: var(--space-2) var(--space-3); }
.simulator-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--space-4); color: var(--text-muted); text-align: center; pointer-events: none; }
.simulator-empty p { margin: 0 0 var(--space-2); color: var(--text); }
.simulator-empty small { max-width: 32rem; }
.simulator .msg { max-width: 86%; }
.simulator .msg [data-msg-text] pre { white-space: pre-wrap; overflow-wrap: anywhere; }
.simulator .human-composer { padding-inline: var(--space-2); }
.simulator .human-composer textarea { resize: none; }
.simulator .human-composer textarea::placeholder { color: var(--text-muted); opacity: 1; }
.simulator-composer-help { display: block; margin-top: var(--space-1); color: var(--text-muted); font-size: .75rem; }
.simulator-inspector { grid-row: 1; grid-column: 1; background: var(--surface); border-bottom: 1px solid var(--border); }
.simulator-inspector > summary { display: flex; align-items: center; justify-content: flex-end; gap: var(--space-2); min-height: var(--touch-target); padding: var(--space-2) var(--space-3); cursor: pointer; color: var(--text-muted); font-size: .875rem; }
.simulator-inspector > summary::after { content: '⌄'; }
.simulator-inspector[open] > summary::after { content: '⌃'; }
.simulator-diagnostics { position: absolute; z-index: 3; left: var(--space-3); right: var(--space-3); bottom: 120px; padding: var(--space-4); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); overflow-wrap: anywhere; }
.simulator-diagnostics dl { margin: 0 0 var(--space-3); }
.simulator-diagnostics dt { color: var(--text-muted); font-size: .8rem; }
.simulator-diagnostics dd { margin: 0 0 var(--space-2); }
.simulator-diagnostics small { color: var(--text-muted); }
.simulator :is(button, a, textarea, summary, .chat[tabindex]):focus-visible { outline: 2px solid var(--primary); outline-offset: -2px; }
.simulator .human-composer :is(form, .chat-composer-controls) textarea:focus-visible { outline: none; }
.simulator .msg-menu > summary { min-height: var(--touch-target); min-width: var(--touch-target); }
.simulator .msg-menu-items { max-width: min(260px, 80vw); }
@media (min-width: 1100px) {
    .simulator-head { padding: var(--space-3) var(--space-4); }
    .simulator-body:has(.simulator-inspector[open]) { grid-template-columns: minmax(0, 1fr) 280px; grid-template-rows: minmax(0, 1fr); }
    .simulator-body:has(.simulator-inspector[open]) .simulator-thread { grid-row: 1; }
    .simulator-inspector[open] { grid-column: 2; border-left: 1px solid var(--border); border-bottom: 0; }
    .simulator-inspector[open] .simulator-diagnostics { position: static; border: 0; border-radius: 0; box-shadow: none; }
    .simulator .msg { max-width: min(68%, 480px); }
}

/* El panel global del simulador del portal actual (#bheli-simulation-panel) no se copia: en el portal nuevo es
   src/simulator/SimulatorPanel (ventana como el Dock, con su propio CSS) y estas reglas cambiaban la grilla del shell. */
/* Página Probar (simulator-main) del portal actual. */
.app-shell .shell-main:has(.simulator-main) { height: 100%; }
.app-shell .shell-main > .simulator-main { overflow: hidden; }
/* Primitivas compartidas; los dos portales aportan sus tokens y clases .alert/.button. */
.feedback-toast {
    /* El resultado ocupa su lugar en la página: no tapa la siguiente acción, también sin JS. */
    position: static;
    inset: auto;
    max-width: 100%;
    margin-block: var(--space-3);
    box-shadow: none;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-3);
    overflow-wrap: anywhere;
}
.feedback-toast > span { min-width: 0; flex: 1; }

.feedback-toast-timed { animation: feedback-dismiss 6s forwards; }
@keyframes feedback-dismiss {
    0%, 84% { opacity: 1; visibility: visible; }
    100% { opacity: 0; visibility: hidden; }
}
@media (prefers-reduced-motion: reduce) {
    .feedback-toast-timed { animation: feedback-dismiss 6s steps(1, end) forwards; }
}

/* KG5 · C05: el error del campo, 12 px y en el color de error (el mismo rojo del borde del campo inválido). */
.feedback-field-error { display: block; margin-top: var(--space-1); color: var(--status-danger-text); font-size: 12px; }
/* El borde/fondo comunican el error; el texto conserva contraste en ambos temas. */
.feedback-summary.alert-error, .feedback-section.alert-error { color: var(--text); }
.feedback-summary ul { margin: var(--space-2) 0 0; padding-inline-start: var(--space-5); }
.feedback-summary a { color: inherit; }
.feedback-section p, .feedback-banner p { margin: 0; }
.feedback-section strong + p, .feedback-banner strong + p { margin-top: var(--space-1); }
.feedback-banner { border-inline-start-width: var(--space-1); }

.confirmation-dialog {
    width: min(100% - 2 * var(--space-4), 520px);
    max-height: calc(100dvh - 2 * var(--space-4));
    padding: var(--space-5);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    color: var(--text);
    box-shadow: var(--shadow);
    white-space: normal;
    overflow-wrap: anywhere;
}
.confirmation-dialog::backdrop { background: var(--overlay-background); }
/* Sin JS solo la confirmación elegida o rechazada ocupa espacio dentro de su fila. */
.confirmation-dialog:not(:modal) {
    display: none;
    position: static;
    inset: auto;
    width: 100%;
    box-sizing: border-box;
    max-height: none;
    margin: var(--space-3) 0;
    box-shadow: none;
}
.confirmation-dialog[open]:not(:modal):target,
.confirmation-dialog[open][data-keep-open="true"]:not(:modal) { display: block; }
/* Cancelar vuelve al enlace hermano incluso después de un error SSR con KeepOpen. */
[data-confirm-open]:target + .confirmation-dialog:not(:modal) { display: none; }
.confirmation-dialog button.danger { background: var(--action-danger-background); color: var(--action-danger-text); }
.confirmation-dialog h2 { margin-top: 0; }
.confirmation-actions { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-4); }
.confirmation-dialog .feedback-section { margin-bottom: var(--space-3); }
/* R3: vistas personales compartidas. La grilla conserva las relaciones de una tabla comparativa. */
.report-columns-launcher {display:inline-flex;align-items:center;justify-content:center;width:40px;min-height:40px;padding:8px}
.report-columns-launcher svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8}
.report-view-tools{display:flex;justify-content:flex-end;margin-block:4px}
.report-view-dialog{box-sizing:border-box;width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:16px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--control-radius);overflow:auto}
.report-view-dialog::backdrop{background:var(--backdrop-page)}
.report-view-dialog>header{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface);position:sticky;top:-16px;z-index:2;padding-block:8px}
.report-view-dialog h2{font-size:1.125rem;margin:0}
.report-view-dialog .field{display:flex;flex-direction:column;gap:6px;margin-block:12px}
.report-view-dialog input:not([type=checkbox]),.report-view-dialog select{width:100%;min-height:40px;box-sizing:border-box}
.report-view-dialog footer{display:flex;gap:8px;flex-wrap:wrap;padding-block:12px;background:var(--surface);position:sticky;bottom:-16px;z-index:2}
.report-column-order{max-height:38dvh;overflow:auto;padding:4px;display:flex;flex-direction:column;gap:4px}
.report-column-row{display:flex;flex-shrink:0;align-items:center;gap:4px;min-height:44px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--control-radius);transition:transform 175ms ease;box-sizing:border-box}
.report-column-row>label{flex:1;min-width:0;display:flex;gap:8px;align-items:center}
.report-column-row>label>input{flex:none}
.report-column-row>label>span{min-width:0;overflow-wrap:normal;word-break:normal;hyphens:none}
.report-column-row>button{min-width:36px;min-height:40px;padding:4px}
.report-drag-handle{touch-action:none;cursor:grab;font-size:1.4rem}
.report-drag-overlay{position:fixed;pointer-events:none;opacity:1!important;z-index:100;background:var(--surface);border-radius:10px;box-shadow:var(--shadow-floating);transition:none}
/* K2 · C28: la fila que se arrastra lleva fondo sólido y sombra; donde cae, hueco con tinte y borde punteado. */
.report-drag-placeholder{background:light-dark(oklch(0.955 0.025 50), var(--background-surface-muted))!important;border:1.5px dashed light-dark(oklch(0.8 0.07 45), var(--border-strong))!important;border-radius:10px!important;box-shadow:none!important}
.report-drag-placeholder>*{visibility:hidden}
/* KA4: en la ventana de Contactos las filas son transparentes; la que se arrastra conserva su fondo sólido. */
.c1-report-window .report-column-row.report-drag-overlay{background:var(--surface)}
.report-sort{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
:has(>table[data-view-managed=true]){min-width:0;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}
table[data-view-managed=true]{display:block;width:100%;border-collapse:collapse}
table[data-view-managed=true]>thead{display:block}
table[data-view-managed=true]>tbody{display:flex;flex-direction:column}
table[data-view-managed=true]>:is(thead,tbody)>tr{display:grid!important;grid-template-columns:var(--report-columns);align-items:stretch;width:100%;position:relative}
table[data-view-managed=true]>:is(thead,tbody)>tr>:is(th,td){display:block!important;box-sizing:border-box;min-width:0;width:auto;max-width:none;overflow-wrap:anywhere}
table[data-view-managed=true]>:is(thead,tbody)>tr>[hidden]{display:none!important}
table[data-view-managed=true]>tbody>tr>td::before{display:none!important}
@media(pointer:coarse){.report-columns-launcher{min-width:44px;min-height:44px}.report-column-row>button{min-width:44px;min-height:44px}.report-view-dialog input:not([type=checkbox]),.report-view-dialog select{min-height:44px;font-size:16px}}
@media(prefers-reduced-motion:reduce){.report-column-row{transition:none}}
/* El nombre ocupa su propia línea cuando los controles dejan de compartir ancho útil. */
@media(max-width:420px){
 .report-column-row{display:grid;grid-template-columns:44px minmax(0,1fr) 44px 44px;padding:4px;gap:4px}
 .report-column-row>label{grid-column:1/-1;grid-row:1;min-height:40px;padding:4px;box-sizing:border-box}
 .report-column-row>.report-drag-handle{grid-column:1;grid-row:2}
 .report-column-row>button:nth-last-child(2){grid-column:3;grid-row:2}
 .report-column-row>button:last-child{grid-column:4;grid-row:2}
}
table[data-view-managed=true]>:is(thead,tbody)>tr{column-gap:0;row-gap:0;align-items:stretch!important}
table[data-view-managed=true]>:is(thead,tbody)>tr>:is(th,td){width:100%!important;max-width:none!important;min-width:0!important;align-self:stretch;justify-self:stretch;margin:0}
/* C1 mantiene el motor de vistas y arrastre; solo Contactos adopta C30. */
.c1-report-window{border-radius:16px;box-shadow:var(--shadow-floating);width:480px}
.c1-report-window>header,.c1-report-window>footer{position:static}
.c1-report-window .report-column-order{max-height:none;overflow:visible;padding:0}
.c1-report-window .report-column-row{border:0;border-radius:0;background:transparent;min-height:44px;display:flex;padding:0}
.c1-report-window .report-column-row>label{display:flex;grid-column:auto;grid-row:auto;flex:1;padding:0}
.c1-report-window .report-column-row small{display:block;font-size:12px;color:var(--text-muted)}
.c1-report-window :is(header,.report-column-row)>button{display:inline-flex;align-items:center;justify-content:center;width:36px;min-width:36px;height:36px;min-height:36px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--text-secondary)}
.c1-report-window :is(header,.report-column-row)>button svg{width:18px;height:18px}
@media (hover: hover) { .c1-report-window .report-column-row>button:hover{background:var(--background-surface-subtle)} }
.c1-report-window footer{justify-content:flex-end}
.c1-report-window footer .button{border:0;border-radius:999px;min-height:40px}
.c1-default-switch{display:flex;align-items:center;gap:12px;width:100%;padding:8px 0;border:0;background:transparent;color:var(--text-primary);font:inherit;text-align:left}
.c1-default-switch small{display:block;font-size:12.5px;color:var(--text-secondary)}
.c1-switch-track{display:inline-block;width:36px;height:20px;flex:none;border-radius:999px;background:var(--border-strong);position:relative}
.c1-switch-track::after{content:'';position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--surface)}
.c1-default-switch[aria-checked=true] .c1-switch-track{background:var(--brand-default)}
.c1-default-switch[aria-checked=true] .c1-switch-track::after{left:18px}
@media(max-width:767px){.c1-report-window{inset:0;margin:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;border:0;border-radius:0}.c1-report-window .report-column-row>button{width:40px;min-width:40px;height:40px;min-height:40px}}
/* E2.1 · EE6 (C30 · Ventana; C28 · Ancho y orden de columnas): la misma ventana de columnas y vistas en todas las
   pantallas. Título y × arriba, un solo scroll en el medio, botones abajo a la derecha; 560 px. */
.report-view-dialog.c1-report-window{width:min(560px,calc(100vw - 32px));max-height:calc(100dvh - 64px);padding:0;overflow:hidden;flex-direction:column}
.report-view-dialog.c1-report-window[open]{display:flex}
.report-view-dialog.c1-report-window:focus{outline:none}
.c1-report-window>header{flex:none;display:flex;align-items:center;gap:8px;padding:16px 14px 8px 20px;position:static}
.c1-report-window>header h2{flex:1;min-width:0;font-size:16px;font-weight:700;margin:0}
.c1-report-window>header .button.report-view-back{display:none}
.c1-report-window>header .button{width:36px;height:36px;min-height:36px;padding:0;border:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--text-secondary)}
.c1-report-window>header .button svg{width:18px;height:18px}
.c1-report-window .report-view-body{flex:1;min-height:0;overflow-y:auto;padding:4px 20px 12px;display:flex;flex-direction:column;gap:4px}
.c1-report-window>footer{flex:none;position:static;display:flex;justify-content:flex-end;gap:8px;padding:12px 20px 16px;border-top:1px solid var(--border-subtle);background:var(--surface)}
/* C08 · "Vista" es un menú desde un botón que muestra la elegida (C11), no un campo. */
.c1-report-window .report-view-picker{display:flex;align-items:center;gap:10px;margin:4px 0}
.c1-report-window .report-view-picker>span{font-size:13.5px;color:var(--text-secondary)}
.c1-report-window .report-view-picker .bh-choice{flex:none;width:auto}
.c1-report-window .report-view-picker .bh-choice-trigger{width:auto;min-height:36px;height:36px;padding:0 10px 0 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:13.5px;font-weight:600;gap:6px}
.c1-report-window .report-view-state{margin:0 0 4px;font-size:12.5px;color:var(--text-muted)}
.c1-report-window .report-column-row{min-height:44px;gap:8px}
.c1-report-window .report-column-row>label{gap:10px;cursor:pointer}
.c1-report-window .report-column-row>label>span{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.c1-report-window .report-column-lock{flex:none;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted)}
.c1-report-window .report-column-lock svg{width:16px;height:16px}
/* En táctil el tirador ocupa 40 px (zona de toque): el candado ocupa lo mismo para que casilla y nombre queden alineados. */
@media(pointer:coarse){.c1-report-window .report-column-lock{width:40px}}
/* Casilla propia de 18 px (C28), nunca la nativa (C08). */
.c1-report-window .report-check{appearance:none;-webkit-appearance:none;flex:none;width:18px;height:18px;min-height:0;margin:0;padding:0;border:1.5px solid var(--control-border);border-radius:5px;background:var(--surface);display:inline-grid;place-content:center;cursor:pointer}
.c1-report-window .report-check::after{content:"";width:9px;height:5px;border:2px solid var(--on-brand);border-top:0;border-right:0;transform:translateY(-1px) rotate(-45deg);opacity:0}
.c1-report-window .report-check:checked{background:var(--brand-default);border-color:var(--brand-default)}
.c1-report-window .report-check:checked::after{opacity:1}
.c1-report-window .report-check:disabled{cursor:default;opacity:.5}
.c1-report-window .report-check:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
/* C28 · Ancho por gesto: tirador en el borde derecho de cada encabezado de una tabla administrada por vistas. */
/* Sin especificidad: un encabezado sticky de la pantalla (Contactos) sigue sticky y también sostiene al tirador. */
:where(table[data-view-managed=true]>thead>tr>th){position:relative}
.report-col-resize{position:absolute;top:0;right:-3px;bottom:0;width:7px;cursor:col-resize;touch-action:none;z-index:2}
.report-col-resize::after{content:"";position:absolute;top:20%;bottom:20%;left:3px;width:1px;background:transparent}
@media (hover: hover) { th:hover>.report-col-resize::after{background:var(--border-strong)} }
.report-col-resize.active::after{background:var(--border-strong)}
@media(max-width:767px){
 .report-view-dialog.c1-report-window{inset:0;margin:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;border:0;border-radius:0}
 .c1-report-window>header .button.report-view-back{display:inline-flex}
 .c1-report-window>header .button.report-view-close{display:none}
 .c1-report-window>header{padding:8px 8px 8px 4px}
 .c1-report-window>header .button{width:44px;height:44px}
 .c1-report-window .report-view-body{padding:4px 16px 12px}
 .c1-report-window>footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
}
/* I11 · Ventana «Columnas y vistas» en el celular, solo Etiquetas R1 (E56): barra fija C21 con «Restablecer vista»
   (secundario) y «Guardar como nueva» (principal) de 44 px en proporción 1 : 1,4 exacta por calc (con flex-grow el
   relleno incompresible la distorsiona a 1 : 1,33). Relleno lateral 11 px para que quepa «Restablecer vista»
   (medido 120,6 px a 14/600). Con vista elegida, Eliminar y Actualizar van en la fila de arriba para no quitar
   ninguna función. Bajo 390, apilados como en los demás. La referencia mide ~1 : 1,3 (§6: se sigue el texto). */
@media(min-width:390px) and (max-width:767px){
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer{display:flex;flex-wrap:wrap;gap:8px}
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button{min-height:44px;height:44px;font-size:14px;font-weight:600;white-space:nowrap;min-width:0;padding:0 11px}
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button.ghost{order:3;flex:0 0 calc((100% - 8px)/2.4);background-color:var(--button-secondary-background);color:var(--button-secondary-text)}
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button.secondary{order:1;flex:1 1 40%}
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button:not(.ghost):not(.secondary){order:4;flex:0 0 calc((100% - 8px)*1.4/2.4)}
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button.ghost:active{background-color:light-dark(#E3D9CF, var(--background-surface-raised))}
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button.ghost:disabled{background-color:var(--control-disabled-background);color:var(--control-disabled-text)}
}
@media(min-width:390px) and (max-width:767px) and (hover:hover){
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button.ghost:hover{background-color:var(--button-secondary-hover)}
}
@media(max-width:389px){
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button{flex:1 1 100%;min-height:44px;height:44px;font-size:14px;font-weight:600;white-space:nowrap}
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button.ghost{background-color:var(--button-secondary-background);color:var(--button-secondary-text)}
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button.ghost:active{background-color:light-dark(#E3D9CF, var(--background-surface-raised))}
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button.ghost:disabled{background-color:var(--control-disabled-background);color:var(--control-disabled-text)}
}
@media(max-width:389px) and (hover:hover){
 dialog.c1-report-window[data-report-id="company.tagcatalogworkspace.t1"]>footer .button.ghost:hover{background-color:var(--button-secondary-hover)}
}
/* C28 1.14.4 (D15) · «Configurar columnas y vistas»: ↑ y ↓ apagadas en los extremos, sin hover ni acción. */
.report-column-row .report-move:disabled{color:#B9AEA5;background:none;cursor:default;opacity:1}
:root[data-theme=dark] .report-column-row .report-move:disabled{color:#6E625A}
/* Shared color/state bindings only. Geometry and behavior remain in host CSS. */
a { color: var(--link-default); }
@media (hover: hover) { a:hover{ color: var(--link-hover); } }
a:active { color: var(--link-active); }
::selection { background: var(--selection-background); color: var(--selection-text); }
/* K7 · C01 1.14.5 (D7): un solo anillo de foco de teclado en todo el portal: 2 px terracota separado 2 px por el color de
   lo que está detrás (la página; dentro de ventanas, menús, paneles y hojas, su superficie). El valor se resuelve donde
   se define, por eso cada fondo lo redefine entero. Reemplaza los contornos propios (outline pegado al borde) de cada
   pieza. Campos y buscador conservan su foco: borde terracota (C05, C06). Lo que solo recibe foco por programa
   (tabindex="-1", como el título al navegar) no lleva anillo. */
:root{--focus-ring-accent:oklch(0.55 0.14 40);--focus-ring-shadow:0 0 0 2px var(--background-canvas),0 0 0 4px var(--focus-ring-accent)}
:root[data-theme=dark]{--focus-ring-accent:#E18E5D}
:is(dialog,[popover],.bheli-bottom-sheet,.tm-window,.tm-menu-items,.bh-filter-panel){--focus-ring-shadow:0 0 0 2px var(--background-surface),0 0 0 4px var(--focus-ring-accent)}
:is(button, a, summary, [role=button], [role=tab], [role=menuitem], [role=menuitemradio], [role=option], [role=checkbox], [role=radio], input[type="checkbox"], input[type="radio"], [tabindex]:not(input, select, textarea, [tabindex="-1"])):focus-visible {
    outline: none !important;
    box-shadow: var(--focus-ring-shadow);
}
:is(input:not([type="checkbox"]):not([type="radio"]), select, textarea):focus-visible {
    outline-color: var(--focus-ring);
}
input, select, textarea { accent-color: var(--brand-default); }
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea) {
    background-color: var(--control-background);
    color: var(--text-primary);
    border-color: var(--control-border);
}
@media (hover: hover) { :is(input, select, textarea):hover:not(:disabled){ border-color: var(--text-muted); } }
/* C05 · el foco y el error llevan la misma lista que el borde de arriba: con menos especificidad nunca se veían. */
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea):focus-visible { border-color: var(--focus-ring); }
::placeholder { color: var(--control-placeholder); opacity: 1; }
:is(input, select, textarea):disabled {
    background-color: var(--control-disabled-background);
    color: var(--control-disabled-text);
    opacity: 1;
}
:is(input, textarea)[readonly] { background-color: var(--background-surface-subtle); }
/* C05 · KF1 (E68): el campo inválido lleva el borde de error del tema en todo el portal, del mismo color que su error.
   La segunda lista alcanza los campos de `.field`, cuyo borde pinta portal.css (`.field input:not(...)`) con más
   especificidad que la primera; la tercera, un campo compuesto cuyo borde lleva su contenedor (el teléfono con «+» fijo). */
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea)[aria-invalid="true"],
.field :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea)[aria-invalid="true"],
.field :has(> :is(input, select, textarea)[aria-invalid="true"]) { border-color: var(--status-danger-text); }
.topbar { background-color: var(--background-topbar); }
.sidebar { background-color: var(--background-sidebar); }
.brand-mark { background-color: var(--brand-default); color: var(--on-brand); }
@media (hover: hover) { :is(.nav-link, .org-link, .context-link):hover{ background-color: var(--navigation-hover); } }
:is(.nav-link, .org-link, .context-link).active {
    background-color: var(--navigation-active-background);
    color: var(--navigation-active-text);
    border-color: var(--navigation-active-indicator);
}
:is(a.button, a.erp-btn):not(.secondary):not(.ghost):not(.danger) { color: var(--on-brand); }
@media (hover: hover) { :is(.button, .erp-btn):hover:not(:disabled):not(.secondary):not(.ghost):not(.danger){ background-color: var(--brand-hover); color: var(--on-brand); } }
:is(a.button, a.erp-btn):active:not(.secondary):not(.ghost):not(.danger) { color: var(--on-brand); }
.dock-launcher { color: var(--text-primary); }
@media (hover: hover) { .dock-launcher:hover{ background-color: var(--brand-subtle); } }
/* Cuadro de texto del chat (C56) y sus hojas: botones de ícono, celdas de emoji y controles de Transferir definen su
   propio presionado (C04: un botón claro nunca se vuelve oscuro). Sin esta excepción se ponían marrones al tocarlos. */
:is(button, .button, .erp-btn):active:not(:disabled):not(.secondary):not(.ghost):not(.danger):not(.dock-icon-button):not(.chat-row):not(.reply-row-main):not(.chip):not(.pill):not(.bh-filter-trigger):not(.c1-icon):not(.report-drag-handle):not(.c1-tag-remove):not(.c1-sort-pill):not(.c1-sheet-item):not(.c1-toast-undo):not(.tm-btn):not(.tm-icon-btn):not(.chat-attach-composer):not(.chat-emoji-button):not(.chat-schedule-composer):not(.chat-mic-button):not(.chat-emoji-cell):not(.chat-recorder-action):not(.chat-sheet-back):not(.chat-transfer-trigger):not(.chat-transfer-option):not(.chat-menu-option):not(.chat-attach-menu-items *):not(.chat-emoji-panel *):not(.chat-transfer-options *) {
    background-color: var(--brand-active);
}
/* K8 · C04 + ux-boton: presionado por tipo. Un claro nunca se vuelve oscuro al presionar. */
@media (hover: hover) { :is(.chip, .pill, .bh-filter-trigger):hover:not(:disabled){
    background-color: light-dark(#F6F1EC, var(--background-surface-muted));
} }
:is(.chip, .pill, .bh-filter-trigger):active:not(:disabled) {
    background-color: light-dark(oklch(0.955 0.025 50), var(--background-surface-muted));
    border-color: light-dark(oklch(0.85 0.06 45), var(--border-default));
    color: inherit;
}
:is(.chip, .pill, .bh-filter-trigger).active:active:not(:disabled) {
    background-color: light-dark(oklch(0.93 0.035 50), var(--background-surface-raised));
}
:is(.c1-icon, .icon-button, .report-drag-handle, .report-view-close, .report-view-back):active:not(:disabled) {
    background-color: light-dark(#ECE4DC, var(--background-surface-muted));
}
/* C04 · C30 1.19 (KG2): botón de ícono (la × y la ← de las ventanas, los íconos de tablas y barras): redondo, sin borde
   ni caja y transparente, aunque sea `.button.ghost` (portal.css le pone borde). Al pasar #F3EDE7, presionado #ECE4DC (arriba),
   desactivado sin fondo; el foco es el de cada pantalla (anillo terracota visible, ≥ 3:1). El ancho lo da cada pantalla; el alto lo sigue (aspect-ratio). */
:is(button, .button, a).icon-button { padding: 0; border: 0; border-radius: 50%; background-color: transparent; color: var(--text-secondary); min-height: 0; aspect-ratio: 1; }
@media (hover: hover) { :is(button, .button, a).icon-button:hover:not(:disabled) { background-color: var(--ui-hover); } }
:is(button, .button, a).icon-button:disabled { background-color: transparent; color: var(--control-disabled-text); }
:is(button, .button, .erp-btn).secondary {
    background-color: var(--button-secondary-background);
    color: var(--button-secondary-text);
    border-color: var(--control-border);
}
@media (hover: hover) { :is(button, .button, .erp-btn).secondary:hover{ background-color: var(--button-secondary-hover); } }
:is(button, .button, .erp-btn).secondary:active { background-color: light-dark(#E3D9CF, var(--background-surface-raised)); }
@media (hover: hover) { :is(button, .button).ghost:hover{ background-color: var(--brand-subtle); } }
:is(button, .button, .erp-btn).danger { background-color: var(--action-danger-background); color: var(--action-danger-text); }
@media (hover: hover) { :is(button, .button, .erp-btn).danger:hover{ background-color: var(--action-danger-hover); } }
:is(button, .button, .erp-btn):disabled {
    background-color: var(--control-disabled-background);
    color: var(--control-disabled-text);
    opacity: 1;
}
:is(.alert-success, .badge-active) { background-color: var(--status-success-background); color: var(--status-success-text); border-color: var(--status-success-border); }
:is(.alert-warning, .badge-warning) { background-color: var(--status-warning-background); color: var(--status-warning-text); border-color: var(--status-warning-border); }
:is(.alert-error, .badge-error) { background-color: var(--status-danger-background); color: var(--status-danger-text); border-color: var(--status-danger-border); }
.alert-info { background-color: var(--status-info-background); color: var(--status-info-text); border-color: var(--status-info-border); }
.card { border-color: var(--border-subtle); }
thead, th { background-color: var(--background-surface-subtle); }
tbody tr { background-color: var(--background-surface); }
@media (hover: hover) { tbody tr:hover{ background-color: var(--background-canvas); } }
tbody tr[aria-selected="true"] { background-color: var(--selection-background); }
code, pre { background-color: var(--code-background); color: var(--code-text); }
blockquote { border-color: var(--chat-quote-border); }
progress { accent-color: var(--progress-value); background-color: var(--progress-track); }
* { scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track); }
::-webkit-scrollbar-track { background-color: var(--scrollbar-track); }
::-webkit-scrollbar-thumb { background-color: var(--scrollbar-thumb); }
@media (hover: hover) { ::-webkit-scrollbar-thumb:hover{ background-color: var(--scrollbar-thumb-hover); } }

/* C06: the visible composite control owns focus; its internal input never draws a second ring. */
:root[data-theme] :is(.chat-workspace,.reply-library) .bheli-composite-field{box-sizing:border-box;border:1.5px solid transparent;}
:root[data-theme] :is(.chat-workspace,.reply-library) .bheli-composite-field:focus-within{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px var(--primary);}
:root[data-theme] :is(.chat-workspace,.reply-library) .bheli-composite-field input.bheli-composite-input{border:0;outline:none;box-shadow:none;background:transparent;}
:root[data-theme] .reply-library .reply-shortcut-control{border-color:var(--ui-control-border);}
:root[data-theme] .reply-library .reply-shortcut-control:focus-within{border-color:var(--primary);}
:root[data-theme] .reply-library .reply-shortcut-control:has([aria-invalid=true]){border-color:var(--ui-error);}
:root[data-theme] .reply-library .reply-shortcut-control:has([aria-invalid=true]):focus-within{box-shadow:0 0 0 3px var(--ui-error);}
/* KH4 · C04: botón cargando: conserva su texto, indicador circular de 16 px a la izquierda (en el lugar de su ícono, si
   lo tiene) y no acepta otro clic. Se marca con aria-busy="true", que además lo anuncia. */
:is(button, .button)[aria-busy="true"] { pointer-events: none; cursor: default; }
:is(button, .button)[aria-busy="true"] > svg:first-child { display: none; }
:is(button, .button)[aria-busy="true"]::before { content: ""; flex: none; box-sizing: border-box; width: 16px; height: 16px; margin-inline-end: 8px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: bh-button-busy .8s linear infinite; }
@keyframes bh-button-busy { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { :is(button, .button)[aria-busy="true"]::before { animation-duration: 2.4s; } }
/* Simulador (portal nuevo): ventana como el Dock (C27), tarjetas con radio (C08), burbujas (C19), avisos (C14),
   píldoras excluyentes (C07), sección plegable (C10) y botones (C04). Colores con los tokens del tema; oscuro con su par. */
.sim-root-1vnbf7d {
  --sim-surface: var(--surface, #fff);
  --sim-page: var(--canvas, #fbf8f5);
  --sim-thread: #f5efe9;
  --sim-text: var(--text, #2a2420);
  --sim-text-2: #6b615a;
  --sim-text-3: #756a62;
  --sim-line: #ece5de;
  --sim-control: var(--control-border, #978a80);
  --sim-hover: #f3ede7;
  --sim-secondary: #f5efeb;
  --sim-secondary-hover: #ece4dc;
  --sim-secondary-pressed: #e3d9cf;
  --sim-accent: oklch(0.55 0.14 40);
  --sim-accent-hover: oklch(0.49 0.14 40);
  --sim-accent-pressed: oklch(0.44 0.13 40);
  --sim-on-accent: #fff;
  --sim-tint: oklch(0.955 0.025 50);
  --sim-tint-border: oklch(0.85 0.06 45);
  --sim-tint-text: oklch(0.45 0.12 40);
  --sim-ai-soft: oklch(0.955 0.022 300);
  --sim-ai-text: oklch(0.45 0.13 300);
  --sim-neutral-soft: #f2ece6;
  --sim-own: oklch(0.945 0.035 55);
  --sim-error: oklch(0.5 0.17 25);
  --sim-error-soft: oklch(0.96 0.02 25);
  --sim-disabled: #b9aea5;
  --sim-send-disabled: #d9cfc6;
  --sim-float-shadow: 0 12px 32px rgb(42 36 32 / 0.14), 0 2px 6px rgb(42 36 32 / 0.06);
  --sim-focus: oklch(0.93 0.04 50);
  --sim-whatsapp: #25d366;
  color: var(--sim-text);
  font-family: var(--font, "Lexend", system-ui, sans-serif);
}
:root[data-theme="dark"] .sim-root-1vnbf7d {
  --sim-thread: var(--canvas);
  --sim-text-2: var(--text-muted);
  --sim-text-3: var(--text-muted);
  --sim-line: var(--border);
  --sim-hover: var(--surface-muted);
  --sim-secondary: var(--surface-muted);
  --sim-secondary-hover: oklch(0.33 0.01 60);
  --sim-secondary-pressed: oklch(0.36 0.012 60);
  --sim-accent: var(--primary);
  --sim-accent-hover: var(--primary-hover, var(--primary));
  --sim-accent-pressed: var(--primary-hover, var(--primary));
  --sim-on-accent: #1e1a17;
  --sim-tint: oklch(0.3 0.05 45);
  --sim-tint-border: #e18e5d;
  --sim-tint-text: oklch(0.86 0.08 55);
  --sim-ai-soft: #302437;
  --sim-ai-text: #d6b8f4;
  --sim-neutral-soft: var(--surface-muted);
  --sim-own: #493024;
  --sim-error: var(--error);
  --sim-error-soft: oklch(0.3 0.05 25);
  --sim-disabled: oklch(0.6 0.01 60);
  --sim-send-disabled: oklch(0.35 0.01 60);
  --sim-float-shadow: var(--shadow-lg);
  --sim-focus: oklch(0.45 0.08 45);
}
@media (prefers-color-scheme: dark) {
  :root[data-theme="system"] .sim-root-1vnbf7d {
    --sim-thread: var(--canvas);
    --sim-text-2: var(--text-muted);
    --sim-text-3: var(--text-muted);
    --sim-line: var(--border);
    --sim-hover: var(--surface-muted);
    --sim-secondary: var(--surface-muted);
    --sim-secondary-hover: oklch(0.33 0.01 60);
    --sim-secondary-pressed: oklch(0.36 0.012 60);
    --sim-accent: var(--primary);
    --sim-accent-hover: var(--primary-hover, var(--primary));
    --sim-accent-pressed: var(--primary-hover, var(--primary));
    --sim-on-accent: #1e1a17;
    --sim-tint: oklch(0.3 0.05 45);
    --sim-tint-border: #e18e5d;
    --sim-tint-text: oklch(0.86 0.08 55);
    --sim-ai-soft: #302437;
    --sim-ai-text: #d6b8f4;
    --sim-neutral-soft: var(--surface-muted);
    --sim-own: #493024;
    --sim-error: var(--error);
    --sim-error-soft: oklch(0.3 0.05 25);
    --sim-disabled: oklch(0.6 0.01 60);
    --sim-send-disabled: oklch(0.35 0.01 60);
    --sim-float-shadow: var(--shadow-lg);
    --sim-focus: oklch(0.45 0.08 45);
  }
}
/* :where para no pisar el tamaño de cada control (font: inherit trae solo la familia y el peso de Lexend). */
.sim-root-1vnbf7d :where(button, input, textarea, select) {
  font: inherit;
}
.sim-root-1vnbf7d :where(button, a, input, textarea, [tabindex]):focus-visible {
  outline: 3px solid var(--sim-focus);
  outline-offset: 2px;
}
.sim-root-1vnbf7d svg {
  flex: none;
}

/* ── Minimizado: la herramienta del encabezado lleva las novedades (sin otro botón flotante, C27) ─────────────── */
.shell-tool:has(> .shell-tool-badge) {
  position: relative;
}
.shell-tool > .shell-tool-badge {
  position: absolute;
  top: 2px;
  right: 2px;
  display: grid;
  place-items: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: oklch(0.55 0.14 40);
  color: #fff;
  font-size: 11px;
  font-weight: 600;
  line-height: 1;
}
:root[data-theme="dark"] .shell-tool > .shell-tool-badge {
  background: var(--primary);
  color: #1e1a17;
}

/* ── Ventana ──────────────────────────────────────────────────────────────────────────────────────────────────── */
.sim-backdrop-1vnbf7d,
.sim-handle-1vnbf7d {
  display: none;
}
.sim-window-1vnbf7d {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 41;
  display: flex;
  flex-direction: column;
  width: 420px;
  height: min(680px, calc(100dvh - 96px));
  overflow: hidden;
  border: 1px solid #e3dad2;
  border-radius: 16px;
  background: var(--sim-surface);
  box-shadow: 0 18px 48px rgb(42 36 32 / 0.18), 0 2px 8px rgb(42 36 32 / 0.08);
}
:root[data-theme="dark"] .sim-window-1vnbf7d {
  border-color: var(--border);
}
/* Con el botón «Chats» a la vista, la ventana queda encima de él (C27: un flotante no tapa otro control). */
@media (min-width: 768px) {
  body:has([data-chat-dock-launcher]:not([hidden])) .sim-root-1vnbf7d[data-state="FLOATING"] .sim-window-1vnbf7d {
    bottom: 80px;
    height: min(680px, calc(100dvh - 156px));
  }
}
.sim-head-1vnbf7d {
  display: flex;
  align-items: center;
  flex: none;
  gap: 8px;
  min-height: 56px;
  padding: 8px 8px 8px 16px;
  border-bottom: 1px solid var(--sim-line);
}
.sim-headIcon-1vnbf7d {
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  color: var(--sim-accent);
}
.sim-headIcon-1vnbf7d svg {
  width: 20px;
  height: 20px;
}
.sim-title-1vnbf7d {
  margin: 0;
  font-size: 17px;
  font-weight: 700;
  white-space: nowrap;
}
.sim-typeTag-1vnbf7d {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 7px;
  border-radius: 6px;
  background: var(--sim-neutral-soft);
  color: var(--sim-text-2);
  font-size: 11.5px;
  font-weight: 600;
}
.sim-controls-1vnbf7d {
  display: flex;
  align-items: center;
  gap: 2px;
  margin-inline-start: auto;
}
.sim-iconButton-1vnbf7d {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--sim-text);
  cursor: pointer;
}
.sim-iconButton-1vnbf7d svg {
  width: 18px;
  height: 18px;
}
@media (hover: hover) {
  .sim-iconButton-1vnbf7d:hover {
    background: var(--sim-hover);
  }
}
.sim-iconButton-1vnbf7d:active {
  background: var(--sim-secondary-hover);
}
.sim-pin-1vnbf7d[aria-pressed="true"] {
  background: var(--sim-tint);
  color: var(--sim-tint-text);
}
/* Anclar solo donde la página conserva su ancho (como el Dock: 1200 px o más). */
@media (max-width: 1199px) {
  .sim-pin-1vnbf7d {
    display: none;
  }
}
@media (min-width: 1200px) {
  .sim-root-1vnbf7d[data-state="PINNED"] .sim-window-1vnbf7d {
    top: var(--sim-top, var(--header-height, 56px));
    right: 0;
    bottom: 0;
    width: 420px;
    height: auto;
    border: 0;
    border-left: 1px solid var(--sim-line);
    border-radius: 0;
    box-shadow: none;
    z-index: 30;
  }
  html[data-simulator-pinned] .app-shell .shell-main {
    margin-right: 420px;
  }
  /* El botón «Chats» queda a la izquierda de la ventana anclada, sin tapar el cuadro de texto. */
  html[data-simulator-pinned] .chat-dock-launcher {
    right: 440px;
  }
}

/* ── Estados de la ventana (cargando, sin acceso, error) ─────────────────────────────────────────────────────── */
.sim-state-1vnbf7d {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 24px 16px;
  color: var(--sim-text-2);
  font-size: 14px;
}
.sim-state-1vnbf7d > .sim-notice-1vnbf7d {
  width: 100%;
}
.sim-spinner-1vnbf7d {
  width: 16px;
  height: 16px;
  border: 2px solid var(--sim-line);
  border-top-color: var(--sim-accent);
  border-radius: 50%;
  animation: sim-sim-spin-1vnbf7d 0.8s linear infinite;
}
@keyframes sim-sim-spin-1vnbf7d {
  to {
    transform: rotate(360deg);
  }
}

/* ── Qué se prueba ─────────────────────────────────────────────────────────────────────────────────────────────── */
/* Antes del primer mensaje la ventana tiene un solo scroll: qué se prueba y, debajo, la invitación a escribir. */
.sim-setupScroll-1vnbf7d {
  display: flex;
  flex: 1;
  flex-direction: column;
  min-height: 0;
  overflow-y: auto;
  background: var(--sim-thread);
  scrollbar-width: thin;
}
.sim-setupScroll-1vnbf7d > .sim-noticeSlot-1vnbf7d {
  padding-bottom: 8px;
  background: var(--sim-surface);
}
.sim-setup-1vnbf7d {
  display: flex;
  flex: none;
  flex-direction: column;
  gap: 12px;
  padding: 12px 16px 16px;
  border-bottom: 1px solid var(--sim-line);
  background: var(--sim-surface);
}
.sim-setupEmpty-1vnbf7d {
  display: flex;
  flex: 1 0 auto;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-height: 96px;
  padding: 16px 12px;
  color: var(--sim-text-2);
  font-size: 13.5px;
  text-align: center;
}
.sim-setupEmpty-1vnbf7d strong {
  color: var(--sim-text);
  font-size: 15px;
  font-weight: 600;
}
.sim-fieldLabel-1vnbf7d {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
}
.sim-cards-1vnbf7d {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: -4px;
}
.sim-card-1vnbf7d {
  display: flex;
  gap: 10px;
  min-height: 64px;
  padding: 12px 14px;
  border: 1px solid var(--sim-control);
  border-radius: 12px;
  background: var(--sim-surface);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
@media (hover: hover) {
  .sim-card-1vnbf7d:hover {
    background: var(--sim-hover);
  }
}
.sim-card-1vnbf7d[aria-checked="true"] {
  border-color: var(--sim-accent);
  background: var(--sim-tint);
  box-shadow: 0 0 0 1px var(--sim-accent);
}
.sim-card-1vnbf7d[aria-disabled="true"] {
  cursor: not-allowed;
}
.sim-radio-1vnbf7d {
  flex: none;
  width: 18px;
  height: 18px;
  margin-top: 1px;
  border: 1.5px solid var(--sim-control);
  border-radius: 50%;
  background: var(--sim-surface);
}
.sim-card-1vnbf7d[aria-checked="true"] .sim-radio-1vnbf7d {
  border-color: var(--sim-accent);
  background: radial-gradient(circle, var(--sim-accent) 0 4px, var(--sim-surface) 4.5px);
}
.sim-cardText-1vnbf7d {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.sim-cardTitle-1vnbf7d {
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--sim-text);
  font-size: 13.5px;
  font-weight: 600;
}
.sim-cardTitle-1vnbf7d svg {
  width: 16px;
  height: 16px;
}
.sim-aiIcon-1vnbf7d {
  color: var(--sim-ai-text);
}
.sim-cardHelp-1vnbf7d {
  color: var(--sim-text-2);
  font-size: 12px;
  line-height: 1.35;
}
.sim-field-1vnbf7d {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.sim-field-1vnbf7d .bh-choice-trigger {
  border-color: var(--sim-control);
}
.sim-help-1vnbf7d {
  display: block;
  margin: 0;
  color: var(--sim-text-2);
  font-size: 12.5px;
  line-height: 1.4;
}
.sim-saved-1vnbf7d .sim-secondary-1vnbf7d,
.sim-notice-1vnbf7d .sim-secondary-1vnbf7d {
  background: var(--sim-surface);
}
@media (hover: hover) {
  .sim-saved-1vnbf7d .sim-secondary-1vnbf7d:hover:not(:disabled),
  .sim-notice-1vnbf7d .sim-secondary-1vnbf7d:hover:not(:disabled) {
    background: var(--sim-secondary-hover);
  }
}
.sim-saved-1vnbf7d {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 12px;
  padding: 10px 12px;
  border-radius: 12px;
  background: var(--sim-neutral-soft);
  font-size: 13px;
}
.sim-collapsible-1vnbf7d {
  display: flex;
  flex-direction: column;
}
.sim-collapsibleHead-1vnbf7d {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--sim-text);
  font-size: 14px;
  font-weight: 600;
  text-align: start;
  cursor: pointer;
}
.sim-collapsibleHead-1vnbf7d svg {
  width: 16px;
  height: 16px;
  transform: rotate(-90deg);
  transition: transform 0.12s ease;
}
.sim-collapsibleHead-1vnbf7d[aria-expanded="true"] svg {
  transform: none;
}
.sim-collapsibleSummary-1vnbf7d {
  color: var(--sim-text-3);
  font-weight: 400;
}
.sim-collapsibleBody-1vnbf7d {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 4px 0 0 24px;
}
.sim-input-1vnbf7d {
  height: 42px;
  padding: 0 12px;
  border: 1px solid var(--sim-control);
  border-radius: 10px;
  background: var(--sim-surface);
  color: var(--sim-text);
  font-size: 14.5px;
}
.sim-input-1vnbf7d:focus-visible {
  border-color: var(--sim-accent);
  outline: 3px solid var(--sim-focus);
  outline-offset: 0;
}
.sim-safe-1vnbf7d {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 0;
  color: var(--sim-text-2);
  font-size: 12.5px;
  line-height: 1.4;
}
.sim-safe-1vnbf7d svg {
  width: 16px;
  height: 16px;
  margin-top: 1px;
  color: var(--sim-text-3);
}

/* ── Con quién se habla y pestañas ───────────────────────────────────────────────────────────────────────────── */
.sim-summary-1vnbf7d {
  display: flex;
  flex: none;
  flex-direction: column;
  gap: 10px;
  padding: 10px 16px 12px;
  border-bottom: 1px solid var(--sim-line);
}
.sim-summaryRow-1vnbf7d {
  display: flex;
  align-items: center;
  gap: 10px;
}
.sim-avatar-1vnbf7d {
  display: grid;
  flex: none;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
}
.sim-avatar-1vnbf7d svg {
  width: 18px;
  height: 18px;
}
.sim-avatarAi-1vnbf7d {
  background: var(--sim-ai-soft);
  color: var(--sim-ai-text);
}
.sim-avatarChannel-1vnbf7d {
  background: var(--sim-whatsapp);
  color: #fff;
}
.sim-avatarChannel-1vnbf7d svg {
  width: 20px;
  height: 20px;
  fill: currentColor;
  stroke: none;
}
.sim-summaryText-1vnbf7d {
  display: flex;
  flex: 1;
  flex-direction: column;
  min-width: 0;
}
.sim-summaryText-1vnbf7d strong {
  overflow: hidden;
  font-size: 14.5px;
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sim-summaryText-1vnbf7d small {
  color: var(--sim-text-2);
  font-size: 12.5px;
}
.sim-nowrap-1vnbf7d {
  white-space: nowrap;
}
.sim-tabs-1vnbf7d {
  display: flex;
  gap: 8px;
}
.sim-pill-1vnbf7d {
  display: inline-flex;
  align-items: center;
  height: 32px;
  padding: 0 12px;
  border: 1px solid var(--sim-control);
  border-radius: 999px;
  background: var(--sim-surface);
  color: var(--sim-text-2);
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  cursor: pointer;
}
@media (hover: hover) {
  .sim-pill-1vnbf7d:hover {
    background: var(--sim-hover);
  }
}
.sim-pill-1vnbf7d[aria-pressed="true"] {
  border-color: var(--sim-tint-border);
  background: var(--sim-tint);
  color: var(--sim-tint-text);
}

/* ── Botón secundario (C04) ──────────────────────────────────────────────────────────────────────────────────── */
.sim-secondary-1vnbf7d {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 36px;
  padding: 0 16px;
  border: 0;
  border-radius: 999px;
  background: var(--sim-secondary);
  color: var(--sim-text);
  font-size: 13.5px;
  font-weight: 600;
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
}
.sim-secondary-1vnbf7d svg {
  width: 16px;
  height: 16px;
}
@media (hover: hover) {
  .sim-secondary-1vnbf7d:hover:not(:disabled) {
    background: var(--sim-secondary-hover);
  }
}
.sim-secondary-1vnbf7d:active:not(:disabled) {
  background: var(--sim-secondary-pressed);
}
.sim-secondary-1vnbf7d:disabled {
  color: var(--sim-disabled);
  cursor: not-allowed;
}

/* ── Avisos en línea (C14) ───────────────────────────────────────────────────────────────────────────────────── */
.sim-noticeSlot-1vnbf7d {
  flex: none;
  padding: 8px 12px 0;
}
.sim-notice-1vnbf7d {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
  padding: 10px 10px 10px 14px;
  border-radius: 16px;
  background: var(--sim-neutral-soft);
  color: var(--sim-text);
  font-size: 13.5px;
  line-height: 1.4;
}
.sim-notice-1vnbf7d[data-tone="error"] {
  background: var(--sim-error-soft);
}
.sim-notice-1vnbf7d > svg {
  width: 18px;
  height: 18px;
  color: var(--sim-text-2);
}
.sim-notice-1vnbf7d[data-tone="error"] > svg {
  color: var(--sim-error);
}
.sim-noticeText-1vnbf7d {
  flex: 1 1 180px;
  min-width: 0;
}
.sim-noticeAction-1vnbf7d {
  display: flex;
  margin-inline-start: auto;
}

/* ── Hilo (C19) ──────────────────────────────────────────────────────────────────────────────────────────────── */
.sim-threadWrap-1vnbf7d {
  position: relative;
  display: flex;
  flex: 1;
  min-height: 0;
  background: var(--sim-thread);
}
.sim-thread-1vnbf7d {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 2px;
  min-height: 0;
  overflow-y: auto;
  padding: 12px 12px 8px;
  overflow-anchor: none;
  scrollbar-width: thin;
}
.sim-thread-1vnbf7d:focus-visible {
  outline: none;
}
.sim-empty-1vnbf7d {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  margin: auto 0;
  padding: 24px 12px;
  color: var(--sim-text-2);
  font-size: 13.5px;
  text-align: center;
}
.sim-empty-1vnbf7d strong {
  color: var(--sim-text);
  font-size: 15px;
  font-weight: 600;
}
.sim-loadingRow-1vnbf7d {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 8px;
  color: var(--sim-text-2);
  font-size: 12.5px;
}
.sim-dateRow-1vnbf7d {
  display: flex;
  justify-content: center;
  margin: 8px 0;
}
.sim-dateRow-1vnbf7d span {
  padding: 3px 10px;
  border-radius: 8px;
  background: var(--sim-surface);
  color: var(--sim-text-2);
  font-size: 12px;
  box-shadow: 0 1px 1px rgb(42 36 32 / 0.07);
}
.sim-messageRow-1vnbf7d {
  display: flex;
  margin-top: 4px;
}
.sim-messageRow-1vnbf7d[data-own="true"] {
  justify-content: flex-end;
}
.sim-bubble-1vnbf7d {
  display: flex;
  flex-direction: column;
  gap: 2px;
  max-width: 82%;
  padding: 6px 10px 7px;
  border-radius: 10px 10px 10px 3px;
  background: var(--sim-surface);
  box-shadow: 0 1px 1px rgb(42 36 32 / 0.07);
  font-size: 14px;
  line-height: 1.42;
  overflow-wrap: anywhere;
}
.sim-bubble-1vnbf7d[data-own="true"] {
  border-radius: 10px 10px 3px 10px;
  background: var(--sim-own);
}
.sim-sender-1vnbf7d {
  display: flex;
  align-items: center;
  gap: 4px;
  color: var(--sim-text-2);
  font-size: 12px;
  font-weight: 600;
}
.sim-senderAi-1vnbf7d {
  color: var(--sim-ai-text);
}
.sim-sender-1vnbf7d svg {
  width: 13px;
  height: 13px;
}
.sim-quote-1vnbf7d {
  display: block;
  padding: 4px 8px;
  border-radius: 6px;
  background: rgb(42 36 32 / 0.05);
  color: var(--sim-text-2);
  font-size: 12.5px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sim-body-1vnbf7d p {
  margin: 0;
}
.sim-body-1vnbf7d p + p,
.sim-body-1vnbf7d ul,
.sim-body-1vnbf7d ol {
  margin: 4px 0 0;
}
.sim-body-1vnbf7d ul,
.sim-body-1vnbf7d ol {
  padding-inline-start: 20px;
}
.sim-body-1vnbf7d a {
  color: var(--sim-tint-text);
}
.sim-body-1vnbf7d code {
  font-size: 13px;
}
.sim-body-1vnbf7d {
  white-space: pre-wrap;
}
.sim-body-1vnbf7d:has(p) {
  white-space: normal;
}
.sim-meta-1vnbf7d {
  align-self: flex-end;
  color: var(--sim-text-3);
  font-size: 11px;
  line-height: 1.2;
}
/* C26: sobre la burbuja propia el gris terciario no llega a 4,5:1 (4,42); se usa el secundario. */
.sim-bubble-1vnbf7d[data-own="true"] .sim-meta-1vnbf7d {
  color: var(--sim-text-2);
}
.sim-metaError-1vnbf7d {
  color: var(--sim-error);
  font-weight: 600;
}
.sim-bubble-1vnbf7d[data-local="SENDING"] {
  opacity: 0.85;
}
.sim-typing-1vnbf7d {
  display: flex;
  align-items: center;
  gap: 8px;
  align-self: flex-start;
  margin-top: 6px;
  padding: 6px 10px;
  border-radius: 10px 10px 10px 3px;
  background: var(--sim-surface);
  color: var(--sim-text-2);
  font-size: 12.5px;
  box-shadow: 0 1px 1px rgb(42 36 32 / 0.07);
}
.sim-dots-1vnbf7d {
  display: inline-flex;
  gap: 3px;
}
.sim-dots-1vnbf7d span {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--sim-text-3);
  animation: sim-sim-dot-1vnbf7d 1.2s ease-in-out infinite;
}
.sim-dots-1vnbf7d span:nth-child(2) {
  animation-delay: 0.15s;
}
.sim-dots-1vnbf7d span:nth-child(3) {
  animation-delay: 0.3s;
}
@keyframes sim-sim-dot-1vnbf7d {
  0%,
  60%,
  100% {
    opacity: 0.35;
  }
  30% {
    opacity: 1;
  }
}
.sim-toEnd-1vnbf7d {
  position: absolute;
  right: 12px;
  bottom: 12px;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: var(--sim-surface);
  color: var(--sim-text);
  box-shadow: var(--sim-float-shadow);
  cursor: pointer;
}
.sim-toEnd-1vnbf7d svg {
  width: 18px;
  height: 18px;
}
.sim-toEndBadge-1vnbf7d {
  position: absolute;
  top: -4px;
  right: -4px;
  display: grid;
  place-items: center;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--sim-accent);
  color: var(--sim-on-accent);
  font-size: 11.5px;
  font-weight: 600;
}
.sim-srOnly-1vnbf7d {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* ── Cuadro de texto ─────────────────────────────────────────────────────────────────────────────────────────── */
.sim-composer-1vnbf7d {
  display: flex;
  flex: none;
  flex-direction: column;
  gap: 4px;
  padding: 8px 12px 10px;
  background: var(--sim-thread);
}
.sim-composerBox-1vnbf7d {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  padding: 4px 4px 4px 14px;
  border-radius: 24px;
  background: var(--sim-surface);
  box-shadow: 0 1px 1px rgb(42 36 32 / 0.07);
}
.sim-composerBox-1vnbf7d:focus-within {
  box-shadow: 0 0 0 1.5px var(--sim-accent);
}
.sim-textarea-1vnbf7d {
  flex: 1;
  min-width: 0;
  min-height: 40px;
  max-height: 132px;
  padding: 9px 0;
  border: 0;
  background: transparent;
  color: var(--sim-text);
  font-size: 14.5px;
  line-height: 1.4;
  resize: none;
}
.sim-root-1vnbf7d .sim-textarea-1vnbf7d:focus-visible {
  outline: none;
}
.sim-textarea-1vnbf7d::placeholder {
  color: var(--sim-text-3);
}
.sim-send-1vnbf7d {
  display: grid;
  flex: none;
  place-items: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--sim-accent);
  color: var(--sim-on-accent);
  cursor: pointer;
}
.sim-send-1vnbf7d svg {
  width: 20px;
  height: 20px;
}
@media (hover: hover) {
  .sim-send-1vnbf7d:hover:not(:disabled) {
    background: var(--sim-accent-hover);
  }
}
.sim-send-1vnbf7d:active:not(:disabled) {
  background: var(--sim-accent-pressed);
}
.sim-send-1vnbf7d:disabled {
  background: var(--sim-send-disabled);
  color: #fff;
  cursor: not-allowed;
}
:root[data-theme="dark"] .sim-send-1vnbf7d:disabled {
  color: oklch(0.7 0.01 60);
}
.sim-keyboardHelp-1vnbf7d {
  padding-inline-start: 14px;
  color: var(--sim-text-3);
  font-size: 11.5px;
}

/* ── Diagnóstico ─────────────────────────────────────────────────────────────────────────────────────────────── */
.sim-diagnostic-1vnbf7d {
  position: relative;
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 16px;
  min-height: 0;
  overflow-y: auto;
  padding: 12px 16px 16px;
}
.sim-rows-1vnbf7d {
  display: flex;
  flex-direction: column;
  margin: 0;
}
.sim-row-1vnbf7d {
  display: grid;
  grid-template-columns: minmax(120px, 40%) 1fr;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid var(--sim-line);
  font-size: 13.5px;
}
.sim-row-1vnbf7d:last-child {
  border-bottom: 0;
}
.sim-row-1vnbf7d dt {
  color: var(--sim-text-2);
}
.sim-row-1vnbf7d dd {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
}
.sim-attempts-1vnbf7d {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 4px 0 0;
  padding: 0 0 0 24px;
  list-style: none;
}
.sim-attemptHead-1vnbf7d {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 8px;
  font-size: 13.5px;
}
.sim-attemptModel-1vnbf7d {
  color: var(--sim-text-2);
  overflow-wrap: anywhere;
}
.sim-tag-1vnbf7d {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 7px;
  border-radius: 999px;
  background: var(--sim-neutral-soft);
  color: var(--sim-text-2);
  font-size: 11.5px;
  font-weight: 600;
}
.sim-tag-1vnbf7d[data-status="ERROR"] {
  background: var(--sim-error-soft);
  color: var(--sim-error);
}
.sim-attemptRows-1vnbf7d {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 12px;
  margin: 6px 0 0;
  font-size: 12.5px;
}
.sim-attemptRows-1vnbf7d dt {
  color: var(--sim-text-3);
}
.sim-attemptRows-1vnbf7d dd {
  margin: 0;
}
.sim-diagnosticActions-1vnbf7d {
  display: flex;
}
.sim-toast-1vnbf7d {
  position: sticky;
  bottom: 0;
  align-self: center;
  width: max-content;
  max-width: 100%;
  padding: 10px 16px;
  border-radius: 999px;
  background: #2a2420;
  color: #fff;
  font-size: 13.5px;
}

/* ── Celular: hoja inferior (C27), sin anclar ────────────────────────────────────────────────────────────────── */
@media (max-width: 767px) {
  .sim-backdrop-1vnbf7d {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 50;
    background: rgb(42 36 32 / 0.35);
  }
  .sim-window-1vnbf7d {
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 51;
    width: 100%;
    height: calc(100dvh * 0.88);
    border: 0;
    border-radius: 18px 18px 0 0;
    padding-bottom: env(safe-area-inset-bottom);
    animation: sim-sim-sheet-up-1vnbf7d 90ms ease-out;
  }
  .sim-handle-1vnbf7d {
    display: grid;
    flex: none;
    place-items: center;
    height: 20px;
  }
  .sim-handle-1vnbf7d span {
    width: 36px;
    height: 4px;
    border-radius: 2px;
    background: #ddd3ca;
  }
  .sim-head-1vnbf7d {
    min-height: 52px;
    padding-top: 0;
  }
  .sim-iconButton-1vnbf7d {
    width: 44px;
    height: 44px;
  }
  .sim-cards-1vnbf7d {
    grid-template-columns: 1fr;
  }
  .sim-card-1vnbf7d {
    min-height: 56px;
  }
  .sim-pill-1vnbf7d {
    height: 40px;
  }
  .sim-secondary-1vnbf7d {
    height: 40px;
  }
  .sim-send-1vnbf7d {
    width: 44px;
    height: 44px;
  }
  .sim-keyboardHelp-1vnbf7d {
    display: none;
  }
}
@keyframes sim-sim-sheet-up-1vnbf7d {
  from {
    transform: translateY(100%);
  }
  to {
    transform: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .sim-window-1vnbf7d,
  .sim-spinner-1vnbf7d,
  .sim-dots-1vnbf7d span {
    animation: none;
  }
  .sim-collapsibleHead-1vnbf7d svg {
    transition: none;
  }
}
/*$vite$:1*/