@charset "utf-8";

@font-face {
    font-family: 'Inter';
    src: url('../assets/fonts/Inter/Inter-VariableFont_opsz,wght.ttf') format('truetype');
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Inter';
    src: url('../assets/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf') format('truetype');
    font-weight: 100 900;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'JetBrains Mono';
    src: url('../assets/fonts/JetBrains_Mono/JetBrainsMono-VariableFont_wght.ttf') format('truetype');
    font-weight: 100 800;
    font-style: normal;
    font-display: swap;
}

:root {
    --surface-page: #E8EEF5;
    --surface-1: #FFFFFF;
    --surface-header: #0A4F45;
    --header-text: #FFFFFF;
    --header-text-muted: rgba(255, 255, 255, 0.75);
    --color-placeholder: #747474;
    --header-text-action: rgba(255, 255, 255, 0.85);
    --header-text-hover: #000000;
    --header-input-bg: rgba(255, 255, 255, 0.12);
    --header-input-border: rgba(255, 255, 255, 0.25);
    --header-input-border-focus: rgba(255, 255, 255, 0.6);
    --header-focus-ring: rgba(255, 255, 255, 0.1);
    --surface-2: #E3EAF2;
    --surface-3: #D6E0EB;
    --surface-input: #FFFFFF;

    --text-1: #0F1923;
    --text-2: #2D3E50;
    --text-3: #3D5470;
    --text-4: #536B7A;
    --text-accent: #0B6158;
    --text-on-accent: #FFFFFF;

    --border-1: #D0DAE4;
    --border-2: #B8C6D4;
    --border-focus: var(--accent);

    --accent: #0F7A6B;
    --accent-hover: #0B6158;
    --accent-dim: #8DCCBE;
    --focus-ring: rgba(15, 122, 107, 0.15);

    --alto: #B8372C;
    --alto-bg: rgba(184, 55, 44, 0.10);
    --alto-border: rgba(184, 55, 44, 0.35);
    --alto-strong: #8C271E;

    --bajo: #2F6FB5;
    --bajo-bg: rgba(47, 111, 181, 0.10);
    --bajo-border: rgba(47, 111, 181, 0.35);
    --bajo-strong: #21548D;

    --urgent: #A21E1E;
    --monitor: #B5791A;
    --monitor-bg: rgba(181, 121, 26, 0.12);

    --radius-sm: 4px;
    --radius-md: 8px;

    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 20px;
    --space-6: 24px;

    --dur-fast: 120ms;
    --dur-base: 180ms;

    --font-sans: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
    --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, monospace;
    --fs-xs: clamp(11px, 10.7px + 0.09vw, 12px);
    --fs-sm: clamp(13px, 12.6px + 0.09vw, 14px);
    --fs-ui: clamp(14px, 13.6px + 0.18vw, 16px);
    --fs-base: clamp(16px, 15.7px + 0.09vw, 17px);
    --fs-xl: clamp(22px, 21.3px + 0.18vw, 1.5rem);
    --lh-snug: 1.4;
    --lh-normal: 1.5;
    --tracking-wide: 1px;
    --tracking-wider: 0.1em;
    --tracking-widest: 4px;
}

:root[data-theme="dark"] {
    --surface-page: #0E1011;
    --surface-header: var(--surface-1);
    --header-text: var(--text-1);
    --header-text-muted: var(--text-3);
    --header-text-action: var(--text-2);
    --header-text-hover: var(--header-text);
    --header-input-bg: var(--surface-input);
    --header-input-border: var(--border-1);
    --header-input-border-focus: var(--border-focus);
    --header-focus-ring: var(--focus-ring);
    --surface-1: #16191B;
    --surface-2: #1E2224;
    --surface-3: #262B2E;
    --surface-input: #121517;

    --text-1: #FFFFFF;
    --text-2: #E0E2DF;
    --text-3: #C2C6C4;
    --text-4: #B0B5B3;
    --text-accent: #5ECDB8;
    --text-on-accent: #062520;

    --border-1: #2A2E31;
    --border-2: #363B3E;
    --border-focus: #5ECDB8;

    --accent: #5ECDB8;
    --accent-hover: #7BDAC7;
    --accent-dim: #2A5A52;
    --focus-ring: rgba(94, 205, 184, 0.15);

    --alto: #F08478;
    --alto-bg: rgba(240, 132, 120, 0.14);
    --alto-border: rgba(240, 132, 120, 0.32);
    --alto-strong: #F5A59B;

    --bajo: #7EB8F0;
    --bajo-bg: rgba(126, 184, 240, 0.14);
    --bajo-border: rgba(126, 184, 240, 0.32);
    --bajo-strong: #A3CDF5;

    --urgent: #F08478;
    --monitor: #E5B261;
    --monitor-bg: rgba(229, 178, 97, 0.14);
}

*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html, body {
    height: 100%;
    overflow: hidden;
    background: var(--surface-page);
    color: var(--text-1);
    font-family: var(--font-sans);
    font-size: var(--fs-base);
    line-height: var(--lh-normal);
    transition: background-color var(--dur-base), color var(--dur-base);
}

body {
    display: flex;
    flex-direction: column;
}

/*  HEADER  */
header {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: var(--space-3) var(--space-6) var(--space-3) var(--space-4);
    background: var(--surface-header);
    border-bottom: none;
    flex-wrap: wrap;
    flex-shrink: 0;
}

header #logo {
    color: var(--header-text-muted);
}

header .barra-paciente label {
    color: var(--header-text-muted);
}

header .barra-paciente select,
header .barra-paciente input {
    background: var(--header-input-bg);
    border-color: var(--header-input-border);
    color: var(--header-text);
}

header .barra-paciente select:focus,
header .barra-paciente input:focus {
    border-color: var(--header-input-border-focus);
    box-shadow: 0 0 0 3px var(--header-focus-ring);
}

#pt-especie:has(option[value=""]:checked),
#pt-sexo:has(option[value=""]:checked),
#pt-edad-unidad {
    color: var(--header-text-muted);
}

#mob-pt-especie:has(option[value=""]:checked),
#mob-pt-sexo:has(option[value=""]:checked),
#mob-pt-edad-unidad {
    color: var(--color-placeholder);
}

select:has(option[value=""]:checked) {
    color: var(--color-placeholder);
}

header .barra-paciente select option {
    background: var(--surface-1);
    color: var(--text-1);
}

header .boton-tema,
header .boton-usuario {
    color: var(--header-text-action);
}

header .boton-tema:hover,
header .boton-usuario:hover {
    color: var(--header-text-hover);
}

