/* GeoSV Input — importación guiada de XLSX/CSV a puntos */
.input-tool-overlay {
  padding: 18px;
  z-index: calc(var(--z-modal) + 30);
}


/* Confirmación de cierre de Input: debe renderizarse por encima del overlay
   fullscreen de la propia herramienta. */
.input-close-confirm-overlay {
  z-index: calc(var(--z-modal) + 90);
}

.input-close-confirm-modal {
  border: 1px solid rgba(250, 92, 0, 0.75);
}

.input-tool-modal {
  width: min(1480px, 97vw);
  height: min(920px, 94vh);
  max-width: 97vw;
  max-height: 94vh;
  border: 1px solid rgba(250, 92, 0, 0.75);
  background: var(--bg-panel);
}

.input-tool-header {
  flex: 0 0 auto;
  padding: 11px 16px;
  border-bottom-color: rgba(250, 92, 0, 0.55);
}

.input-tool-header .modal-title small {
  margin-left: 4px;
  padding-left: 10px;
  border-left: 1px solid var(--border-color);
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 500;
}

.input-tool-steps {
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: repeat(7, minmax(90px, 1fr));
  gap: 1px;
  padding: 8px 12px;
  background: var(--bg-darker);
  border-bottom: 1px solid var(--border-color);
}

.input-step {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-width: 0;
  height: 31px;
  color: var(--text-muted);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.35px;
}

.input-step:not(:last-child)::after {
  content: '';
  position: absolute;
  top: 50%;
  right: -1px;
  width: 18px;
  height: 1px;
  background: var(--border-color);
}

.input-step > span {
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border: 1px solid var(--border-color);
  border-radius: 50%;
  background: var(--bg-panel);
  font-size: 9px;
}

.input-step strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.input-step.active { color: var(--primary-light); }
.input-step.active > span {
  border-color: var(--primary);
  background: rgba(250, 92, 0, 0.17);
  box-shadow: 0 0 0 3px rgba(250, 92, 0, 0.08);
}
.input-step.complete { color: var(--text-secondary); }
.input-step.complete > span {
  color: white;
  border-color: var(--success);
  background: rgba(46, 204, 113, 0.7);
}
.input-step.complete:not(:last-child)::after { background: rgba(46, 204, 113, 0.55); }

.input-tool-body {
  min-height: 0;
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: 315px minmax(0, 1fr);
  overflow: hidden;
}

.input-tool-sidebar {
  min-height: 0;
  overflow-y: auto;
  padding: 12px;
  background: #202b31;
  border-right: 1px solid var(--border-color);
  scrollbar-width: thin;
  scrollbar-color: var(--bg-hover) transparent;
}

.input-card {
  margin-bottom: 10px;
  padding: 11px;
  border: 1px solid #405159;
  border-radius: 8px;
  background: #29373e;
  box-shadow: 0 1px 0 rgba(255,255,255,0.02) inset;
}

.input-card:last-child { margin-bottom: 0; }

.input-card-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  color: var(--text-primary);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.25px;
}

.input-card-title i {
  width: 14px;
  color: var(--primary);
  text-align: center;
}

.input-dropzone {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 104px;
  padding: 12px;
  border: 1px dashed #607d8b;
  border-radius: 7px;
  background: rgba(21, 27, 32, 0.45);
  color: var(--text-secondary);
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease, transform .15s ease;
  text-align: center;
}

.input-dropzone:hover,
.input-dropzone:focus,
.input-dropzone.dragover {
  outline: none;
  border-color: var(--primary);
  background: rgba(250, 92, 0, 0.09);
}
.input-dropzone.dragover { transform: scale(1.01); }
.input-dropzone > i { margin-bottom: 7px; color: var(--primary); font-size: 26px; }
.input-dropzone strong { color: var(--text-primary); font-size: 12px; }
.input-dropzone span { margin-top: 4px; font-size: 10px; }

