/* =====================================================================
   INGSTELIN / RedControl V29.0.3
   Pulido global de formularios y grillas.
   No altera reglas de negocio ni componentes; corrige composición,
   jerarquía tipográfica, cabeceras y filtros de Radzen.
   ===================================================================== */

/* ---------- Jerarquía tipográfica: menos negrita accidental ---------- */
.rc-grid .rz-grid-table tbody td {
    font-weight: 400 !important;
    line-height: 1.35;
}

.rc-grid .rz-grid-table tbody td strong,
.rc-grid .rz-grid-table tbody td b {
    font-weight: 600 !important;
}

.dialog-grid > label,
.form-grid > label,
.dialog-field-block,
.inv-field > label,
.period-selector label,
.finance-filter label {
    font-weight: 500 !important;
    letter-spacing: 0 !important;
}

.dialog-section-head h3,
.dialog-section-head strong,
.panel-title h2,
.clean-panel-title h2 {
    font-weight: 600 !important;
}

/* ---------- Celdas compuestas: principal y detalle nunca pegados ---------- */
.cell-stack {
    display: grid;
    min-width: 0;
    gap: 2px;
    line-height: 1.2;
}

.cell-primary {
    min-width: 0;
    color: var(--ing-text, var(--rc-text));
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cell-secondary,
.cell-subtext {
    display: block !important;
    min-width: 0;
    margin: 0 !important;
    color: var(--ing-text-2, var(--rc-muted));
    font-size: .78rem;
    font-weight: 400 !important;
    line-height: 1.25;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* También sanea composiciones ya existentes strong + small en celdas. */
.entity-cell > div:last-child,
.account-tree-label,
.line-main {
    min-width: 0;
}

.entity-cell > div:last-child > strong,
.entity-cell > div:last-child > small,
.account-tree-label > strong,
.account-tree-label > small,
.line-main > strong,
.line-main > small {
    display: block;
}

/* ---------- DataGrid: títulos y filtros no compiten por el mismo espacio ---------- */
.rc-grid .rz-grid-table thead > tr > th {
    box-sizing: border-box !important;
    min-width: 86px;
    padding-inline: 11px !important;
    overflow: hidden !important;
}

.rc-grid .rz-grid-table thead > tr > th:has(> .rz-grid-filter-icon) {
    min-width: 118px;
    padding-right: 38px !important;
}

.rc-grid .rz-grid-table thead > tr > th > .rz-column-title,
.rc-grid .rz-grid-table thead > tr > th .rz-column-title-content,
.rc-grid .rz-grid-table thead > tr > th > .rz-column-title > span:first-child {
    min-width: 0 !important;
    max-width: 100% !important;
    white-space: normal !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
    hyphens: none !important;
    line-height: 1.15 !important;
}

.rc-grid .rz-grid-table thead > tr > th > .rz-grid-filter-icon {
    inset-inline-end: 7px !important;
    width: 22px !important;
    min-width: 22px !important;
    height: 22px !important;
    border-radius: 5px !important;
}

/* No partir una sola palabra para hacer caber una columna demasiado angosta.
   En ese caso la grilla debe reservar ancho o permitir desplazamiento. */
.rc-grid .rz-grid-table {
    width: 100%;
    min-width: 980px;
}

.rc-grid .rz-grid-table tbody td {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Números tabulares y alineados: inventario y dinero se leen de un vistazo. */
.inventory-existence-grid .rz-grid-table thead th:nth-child(n+4),
.inventory-existence-grid .rz-grid-table tbody td:nth-child(n+4) {
    text-align: right !important;
    font-variant-numeric: tabular-nums;
}

.inventory-existence-grid .rz-grid-table thead th:nth-child(n+4) .rz-column-title {
    justify-content: flex-end !important;
}

/* ---------- Formularios: controles con ancho consistente ---------- */
.dialog-grid > label,
.form-grid > label,
.inv-field,
.inline-entry-grid > label {
    min-width: 0;
}

.dialog-grid > label > .rz-textbox,
.dialog-grid > label > .rz-textarea,
.dialog-grid > label > .rz-dropdown,
.dialog-grid > label > .rz-numeric,
.dialog-grid > label > .rz-datepicker,
.dialog-grid > label > .rz-autocomplete,
.form-grid > label > .rz-textbox,
.form-grid > label > .rz-textarea,
.form-grid > label > .rz-dropdown,
.form-grid > label > .rz-numeric,
.form-grid > label > .rz-datepicker,
.form-grid > label > .rz-autocomplete,
.inv-field > .rz-textbox,
.inv-field > .rz-textarea,
.inv-field > .rz-dropdown,
.inv-field > .rz-numeric,
.inv-field > .rz-datepicker {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
}

.rz-dropdown-label,
.rz-textbox,
.rz-numeric input,
.rz-datepicker input,
.rz-autocomplete input {
    font-weight: 400 !important;
}

/* Agrupaciones visuales: separadas, no controles pegados. */
.dialog-grid,
.form-grid,
.inline-entry-grid,
.inv-form-grid {
    column-gap: 16px !important;
    row-gap: 12px !important;
}

/* ---------- Responsive ---------- */
@media (max-width: 900px) {
    .rc-grid {
        overflow-x: auto !important;
        overscroll-behavior-inline: contain;
    }

    .rc-grid .rz-grid-table {
        min-width: 880px;
    }
}

@media (max-width: 620px) {
    .dialog-grid,
    .form-grid,
    .inline-entry-grid,
    .inv-form-grid {
        grid-template-columns: 1fr !important;
    }
}

/* ---------- V29.1B.1: composición consistente de cabeceras/resúmenes en diálogos ---------- */
.dialog-section-head > div {
    display: grid !important;
    gap: 3px !important;
    min-width: 0;
}
.dialog-section-head > div > strong,
.dialog-section-head > div > small {
    display: block !important;
    margin: 0 !important;
}
.dialog-section-head > div > small {
    color: var(--ing-text-2, var(--rc-muted)) !important;
    line-height: 1.4 !important;
}
.dialog-summary-row > div {
    display: grid !important;
    gap: 2px !important;
    min-width: 0;
}
.dialog-summary-row > div > small,
.dialog-summary-row > div > span {
    display: block !important;
    margin: 0 !important;
    color: var(--ing-text-2, var(--rc-muted)) !important;
}
.dialog-summary-row > div > strong {
    display: block !important;
    margin: 0 !important;
    line-height: 1.3 !important;
}
.plan-contract-summary {
    gap: 10px 22px !important;
}
.plan-contract-summary > div {
    min-width: 120px;
}
.equipment-change-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.inline-entry-grid.compact-two { grid-template-columns:minmax(0,1fr) auto; }
@media (max-width: 900px) { .equipment-change-grid { grid-template-columns:1fr; } }

/* ---------- V29.1B.1.2: detalle profesional de Orden de Trabajo ---------- */
.ot-detail-dialog { display:grid; gap:14px; }
.ot-detail-hero {
    display:flex; align-items:flex-start; justify-content:space-between; gap:18px;
    padding:4px 2px 2px; min-width:0;
}
.ot-detail-title { min-width:0; }
.ot-detail-kicker,
.ot-context-label {
    display:block; color:var(--ing-text-2,var(--rc-muted)); font-size:.72rem;
    font-weight:600; letter-spacing:.045em; text-transform:uppercase;
}
.ot-detail-title h2 { margin:2px 0 3px; font-size:1.55rem; line-height:1.1; font-weight:650; }
.ot-detail-meta { display:flex; flex-wrap:wrap; gap:7px; color:var(--ing-text-2,var(--rc-muted)); font-size:.83rem; }
.ot-meta-separator { opacity:.55; }
.ot-state-chip {
    flex:0 0 auto; display:inline-flex; align-items:center; min-height:30px; padding:5px 11px;
    border-radius:999px; border:1px solid var(--ing-border,var(--rc-border));
    background:var(--ing-surface-2,var(--rc-surface-2)); font-size:.78rem; font-weight:650;
}
.ot-state-chip.is-success { color:#167a47; background:rgba(32,164,99,.10); border-color:rgba(32,164,99,.20); }
.ot-state-chip.is-warning { color:#a96700; background:rgba(227,153,25,.11); border-color:rgba(227,153,25,.22); }
.ot-state-chip.is-info { color:var(--ing-primary,#0788c9); background:rgba(7,136,201,.10); border-color:rgba(7,136,201,.20); }
.ot-state-chip.is-neutral { color:var(--ing-text-2,var(--rc-muted)); }

.ot-context-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.ot-context-card {
    display:grid; gap:4px; min-width:0; padding:13px 14px;
    border:1px solid var(--ing-border,var(--rc-border)); border-radius:11px;
    background:var(--ing-surface,var(--rc-surface));
}
.ot-context-card strong { min-width:0; font-weight:600; line-height:1.3; overflow-wrap:anywhere; }
.ot-context-card small { color:var(--ing-text-2,var(--rc-muted)); line-height:1.3; }

.ot-section { margin:0 !important; }
.ot-section-head { margin-bottom:12px; }
.ot-date-flow { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0; }
.ot-date-step {
    position:relative; display:grid; gap:2px; min-width:0; padding:5px 14px 3px 20px;
    border-left:1px solid var(--ing-border,var(--rc-border));
}
.ot-date-step:first-child { border-left:0; }
.ot-date-step small { color:var(--ing-text-2,var(--rc-muted)); }
.ot-date-step strong { font-size:.88rem; font-weight:600; }
.ot-date-step > span:last-child { color:var(--ing-text-2,var(--rc-muted)); font-size:.78rem; }
.ot-date-dot {
    position:absolute; left:9px; top:10px; width:6px; height:6px; border-radius:50%;
    background:var(--ing-border,var(--rc-border));
}
.ot-date-step.is-done .ot-date-dot { background:var(--ing-primary,#0788c9); }

.ot-work-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.ot-work-card {
    min-width:0; padding:12px 13px; border-radius:10px;
    background:var(--ing-surface-2,var(--rc-surface-2)); border:1px solid var(--ing-border,var(--rc-border));
}
.ot-work-card-wide { grid-column:1 / -1; }
.ot-work-card.is-muted { background:transparent; }
.ot-work-card p { margin:5px 0 0; line-height:1.45; white-space:pre-wrap; overflow-wrap:anywhere; }

.ot-resource-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.ot-resource-panel { border:1px solid var(--ing-border,var(--rc-border)); border-radius:10px; overflow:hidden; }
.ot-resource-title {
    display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px;
    background:var(--ing-surface-2,var(--rc-surface-2)); border-bottom:1px solid var(--ing-border,var(--rc-border));
}
.ot-resource-title span {
    min-width:24px; height:24px; display:inline-grid; place-items:center; border-radius:999px;
    background:rgba(7,136,201,.10); color:var(--ing-primary,#0788c9); font-size:.75rem; font-weight:650;
}
.ot-resource-row { display:flex; justify-content:space-between; gap:14px; padding:10px 12px; border-top:1px solid var(--ing-border,var(--rc-border)); }
.ot-resource-row:first-of-type { border-top:0; }
.ot-resource-row > div { display:grid; gap:2px; min-width:0; }
.ot-resource-row strong { font-weight:600; overflow-wrap:anywhere; }
.ot-resource-row small { color:var(--ing-text-2,var(--rc-muted)); }
.ot-resource-result { text-align:right; justify-items:end; }

.ot-history { position:relative; display:grid; gap:0; }
.ot-history-item { position:relative; display:grid; grid-template-columns:22px minmax(0,1fr); gap:10px; padding-bottom:14px; }
.ot-history-item:last-child { padding-bottom:0; }
.ot-history-item::before {
    content:""; position:absolute; left:7px; top:17px; bottom:-2px; width:1px;
    background:var(--ing-border,var(--rc-border));
}
.ot-history-item:last-child::before { display:none; }
.ot-history-marker {
    position:relative; z-index:1; width:15px; height:15px; margin-top:5px; border-radius:50%;
    background:var(--ing-surface,var(--rc-surface)); border:4px solid var(--ing-primary,#0788c9);
    box-shadow:0 0 0 2px var(--ing-surface,var(--rc-surface));
}
.ot-history-content {
    min-width:0; padding:11px 12px; border:1px solid var(--ing-border,var(--rc-border));
    border-radius:10px; background:var(--ing-surface,var(--rc-surface));
}
.ot-history-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.ot-history-head > div { display:grid; gap:2px; min-width:0; }
.ot-history-head strong { font-weight:600; }
.ot-history-head small { color:var(--ing-text-2,var(--rc-muted)); }
.ot-transition-chip {
    flex:0 0 auto; max-width:46%; padding:4px 8px; border-radius:999px;
    color:var(--ing-primary,#0788c9); background:rgba(7,136,201,.09); font-size:.72rem; font-weight:600;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.ot-history-details {
    display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 14px; margin-top:10px; padding-top:10px;
    border-top:1px solid var(--ing-border,var(--rc-border));
}
.ot-history-details > div { display:grid; gap:2px; min-width:0; }
.ot-history-details > div.wide { grid-column:1 / -1; }
.ot-history-details span { color:var(--ing-text-2,var(--rc-muted)); font-size:.72rem; font-weight:500; }
.ot-history-details strong { font-size:.84rem; font-weight:500; line-height:1.4; overflow-wrap:anywhere; white-space:pre-wrap; }

@media (max-width:900px) {
    .ot-context-grid, .ot-resource-grid { grid-template-columns:1fr; }
    .ot-date-flow { grid-template-columns:repeat(2,minmax(0,1fr)); row-gap:12px; }
    .ot-date-step:nth-child(3) { border-left:0; }
}
@media (max-width:620px) {
    .ot-detail-hero, .ot-history-head { align-items:flex-start; flex-direction:column; }
    .ot-context-grid, .ot-work-grid, .ot-date-flow, .ot-history-details { grid-template-columns:1fr; }
    .ot-work-card-wide, .ot-history-details > div.wide { grid-column:auto; }
    .ot-date-step { border-left:0; border-top:1px solid var(--ing-border,var(--rc-border)); padding-top:10px; }
    .ot-date-step:first-child { border-top:0; }
    .ot-transition-chip { max-width:100%; }
}


/* ---------- V29.1B.1.3: detalle OT compacto ---------- */
.ot-detail-dialog {
    gap: 8px !important;
}
.ot-detail-hero {
    gap: 12px !important;
    padding: 0 2px !important;
}
.ot-detail-title h2 {
    margin: 1px 0 2px !important;
    font-size: 1.38rem !important;
}
.ot-state-chip {
    min-height: 26px !important;
    padding: 3px 9px !important;
}
.ot-context-grid {
    gap: 7px !important;
}
.ot-context-card {
    gap: 2px !important;
    padding: 8px 10px !important;
    border-radius: 9px !important;
}
.ot-context-card small {
    font-size: .74rem !important;
}
.ot-section {
    padding-top: 9px !important;
    padding-bottom: 9px !important;
}
.ot-section-head {
    margin-bottom: 6px !important;
}
.ot-section-head small {
    font-size: .74rem !important;
}
.ot-date-step {
    gap: 0 !important;
    padding: 2px 10px 1px 17px !important;
}
.ot-date-dot {
    left: 7px !important;
    top: 8px !important;
    width: 5px !important;
    height: 5px !important;
}
.ot-date-step small,
.ot-date-step > span:last-child {
    font-size: .70rem !important;
}
.ot-date-step strong {
    font-size: .80rem !important;
}
.ot-work-grid {
    gap: 7px !important;
}
.ot-work-card {
    padding: 8px 9px !important;
    border-radius: 8px !important;
}
.ot-work-card p {
    margin-top: 3px !important;
    line-height: 1.32 !important;
    font-size: .82rem !important;
}
.ot-resource-grid {
    gap: 7px !important;
}
.ot-resource-title,
.ot-resource-row {
    padding: 7px 9px !important;
}
.ot-history-item {
    grid-template-columns: 16px minmax(0,1fr) !important;
    gap: 7px !important;
    padding-bottom: 8px !important;
}
.ot-history-item::before {
    left: 5px !important;
    top: 13px !important;
}
.ot-history-marker {
    width: 11px !important;
    height: 11px !important;
    margin-top: 5px !important;
    border-width: 3px !important;
}
.ot-history-content {
    padding: 7px 9px !important;
    border-radius: 8px !important;
}
.ot-history-head {
    gap: 8px !important;
}
.ot-history-head small {
    font-size: .70rem !important;
}
.ot-transition-chip {
    padding: 2px 6px !important;
    font-size: .66rem !important;
}
.ot-history-details {
    grid-template-columns: repeat(2,minmax(0,1fr)) !important;
    gap: 5px 12px !important;
    margin-top: 6px !important;
    padding-top: 6px !important;
}
.ot-history-details > div.wide {
    grid-column: auto !important;
}
.ot-history-details span {
    font-size: .67rem !important;
}
.ot-history-details strong {
    font-size: .78rem !important;
    line-height: 1.28 !important;
}
.ot-detail-dialog .dialog-actions {
    margin-top: 0 !important;
    padding-top: 4px !important;
}
@media (max-width: 760px) {
    .ot-work-grid,
    .ot-history-details {
        grid-template-columns: 1fr !important;
    }
}

/* ---------- V29.1B.1.4: detalle OT segmentado por tabs ---------- */
.ot-detail-tabs {
    margin-top: 1px;
}
.ot-detail-tabs .plan-tab {
    min-height: 38px;
}
.ot-detail-tabs .plan-tab span {
    white-space: nowrap;
}
.ot-detail-tab-body {
    min-height: 0;
    max-height: 58vh;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 1px 2px 1px 0;
}
.ot-tab-content {
    display: grid;
    gap: 8px;
}
.ot-tab-content > .dialog-section:first-child,
.ot-tab-content > .ot-context-grid:first-child {
    margin-top: 0 !important;
}
.ot-empty-state {
    margin: 0;
    min-height: 62px;
    display: grid;
    place-items: center;
    text-align: center;
}
.ot-detail-dialog .dialog-actions {
    position: sticky;
    bottom: 0;
    z-index: 2;
    background: var(--ing-surface,var(--rc-surface));
}
@media (max-width: 700px) {
    .ot-detail-tabs {
        overflow-x: auto;
        justify-content: flex-start;
    }
    .ot-detail-tabs .plan-tab {
        flex: 0 0 auto;
    }
    .ot-detail-tab-body {
        max-height: 64vh;
    }
}