#logo {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: var(--fs-xl);
    font-weight: 300;
    letter-spacing: var(--tracking-widest);
    color: var(--text-1);
    margin-right: auto;
    text-transform: uppercase;
}

#logo svg {
    width: 1.4em;
    height: 1.4em;
    fill: currentColor;
    flex-shrink: 0;
}

.barra-paciente {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.barra-paciente-titulo {
    display: none;
}

.barra-paciente label {
    color: var(--text-3);
    font-size: var(--fs-sm);
    font-weight: 500;
}

button {
    font-family: inherit;
    font-size: inherit;
    background: none;
    border: none;
    cursor: pointer;
}

input::placeholder,
textarea::placeholder {
    color: var(--color-placeholder);
}

.barra-paciente select,
.barra-paciente input {
    background: var(--surface-input);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    color: var(--text-1);
    padding: 5px var(--space-2);
    font-size: var(--fs-ui);
    font-family: var(--font-sans);
    outline: none;
    transition: border-color var(--dur-fast), box-shadow var(--dur-fast);
}

.barra-paciente select:focus,
.barra-paciente input:focus {
    border-color: var(--border-focus);
    box-shadow: 0 0 0 3px var(--focus-ring);
}

.barra-paciente select option {
    color: var(--text-2);
    background: var(--surface-input);
}

.barra-paciente select {
    min-width: 110px;
    cursor: pointer;
}

.barra-paciente input {
    width: 7.5rem;
}

/*  ACCIONES CABECERA  */
.acciones-cabecera {
    display: flex;
    gap: var(--space-2);
    align-items: center;
    flex-shrink: 0;
    margin-left: 4rem;
}

/*  GRID PRINCIPAL  */
main {
    display: grid;
    grid-template-columns: 1fr 1fr 40rem 30rem;
    grid-template-rows: 1fr auto auto auto;
    grid-template-areas:
        "hema    bioquim  col3 resultados"
        "endo    uri      col3 resultados"
        "coag    gas      col3 resultados"
        "flujo   flujo    col3 resultados";
    gap: 1px;
    background: var(--border-1);
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

#panel-hema       { grid-area: hema; }
#panel-bioquim    { grid-area: bioquim; }
#panel-endo       { grid-area: endo; }
#panel-uri        { grid-area: uri; }
#panel-coag       { grid-area: coag; }
#panel-gas        { grid-area: gas; }
#panel-resultados { grid-area: resultados; }
.panel-flujo      { grid-area: flujo; }

.col3-wrapper {
    grid-area: col3;
    display: flex;
    flex-direction: column;
    background: var(--border-1);
    gap: 1px;
    overflow: hidden;
}

#panel-imagenes {
    flex: 1;
    min-height: 0;
}

#panel-clinico {
    flex-shrink: 0;
}


/*  HEMA / BIOQUIM — contenido más grande  */
#panel-hema,
#panel-bioquim {
    --fs-xs: 12px;
    --fs-sm: 0.9rem;
    --fs-ui: 15px;
}

#panel-hema .panel-cuerpo,
#panel-bioquim .panel-cuerpo {
    padding: 12px 1rem;
}

#panel-hema .fila-campo,
#panel-bioquim .fila-campo {
    margin-bottom: 9px;
    gap: 0.6rem;
}

#panel-hema .fila-campo label,
#panel-bioquim .fila-campo label {
    font-size: var(--fs-ui);
}

#panel-hema .fila-campo input,
#panel-bioquim .fila-campo input {
    width: calc(6rem + 2rem);
    padding: 6px 0.6rem;
    font-size: var(--fs-ui);
}

#panel-hema .fila-campo .unidad,
#panel-bioquim .fila-campo .unidad {
    min-width: 4rem;
    font-size: var(--fs-ui);
}

.panel {
    background: var(--surface-1);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.panel-titulo {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
}

.panel-cabecera {
    height: 2.5rem;
    display: flex;
    align-items: center;
    padding: 0 var(--space-4);
    font-size: clamp(13px, 12.6px + 0.09vw, 14px);
    font-weight: 600;
    letter-spacing: var(--tracking-wide);
    text-transform: uppercase;
    color: var(--text-3);
    border-bottom: 1px solid var(--border-1);
    background: var(--surface-2);
    flex-shrink: 0;
}



.panel-cuerpo {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    padding: var(--space-3) var(--space-4);
    scrollbar-width: thin;
    scrollbar-color: var(--border-2) transparent;
}

/*  ENCABEZADOS DE COLUMNA  */
.cabecera-columnas {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: 0 0 var(--space-1) 0;
    margin-bottom: var(--space-3);
    border-bottom: 1px solid var(--border-1);
    position: sticky;
    top: 0;
    background: var(--surface-1);
    z-index: 1;
}

.cabecera-columnas span {
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--tracking-wide);
    text-transform: uppercase;
    color: var(--color-placeholder);
}

.cabecera-columnas span:first-child {
    flex: 1;
}
.cabecera-columnas span:nth-child(2) {
    width: calc(5rem + 2rem);
    text-align: center;
}
.cabecera-columnas span:nth-child(3) {
    min-width: 50px;
    text-align: right;
}

/*  CAMPOS DEL FORMULARIO  */
.grupo-campo {
    margin-bottom: 18px;
}

.titulo-grupo {
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--tracking-wider);
    text-transform: uppercase;
    color: var(--text-accent);
    margin-bottom: 14px;
    padding-bottom: var(--space-1);
    border-bottom: 1px solid var(--border-1);
}

.fila-campo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
    gap: var(--space-2);
}

.fila-campo label {
    font-size: var(--fs-sm);
    color: var(--text-3);
    flex: 1;
}

.fila-campo .unidad {
    font-size: var(--fs-xs);
    color: var(--color-placeholder);
    white-space: nowrap;
    min-width: 50px;
    text-align: right;
}

.estado-campo {
    font-size: var(--fs-xs);
    font-weight: 600;
    white-space: nowrap;
    flex-shrink: 0;
    letter-spacing: 0.16px;
}

.estado-campo--alto {
    color: var(--alto);
}
.estado-campo--bajo {
    color: var(--bajo);
}

.fila-campo input {
    width: calc(5rem + 2rem);
    background: var(--surface-input);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    color: var(--text-1);
    padding: var(--space-1) var(--space-2);
    font-size: var(--fs-ui);
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    text-align: right;
    outline: none;
    appearance: none;
    transition: border-color var(--dur-fast), background-color var(--dur-fast), color var(--dur-fast);
}

.fila-campo input[type="number"]::-webkit-outer-spin-button,
.fila-campo input[type="number"]::-webkit-inner-spin-button {
    display: none;
}

.fila-campo input:focus {
    border-color: var(--border-focus);
    box-shadow: 0 0 0 3px var(--focus-ring);
}