.input-file-summary {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) 28px;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  padding: 8px;
  border-radius: 6px;
  background: rgba(21, 27, 32, 0.55);
}
.input-file-summary > i { color: #4caf50; font-size: 20px; text-align: center; }
.input-file-summary div { min-width: 0; }
.input-file-summary strong,
.input-file-summary span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.input-file-summary strong { color: var(--text-primary); font-size: 11px; }
.input-file-summary span { margin-top: 2px; color: var(--text-muted); font-size: 9px; }

.input-field-label,
.input-mapping-field > span,
.input-crs-grid label > span {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 5px;
  color: var(--text-secondary);
  font-size: 10px;
  font-weight: 600;
}
.input-mapping-field > span i { width: 12px; color: var(--text-muted); }
.input-mapping-field > span b { color: var(--primary); }

.input-select,
.input-text {
  width: 100%;
  min-width: 0;
  height: 34px;
  padding: 0 9px;
  color: var(--text-primary);
  background: var(--bg-dark);
  border: 1px solid #51636b;
  border-radius: 6px;
  font: inherit;
  font-size: 11px;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.input-select:focus,
.input-text:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 2px rgba(250, 92, 0, 0.12);
}
.input-select:disabled { opacity: .45; }

.input-field-hint {
  margin-top: 6px;
  color: var(--text-muted);
  font-size: 9px;
  line-height: 1.4;
}

.input-instruction {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px;
  border-radius: 6px;
  background: rgba(52, 152, 219, 0.09);
  color: var(--text-secondary);
  font-size: 10px;
  line-height: 1.42;
}
.input-instruction i { margin-top: 1px; color: var(--info); }
.input-selected-value {
  margin-top: 8px;
  padding: 7px 8px;
  border: 1px solid #405159;
  border-radius: 6px;
  color: var(--text-muted);
  font-size: 10px;
  text-align: center;
}
.input-selected-value i { margin-right: 5px; color: var(--success); }

.input-mapping-field { display: block; margin-bottom: 8px; }
.input-swap-btn { width: 100%; margin-top: 1px; padding: 7px 10px; font-size: 10px; }

.input-crs-grid {
  display: grid;
  grid-template-columns: 1.25fr .75fr .75fr;
  gap: 7px;
}

.input-validation-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
}
.input-validation-stats > div {
  padding: 7px 4px;
  border: 1px solid #405159;
  border-radius: 6px;
  text-align: center;
  background: rgba(21,27,32,.45);
}
.input-validation-stats strong,
.input-validation-stats span { display: block; }
.input-validation-stats strong { font-size: 16px; }
.input-validation-stats span { margin-top: 2px; color: var(--text-muted); font-size: 8px; text-transform: uppercase; }
.input-validation-stats .valid strong { color: var(--success); }
.input-validation-stats .warning strong { color: var(--warning); }
.input-validation-stats .invalid strong { color: var(--danger); }
.input-validation-message {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin-top: 7px;
  padding: 7px;
  border-radius: 6px;
  font-size: 9px;
  line-height: 1.4;
}
.input-validation-message.valid { color: #a9e8c3; background: rgba(46,204,113,.09); }
.input-validation-message.warning { color: #ffd28a; background: rgba(243,156,18,.09); }
.input-validation-message.invalid { color: #ffaaa1; background: rgba(231,76,60,.09); }

.input-output-label { margin-top: 9px; }
.input-inline-error { margin-top: 5px; color: #ff8f86; font-size: 9px; line-height: 1.3; }
.input-format-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 5px; }
.input-format-option { position: relative; cursor: pointer; }
.input-format-option input { position: absolute; opacity: 0; pointer-events: none; }
.input-format-option span {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 31px;
  padding: 0 8px;
  border: 1px solid #4c5e67;
  border-radius: 6px;
  color: var(--text-secondary);
  background: rgba(21,27,32,.45);
  font-size: 10px;
  transition: .15s ease;
}
.input-format-option span i { width: 13px; color: var(--text-muted); text-align: center; }
.input-format-option input:checked + span {
  border-color: var(--primary);
  color: white;
  background: rgba(250,92,0,.16);
}
.input-format-option input:checked + span i { color: var(--primary-light); }

.input-tool-workspace {
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  background: var(--bg-darker);
}

.input-workspace-tabs {
  flex: 0 0 42px;
  display: flex;
  align-items: stretch;
  gap: 2px;
  padding: 0 10px;
  border-bottom: 1px solid var(--border-color);
  background: var(--bg-dark);
}
.input-workspace-tab {
  min-width: 118px;
  padding: 0 13px;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--text-secondary);
  background: transparent;
  font: inherit;
  font-size: 11px;
  cursor: pointer;
}
.input-workspace-tab i { margin-right: 6px; color: var(--text-muted); }
.input-workspace-tab:hover:not(:disabled) { color: var(--text-primary); background: rgba(255,255,255,.03); }
.input-workspace-tab.active { color: var(--primary-light); border-bottom-color: var(--primary); }
.input-workspace-tab.active i { color: var(--primary); }
.input-workspace-tab:disabled { opacity: .35; cursor: not-allowed; }
.input-workspace-meta {
  min-width: 0;
  margin-left: auto;
  align-self: center;
  overflow: hidden;
  color: var(--text-muted);
  font-size: 10px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.input-workspace-pane { display: none; min-height: 0; flex: 1; position: relative; }
.input-workspace-pane.active { display: flex; flex-direction: column; }

.input-grid-toolbar {
  flex: 0 0 37px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0 10px;
  border-bottom: 1px solid #334249;
  background: #1b2429;
}
.input-grid-status { color: var(--text-secondary); font-size: 10px; }
.input-grid-pagination { display: flex; align-items: center; gap: 4px; }
.input-grid-pagination .btn-icon { color: var(--text-secondary); }
.input-grid-pagination span { min-width: 52px; color: var(--text-muted); font-size: 9px; text-align: center; }

.input-table-empty {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 30px;
  color: var(--text-muted);
  text-align: center;
}
.input-empty-icon {
  display: grid;
  place-items: center;
  width: 72px;
  height: 72px;
  margin-bottom: 14px;
  border: 1px dashed #425159;
  border-radius: 18px;
  background: rgba(38,50,56,.45);
  color: #4f6a75;
  font-size: 30px;
}
.input-table-empty strong { color: var(--text-secondary); font-size: 13px; }
.input-table-empty span { max-width: 390px; margin-top: 6px; font-size: 10px; line-height: 1.5; }

.input-table-wrap {
  min-height: 0;
  flex: 1;
  overflow: auto;
  scrollbar-width: thin;
  scrollbar-color: #4b5e67 #1a2227;
}
.input-data-table {
  min-width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
  color: var(--text-primary);
  font-size: 10px;
}
.input-data-table th,
.input-data-table td {
  width: 150px;
  min-width: 150px;
  max-width: 150px;
  height: 29px;
  padding: 5px 7px;
  overflow: hidden;
  border-right: 1px solid #35444b;
  border-bottom: 1px solid #35444b;
  background: #253138;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.input-data-table thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  height: 27px;
  color: var(--text-muted);
  background: #1b252a;
  font-size: 9px;
  font-weight: 600;
  text-align: center;
}
.input-data-table thead th[data-col] { cursor: context-menu; user-select: none; }
.input-data-table thead th[data-col]:hover { color: var(--primary-light); background: #243238; }
.input-data-table .input-row-corner,
.input-data-table .input-row-number {
  position: sticky;
  left: 0;
  z-index: 2;
  width: 54px;
  min-width: 54px;
  max-width: 54px;
  color: var(--text-muted);
  background: #1b252a;
  text-align: center;
}
.input-data-table .input-row-corner { z-index: 5; }
.input-data-table .input-row-number { cursor: pointer; }
.input-data-table .input-row-number:hover { color: var(--primary-light); background: rgba(250,92,0,.13); }
.input-data-table .input-row-number.selected { color: white; background: var(--primary-dark); }
.input-data-table .input-row-number i { margin-left: 4px; font-size: 8px; }
.input-data-table tr.input-row-valid .input-row-number i { color: var(--success); }
.input-data-table tr.input-row-warning .input-row-number i { color: var(--warning); }
.input-data-table tr.input-row-invalid .input-row-number i { color: var(--danger); }
.input-data-table tr.input-header-row td { color: #fff; background: rgba(250,92,0,.17); font-weight: 700; }
.input-data-table tr.input-row-warning td { background-color: rgba(243,156,18,.045); }
.input-data-table tr.input-row-invalid td { background-color: rgba(231,76,60,.065); }
.input-data-table td[contenteditable="true"] { cursor: text; }
.input-data-table td[contenteditable="true"]:focus {
  position: relative;
  z-index: 6;
  outline: 2px solid var(--primary);
  background: #34444b;
  overflow: visible;
  white-space: normal;
}
.input-data-table .mapped-east { box-shadow: inset 0 3px 0 #29b6f6; }
.input-data-table .mapped-north { box-shadow: inset 0 3px 0 #66bb6a; }
.input-data-table .mapped-name { box-shadow: inset 0 3px 0 #ffb74d; }
.input-data-table .mapped-altitude { box-shadow: inset 0 3px 0 #ab47bc; }

.input-sheet-tabs {
  flex: 0 0 38px;
  display: flex;
  align-items: stretch;
  gap: 2px;
  min-width: 0;
  padding: 4px 8px 0;
  overflow-x: auto;
  overflow-y: hidden;
  border-top: 1px solid #3b4a51;
  background: #1b2429;
  scrollbar-width: thin;
  scrollbar-color: #4b5e67 transparent;
}
.input-sheet-tab {
  position: relative;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 230px;
  height: 33px;
  padding: 0 13px;
  overflow: hidden;
  border: 1px solid #3d4d54;
  border-bottom: 0;
  border-radius: 6px 6px 0 0;
  color: var(--text-muted);
  background: #202b31;
  font: inherit;
  font-size: 10px;
  cursor: pointer;
  white-space: nowrap;
}
.input-sheet-tab i { color: #66808b; font-size: 9px; }
.input-sheet-tab span { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.input-sheet-tab:hover { color: var(--text-primary); background: #29373e; }
.input-sheet-tab.active {
  z-index: 1;
  color: #fff;
  border-color: rgba(250,92,0,.72);
  background: #29373e;
  box-shadow: inset 0 2px 0 var(--primary);
}
.input-sheet-tab.active i { color: var(--primary-light); }

.input-column-menu {
  position: fixed;
  z-index: calc(var(--z-modal) + 70);
  width: 218px;
  padding: 6px;
  border: 1px solid rgba(250,92,0,.68);
  border-radius: 8px;
  background: #202b31;
  box-shadow: 0 14px 34px rgba(0,0,0,.48);
}
.input-column-menu-title {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  margin-bottom: 5px;
  padding: 7px 8px 9px;
  border-bottom: 1px solid #3d4d54;
  color: var(--text-secondary);
  font-size: 10px;
}
.input-column-menu-title strong {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  min-width: 24px;
  height: 22px;
  border-radius: 5px;
  color: var(--primary-light);
  background: rgba(250,92,0,.14);
}
.input-column-menu-title span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.input-column-menu button {
  display: grid;
  grid-template-columns: 10px minmax(0,1fr) 14px;
  align-items: center;
  gap: 8px;
  width: 100%;
  min-height: 33px;
  padding: 0 8px;
  border: 0;
  border-radius: 5px;
  color: var(--text-secondary);
  background: transparent;
  font: inherit;
  font-size: 10px;
  text-align: left;
  cursor: pointer;
}
.input-column-menu button:hover,
.input-column-menu button:focus-visible {
  outline: none;
  color: #fff;
  background: rgba(255,255,255,.06);
}
.input-column-menu button > i { visibility: hidden; color: var(--success); font-size: 9px; text-align: center; }
.input-column-menu button.active { color: #fff; background: rgba(250,92,0,.10); }
.input-column-menu button.active > i { visibility: visible; }
.input-role-dot { width: 8px; height: 8px; border-radius: 50%; }
.input-role-dot.east { background: #29b6f6; }
.input-role-dot.north { background: #66bb6a; }
.input-role-dot.name { background: #ffb74d; }
.input-role-dot.altitude { background: #ab47bc; }

.input-preview-map { position: absolute; inset: 0; background: #172126; }
.input-map-overlay {
  position: absolute;
  z-index: 500;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  max-width: calc(100% - 24px);
  padding: 8px 12px;
  border: 1px solid #51636b;
  border-radius: 7px;
  color: var(--text-secondary);
  background: rgba(30,39,46,.94);
  box-shadow: var(--shadow-md);
  font-size: 10px;
  text-align: center;
}
.input-map-overlay.compact { top: auto; bottom: 12px; }

.input-tool-footer {
  flex: 0 0 auto;
  min-height: 58px;
  padding: 10px 14px;
  justify-content: space-between;
  border-top-color: rgba(250, 92, 0, 0.38);
}
.input-footer-status { min-width: 0; overflow: hidden; color: var(--text-muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.input-footer-status i { margin-right: 5px; color: var(--success); }
.input-footer-actions { display: flex; align-items: center; gap: 8px; }
.input-tool-footer .btn { min-height: 34px; padding: 7px 12px; font-size: 11px; }
.input-busy .input-tool-body { pointer-events: none; opacity: .78; }

@media (max-width: 980px) {
  .input-tool-overlay { padding: 6px; }
  .input-tool-modal { width: 99vw; height: 97vh; max-width: 99vw; max-height: 97vh; }
  .input-tool-body { grid-template-columns: 270px minmax(0, 1fr); }
  .input-tool-steps { grid-template-columns: repeat(7, 1fr); padding-inline: 4px; }
  .input-step strong { display: none; }
  .input-step:not(:last-child)::after { width: 8px; }
}

@media (max-width: 720px) {
  .input-tool-modal { height: 98vh; }
  .input-tool-header .modal-title small { display: none; }
  .input-tool-body { display: flex; flex-direction: column; overflow-y: auto; }
  .input-tool-sidebar { flex: 0 0 auto; max-height: 42vh; border-right: 0; border-bottom: 1px solid var(--border-color); }
  .input-tool-workspace { min-height: 44vh; flex: 1 0 44vh; }
  .input-workspace-meta { display: none; }
  .input-sheet-tab { max-width: 170px; padding-inline: 10px; }
  .input-tool-footer { align-items: stretch; flex-direction: column; }
  .input-footer-actions { width: 100%; display: grid; grid-template-columns: repeat(2, 1fr); }
  .input-footer-status { text-align: center; }
}
