/* Estándar APEX compartido para formularios y listas de valores. */
:root {
    --hub-form-background: #f9f9f9;
    --hub-form-text: #202020;
    --hub-form-label: #262626;
    --hub-form-border: #dfdfdf;
    --hub-form-focus: #056ac8;
}
.dark {
    --hub-form-background: #182a3b;
    --hub-form-text: #e7eef7;
    --hub-form-label: #e7eef7;
    --hub-form-border: #486077;
    --hub-form-focus: #9fc4ff;
}
html body [data-hub-apex-control][data-flux-control],
html body [data-hub-apex-field] [data-hub-apex-control],
html body input[data-hub-apex-control],
html body select[data-hub-apex-control],
html body textarea[data-hub-apex-control] {
    min-inline-size: 0;
    min-block-size: 3rem;
    border: 1px solid var(--hub-form-border);
    border-radius: 2px;
    background-color: var(--hub-form-background);
    color: var(--hub-form-text);
    padding-block: .75rem;
    font-family: system-ui, sans-serif;
    font-size: .875rem;
    line-height: 1.25rem;
    box-shadow: none;
}
html body [data-hub-apex-field] {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    align-content: start;
    gap: .3rem;
    min-inline-size: 0;
}
html body [data-hub-apex-field] > * { order: 1; }
html body [data-hub-apex-field] > :is([data-flux-description], [data-flux-error]) { order: 2; margin-block: .2rem 0; }
/* Cada campo conserva su motivo de rechazo visible y accesible. */
html body .hub-depositos-ui :is([data-flux-error], p[role="alert"]) { display: block; position: static; width: auto; height: auto; margin: .3rem 0 0; padding: 0; overflow: visible; clip-path: none; white-space: normal; border: 0; }
html body [data-hub-apex-field] [data-hub-apex-label] {
    position: absolute;
    z-index: 2;
    top: .25rem;
    left: .5rem;
    max-inline-size: calc(100% - 1rem);
    margin: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--hub-form-label);
    opacity: 1;
    font-family: system-ui, sans-serif;
    font-size: .6875rem;
    font-weight: 600;
    line-height: 1.25rem;
    transition: top .12s ease, font-size .12s ease;
}
html body [data-hub-apex-field] [data-hub-apex-control] { padding-block: 1.5rem .25rem; }
html body [data-hub-apex-field] :is(input, select, .hub-lov-trigger)[data-hub-apex-control] { block-size: 3rem; }
html body [data-hub-apex-field] textarea[data-hub-apex-control] { min-block-size: 6rem; block-size: auto; }
/* El título mantiene su tamaño y posición tanto con datos como sin ellos. */
html body [data-hub-apex-field]:has([required], [aria-required="true"])::before {
    content: '';
    position: absolute;
    z-index: 3;
    left: 0;
    top: 0;
    border-top: 6px solid #c62828;
    border-right: 6px solid transparent;
    pointer-events: none;
}
html body .hub-depositos-ui [data-hub-apex-field]::after,
html body .hub-depositos-ui [data-hub-apex-field] > [data-flux-input]::after,
html body .hub-depositos-ui .hub-lov-trigger[data-hub-apex-control]::after { content: none; }
html body [data-hub-apex-control]:focus,
html body .hub-lov-trigger[data-hub-apex-control]:focus-visible {
    border-color: var(--hub-form-focus);
    outline: 1px solid var(--hub-form-focus);
    outline-offset: 0;
    box-shadow: none;
}
html body [data-hub-apex-control]:is(:disabled, [readonly]),
html body [data-hub-apex-field] [data-hub-apex-control]:is(:disabled, [readonly]) { background-color: #fff; color: #505050; opacity: 1; }
html body [data-hub-apex-control][aria-invalid="true"] { border-color: #c62828; }
html body .hub-lov-trigger[data-hub-apex-control] { position: relative; padding-inline: .5rem 2rem; }
html body .hub-lov-trigger[data-hub-apex-control] > svg {
    position: absolute;
    top: 0;
    right: 0;
    inline-size: 2rem;
    block-size: 100%;
    padding: 1rem .5rem;
    border-left: 1px solid var(--hub-form-border);
    border-radius: 0 2px 2px 0;
    background-color: var(--hub-form-background);
}
html body .hub-lov-trigger[data-hub-apex-control]:disabled > svg { background-color: #fff; }
html body .hub-lov-field[data-hub-apex-field] [data-hub-apex-label] { max-inline-size: calc(100% - 2.5rem); }
html body .hub-lov-value--empty { visibility: hidden; }
/* La capa modal nativa no queda recortada por el transform/overflow de Flux. */
html body dialog.hub-lov-overlay { margin: 0; border: 0; max-inline-size: none !important; max-width: none; max-height: none; width: 100dvw; height: 100dvh; transform: none; box-sizing: border-box; }
html body dialog.hub-lov-overlay:not([open]) { display: none; }
html body dialog.hub-lov-overlay::backdrop { background: transparent; }
html:has(dialog.hub-lov-overlay[open]) { overflow: hidden; }
html body .hub-lov-dialog--localidad { width: min(40rem, calc(100vw - 2rem)); }
html body .hub-lov-dialog--localidad .hub-lov-list button { white-space: normal; overflow-wrap: anywhere; }

.hub-detail-sections { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; align-items: start; }
.hub-detail-column { display: grid; gap: 1rem; min-width: 0; align-content: start; }
.hub-send-columns { display: grid; grid-template-columns: minmax(0, 1fr); gap: .75rem; align-items: start; }
@media (min-width: 1024px) { .hub-send-columns { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.hub-confirm-columns, .hub-deposit-detail-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; align-items: start; }
.hub-deposit-detail-content { display: contents; }
.hub-deposit-detail-content > div { grid-column: 1 / -1; }
.hub-deposit-detail-grid .hub-deposit-panel { grid-column: auto; min-width: 0; }
.hub-deposit-panel--summary { order: 1; }
.hub-deposit-panel--history { order: 2; }
.hub-deposit-panel--documents { order: 3; }
.hub-deposit-panel--matrix { order: 4; }
@media (min-width: 1024px) { .hub-confirm-columns, .hub-deposit-detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.hub-detail-section { min-width: 0; padding: .75rem; border: 1px solid #dbe3ee; border-radius: 3px; background: #fff; }
.hub-detail-section > legend { padding-inline: .35rem; color: #102d48; font-size: .875rem; font-weight: 600; }
.hub-detail-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: .75rem; }
.hub-detail-wide { min-width: 0; }
@media (min-width: 640px) { .hub-detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .hub-detail-wide { grid-column: 1 / -1; } }
@media (min-width: 1024px) { .hub-detail-sections { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .hub-detail-grid--three { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
html body .hub-lov-dialog .hub-lov-search[data-hub-apex-control] { min-block-size: 2rem; block-size: 2rem; padding: .25rem .5rem; }
html body [data-hub-apex-label-row] { position: absolute; z-index: 2; inset: .25rem .5rem auto; gap: .5rem; }
html body [data-hub-apex-label-row] [data-hub-apex-label] { position: static; max-inline-size: 50%; }
html body [data-hub-apex-label-row] a { font-size: .6875rem; line-height: 1.25rem; }

/* Disposición y colores de la solicitud. */
.hub-request-letter { padding-block-start: .5rem; }
.hub-request-fields { align-items: start; }
.hub-identification-fields { grid-template-columns: calc(9.5rem + .5cm) minmax(0, 1fr); }
.hub-request-cell--letter { display: block; }
.hub-request-cell--letter > [data-flux-field] { max-inline-size: 18rem; }
.hub-request-cell--project > [data-flux-modal-trigger] { display: block; margin-block-start: .4rem; }
.hub-request-cell--project > [data-flux-modal-trigger] button { padding-inline: 0; font-size: .75rem; }
.hub-wizard-step.is-current { isolation: isolate; }
.hub-wizard-step__current-frame { position: absolute; z-index: -1; inset: -.3rem .6rem -.3rem -.3rem; border: 1px solid #bed0ed; border-radius: 6px; background: #edf3fb; pointer-events: none; }
.hub-wizard-step .hub-wizard-step__label { color: #202020; }
.hub-wizard-step:not(:last-child)::before { background: var(--color-accent, #174a9a); }
.hub-wizard-step .hub-wizard-step__marker { border-color: var(--color-accent, #174a9a); color: var(--color-accent, #174a9a); }
.hub-wizard-step.is-current .hub-wizard-step__marker { background: var(--color-accent, #174a9a); border-color: var(--color-accent, #174a9a); color: #fff; }
.hub-wizard-step.is-current .hub-wizard-step__marker { box-shadow: 0 0 0 2px #fff, 0 0 0 3px var(--color-accent, #174a9a); }
.hub-wizard-step.is-complete .hub-wizard-step__marker { background: #42765c; border-color: #42765c; color: #fff; }
.hub-wizard-step.is-complete::before { background: #42765c; }
.hub-wizard-step.is-current.is-complete .hub-wizard-step__marker { box-shadow: 0 0 0 2px #fff, 0 0 0 3px var(--color-accent, #174a9a); }
.dark .hub-wizard-step__current-frame { background: #213d60; border-color: #759acf; }
.dark .hub-wizard-step .hub-wizard-step__label { color: #e7eef7; }
.hub-origin-fields { display: grid; grid-template-columns: minmax(0, 20rem) minmax(0, 1fr); max-inline-size: 68.75rem; gap: .75rem; align-items: start; }
@media (max-width: 639px) { .hub-origin-fields { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 639px) { .hub-request-meta { flex-wrap: wrap; } .hub-request-meta > :first-child { flex-shrink: 0; } }
.hub-request-meta__label { color: #406082; }
.hub-request-meta__number { color: #174a9a; }
html body .hub-request-meta button { color: #315a84; }
html body .hub-draft-status { color: #245380; background: #eaf1fa; border-color: #cfddf0; }
.dark .hub-request-meta__label, .dark .hub-request-meta__number { color: #9fc4ff; }
.dark .hub-request-meta button { color: #b7d4f5; }
.dark .hub-draft-status { color: #c7dfff; background: #213d60; }
html body [data-hub-primary-button] {
    display: flex;
    inline-size: fit-content;
    max-inline-size: 100%;
    margin-inline-start: auto;
    align-self: flex-end;
    justify-self: end;
}
@media (prefers-reduced-motion: reduce) { [data-hub-apex-label] { transition: none; } }

/* Conversación documental: cabecera compacta, burbujas y composición accesible. */
.hub-upload-rejection { display: grid; grid-template-columns: max-content minmax(0, 1fr); align-items: baseline; gap: .25rem .6rem; margin-top: .5rem; color: #b91c1c; font-size: .75rem; line-height: 1.5; }
.hub-upload-rejection strong { font-weight: 600; white-space: nowrap; }
.hub-upload-rejection > span { min-width: 0; overflow-wrap: anywhere; }
html body [data-hub-floating-notice] { top: var(--hub-floating-notice-top, 6rem); background-color: #fff9ed; }
html body [data-hub-floating-notice].border-error\/50 { background-color: #fff3f3; }
.hub-wizard-step button.hub-wizard-step__marker { cursor: pointer; }
.hub-wizard-step button.hub-wizard-step__marker:focus-visible { outline: 2px solid var(--color-accent, #174a9a); outline-offset: 4px; }
.hub-wizard-step button.hub-wizard-step__marker:disabled { cursor: wait; }
html body .hub-doc-chat-modal { width: min(42rem, calc(100vw - 2rem)); max-width: min(42rem, calc(100vw - 2rem)); min-width: 0; padding: 0; overflow: hidden; border-radius: 12px; }
.hub-doc-chat { display: flex; flex-direction: column; height: min(38rem, calc(100dvh - 2rem)); color: #202b36; background: #fff; }
.hub-doc-chat-heading { display: flex; align-items: center; gap: .75rem; padding: 1rem; background: #102d48; color: #fff; }
.hub-doc-chat-avatar { display: grid; place-items: center; flex-shrink: 0; width: 2.5rem; height: 2.5rem; border-radius: 50%; background: #ffffff20; }
.hub-doc-chat-heading-text { flex: 1; min-width: 0; }
html body .hub-doc-chat-heading .hub-doc-chat-title { margin: 0; color: #fff; font-size: 1rem; font-weight: 700; line-height: 1.4; }
.hub-doc-chat-heading-text > p { margin-top: .15rem; color: #d4e2ef; font-size: .75rem; }
.hub-doc-chat-close { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; color: #fff; cursor: pointer; }
.hub-doc-chat-close:hover { background: #ffffff20; }
.hub-doc-chat-context { padding: .7rem 1rem; border-bottom: 1px solid #dbe5ee; color: #174a9a; background: #f8fbfe; font-size: .75rem; font-weight: 600; }
.hub-doc-chat-context > span { display: block; margin-top: .15rem; color: #526375; font-weight: 400; }
.hub-doc-chat-log { flex: 1; min-height: 5rem; display: flex; flex-direction: column; gap: .75rem; overflow-y: auto; overscroll-behavior: contain; padding: 1rem; background-color: #eef3f7; background-image: radial-gradient(#b8cbd540 .7px, transparent .7px); background-size: 14px 14px; }
.hub-doc-chat-message { flex-shrink: 0; width: fit-content; max-width: 88%; padding: .75rem .9rem; border-radius: 12px; font-size: .875rem; line-height: 1.5; box-shadow: 0 1px 3px #102d480d; }
.hub-doc-chat-message--assistant { align-self: flex-start; border: 1px solid #dee7ee; border-top-left-radius: 3px; background: #fff; }
.hub-doc-chat-message--user { align-self: flex-end; border-top-right-radius: 3px; background: #174a9a; color: #fff; }
.hub-doc-chat-author { display: block; margin-bottom: .3rem; color: #315a84; font-size: .6875rem; font-weight: 700; }
.hub-doc-chat-message--user .hub-doc-chat-author { color: #dce9fc; }
.hub-doc-chat-message p { white-space: pre-line; overflow-wrap: anywhere; }
.hub-doc-chat-typing { align-self: flex-start; flex-shrink: 0; padding: .5rem .75rem; border-radius: 10px; background: #fff; color: #526375; font-size: .75rem; }
.hub-doc-chat-typing > span { margin-inline-end: .4rem; color: #174a9a; letter-spacing: .12em; }
.hub-doc-chat-footer { flex-shrink: 0; padding: .8rem 1rem; border-top: 1px solid #dbe5ee; background: #fff; }
.hub-doc-chat-suggestions { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .75rem; }
.hub-doc-chat-suggestions button { min-height: 2rem; padding: .3rem .65rem; border: 1px solid #cfdeed; border-radius: 1rem; background: #f8fbfe; color: #174a9a; font-size: .75rem; cursor: pointer; }
.hub-doc-chat-suggestions button:hover { background: #eaf2fb; }
.hub-doc-chat-compose { display: flex; align-items: center; gap: .6rem; }
.hub-doc-chat-compose input { flex: 1; width: 0; padding-inline: .75rem; }
.hub-doc-chat-send { display: grid !important; place-items: center; flex-shrink: 0; min-width: 2.5rem; height: 2.5rem; padding: .5rem; border-radius: 50%; background: #174a9a; cursor: pointer; }
.hub-doc-chat-send:disabled { opacity: .5; cursor: wait; }
.hub-doc-chat-hint { margin-top: .45rem; color: #526375; font-size: .6875rem; }
.hub-doc-chat :is(button, input):focus-visible { outline: 2px solid #056ac8; outline-offset: 2px; }
@media (max-width: 639px) { .hub-doc-chat-message { max-width: 94%; } .hub-doc-chat-heading, .hub-doc-chat-footer { padding: .75rem; } }