.fila-campo input.alto,
.fila-campo input.alto:focus {
    border-color: var(--alto);
    background: var(--alto-bg);
    color: var(--alto-strong);
}

.fila-campo input.bajo,
.fila-campo input.bajo:focus {
    border-color: var(--bajo);
    background: var(--bajo-bg);
    color: var(--bajo-strong);
}

.fila-campo input.max-chars,
.fila-campo input.max-chars:focus {
    border-color: var(--monitor);
    background: var(--monitor-bg);
}

/*  PANEL COLUMNA MEDIA (urianálisis + endocrino + imágenes)  */
#panel-uri,
#panel-endo {
    --fs-ui: 15px;
    --fs-xs: 12px;
    --fs-sm: 0.9rem;
}

#panel-imagenes {
    --fs-ui: 15px;
    --fs-xs: 12px;
    --fs-sm: 0.9rem;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
    scrollbar-color: var(--border-2) transparent;
    flex: 1;
}

#panel-imagenes .panel-cabecera {
    position: sticky;
    top: 0;
    z-index: 2;
    border-top: 1px solid var(--border-1);
}

#panel-imagenes .panel-cabecera:first-child {
    border-top: none;
}

.col3-wrapper > .panel.subpanel:first-child > .panel-cabecera {
    border-top: none;
}

.subpanel-anim {
    overflow: hidden;
    transition: height 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}

.subpanel-cuerpo {
    flex-shrink: 0;
    padding: 12px 1rem;
}

/*  TOOLTIP GLOBAL  */
#tooltip-global {
    position: fixed;
    background: var(--surface-0, #1a1a1a);
    color: #fff;
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 500;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.15s;
    z-index: 10000;
    box-shadow: 0 2px 8px rgba(0,0,0,0.18);
}

#tooltip-global.visible {
    opacity: 1;
}

/*  BOTÓN LIMPIAR PANEL  */
.btn-limpiar-panel {
    margin-left: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.875rem;
    height: 1.875rem;
    flex-shrink: 0;
    border: none;
    background: transparent;
    color: var(--text-4);
    cursor: pointer;
    border-radius: var(--radius-sm);
    transition: background 0.15s, color 0.15s;
}

.btn-limpiar-panel svg {
    width: 17.5px;
    height: 17.5px;
    fill: currentColor;
}

.btn-limpiar-panel:hover {
    background: var(--alto-bg);
    color: var(--alto);
}

/*  BOTÓN IMPORTAR PDF  */
.btn-importar-pdf {
    margin-left: 2px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.875rem;
    height: 1.875rem;
    flex-shrink: 0;
    border: none;
    background: transparent;
    color: var(--text-4);
    cursor: pointer;
    border-radius: var(--radius-sm);
    transition: background 0.15s, color 0.15s;
}

.btn-importar-pdf svg {
    width: 17.5px;
    height: 17.5px;
    fill: currentColor;
}

.btn-importar-pdf:hover {
    background: var(--border-1);
    color: var(--accent);
}

.btn-importar-pdf + .btn-colapsar-subpanel {
    margin-left: 2px;
}

/*  TOAST NOTIFICACIÓN PDF  */
.pdf-toast {
    position: fixed;
    bottom: 2rem;
    left: 50%;
    transform: translateX(-50%) translateY(6px);
    background: var(--surface-1);
    color: var(--text-1);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-md);
    padding: var(--space-2) var(--space-4);
    font-size: var(--fs-sm);
    font-weight: 500;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.14);
    opacity: 0;
    transition: opacity 0.2s, transform 0.2s;
    pointer-events: none;
    z-index: 9999;
    white-space: nowrap;
}

.pdf-toast--show {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

.pdf-toast--error {
    border-color: var(--alto);
    color: var(--alto);
}

/*  BOTÓN COLAPSAR SUBPANEL  */
.btn-colapsar-subpanel {
    margin-left: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.875rem;
    height: 1.875rem;
    flex-shrink: 0;
    border: none;
    background: transparent;
    color: var(--text-3);
    cursor: pointer;
    border-radius: var(--radius-sm, 4px);
    transition: background 0.15s, color 0.15s;
}

.btn-colapsar-subpanel:hover {
    background: var(--border-1);
    color: var(--text-1);
}

.btn-colapsar-subpanel svg {
    width: 16.25px;
    height: 16.25px;
    fill: currentColor;
}

.btn-colapsar-subpanel .icono-colapsar {
    display: none;
}

.subpanel.collapsed .btn-colapsar-subpanel .icono-expandir {
    display: none;
}

.subpanel.collapsed .btn-colapsar-subpanel .icono-colapsar {
    display: block;
}

.fila-campo select {
    width: calc(5rem + 2rem);
    background: var(--surface-input);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    color: var(--text-1);
    padding: var(--space-1) var(--space-2);
    font-size: var(--fs-ui);
    font-family: var(--font-sans);
    outline: none;
    cursor: pointer;
    transition: border-color var(--dur-fast), background-color var(--dur-fast);
}

.fila-campo select:focus {
    border-color: var(--border-focus);
    box-shadow: 0 0 0 3px var(--focus-ring);
}


/*  CHAT AREA (signos clínicos en resultados)  */
.chat-area {
    padding: 0.5rem var(--space-4);
    border-top: 1px solid var(--border-1);
    background: var(--surface-2);
    flex-shrink: 0;
}

.chat-area textarea {
    width: 100%;
    box-sizing: border-box;
    background: var(--surface-input);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    color: var(--text-1);
    padding: var(--space-2) var(--space-3);
    font-size: var(--fs-ui);
    font-family: var(--font-sans);
    resize: none;
    height: 4rem;
    outline: none;
    line-height: var(--lh-normal);
    transition: border-color var(--dur-fast), box-shadow var(--dur-fast);
}

.chat-area textarea:focus {
    border-color: var(--border-focus);
    box-shadow: 0 0 0 3px var(--focus-ring);
}

/*  PANEL DE RESULTADOS  */

.seccion-resultado {
    margin-bottom: 20px;
}

.titulo-seccion-resultado {
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--tracking-wider);
    text-transform: uppercase;
    color: var(--text-accent);
    margin-bottom: var(--space-2);
}

.titulo-patrones {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    cursor: pointer;
}

.btn-colapsar-patrones {
    margin-left: auto;
    display: flex;
    align-items: center;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--text-4);
    padding: 2px;
    border-radius: var(--radius-sm);
    transition: color var(--dur-fast), transform var(--dur-base);
}

.btn-colapsar-patrones:hover {
    color: var(--text-accent);
}

.btn-colapsar-patrones svg {
    width: 12px;
    height: 12px;
    fill: currentColor;
}

.btn-colapsar-patrones .icono-colapsar {
    display: none;
}

.btn-colapsar-patrones[aria-expanded="false"] .icono-expandir {
    display: none;
}

.btn-colapsar-patrones[aria-expanded="false"] .icono-colapsar {
    display: block;
}

.patrones-anim {
    overflow: hidden;
    transition: height 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}

/*  PATRONES  */
.elemento-patron {
    background: var(--surface-2);
    border: 1px solid var(--border-1);
    border-left: 3px solid var(--accent);
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    padding: var(--space-2) var(--space-3);
    margin-bottom: var(--space-2);
}

.elemento-patron .titulo-patron {
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: var(--tracking-wider);
    text-transform: uppercase;
    color: var(--text-accent);
    margin-bottom: 2px;
}

.elemento-patron .cuerpo-patron {
    font-size: var(--fs-sm);
    color: var(--text-2);
    line-height: var(--lh-normal);
}

.elemento-patron.gravedad-grave {
    border-left-color: var(--urgent);
}

.elemento-patron.gravedad-grave .titulo-patron {
    color: var(--urgent);
}

.elemento-patron.gravedad-moderado {
    border-left-color: var(--monitor);
}

.elemento-patron.gravedad-moderado .titulo-patron {
    color: var(--monitor);
}

.sin-hallazgos {
    font-size: var(--fs-sm);
    color: var(--text-4);
    font-style: italic;
}

/*  IA OUTPUT  */
#salida-ia {
    font-size: var(--fs-ui);
    color: var(--text-3);
    line-height: 1.7;
    white-space: pre-wrap;
    background: var(--surface-2);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-md);
    padding: var(--space-3) var(--space-4);
}

/*  FOOTER  */
footer {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    padding: var(--space-2) var(--space-6);
    background: var(--surface-1);
    border-top: 1px solid var(--border-1);
    flex-wrap: wrap;
    flex-shrink: 0;
}

#aviso {
    flex: 1;
    font-size: var(--fs-xs);
    color: var(--color-placeholder);
    line-height: var(--lh-snug);
}

#aviso strong {
    color: var(--color-placeholder);
}

.btn-adjuntar-mob {
    display: none;
    width: 100%;
    justify-content: center;
    gap: var(--space-2);
    margin-top: var(--space-4);
    background: var(--accent);
    color: var(--text-on-accent);
    border-color: var(--accent);
    min-width: 100px;
}

.btn-adjuntar-mob:hover {
    background: var(--accent-hover);
    border-color: var(--accent-hover);
}

.btn-adjuntar-mob svg {
    width: 18px;
    height: 18px;
    fill: currentColor;
}

#aviso-mob {
    display: none;
    font-size: var(--fs-xs);
    color: var(--color-placeholder);
    line-height: var(--lh-snug);
    padding: var(--space-3) 0 var(--space-1);
    margin-top: 3rem;
}

#aviso-mob strong {
    color: var(--color-placeholder);
}

#creditos-mob {
    display: none;
    align-items: center;
    justify-content: center;
    gap: var(--space-1);
    font-size: var(--fs-xs);
    color: var(--color-placeholder);
    white-space: nowrap;
    padding: var(--space-3) 0;
    margin-top: var(--space-2);
    border-top: 1px solid var(--border-1);
}

#creditos-mob svg {
    width: 14px;
    height: 14px;
    fill: currentColor;
    flex-shrink: 0;
}

#creditos-mob a {
    color: inherit;
    text-decoration: none;
}

#creditos-mob a:hover {
    color: var(--text-accent);
}

#creditos {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    font-size: var(--fs-xs);
    color: var(--color-placeholder);
    white-space: nowrap;
}

#creditos svg {
    width: 14px;
    height: 14px;
    fill: currentColor;
    flex-shrink: 0;
}

#creditos a {
    color: inherit;
    text-decoration: none;
}

#creditos a:hover {
    color: var(--text-accent);
}

.acciones-pie {
    display: flex;
    gap: var(--space-2);
    flex-shrink: 0;
}

/*  BOTONES  */
.boton {
    padding: 7px 16px;
    border-radius: var(--radius-sm);
    border: 1px solid transparent;
    font-size: var(--fs-ui);
    font-weight: 500;
    font-family: var(--font-sans);
    cursor: pointer;
    transition:
        background-color var(--dur-fast),
        color var(--dur-fast),
        border-color var(--dur-fast),
        opacity var(--dur-fast);
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
}

.boton:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}


.boton-analizar {
    background: var(--accent);
    color: var(--text-on-accent);
    border-color: var(--accent);
    min-width: 100px;
}

.boton-analizar:hover:not(:disabled) {
    background: var(--accent-hover);
    border-color: var(--accent-hover);
}


#salida-ia.cargando {
    color: var(--text-4);
    font-style: italic;
}

/*  IA BACKEND CONFIG  */

.ia-backend-config {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2) var(--space-3);
    margin-top: var(--space-3);
    padding-top: var(--space-3);
    border-top: 1px solid var(--border-1);
}

.ia-backend-label {
    font-size: var(--fs-xs);
    color: var(--text-4);
    font-weight: 500;
    white-space: nowrap;
}

.ia-backend-opt {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    font-size: var(--fs-xs);
    color: var(--text-3);
    cursor: pointer;
    white-space: nowrap;
}

.ia-backend-opt input[type="radio"] {
    accent-color: var(--accent);
    cursor: pointer;
}

.ia-ollama-fields {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    width: 100%;
}

.ia-text-input {
    flex: 1;
    min-width: 140px;
    padding: 4px 8px;
    font-size: var(--fs-xs);
    font-family: var(--font-mono, monospace);
    background: var(--surface-1);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    color: var(--text-2);
}

.ia-text-input:focus {
    outline: 2px solid var(--accent);
    outline-offset: 1px;
}

#ia-ollama-url,
#ia-ollama-model {
    color: var(--color-placeholder);
}

.ia-model-input {
    max-width: 130px;
    flex: 0 0 auto;
}

.ia-hf-fields {
    width: 100%;
}

.ia-select {
    width: 100%;
    padding: 4px 8px;
    font-size: var(--fs-xs);
    font-family: var(--font-sans);
    background: var(--surface-1);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    color: var(--text-2);
    cursor: pointer;
}

.ia-select:focus {
    outline: 2px solid var(--accent);
    outline-offset: 1px;
}

/*  ZONAS DE IMAGEN  */

#subpanel-citologia {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

#subpanel-citologia .subpanel-anim {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

#cuerpo-citologia {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

#cuerpo-citologia .zonas-imagen {
    flex-shrink: 0;
}

.zonas-imagen {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-3);
}

.zona-imagen {
    position: relative;
    height: 110px;
    border: 1.5px dashed var(--border-2);
    border-radius: var(--radius-md);
    cursor: pointer;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: border-color var(--dur-fast);
}
.zona-imagen:hover {
    border-color: var(--accent);
}
.zona-imagen.con-imagen {
    border-style: solid;
    border-color: var(--border-1);
}

.zona-vacia svg {
    width: 22px;
    height: 22px;
    fill: currentColor;
}

.zona-vacia {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-2);
    color: var(--color-placeholder);
    pointer-events: none;
    font-size: var(--fs-xs);
}

/*  ZONA MICROSCOPIO  */

.zona-microscopio {
    position: relative;
    flex: 1;
    width: 100%;
    min-height: 150px;
    margin-top: var(--space-3);
    border: 1.5px dashed var(--border-2);
    border-radius: var(--radius-md);
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: border-color var(--dur-fast);
    background: var(--surface-1);
}

.zona-microscopio:hover {
    border-color: var(--accent);
}

.micro-vacia {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-2);
    color: var(--color-placeholder);
    font-size: var(--fs-xs);
    pointer-events: none;
}

.micro-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* control bar */
.micro-controles {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-2) var(--space-3);
    background: var(--surface-2);
    border-top: 1px solid var(--border-1);
    gap: var(--space-2);
}

.micro-vacia svg {
    width: 22px;
    height: 22px;
    fill: currentColor;
}

.micro-btn svg {
    width: 16px;
    height: 16px;
    fill: currentColor;
}

.micro-btn-capturar svg {
    width: 20px;
    height: 20px;
}

.micro-btn {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    color: var(--text-3);
    background: var(--surface-3);
    border: 1px solid var(--border-1);
    flex-shrink: 0;
    transition: background var(--dur-fast), border-color var(--dur-fast), color var(--dur-fast);
}

.micro-btn:hover {
    background: var(--border-1);
    border-color: var(--border-2);
    color: var(--text-1);
}

.micro-btn-capturar {
    width: 3rem;
    height: 3rem;
    background: var(--accent);
    border-color: var(--accent);
    color: var(--text-on-accent);
}

.micro-btn-capturar:hover {
    background: var(--accent-hover);
    border-color: var(--accent-hover);
}

.micro-btn-capturar:disabled {
    opacity: 0.35;
    cursor: not-allowed;
}

.micro-badge {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 16px;
    height: 16px;
    padding: 0 3px;
    border-radius: 8px;
    background: var(--accent);
    color: var(--text-on-accent);
    font-size: 10px;
    font-weight: 700;
    font-family: var(--font-sans);
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1.5px solid var(--surface-1);
}

/* panel-galeria */
.micro-galeria {
    position: absolute;
    bottom: 3.5rem;
    left: 0;
    right: 0;
    background: var(--surface-1);
    border-top: 1px solid var(--border-1);
    padding: var(--space-2) var(--space-3);
    display: flex;
    gap: var(--space-2);
    align-items: center;
}

.micro-galeria-vacia {
    font-size: var(--fs-xs);
    color: var(--text-4);
    font-style: italic;
}

.micro-thumb {
    position: relative;
    width: 52px;
    height: 52px;
    border-radius: var(--radius-sm);
    overflow: hidden;
    flex-shrink: 0;
    border: 1px solid var(--border-1);
    background: var(--surface-2);
}

.micro-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.micro-thumb-quitar {
    position: absolute;
    top: 2px;
    right: 2px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.55);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background var(--dur-fast);
}

.micro-thumb-quitar:hover {
    background: rgba(0, 0, 0, 0.82);
}

.zona-img-preview {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.btn-quitar-zona svg {
    width: 16px;
    height: 16px;
    fill: currentColor;
}

.btn-quitar-zona {
    position: absolute;
    top: var(--space-1);
    right: var(--space-1);
    width: 20px;
    height: 20px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--border-1);
    background: var(--surface-2);
    color: var(--text-3);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: background var(--dur-fast), color var(--dur-fast);
}
.btn-quitar-zona:hover {
    background: var(--surface-3);
    color: var(--text-1);
    border-color: var(--border-2);
}

/*  PANEL PIE DE ACCIONES  */
.panel-pie-acciones {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    height: 2.5rem;
    padding: 0 var(--space-4);
    padding-bottom: 1rem;
    background: var(--surface-2);
    flex-shrink: 0;
    justify-content: flex-end;
}

.panel-pie-acciones .boton {
    padding: 7px 19px;
}

.panel-pie-acciones .boton-analizar {
    min-width: 7.5rem;
}

.boton-papers {
    background: var(--surface-1);
    color: var(--text-accent);
    border-color: var(--accent);
}

.boton-papers:hover:not(:disabled) {
    background: var(--surface-2);
}

/*  THEME TOGGLE  */
.boton-tema {
    background: transparent;
    color: var(--text-2);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    padding: 5px 12px;
    display: inline-flex;
    align-items: center;
    min-height: 32px;
}

.boton-tema:hover {
    background: var(--surface-2);
    color: var(--text-1);
    border-color: var(--border-2);
}

.icono-sol {
    display: none;
    width: 14px;
    height: 14px;
    fill: currentColor;
}
.icono-luna {
    display: block;
    width: 14px;
    height: 14px;
    fill: currentColor;
}

[data-theme="dark"] .icono-sol {
    display: block;
}
[data-theme="dark"] .icono-luna {
    display: none;
}



/*  BOTÓN COLAPSAR FLUJO  */
.btn-colapsar-flujo {
    margin-left: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.875rem;
    height: 1.875rem;
    flex-shrink: 0;
    border: none;
    background: transparent;
    color: var(--text-3);
    cursor: pointer;
    border-radius: var(--radius-sm, 4px);
    transition: background 0.15s, color 0.15s;
}

.btn-colapsar-flujo:hover {
    background: var(--border-1);
    color: var(--text-1);
}

.btn-colapsar-flujo svg {
    width: 16.25px;
    height: 16.25px;
    fill: currentColor;
}

.btn-colapsar-flujo .icono-colapsar {
    display: none;
}

.panel-flujo.collapsed .btn-colapsar-flujo .icono-expandir {
    display: none;
}

.panel-flujo.collapsed .btn-colapsar-flujo .icono-colapsar {
    display: block;
}

main {
    transition: grid-template-rows 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}

#panel-flujo::after {
    content: '';
    display: block;
    height: 0.5rem;
    flex-shrink: 0;
}

/*  PANEL FLUJO DE TRABAJO  */
.cuerpo-flujo {
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 1.5rem;
    padding: 0.3rem 20px;
    overflow: hidden;
}

.pasos-flujo {
    list-style: none;
    display: flex;
    flex-direction: row;
    width: 100%;
}

.pasos-flujo li {
    flex: 1;
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: flex-start;
    text-align: left;
    gap: 10px;
    padding: 0 12px;
    position: relative;
}

.pasos-flujo li + li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 1px;
    height: 70%;
    background: var(--border-1);
}

.num-paso {
    width: 28px;
    height: 28px;
    fill: var(--accent);
    flex-shrink: 0;
    margin-top: 0.1rem;
}

.pasos-flujo strong {
    display: block;
    font-size: var(--fs-xs);
    color: var(--text-2);
    font-weight: 600;
}

.pasos-flujo p {
    font-size: var(--fs-xs);
    color: var(--text-3);
    line-height: var(--lh-snug);
}

/*  NAV INFERIOR  */
.nav-inferior {
    display: none;
    background: var(--surface-1);
    border-top: 1px solid var(--border-1);
    flex-shrink: 0;
}

.tab-nav {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.2rem;
    color: var(--text-4);
    font-size: 0.6rem;
    font-weight: 500;
    letter-spacing: 0.5px;
    transition: color var(--dur-fast);
    padding: 0.4rem 4px 0.3rem;
    border-top: 2px solid transparent;
}

.tab-nav:hover {
    color: var(--text-2);
}

.tab-nav.activo {
    color: var(--accent);
    border-top-color: var(--accent);
}

.tab-nav svg {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    fill: currentColor;
}

/*  PANEL PACIENTE   */

.panel-cuerpo--paciente {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-4);
}

.fila-paciente {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.fila-paciente label {
    font-size: var(--fs-sm);
    font-weight: 500;
    color: var(--text-3);
    letter-spacing: 0.3px;
}

.fila-paciente select,
.fila-paciente input[type="text"],
.fila-paciente input[type="number"] {
    height: 36px;
    padding: 0 var(--space-3);
    background: var(--surface-input);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    color: var(--text-1);
    font-size: var(--fs-ui);
    font-family: var(--font-sans);
    outline: none;
    width: 100%;
    transition: border-color var(--dur-fast), box-shadow var(--dur-fast);
}

.fila-paciente select:focus,
.fila-paciente input:focus {
    border-color: var(--border-focus);
    box-shadow: 0 0 0 3px var(--focus-ring);
}

#pt-raza::placeholder,
#pt-edad::placeholder {
    color: var(--header-text-muted);
}

#mob-pt-raza::placeholder,
#mob-pt-edad::placeholder {
    color: var(--color-placeholder);
}

.fila-paciente-edad {
    display: flex;
    gap: var(--space-2);
}

.fila-paciente-edad input {
    flex: 1;
}

.fila-paciente-edad select {
    width: 110px;
    flex-shrink: 0;
}

/*  EXAMENES SUBTABS BAR  */
#examenes-subtabs-bar {
    flex-shrink: 0;
    display: flex;
    height: 2.5rem;
    background: var(--surface-2);
    border-bottom: 1px solid var(--border-1);
    overflow-x: auto;
    scrollbar-width: none;
}

.tab-examenes {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 var(--space-3);
    font-size: clamp(13px, 12.6px + 0.09vw, 14px);
    font-weight: 600;
    letter-spacing: var(--tracking-wide);
    text-transform: uppercase;
    color: var(--text-4);
    border-bottom: 2px solid transparent;
    white-space: nowrap;
    transition: color var(--dur-fast), border-color var(--dur-fast);
}

.tab-examenes:hover {
    color: var(--text-2);
}

.tab-examenes.activo {
    color: var(--text-3);
    border-bottom-color: var(--accent);
}

/*  SOLO DESKTOP */
@media (min-width: 1101px) {
    .cabecera-columnas--mobile-only {
        display: none;
    }

    .cabecera-col-btns {
        display: none;
    }

    #panel-paciente,
    #examenes-subtabs-bar {
        display: none;
    }

    .subpanel > .panel-cabecera,
    #panel-flujo > .panel-cabecera {
        cursor: default;
    }

    .subpanel > .panel-cabecera button,
    #panel-flujo > .panel-cabecera button {
        cursor: pointer;
    }

    #panel-hema .subpanel-anim,
    #panel-bioquim .subpanel-anim {
        flex: 1;
        min-height: 0;
        display: flex;
        flex-direction: column;
    }

    #panel-hema .panel-cuerpo,
    #panel-bioquim .panel-cuerpo {
        min-height: 0;
    }
}

/*  RESPONSIVE  */

/* Full HD 1920×1080 */
@media (min-width: 1920px) {
    main {
        grid-template-columns: 1fr 1fr 449px 399px;
    }

    #panel-hema,
    #panel-bioquim,
    #panel-imagenes {
        --fs-xs:   10.9px;
        --fs-sm:   12.5px;
        --fs-ui:   13.1px;
        --fs-base: 13.6px;
    }

    #panel-hema .panel-cuerpo,
    #panel-bioquim .panel-cuerpo {
        padding: 0.4rem 12px;
        overflow-y: auto;
    }

    #panel-hema .cabecera-columnas span:nth-child(2),
    #panel-bioquim .cabecera-columnas span:nth-child(2) {
        width: calc(4.5rem + 1.5rem);
    }

    #panel-hema .grupo-campo,
    #panel-bioquim .grupo-campo {
        margin-bottom: 6px;
    }

    #panel-hema .titulo-grupo,
    #panel-bioquim .titulo-grupo {
        margin-bottom: 0.5rem;
        padding-bottom: 0.1rem;
    }

    #panel-hema .fila-campo,
    #panel-bioquim .fila-campo {
        margin-bottom: 0.2rem;
        gap: 0.4rem;
    }

    #panel-hema .fila-campo input,
    #panel-bioquim .fila-campo input,
    #panel-uri .fila-campo input,
    #panel-endo .fila-campo input {
        padding: 3px 0.4rem;
        width: 3.5rem;
        flex-shrink: 0;
    }

    #panel-hema .fila-campo .unidad,
    #panel-bioquim .fila-campo .unidad,
    #panel-uri .fila-campo .unidad,
    #panel-endo .fila-campo .unidad {
        min-width: 3rem;
    }

    #panel-hema .fila-campo .estado-campo,
    #panel-bioquim .fila-campo .estado-campo,
    #panel-uri .fila-campo .estado-campo,
    #panel-endo .fila-campo .estado-campo {
        width: 5.5rem;
        min-width: 5.5rem;
        flex-shrink: 0;
        text-align: right;
    }

    #panel-uri .fila-campo,
    #panel-endo .fila-campo {
        gap: 0.4rem;
    }

    #panel-bioquim .grupo-campo {
        margin-bottom: 0.2rem;
    }

    #panel-bioquim .fila-campo {
        margin-bottom: 2px;
    }

    #salida-ia {
        font-size: var(--fs-sm);
    }

    .pasos-flujo li {
        padding: 0 20px;
    }

    .cuerpo-flujo {
        margin-top: 0;
        margin-bottom: 0;
        padding-top: 0.5rem;
        padding-bottom: 0rem;
    }
}

@media (max-width: 1100px) {
    header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 0.5rem 1rem;
    }

    #logo {
        margin-right: 0;
    }

    .barra-paciente {
        display: none;
    }

    .acciones-cabecera {
        margin-left: 0;
        align-self: center;
    }

    .acciones-cabecera .boton {
        padding: 6px 12px;
        font-size: var(--fs-sm);
    }

    #examenes-subtabs-bar {
        display: flex;
    }

    #examenes-subtabs-bar[hidden] {
        display: none;
    }

    #panel-hema > .panel-cabecera,
    #panel-bioquim > .panel-cabecera,
    #panel-uri > .panel-cabecera,
    #panel-endo > .panel-cabecera {
        display: none;
    }

    .cabecera-col-label {
        display: none;
    }

    .cabecera-col-btns {
        display: flex;
        gap: 4px;
        margin-left: auto;
    }

    .cabecera-columnas--mobile-only .btn-limpiar-panel {
        margin-left: auto;
    }

    .cabecera-columnas--mobile-only .btn-importar-pdf {
        margin-left: 4px;
    }

    footer {
        padding: 0;
        flex-direction: column;
    }

    #aviso {
        display: none;
    }

    .btn-adjuntar-mob {
        display: flex;
    }

    #aviso-mob {
        display: block;
    }

    #creditos-mob {
        display: flex;
    }

    #creditos {
        display: none;
    }

    .nav-inferior {
        display: flex;
        height: 3.5rem;
        width: 100%;
        border-top: none;
        order: -1;
    }

    main {
        display: flex;
        flex-direction: column;
        background: var(--surface-page);
        gap: 0;
        overflow: hidden;
    }

    .col3-wrapper {
        display: contents;
    }

    main > .panel,
    .col3-wrapper > .panel {
        display: none;
    }

    main > .panel.activo,
    .col3-wrapper > .panel.activo {
        display: flex;
        flex: 1;
        min-height: 0;
        overflow-y: auto;
    }

    main > .panel.activo .subpanel-anim,
    .col3-wrapper > .panel.activo .subpanel-anim {
        overflow: visible;
    }

    #panel-resultados {
        border-left: none;
        border-top: none;
        grid-column: unset;
        min-height: unset;
    }

    .cuerpo-flujo {
        align-items: flex-start;
        overflow-y: auto;
        padding: 1rem 20px;
        margin-top: 0;
    }

    .pasos-flujo {
        flex-direction: column;
        gap: 1rem;
    }

    .pasos-flujo li {
        flex-direction: row;
        text-align: left;
        align-items: flex-start;
        gap: 14px;
        padding: 0;
    }

    .pasos-flujo li + li::before {
        display: none;
    }

    .num-paso {
        width: 1.5rem;
        height: 1.5rem;
        flex-shrink: 0;
        margin-top: 0.1rem;
    }

    .pasos-flujo strong,
    .pasos-flujo p {
        font-size: var(--fs-sm);
    }

    .seccion-clinica textarea {
        flex: 1;
        min-height: 0;
    }

    .cuerpo-clinica {
        flex: 1;
        min-height: 0;
    }

    .seccion-clinica .cuerpo-clinica {
        display: flex;
        flex-direction: column;
    }

    .btn-colapsar-subpanel,
    .btn-colapsar-flujo,
    .btn-colapsar-patrones {
        display: flex;
    }

    .pdf-toast {
        bottom: 5rem;
    }
}

/* Indicador de usuario */

.boton-usuario {
    font-size: var(--fs-sm);
    font-weight: 500;
    padding: 5px 12px;
    min-height: 32px;
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--text-2);
    cursor: pointer;
    max-width: 130px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: background var(--dur-fast), color var(--dur-fast), border-color var(--dur-fast);
}

.boton-usuario:hover {
    background: var(--surface-2);
    color: var(--text-1);
    border-color: var(--border-2);
}


/* Modal overlay  */

.modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    z-index: 100;
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--dur-base);
}

.modal-auth.visible ~ .modal-overlay,
.modal-overlay:has(+ .modal-auth.visible) {
    opacity: 1;
    pointer-events: initial;
}

.modal-overlay.activo {
    opacity: 1;
    pointer-events: initial;
}

/* Modal*/
.modal-auth {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -44%);
    z-index: 101;
    width: min(440px, calc(100vw - 2rem));
    background: var(--surface-1);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-md);
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.18);
    padding: var(--space-6);
    opacity: 0;
    transition: opacity var(--dur-base), transform var(--dur-base);
}

.modal-auth.visible {
    opacity: 1;
    transform: translate(-50%, -50%);
}

.modal-cerrar svg {
    width: 16px;
    height: 16px;
    fill: currentColor;
}

.modal-cerrar {
    position: absolute;
    top: var(--space-3);
    right: var(--space-3);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: none;
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--text-4);
    cursor: pointer;
    transition: background var(--dur-fast), color var(--dur-fast);
}

.modal-cerrar:hover {
    background: var(--surface-2);
    color: var(--text-1);
}

.modal-titulo {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--text-1);
    margin: 0 0 var(--space-4);
}

/*Tabs del modal */

.modal-tabs {
    display: flex;
    gap: 2px;
    margin-bottom: var(--space-4);
    border-bottom: 1px solid var(--border-1);
    padding-bottom: 0;
}

.modal-tab {
    flex: 1;
    padding: var(--space-2) var(--space-3);
    font-size: var(--fs-sm);
    font-weight: 500;
    color: var(--text-4);
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    cursor: pointer;
    transition: color var(--dur-fast), border-color var(--dur-fast);
}

.modal-tab:hover {
    color: var(--text-2);
}

.modal-tab.activo {
    color: var(--accent);
    border-bottom-color: var(--accent);
}

/* Campos del formulario */

.modal-campo {
    display: flex;
    flex-direction: column;
    gap: 5px;
    margin-bottom: var(--space-3);
}

.modal-campo label {
    font-size: var(--fs-sm);
    font-weight: 500;
    color: var(--text-2);
}

.modal-campo input {
    width: 100%;
    box-sizing: border-box;
    padding: 8px 10px;
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    background: var(--surface-input);
    color: var(--text-1);
    font-size: var(--fs-sm);
    font-family: var(--font-sans);
    transition: border-color var(--dur-fast), box-shadow var(--dur-fast);
}

.modal-campo input:focus {
    outline: none;
    border-color: var(--border-focus);
    box-shadow: 0 0 0 3px var(--focus-ring);
}

.modal-campo input.campo-valido {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--focus-ring);
}

.modal-campo input.campo-invalido {
    border-color: var(--alto);
    box-shadow: 0 0 0 3px rgba(184, 55, 44, 0.12);
}

.aviso-legal-texto {
    font-size: var(--fs-sm);
    color: var(--text-3);
    line-height: 1.4;
    margin: 0;
}

.aviso-legal-aceptar {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: var(--space-2);
}

.aviso-legal-aceptar label {
    font-size: var(--fs-sm);
    font-weight: 500;
    color: var(--text-2);
    cursor: pointer;
}

.aviso-legal-aceptar input[type="checkbox"] {
    width: 16px;
    height: 16px;
    min-width: 16px;
    flex-shrink: 0;
    padding: 0;
    border: 1px solid var(--border-1);
    border-radius: 3px;
    accent-color: var(--accent);
    cursor: pointer;
}

.modal-fila-doble {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-3);
}

.modal-error {
    font-size: var(--fs-sm);
    color: var(--alto);
    margin: 0 0 var(--space-3);
    min-height: 1.2em;
}

.modal-submit {
    width: 100%;
    margin-top: var(--space-2);
    padding: 10px;
    font-size: var(--fs-sm);
    font-weight: 600;
    justify-content: center;
}

.boton-primario {
    background: var(--accent);
    color: var(--text-on-accent);
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background var(--dur-fast);
}

.boton-primario:hover {
    background: var(--accent-hover);
}

.boton-primario:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* ═══════════════════════════════════════
   MODAL DE PAPERS
═══════════════════════════════════════ */

.modal-papers {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -44%);
    z-index: 101;
    width: min(720px, calc(100vw - 2rem));
    max-height: calc(100vh - 4rem);
    background: var(--surface-1);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-md);
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.18);
    display: flex;
    flex-direction: column;
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--dur-base), transform var(--dur-base);
}

.modal-papers.visible {
    opacity: 1;
    pointer-events: initial;
    transform: translate(-50%, -50%);
}

.modal-papers-cabecera {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-3);
    padding: var(--space-5) var(--space-5) var(--space-3);
    border-bottom: 1px solid var(--border-1);
    flex-shrink: 0;
}

.modal-papers-cabecera .modal-titulo {
    margin: 0;
}

.papers-consulta-label {
    font-size: 0.78rem;
    color: var(--text-3);
    margin: 4px 0 0;
}

.papers-consulta-label span {
    color: var(--text-accent);
    font-style: italic;
}

.papers-busqueda {
    display: flex;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-5);
    border-bottom: 1px solid var(--border-1);
}

.papers-busqueda-input {
    flex: 1;
    background: var(--surface-input);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    color: var(--text-1);
    font-family: var(--font-sans);
    font-size: var(--fs-sm);
    padding: var(--space-2) var(--space-3);
    outline: none;
    transition: border-color var(--dur-fast), box-shadow var(--dur-fast);
}

.papers-busqueda-input:focus {
    border-color: var(--border-focus);
    box-shadow: 0 0 0 3px var(--focus-ring);
}

.papers-busqueda-btn {
    background: var(--accent);
    border: none;
    border-radius: var(--radius-sm);
    color: var(--text-on-accent);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-2) var(--space-3);
    transition: background var(--dur-fast);
}

.papers-busqueda-btn:hover {
    background: var(--accent-hover);
}

.papers-lista {
    overflow-y: auto;
    flex: 1;
    padding: var(--space-4) var(--space-5);
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    scrollbar-width: thin;
    scrollbar-color: var(--border-2) transparent;
}

.paper-tarjeta {
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    padding: var(--space-3) var(--space-4);
    background: var(--surface-2);
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.paper-meta {
    display: flex;
    gap: var(--space-2);
    align-items: center;
}

.paper-anio {
    font-size: 0.75rem;
    color: var(--text-3);
    background: var(--surface-3);
    border-radius: 4px;
    padding: 1px 6px;
}

.paper-revista {
    font-size: 0.75rem;
    color: var(--text-accent);
    font-style: italic;
}

.paper-pdf-badge {
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--on-accent, #fff);
    background: var(--accent);
    border-radius: 3px;
    padding: 1px 5px;
    text-decoration: none;
    letter-spacing: 0.03em;
}

.paper-titulo {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--text-1);
    margin: 0;
    line-height: 1.4;
}

.paper-titulo a {
    color: var(--text-accent);
    text-decoration: none;
}

.paper-titulo a:hover {
    text-decoration: underline;
}

.paper-autores {
    font-size: 0.78rem;
    color: var(--text-3);
    margin: 0;
}

.paper-resumen {
    font-size: 0.8rem;
    color: var(--text-2);
    margin: 4px 0 0;
    line-height: 1.55;
}

.papers-cargando,
.papers-vacio,
.papers-error {
    text-align: center;
    padding: var(--space-6) 0;
    color: var(--text-3);
    font-size: 0.9rem;
}

.papers-error {
    color: var(--rojo, #e05);
}

.papers-paginacion {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 4px;
    padding: var(--space-3) var(--space-5) var(--space-4);
    border-top: 1px solid var(--border-1);
    flex-shrink: 0;
}

.papers-pag-btn {
    min-width: 2rem;
    height: 2rem;
    padding: 0 var(--space-2);
    border: 1px solid var(--border-1);
    border-radius: var(--radius-sm);
    background: var(--surface-2);
    color: var(--text-2);
    font-size: 0.85rem;
    cursor: pointer;
    transition: background var(--dur-fast), color var(--dur-fast);
}

.papers-pag-btn:hover:not(:disabled):not(.activo) {
    background: var(--surface-3);
    color: var(--text-1);
}

.papers-pag-btn.activo {
    background: var(--accent);
    color: var(--on-accent, #fff);
    border-color: var(--accent);
    font-weight: 600;
}

.papers-pag-btn:disabled {
    opacity: 0.35;
    cursor: not-allowed;
}

@media (max-width: 700px) {
    .modal-papers {
        top: var(--space-3);
        max-height: calc(100svh - var(--space-6));
        transform: translateX(-50%);
    }
    .modal-papers.visible {
        transform: translateX(-50%);
    }
}
