:root {
  color-scheme: light;
  --bg: #eef7f4;
  --surface: #ffffff;
  --surface-2: #e7f3ee;
  --ink: #10251f;
  --muted: #5d6f69;
  --line: #cfe0d9;
  --brand: #047857;
  --brand-2: #10b981;
  --accent: #f59e0b;
  --warn: #b86b00;
  --danger: #b42318;
  --ok: #0f9f6e;
  --info: #2563a8;
  --shadow: 0 18px 42px rgba(10, 54, 42, 0.13);
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  min-height: 100vh;
  background: var(--bg);
  color: var(--ink);
  font-family: Inter, "Segoe UI", system-ui, -apple-system, sans-serif;
  letter-spacing: 0;
}

.auth-gate {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: grid;
  place-items: center;
  padding: 24px;
  background: linear-gradient(135deg, #173925, #f5f7f2 58%);
}

.auth-gate.hidden {
  display: none;
}

.auth-card {
  width: min(560px, 100%);
  display: grid;
  gap: 18px;
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.22);
}

.auth-brand {
  color: var(--ink);
}

.auth-brand span {
  color: var(--muted);
}

.app-shell.locked {
  display: none !important;
  filter: blur(3px);
  pointer-events: none;
  user-select: none;
}

body.auth-locked {
  overflow: hidden;
}

/* Supervisor: Gantt compacta, filtros plegables y ordenes con jerarquia operativa. */
#manager.active-view > .panel {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: hidden;
  padding: 10px;
}

/* Informaticos */
.informatics-module {
  display: grid;
  gap: 12px;
  min-width: 0;
}

.informatics-toolbar {
  display: grid;
  gap: 12px;
  padding: 14px 16px;
}

.informatics-toolbar-heading,
.informatics-toolbar-actions,
.informatics-filters,
.informatics-week-navigation {
  display: flex;
  align-items: center;
}

.informatics-toolbar-heading {
  justify-content: space-between;
  gap: 16px;
  border-bottom: 1px solid #d9e7e0;
  padding-bottom: 10px;
}

.informatics-toolbar-heading h2 {
  margin: 1px 0 0;
  color: #173f34;
  font-size: 20px;
}

.informatics-toolbar-actions {
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}

.informatics-filters {
  justify-content: flex-start;
  gap: 10px;
  flex-wrap: wrap;
}

.informatics-filters > label,
.informatics-week-navigation label {
  display: grid;
  gap: 4px;
  color: #52675f;
  font-size: 11px;
  font-weight: 700;
}

.informatics-filters select,
.informatics-filters input,
.informatics-staff-add input {
  min-height: 38px;
  border: 1px solid #c9ddd4;
  border-radius: 6px;
  background: #fff;
  color: #173f34;
  padding: 7px 10px;
  font: inherit;
}

.informatics-filters select {
  min-width: 180px;
}

.informatics-week-navigation {
  gap: 6px;
  margin-right: auto;
}

.informatics-week-navigation .icon-action {
  width: 38px;
  height: 38px;
  padding: 0;
  font-size: 22px;
}

.informatics-kpis {
  display: grid;
  grid-template-columns: minmax(190px, 1.5fr) repeat(4, minmax(130px, 1fr));
  gap: 8px;
}

.informatics-kpis > div {
  min-width: 0;
  border: 1px solid #d6e6de;
  border-left: 4px solid #178064;
  border-radius: 7px;
  background: #fff;
  padding: 10px 12px;
}

.informatics-kpis > div.is-pending { border-left-color: #d97706; }
.informatics-kpis > div.is-resolved { border-left-color: #2563a8; }

.informatics-kpis span,
.informatics-kpis strong {
  display: block;
  min-width: 0;
  overflow-wrap: anywhere;
}

.informatics-kpis span {
  margin-bottom: 4px;
  color: #64756f;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
}

.informatics-kpis strong {
  color: #173f34;
  font-size: 15px;
}

.informatics-week-board {
  display: grid;
  grid-template-columns: repeat(7, minmax(248px, 1fr));
  gap: 8px;
  min-width: 0;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  padding: 2px 1px 8px;
  scroll-snap-type: x proximity;
}

.informatics-day {
  display: grid;
  grid-template-rows: auto auto minmax(220px, 1fr);
  min-height: 330px;
  overflow: hidden;
  border: 1px solid #cfdfd7;
  border-radius: 7px;
  background: #f8fbf9;
  scroll-snap-align: start;
}

.informatics-day.is-today {
  border-color: #178064;
  box-shadow: 0 0 0 2px rgb(23 128 100 / 12%);
}

.informatics-day > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 54px;
  background: #e8f3ee;
  border-bottom: 1px solid #cfdfd7;
  padding: 8px 9px;
}

.informatics-day.is-today > header {
  background: #d9eee5;
}

.informatics-day.is-holiday {
  border-color: #d98787;
  background: #fff8f8;
  box-shadow: inset 0 3px 0 #b91c1c;
}

.informatics-day.is-holiday > header {
  background: #fee2e2;
  border-bottom-color: #e8aaaa;
}

.informatics-day.is-holiday > header span,
.informatics-day.is-holiday > header strong,
.informatics-day.is-holiday > header small {
  color: #8f1d1d;
}

.informatics-holiday-badge {
  flex: 0 0 auto;
  border: 1px solid #c75d5d;
  border-radius: 4px;
  background: #b91c1c;
  color: #fff;
  padding: 4px 6px;
  font-size: 9px;
  font-weight: 900;
  line-height: 1;
  text-transform: uppercase;
}

.informatics-day.is-holiday .informatics-day-total {
  border-bottom-color: #f0cccc;
  background: #fff0f0;
  color: #972828;
}

.informatics-day > header div,
.informatics-day > header span,
.informatics-day > header strong {
  min-width: 0;
}

.informatics-day > header span,
.informatics-day > header strong {
  display: block;
  text-transform: capitalize;
}

.informatics-day > header span {
  color: #62756d;
  font-size: 10px;
  font-weight: 700;
}

.informatics-day > header strong {
  color: #0d5945;
  font-size: 14px;
}

.informatics-day-add {
  flex: 0 0 30px;
  width: 30px;
  height: 30px;
  border: 1px solid #88b6a4;
  border-radius: 50%;
  background: #fff;
  color: #087557;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
}

.informatics-day-add:hover,
.informatics-day-add:focus-visible {
  border-color: #087557;
  background: #087557;
  color: #fff;
}

.informatics-day-total {
  min-height: 28px;
  padding: 7px 9px;
  border-bottom: 1px solid #e1ebe6;
  color: #5f716a;
  font-size: 10px;
  font-weight: 700;
}

.informatics-day-entries {
  display: grid;
  align-content: start;
  gap: 7px;
  max-height: 510px;
  overflow-y: auto;
  padding: 8px;
}

.informatics-day-empty {
  display: grid;
  place-items: center;
  min-height: 110px;
  color: #84928d;
  font-size: 12px;
  text-align: center;
}

.informatics-holiday-empty {
  align-content: center;
  gap: 4px;
  color: #a32929;
}

.informatics-holiday-empty strong,
.informatics-holiday-empty span {
  display: block;
}

.informatics-holiday-empty strong {
  font-size: 13px;
}

.informatics-holiday-empty span {
  font-size: 10px;
  font-weight: 700;
}

.informatics-entry-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 7px 9px;
  min-width: 0;
  border: 1px solid #d5e3dc;
  border-left: 3px solid #d97706;
  border-radius: 6px;
  background: #fff;
  padding: 8px;
}

.informatics-entry-card.is-resolved {
  border-left-color: #178064;
  background: #fbfefc;
}

.informatics-entry-time strong,
.informatics-entry-time span,
.informatics-entry-copy > strong,
.informatics-entry-copy > small {
  display: block;
}

.informatics-entry-time {
  white-space: nowrap;
}

.informatics-entry-time strong {
  color: #183e34;
  font-size: 10px;
}

.informatics-entry-time span {
  margin-top: 2px;
  color: #65756f;
  font-size: 9px;
}

.informatics-entry-copy {
  min-width: 0;
}

.informatics-entry-copy > strong {
  margin-top: 5px;
  color: #173f34;
  font-size: 12px;
  line-height: 1.25;
  overflow-wrap: anywhere;
}

.informatics-entry-copy > small {
  margin-top: 3px;
  color: #5f716a;
  font-size: 10px;
  overflow-wrap: anywhere;
}

.informatics-entry-copy p {
  margin: 6px 0 0;
  color: #40544c;
  font-size: 10px;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.informatics-status {
  display: inline-flex;
  width: fit-content;
  border-radius: 999px;
  padding: 2px 6px;
  font-size: 8px;
  font-weight: 800;
  text-transform: uppercase;
}

.informatics-status.pendiente {
  background: #fff1d6;
  color: #9a4d00;
}

.informatics-status.resuelta {
  background: #dbf2e7;
  color: #087052;
}

.informatics-entry-actions {
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  gap: 5px;
  border-top: 1px solid #edf2ef;
  padding-top: 6px;
}

.informatics-entry-actions .icon-action {
  width: auto;
  height: 27px;
  padding: 4px 8px;
  font-size: 9px;
}

.informatics-entry-actions .icon-action.primary {
  border-color: #178064;
  background: #e6f4ed;
  color: #087052;
}

.informatics-pending-panel {
  padding: 14px 16px;
}

.informatics-pending-panel .section-heading {
  align-items: center;
  margin-bottom: 10px;
}

.informatics-pending-panel .section-heading h3,
.informatics-pending-panel .section-heading p {
  margin: 0;
}

.informatics-pending-panel .section-heading p {
  margin-top: 2px;
  color: #64756f;
  font-size: 11px;
}

.informatics-count {
  display: grid;
  place-items: center;
  min-width: 32px;
  height: 28px;
  border-radius: 14px;
  background: #fff1d6;
  color: #9a4d00;
  font-weight: 800;
}

.informatics-pending-list {
  display: grid;
  gap: 6px;
}

.informatics-pending-list > article {
  display: grid;
  grid-template-columns: minmax(220px, 1.4fr) minmax(260px, 1fr) auto;
  align-items: center;
  gap: 12px;
  border-top: 1px solid #e2ebe7;
  padding: 9px 0;
}

.informatics-pending-list > article:first-child {
  border-top: 0;
}

.informatics-pending-list article > div:first-child strong,
.informatics-pending-list article > div:first-child span {
  display: block;
  overflow-wrap: anywhere;
}

.informatics-pending-list article > div:first-child strong {
  color: #173f34;
  font-size: 12px;
}

.informatics-pending-list article > div:first-child span {
  margin-top: 2px;
  color: #62736d;
  font-size: 10px;
}

.informatics-pending-metrics {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.informatics-pending-metrics span {
  border: 1px solid #d9e5df;
  border-radius: 4px;
  background: #f7faf8;
  padding: 4px 6px;
  color: #4c6159;
  font-size: 9px;
  font-weight: 700;
}

.informatics-task-dialog {
  width: min(760px, calc(100vw - 24px));
}

.informatics-task-form,
.informatics-staff-card {
  width: 100%;
  max-height: min(88vh, 760px);
  overflow-y: auto;
}

.informatics-task-summary {
  display: grid;
  gap: 3px;
  border-left: 4px solid #178064;
  background: #eef7f3;
  padding: 9px 11px;
}

.informatics-task-summary span,
.informatics-task-summary small {
  color: #5e7169;
  font-size: 10px;
}

.informatics-task-summary strong {
  color: #173f34;
  font-size: 13px;
  overflow-wrap: anywhere;
}

.informatics-form-grid {
  margin-top: 12px;
}

.informatics-form-grid textarea {
  width: 100%;
  resize: vertical;
}

.informatics-time-preview {
  margin-top: 10px;
  border: 1px solid #cce1d7;
  border-radius: 6px;
  background: #f3faf6;
  padding: 9px 11px;
  color: #087052;
  font-size: 12px;
  font-weight: 800;
}

.informatics-staff-dialog {
  width: min(620px, calc(100vw - 24px));
}

.informatics-staff-add {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 8px;
  margin: 12px 0;
}

.informatics-staff-add label {
  display: grid;
  gap: 4px;
  color: #52675f;
  font-size: 11px;
  font-weight: 700;
}

.informatics-staff-list {
  display: grid;
  gap: 5px;
  max-height: 380px;
  overflow-y: auto;
}

.informatics-staff-list > div {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 8px;
  border: 1px solid #d9e6df;
  border-radius: 6px;
  padding: 7px 8px;
}

.informatics-staff-list > div.is-inactive {
  opacity: .62;
  background: #f2f4f3;
}

.informatics-staff-list strong {
  min-width: 0;
  color: #173f34;
  font-size: 12px;
  overflow-wrap: anywhere;
}

.informatics-staff-list small {
  color: #63746e;
  font-size: 10px;
}

.informatics-error-panel code {
  color: #087052;
  font-weight: 800;
}

@media (max-width: 1180px) {
  .informatics-kpis {
    grid-template-columns: repeat(3, minmax(150px, 1fr));
  }

  .informatics-pending-list > article {
    grid-template-columns: minmax(180px, 1fr) minmax(220px, 1fr) auto;
  }
}

@media (max-width: 760px) {
  .informatics-toolbar-heading {
    align-items: flex-start;
  }

  .informatics-toolbar-heading,
  .informatics-filters {
    display: grid;
    grid-template-columns: 1fr;
  }

  .informatics-toolbar-actions {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    width: 100%;
  }

  .informatics-toolbar-actions button {
    min-width: 0;
    white-space: normal;
  }

  .informatics-week-navigation {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr) 38px auto;
    width: 100%;
    margin: 0;
  }

  .informatics-week-navigation input,
  .informatics-filters select {
    width: 100%;
    min-width: 0;
  }

  .informatics-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .informatics-kpis > div:first-child {
    grid-column: 1 / -1;
  }

  .informatics-week-board {
    grid-template-columns: repeat(7, minmax(82vw, 1fr));
  }

  .informatics-day {
    min-height: 390px;
  }

  .informatics-pending-list > article {
    grid-template-columns: 1fr auto;
  }

  .informatics-pending-metrics {
    grid-column: 1 / -1;
    grid-row: 2;
  }

  .informatics-pending-list article > button {
    grid-column: 2;
    grid-row: 1;
  }

  .informatics-staff-add,
  .informatics-staff-list > div {
    grid-template-columns: 1fr;
  }

  .informatics-staff-list > div .user-avatar {
    display: none;
  }
}

@media (max-width: 430px) {
  .informatics-toolbar {
    padding: 12px;
  }

  .informatics-toolbar-actions {
    grid-template-columns: 1fr 1fr;
  }

  .informatics-toolbar-actions .primary-button {
    grid-column: 1 / -1;
  }

  .informatics-kpis {
    grid-template-columns: 1fr;
  }

  .informatics-kpis > div:first-child {
    grid-column: auto;
  }

  .informatics-week-board {
    grid-template-columns: repeat(7, minmax(88vw, 1fr));
  }

  .informatics-task-dialog,
  .informatics-staff-dialog {
    width: calc(100vw - 12px);
    margin: 6px;
  }
}

#manager.active-view > .panel > .panel-header {
  min-height: 34px;
  margin-bottom: 6px;
  padding: 0 2px;
}

#manager.active-view > .panel > .panel-header h2 {
  margin: 0;
  font-size: 1rem;
}

#manager.active-view > .panel > .panel-header p {
  display: none;
}

#manager .gantt-panel {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: hidden;
  gap: 7px;
  margin-bottom: 10px;
  padding: 8px;
  border-color: #bcd8cd;
  background: #f4f9f7;
}

#manager .gantt-head {
  position: sticky !important;
  top: 8px !important;
  z-index: 5000 !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 32px !important;
  align-items: center !important;
  gap: 7px !important;
  margin: 0 !important;
  padding: 6px 7px !important;
  border: 1px solid #bad5cb !important;
  border-radius: 7px !important;
  background: rgba(255, 255, 255, 0.97) !important;
  box-shadow: 0 5px 16px rgba(16, 65, 51, 0.1) !important;
}

#manager .gantt-head::before,
#manager .gantt-controls::before {
  content: none !important;
}

#manager .gantt-heading {
  min-width: 0;
}

#manager .gantt-heading h3 {
  margin: 0;
  color: #124c3c;
  font-size: 0.84rem;
  line-height: 1.05;
}

#manager .gantt-filter-summary {
  display: block;
  margin-top: 2px;
  overflow: hidden;
  color: #668078;
  font-size: 0.62rem;
  font-weight: 700;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#manager .gantt-filter-toggle {
  width: 32px;
  min-width: 32px;
  min-height: 30px;
  border-color: #9dc8b9;
  border-radius: 6px;
  background: #e8f5f0;
  color: #12664f;
  font-size: 1.35rem;
  font-weight: 900;
  line-height: 1;
}

#manager .gantt-filter-toggle:hover {
  border-color: #23876b;
  background: #d8eee6;
}

#manager .gantt-controls[hidden] {
  display: none !important;
}

#manager .gantt-controls {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(118px, 0.8fr) minmax(240px, 1.5fr) repeat(4, minmax(102px, 0.75fr));
  gap: 6px;
  width: 100%;
  padding: 6px 0 0 !important;
  border-top: 1px solid #d8e7e1 !important;
  animation: managerFilterReveal 160ms ease-out;
}

@keyframes managerFilterReveal {
  from { opacity: 0; transform: translateY(-3px); }
  to { opacity: 1; transform: translateY(0); }
}

#manager .gantt-controls > label,
#manager .gantt-species-filter {
  gap: 2px;
  color: #42665b;
  font-size: 0.6rem;
  font-weight: 800;
}

#manager .gantt-controls select {
  min-height: 28px;
  height: 28px;
  padding: 2px 6px;
  font-size: 0.7rem;
}

#manager .gantt-species-filter {
  min-height: 28px;
  flex-wrap: nowrap;
  gap: 7px;
  overflow-x: auto;
  padding: 3px 6px;
  border-radius: 6px;
}

#manager .gantt-species-filter legend {
  font-size: 0.59rem;
}

#manager .gantt-species-filter label {
  flex: 0 0 auto;
  gap: 3px;
  font-size: 0.66rem;
}

#manager .gantt-table {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  gap: 7px;
  margin-top: 0 !important;
  padding-top: 5px !important;
  overscroll-behavior-x: contain;
  scrollbar-color: #3d8b73 #dceae5;
  scrollbar-width: auto;
}

#manager .gantt-horizontal-scroll {
  width: 100%;
  max-width: 100%;
  height: 16px;
  overflow-x: auto;
  overflow-y: hidden;
  border: 1px solid #c5dad2;
  border-radius: 5px;
  background: #e8f2ee;
  overscroll-behavior-x: contain;
  scrollbar-color: #287a62 #dceae5;
  scrollbar-width: auto;
}

#manager .gantt-horizontal-control {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) 28px;
  gap: 4px;
  align-items: center;
}

#manager .gantt-horizontal-control > .icon-button {
  width: 28px;
  min-width: 28px;
  min-height: 24px;
  height: 24px;
  border-color: #9fc6b9;
  background: #e4f2ed;
  color: #12664f;
  font-size: 1.2rem;
  font-weight: 950;
  line-height: 1;
}

#manager .gantt-horizontal-scroll span {
  display: block;
  height: 1px;
}

#manager .gantt-matrix-viewport {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overflow-y: visible;
  overscroll-behavior-x: contain;
  scrollbar-color: #287a62 #dceae5;
  scrollbar-width: auto;
}

#manager .gantt-matrix-viewport > .gantt-table-month {
  width: max-content;
  max-width: none;
  min-width: 100%;
  overflow: visible;
}

/* Paneles congelados: conserva la referencia del potrero al recorrer los meses. */
#manager .gantt-matrix-viewport .gantt-row > span:first-child {
  position: sticky;
  left: 0;
  z-index: 12;
  align-self: stretch;
  align-content: center;
  box-sizing: border-box;
  padding: 2px 8px;
  border-right: 1px solid #b7d4ca;
  background: #f7fbf9;
  box-shadow: 10px 0 14px -14px rgba(14, 57, 45, 0.8);
}

#manager .gantt-matrix-viewport .gantt-row:hover > span:first-child,
#manager .gantt-matrix-viewport .gantt-row.selected > span:first-child {
  background: #e9f7f1;
}

#manager .gantt-matrix-viewport .gantt-month-header {
  position: sticky;
  top: 0;
  z-index: 70;
  background: #e7f3ee;
}

#manager .gantt-matrix-viewport .gantt-month-header > span:first-child {
  z-index: 72;
  background: #dceee7;
}

#manager .gantt-matrix-viewport .gantt-month-header .gantt-period-calendar {
  position: relative;
  z-index: 71;
  background: #ffffff;
}

#manager :is(.gantt-horizontal-scroll, .gantt-matrix-viewport)::-webkit-scrollbar {
  height: 12px;
}

#manager :is(.gantt-horizontal-scroll, .gantt-matrix-viewport)::-webkit-scrollbar-track {
  border-radius: 6px;
  background: #dceae5;
}

#manager :is(.gantt-horizontal-scroll, .gantt-matrix-viewport)::-webkit-scrollbar-thumb {
  border: 2px solid #dceae5;
  border-radius: 6px;
  background: #287a62;
}

#manager .gantt-row {
  grid-template-columns: 270px minmax(720px, 1fr);
  min-width: 1040px;
  padding: 8px 10px;
  border-color: #cddfd9;
  border-radius: 6px;
  box-shadow: 0 2px 7px rgba(19, 67, 53, 0.05);
}

#manager .gantt-month-detail {
  grid-template-columns: 270px minmax(980px, 1fr);
  min-width: 1280px;
}

#manager .gantt-row > span > strong {
  color: #103f33;
  font-size: 0.88rem;
}

#manager .gantt-row small {
  font-size: 0.68rem;
}

#manager .gantt-day-grid b,
#manager .gantt-month-grid b {
  min-height: 32px;
  font-size: 0.73rem;
}

#manager .gantt-day-track {
  min-height: calc(max(1, var(--rows)) * 42px);
  grid-auto-rows: 40px;
}

#manager .gantt-day-track i,
#manager .gantt-track i {
  min-height: 34px;
  border-radius: 5px;
  font-size: 0.74rem;
}

#manager .gantt-track i::before,
#manager .gantt-day-track i::before {
  top: calc(100% + 8px) !important;
  bottom: auto !important;
}

#manager .gantt-status-legend {
  margin-top: 0;
}

#manager .order-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 520px), 1fr));
  gap: 10px;
}

#manager .manager-order-card {
  position: relative;
  display: grid;
  gap: 10px;
  overflow: hidden;
  padding: 13px;
  border-left: 4px solid #d2ddd8;
  box-shadow: 0 5px 16px rgba(17, 60, 48, 0.08);
}

#manager .manager-order-card[data-order-status="planned"] { border-left-color: #d8aa19; }
#manager .manager-order-card[data-order-status="in_progress"] { border-left-color: #2783d7; }
#manager .manager-order-card[data-order-status="closed"] { border-left-color: #24945b; }
#manager .manager-order-card[data-order-status="cancelled"] { border-left-color: #d8524b; }

#manager .manager-order-identity {
  display: flex;
  min-width: 0;
  gap: 12px;
  align-items: center;
}

#manager .manager-order-number {
  display: grid;
  flex: 0 0 88px;
  min-height: 58px;
  align-content: center;
  padding: 5px 9px;
  border-right: 1px solid #cfe0da;
  color: #155f4b;
}

#manager .manager-order-number small {
  color: #678078;
  font-size: 0.62rem;
  font-weight: 900;
  text-transform: uppercase;
}

#manager .manager-order-number strong {
  font-size: 1.55rem;
  font-weight: 950;
  line-height: 1;
}

#manager .manager-order-identity > div {
  min-width: 0;
}

#manager .manager-order-identity h3 {
  margin: 0 0 3px;
  color: #163d32;
  font-size: 0.98rem;
}

#manager .manager-order-identity h3 span {
  display: block;
  margin-top: 2px;
  color: #61766f;
  font-size: 0.7rem;
  font-weight: 700;
}

#manager .manager-order-identity p {
  margin: 0;
  color: #647970;
  font-size: 0.68rem;
}

#manager .manager-order-summary {
  display: grid;
  grid-template-columns: minmax(180px, 1.8fr) repeat(3, minmax(90px, 0.7fr));
  gap: 8px 12px;
  padding: 9px 0;
  border-top: 1px solid #e0ebe7;
  border-bottom: 1px solid #e0ebe7;
}

#manager .manager-order-summary span {
  display: grid;
  gap: 2px;
  min-width: 0;
}

#manager .manager-order-summary small {
  color: #72867f;
  font-size: 0.61rem;
  font-weight: 800;
  text-transform: uppercase;
}

#manager .manager-order-summary strong {
  overflow-wrap: anywhere;
  color: #203f36;
  font-size: 0.76rem;
}

#manager .manager-order-card .progress-box {
  margin: 0;
}

#manager .manager-recipe-list {
  gap: 5px;
  margin: 0;
}

#manager .manager-recipe-list span {
  display: inline-flex;
  gap: 5px;
  align-items: baseline;
  border: 1px solid #d3e5de;
  border-radius: 5px;
  padding: 5px 7px;
  font-size: 0.7rem;
}

#manager .manager-order-card .card-actions {
  padding-top: 8px;
  border-top: 1px solid #e0ebe7;
}

#manager .manager-order-card .card-actions button {
  min-height: 30px;
  padding: 5px 9px;
  font-size: 0.68rem;
}

@media (max-width: 1180px) {
  #manager .gantt-controls {
    grid-template-columns: repeat(3, minmax(120px, 1fr));
  }
}

@media (max-width: 760px) {
  #manager.active-view > .panel {
    padding: 6px;
  }

  #manager .gantt-head {
    grid-template-columns: minmax(0, 1fr) 32px !important;
    max-height: none !important;
    overflow: visible !important;
  }

  #manager .gantt-controls {
    display: flex !important;
    overflow-x: auto;
  }

  #manager .gantt-controls[hidden] {
    display: none !important;
  }

  #manager .manager-order-summary {
    grid-template-columns: 1fr 1fr;
  }

  #manager .manager-order-objective {
    grid-column: 1 / -1;
  }
}

@media (prefers-reduced-motion: reduce) {
  #manager .gantt-controls {
    animation: none;
  }
}

/* PDF de orden: A4 estable, legible y sin duplicar informacion. */
@media print {
  @page {
    size: A4 landscape;
    margin: 8mm;
  }

  html,
  body {
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    overflow: visible !important;
    background: #ffffff !important;
  }

  .auth-gate,
  .app-shell,
  dialog,
  .modal,
  .toast {
    display: none !important;
  }

  .print-area {
    position: static !important;
    display: block !important;
    width: 100% !important;
    margin: 0 !important;
    color: #17231f !important;
    font-family: Arial, sans-serif !important;
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }

  .print-area .print-sheet {
    box-sizing: border-box;
    width: 100%;
    font-size: 9.5px;
  }

  .print-area .print-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 118px;
    align-items: stretch;
    gap: 12px;
    margin: 0 0 7px;
    padding: 0 0 7px;
    border-bottom: 3px solid #17694f;
  }

  .print-area .print-brand span {
    display: block;
    margin-bottom: 2px;
    color: #17694f;
    font-size: 9px;
    font-weight: 900;
  }

  .print-area .print-brand h1 {
    margin: 0 0 2px;
    color: #132d25;
    font-size: 23px;
    line-height: 1;
  }

  .print-area .print-brand p {
    margin: 0;
    color: #53645e;
    font-size: 9px;
  }

  .print-area .print-order-number {
    display: grid;
    align-content: center;
    justify-items: center;
    border: 2px solid #17694f;
    background: #edf7f3 !important;
    color: #154c3c;
  }

  .print-area .print-order-number span,
  .print-area .print-order-number small {
    font-size: 8px;
    font-weight: 800;
  }

  .print-area .print-order-number strong {
    font-size: 22px;
    line-height: 1;
  }

  .print-area .print-objective-title {
    display: grid;
    grid-template-columns: 76px minmax(0, 1fr);
    align-items: center;
    gap: 8px;
    margin: 0 0 7px;
    padding: 6px 8px;
    border-left: 4px solid #17694f;
    background: #f0f6f3 !important;
    text-align: left;
  }

  .print-area .print-objective-title span {
    color: #17694f;
    font-size: 8px;
    font-weight: 900;
  }

  .print-area .print-objective-title strong {
    font-size: 11px;
  }

  .print-area .print-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 4px;
    margin-bottom: 7px;
  }

  .print-area .print-grid div {
    box-sizing: border-box;
    min-height: 36px;
    padding: 4px 5px;
    border: 1px solid #9cadA6;
    background: #ffffff !important;
  }

  .print-area .print-grid strong,
  .print-area .print-grid span {
    display: block;
  }

  .print-area .print-grid strong {
    color: #53645e;
    font-size: 7.5px;
    text-transform: uppercase;
  }

  .print-area .print-grid span {
    margin-top: 3px;
    overflow-wrap: anywhere;
    color: #132d25;
    font-size: 9.5px;
    font-weight: 700;
  }

  .print-area .print-note {
    display: grid;
    grid-template-columns: 76px minmax(0, 1fr);
    gap: 8px;
    margin: 0 0 7px;
    padding: 5px 7px;
    border: 1px solid #c6d4cf;
    background: #fafcfa !important;
  }

  .print-area .print-note strong {
    color: #53645e;
    font-size: 8px;
    text-transform: uppercase;
  }

  .print-area .print-note span {
    white-space: pre-wrap;
  }

  .print-area .print-section-title {
    margin: 7px 0 3px;
    color: #17694f;
    font-size: 10px;
    text-transform: uppercase;
  }

  .print-area .print-table {
    width: 100%;
    min-width: 0;
    margin: 0;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 8px;
  }

  .print-area .print-table thead {
    display: table-header-group;
  }

  .print-area .print-table tr {
    break-inside: avoid;
  }

  .print-area .print-table th,
  .print-area .print-table td {
    padding: 3px 4px;
    border: 1px solid #82958e;
    overflow-wrap: anywhere;
    vertical-align: middle;
  }

  .print-area .print-table th {
    background: #dcebe5 !important;
    color: #153e32;
    font-size: 7.5px;
  }

  .print-area .signature-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 34px;
    margin-top: 20px;
    break-inside: avoid;
  }

  .print-area .signature-grid span {
    display: block;
    height: 18px;
    border-bottom: 1px solid #273c35;
  }

  .print-area .signature-grid strong {
    display: block;
    margin-top: 4px;
    font-size: 8px;
    text-align: center;
  }

  .print-area .print-head,
  .print-area .print-objective-title,
  .print-area .print-grid,
  .print-area .print-note {
    break-inside: avoid;
  }
}

/* Inicio: estacion climatica */
.weather-station-home {
  display: grid;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  gap: 12px;
}

.weather-station-home > *,
.weather-dashboard-grid > *,
.weather-kpi-grid > * {
  min-width: 0;
}

.weather-station-header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  padding: 4px 2px 0;
}

.weather-station-header h2,
.weather-panel-title h3 {
  margin: 0;
}

.weather-station-header h2 {
  font-size: clamp(1.2rem, 2vw, 1.65rem);
}

.weather-station-header p,
.weather-panel-title p {
  margin: 3px 0 0;
  color: var(--muted);
  font-size: 0.76rem;
}

.weather-eyebrow {
  color: #0e7490;
  font-size: 0.66rem;
  font-weight: 900;
  text-transform: uppercase;
}

.weather-station-filters {
  display: flex;
  align-items: end;
  gap: 7px;
}

.weather-station-header-actions {
  display: flex;
  align-items: end;
  gap: 8px;
}

.weather-view-switch {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  min-height: 32px;
  padding: 3px;
  border: 1px solid rgba(14, 116, 144, 0.22);
  border-radius: 7px;
  background: #eef9f8;
}

.weather-view-switch button {
  min-height: 24px;
  padding: 3px 10px;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: #35615c;
  font-size: 0.68rem;
  font-weight: 900;
  cursor: pointer;
}

.weather-view-switch button.active {
  background: #0e7490;
  color: #ffffff;
  box-shadow: 0 5px 12px rgba(14, 116, 144, 0.2);
}

.weather-import-button,
.weather-export-button {
  min-height: 32px;
  white-space: nowrap;
}

.weather-station-filters label {
  display: grid;
  gap: 3px;
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 800;
}

.weather-station-filters select {
  min-width: 116px;
  min-height: 32px;
  padding: 4px 28px 4px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
}

.weather-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.weather-kpi {
  position: relative;
  display: grid;
  min-width: 0;
  min-height: 94px;
  gap: 4px;
  padding: 12px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--surface);
  box-shadow: 0 8px 22px rgba(10, 54, 42, 0.07);
}

.weather-kpi::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 3px;
  background: #0e7490;
  content: "";
}

.weather-kpi-minimum::before,
.weather-kpi-frost::before {
  background: #2563eb;
}

.weather-kpi-maximum::before,
.weather-kpi-thermal::before {
  background: #f59e0b;
}

.weather-kpi-degree::before {
  background: #7c3aed;
}

.weather-kpi-rain::before {
  background: #0ea5e9;
}

.weather-kpi-humidity::before {
  background: #14b8a6;
}

.weather-kpi-wind::before {
  background: #64748b;
}

.weather-kpi span {
  color: var(--muted);
  font-size: 0.67rem;
  font-weight: 800;
}

.weather-kpi strong {
  align-self: end;
  overflow-wrap: anywhere;
  font-size: clamp(1.05rem, 1.55vw, 1.4rem);
  line-height: 1.05;
}

.weather-kpi small {
  color: var(--muted);
  font-size: 0.62rem;
  line-height: 1.2;
}

.weather-dashboard-grid {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(260px, 0.8fr);
  gap: 10px;
}

.weather-temperature-panel,
.weather-frost-panel,
.weather-frost-history,
.weather-station-empty {
  padding: 13px;
}

.weather-panel-title {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.weather-panel-title > span {
  color: #0e7490;
  font-size: 0.7rem;
  font-weight: 900;
  text-transform: capitalize;
}

.weather-temperature-chart {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  min-height: 240px;
}

.weather-temperature-scale {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  height: 184px;
  padding: 13px 5px 4px 0;
  color: var(--muted);
  font-size: 0.58rem;
  text-align: right;
}

.weather-temperature-scroll {
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
}

.weather-temperature-columns {
  display: grid;
  grid-template-columns: repeat(var(--weather-columns), minmax(24px, 1fr));
  min-width: max(100%, calc(var(--weather-columns) * 27px));
  gap: 3px;
}

.weather-temperature-column {
  display: grid;
  grid-template-rows: 14px 156px 14px 18px;
  min-width: 0;
  color: var(--muted);
  font-size: 0.55rem;
  text-align: center;
}

.weather-temperature-column > span,
.weather-temperature-column > strong {
  overflow: hidden;
  text-overflow: clip;
  white-space: nowrap;
}

.weather-temperature-column > strong {
  align-self: end;
  color: var(--ink);
  font-size: 0.59rem;
  text-transform: capitalize;
}

.weather-temperature-track {
  position: relative;
  height: 156px;
  border-bottom: 1px solid #b8d0c7;
  background: repeating-linear-gradient(to bottom, #f6faf8 0, #f6faf8 38px, #dfebe6 39px);
}

.weather-temperature-track i {
  position: absolute;
  right: 25%;
  left: 25%;
  min-height: 3px;
  border-radius: 3px;
  background: linear-gradient(to bottom, #f59e0b, #0e7490 68%, #2563eb);
}

.weather-temperature-track b {
  position: absolute;
  right: 12%;
  left: 12%;
  height: 2px;
  border-radius: 2px;
  background: #10251f;
  transform: translateY(-1px);
}

.weather-rain-chart {
  min-height: 240px;
}

.weather-rain-scroll {
  min-width: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
}

.weather-rain-columns {
  display: grid;
  grid-template-columns: repeat(var(--weather-rain-columns), minmax(26px, 1fr));
  min-width: max(100%, calc(var(--weather-rain-columns) * 29px));
  gap: 4px;
}

.weather-rain-column {
  display: grid;
  grid-template-rows: 18px 158px 18px 16px;
  min-width: 0;
  color: var(--muted);
  font-size: 0.56rem;
  text-align: center;
}

.weather-rain-column span,
.weather-rain-column strong,
.weather-rain-column small {
  overflow: hidden;
  text-overflow: clip;
  white-space: nowrap;
}

.weather-rain-column span {
  color: #0e7490;
  font-weight: 900;
}

.weather-rain-column strong {
  align-self: end;
  color: var(--ink);
  font-size: 0.59rem;
  text-transform: capitalize;
}

.weather-rain-column small {
  color: #1f6f4a;
  font-weight: 900;
}

.weather-rain-track {
  position: relative;
  display: flex;
  align-items: end;
  height: 158px;
  border-bottom: 1px solid #bae6fd;
  background: repeating-linear-gradient(to bottom, #f7fcff 0, #f7fcff 38px, #dff3fb 39px);
}

.weather-rain-track i {
  display: block;
  width: 70%;
  margin: 0 auto;
  min-height: 2px;
  border-radius: 5px 5px 2px 2px;
  background: linear-gradient(to top, #0369a1, #38bdf8);
}

.weather-rain-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 10px;
}

.weather-rain-summary > div {
  display: grid;
  gap: 2px;
  padding: 10px;
  border: 1px solid #bae6fd;
  border-radius: 7px;
  background: #f0f9ff;
}

.weather-rain-summary span,
.weather-rain-summary small {
  color: #53717d;
  font-size: 0.6rem;
  font-weight: 900;
}

.weather-rain-summary strong {
  color: #075985;
  font-size: 1rem;
}

.weather-rain-light .weather-frost-progress i {
  background: #38bdf8;
}

.weather-rain-medium .weather-frost-progress i {
  background: #0ea5e9;
}

.weather-rain-severe .weather-frost-progress i {
  background: #0369a1;
}

.weather-frost-bands {
  display: grid;
  gap: 10px;
}

.weather-frost-window {
  display: grid;
  gap: 10px;
  margin-bottom: 10px;
  padding: 10px 11px;
  border: 1px solid #bfdbfe;
  border-left: 4px solid #2563eb;
  border-radius: 7px;
  background: #eff6ff;
  color: #17365f;
}

.weather-frost-window-head,
.weather-frost-window-head > div {
  display: grid;
  gap: 1px;
}

.weather-frost-window-head {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
}

.weather-frost-window span,
.weather-frost-window small {
  font-size: 0.65rem;
}

.weather-frost-window span {
  font-weight: 900;
  text-transform: uppercase;
}

.weather-frost-window small {
  color: #57708f;
}

.weather-frost-window-head > strong {
  max-width: 62%;
  font-size: 0.96rem;
  text-align: right;
}

.weather-frost-window-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid #cddff5;
}

.weather-frost-window-metrics > div {
  display: grid;
  gap: 2px;
  padding: 8px 7px 1px;
  border-right: 1px solid #cddff5;
}

.weather-frost-window-metrics > div:last-child {
  border-right: 0;
}

.weather-frost-window-metrics span {
  color: #57708f;
  font-size: 0.58rem;
}

.weather-frost-window-metrics b {
  font-size: 0.82rem;
}

.weather-frost-window-total b {
  color: #1d4ed8;
}

.weather-frost-band {
  display: grid;
  gap: 7px;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #f8fbfa;
}

.weather-frost-band > div:first-child {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.weather-frost-band span {
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 800;
}

.weather-frost-band strong {
  font-size: 0.9rem;
}

.weather-frost-progress {
  height: 7px;
  overflow: hidden;
  border-radius: 4px;
  background: #e4ece9;
}

.weather-frost-progress i {
  display: block;
  height: 100%;
  min-width: 2px;
  border-radius: inherit;
  background: #60a5fa;
}

.weather-frost-medium .weather-frost-progress i {
  background: #2563eb;
}

.weather-frost-severe .weather-frost-progress i {
  background: #b42318;
}

.weather-frost-table {
  width: 100%;
  max-width: 100%;
  max-height: 260px;
  overflow: auto;
}

.weather-frost-table table {
  min-width: 780px;
}

.weather-frost-table th,
.weather-frost-table td {
  padding: 8px 10px;
  font-size: 0.72rem;
}

.weather-station-empty code {
  color: #0e7490;
  font-weight: 800;
}

dialog.weather-import-dialog {
  width: min(720px, calc(100vw - 24px));
}

.weather-import-modal-body {
  gap: 14px;
}

.weather-import-modal-body .modal-head p {
  margin: 2px 0 0;
  color: var(--muted);
  font-size: 0.72rem;
}

.weather-import-intro,
.weather-import-note,
.weather-import-error,
.weather-import-errors {
  display: grid;
  gap: 4px;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #f7faf8;
}

.weather-import-intro span,
.weather-import-note span,
.weather-import-error span,
.weather-import-errors span {
  color: var(--muted);
  font-size: 0.72rem;
  line-height: 1.35;
}

.weather-file-picker {
  display: grid;
  width: 100%;
  min-height: 92px;
  place-content: center;
  gap: 5px;
  padding: 14px;
  border: 1px dashed #0e7490;
  border-radius: 8px;
  background: #f0f9fb;
  color: #0e5f73;
  text-align: center;
}

.weather-file-picker span {
  color: var(--muted);
  font-size: 0.7rem;
  font-weight: 600;
}

.weather-import-loading {
  display: grid;
  min-height: 150px;
  place-items: center;
  align-content: center;
  gap: 8px;
  color: var(--brand);
  text-align: center;
}

.weather-import-loading small {
  color: var(--muted);
}

.weather-import-spinner {
  width: 28px;
  height: 28px;
  border: 3px solid #d5e9e2;
  border-top-color: var(--brand);
  border-radius: 50%;
  animation: weatherImportSpin 700ms linear infinite;
}

@keyframes weatherImportSpin {
  to { transform: rotate(360deg); }
}

.weather-import-range {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: var(--muted);
  font-size: 0.72rem;
}

.weather-import-range strong {
  color: var(--ink);
}

.weather-import-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}

.weather-import-summary article {
  display: grid;
  gap: 5px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #f8fbfa;
}

.weather-import-summary span {
  color: var(--muted);
  font-size: 0.65rem;
  font-weight: 800;
}

.weather-import-summary strong {
  font-size: 1.12rem;
}

.weather-import-summary .is-new {
  border-color: rgba(15, 159, 110, 0.35);
  background: #ecfdf5;
  color: #047857;
}

.weather-import-summary .is-warning,
.weather-import-error {
  border-color: rgba(184, 107, 0, 0.3);
  background: #fff8e8;
}

.weather-import-errors {
  max-height: 112px;
  overflow: auto;
}

.weather-import-progress {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-size: 0.72rem;
  text-align: center;
}

.weather-import-progress > div {
  height: 8px;
  overflow: hidden;
  border-radius: 5px;
  background: #dfeae6;
}

.weather-import-progress i {
  display: block;
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: var(--brand-2);
  transition: width 160ms ease;
}

@media (max-width: 1320px) {
  .weather-kpi-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .weather-station-header-actions {
    flex-wrap: wrap;
    justify-content: flex-end;
  }
}

@media (max-width: 900px) {
  .weather-dashboard-grid {
    grid-template-columns: 1fr;
  }

  .weather-frost-bands {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .weather-station-home {
    gap: 8px;
  }

  .weather-station-header {
    display: grid;
    align-items: start;
    gap: 7px;
  }

  .weather-station-header p {
    font-size: 0.66rem;
  }

  .weather-station-filters {
    width: 100%;
  }

  .weather-station-header-actions {
    width: 100%;
    align-items: stretch;
  }

  .weather-view-switch {
    width: 100%;
  }

  .weather-view-switch button {
    flex: 1 1 0;
  }

  .weather-import-button,
  .weather-export-button {
    flex: 0 0 auto;
  }

  .weather-station-filters label,
  .weather-station-filters select {
    width: 100%;
    min-width: 0;
  }

  .weather-kpi-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
  }

  .weather-kpi {
    min-height: 82px;
    padding: 10px;
  }

  .weather-kpi strong {
    font-size: 1rem;
  }

  .weather-temperature-panel,
  .weather-frost-panel,
  .weather-frost-history {
    padding: 10px;
  }

  .weather-frost-bands {
    grid-template-columns: 1fr;
    gap: 6px;
  }

  .weather-frost-band {
    padding: 9px;
  }

  .weather-frost-window {
    gap: 7px;
  }

  .weather-frost-window-head > strong {
    max-width: 58%;
    font-size: 0.84rem;
  }

  .weather-frost-window-metrics {
    grid-template-columns: 1fr 1fr;
  }

  .weather-frost-window-metrics > div:nth-child(2) {
    border-right: 0;
  }

  .weather-frost-window-metrics > div:nth-child(-n + 2) {
    border-bottom: 1px solid #cddff5;
  }

  .weather-temperature-chart {
    grid-template-columns: 28px minmax(0, 1fr);
  }

  .weather-import-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .weather-import-range {
    display: grid;
    gap: 3px;
  }
}

button,
input,
select,
textarea {
  font: inherit;
}

button {
  cursor: pointer;
}

.app-shell {
  display: grid;
  grid-template-columns: 236px minmax(0, 1fr);
  min-height: 100vh;
}

.sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 14px;
  background: #173925;
  color: #f7fff8;
}

.brand {
  display: flex;
  gap: 8px;
  align-items: center;
}

.brand-mark {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 8px;
  background: #e9f6ec;
  color: var(--brand);
  font-weight: 800;
}

.brand strong,
.brand span {
  display: block;
}

.brand span,
.sync-box span {
  color: #c5d6ca;
  font-size: 0.72rem;
}

.nav {
  display: grid;
  gap: 5px;
}

.nav-group {
  display: none;
  gap: 5px;
}

.nav-group.open {
  display: grid;
}

.nav-group-toggle {
  width: 100%;
  min-height: 32px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 8px;
  padding: 0 10px;
  background: rgba(255, 255, 255, 0.10);
  color: #ffffff;
  font-weight: 900;
  text-align: left;
}

.nav-group-toggle::after {
  content: "v";
  float: right;
  color: #c5d6ca;
}

.nav-group-toggle[aria-expanded="false"]::after {
  content: ">";
}

.nav-item,
.ghost-button,
.primary-button,
.secondary-button,
.danger-button,
.icon-button {
  min-height: 32px;
  border: 1px solid transparent;
  border-radius: 8px;
  padding: 0 10px;
  font-weight: 700;
}

.nav-item {
  width: 100%;
  text-align: left;
  background: transparent;
  color: #dbe8de;
}

.nav-item:hover,
.nav-item.active {
  background: rgba(255, 255, 255, 0.12);
  color: #ffffff;
}

.sync-box {
  display: grid;
  gap: 10px;
  margin-top: auto;
}

.ghost-button {
  display: grid;
  place-items: center;
  min-height: 40px;
  background: rgba(255, 255, 255, 0.1);
  color: #ffffff;
  border-color: rgba(255, 255, 255, 0.18);
}

.file-action input {
  display: none;
}

.main {
  min-width: 0;
  padding: 8px 10px;
}

.topbar {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
  margin-bottom: 4px;
  min-height: 28px;
}

.eyebrow,
.overline {
  margin: 0 0 2px;
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 800;
  text-transform: uppercase;
}

h1,
h2,
h3,
p {
  margin-top: 0;
}

h1 {
  margin-bottom: 0;
  font-size: clamp(0.98rem, 1.45vw, 1.25rem);
}

h2 {
  margin-bottom: 6px;
  font-size: 1.18rem;
}

h3 {
  margin-bottom: 8px;
  font-size: 1rem;
}

.top-actions,
.card-actions,
.wide-actions,
.modal-actions {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
}

.topbar .secondary-button,
.topbar .primary-button {
  min-height: 26px;
  padding: 0 8px;
  font-size: 0.72rem;
}

.primary-button {
  background: var(--brand);
  color: #ffffff;
}

.secondary-button {
  background: var(--surface);
  color: var(--brand);
  border-color: var(--line);
}

.danger-button {
  background: #fff0ed;
  color: var(--danger);
  border-color: #ffc8bf;
}

.icon-button {
  width: 40px;
  min-height: 40px;
  padding: 0;
  background: var(--surface-2);
  color: var(--ink);
}

.view {
  display: none;
}

.active-view {
  display: block;
}

.kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 18px;
}

.kpi,
.panel,
.order-card,
.execution-card {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.kpi {
  display: grid;
  gap: 7px;
  padding: 18px;
}

.kpi span,
.kpi small,
td span,
.alert-row span,
.timeline-item span {
  color: var(--muted);
}

.kpi strong {
  font-size: 1.65rem;
}

.core-overview {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 18px;
}

.module-card {
  display: grid;
  gap: 8px;
  min-height: 132px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink);
  text-align: left;
  box-shadow: var(--shadow);
}

.module-card:hover {
  border-color: rgba(31, 111, 74, 0.38);
  transform: translateY(-1px);
}

.module-card span {
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 900;
  text-transform: uppercase;
}

.module-card strong {
  font-size: 1.55rem;
}

.module-card small,
.module-card em {
  color: var(--muted);
  font-style: normal;
}

.status-pill {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  border-radius: 999px;
  padding: 0 10px;
  background: #eef5ef;
  color: var(--brand);
  font-weight: 900;
}

.status-pill.closed {
  background: #e8f6ec;
  color: var(--ok);
}

.status-pill.in_progress {
  background: #fff6df;
  color: var(--warn);
}

.empty-module {
  min-height: 280px;
}

.empty-state {
  display: grid;
  gap: 8px;
  padding: 22px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  background: #fbfcfa;
}

.empty-state strong {
  font-size: 1.05rem;
}

.empty-state p {
  max-width: 720px;
  margin-bottom: 0;
  color: var(--muted);
}

.fertilizer-shell {
  display: grid;
  gap: 12px;
}

.fertilizer-toolbar {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 9px;
  padding: 11px 12px;
  border: 1px solid rgba(24, 98, 72, 0.16);
  border-radius: 10px;
  background: linear-gradient(135deg, rgba(232, 248, 238, 0.96), rgba(255, 255, 255, 0.92));
  box-shadow: 0 12px 30px rgba(25, 83, 63, 0.08);
}

.fertilizer-toolbar-title {
  margin: 0;
  font-size: 1.36rem;
  line-height: 1.05;
  color: #103a2d;
}

.fertilizer-toolbar-body {
  display: grid;
  grid-template-columns: minmax(390px, 1fr) auto;
  gap: 16px;
  align-items: center;
}

.fertilizer-filters {
  display: grid;
  grid-template-columns: repeat(3, minmax(124px, 152px));
  align-items: end;
  gap: 8px;
  justify-content: flex-start;
}

.fertilizer-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(104px, 116px));
  justify-content: end;
  gap: 6px;
}

.fertilizer-filters label {
  display: grid;
  gap: 3px;
  min-width: 0;
  font-size: 0.72rem;
  font-weight: 800;
  color: #315347;
}

.fertilizer-filters select {
  height: 32px;
  border: 1px solid rgba(33, 116, 86, 0.22);
  border-radius: 8px;
  padding: 0 9px;
  background: rgba(255, 255, 255, 0.94);
  color: #12372b;
  font-weight: 750;
}

.fertilizer-action-button {
  --fertilizer-action: #1c7559;
  width: 100%;
  min-width: 0;
  min-height: 31px;
  padding: 5px 9px;
  border: 1px solid color-mix(in srgb, var(--fertilizer-action) 34%, white);
  border-radius: 7px;
  background: color-mix(in srgb, var(--fertilizer-action) 9%, white);
  color: color-mix(in srgb, var(--fertilizer-action) 88%, #102f26);
  box-shadow: 0 2px 5px rgba(22, 72, 55, 0.06);
  font-size: 0.72rem;
  font-weight: 850;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition: transform 150ms ease, box-shadow 150ms ease, background-color 150ms ease;
}

.fertilizer-action-button:hover:not(:disabled) {
  transform: translateY(-1px);
  background: color-mix(in srgb, var(--fertilizer-action) 16%, white);
  box-shadow: 0 5px 10px color-mix(in srgb, var(--fertilizer-action) 14%, transparent);
}

.fertilizer-action-button:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--fertilizer-action) 65%, white);
  outline-offset: 2px;
}

.fertilizer-action-button:disabled {
  opacity: 0.58;
  cursor: wait;
}

.fertilizer-action-button.action-prepare,
.fertilizer-action-button.action-apply {
  --fertilizer-action: #087a55;
  background: #087a55;
  border-color: #087a55;
  color: #ffffff;
}

.fertilizer-action-button.action-prepare:hover:not(:disabled),
.fertilizer-action-button.action-apply:hover:not(:disabled) {
  background: #076748;
}

.fertilizer-action-button.action-lot {
  --fertilizer-action: #b86d0d;
}

.fertilizer-action-button.action-dose {
  --fertilizer-action: #775a16;
}

.fertilizer-action-button.action-history {
  --fertilizer-action: #386e86;
}

.fertilizer-action-button.action-export {
  --fertilizer-action: #116f72;
}

.fertilizer-export-button {
  white-space: nowrap;
}

.fertilizer-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 320px);
  gap: 12px;
  align-items: start;
  min-height: 0;
}

.fertilizer-main-column,
.fertilizer-workspace > .fertilizer-alerts-panel {
  max-height: calc(100vh - 235px);
  min-height: 460px;
  overflow: auto;
}

.fertilizer-main-column {
  display: grid;
  gap: 10px;
  padding-right: 2px;
}

.fertilizer-source-note {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  color: #527065;
  font-size: 0.78rem;
  font-weight: 750;
}

.fertilizer-source-note span {
  padding: 5px 8px;
  border: 1px solid rgba(29, 111, 77, 0.14);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.8);
}

.inline-warning {
  padding: 9px 10px;
  border: 1px solid rgba(217, 119, 6, 0.22);
  border-radius: 10px;
  background: rgba(255, 247, 237, 0.9);
  color: #7c3e08;
  font-size: 0.78rem;
  font-weight: 800;
}

.fertilizer-stock-panel {
  display: grid;
  gap: 10px;
}

.fertilizer-stock-header {
  align-items: start;
  gap: 12px;
}

.fertilizer-stock-header p,
.fertilizer-section-title p {
  margin: 2px 0 0;
  color: #5d766c;
  font-size: 0.8rem;
  font-weight: 700;
}

.fertilizer-stock-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
}

.fertilizer-stock-actions > div {
  min-width: 112px;
  text-align: right;
}

.fertilizer-stock-actions strong,
.fertilizer-stock-actions span {
  display: block;
}

.fertilizer-stock-actions strong {
  color: #075c43;
  font-size: 0.92rem;
}

.fertilizer-stock-actions span {
  color: #61796f;
  font-size: 0.72rem;
  font-weight: 800;
}

.fertilizer-stock-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
  gap: 9px;
}

.fertilizer-stock-card {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid rgba(18, 85, 64, 0.14);
  border-radius: 10px;
  background: #fbfefd;
}

.fertilizer-stock-card.status-empty {
  background: #f7faf8;
}

.fertilizer-stock-card.status-negative {
  border-color: rgba(194, 65, 12, 0.28);
  background: #fff7ed;
}

.fertilizer-stock-card-head,
.fertilizer-stock-metrics,
.fertilizer-stock-foot {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}

.fertilizer-stock-card-head strong {
  color: #103b2f;
  overflow-wrap: anywhere;
  font-size: 0.84rem;
  line-height: 1.15;
}

.fertilizer-stock-card-head span,
.fertilizer-stock-foot {
  color: #61786e;
  font-size: 0.68rem;
  font-weight: 800;
}

.fertilizer-stock-available strong {
  display: block;
  color: #086447;
  font-size: 1.05rem;
}

.fertilizer-stock-available span {
  color: #687d74;
  font-size: 0.7rem;
  font-weight: 800;
}

.fertilizer-stock-metrics {
  color: #52695f;
  font-size: 0.7rem;
  font-weight: 750;
}

.fertilizer-stock-metrics span,
.fertilizer-stock-foot span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.fertilizer-stock-empty {
  grid-column: 1 / -1;
}

.fertilizer-section-title {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
  padding: 4px 2px 0;
}

.fertilizer-storage-toggle {
  flex: 0 0 auto;
  display: inline-grid;
  grid-template-columns: repeat(3, minmax(86px, 1fr));
  gap: 3px;
  padding: 3px;
  border: 1px solid rgba(17, 100, 72, 0.16);
  border-radius: 8px;
  background: #e8f1ec;
  box-shadow: inset 0 1px 2px rgba(16, 68, 51, 0.06);
}

.fertilizer-storage-toggle button {
  min-height: 31px;
  padding: 5px 12px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #47665a;
  font-size: 0.74rem;
  font-weight: 850;
  cursor: pointer;
  transition: background-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
}

.fertilizer-storage-toggle button:hover:not(.active) {
  background: rgba(255, 255, 255, 0.72);
  color: #145c44;
}

.fertilizer-storage-toggle button.active {
  background: #087a55;
  color: #ffffff;
  box-shadow: 0 3px 8px rgba(8, 122, 85, 0.22);
}

.fertilizer-storage-toggle button:focus-visible {
  outline: 2px solid #4eaa85;
  outline-offset: 1px;
}

.fertilizer-warehouse-group {
  position: relative;
  border-color: rgba(31, 103, 76, 0.2);
  background: linear-gradient(180deg, #f8fcf9 0%, #ffffff 26%);
}

.fertilizer-warehouse-house-header {
  align-items: center;
  padding: 8px 10px;
  border: 1px solid rgba(24, 105, 75, 0.15);
  border-radius: 8px;
  background: linear-gradient(135deg, #e9f6ed, #f7fbf8);
}

.fertilizer-warehouse-house-title {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.fertilizer-warehouse-house-icon {
  position: relative;
  flex: 0 0 42px;
  width: 42px;
  height: 38px;
  margin-top: 5px;
  border: 2px solid #176e50;
  border-radius: 4px 4px 7px 7px;
  background: #ffffff;
  box-shadow: 0 4px 10px rgba(20, 87, 63, 0.12);
}

.fertilizer-warehouse-house-icon::before {
  content: "";
  position: absolute;
  z-index: 2;
  top: -13px;
  left: 2px;
  width: 30px;
  height: 30px;
  border-top: 3px solid #176e50;
  border-left: 3px solid #176e50;
  border-radius: 4px 0 0;
  background: #cdebd6;
  transform: rotate(45deg);
}

.fertilizer-warehouse-house-icon::after {
  content: "";
  position: absolute;
  z-index: 3;
  top: -2px;
  right: 5px;
  bottom: 0;
  left: 5px;
  border-radius: 3px 3px 0 0;
  background: #ffffff;
}

.fertilizer-warehouse-house-icon i {
  position: absolute;
  z-index: 4;
  right: 13px;
  bottom: 0;
  width: 12px;
  height: 20px;
  border-radius: 3px 3px 0 0;
  background: #176e50;
}

.fertilizer-warehouse-group-totals {
  display: flex;
  justify-content: flex-end;
  gap: 7px;
  flex-wrap: wrap;
}

.fertilizer-warehouse-group-totals > div {
  display: grid;
  min-width: 130px;
  padding: 6px 9px;
  border: 1px solid rgba(21, 112, 78, 0.14);
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.92);
  text-align: right;
}

.fertilizer-warehouse-group-totals span,
.fertilizer-warehouse-group-totals small {
  color: #5e776d;
  font-size: 0.62rem;
  font-weight: 800;
}

.fertilizer-warehouse-group-totals strong {
  margin: 1px 0;
  color: #096a4b;
  font-size: 0.86rem;
}

.fertilizer-warehouse-group .fertilizer-tank-grid {
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
}

.fertilizer-warehouse-card {
  grid-template-columns: 104px minmax(0, 1fr);
  align-items: stretch;
  gap: 10px;
  min-height: 150px;
  padding: 10px;
  overflow: hidden;
  background: linear-gradient(145deg, #ffffff, #f5faf7);
}

.fertilizer-stock-visual {
  display: grid;
  grid-template-rows: minmax(82px, 1fr) auto;
  place-items: end center;
  min-width: 0;
  padding: 8px 7px 6px;
  border: 1px solid rgba(31, 100, 76, 0.13);
  border-radius: 7px;
  background: linear-gradient(180deg, #eef6f1, #ffffff);
}

.fertilizer-stock-unit-stack {
  display: flex;
  flex-wrap: wrap-reverse;
  align-content: flex-start;
  justify-content: center;
  gap: 4px 3px;
  width: 88px;
  min-height: 76px;
}

.fertilizer-stock-unit {
  --stock-unit-color: #24976a;
  --stock-unit-border: #08714b;
  position: relative;
  display: block;
  flex: 0 0 26px;
  width: 26px;
  height: 32px;
  border: 2px solid var(--stock-unit-border);
  background: linear-gradient(135deg, color-mix(in srgb, var(--stock-unit-color) 72%, white), var(--stock-unit-color));
  box-shadow: 0 3px 5px rgba(18, 72, 53, 0.13);
}

.fertilizer-stock-unit.used {
  --stock-unit-color: #e18a27;
  --stock-unit-border: #b76011;
}

.fertilizer-stock-unit.empty {
  --stock-unit-color: #dce5e0;
  --stock-unit-border: #9baea5;
}

.stock-sack .fertilizer-stock-unit {
  height: 29px;
  border-radius: 45% 45% 38% 38% / 24% 24% 18% 18%;
}

.stock-sack .fertilizer-stock-unit::before {
  content: "";
  position: absolute;
  top: -5px;
  left: 7px;
  width: 9px;
  height: 7px;
  border: 2px solid var(--stock-unit-border);
  border-bottom: 0;
  border-radius: 50% 50% 0 0;
  background: var(--stock-unit-color);
}

.stock-sack .fertilizer-stock-unit i {
  position: absolute;
  top: 7px;
  right: 5px;
  left: 5px;
  height: 2px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.58);
}

.stock-can .fertilizer-stock-unit {
  height: 34px;
  border-radius: 4px 4px 6px 6px;
}

.stock-can .fertilizer-stock-unit::before {
  content: "";
  position: absolute;
  top: 3px;
  right: 3px;
  width: 10px;
  height: 8px;
  border: 2px solid var(--stock-unit-border);
  border-radius: 3px;
  background: #f6faf8;
}

.stock-can .fertilizer-stock-unit::after {
  content: "";
  position: absolute;
  top: -5px;
  left: 3px;
  width: 8px;
  height: 5px;
  border-radius: 2px 2px 0 0;
  background: var(--stock-unit-border);
}

.stock-can .fertilizer-stock-unit i {
  position: absolute;
  right: 4px;
  bottom: 5px;
  left: 4px;
  height: 12px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.28);
}

.fertilizer-stock-unit-label {
  color: #536f63;
  font-size: 0.62rem;
  font-weight: 850;
  text-transform: uppercase;
}

.fertilizer-warehouse-product-info {
  display: grid;
  align-content: center;
  gap: 8px;
  min-width: 0;
}

.fertilizer-warehouse-product-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 6px;
}

.fertilizer-warehouse-product-head strong {
  min-width: 0;
  color: #143b30;
  font-size: 0.8rem;
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.fertilizer-warehouse-product-head > span {
  flex: 0 0 auto;
  padding: 2px 5px;
  border-radius: 5px;
  background: #e6f3eb;
  color: #176749;
  font-size: 0.61rem;
  font-weight: 900;
}

.fertilizer-warehouse-metrics {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5px;
}

.fertilizer-warehouse-metrics > div {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 6px;
  border-radius: 6px;
}

.fertilizer-warehouse-metrics .available {
  background: #e8f6ed;
}

.fertilizer-warehouse-metrics .used {
  background: #fff1df;
}

.fertilizer-warehouse-metrics span,
.fertilizer-warehouse-total span {
  color: #61776e;
  font-size: 0.6rem;
  font-weight: 800;
}

.fertilizer-warehouse-metrics strong {
  color: #08714e;
  font-size: 0.76rem;
  line-height: 1;
  white-space: nowrap;
}

.fertilizer-warehouse-metrics .used strong {
  color: #b45c11;
}

.fertilizer-warehouse-total {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding-top: 6px;
  border-top: 1px solid rgba(22, 83, 62, 0.12);
}

.fertilizer-warehouse-total strong {
  color: #38584c;
  font-size: 0.7rem;
}

.fertilizer-folio-warning {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.fertilizer-folio-warning span {
  color: #8a5920;
  font-size: 0.7rem;
}

.fertilizer-folio-group {
  display: grid;
  gap: 8px;
  padding: 10px;
  border-color: rgba(22, 104, 75, 0.18);
  background: #fbfefc;
}

.fertilizer-folio-list {
  display: grid;
  gap: 7px;
}

.fertilizer-folio-card {
  overflow: hidden;
  border: 1px solid #cfdfd8;
  border-left: 4px solid #16805b;
  border-radius: 7px;
  background: #fff;
}

.fertilizer-folio-card.status-low { border-left-color: #d28719; }
.fertilizer-folio-card.status-empty { border-left-color: #bd4038; }
.fertilizer-folio-card[open] { box-shadow: 0 5px 14px rgba(19, 78, 58, 0.08); }

.fertilizer-folio-card > summary {
  display: grid;
  grid-template-columns: minmax(180px, 1.1fr) minmax(150px, 0.75fr) minmax(120px, 0.7fr) 28px;
  align-items: center;
  gap: 10px;
  min-height: 64px;
  padding: 8px 10px;
  cursor: pointer;
  list-style: none;
}

.fertilizer-folio-card > summary::-webkit-details-marker { display: none; }

.fertilizer-folio-identity,
.fertilizer-folio-balance {
  display: grid;
  gap: 1px;
  min-width: 0;
}

.fertilizer-folio-identity span,
.fertilizer-folio-balance span,
.fertilizer-folio-identity small,
.fertilizer-folio-balance small {
  color: #637a70;
  font-size: 0.61rem;
  font-weight: 750;
}

.fertilizer-folio-identity strong,
.fertilizer-folio-balance strong {
  overflow-wrap: anywhere;
  color: #153f32;
  font-size: 0.82rem;
}

.fertilizer-folio-balance strong { color: #08704e; }
.fertilizer-folio-card.status-low .fertilizer-folio-balance strong { color: #a85c0a; }
.fertilizer-folio-card.status-empty .fertilizer-folio-balance strong { color: #a52e29; }

.fertilizer-folio-progress {
  position: relative;
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: #dfeae5;
}

.fertilizer-folio-progress i {
  display: block;
  width: var(--folio-used);
  height: 100%;
  border-radius: inherit;
  background: #e2962c;
}

.fertilizer-folio-expand {
  display: grid;
  width: 26px;
  height: 26px;
  place-items: center;
  border: 1px solid #a8cabc;
  border-radius: 50%;
  color: #12694e;
  font-size: 0.9rem;
  font-weight: 900;
}

.fertilizer-folio-card[open] .fertilizer-folio-expand { transform: rotate(45deg); }

.fertilizer-folio-detail {
  display: grid;
  gap: 8px;
  padding: 9px 10px 10px;
  border-top: 1px solid #dce8e2;
  background: #f7fbf9;
}

.fertilizer-folio-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 9px;
}

.fertilizer-folio-actions small {
  max-width: 380px;
  color: #657a72;
  font-size: 0.62rem;
  font-weight: 750;
  text-align: right;
}

.fertilizer-folio-actions .danger-button:disabled {
  border-color: #d9e1dd;
  background: #eef2f0;
  color: #7a8a83;
  cursor: not-allowed;
  opacity: 1;
}

.fertilizer-folio-metadata {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
}

.fertilizer-folio-metadata > div {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 6px 7px;
  border: 1px solid #dce8e2;
  border-radius: 5px;
  background: #fff;
}

.fertilizer-folio-metadata > div.wide { grid-column: span 2; }
.fertilizer-folio-metadata span { color: #687e75; font-size: 0.57rem; font-weight: 800; text-transform: uppercase; }
.fertilizer-folio-metadata strong { overflow-wrap: anywhere; color: #214b3e; font-size: 0.67rem; }
.fertilizer-folio-movements { max-height: 270px; }
.fertilizer-folio-movements td { vertical-align: top; }

@media (max-width: 760px) {
  .fertilizer-storage-toggle { width: 100%; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .fertilizer-folio-warning { align-items: flex-start; flex-direction: column; }
  .fertilizer-folio-card > summary { grid-template-columns: minmax(0, 1fr) auto; }
  .fertilizer-folio-balance { text-align: right; }
  .fertilizer-folio-progress { grid-column: 1 / -1; }
  .fertilizer-folio-expand { display: none; }
  .fertilizer-folio-metadata { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 440px) {
  .fertilizer-storage-toggle button { padding-inline: 5px; font-size: 0.67rem; }
  .fertilizer-folio-card > summary { grid-template-columns: 1fr; }
  .fertilizer-folio-balance { text-align: left; }
  .fertilizer-folio-metadata { grid-template-columns: 1fr; }
  .fertilizer-folio-metadata > div.wide { grid-column: auto; }
  .fertilizer-folio-actions { align-items: stretch; flex-direction: column-reverse; }
  .fertilizer-folio-actions small { max-width: none; text-align: left; }
}

.fertilizer-caseta-grid {
  display: grid;
  gap: 12px;
}

.fertilizer-caseta-card {
  overflow: hidden;
}

.fertilizer-caseta-header {
  align-items: start;
  gap: 12px;
}

.fertilizer-caseta-header h2 {
  margin: 0;
}

.fertilizer-caseta-header p {
  margin: 0;
  max-width: 920px;
  color: #5d766c;
  font-size: 0.8rem;
  font-weight: 700;
  line-height: 1.35;
}

.fertilizer-caseta-identity {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 7px 10px;
  margin-bottom: 4px;
}

.fertilizer-caseta-potreros {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  min-width: 0;
}

.fertilizer-caseta-potreros span {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 3px 7px;
  border: 1px solid rgba(13, 119, 82, 0.18);
  border-radius: 5px;
  background: #eef8f2;
  color: #1f5d48;
  font-size: 0.67rem;
  font-weight: 850;
  line-height: 1.1;
}

.fertilizer-caseta-total {
  min-width: 120px;
  padding: 8px 10px;
  border: 1px solid rgba(22, 112, 75, 0.14);
  border-radius: 10px;
  background: rgba(241, 251, 245, 0.9);
  text-align: right;
}

.fertilizer-caseta-total strong,
.fertilizer-caseta-total span {
  display: block;
}

.fertilizer-caseta-total strong {
  color: #075c43;
  font-size: 1rem;
}

.fertilizer-caseta-total span {
  margin-top: 2px;
  color: #5b7468;
  font-size: 0.72rem;
  font-weight: 800;
}

.fertilizer-tank-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 9px;
}

.fertilizer-tank-card {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid rgba(18, 85, 64, 0.14);
  border-radius: 10px;
  background: #fbfefd;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}

.fertilizer-estanque-card {
  --tank-color: #169164;
  --tank-color-dark: #08784f;
  grid-template-columns: 78px minmax(0, 1fr);
  align-items: center;
  min-height: 126px;
  padding: 12px;
  overflow: hidden;
  background: linear-gradient(145deg, #ffffff 0%, #f5faf7 100%);
  width: 100%;
  border: 1px solid rgba(18, 85, 64, 0.18);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

.fertilizer-estanque-card:hover {
  border-color: rgba(8, 122, 85, 0.52);
  box-shadow: 0 8px 18px rgba(19, 82, 61, 0.12);
  transform: translateY(-1px);
}

.fertilizer-estanque-card:focus-visible {
  outline: 3px solid rgba(8, 122, 85, 0.28);
  outline-offset: 2px;
}

.fertilizer-estanque-card.tank-level-yellow {
  --tank-color: #e6b929;
  --tank-color-dark: #b9850c;
}

.fertilizer-estanque-card.tank-level-orange {
  --tank-color: #ed7c22;
  --tank-color-dark: #c65312;
}

.fertilizer-estanque-card.tank-level-red {
  --tank-color: #dc3d3d;
  --tank-color-dark: #a91f2a;
}

.fertilizer-tank-visual {
  position: relative;
  display: grid;
  place-items: center;
  width: 70px;
  height: 104px;
}

.fertilizer-tank-shell {
  position: relative;
  width: 58px;
  height: 88px;
  overflow: hidden;
  border: 2px solid #60756c;
  border-radius: 50% / 10%;
  background: linear-gradient(90deg, #e8efeb 0%, #ffffff 25%, #f7faf8 68%, #d9e4de 100%);
  box-shadow: 0 7px 13px rgba(22, 65, 50, 0.15), inset 0 0 0 2px rgba(255, 255, 255, 0.45);
}

.fertilizer-tank-shell::before,
.fertilizer-tank-shell::after {
  content: "";
  position: absolute;
  z-index: 4;
  left: -2px;
  width: calc(100% + 4px);
  height: 14px;
  border: 2px solid #60756c;
  border-radius: 50%;
  pointer-events: none;
}

.fertilizer-tank-shell::before {
  top: -2px;
  background: rgba(248, 252, 250, 0.86);
}

.fertilizer-tank-shell::after {
  bottom: -2px;
  border-top-color: transparent;
}

.fertilizer-tank-liquid {
  position: absolute;
  z-index: 2;
  right: 0;
  bottom: 0;
  left: 0;
  height: var(--tank-level);
  min-height: 2px;
  background: linear-gradient(90deg, var(--tank-color-dark), var(--tank-color) 45%, color-mix(in srgb, var(--tank-color) 74%, white));
  transform-origin: bottom;
  animation: fertilizer-tank-fill 650ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

.fertilizer-tank-liquid::before {
  content: "";
  position: absolute;
  top: -5px;
  left: 0;
  width: 100%;
  height: 10px;
  border-radius: 50%;
  background: color-mix(in srgb, var(--tank-color) 82%, white);
  box-shadow: inset 0 2px 3px rgba(255, 255, 255, 0.48);
}

.fertilizer-tank-liquid span {
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, transparent 12%, rgba(255, 255, 255, 0.24) 28%, transparent 45%);
  animation: fertilizer-tank-shimmer 3.6s ease-in-out infinite;
}

.fertilizer-tank-shine {
  position: absolute;
  z-index: 5;
  top: 13px;
  bottom: 13px;
  left: 10px;
  width: 5px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.42);
  pointer-events: none;
}

.fertilizer-tank-visual > strong {
  position: absolute;
  z-index: 6;
  bottom: 2px;
  min-width: 42px;
  padding: 2px 5px;
  border-radius: 5px;
  background: #ffffff;
  box-shadow: 0 2px 7px rgba(22, 65, 50, 0.18);
  color: #203c32;
  font-size: 0.66rem;
  line-height: 1.2;
  text-align: center;
}

.fertilizer-tank-description {
  display: grid;
  align-content: center;
  gap: 5px;
  min-width: 0;
}

.fertilizer-tank-number {
  color: #113f31;
  font-size: 0.92rem;
  font-weight: 950;
  line-height: 1.05;
  text-transform: uppercase;
}

.fertilizer-tank-description > .fertilizer-fip-text {
  color: #123c30;
  font-size: clamp(0.68rem, 0.75vw, 0.78rem);
  line-height: 1.18;
  text-align: left;
  overflow-wrap: anywhere;
}

.fertilizer-tank-liters {
  display: grid;
  gap: 1px;
  margin-top: 3px;
}

.fertilizer-tank-liters strong {
  color: var(--tank-color-dark);
  font-size: 1.05rem;
  line-height: 1;
}

.fertilizer-tank-liters span {
  color: #667c73;
  font-size: 0.68rem;
  font-weight: 750;
}

.fertilizer-tank-potreros {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.fertilizer-tank-potrero-label {
  margin-top: 3px;
  color: #657970;
  font-size: 0.6rem;
  font-weight: 800;
  line-height: 1.1;
}

.fertilizer-tank-potreros span {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 2px 6px;
  border: 1px solid rgba(13, 119, 82, 0.2);
  border-radius: 5px;
  background: #eef8f2;
  color: #284b3e;
  font-size: 0.63rem;
  font-weight: 850;
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.fertilizer-tank-potreros .is-empty {
  color: #72837b;
  font-weight: 700;
}

@keyframes fertilizer-tank-fill {
  from { transform: scaleY(0); }
  to { transform: scaleY(1); }
}

@keyframes fertilizer-tank-shimmer {
  0%, 100% { transform: translateX(-24%); opacity: 0.25; }
  50% { transform: translateX(42%); opacity: 0.7; }
}

@media (prefers-reduced-motion: reduce) {
  .fertilizer-tank-liquid,
  .fertilizer-tank-liquid span {
    animation: none;
  }
}

.fertilizer-tank-head,
.fertilizer-volume-row,
.fertilizer-tank-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}

.fertilizer-tank-head strong {
  flex: 0 0 auto;
  color: #103b2f;
  font-size: 0.92rem;
}

.fertilizer-tank-head span,
.fertilizer-tank-meta {
  color: #5f766c;
  font-size: 0.72rem;
  font-weight: 800;
}

.fertilizer-fip-text {
  flex: 1 1 auto;
  min-width: 0;
  max-width: 100%;
  text-align: right;
  overflow-wrap: anywhere;
  line-height: 1.12;
  font-size: clamp(0.58rem, 0.68vw, 0.68rem);
}

.fertilizer-volume-row span {
  color: #086447;
  font-size: 1.08rem;
  font-weight: 900;
}

.fertilizer-volume-row small {
  color: #647b70;
  font-weight: 800;
}

.fertilizer-progress {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e6eee9;
}

.fertilizer-progress span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #1f8a64, #50b56f);
}

.fertilizer-tank-card.status-vacio .fertilizer-progress span {
  background: #9aa8a1;
}

.fertilizer-tank-card.status-critico .fertilizer-progress span,
.fertilizer-status-pill.status-critico {
  background: #c2410c;
}

.fertilizer-tank-card.status-bajo .fertilizer-progress span,
.fertilizer-status-pill.status-bajo {
  background: #d99517;
}

.fertilizer-tank-card.status-lleno .fertilizer-progress span,
.fertilizer-status-pill.status-lleno {
  background: #0d9488;
}

.fertilizer-table-wrap {
  overflow: auto;
  max-height: 420px;
  border: 1px solid rgba(23, 91, 68, 0.12);
  border-radius: 10px;
}

.fertilizer-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 980px;
  font-size: 0.8rem;
}

.fertilizer-table th,
.fertilizer-table td {
  padding: 8px 9px;
  border-bottom: 1px solid rgba(25, 77, 62, 0.09);
  text-align: left;
  vertical-align: top;
}

.fertilizer-table-fip {
  max-width: 220px;
  overflow-wrap: anywhere;
  line-height: 1.18;
  font-size: 0.7rem;
  font-weight: 800;
}

.fertilizer-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #edf8f2;
  color: #1f4a3d;
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0;
}

.fertilizer-potrero-chip {
  display: inline-flex;
  margin: 0 4px 4px 0;
  padding: 3px 6px;
  border-radius: 999px;
  background: #eef7f1;
  color: #315a4b;
  font-size: 0.7rem;
  font-weight: 800;
}

.fertilizer-status-pill {
  display: inline-flex;
  min-width: 68px;
  justify-content: center;
  padding: 4px 7px;
  border-radius: 999px;
  background: #238461;
  color: #fff;
  font-size: 0.7rem;
  font-weight: 900;
}

.fertilizer-status-pill.status-vacio {
  background: #7b8a82;
}

.fertilizer-status-pill.status-sin-capacidad {
  background: #475569;
}

.fertilizer-application-modal {
  width: min(1180px, calc(100vw - 28px));
}

.fertilizer-application-form {
  gap: 12px;
  padding: 18px;
}

.fertilizer-application-form .form-grid {
  grid-template-columns: 1fr 1fr;
  gap: 10px 12px;
}

.fertilizer-application-form .modal-head p {
  margin: 4px 0 0;
}

.fertilizer-application-form .calc-preview {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.fertilizer-block-picker {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid rgba(31, 111, 74, 0.16);
  border-radius: 10px;
  background: #f7fbf8;
}

.fertilizer-block-picker-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.fertilizer-block-picker-head strong {
  color: #123c2f;
  font-size: 0.82rem;
  font-weight: 950;
}

.fertilizer-block-picker-head span {
  display: block;
  margin-top: 2px;
  color: #60756d;
  font-size: 0.68rem;
  font-weight: 800;
}

.fertilizer-block-picker-head > div:first-child {
  display: grid;
  gap: 2px;
}

.fertilizer-block-picker-head > div:last-child {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.fertilizer-block-picker .mini-button {
  min-height: 28px;
  padding: 0 9px;
  border: 1px solid rgba(31, 111, 74, 0.18);
  border-radius: 8px;
  background: #eef7f1;
  color: var(--brand);
  font-size: 0.68rem;
  font-weight: 900;
  cursor: pointer;
}

.fertilizer-block-picker .mini-button:hover {
  background: #dff0e6;
}

.fertilizer-block-checklist {
  display: grid;
  grid-template-columns: 1fr;
  gap: 4px;
  max-height: min(42vh, 390px);
  overflow: auto;
  padding-right: 3px;
}

.fertilizer-block-table-head {
  position: sticky;
  top: 0;
  z-index: 2;
  display: grid;
  grid-template-columns: 52px minmax(96px, 0.8fr) minmax(180px, 1.6fr) 84px minmax(160px, 1fr);
  gap: 8px;
  align-items: center;
  padding: 7px 10px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 8px;
  background: #eaf6ef;
  color: #42665b;
  font-size: 0.67rem;
  font-weight: 950;
  text-transform: uppercase;
  letter-spacing: 0;
}

.fertilizer-block-check,
.fertilizer-block-empty {
  display: grid;
  grid-template-columns: 52px minmax(96px, 0.8fr) minmax(180px, 1.6fr) 84px minmax(160px, 1fr);
  align-items: center;
  gap: 8px;
  min-height: 46px;
  padding: 7px 10px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 8px;
  background: #ffffff;
}

.fertilizer-block-empty {
  grid-template-columns: 1fr;
}

.fertilizer-block-select {
  display: flex;
  align-items: center;
}

.fertilizer-block-select input {
  width: 16px;
  height: 16px;
  accent-color: var(--brand);
}

.fertilizer-block-check strong {
  min-width: 0;
  overflow: hidden;
  color: #123c2f;
  font-size: 0.76rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fertilizer-block-check em,
.fertilizer-block-check small,
.fertilizer-block-empty {
  min-width: 0;
  overflow: hidden;
  color: var(--muted);
  font-size: 0.7rem;
  font-style: normal;
  font-weight: 750;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fertilizer-block-liters {
  width: 100% !important;
  min-width: 140px;
  min-height: 34px;
  padding: 6px 9px;
  border: 1px solid rgba(31, 111, 74, 0.18);
  border-radius: 8px;
  background: #ffffff;
  color: #123c2f;
  font-size: 0.82rem;
  font-weight: 900;
  text-align: right;
}

.fertilizer-block-liters:disabled {
  opacity: 0.42;
  background: #edf2ef;
}

.fertilizer-block-liters.is-invalid {
  border-color: #cf3f35;
  background: #fff1ef;
  box-shadow: 0 0 0 2px rgba(207, 63, 53, 0.12);
}

.fertilizer-apply-liters-button {
  align-self: end;
}

.fertilizer-operation-form {
  max-height: min(88vh, 820px);
  overflow: auto;
  padding: 18px;
}

.fertilizer-operation-form .form-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 12px;
}

.fertilizer-preparation-form {
  width: min(760px, calc(100vw - 28px));
}

.fertilizer-preparation-form .calc-preview {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.fertilizer-operation-form .primary-button,
.fertilizer-operation-form .secondary-button,
.fertilizer-lot-form .primary-button,
.fertilizer-lot-form .secondary-button {
  min-height: 34px;
  border-radius: 999px;
  font-weight: 900;
}

.fertilizer-alerts-panel {
  display: grid;
  align-content: start;
  gap: 10px;
  padding: 12px;
}

.fertilizer-alerts-header {
  align-items: center;
}

.fertilizer-alerts-header p {
  margin: 2px 0 0;
  color: #60756d;
  font-size: 0.75rem;
  font-weight: 750;
}

.fertilizer-alerts-header > span {
  padding: 5px 9px;
  border: 1px solid rgba(22, 101, 52, 0.16);
  border-radius: 999px;
  background: #f1fbf5;
  color: #0c6547;
  font-size: 0.72rem;
  font-weight: 950;
}

.fertilizer-alerts-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}

.fertilizer-alert-card {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 10px;
  padding: 10px;
  border: 1px solid rgba(190, 18, 60, 0.18);
  border-left-width: 4px;
  border-radius: 10px;
  background: #fff5f5;
}

.fertilizer-alert-card strong,
.fertilizer-alert-card b,
.fertilizer-alert-card span,
.fertilizer-alert-card small {
  display: block;
}

.fertilizer-alert-card strong {
  color: #123c2f;
  font-size: 0.8rem;
  font-weight: 950;
}

.fertilizer-alert-card span,
.fertilizer-alert-card small {
  color: #667a72;
  font-size: 0.68rem;
  font-weight: 800;
}

.fertilizer-alert-card b {
  color: #123c2f;
  font-size: 0.78rem;
  text-align: right;
}

.fertilizer-alert-card.alert-vacio,
.fertilizer-alert-card.alert-critico {
  border-left-color: #b91c1c;
  background: #fef2f2;
}

.fertilizer-alert-card.alert-bajo {
  border-left-color: #dc2626;
  background: #fff1f2;
}

.fertilizer-alert-card.alert-sin-movimiento {
  border-left-color: #991b1b;
  background: #fef2f2;
}

.fertilizer-operations-history {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.fertilizer-history-table-wrap {
  max-height: 330px;
}

.fertilizer-history-table {
  min-width: 780px;
}

.fertilizer-history-table td small {
  color: #61776e;
  font-size: 0.68rem;
  font-weight: 800;
}

.fertilizer-history-modal {
  width: min(1120px, calc(100vw - 28px));
}

.fertilizer-history-dialog {
  gap: 12px;
  padding: 18px;
}

.fertilizer-history-tabs {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 4px;
  border: 1px solid rgba(31, 111, 74, 0.14);
  border-radius: 999px;
  background: #eef7f1;
}

.fertilizer-history-tabs button {
  min-height: 32px;
  padding: 0 14px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: #315a4b;
  font-size: 0.76rem;
  font-weight: 950;
  cursor: pointer;
}

.fertilizer-history-tabs button.active {
  background: #0b6b4f;
  color: #fff;
  box-shadow: 0 8px 18px rgba(11, 107, 79, 0.18);
}

.fertilizer-history-dialog-table {
  display: grid;
  gap: 10px;
}

.fertilizer-history-dialog-table .fertilizer-history-table-wrap {
  max-height: min(62vh, 560px);
}

.fertilizer-dose-dialog,
.fertilizer-recommendation-dialog {
  width: min(860px, calc(100vw - 28px));
  max-height: min(90vh, 820px);
  gap: 12px;
}

#purchaseDialog:has(.fertilizer-dose-dialog),
#purchaseDialog:has(.fertilizer-recommendation-dialog) {
  overflow: hidden;
}

.fertilizer-dose-dialog .modal-head p,
.fertilizer-recommendation-dialog .modal-head p {
  margin: 4px 0 0;
  color: #64786f;
  font-size: 0.78rem;
  font-weight: 700;
}

.fertilizer-dose-list {
  display: grid;
  gap: 6px;
  max-height: min(62vh, 560px);
  padding: 2px 4px 2px 2px;
  overflow: auto;
}

.fertilizer-dose-species-tabs {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  width: min(100%, 460px);
  margin-inline: auto;
}

.fertilizer-dose-species-tabs button {
  min-height: 36px;
  color: #315d4d;
  font-size: 0.78rem;
  font-weight: 850;
}

.fertilizer-dose-species-tabs button.active {
  background: #087a55;
  color: #fff;
}

.fertilizer-dose-panels,
.fertilizer-dose-species-panel {
  min-height: 0;
}

.fertilizer-dose-species-panel[hidden] {
  display: none;
}

.fertilizer-dose-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 172px;
  gap: 14px;
  align-items: center;
  padding: 9px 10px;
  border: 1px solid rgba(23, 101, 72, 0.13);
  border-radius: 8px;
  background: #f8fcf9;
}

.fertilizer-dose-row > span:first-child,
.fertilizer-dose-input {
  min-width: 0;
}

.fertilizer-dose-row strong,
.fertilizer-dose-row small {
  display: block;
}

.fertilizer-dose-row strong {
  color: #123d30;
  font-size: 0.82rem;
}

.fertilizer-dose-row small {
  margin-top: 2px;
  color: #647a71;
  font-size: 0.68rem;
  font-weight: 750;
}

.fertilizer-dose-input {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 7px;
}

.fertilizer-dose-input input {
  width: 100%;
  height: 36px;
  border: 1px solid rgba(22, 103, 72, 0.24);
  border-radius: 7px;
  padding: 0 9px;
  background: #fff;
  color: #143d31;
  font-weight: 850;
}

.fertilizer-dose-input b {
  color: #496a5d;
  font-size: 0.72rem;
  white-space: nowrap;
}

.fertilizer-recommendation-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}

.fertilizer-recommendation-summary > span {
  display: grid;
  align-content: start;
  gap: 3px;
  min-width: 0;
  padding: 9px;
  border: 1px solid rgba(22, 103, 72, 0.14);
  border-radius: 8px;
  background: #f2f9f5;
}

.fertilizer-recommendation-summary small,
.fertilizer-recommendation-summary em {
  color: #61776e;
  font-size: 0.66rem;
  font-style: normal;
  font-weight: 750;
}

.fertilizer-recommendation-summary strong {
  color: #0d5e43;
  font-size: 0.86rem;
  overflow-wrap: anywhere;
}

.fertilizer-recommendation-warning {
  padding: 8px 10px;
  border: 1px solid #efcb79;
  border-radius: 8px;
  background: #fff8e6;
  color: #805408;
  font-size: 0.75rem;
  font-weight: 800;
}

.fertilizer-recommendation-groups {
  display: grid;
  gap: 8px;
  max-height: min(49vh, 470px);
  padding-right: 3px;
  overflow: auto;
}

.fertilizer-recommendation-groups.is-compact {
  align-content: start;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.fertilizer-recommendation-potrero {
  display: flex;
  min-width: 0;
  min-height: 64px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border: 1px solid rgba(19, 101, 71, 0.18);
  border-radius: 8px;
  background: #f7fbf8;
  color: #164d3c;
  text-align: left;
  cursor: pointer;
  transition: border-color 150ms ease, background 150ms ease, transform 150ms ease;
}

.fertilizer-recommendation-potrero:hover {
  border-color: rgba(8, 122, 85, 0.45);
  background: #edf8f1;
  transform: translateY(-1px);
}

.fertilizer-recommendation-potrero > span {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.fertilizer-recommendation-potrero strong,
.fertilizer-recommendation-potrero small {
  overflow-wrap: anywhere;
}

.fertilizer-recommendation-potrero small {
  color: #6a8077;
  font-size: 0.66rem;
  font-weight: 750;
}

.fertilizer-recommendation-potrero em {
  color: #08704e;
  font-size: 0.73rem;
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}

.fertilizer-recommendation-potrero b {
  display: grid;
  width: 27px;
  height: 27px;
  place-items: center;
  justify-self: end;
  border: 1px solid rgba(8, 122, 85, 0.26);
  border-radius: 50%;
  background: #fff;
  color: #087a55;
  font-size: 1rem;
}

.fertilizer-recommendation-group {
  overflow: hidden;
  border: 1px solid rgba(19, 101, 71, 0.15);
  border-radius: 8px;
}

.fertilizer-recommendation-group-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 10px;
  background: #e7f5ec;
  color: #14533e;
  font-size: 0.78rem;
}

.fertilizer-recommendation-group-head span {
  font-weight: 850;
  white-space: nowrap;
}

.fertilizer-recommendation-table {
  display: grid;
  min-width: 560px;
}

.fertilizer-recommendation-table-scroll {
  max-height: min(34vh, 280px);
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}

.fertilizer-recommendation-table-scroll.is-expanded {
  max-height: min(58vh, 520px);
  border: 1px solid rgba(19, 101, 71, 0.14);
  border-radius: 8px;
}

.fertilizer-recommendation-back {
  margin: 0 0 5px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #08704e;
  font-size: 0.7rem;
  font-weight: 900;
  cursor: pointer;
}

.fertilizer-recommendation-potrero-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}

.fertilizer-recommendation-potrero-summary > span {
  min-width: 0;
  padding: 8px 9px;
  border: 1px solid rgba(19, 101, 71, 0.12);
  border-radius: 7px;
  background: #f4f9f6;
}

.fertilizer-recommendation-potrero-summary small,
.fertilizer-recommendation-potrero-summary em {
  display: block;
  color: #6a8077;
  font-size: 0.59rem;
  font-style: normal;
  font-weight: 800;
}

.fertilizer-recommendation-potrero-summary strong {
  display: block;
  margin-top: 2px;
  overflow-wrap: anywhere;
  color: #164d3c;
  font-size: 0.75rem;
}

.calc-preview .is-danger {
  padding: 7px 8px;
  border: 1px solid #efb5b1;
  border-radius: 7px;
  background: #fff1f1;
  color: #9d2924;
}

.calc-preview .is-danger strong {
  color: #9d2924;
}

.fertilizer-recommendation-table-scroll:focus-visible {
  outline: 2px solid rgba(8, 122, 85, 0.35);
  outline-offset: -2px;
}

.fertilizer-recommendation-row {
  display: grid;
  grid-template-columns: 66px minmax(155px, 1fr) 76px 78px 108px;
  gap: 8px;
  align-items: center;
  padding: 7px 10px;
  border-top: 1px solid rgba(21, 86, 65, 0.09);
  color: #405f53;
  font-size: 0.74rem;
}

.fertilizer-recommendation-row.is-head {
  position: sticky;
  z-index: 2;
  top: 0;
  border-top: 0;
  background: #f7faf8;
  color: #657a72;
  font-size: 0.64rem;
  font-weight: 850;
  text-transform: uppercase;
}

.fertilizer-recommendation-row b {
  color: #08704e;
  text-align: right;
}

.fertilizer-recommendation-row > span small {
  display: block;
  margin-bottom: 1px;
  color: #688078;
  font-size: 0.61rem;
  font-weight: 850;
  text-transform: uppercase;
}

.fertilizer-formula-note {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #eef3f0;
  color: #49665b;
  font-size: 0.7rem;
}

.fertilizer-formula-note strong {
  color: #244b3d;
  text-align: right;
}

@media (max-width: 760px) {
  .fertilizer-application-form {
    padding: 14px;
  }

  .fertilizer-operation-form .form-grid,
  .fertilizer-application-form .form-grid,
  .fertilizer-application-form .calc-preview,
  .fertilizer-preparation-form .calc-preview {
    grid-template-columns: 1fr;
  }

  .fertilizer-operations-history {
    grid-template-columns: 1fr;
  }

  .fertilizer-toolbar {
    align-items: stretch;
    grid-template-columns: 1fr;
    flex-direction: column;
  }

  .fertilizer-toolbar-body {
    grid-template-columns: 1fr;
  }

  .fertilizer-filters {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    justify-content: stretch;
  }

  .fertilizer-actions {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    justify-content: stretch;
  }

  .fertilizer-filters label,
  .fertilizer-actions button {
    width: 100%;
  }

  .fertilizer-workspace {
    grid-template-columns: 1fr;
  }

  .fertilizer-main-column,
  .fertilizer-workspace > .fertilizer-alerts-panel {
    max-height: none;
    min-height: 0;
    overflow: visible;
  }

  .fertilizer-caseta-header {
    align-items: stretch;
    flex-direction: column;
  }

  .fertilizer-caseta-total {
    width: 100%;
    text-align: left;
  }

  .fertilizer-tank-grid {
    grid-template-columns: 1fr;
  }

  .fertilizer-dose-dialog,
  .fertilizer-recommendation-dialog {
    width: calc(100vw - 16px);
    padding: 13px;
  }

  .fertilizer-dose-row {
    grid-template-columns: 1fr;
    gap: 7px;
  }

  .fertilizer-recommendation-summary {
    grid-template-columns: 1fr 1fr;
  }

  .fertilizer-recommendation-groups.is-compact,
  .fertilizer-recommendation-potrero-summary {
    grid-template-columns: 1fr;
  }

  .fertilizer-recommendation-row {
    grid-template-columns: 42px minmax(92px, 1fr) 53px 58px 72px;
    gap: 5px;
    padding-inline: 7px;
    font-size: 0.64rem;
  }

  .fertilizer-recommendation-table {
    min-width: 430px;
  }

  .fertilizer-recommendation-table-scroll {
    max-height: min(40vh, 320px);
  }

  .fertilizer-formula-note {
    display: grid;
  }

  .fertilizer-formula-note strong {
    text-align: left;
  }

  .fertilizer-block-picker-head {
    align-items: stretch;
    flex-direction: column;
  }

  .fertilizer-block-picker-head > div:last-child {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .fertilizer-block-table-head {
    display: none;
  }

  .fertilizer-block-checklist {
    grid-template-columns: 1fr;
    max-height: min(48vh, 430px);
  }

  .fertilizer-block-check {
    grid-template-columns: 28px minmax(0, 1fr) minmax(112px, 0.72fr);
    gap: 6px 8px;
  }

  .fertilizer-block-check em {
    grid-column: 2 / 4;
  }

  .fertilizer-block-check small {
    grid-column: 2;
  }

  .fertilizer-block-liters {
    grid-column: 3;
    min-width: 112px;
  }
}

/* AgroCore UI 242: filtros persistentes, mapas directos y comparaciones completas. */
:root {
  --agrocore-sticky-filter-top: 8px;
}

.nav-item,
.nav-group-toggle {
  grid-template-columns: minmax(0, 1fr) auto;
}

.nav-icon,
.nav-sub-dot,
.harvest-species-badge {
  display: none !important;
}

.nav-label {
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
}

.user-menu-panel button {
  display: block;
}

.harvest-start-variety,
.harvest-contractor-species > header {
  grid-template-columns: minmax(0, 1fr);
}

.harvest-potrero-species-section > header {
  grid-template-columns: minmax(0, 1fr) auto;
}

.view.active-view :is(
  .weather-station-filters,
  .satellite-toolbar,
  .program-filters,
  .gantt-controls,
  .warehouse-filters,
  .report-toolbar,
  .irrigation-balance-toolbar,
  .irrigation-local-filters,
  .calicatas-filters,
  .harvest-filter-shell,
  .harvest-export-filter-panel,
  .fertilizer-toolbar,
  .pest-filter-bar
) {
  position: sticky !important;
  top: var(--agrocore-sticky-filter-top) !important;
  z-index: 880;
  border-color: #b9d4c9;
  background: rgba(248, 252, 250, 0.97);
  box-shadow: 0 8px 20px rgba(13, 67, 52, 0.12);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.view.active-view :is(
  .program-filters,
  .gantt-controls,
  .warehouse-filters,
  .report-toolbar,
  .irrigation-filters,
  .calicatas-filters,
  .irrigation-local-filters
)::before {
  content: none !important;
}

.geo-map,
.harvest-map,
.pest-monitoring-map,
.irrigation-calicata-map,
.satellite-map {
  cursor: grab;
  touch-action: none;
}

.geo-map:active,
.harvest-map:active,
.pest-monitoring-map:active,
.irrigation-calicata-map:active,
.satellite-map:active {
  cursor: grabbing;
}

.harvest-comparison-species-stack {
  display: grid;
  gap: 12px;
}

.harvest-comparison-species {
  display: grid;
  gap: 9px;
  min-width: 0;
  padding: 9px;
  border: 1px solid #c9ddd5;
  border-radius: 8px;
  background: #f8fbf9;
}

.harvest-comparison-species-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding-bottom: 7px;
  border-bottom: 2px solid #b9d9cb;
}

.harvest-comparison-species-head > div:first-child {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.harvest-comparison-species-head > div:first-child strong {
  color: #0e654e;
  font-size: 0.86rem;
  font-weight: 950;
}

.harvest-comparison-species-head > div:first-child span {
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 850;
}

.harvest-comparison-species-totals {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 5px;
}

.harvest-comparison-species-totals span,
.harvest-comparison-species-totals > strong {
  display: inline-flex;
  gap: 4px;
  align-items: baseline;
  padding: 4px 6px;
  border: 1px solid #d2e2dc;
  border-radius: 6px;
  background: #ffffff;
  color: #294b41;
  font-size: 0.62rem;
  white-space: nowrap;
}

.harvest-comparison-species-totals > strong {
  border-color: #99cab7;
  background: #e5f5ed;
  color: #0b6048;
}

.harvest-contractor-species > header {
  padding: 7px 9px;
}

.harvest-contractor-years {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.harvest-contractor-year {
  display: grid;
  grid-template-columns: 1fr;
  gap: 6px;
}

.harvest-contractor-year > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  color: #536f65;
  font-size: 0.64rem;
}

.harvest-contractor-bars {
  display: grid;
  gap: 5px;
}

.harvest-contractor-bar-row {
  display: grid;
  grid-template-columns: minmax(125px, 0.85fr) minmax(90px, 1.4fr) minmax(92px, auto) 48px;
  gap: 7px;
  align-items: center;
  min-width: 0;
  padding: 5px 6px;
  border: 1px solid #e0eae6;
  border-radius: 6px;
  background: #ffffff;
}

.harvest-contractor-bar-row > strong {
  min-width: 0;
  color: #183f34;
  font-size: 0.65rem;
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.harvest-contractor-bar-track {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e8f0ed;
}

.harvest-contractor-bar-track i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--bar-color, #15815f);
}

.harvest-contractor-bar-value {
  display: grid;
  justify-items: end;
  gap: 1px;
  color: #274a40;
  white-space: nowrap;
}

.harvest-contractor-bar-value b {
  font-size: 0.63rem;
}

.harvest-contractor-bar-value small,
.harvest-contractor-bar-row > em {
  color: #667b74;
  font-size: 0.56rem;
  font-style: normal;
  font-weight: 850;
}

.harvest-contractor-bar-row > em {
  text-align: right;
  white-space: nowrap;
}

/* Los contenedores informativos muestran el dato completo; las matrices densas conservan su ancho. */
.view.active-view :is(
  .kpi,
  .weather-kpi,
  .chart-panel,
  .order-card,
  .execution-card,
  .harvest-analytics-card,
  .harvest-map-info,
  .pest-map-info,
  .fertilizer-tank-card,
  .fertilizer-warehouse-group,
  .fertilizer-history-card
) :is(strong, b, em, small, span)[title] {
  max-width: none;
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.view.active-view table:not(.irrigation-bandeja-matrix-table) :is(th, td) {
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.view.active-view :is(.panel, .kpi, .weather-kpi, .chart-panel, .order-card, .execution-card) :is(strong, b, em, small, span, p):not(.irrigation-gantt *):not(.gantt-table *):not(.irrigation-bandeja-matrix *):not(.geo-map *) {
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.view.active-view :is(strong, b, em, small, span, td, th)[title]:not(.irrigation-gantt *):not(.gantt-table *):not(.irrigation-bandeja-matrix *) {
  max-width: none;
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* Aplicaciones: Gantt continua, ordenes compactas y texto operativo completo. */
#manager .gantt-controls {
  grid-template-columns: minmax(118px, 0.8fr) minmax(220px, 1.35fr) repeat(5, minmax(96px, 0.7fr));
}

#manager .gantt-filter-summary,
#manager .gantt-row > span,
#manager .gantt-row > span > strong,
#manager .gantt-row small {
  max-width: none;
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

#manager .gantt-row {
  border-left: 4px solid #a9c8bd;
  background: linear-gradient(90deg, #f6fbf8 0, #ffffff 18%);
}

#manager .gantt-row:hover,
#manager .gantt-row.selected {
  border-color: #299775;
  background: linear-gradient(90deg, #e9f7f1 0, #ffffff 24%);
  box-shadow: 0 4px 14px rgba(18, 84, 64, 0.12);
}

#manager .gantt-period-detail {
  grid-template-columns: 250px minmax(var(--period-width), 1fr);
  min-width: calc(266px + var(--period-width));
}

#manager .gantt-period-calendar {
  display: grid;
  min-width: var(--period-width);
}

#manager .gantt-period-months {
  display: grid;
  grid-template-columns: repeat(var(--days), minmax(22px, 1fr));
  border: 1px solid #bdd8ce;
  border-bottom: 0;
  background: #dceee7;
}

#manager .gantt-period-months strong {
  display: grid;
  min-height: 25px;
  place-items: center;
  position: relative;
  border-right: 2px solid #83b9a7;
  color: #12523f;
  font-size: 0.68rem;
  text-transform: uppercase;
}

#manager .gantt-period-months strong > span {
  position: sticky;
  left: 274px;
  z-index: 73;
  display: inline-flex;
  width: max-content;
  max-width: calc(100% - 8px);
  min-height: 21px;
  align-items: center;
  padding: 0 7px;
  border-radius: 3px;
  background: #dceee7;
  white-space: nowrap;
}

#manager .gantt-day-track {
  background-color: #ffffff;
}

#manager .gantt-day-grid b.is-weekend {
  color: #174b7a;
  background: repeating-linear-gradient(135deg, #e7f3ff 0 5px, #cfe5fa 5px 8px);
}

#manager .gantt-day-grid b.is-holiday {
  color: #4c1d95;
  background: repeating-linear-gradient(135deg, #f1eafe 0 5px, #c4b5fd 5px 8px);
  box-shadow: inset 0 -3px 0 #7c3aed;
}

#manager .gantt-day-grid b.is-month-start {
  border-left: 2px solid #4e9b83;
}

#manager .gantt-day-grid {
  grid-template-columns: repeat(var(--days), minmax(22px, 1fr));
}

#manager .gantt-day-track {
  isolation: isolate;
  background:
    repeating-linear-gradient(
      to right,
      transparent 0,
      transparent calc((100% / var(--days)) - 1px),
      #d9e7e1 calc((100% / var(--days)) - 1px),
      #d9e7e1 calc(100% / var(--days))
    ),
    #ffffff;
}

#manager .gantt-calendar-band {
  min-width: 0;
  align-self: stretch;
  justify-self: stretch;
  border-right: 1px solid rgba(48, 111, 171, 0.2);
  pointer-events: none;
  z-index: 0;
}

#manager .gantt-calendar-band.is-weekend {
  background: repeating-linear-gradient(135deg, rgba(196, 222, 248, 0.68) 0 6px, rgba(230, 242, 255, 0.68) 6px 10px);
}

#manager .gantt-calendar-band.is-holiday {
  background: repeating-linear-gradient(135deg, rgba(139, 92, 246, 0.62) 0 6px, rgba(221, 214, 254, 0.78) 6px 10px);
  box-shadow: inset 2px 0 0 rgba(109, 40, 217, 0.4), inset -2px 0 0 rgba(109, 40, 217, 0.4);
}

#manager .gantt-track i.active,
#manager .gantt-day-track i.active {
  border: 2px solid var(--gantt-state-color, #2563eb);
  background: color-mix(in srgb, var(--gantt-state-color, #2563eb) 24%, white);
  color: color-mix(in srgb, var(--gantt-state-color, #2563eb) 72%, #101d19);
  box-shadow: inset 0 3px 0 var(--program-color, #315e50), 0 2px 5px rgba(16, 62, 48, 0.12);
  z-index: 2;
}

#manager .gantt-track i.active::after,
#manager .gantt-day-track i.active::after {
  height: 5px;
  background: var(--gantt-state-color, #2563eb);
}

#manager .gantt-track i.active.pending,
#manager .gantt-day-track i.active.pending {
  color: #5d4400;
}

#manager .gantt-status-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  border: 1px solid #d2e2dc;
  border-radius: 6px;
  padding: 6px 9px;
  background: #ffffff;
}

#manager .gantt-status-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: #49655b;
  font-size: 0.68rem;
  font-weight: 800;
}

#manager .gantt-status-legend i {
  display: block;
  width: 10px;
  height: 10px;
  flex: 0 0 10px;
  border: 2px solid var(--gantt-state-color);
  border-radius: 3px;
  background: color-mix(in srgb, var(--gantt-state-color) 30%, white);
}

#manager .gantt-status-legend .calendar-weekend i {
  border-color: #78a9d5;
  background: repeating-linear-gradient(135deg, #e7f3ff 0 4px, #c5def6 4px 7px);
}

#manager .gantt-status-legend .calendar-holiday i {
  border-color: #7c3aed;
  background: repeating-linear-gradient(135deg, #f1eafe 0 4px, #a78bfa 4px 7px);
}

.application-order-details {
  min-width: 0;
  overflow: hidden;
  border: 1px solid #d4e3dd;
  border-radius: 6px;
  background: #f9fcfa;
}

.application-order-details > summary {
  display: flex;
  min-height: 34px;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 9px;
  cursor: pointer;
  color: #275447;
  font-size: 0.72rem;
  font-weight: 850;
  list-style: none;
}

.application-order-details > summary::-webkit-details-marker {
  display: none;
}

.application-order-details > summary::after {
  content: "+";
  display: grid;
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  place-items: center;
  border: 1px solid #b9d4ca;
  border-radius: 50%;
  color: #147056;
  font-size: 0.86rem;
}

.application-order-details[open] > summary::after {
  content: "-";
}

.application-order-details > summary strong {
  margin-left: auto;
  border-radius: 999px;
  padding: 2px 7px;
  background: #e5f2ed;
  color: #12634c;
  font-size: 0.66rem;
}

.application-order-details[open] > summary {
  border-bottom: 1px solid #d4e3dd;
  background: #edf7f3;
}

#manager .manager-order-card {
  --order-status: #8ca39b;
  gap: 7px;
  padding: 10px;
  border-left-color: var(--order-status);
}

#manager .manager-order-card[data-order-status="planned"] { --order-status: #d39214; background: linear-gradient(90deg, #fffaf0, #ffffff 18%); }
#manager .manager-order-card[data-order-status="in_progress"] { --order-status: #2774c5; background: linear-gradient(90deg, #f0f7ff, #ffffff 18%); }
#manager .manager-order-card[data-order-status="closed"] { --order-status: #208554; background: linear-gradient(90deg, #effaf4, #ffffff 18%); }
#manager .manager-order-card[data-order-status="cancelled"] { --order-status: #c4423a; background: linear-gradient(90deg, #fff2f1, #ffffff 18%); }
#manager .manager-order-card[data-order-status="draft"] { --order-status: #7a8792; background: linear-gradient(90deg, #f5f7f8, #ffffff 18%); }

#manager .manager-order-number strong {
  overflow-wrap: normal;
  white-space: nowrap;
}

#manager .manager-order-summary {
  padding: 6px 0;
}

#manager .manager-order-details .manager-recipe-list {
  padding: 7px;
}

#manager .manager-recipe-list span,
#manager .manager-recipe-list strong,
.official-products-table td,
.official-products-table th,
.warehouse-product-table td,
.warehouse-history-table td {
  max-width: none;
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.official-program-item > summary {
  min-height: 58px;
  height: auto;
}

.official-program-title strong,
.official-program-title small,
.official-program-objective,
.official-program-meta small {
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.official-products-table th:first-child,
.official-products-table td:first-child,
.warehouse-product-table th:first-child,
.warehouse-product-table td:first-child {
  min-width: 190px;
  width: 28%;
  line-height: 1.25;
}

.warehouse-order-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}

.warehouse-order-card {
  --order-status: #849b93;
  position: relative;
  display: grid;
  gap: 7px;
  padding: 10px 12px;
  border-left: 5px solid var(--order-status);
  border-radius: 7px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--order-status) 8%, white), #ffffff 18%);
  box-shadow: 0 3px 10px rgba(15, 64, 49, 0.07);
}

.warehouse-order-card[data-order-status="planned"] { --order-status: #d39214; }
.warehouse-order-card[data-order-status="in_progress"] { --order-status: #2774c5; }
.warehouse-order-card[data-order-status="closed"] { --order-status: #208554; }
.warehouse-order-card[data-order-status="cancelled"] { --order-status: #c4423a; }
.warehouse-order-card[data-order-status="draft"] { --order-status: #7a8792; }

.warehouse-order-card .order-card-head {
  align-items: center;
}

.warehouse-order-card .order-card-head h3 {
  margin: 1px 0;
  font-size: 0.92rem;
  line-height: 1.15;
}

.warehouse-created-at {
  display: block;
  color: #667c74;
  font-size: 0.65rem;
  font-weight: 700;
}

.warehouse-order-card .metrics {
  grid-template-columns: repeat(4, minmax(110px, 1fr));
  gap: 1px;
  overflow: hidden;
  margin: 0;
  border: 1px solid #d5e3de;
  border-radius: 5px;
  background: #d5e3de;
}

.warehouse-order-card .metrics > div {
  min-height: 48px;
  padding: 6px 8px;
  background: #ffffff;
}

.warehouse-order-card .metrics dt {
  font-size: 0.61rem;
}

.warehouse-order-card .metrics dd {
  font-size: 0.86rem;
}

.warehouse-order-card .progress {
  height: 7px;
}

.warehouse-order-card .progress i {
  background: var(--order-status);
}

.warehouse-order-context {
  grid-template-columns: minmax(130px, 0.45fr) minmax(220px, 1.55fr);
  gap: 6px;
  margin: 0;
}

.warehouse-order-context > div {
  min-width: 0;
  padding: 6px 8px;
  border-radius: 5px;
}

.warehouse-order-context strong {
  font-size: 0.6rem;
}

.warehouse-order-context span {
  display: block;
  font-size: 0.72rem;
  line-height: 1.2;
}

.warehouse-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.warehouse-detail-grid > details[open] {
  grid-column: 1 / -1;
}

.warehouse-order-details .table-wrap {
  margin: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.warehouse-order-details table {
  margin: 0;
}

.warehouse-order-details th,
.warehouse-order-details td {
  padding: 6px 7px;
  font-size: 0.68rem;
}

.warehouse-order-card .warehouse-actions {
  gap: 6px;
  padding-top: 2px;
}

.warehouse-order-card .warehouse-actions button {
  min-height: 30px;
  padding: 5px 9px;
  font-size: 0.68rem;
}

@media (max-width: 1180px) {
  #manager .gantt-controls {
    grid-template-columns: repeat(4, minmax(118px, 1fr));
  }
}

@media (max-width: 760px) {
  #manager .gantt-period-detail {
    grid-template-columns: 205px minmax(var(--period-width), 1fr);
    min-width: calc(221px + var(--period-width));
  }

  .warehouse-order-card .metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .warehouse-order-context,
  .warehouse-detail-grid {
    grid-template-columns: 1fr;
  }

  .warehouse-detail-grid > details[open] {
    grid-column: auto;
  }
}

@media (max-width: 520px) {
  .official-program-item > summary {
    align-items: start;
  }

  .official-products-table th:first-child,
  .official-products-table td:first-child,
  .warehouse-product-table th:first-child,
  .warehouse-product-table td:first-child {
    min-width: 0;
    width: auto;
  }

  .warehouse-order-card {
    padding: 9px;
  }
}

.harvest-variety-year-bar strong,
.harvest-export-comparison-row :is(b, em),
.harvest-export-year-row :is(span, b),
.harvest-export-variety-year-block > header :is(strong, small, b, span),
.harvest-start-variety > div :is(strong, span),
.harvest-rank-row span,
.user-chip-copy :is(strong, small),
.account-identity :is(strong, span) {
  max-width: none;
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.harvest-variety-year-bar strong {
  font-size: 0.6rem;
  line-height: 1.05;
  white-space: nowrap;
}

@media (max-width: 900px) {
  :root {
    --agrocore-sticky-filter-top: clamp(126px, 15svh, 144px);
  }

  .nav-item,
  .nav-group-toggle,
  .nav-group .nav-item,
  .nav > .nav-item {
    grid-template-columns: minmax(0, 1fr) auto !important;
  }
}

@media (max-width: 760px) {
  .harvest-comparison-species-head {
    align-items: flex-start;
    flex-direction: column;
  }

  .harvest-comparison-species-totals {
    justify-content: flex-start;
  }

  .harvest-contractor-years {
    grid-template-columns: 1fr;
  }

  .harvest-contractor-bar-row {
    grid-template-columns: minmax(110px, 1fr) minmax(80px, 1.2fr) auto;
  }

  .harvest-contractor-bar-row > em {
    grid-column: 1;
    text-align: left;
  }
}

.irrigation-panel {
  display: grid;
  gap: 5px;
  overflow: visible;
  padding: 6px;
}

.irrigation-panel-header {
  position: sticky;
  top: 0;
  z-index: 35;
  display: grid;
  grid-template-columns: minmax(120px, 1fr) minmax(430px, 0.78fr);
  align-items: center;
  gap: 5px;
  margin-bottom: 2px;
  padding: 0 0 2px;
  background: var(--surface);
}

.irrigation-panel-header h2 {
  margin-bottom: 1px;
  font-size: 0.84rem;
}

.irrigation-panel-header p {
  margin-bottom: 0;
  font-size: 0.58rem;
}

.irrigation-filters {
  grid-template-columns: minmax(86px, 1fr) minmax(84px, 1fr) 66px 56px 58px;
  min-width: 430px;
  margin-bottom: 0;
  padding: 2px;
  gap: 3px;
}

.irrigation-filters label {
  gap: 2px;
  font-size: 0.6rem;
}

.irrigation-filters select,
.irrigation-filters input {
  min-height: 21px;
  padding: 1px 6px;
  font-size: 0.64rem;
}

.irrigation-filters button {
  min-height: 21px;
  padding: 1px 6px;
  font-size: 0.62rem;
}

.irrigation-compare-wrap {
  position: sticky;
  top: 0;
  z-index: 40;
  display: grid;
  gap: 4px;
  padding-bottom: 4px;
  background: var(--surface);
}

.irrigation-section-title {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 3px 7px;
  border: 1px solid rgba(31, 111, 74, 0.16);
  border-radius: 6px;
  background: #f7faf6;
  color: var(--brand);
}

.irrigation-section-title strong {
  font-size: 0.8rem;
}

.irrigation-section-title span {
  min-width: 0;
  color: var(--muted);
  font-size: 0.64rem;
  font-weight: 850;
  overflow: hidden;
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.irrigation-gantt {
  display: grid;
  gap: 5px;
  overflow-x: auto;
  max-height: calc(100vh - 185px);
  overflow-y: auto;
  padding-bottom: 8px;
  contain: layout paint style;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}

.irrigation-gantt-program {
  max-height: max(170px, calc((100vh - 250px) / 2));
  min-height: 170px;
  gap: 5px;
  padding-bottom: 4px;
  border: 1px solid rgba(41, 127, 143, 0.22);
  border-radius: 7px;
  background: #eef8fa;
}

.irrigation-gantt-program .irrigation-block-head,
.irrigation-gantt-program .irrigation-block-label,
.irrigation-gantt-program .irrigation-total-head,
.irrigation-gantt-program .irrigation-total,
.irrigation-gantt-program .irrigation-reposition-head,
.irrigation-gantt-program .irrigation-reposition {
  background: #edf8fa;
  border-color: rgba(41, 127, 143, 0.24);
}

.irrigation-gantt-program .irrigation-block-head,
.irrigation-gantt-program .irrigation-total-head,
.irrigation-gantt-program .irrigation-reposition-head {
  color: #0b5f73;
}

.irrigation-program-spacer-row .calicata-label {
  background: #f3fbfc;
  color: #3f6470;
}

.irrigation-gantt-real {
  max-height: max(170px, calc((100vh - 250px) / 2));
  min-height: 170px;
  border: 1px solid rgba(31, 111, 74, 0.16);
  border-radius: 7px;
  background: #fbfdfb;
}

.irrigation-row {
  display: grid;
  grid-template-columns: 460px max-content 64px 82px;
  gap: 4px;
  min-width: max-content;
  align-items: stretch;
}

.irrigation-gantt .irrigation-row:not(.irrigation-row-head) {
  content-visibility: auto;
  contain-intrinsic-width: 1600px;
  contain-intrinsic-height: 32px;
}

.irrigation-row-head {
  position: sticky;
  top: 0;
  z-index: 25;
}

.irrigation-block-head,
.irrigation-block-label,
.irrigation-total-head,
.irrigation-total,
.irrigation-reposition-head,
.irrigation-reposition {
  position: sticky;
  z-index: 1;
  display: grid;
  align-content: center;
  min-height: 28px;
  padding: 4px 7px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
}

.irrigation-block-head,
.irrigation-block-label {
  left: 0;
}

.irrigation-block-head {
  z-index: 30;
  background: #eef5ef;
  color: var(--brand);
  font-weight: 900;
}

.irrigation-block-label strong,
.irrigation-block-label > span,
.irrigation-block-label small {
  white-space: nowrap;
  overflow-wrap: anywhere;
  line-height: 1.12;
}

.irrigation-block-label {
  grid-template-columns: max-content max-content minmax(0, max-content);
  gap: 4px 7px;
  justify-content: start;
  align-items: center;
  overflow: hidden;
}

.irrigation-block-label > span,
.irrigation-block-label small {
  color: var(--muted);
  font-size: 0.68rem;
}

.irrigation-block-data {
  display: grid;
  grid-template-columns: minmax(86px, max-content) max-content;
  min-width: 0;
  max-width: 100%;
  gap: 3px 5px;
  align-items: center;
  overflow: hidden;
}

.irrigation-block-data > small:first-child {
  min-width: 0;
  max-width: clamp(92px, 10vw, 178px);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.irrigation-block-label small {
  display: block;
}

.calicata-label {
  grid-template-columns: auto 1fr;
}

.calicata-row .calicata-label,
.calicata-detail-row .calicata-label {
  grid-template-columns: auto 1fr;
}

.irrigation-block-metric {
  display: inline-flex !important;
  flex: 0 0 auto;
  gap: 3px;
  align-items: center;
  color: #0b5f73 !important;
  font-weight: 900;
  text-align: left;
  white-space: nowrap;
  max-width: 100%;
  overflow: visible !important;
}

.irrigation-block-metric span {
  display: inline-flex;
  min-width: max-content;
  padding: 1px 3px;
  border: 1px solid rgba(11, 95, 115, 0.18);
  border-radius: 999px;
  background: #edf8fa;
  color: #0b5f73;
  font-size: 0.62rem;
  line-height: 1.2;
}

.irrigation-potrero-group {
  position: sticky;
  left: 0;
  z-index: 4;
  display: flex;
  gap: 10px;
  align-items: center;
  min-width: calc(614px + (var(--days) * 30px));
  min-height: 30px;
  padding: 5px 10px;
  border: 1px solid rgba(31, 111, 74, 0.22);
  border-radius: 8px;
  background: #dfeee3;
  color: var(--brand);
}

.irrigation-potrero-group-compact {
  min-height: 30px;
  padding: 5px 10px;
}

.calicata-detail-row.is-hidden {
  display: none;
}

.irrigation-potrero-group strong {
  font-size: 0.9rem;
}

.irrigation-potrero-group span {
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 900;
}

.irrigation-days {
  display: grid;
  grid-template-columns: repeat(var(--days), 28px);
  gap: 2px;
}

.irrigation-days b {
  display: grid;
  min-height: 28px;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: #eef5ef;
  color: var(--brand);
  font-size: 0.62rem;
}

.irrigation-date-cell {
  grid-template-rows: 1fr 1fr;
  gap: 1px;
  align-items: center;
  justify-items: center;
  line-height: 1;
}

.irrigation-date-cell span {
  color: #1f6f4a;
  font-size: 0.55rem;
  font-weight: 950;
}

.irrigation-date-cell em {
  color: var(--muted);
  font-size: 0.62rem;
  font-style: normal;
  font-weight: 900;
}

.irrigation-date-cell.is-weekend,
.irrigation-hour-input.is-weekend,
.calicata-day-cell.is-weekend,
.calicata-detail-cell.is-weekend {
  background: #fff7e6;
  border-color: rgba(168, 101, 0, 0.28);
}

.irrigation-date-cell.is-holiday,
.irrigation-hour-input.is-holiday,
.calicata-day-cell.is-holiday,
.calicata-detail-cell.is-holiday {
  background: #fdecec;
  border-color: rgba(180, 35, 24, 0.32);
}

.irrigation-gantt-program .irrigation-date-cell.is-weekend,
.irrigation-gantt-program .irrigation-hour-input.is-weekend {
  background: #fff4d8;
}

.irrigation-gantt-program .irrigation-date-cell.is-holiday,
.irrigation-gantt-program .irrigation-hour-input.is-holiday {
  background: #fbe4e4;
}

.irrigation-hour-input {
  display: grid;
  place-items: center;
  width: 28px;
  min-height: 28px;
  padding: 0;
  appearance: none;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: #ffffff;
  color: var(--ink);
  cursor: pointer;
  line-height: 1;
  text-align: center;
  font-size: 0.66rem;
  font-family: inherit;
  font-weight: 800;
}

.irrigation-hour-editor {
  cursor: text;
  appearance: textfield;
}

.irrigation-hour-cell:empty::after {
  content: "";
}

.irrigation-hour-input:focus {
  outline: 2px solid rgba(31, 111, 74, 0.2);
  border-color: var(--brand);
}

.irrigation-hour-input.has-hours {
  background: #e8f6ec;
  border-color: rgba(31, 111, 74, 0.35);
  color: var(--brand);
}

.irrigation-hour-input.has-hours.is-weekend {
  background: linear-gradient(0deg, rgba(31, 111, 74, 0.10), rgba(31, 111, 74, 0.10)), #fff7e6;
}

.irrigation-hour-input.has-hours.is-holiday {
  background: linear-gradient(0deg, rgba(31, 111, 74, 0.10), rgba(31, 111, 74, 0.10)), #fdecec;
}

.irrigation-program-cell {
  display: grid;
  width: 28px;
  min-height: 28px;
  place-items: center;
  border: 1px solid rgba(41, 127, 143, 0.18);
  border-radius: 5px;
  background: #f5fbfc;
  color: #0b5f73;
  font-size: 0.62rem;
  font-weight: 850;
  line-height: 1;
}

.irrigation-program-cell.has-program {
  background: #e6f5f7;
  border-color: rgba(41, 127, 143, 0.36);
}

.irrigation-total-head,
.irrigation-total {
  position: sticky;
  right: 86px;
  justify-content: center;
  text-align: center;
  font-weight: 900;
}

.irrigation-reposition-head,
.irrigation-reposition {
  position: sticky;
  right: 0;
  justify-content: center;
  text-align: center;
  font-weight: 900;
}

.irrigation-total-head {
  z-index: 30;
  background: #eef5ef;
  color: var(--brand);
}

.irrigation-total {
  color: var(--ink);
}

.irrigation-reposition-head {
  z-index: 31;
  background: #eef5ef;
  color: var(--brand);
}

.irrigation-reposition {
  color: #0b5f73;
  background: #f4fbfd;
}

.calicata-row {
  opacity: 0.92;
}

.calicata-row .calicata-label,
.calicata-detail-row .calicata-label {
  background: #f7faf6;
  border-style: dashed;
}

.calicata-day-cell {
  display: grid;
  width: 28px;
  min-height: 28px;
  place-items: center;
  border: 1px dashed var(--line);
  border-radius: 5px;
  background: #f7faf6;
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 900;
}

.calicata-day-cell.has-calicata {
  border-color: var(--calicata-border, rgba(37, 99, 168, 0.35));
  background: var(--calicata-bg, #eaf2ff);
  color: var(--calicata-color, var(--info));
}

.calicata-toggle {
  position: sticky;
  right: 86px;
  z-index: 2;
  width: 64px;
  min-height: 28px;
  border-radius: 6px;
  background: #f7faf6;
}

.calicata-detail-cell {
  display: grid;
  width: 28px;
  min-height: 24px;
  place-items: center;
  overflow: hidden;
  border: 1px dashed var(--line);
  border-radius: 5px;
  background: #ffffff;
  color: var(--muted);
  font-size: 0.54rem;
  font-weight: 900;
  text-align: center;
}

.calicata-detail-cell.has-calicata {
  border-color: rgba(37, 99, 168, 0.24);
  background: #f4f8ff;
  color: var(--info);
}

.calicata-detail-row .irrigation-block-label {
  min-height: 28px;
}

.calicata-detail-days {
  align-items: center;
}

.irrigation-note {
  color: var(--muted);
  font-size: 0.86rem;
}

.irrigation-tabs {
  display: flex;
  gap: 5px;
  align-items: center;
  overflow-x: auto;
  padding: 2px 0 4px;
  scrollbar-width: thin;
}

.irrigation-tab {
  flex: 0 0 auto;
  min-height: 28px;
  border: 1px solid rgba(31, 111, 74, 0.16);
  border-radius: 7px;
  padding: 3px 10px;
  background: #f7faf6;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 900;
}

.irrigation-tab.active {
  border-color: rgba(31, 111, 74, 0.38);
  background: #e8f6ec;
  color: var(--brand);
}

.irrigation-subpanel {
  display: grid;
  gap: 10px;
}

.irrigation-local-filters {
  display: flex;
  gap: 8px;
  align-items: end;
  justify-content: flex-end;
  min-width: 0;
}

.irrigation-local-filters label {
  display: grid;
  gap: 2px;
  min-width: min(220px, 100%);
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 900;
  text-transform: uppercase;
}

.irrigation-local-filters select {
  min-height: 28px;
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 3px 8px;
  background: #ffffff;
  color: var(--ink);
  font-size: 0.75rem;
  font-weight: 800;
}

.irrigation-bandeja-entry-panel {
  display: grid;
  gap: 8px;
  padding: 10px;
}

.irrigation-bandeja-entry-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
}

.irrigation-bandeja-entry-row div {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.irrigation-bandeja-entry-row strong {
  color: #0f3e32;
  font-size: 0.86rem;
}

.irrigation-bandeja-entry-row span {
  color: var(--muted);
  font-size: 0.66rem;
  font-weight: 750;
}

.irrigation-bandeja-entry-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  min-width: 0;
}

.irrigation-bandeja-view-switch {
  display: inline-grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  padding: 3px;
  border: 1px solid #bad7cd;
  border-radius: 7px;
  background: #eaf5f1;
}

.irrigation-bandeja-view-switch button {
  min-height: 29px;
  padding: 4px 10px;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: #47675d;
  font-size: 0.7rem;
  font-weight: 900;
  white-space: nowrap;
  cursor: pointer;
}

.irrigation-bandeja-view-switch button.active {
  background: #08775a;
  color: #ffffff;
  box-shadow: 0 2px 6px rgba(8, 89, 68, 0.2);
}

.module-loading-panel {
  display: grid;
  min-height: min(360px, calc(100svh - 220px));
  place-items: center;
}

.irrigation-bandeja-entry-panel .panel-header {
  margin-bottom: 8px;
}

.irrigation-bandeja-entry-panel h2 {
  margin: 0;
  font-size: 0.92rem;
}

.irrigation-bandeja-form {
  display: grid;
  grid-template-columns: minmax(150px, 0.8fr) minmax(120px, 0.7fr) minmax(160px, 1fr) auto;
  gap: 8px;
  align-items: end;
}

.irrigation-bandeja-form label {
  display: grid;
  gap: 3px;
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 900;
}

.irrigation-bandeja-form input {
  min-height: 32px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 5px 9px;
  background: #ffffff;
  color: var(--ink);
  font-weight: 800;
}

.irrigation-bandeja-form button {
  min-height: 32px;
  white-space: nowrap;
}

.irrigation-rain-form {
  grid-template-columns: minmax(150px, 0.8fr) minmax(120px, 0.7fr) auto 1fr;
  padding-top: 8px;
  border-top: 1px solid rgba(4, 108, 82, 0.16);
}

.irrigation-bandeja-dialog {
  width: min(720px, calc(100vw - 28px));
  gap: 12px;
  padding: 16px;
  border-radius: 12px;
  background: linear-gradient(135deg, #f7fbf9, #ffffff);
}

.irrigation-bandeja-dialog .dialog-header p {
  margin: 3px 0 0;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 750;
}

.irrigation-bandeja-dialog-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.irrigation-bandeja-dialog-form {
  display: grid;
  gap: 9px;
  padding: 12px;
  border: 1px solid #c8ddd5;
  border-radius: 10px;
  background: #ffffff;
}

.irrigation-bandeja-dialog-form-rain {
  border-color: #bfdbfe;
  background: #f8fbff;
}

.irrigation-bandeja-dialog-form > div {
  display: grid;
  gap: 2px;
}

.irrigation-bandeja-dialog-form strong {
  color: #0c4a3a;
  font-size: 0.86rem;
}

.irrigation-bandeja-dialog-form span {
  color: var(--muted);
  font-size: 0.64rem;
  font-weight: 750;
}

.irrigation-bandeja-dialog-form label {
  display: grid;
  gap: 4px;
  color: var(--muted);
  font-size: 0.66rem;
  font-weight: 900;
}

.irrigation-bandeja-dialog-form input {
  min-height: 36px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 6px 9px;
  background: #ffffff;
  color: var(--ink);
  font-weight: 850;
}

.irrigation-bandeja-dialog-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
}

.irrigation-bandeja-dialog-actions button {
  min-height: 34px;
  white-space: nowrap;
}

.irrigation-bandeja-navigation {
  display: flex;
  align-items: end;
  gap: 6px;
  min-width: 0;
}

.irrigation-bandeja-navigation label {
  display: grid;
  gap: 3px;
  color: var(--muted);
  font-size: 0.6rem;
  font-weight: 900;
}

.irrigation-bandeja-navigation input,
.irrigation-bandeja-navigation select {
  width: 118px;
  min-height: 30px;
  padding: 4px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-weight: 800;
}

.irrigation-bandeja-navigation .icon-button {
  width: 30px;
  min-width: 30px;
  min-height: 30px;
  border-radius: 6px;
  font-size: 1rem;
}

.irrigation-bandeja-history-panel {
  min-width: 0;
}

.irrigation-bandeja-analysis-drawer-note {
  display: grid;
  gap: 2px;
  min-width: 220px;
  padding: 6px 8px;
  color: #335f52;
}

.irrigation-bandeja-analysis-drawer-note strong {
  color: #0b604a;
  font-size: 0.74rem;
}

.irrigation-bandeja-analysis-drawer-note span {
  color: var(--muted);
  font-size: 0.63rem;
  font-weight: 750;
}

.irrigation-bandeja-analysis {
  display: grid;
  gap: 9px;
  min-width: 0;
}

.irrigation-bandeja-analysis-toolbar {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-width: 0;
  padding: 9px 11px;
  border-color: #b9d9ce;
  background: #f7fbf9;
}

.irrigation-bandeja-analysis-toolbar > div:first-child {
  display: grid;
  gap: 2px;
}

.irrigation-bandeja-analysis-toolbar > div:first-child strong {
  color: #0d4f3e;
  font-size: 0.78rem;
}

.irrigation-bandeja-analysis-toolbar > div:first-child span {
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 750;
}

.irrigation-bandeja-year-checks {
  display: flex;
  min-width: 0;
  max-height: 68px;
  align-items: center;
  gap: 5px;
  padding: 2px;
  overflow: auto;
  scrollbar-width: thin;
}

.irrigation-bandeja-year-checks label {
  display: inline-flex;
  min-height: 29px;
  align-items: center;
  gap: 4px;
  padding: 3px 7px;
  border: 1px solid #c7ddd5;
  border-radius: 6px;
  background: #ffffff;
  color: #244f42;
  font-size: 0.67rem;
  font-weight: 900;
  white-space: nowrap;
  cursor: pointer;
}

.irrigation-bandeja-year-checks label:has(input:checked) {
  border-color: #25886b;
  background: #e4f4ed;
  color: #08634b;
}

.irrigation-bandeja-year-checks label.is-historical-average {
  position: sticky;
  left: 0;
  z-index: 2;
  border-color: #94a3b8;
  background: #f1f5f9;
  color: #334155;
  box-shadow: 5px 0 8px rgba(15, 23, 42, 0.08);
}

.irrigation-bandeja-year-checks label.is-historical-average:has(input:checked) {
  border-color: #475569;
  background: #e2e8f0;
  color: #1e293b;
}

.irrigation-bandeja-year-checks input {
  width: 14px;
  height: 14px;
  margin: 0;
  accent-color: #08775a;
}

.irrigation-bandeja-analysis-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}

.irrigation-bandeja-analysis-actions button {
  min-height: 29px;
  padding: 4px 8px;
  font-size: 0.66rem;
  white-space: nowrap;
}

.irrigation-bandeja-trend-panel,
.irrigation-bandeja-analysis-table-panel {
  min-width: 0;
  padding: 10px;
  overflow: hidden;
}

.irrigation-bandeja-trend-panel .panel-header,
.irrigation-bandeja-analysis-table-panel .panel-header {
  margin-bottom: 7px;
}

.irrigation-bandeja-trend-panel .panel-header h3,
.irrigation-bandeja-analysis-table-panel .panel-header h3 {
  margin: 0;
  color: #123f34;
  font-size: 0.82rem;
}

.irrigation-bandeja-trend-panel .panel-header span,
.irrigation-bandeja-analysis-table-panel .panel-header span {
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 750;
}

.irrigation-bandeja-trend-legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 5px 10px;
}

.irrigation-bandeja-trend-legend span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: #385c52;
  font-size: 0.64rem;
  font-weight: 850;
}

.irrigation-bandeja-trend-legend span.is-current {
  color: #a94b05;
  font-weight: 950;
}

.irrigation-bandeja-trend-legend span.is-historical {
  color: #334155;
  font-weight: 950;
}

.irrigation-bandeja-trend-legend i {
  width: 16px;
  height: 3px;
  border-radius: 2px;
  background: var(--series-color);
}

.irrigation-bandeja-trend-scroll {
  width: 100%;
  min-width: 0;
  overflow-x: auto;
  border: 1px solid #d2e3dc;
  border-radius: 6px;
  background: #ffffff;
}

.irrigation-bandeja-trend {
  display: block;
  width: 100%;
  min-width: 760px;
  height: clamp(270px, 36vh, 360px);
  color: #567168;
  font-family: inherit;
  font-size: 11px;
}

.irrigation-bandeja-trend-grid {
  stroke: #dbe8e3;
  stroke-width: 1;
}

.irrigation-bandeja-trend-line {
  fill: none;
  stroke: var(--series-color);
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}

.irrigation-bandeja-trend-line.is-current {
  stroke-width: 3.4;
}

.irrigation-bandeja-trend-line.is-historical {
  stroke-width: 3;
  stroke-dasharray: 8 5;
}

.irrigation-bandeja-trend-point {
  fill: #ffffff;
  stroke: var(--series-color);
  stroke-width: 2.2;
  vector-effect: non-scaling-stroke;
}

.irrigation-bandeja-trend-point.is-current {
  fill: var(--series-color);
  stroke: #ffffff;
  stroke-width: 1.8;
}

.irrigation-bandeja-trend-point.is-historical {
  fill: var(--series-color);
  stroke: #ffffff;
  stroke-width: 1.5;
}

.irrigation-bandeja-trend-axis-title {
  fill: #45665c;
  font-size: 11px;
  font-weight: 900;
}

.irrigation-bandeja-analysis-tables {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  gap: 9px;
  min-width: 0;
}

.irrigation-bandeja-analysis-table-scroll {
  width: 100%;
  max-height: 430px;
  overflow: auto;
  border: 1px solid #d2e3dc;
  border-radius: 6px;
}

.irrigation-bandeja-analysis-table {
  width: 100%;
  min-width: calc(104px + var(--bandeja-analysis-year-count, 1) * 64px);
  table-layout: fixed;
  border-collapse: separate;
  border-spacing: 0;
  background: #ffffff;
  font-variant-numeric: tabular-nums;
}

.irrigation-bandeja-analysis-table col.is-month-column {
  width: 104px;
}

.irrigation-bandeja-analysis-table col.is-year-column {
  width: 64px;
}

.irrigation-bandeja-analysis-table th,
.irrigation-bandeja-analysis-table td {
  height: 29px;
  padding: 4px 7px;
  border-right: 1px solid #dbe8e3;
  border-bottom: 1px solid #dbe8e3;
  color: #294a40;
  font-size: 0.66rem;
  text-align: right;
  white-space: nowrap;
}

.irrigation-bandeja-analysis-table thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  background: #e4f2ed;
  color: #0c553f;
  font-weight: 950;
}

.irrigation-bandeja-analysis-table th:first-child {
  position: sticky;
  left: 0;
  z-index: 2;
  background: #f0f7f4;
  text-align: left;
}

.irrigation-bandeja-analysis-table thead th:first-child {
  z-index: 4;
  background: #dceee7;
}

.irrigation-bandeja-analysis-table thead small {
  display: block;
  color: #a14a08;
  font-size: 0.5rem;
}

.irrigation-bandeja-analysis-table .is-current-year {
  background: #fff4df;
  color: #914306;
  font-weight: 900;
}

.irrigation-bandeja-analysis-table tfoot th,
.irrigation-bandeja-analysis-table tfoot td {
  position: sticky;
  bottom: 0;
  z-index: 2;
  background: #dceee7;
  color: #123f34;
  font-weight: 950;
}

.irrigation-bandeja-analysis-table tfoot th {
  z-index: 4;
}

.irrigation-bandeja-summary {
  display: flex;
  align-items: center;
  gap: 16px;
  min-width: 0;
  padding: 7px 10px;
  border: 1px solid #b9d9ce;
  border-radius: 7px;
  background: #eaf7f2;
  color: var(--muted);
  font-size: 0.68rem;
}

.irrigation-bandeja-summary span {
  display: flex;
  align-items: baseline;
  gap: 4px;
  min-width: 0;
}

.irrigation-bandeja-summary strong {
  color: #066b51;
  font-size: 0.78rem;
}

.irrigation-bandeja-matrix-panel {
  min-width: 0;
  padding: 8px;
  overflow: hidden;
}

.irrigation-bandeja-matrix-help {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 0 2px 7px;
  color: var(--muted);
  font-size: 0.65rem;
  font-weight: 700;
}

.irrigation-bandeja-matrix-scroll {
  position: relative;
  width: 100%;
  max-width: 100%;
  height: clamp(430px, calc(100svh - 255px), 760px);
  min-width: 0;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #f7fbf9;
  overscroll-behavior: contain;
  scrollbar-color: #76a998 #dcebe5;
  scrollbar-width: thin;
}

.irrigation-bandeja-matrix-content {
  width: max-content;
  min-width: 100%;
}

.irrigation-bandeja-month {
  padding: 0 0 14px;
}

.irrigation-bandeja-month + .irrigation-bandeja-month {
  border-top: 3px solid #8abaaa;
}

.irrigation-bandeja-matrix-table {
  --bandeja-day-width: 48px;
  --bandeja-date-width: 82px;
  --bandeja-value-width: 68px;
  --bandeja-accum-width: 76px;
  --bandeja-rain-width: 68px;
  --bandeja-historical-width: 112px;
  width: calc(var(--bandeja-day-width) + var(--bandeja-years) * (var(--bandeja-date-width) + var(--bandeja-value-width) + var(--bandeja-accum-width) + var(--bandeja-rain-width)) + var(--bandeja-historical-width));
  min-width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
  background: #ffffff;
  overflow: visible;
}

.irrigation-bandeja-matrix-table col.bandeja-col-day {
  width: var(--bandeja-day-width);
}

.irrigation-bandeja-matrix-table col.bandeja-col-date {
  width: var(--bandeja-date-width);
}

.irrigation-bandeja-matrix-table col.bandeja-col-value {
  width: var(--bandeja-value-width);
}

.irrigation-bandeja-matrix-table col.bandeja-col-accum {
  width: var(--bandeja-accum-width);
}

.irrigation-bandeja-matrix-table col.bandeja-col-rain {
  width: var(--bandeja-rain-width);
}

.irrigation-bandeja-matrix-table col.bandeja-col-historical {
  width: var(--bandeja-historical-width);
}

.irrigation-bandeja-matrix-table th,
.irrigation-bandeja-matrix-table td {
  height: 27px;
  padding: 3px 5px;
  overflow: hidden;
  border-right: 1px solid #d7e5df;
  border-bottom: 1px solid #d7e5df;
  color: #203b33;
  font-size: 0.64rem;
  line-height: 1.05;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.irrigation-bandeja-matrix-table thead {
  position: static;
  z-index: 12;
}

.irrigation-bandeja-matrix-table thead th {
  background: #e7f3ee;
  color: #17483a;
  font-weight: 900;
}

.irrigation-bandeja-matrix-table .bandeja-month-heading th {
  position: sticky;
  top: 0;
  z-index: 28;
  height: 32px;
  padding: 0;
  background: #08775a;
  color: #ffffff;
  text-align: left;
}

.irrigation-bandeja-matrix-table .bandeja-month-heading div {
  position: static;
  display: flex;
  width: 100%;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 7px 10px;
}

.irrigation-bandeja-matrix-table .bandeja-month-heading .bandeja-month-fixed {
  left: 0;
  z-index: 29;
  box-shadow: 3px 0 0 rgba(3, 83, 62, 0.5);
}

.irrigation-bandeja-matrix-table .bandeja-month-heading .bandeja-month-fill {
  z-index: 28;
}

.irrigation-bandeja-matrix-table .bandeja-month-heading strong {
  font-size: 0.76rem;
}

.irrigation-bandeja-matrix-table .bandeja-month-heading span {
  color: #dff8ef;
  font-size: 0.62rem;
  font-weight: 800;
}

.irrigation-bandeja-matrix-table .bandeja-year-heading th {
  position: sticky;
  top: 32px;
  z-index: 24;
  height: 27px;
  border-top: 1px solid #b9d2c9;
}

.irrigation-bandeja-matrix-table .bandeja-fields-heading th {
  position: sticky;
  top: 59px;
  z-index: 23;
  height: 24px;
  background: #f0f7f4;
  font-size: 0.58rem;
  box-shadow: 0 2px 0 #b8d2c8;
}

.irrigation-bandeja-matrix-table .bandeja-day {
  position: sticky;
  left: 0;
  z-index: 10;
  background: #eef7f3;
  color: #075f49;
  font-weight: 900;
  box-shadow: 2px 0 0 #c6ddd5;
}

.irrigation-bandeja-matrix-table .bandeja-historical {
  position: sticky;
  right: 0;
  z-index: 9;
  background: #fff6d9;
  color: #765100;
  font-weight: 900;
  box-shadow: -2px 0 0 #ead9a0;
}

.irrigation-bandeja-matrix-table .bandeja-year-heading .bandeja-day,
.irrigation-bandeja-matrix-table .bandeja-year-heading .bandeja-historical {
  z-index: 27;
}

.irrigation-bandeja-matrix-table .bandeja-historical small {
  display: block;
  margin-top: 2px;
  color: #91711f;
  font-size: 0.52rem;
}

.irrigation-bandeja-matrix-table .bandeja-date {
  color: #60746d;
  font-variant-numeric: tabular-nums;
}

.irrigation-bandeja-matrix-table .bandeja-value.has-value {
  background: #e6f5ed;
  color: #086247;
  font-weight: 900;
}

.irrigation-bandeja-matrix-table .bandeja-accum {
  background: #edf7fa;
  color: #176378;
  font-weight: 800;
}

.irrigation-bandeja-matrix-table .bandeja-accum.is-carried {
  color: #78939b;
  font-weight: 700;
}

.irrigation-bandeja-matrix-table .bandeja-rain {
  background: #eef6ff;
  color: #1d4f91;
  font-weight: 800;
}

.irrigation-bandeja-matrix-table .bandeja-rain.has-rain {
  background: #dbeafe;
  color: #1d4ed8;
  font-weight: 900;
}

.irrigation-bandeja-matrix-table .is-unavailable {
  background: #f1f3f2;
  color: #a7b0ad;
}

.irrigation-bandeja-matrix-table .is-focus-year {
  box-shadow: inset 0 2px 0 #f59e0b, inset 0 -2px 0 #f59e0b;
}

.irrigation-bandeja-matrix-table .bandeja-year-heading .is-focus-year {
  background: #fff0c4;
  color: #725000;
}

.irrigation-bandeja-matrix-table tfoot th,
.irrigation-bandeja-matrix-table tfoot td {
  height: 31px;
  background: #dceee7;
  color: #16483a;
  font-weight: 900;
}

.irrigation-bandeja-matrix-table tfoot .bandeja-historical {
  background: #ffe8a3;
  color: #684600;
}

.irrigation-program-tool {
  display: grid;
  gap: 6px;
  padding: 7px;
  border: 1px solid rgba(16, 185, 129, 0.24);
  border-radius: 9px;
  background: linear-gradient(135deg, rgba(236, 253, 245, 0.96), rgba(255, 255, 255, 0.96));
}

.irrigation-program-dialog {
  width: min(920px, calc(100vw - 26px));
  max-height: min(88vh, 820px);
  overflow: auto;
  gap: 12px;
  padding: 16px;
  border-radius: 14px;
  background:
    linear-gradient(135deg, rgba(236, 253, 245, 0.96), rgba(255, 255, 255, 0.98));
}

.irrigation-program-dialog .dialog-header p {
  margin: 3px 0 0;
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 800;
}

.program-dialog-summary {
  padding: 8px 10px;
  border: 1px solid rgba(16, 185, 129, 0.20);
  border-radius: 10px;
  background: #ffffff;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 800;
}

.program-auto-preview {
  display: grid;
  gap: 4px;
  max-height: 124px;
  overflow: auto;
  padding: 8px 10px;
  border-radius: 10px;
  background: #ecfdf5;
  border: 1px solid rgba(16, 185, 129, 0.22);
  color: #064e3b;
  font-size: 0.68rem;
  font-weight: 850;
}

.irrigation-program-tool-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
}

.irrigation-program-tool-head strong {
  color: var(--brand);
  font-size: 0.78rem;
}

.irrigation-program-tool-head span {
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 900;
}

.irrigation-program-tool-controls {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  align-items: end;
}

.irrigation-program-tool-controls label,
.irrigation-program-blocks label {
  display: grid;
  gap: 3px;
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 900;
}

.irrigation-program-tool-controls input {
  min-height: 28px;
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 4px 7px;
  background: #ffffff;
  color: var(--ink);
  font-weight: 800;
}

.irrigation-program-tool-controls select {
  min-height: 28px;
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 4px 7px;
  background: #ffffff;
  color: var(--ink);
  font-weight: 800;
}

.irrigation-program-tool-controls button {
  min-height: 28px;
}

.irrigation-hour-input.has-audit {
  box-shadow: inset 0 -2px 0 rgba(245, 158, 11, 0.72);
}

.irrigation-hour-input.has-observation {
  background-image: linear-gradient(#dc2626, #dc2626);
  background-position: calc(100% - 2px) 2px;
  background-repeat: no-repeat;
  background-size: 6px 6px;
}

.irrigation-hour-input.is-selected {
  position: relative;
  z-index: 2;
  outline: 2px solid #0b5f73;
  outline-offset: -1px;
  border-color: #0b5f73;
}

.irrigation-hour-input.is-syncing {
  border-color: #f59e0b !important;
  box-shadow: inset 0 -3px 0 #f59e0b;
}

.irrigation-hour-input.is-synced {
  border-color: #16a34a !important;
  animation: irrigationSyncSuccess 900ms ease both;
}

.irrigation-hour-input.is-sync-error {
  border-color: #dc2626 !important;
  box-shadow: inset 0 -3px 0 #dc2626;
}

@keyframes irrigationSyncSuccess {
  0%, 100% { box-shadow: none; }
  35% { box-shadow: inset 0 0 0 2px rgba(22, 163, 74, 0.45); }
}

.irrigation-observation-summary {
  display: grid;
  grid-template-columns: 70px minmax(120px, 1fr) minmax(150px, 1fr);
  gap: 6px;
}

.irrigation-observation-summary span {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 7px 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #f7faf8;
}

.irrigation-observation-summary small {
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 800;
}

.irrigation-observation-summary strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.72rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#irrigationObservationDialog {
  width: min(430px, calc(100vw - 24px));
}

.irrigation-observation-dialog {
  display: grid;
  gap: 12px;
  padding: 18px;
}

.irrigation-observation-dialog .dialog-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.irrigation-observation-dialog .dialog-header h3 {
  margin: 0 0 3px;
}

.irrigation-observation-dialog .dialog-header p {
  margin: 0;
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 750;
}

.irrigation-observation-dialog label {
  display: grid;
  gap: 5px;
  color: var(--ink);
  font-size: 0.75rem;
  font-weight: 850;
}

.program-auto-preview > span {
  padding: 4px 6px;
  border-radius: 6px;
}

.program-auto-preview .is-warning {
  background: #fff7df;
  color: #8a5200;
  box-shadow: inset 3px 0 0 #f59e0b;
}

.program-annual-section {
  display: grid;
  gap: 10px;
  padding: 10px;
  border: 1px solid rgba(14, 116, 144, 0.22);
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(240, 249, 255, 0.96), rgba(255, 255, 255, 0.98));
}

.program-annual-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 10px;
}

.program-annual-head div {
  display: grid;
  gap: 2px;
}

.program-annual-head strong {
  color: #0b5f73;
  font-size: 0.86rem;
  font-weight: 950;
}

.program-annual-head span {
  color: var(--muted);
  font-size: 0.66rem;
  font-weight: 850;
}

.program-annual-head > span {
  padding: 4px 8px;
  border-radius: 999px;
  background: #e0f2fe;
  color: #075985;
}

.program-annual-controls {
  grid-template-columns: minmax(160px, 1.35fr) repeat(4, minmax(100px, 1fr));
}

.program-annual-months {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 5px;
}

.program-annual-month {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-height: 28px;
  padding: 4px 5px;
  border: 1px solid rgba(14, 116, 144, 0.18);
  border-radius: 8px;
  background: #ffffff;
  color: #0b5f73;
  font-size: 0.62rem;
  font-weight: 900;
}

.program-annual-bulk {
  display: grid;
  grid-template-columns: minmax(160px, 1fr) auto;
  gap: 8px;
  align-items: end;
}

.program-annual-bulk label {
  display: grid;
  gap: 3px;
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 900;
}

.program-annual-bulk input,
.program-annual-block-row input[type="number"] {
  min-height: 28px;
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 4px 7px;
  background: #ffffff;
  color: var(--ink);
  font-weight: 850;
}

.program-annual-blocks {
  display: grid;
  gap: 5px;
  max-height: 210px;
  overflow: auto;
  padding: 7px;
  border: 1px solid rgba(14, 116, 144, 0.14);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.78);
}

.program-annual-block-row {
  display: grid;
  grid-template-columns: auto minmax(220px, 1fr) minmax(92px, auto) 86px;
  gap: 8px;
  align-items: center;
  min-width: 0;
  padding: 6px 8px;
  border: 1px solid rgba(14, 116, 144, 0.14);
  border-radius: 9px;
  background: #ffffff;
}

.program-annual-block-main {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.program-annual-block-main strong,
.program-annual-block-main small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.program-annual-block-main strong {
  color: var(--ink);
  font-size: 0.72rem;
  font-weight: 950;
}

.program-annual-block-main small,
.program-annual-block-meta {
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 850;
}

.program-annual-preview {
  background: #f0f9ff;
  border-color: rgba(14, 116, 144, 0.20);
  color: #0b5f73;
}

.irrigation-base-hours-dialog {
  width: min(760px, calc(100vw - 24px));
  max-height: min(86vh, 760px);
  overflow: auto;
  gap: 12px;
  padding: 16px;
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(236, 253, 245, 0.98), rgba(255, 255, 255, 0.98));
}

.irrigation-base-hours-list {
  display: grid;
  gap: 6px;
  max-height: 48vh;
  overflow: auto;
  padding: 7px;
  border: 1px solid rgba(16, 185, 129, 0.18);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.78);
}

.irrigation-base-hours-row {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) 110px;
  gap: 10px;
  align-items: center;
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid rgba(16, 185, 129, 0.18);
  border-radius: 9px;
  background: #ffffff;
}

.irrigation-base-hours-row span {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.irrigation-base-hours-row strong,
.irrigation-base-hours-row small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.irrigation-base-hours-row strong {
  color: var(--ink);
  font-size: 0.76rem;
  font-weight: 950;
}

.irrigation-base-hours-row small {
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 800;
}

.irrigation-base-hours-row input {
  min-height: 32px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 4px 8px;
  background: #ffffff;
  color: var(--ink);
  font-weight: 900;
}

.program-annual-loading {
  display: grid;
  justify-items: center;
  gap: 7px;
  padding: 14px;
  border: 1px solid rgba(14, 116, 144, 0.22);
  border-radius: 12px;
  background: rgba(240, 249, 255, 0.96);
  color: #0b5f73;
  text-align: center;
}

.program-annual-loading[hidden] {
  display: none;
}

.program-annual-loading strong {
  font-size: 0.82rem;
  font-weight: 950;
}

.program-annual-loading small {
  color: var(--muted);
  font-size: 0.66rem;
  font-weight: 800;
}

.program-annual-spinner {
  width: 30px;
  height: 30px;
  border: 3px solid rgba(14, 116, 144, 0.18);
  border-top-color: #0e7490;
  border-radius: 999px;
  animation: annualProgramSpin 800ms linear infinite;
}

@keyframes annualProgramSpin {
  to { transform: rotate(360deg); }
}

@media (max-width: 760px) {
  .program-annual-controls,
  .program-annual-bulk,
  .program-annual-block-row,
  .irrigation-base-hours-row {
    grid-template-columns: 1fr;
  }

  .program-annual-months {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .program-annual-block-row {
    align-items: stretch;
  }
}

.irrigation-observation-dialog textarea {
  min-height: 112px;
  line-height: 1.4;
}

.irrigation-observation-meta {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  margin-top: -7px;
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 750;
}

.irrigation-observation-dialog .dialog-actions {
  display: flex;
  justify-content: flex-end;
  gap: 7px;
}

.irrigation-observation-dialog .dialog-actions .danger-button {
  margin-right: auto;
}

.irrigation-program-blocks {
  display: flex;
  gap: 5px;
  overflow-x: auto;
  padding-bottom: 2px;
}

.irrigation-program-blocks-dialog {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(74px, 1fr));
  max-height: 124px;
  overflow: auto;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #f8fcf9;
}

.irrigation-program-blocks label {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 6px;
  border: 1px solid rgba(16, 185, 129, 0.22);
  border-radius: 8px;
  background: #ffffff;
  color: var(--ink);
}

.program-block-chip {
  min-width: 0;
}

.program-block-chip span {
  color: var(--brand);
  font-size: 0.68rem;
  font-weight: 950;
}

.program-block-chip small {
  color: var(--muted);
  font-size: 0.5rem;
  font-weight: 800;
}

.program-block-chip em {
  padding: 1px 5px;
  border-radius: 999px;
  background: #ecfdf5;
  color: #047857;
  font-size: 0.5rem;
  font-style: normal;
  font-weight: 950;
}

.dialog-section-label {
  display: block;
  margin: 10px 0 6px;
  color: var(--brand);
  font-size: 0.78rem;
}

.irrigation-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.irrigation-kpis-two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.irrigation-kpis-three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.irrigation-kpis .kpi {
  min-height: 82px;
  padding: 10px 12px;
}

.irrigation-kpis .kpi strong {
  font-size: 1.15rem;
}

.irrigation-report-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: 10px;
}

.irrigation-balance-charts {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: 10px;
  align-items: stretch;
  --balance-chart-height: min(62svh, 640px);
}

.irrigation-balance-charts .chart-panel {
  height: var(--balance-chart-height);
  min-height: 0;
  overflow: hidden;
  padding: 12px;
}

.irrigation-balance-toolbar {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: end;
  padding: 10px 12px;
  border: 1px solid rgba(31, 111, 74, 0.14);
  border-radius: 10px;
  background: #f7fbf8;
}

.irrigation-balance-toolbar > div {
  display: grid;
  gap: 2px;
}

.irrigation-balance-toolbar strong {
  color: var(--brand);
  font-size: 0.95rem;
}

.irrigation-balance-toolbar span {
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 850;
}

.irrigation-balance-toolbar label {
  min-width: 190px;
}

.irrigation-balance-chart {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(72px, 1fr));
  gap: 8px;
  max-height: calc(var(--balance-chart-height) - 88px);
  min-height: calc(var(--balance-chart-height) - 116px);
  overflow: auto;
  align-items: end;
}

.irrigation-balance-potrero-bar {
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--text);
  cursor: pointer;
}

.irrigation-balance-potrero-bar > div {
  display: flex;
  align-items: end;
  gap: 4px;
  height: 150px;
  padding: 5px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 8px;
  background: #f4f8f5;
}

.irrigation-balance-potrero-bar.active > div {
  border-color: rgba(31, 111, 74, 0.55);
  box-shadow: 0 0 0 2px rgba(31, 111, 74, 0.10);
}

.irrigation-balance-potrero-bar i {
  position: relative;
  display: block;
  width: 50%;
  min-height: 3px;
  border-radius: 6px 6px 3px 3px;
}

.irrigation-balance-potrero-bar i em {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 3px);
  transform: translateX(-50%);
  color: #24352c;
  font-size: 0.58rem;
  font-style: normal;
  font-weight: 950;
  line-height: 1;
  white-space: nowrap;
}

.irrigation-balance-potrero-bar strong,
.irrigation-balance-potrero-bar span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: center;
  font-size: 0.68rem;
  font-weight: 950;
}

.irrigation-balance-potrero-bar span {
  color: var(--muted);
  font-size: 0.62rem;
}

.irrigation-balance-block-chart {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(92px, 1fr));
  align-items: stretch;
  align-content: start;
  gap: 8px;
  max-height: calc(var(--balance-chart-height) - 88px);
  min-height: calc(var(--balance-chart-height) - 116px);
  overflow: auto;
  padding-right: 3px;
}

.irrigation-annual-balance-panel {
  margin-top: 10px;
  padding: 12px;
}

.irrigation-annual-balance-chart {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 8px;
  max-height: 320px;
  overflow: auto;
  padding-right: 3px;
}

.irrigation-annual-potrero-row {
  display: grid;
  grid-template-columns: minmax(76px, 0.38fr) minmax(0, 1fr);
  gap: 8px;
  align-items: center;
  min-width: 0;
  padding: 8px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 9px;
  background: #f8fbf8;
  color: var(--text);
  cursor: pointer;
  text-align: left;
  transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

.irrigation-annual-potrero-row:hover,
.irrigation-annual-potrero-row.active {
  border-color: rgba(31, 111, 74, 0.46);
  box-shadow: 0 8px 18px rgba(22, 74, 51, 0.08);
  transform: translateY(-1px);
}

.irrigation-annual-potrero-name {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.irrigation-annual-potrero-name strong,
.irrigation-annual-potrero-name span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.irrigation-annual-potrero-name strong {
  color: #143f2b;
  font-size: 0.76rem;
  font-weight: 950;
}

.irrigation-annual-potrero-name span {
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 850;
}

.irrigation-annual-bars {
  display: grid;
  gap: 5px;
  min-width: 0;
}

.irrigation-annual-bars span {
  position: relative;
  display: grid;
  grid-template-columns: 54px minmax(48px, 1fr) 64px;
  gap: 6px;
  align-items: center;
  min-width: 0;
}

.irrigation-annual-bars em,
.irrigation-annual-bars b {
  min-width: 0;
  color: #334a3d;
  font-size: 0.58rem;
  font-style: normal;
  font-weight: 950;
  white-space: nowrap;
}

.irrigation-annual-bars b {
  text-align: right;
}

.irrigation-annual-bars i {
  display: block;
  min-width: 3px;
  height: 9px;
  border-radius: 999px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.28);
}

.irrigation-annual-bars .program {
  background: linear-gradient(90deg, #2f8b99, #55b6c3);
}

.irrigation-annual-bars .real {
  background: linear-gradient(90deg, #1f6f4a, #3ba56f);
}

.irrigation-bandeja-charts {
  grid-template-columns: 1fr;
}

.irrigation-bandeja-chart {
  display: grid;
  grid-template-columns: repeat(var(--days, 31), minmax(14px, 1fr));
  gap: 4px;
  align-items: end;
  min-height: 150px;
  overflow-x: auto;
  padding-bottom: 4px;
}

.irrigation-bandeja-day {
  display: grid;
  gap: 4px;
  min-width: 14px;
  align-items: end;
  justify-items: center;
}

.irrigation-bandeja-day > div {
  display: flex;
  gap: 2px;
  align-items: end;
  width: 100%;
  height: 126px;
  border-radius: 6px;
  background: #f2f6f3;
  padding: 2px;
}

.irrigation-bandeja-day i {
  position: relative;
  display: block;
  width: 50%;
  min-height: 2px;
  border-radius: 4px 4px 2px 2px;
}

.irrigation-bandeja-day i em,
.irrigation-volume-bars i em {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 2px);
  transform: translateX(-50%) rotate(-90deg);
  transform-origin: center;
  color: #34433a;
  font-size: 0.5rem;
  font-style: normal;
  font-weight: 950;
  line-height: 1;
  white-space: nowrap;
}

.irrigation-bandeja-day span {
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 900;
}

.irrigation-volume-chart {
  display: grid;
  grid-template-columns: repeat(var(--days, 31), minmax(14px, 1fr));
  gap: 4px;
  align-items: end;
  min-height: 150px;
  overflow-x: auto;
  padding-bottom: 4px;
}

.irrigation-volume-day {
  display: grid;
  gap: 4px;
  min-width: 14px;
  align-items: end;
  justify-items: center;
}

.irrigation-volume-bars {
  display: flex;
  gap: 2px;
  align-items: end;
  width: 100%;
  height: 126px;
  border-radius: 6px;
  background: #f2f6f3;
  padding: 2px;
}

.irrigation-volume-bars i {
  position: relative;
  display: block;
  width: 50%;
  min-height: 2px;
  border-radius: 4px 4px 2px 2px;
}

.irrigation-volume-day span {
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 900;
}

.irrigation-chart-legend {
  display: flex;
  gap: 10px;
  align-items: center;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 900;
}

.irrigation-chart-legend span {
  display: inline-flex;
  gap: 5px;
  align-items: center;
}

.irrigation-chart-legend i {
  width: 10px;
  height: 10px;
  border-radius: 3px;
}

.irrigation-volume-bars .program,
.irrigation-chart-legend .program,
.irrigation-block-chart-bars .program,
.irrigation-balance-potrero-bar .program {
  background: #297f8f;
}

.irrigation-volume-bars .real,
.irrigation-chart-legend .real,
.irrigation-block-chart-bars .real,
.irrigation-balance-potrero-bar .real,
.irrigation-bandeja-day .real {
  background: #1f6f4a;
}

.irrigation-chart-legend .historical,
.irrigation-bandeja-day .historical {
  background: #d4a017;
}

.irrigation-block-chart-row {
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 5px;
  min-height: 198px;
  padding: 7px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 8px;
  background: #f8fbf8;
}

.irrigation-block-chart-row > div:first-child {
  display: grid;
  gap: 2px;
  align-items: start;
}

.irrigation-block-chart-row strong,
.irrigation-block-chart-row span {
  min-width: 0;
  font-size: 0.72rem;
}

.irrigation-block-chart-row strong {
  display: -webkit-box;
  overflow: hidden;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  line-height: 1.1;
}

.irrigation-block-chart-row span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.irrigation-block-chart-row span {
  color: var(--muted);
  font-weight: 900;
}

.irrigation-block-chart-bars {
  display: flex;
  align-items: end;
  justify-content: center;
  gap: 4px;
  min-height: 112px;
  padding: 4px;
  border-radius: 7px;
  background: #eef5ef;
}

.irrigation-block-chart-bars i {
  position: relative;
  display: block;
  width: 50%;
  max-width: 28px;
  min-height: 3px;
  border-radius: 6px 6px 3px 3px;
}

.irrigation-block-chart-bars i em {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 3px);
  transform: translateX(-50%);
  color: #24352c;
  font-size: 0.56rem;
  font-style: normal;
  font-weight: 950;
  line-height: 1;
  white-space: nowrap;
}

.irrigation-block-chart-row small {
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 900;
  line-height: 1.15;
}

.irrigation-report-panel {
  min-width: 0;
  padding: 12px;
}

.irrigation-report-panel .panel-header {
  margin-bottom: 8px;
}

.irrigation-report-panel .panel-header h2 {
  font-size: 0.92rem;
}

.irrigation-report-panel .panel-header p {
  font-size: 0.68rem;
}

.irrigation-table-scroll {
  max-height: calc(100vh - 285px);
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
}

.irrigation-table-scroll table {
  min-width: 680px;
}

.irrigation-table-scroll th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #eef5ef;
}

.irrigation-diff-pill {
  display: inline-flex;
  min-width: 68px;
  justify-content: center;
  border-radius: 999px;
  padding: 2px 7px;
  font-weight: 900;
}

.irrigation-diff-pill.is-over {
  background: #fff6df;
  color: #9a5b00;
}

.irrigation-diff-pill.is-under {
  background: #eef5ff;
  color: #1d4f91;
}

.irrigation-diff-pill.is-even {
  background: #e8f6ec;
  color: var(--brand);
}

.irrigation-diff-pill.is-empty {
  background: #f6f7f6;
  color: var(--muted);
}

.irrigation-balance-summary-panel {
  padding: 12px;
}

.irrigation-balance-matrix {
  display: grid;
  gap: 3px;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #ffffff;
  padding: 5px;
}

.irrigation-balance-row {
  display: grid;
  grid-template-columns: minmax(150px, 0.9fr) minmax(calc(var(--days, 31) * 24px), 3fr) 74px 74px 74px;
  gap: 4px;
  align-items: stretch;
  min-width: calc(150px + var(--days, 31) * 24px + 238px);
}

.irrigation-balance-row > div {
  min-height: 28px;
}

.irrigation-balance-row-head {
  position: sticky;
  top: 0;
  z-index: 2;
  color: #214333;
  font-size: 0.66rem;
  font-weight: 950;
}

.irrigation-balance-row-head > div {
  display: grid;
  place-items: center;
  border-radius: 6px;
  background: #edf6ef;
}

.irrigation-balance-block-label {
  display: grid;
  align-content: center;
  gap: 1px;
  padding: 4px 7px;
  border-radius: 7px;
  background: #f8fbf8;
  border: 1px solid rgba(31, 111, 74, 0.10);
}

.irrigation-balance-block-label strong,
.irrigation-balance-block-label span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.irrigation-balance-block-label strong {
  font-size: 0.72rem;
}

.irrigation-balance-block-label span {
  color: var(--muted);
  font-size: 0.58rem;
  font-weight: 900;
}

.irrigation-balance-days {
  display: grid;
  grid-template-columns: repeat(var(--days, 31), minmax(22px, 1fr));
  gap: 3px;
}

.irrigation-balance-days b,
.irrigation-balance-days span {
  display: grid;
  place-items: center;
  min-height: 28px;
  border-radius: 5px;
  border: 1px solid rgba(31, 111, 74, 0.10);
  background: #fbfdfb;
  color: #244332;
  font-size: 0.58rem;
  font-weight: 950;
}

.irrigation-balance-days span.has-volume {
  background: #e4f6ea;
  border-color: rgba(31, 111, 74, 0.28);
  color: #124f34;
}

.irrigation-balance-days .is-weekend {
  background: #fff8e5;
}

.irrigation-balance-days .is-holiday {
  background: #ffecec;
  border-color: rgba(220, 38, 38, 0.25);
}

.irrigation-balance-total {
  display: grid;
  place-items: center;
  border-radius: 7px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  background: #f7fbf8;
  font-size: 0.66rem;
  font-weight: 950;
}

.irrigation-balance-row > .irrigation-diff-pill {
  align-self: stretch;
  min-width: 0;
  border-radius: 7px;
}

.satellite-panel {
  display: grid;
  gap: 10px;
}

.satellite-toolbar {
  position: sticky;
  top: 0;
  z-index: 85;
  display: grid;
  grid-template-columns: minmax(190px, 0.36fr) minmax(0, 1fr);
  gap: 10px;
  align-items: end;
  padding: 10px 12px;
  border: 1px solid rgba(31, 111, 74, 0.14);
  border-radius: 10px;
  background: rgba(247, 251, 248, 0.98);
  box-shadow: 0 8px 20px rgba(16, 54, 40, 0.08);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.irrigation-panel-satellite {
  align-content: start;
  gap: 8px;
}

.satellite-toolbar > div:first-child {
  display: grid;
  gap: 2px;
}

.satellite-toolbar strong {
  color: var(--brand);
  font-size: 0.95rem;
}

.satellite-toolbar span {
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 850;
}

.satellite-controls {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(86px, 1fr));
  gap: 6px;
  align-items: end;
}

@media (min-width: 981px) {
  .satellite-controls {
    grid-template-columns: minmax(125px, 0.8fr) minmax(125px, 0.8fr) minmax(190px, 1.3fr) minmax(90px, 0.55fr) minmax(84px, 0.45fr);
  }

  .satellite-controls .satellite-map-type-control,
  .satellite-controls label:has(input[type="date"]) {
    grid-column: auto;
  }
}

.satellite-controls .primary-button {
  min-height: 30px;
  padding: 6px 10px;
}

.satellite-mosaic-control {
  grid-column: span 2;
}

.satellite-map-type-control {
  grid-column: span 2;
}

.satellite-layer-style-control {
  grid-column: span 2;
}

.satellite-layer-toggles {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  min-width: 0;
  padding: 5px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.72);
}

.satellite-layer-toggles label {
  display: inline-flex;
  flex: 0 0 auto;
  flex-direction: row;
  gap: 5px;
  align-items: center;
  min-height: 24px;
  padding: 3px 7px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 999px;
  background: #eef7f1;
  color: #174832;
  font-size: 0.63rem;
  font-weight: 950;
  line-height: 1;
}

.satellite-layer-toggles label:has(input:checked) {
  border-color: rgba(8, 119, 90, 0.38);
  background: #dff2e9;
  box-shadow: inset 0 0 0 1px rgba(8, 119, 90, 0.08);
}

.satellite-layer-toggles input {
  width: 13px;
  height: 13px;
  min-height: 0;
  margin: 0;
  padding: 0;
  accent-color: var(--brand);
}

.satellite-use-chip {
  grid-column: 2;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  min-width: 0;
  padding: 7px 9px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.72);
}

.satellite-use-chip strong {
  color: var(--brand);
  font-size: 0.76rem;
  font-weight: 950;
}

.satellite-use-chip span,
.satellite-use-chip code {
  min-width: 0;
  overflow: hidden;
  color: #29463a;
  font-size: 0.66rem;
  font-weight: 850;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.satellite-use-chip code {
  justify-self: end;
  max-width: 280px;
  border-radius: 999px;
  padding: 3px 7px;
  background: #edf6ef;
  color: #24513d;
  font-family: inherit;
}

.satellite-controls label {
  min-width: 0;
  gap: 2px;
  font-size: 0.64rem;
}

.satellite-controls input {
  min-height: 30px;
  min-width: 0;
  padding: 5px 8px;
  font-size: 0.72rem;
}

.satellite-controls select {
  min-height: 30px;
  min-width: 0;
  padding: 5px 8px;
  font-size: 0.72rem;
}

.satellite-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 8px;
}

.satellite-summary-grid .kpi {
  min-height: 74px;
  padding: 10px;
}

.satellite-summary-grid .kpi strong {
  font-size: 1rem;
}

.satellite-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(320px, 0.75fr);
  gap: 10px;
  align-items: stretch;
}

.satellite-layout-map-only {
  grid-template-columns: 1fr;
}

.satellite-map-panel,
.satellite-scenes-panel,
.satellite-index-panel,
.satellite-source-panel {
  padding: 12px;
}

.satellite-map {
  min-height: min(70svh, 720px);
  --satellite-saturation: 1;
  --satellite-contrast: 1;
  --satellite-blur: 0px;
  --satellite-scale: 1;
}

.satellite-map-wrap {
  position: relative;
  min-height: min(70svh, 720px);
}

.satellite-map.satellite-strength-reinforced {
  --satellite-saturation: 1.18;
  --satellite-contrast: 1.12;
}

.satellite-map.satellite-strength-intense {
  --satellite-saturation: 1.34;
  --satellite-contrast: 1.23;
}

.satellite-map.satellite-map-painted {
  --satellite-blur: 0.32px;
  --satellite-scale: 1.008;
}

.satellite-map img[src*="sentinel-hub"][src*="/tile"] {
  filter: saturate(var(--satellite-saturation)) contrast(var(--satellite-contrast)) blur(var(--satellite-blur));
  transform: scale(var(--satellite-scale));
  transform-origin: center;
  transition: filter 160ms ease, opacity 160ms ease;
}

.satellite-map-update {
  position: absolute;
  top: 12px;
  left: 50%;
  z-index: 8;
  display: inline-flex;
  gap: 7px;
  align-items: center;
  min-height: 32px;
  padding: 6px 10px;
  border: 1px solid rgba(31, 111, 74, 0.2);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 8px 22px rgba(16, 54, 40, 0.16);
  color: #174832;
  transform: translateX(-50%);
}

.satellite-map-update[hidden] {
  display: none;
}

.satellite-map-update .loading-spinner.small {
  width: 16px;
  height: 16px;
  border-width: 2px;
}

.satellite-map-update strong {
  font-size: 0.7rem;
  white-space: nowrap;
}

.satellite-availability-status {
  position: absolute;
  top: 68px;
  left: 10px;
  z-index: 7;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 2px 7px;
  align-items: center;
  max-width: min(480px, calc(100% - 20px));
  padding: 7px 9px;
  border: 1px solid #9dcfc0;
  border-radius: 8px;
  background: rgba(239, 250, 246, 0.95);
  box-shadow: 0 8px 20px rgba(16, 54, 40, 0.13);
  color: #155e49;
  backdrop-filter: blur(6px);
}

.satellite-availability-status[hidden] {
  display: none;
}

.satellite-availability-status strong {
  font-size: 0.72rem;
}

.satellite-availability-status span:not(.loading-spinner) {
  grid-column: 1 / -1;
  color: #41665a;
  font-size: 0.64rem;
  font-weight: 750;
}

.satellite-availability-status.is-fallback {
  border-color: #8ebcaf;
  background: rgba(239, 248, 245, 0.96);
  color: #155e49;
}

.satellite-availability-status.is-empty {
  border-color: #e2a29c;
  background: rgba(255, 241, 239, 0.96);
  color: #9b2c24;
}

.satellite-availability-status .loading-spinner.small {
  width: 16px;
  height: 16px;
  border-width: 2px;
}

.satellite-map-legend {
  position: absolute;
  right: 10px;
  bottom: 10px;
  z-index: 5;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  max-width: min(420px, calc(100% - 20px));
  padding: 7px 8px;
  border: 1px solid rgba(31, 111, 74, 0.16);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 8px 20px rgba(16, 54, 40, 0.12);
}

.satellite-decision-legend {
  position: absolute;
  left: 10px;
  bottom: 10px;
  z-index: 6;
  display: grid;
  gap: 6px;
  width: min(520px, calc(100% - 20px));
  padding: 8px;
  border: 1px solid rgba(31, 111, 74, 0.16);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.93);
  box-shadow: 0 8px 20px rgba(16, 54, 40, 0.12);
}

.satellite-decision-legend strong {
  color: #143f2b;
  font-size: 0.68rem;
  font-weight: 950;
}

.satellite-decision-legend header {
  display: flex;
  flex-wrap: wrap;
  gap: 2px 8px;
  align-items: baseline;
}

.satellite-decision-legend header small {
  color: var(--muted);
  font-size: 0.54rem;
  font-weight: 750;
}

.satellite-decision-legend > div {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 4px;
}

.satellite-decision-legend span {
  display: grid;
  grid-template-columns: 11px minmax(0, 1fr);
  gap: 4px;
  align-items: center;
  min-width: 0;
  color: #1a3f2e;
  font-size: 0.56rem;
  font-weight: 900;
}

.satellite-decision-legend i {
  grid-row: span 2;
  width: 11px;
  height: 26px;
  border-radius: 999px;
  background: var(--index-level-color, #bdbdbd);
  box-shadow: inset 0 0 0 1px rgba(20, 63, 43, 0.16);
}

.satellite-decision-legend b,
.satellite-decision-legend em {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.satellite-decision-legend em {
  color: var(--muted);
  font-style: normal;
  font-size: 0.52rem;
}

.satellite-processing-warning {
  position: absolute;
  left: 50%;
  top: 10px;
  z-index: 7;
  display: grid;
  gap: 2px;
  max-width: min(480px, calc(100% - 22px));
  padding: 8px 10px;
  border: 1px solid rgba(197, 118, 18, 0.28);
  border-radius: 9px;
  background: rgba(255, 248, 229, 0.96);
  box-shadow: 0 8px 20px rgba(84, 57, 20, 0.12);
  color: #6f4808;
  transform: translateX(-50%);
}

.satellite-processing-warning strong {
  font-size: 0.72rem;
}

.satellite-processing-warning span {
  font-size: 0.62rem;
  font-weight: 850;
}

.satellite-map-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: #163c2b;
  font-size: 0.64rem;
  font-weight: 900;
}

.satellite-map-legend i {
  width: 11px;
  height: 11px;
  border-radius: 999px;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.8);
}

.satellite-map-legend .good {
  background: #1f7a4d;
}

.satellite-map-legend .medium {
  background: #d99a1c;
}

.satellite-map-legend .high {
  background: #c44536;
}

.satellite-scenes-panel {
  min-height: 0;
  overflow: hidden;
}

.satellite-scene-list {
  display: grid;
  gap: 8px;
  max-height: min(62svh, 620px);
  overflow: auto;
  padding-right: 3px;
}

.satellite-scene-card {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr);
  gap: 9px;
  align-items: stretch;
  padding: 8px;
  border: 1px solid rgba(31, 111, 74, 0.14);
  border-radius: 9px;
  background: #f8fbf8;
}

.satellite-scene-card.selected {
  border-color: rgba(31, 111, 74, 0.46);
  box-shadow: 0 8px 18px rgba(22, 74, 51, 0.08);
}

.satellite-scene-card img,
.satellite-scene-thumb {
  width: 92px;
  height: 92px;
  border-radius: 7px;
  object-fit: cover;
  background: #eaf2ed;
}

.satellite-scene-thumb {
  display: grid;
  place-items: center;
  color: var(--muted);
  font-size: 0.66rem;
  font-weight: 850;
  text-align: center;
}

.satellite-scene-body {
  display: grid;
  gap: 6px;
  min-width: 0;
}

.satellite-scene-title,
.satellite-scene-meta,
.satellite-scene-actions {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
}

.satellite-scene-title strong {
  min-width: 0;
  overflow: hidden;
  color: #133d2b;
  font-size: 0.84rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.satellite-quality {
  flex: 0 0 auto;
  border-radius: 999px;
  padding: 3px 7px;
  background: #eef4ef;
  color: #31503e;
  font-size: 0.58rem;
  font-weight: 950;
}

.satellite-quality.good {
  background: #dff5e8;
  color: #17613c;
}

.satellite-quality.medium {
  background: #fff4d8;
  color: #875d08;
}

.satellite-quality.high {
  background: #ffe5df;
  color: #9e2e1f;
}

.satellite-scene-meta {
  justify-content: flex-start;
  flex-wrap: wrap;
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 850;
}

.satellite-band-links {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.satellite-band-links a,
.satellite-band-links span {
  border-radius: 999px;
  padding: 3px 6px;
  background: #eef5ef;
  color: #14533a;
  font-size: 0.58rem;
  font-weight: 900;
  text-decoration: none;
}

.satellite-scene-actions {
  justify-content: flex-start;
}

.satellite-scene-actions .secondary-button,
.satellite-scene-actions .ghost-button {
  min-height: 26px;
  padding: 4px 8px;
  font-size: 0.64rem;
  text-decoration: none;
}

.satellite-index-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
}

.satellite-index-card {
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 10px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 9px;
  background: #f8fbf8;
  color: var(--text);
  cursor: pointer;
  text-align: left;
  transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

.satellite-index-card.is-ready {
  border-color: rgba(31, 111, 74, 0.38);
  background: #eef9f1;
}

.satellite-index-card.is-selected {
  border-color: rgba(8, 119, 90, 0.72);
  box-shadow: 0 0 0 2px rgba(8, 119, 90, 0.12);
  transform: translateY(-1px);
}

.satellite-index-card.is-provider-disabled {
  border-style: dashed;
  opacity: 0.64;
}

.satellite-index-card-head {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.satellite-index-card-head strong {
  color: var(--brand);
  font-size: 0.82rem;
}

.satellite-index-card-head span {
  flex: 0 0 auto;
  border-radius: 999px;
  padding: 2px 6px;
  background: #e6eee9;
  color: #4e665a;
  font-size: 0.56rem;
  font-weight: 950;
}

.satellite-index-card.is-ready .satellite-index-card-head span {
  background: #d9f2e2;
  color: #17613c;
}

.satellite-index-card code {
  overflow: hidden;
  border-radius: 6px;
  padding: 5px 6px;
  background: #eaf2ed;
  color: #17432f;
  font-size: 0.62rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.satellite-index-card span {
  color: var(--muted);
  font-size: 0.66rem;
  font-weight: 800;
  line-height: 1.35;
}

.satellite-source-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.satellite-source-grid > div {
  display: grid;
  gap: 4px;
  padding: 10px;
  border-radius: 9px;
  background: #f7fbf8;
}

.satellite-source-grid strong {
  color: var(--brand);
  font-size: 0.8rem;
}

.satellite-source-grid span {
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 800;
  line-height: 1.35;
}

.satellite-map-info {
  width: 286px;
}

.satellite-loading {
  min-height: 190px;
}

.harvest-map-panel {
  display: grid;
  gap: 14px;
}

.harvest-filters {
  grid-template-columns: minmax(260px, 1.15fr) minmax(150px, 0.8fr) minmax(145px, 0.7fr) 130px auto;
  margin-bottom: 0;
}

.harvest-date-range span {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}

.harvest-date-range input {
  min-width: 0;
}

.harvest-map {
  min-height: 620px;
}

.harvest-map-info {
  display: grid;
  gap: 8px;
  width: 270px;
  color: var(--ink);
  font-family: inherit;
}

.harvest-map-info-head {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--line);
}

.harvest-map-info-head strong {
  color: var(--brand);
  font-size: 0.95rem;
}

.harvest-map-info-head span {
  border-radius: 999px;
  padding: 3px 7px;
  background: #eef5ef;
  color: var(--brand);
  font-size: 0.68rem;
  font-weight: 900;
}

.harvest-map-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}

.harvest-map-info-grid div {
  display: grid;
  gap: 1px;
  min-width: 0;
}

.harvest-map-info-grid span {
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 900;
  text-transform: uppercase;
}

.harvest-map-info-grid strong {
  min-width: 0;
  overflow-wrap: anywhere;
  font-size: 0.76rem;
  line-height: 1.15;
}

.harvest-dashboard-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 16px;
}

.harvest-monthly-usage-panel {
  grid-column: 1 / -1;
  min-width: 0;
  padding: 16px;
}

.harvest-monthly-usage-header {
  align-items: flex-start;
  gap: 12px;
}

.harvest-monthly-usage-header p {
  margin: 3px 0 0;
  color: var(--muted);
  font-size: 0.78rem;
}

.harvest-monthly-legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 10px;
  color: var(--muted);
  font-size: 0.76rem;
  font-weight: 800;
}

.harvest-monthly-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.harvest-monthly-legend i {
  width: 10px;
  height: 10px;
  border-radius: 2px;
}

.harvest-monthly-legend .printed,
.harvest-month-bar.printed i {
  background: #267d9a;
}

.harvest-monthly-legend .scanned,
.harvest-month-bar.scanned i {
  background: #17805e;
}

.harvest-monthly-chart-scroll {
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-gutter: stable;
  padding: 8px 2px 4px;
}

.harvest-monthly-chart {
  display: grid;
  grid-template-columns: repeat(var(--harvest-month-count), minmax(82px, 1fr));
  align-items: end;
  gap: 8px;
  min-width: calc(var(--harvest-month-count) * 82px);
  height: 250px;
  padding: 12px 8px 2px;
  border-bottom: 1px solid var(--line);
  background: repeating-linear-gradient(to top, transparent 0, transparent 54px, rgba(32, 91, 67, 0.08) 55px);
}

.harvest-month-group {
  display: grid;
  grid-template-rows: minmax(0, 1fr) 24px;
  align-self: stretch;
  min-width: 0;
}

.harvest-month-group > span {
  align-self: end;
  overflow: hidden;
  color: var(--ink);
  font-size: 0.72rem;
  font-weight: 900;
  text-align: center;
  text-overflow: ellipsis;
  text-transform: capitalize;
  white-space: nowrap;
}

.harvest-month-bars {
  display: grid;
  grid-template-columns: repeat(2, minmax(22px, 1fr));
  align-items: end;
  gap: 5px;
  min-height: 0;
}

.harvest-month-bar {
  display: grid;
  grid-template-rows: 22px minmax(0, 1fr);
  align-items: end;
  align-self: stretch;
  min-width: 0;
}

.harvest-month-bar strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.66rem;
  line-height: 1;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-month-bar i {
  display: block;
  width: 100%;
  height: var(--bar-height);
  min-height: 0;
  border-radius: 4px 4px 1px 1px;
  transition: height 180ms ease;
}

.harvest-crew-schedule-open {
  min-height: 36px;
  padding: 8px 13px;
  white-space: nowrap;
}

.harvest-crew-schedule-modal {
  width: min(1480px, calc(100vw - 20px));
  max-width: none;
}

.harvest-crew-schedule-dialog {
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  gap: 12px;
  height: min(780px, calc(100vh - 24px));
  overflow: hidden;
  padding: 18px;
}

.harvest-crew-schedule-head p,
.harvest-crew-schedule-loading .modal-head p {
  margin: 3px 0 0;
  color: var(--muted);
  font-size: 0.8rem;
}

.harvest-crew-schedule-toolbar {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--surface-2);
}

.harvest-crew-schedule-navigation,
.harvest-crew-schedule-summary {
  display: flex;
  align-items: end;
  flex-wrap: wrap;
  gap: 8px;
}

.harvest-crew-schedule-navigation label {
  gap: 3px;
  font-size: 0.68rem;
  font-weight: 900;
  text-transform: uppercase;
}

.harvest-crew-schedule-navigation input,
.harvest-crew-schedule-navigation select {
  min-height: 34px;
  padding: 6px 9px;
}

.harvest-crew-schedule-navigation .icon-button {
  width: 34px;
  min-width: 34px;
  height: 34px;
  font-size: 1.25rem;
}

.harvest-crew-schedule-navigation .secondary-button {
  min-height: 34px;
  padding: 6px 11px;
}

.harvest-crew-schedule-summary {
  align-items: center;
  justify-content: flex-end;
}

.harvest-crew-schedule-summary span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 32px;
  border: 1px solid #c9dfd3;
  border-radius: 6px;
  padding: 5px 9px;
  background: #fff;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 800;
}

.harvest-crew-schedule-summary strong {
  color: var(--brand);
  font-size: 0.85rem;
}

.harvest-crew-schedule-table-wrap {
  min-width: 0;
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid #bfd9cc;
  border-radius: 7px;
  background: #fff;
  scrollbar-gutter: stable;
}

.harvest-crew-schedule-matrix {
  width: max-content;
  min-width: 100%;
  overflow: visible;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
}

.harvest-crew-schedule-matrix thead {
  position: sticky;
  top: 0;
  z-index: 6;
}

.harvest-crew-schedule-matrix th,
.harvest-crew-schedule-matrix td {
  height: 38px;
  border-right: 1px solid #d8e6de;
  border-bottom: 1px solid #d8e6de;
  padding: 0;
  text-align: center;
}

.harvest-crew-schedule-matrix thead th {
  position: sticky;
  top: 0;
  z-index: 5;
  width: 54px;
  min-width: 54px;
  height: 78px;
  background: #edf7f1;
  color: var(--brand-dark);
  box-shadow: inset 0 -1px #bfd9cc;
}

.harvest-crew-schedule-matrix .harvest-crew-sticky-label {
  position: sticky;
  left: 0;
  z-index: 4;
  width: 230px;
  min-width: 230px;
  max-width: 230px;
  padding: 7px 10px;
  background: #fff;
  text-align: left;
}

.harvest-crew-schedule-matrix thead .harvest-crew-sticky-label {
  z-index: 7;
  background: #e0f1e8;
  font-size: 0.74rem;
}

.harvest-schedule-contractor-row .harvest-crew-sticky-label,
.harvest-schedule-contractor-row td {
  background: #dcefe5;
}

.harvest-schedule-contractor-row .harvest-crew-sticky-label {
  z-index: 3;
}

.harvest-schedule-contractor-row strong {
  display: block;
  overflow: hidden;
  color: #0f5b44;
  font-size: 0.72rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-schedule-contractor-row span {
  display: block;
  margin-top: 1px;
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 900;
}

.harvest-schedule-crew-row .harvest-crew-sticky-label span {
  display: block;
  overflow: hidden;
  color: var(--ink);
  font-size: 0.75rem;
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-crew-schedule-matrix .is-weekend {
  background: #edf4fb;
}

.harvest-crew-schedule-matrix .is-today {
  box-shadow: inset 2px 0 #e28a13, inset -2px 0 #e28a13;
}

.harvest-schedule-date-toggle {
  display: grid;
  place-items: center;
  grid-template-rows: 20px 14px 16px 16px;
  gap: 0;
  height: 100%;
  cursor: pointer;
  color: inherit;
}

.harvest-schedule-weekday {
  font-size: 0.6rem;
  font-weight: 900;
  text-transform: uppercase;
}

.harvest-schedule-date {
  font-size: 0.68rem;
}

.harvest-schedule-date-count {
  display: inline-flex;
  align-items: baseline;
  justify-content: center;
  gap: 2px;
  width: 100%;
  padding: 2px 1px;
  background: rgba(22, 132, 97, 0.1);
  color: #0f6d50;
  font-size: 0.56rem;
  line-height: 1;
}

.harvest-schedule-date-count strong {
  font-size: 0.7rem;
}

.harvest-schedule-date-count small {
  font-size: 0.5rem;
  font-weight: 900;
}

.harvest-schedule-date-toggle input {
  width: 14px;
  height: 14px;
  margin: 1px 0 0;
  accent-color: var(--brand);
}

.harvest-schedule-cell {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  cursor: pointer;
}

.harvest-schedule-cell input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
}

.harvest-schedule-cell span {
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border: 1px solid #adc8ba;
  border-radius: 5px;
  background: #fff;
  transition: background 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}

.harvest-schedule-cell input:checked + span {
  border-color: #13775a;
  background: #168461;
  box-shadow: 0 2px 7px rgba(22, 132, 97, 0.22);
}

.harvest-schedule-cell input:checked + span::after {
  content: "✓";
  color: #fff;
  font-size: 0.78rem;
  font-weight: 900;
}

.harvest-schedule-cell input:focus-visible + span {
  outline: 3px solid rgba(31, 111, 74, 0.24);
  outline-offset: 2px;
}

.harvest-crew-schedule-actions {
  margin: 0;
  padding-top: 2px;
}

.harvest-crew-schedule-actions .primary-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-width: 150px;
}

.harvest-crew-schedule-loading {
  grid-template-rows: auto minmax(0, 1fr);
}

.harvest-crew-schedule-loading-state {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 10px;
  min-height: 260px;
  color: var(--brand);
}

@media (max-width: 760px) {
  .harvest-crew-schedule-modal {
    width: calc(100vw - 8px);
    max-height: calc(100vh - 8px);
  }

  .harvest-crew-schedule-dialog {
    height: calc(100vh - 8px);
    padding: 10px;
  }

  .harvest-crew-schedule-toolbar {
    display: grid;
    align-items: stretch;
  }

  .harvest-crew-schedule-summary {
    justify-content: flex-start;
  }

  .harvest-crew-schedule-matrix .harvest-crew-sticky-label {
    width: 158px;
    min-width: 158px;
    max-width: 158px;
  }

  .harvest-crew-schedule-matrix thead th {
    width: 48px;
    min-width: 48px;
  }

  .harvest-crew-schedule-open {
    width: 100%;
    white-space: normal;
  }
}

#harvestInfo .harvest-info-kpis {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
}

#harvestInfo .harvest-info-kpis .kpi {
  min-width: 0;
  padding: 13px;
}

@media (max-width: 1180px) {
  #harvestInfo .harvest-info-kpis {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  #harvestInfo .harvest-info-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 480px) {
  #harvestInfo .harvest-info-kpis {
    grid-template-columns: 1fr;
  }
}

.harvest-ranking {
  box-shadow: none;
  padding: 14px;
}

@media (max-width: 980px) {
  .harvest-filters,
  .harvest-dashboard-grid,
  .harvest-analytics-grid,
  .harvest-analytics-filters,
  .harvest-analysis-filters {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 640px) {
  .harvest-filters,
  .harvest-dashboard-grid,
  .harvest-analytics-grid,
  .harvest-analytics-filters,
  .harvest-analysis-filters {
    grid-template-columns: 1fr;
  }

  .harvest-date-range span {
    grid-template-columns: 1fr;
  }

  .harvest-monthly-usage-header {
    display: grid;
  }

  .harvest-monthly-legend {
    justify-content: flex-start;
  }

  .harvest-analytics-bar,
  .harvest-year-row {
    grid-template-columns: 1fr;
  }

  .harvest-year-row span {
    grid-template-columns: 38px minmax(80px, 1fr) 64px;
  }

}

.harvest-rank-list {
  display: grid;
  gap: 8px;
}

.harvest-rank-row {
  display: grid;
  grid-template-columns: minmax(140px, 1fr) minmax(120px, 1.2fr) 48px;
  gap: 8px;
  align-items: center;
}

.harvest-rank-row span {
  overflow: hidden;
  color: var(--ink);
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-rank-row div {
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--surface-2);
}

.harvest-rank-row i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--brand), #d4a017);
}

.harvest-rank-row strong {
  text-align: right;
}

.harvest-missing-compact {
  display: grid;
  grid-template-columns: auto auto 1fr;
  gap: 8px;
  align-items: center;
  margin-top: 14px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfa;
}

.harvest-missing-compact > div {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.harvest-missing-chip {
  border-radius: 999px;
  padding: 4px 8px;
  background: #fff6df;
  color: var(--warn);
  font-size: 0.76rem;
  font-weight: 900;
}

.harvest-analytics-panel {
  display: grid;
  gap: 14px;
}

.harvest-analytics-filters {
  grid-template-columns: repeat(4, minmax(130px, 1fr)) auto;
  margin-bottom: 0;
}

.harvest-analysis-filters {
  grid-template-columns: repeat(5, minmax(112px, 0.8fr)) minmax(220px, 1.2fr) auto;
}

.harvest-export-filters {
  grid-template-columns: repeat(3, minmax(130px, 0.9fr)) minmax(220px, 1.2fr) auto;
}

.harvest-export-filter-panel {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid #cfe3d8;
  border-radius: 8px;
  background: linear-gradient(180deg, #fbfdfb, #f2f8f4);
}

.harvest-export-filter-title {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  min-width: 0;
}

.harvest-export-filter-title strong {
  color: var(--brand);
  font-size: 0.82rem;
  font-weight: 950;
}

.harvest-export-filter-title span {
  overflow: hidden;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-export-filter-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(132px, 0.75fr)) minmax(260px, 1.2fr) auto;
  gap: 8px;
  align-items: end;
}

.harvest-export-filter-grid > label,
.harvest-export-years-field {
  display: grid;
  gap: 4px;
  min-width: 0;
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 950;
  text-transform: uppercase;
}

.harvest-export-filter-grid select {
  width: 100%;
  min-height: 32px;
  border: 1px solid #c8dfd3;
  border-radius: 7px;
  background: var(--surface);
  color: var(--ink);
  font-size: 0.75rem;
  font-weight: 900;
}

.harvest-sync-open-button {
  white-space: nowrap;
}

.modal:has(.harvest-sync-dialog) {
  width: min(1180px, calc(100vw - 20px));
}

.modal:has(.harvest-sync-dialog) .modal-body {
  max-height: calc(100vh - 24px);
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  overflow: hidden;
}

.harvest-sync-dialog {
  min-height: min(760px, calc(100vh - 24px));
}

.harvest-sync-upload-card,
.harvest-sync-summary,
.harvest-sync-actions,
.harvest-sync-change {
  border: 1px solid #cfe3d8;
  border-radius: 8px;
  background: #f8fcf9;
}

.harvest-sync-upload-card {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  padding: 12px;
}

.harvest-sync-upload-card > div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.harvest-sync-upload-card strong {
  color: var(--ink);
  font-weight: 950;
}

.harvest-sync-upload-card span {
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 750;
}

.harvest-sync-preview {
  display: grid;
  gap: 10px;
  min-height: 0;
  overflow: hidden;
}

.harvest-sync-summary {
  display: grid;
  grid-template-columns: repeat(5, minmax(100px, 1fr));
  gap: 8px;
  padding: 10px;
}

.harvest-sync-summary span {
  display: grid;
  gap: 2px;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 850;
}

.harvest-sync-summary strong {
  color: var(--brand);
  font-size: 1.15rem;
}

.harvest-sync-actions {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) auto auto auto;
  gap: 8px;
  align-items: center;
  padding: 8px 10px;
}

.harvest-sync-actions strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.82rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-sync-actions > span {
  color: var(--muted);
  font-size: 0.7rem;
  font-weight: 900;
  white-space: nowrap;
}

.harvest-sync-saving {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 10px 12px;
  border: 1px solid #9bd8be;
  border-radius: 8px;
  background: #ecfbf3;
  color: var(--brand);
  font-size: 0.8rem;
  font-weight: 900;
}

.harvest-sync-saving div {
  display: grid;
  gap: 2px;
}

.harvest-sync-saving small {
  color: var(--muted);
  font-weight: 800;
}

.harvest-sync-change-list {
  display: grid;
  gap: 8px;
  min-height: 0;
  overflow: auto;
  padding-right: 4px;
}

.harvest-sync-change {
  display: grid;
  grid-template-columns: auto minmax(220px, 0.8fr) minmax(280px, 1.2fr);
  gap: 10px;
  align-items: start;
  padding: 10px;
}

.harvest-sync-change input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--brand);
}

.harvest-sync-change.new {
  border-color: #9bd8be;
  background: #f1fbf5;
}

.harvest-sync-change.modified {
  border-color: #f0c985;
  background: #fffaf0;
}

.harvest-sync-change-main,
.harvest-sync-diffs {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.harvest-sync-change-main b {
  width: max-content;
  border-radius: 999px;
  padding: 2px 8px;
  background: #e0f4ea;
  color: var(--brand);
  font-size: 0.66rem;
  font-weight: 950;
  text-transform: uppercase;
}

.harvest-sync-change.modified .harvest-sync-change-main b {
  background: #fff1d3;
  color: #9a5b00;
}

.harvest-sync-change-main strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.84rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-sync-change-main small,
.harvest-sync-diffs {
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 800;
}

.harvest-sync-diffs em {
  overflow: hidden;
  font-style: normal;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 760px) {
  .harvest-sync-upload-card {
    align-items: stretch;
    flex-direction: column;
  }

  .harvest-sync-actions {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .harvest-sync-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .harvest-sync-change {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .harvest-sync-diffs {
    grid-column: 1 / -1;
  }

  .harvest-sync-change-main strong,
  .harvest-sync-diffs em {
    white-space: normal;
  }
}

.harvest-year-checks {
  display: flex;
  min-width: 0;
  gap: 6px;
  align-items: end;
  flex-wrap: wrap;
}

.harvest-year-checks label {
  display: inline-flex;
  gap: 5px;
  align-items: center;
  min-height: 34px;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--surface);
  color: var(--ink);
  font-size: 0.76rem;
  font-weight: 900;
}

.harvest-analytics-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.harvest-analytics-card {
  min-width: 0;
  padding: 14px;
  box-shadow: none;
}

.harvest-year-vertical-card {
  overflow: hidden;
}

.harvest-full-width,
.harvest-calibre-table-card {
  grid-column: 1 / -1;
}

.harvest-analytics-bars,
.harvest-year-comparison {
  display: grid;
  gap: 8px;
}

.harvest-analytics-bar {
  display: grid;
  grid-template-columns: minmax(120px, 0.9fr) minmax(120px, 1.5fr) minmax(76px, auto);
  gap: 9px;
  align-items: center;
  width: 100%;
  border: 0;
  padding: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  text-align: left;
}

button.harvest-analytics-bar {
  cursor: pointer;
}

.harvest-analytics-bar.active span,
button.harvest-analytics-bar:hover span {
  color: var(--brand-strong);
}

.harvest-analytics-bar span,
.harvest-year-row > strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.82rem;
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-analytics-bar div,
.harvest-year-row span {
  position: relative;
  overflow: hidden;
  min-height: 13px;
  border-radius: 999px;
  background: #e9f3ee;
}

.harvest-analytics-bar i,
.harvest-year-row i {
  display: block;
  height: 100%;
  min-height: inherit;
  border-radius: inherit;
  background: linear-gradient(90deg, #1f8a70, #f0b429);
}

.harvest-analytics-bar strong {
  color: var(--brand);
  font-size: 0.78rem;
  font-weight: 950;
  text-align: right;
  white-space: nowrap;
}

.harvest-year-vertical-bars {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(72px, 1fr));
  gap: 10px;
  align-items: end;
  min-height: 218px;
  padding-top: 6px;
}

.harvest-year-vertical-bar {
  display: grid;
  grid-template-rows: auto 168px auto;
  gap: 6px;
  min-width: 0;
  align-items: end;
  text-align: center;
}

.harvest-year-vertical-bar > strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.78rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-year-vertical-bar > div {
  display: flex;
  align-items: end;
  justify-content: center;
  height: 168px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: linear-gradient(180deg, #f7fbf8, #edf5f0);
}

.harvest-year-vertical-bar i {
  display: block;
  width: min(38px, 62%);
  min-height: 0;
  border-radius: 8px 8px 0 0;
  background: linear-gradient(180deg, var(--bar-color, var(--brand)), color-mix(in srgb, var(--bar-color, var(--brand)) 72%, #102b24));
  box-shadow: 0 -1px 0 rgba(255, 255, 255, 0.45) inset;
  transition: height 180ms ease;
}

.harvest-year-vertical-bar span {
  overflow: hidden;
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-variety-year-card {
  display: grid;
  gap: 12px;
  overflow: hidden;
}

.harvest-variety-year-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 6px 0 2px;
}

.harvest-variety-year-totals {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 9px 10px;
  border: 1px solid #d5e6dd;
  border-radius: 8px;
  background: #f6fbf8;
}

.harvest-variety-year-totals span,
.harvest-variety-year-totals em,
.harvest-variety-year-group header em {
  display: inline-flex;
  gap: 5px;
  align-items: center;
  min-height: 24px;
  padding: 4px 8px;
  border-radius: 999px;
  font-size: 0.72rem;
  font-style: normal;
  font-weight: 950;
  white-space: nowrap;
}

.harvest-variety-year-totals span {
  background: #eaf6ef;
  color: var(--ink);
}

.harvest-variety-year-totals .harvest-total-selected {
  border: 1px solid #b8dccb;
  background: #dff3e8;
}

.harvest-variety-year-totals b {
  color: var(--brand);
}

.harvest-variety-year-totals em,
.harvest-variety-year-group header em {
  border: 1px solid #dfe9e3;
  background: #fff;
}

.harvest-variety-year-totals em.positive,
.harvest-variety-year-group header em.positive {
  border-color: #b8e0cb;
  background: #e9f8ef;
  color: #087443;
}

.harvest-variety-year-totals em.negative,
.harvest-variety-year-group header em.negative {
  border-color: #f1c2bd;
  background: #fff0ee;
  color: #b42318;
}

.harvest-variety-year-totals em.neutral,
.harvest-variety-year-group header em.neutral {
  border-color: #d6dee2;
  background: #f4f7f8;
  color: var(--muted);
}

.harvest-variety-year-legend span {
  display: inline-flex;
  gap: 5px;
  align-items: center;
  color: var(--muted);
  font-size: 0.74rem;
  font-weight: 900;
}

.harvest-variety-year-legend i {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: var(--bar-color, var(--brand));
}

.harvest-variety-year-groups {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(245px, 1fr));
  gap: 12px;
}

.harvest-variety-year-group {
  display: grid;
  gap: 8px;
  min-width: 0;
  padding: 10px;
  border: 1px solid #cfe3d8;
  border-radius: 8px;
  background: linear-gradient(180deg, #fbfdfb, #f1f8f4);
}

.harvest-variety-year-group header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: baseline;
  padding-bottom: 7px;
  border-bottom: 1px solid #d9e9e0;
}

.harvest-variety-year-group header > div {
  display: flex;
  min-width: 0;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
}

.harvest-variety-year-group header strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.86rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-variety-year-group header span {
  color: var(--brand);
  font-size: 0.74rem;
  font-weight: 950;
  white-space: nowrap;
}

.harvest-variety-year-bars {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(54px, 1fr));
  gap: 8px;
  align-items: end;
  min-height: 172px;
}

.harvest-variety-year-bar {
  display: grid;
  grid-template-rows: auto 126px auto;
  gap: 5px;
  min-width: 0;
  align-items: end;
  text-align: center;
}

.harvest-variety-year-bar strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.68rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-variety-year-bar > div {
  position: relative;
  display: flex;
  align-items: end;
  justify-content: center;
  height: 126px;
  overflow: hidden;
  border: 1px solid #d8e8df;
  border-radius: 7px;
  background: #edf5f0;
}

.harvest-bar-medal {
  position: absolute;
  top: 5px;
  right: 5px;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 21px;
  height: 21px;
  border: 1px solid rgba(36, 45, 40, 0.16);
  border-radius: 999px;
  color: #17251f;
  font-size: 0.7rem;
  font-style: normal;
  font-weight: 950;
  box-shadow: 0 2px 6px rgba(15, 23, 42, 0.12);
}

.harvest-bar-medal.rank-1 {
  background: linear-gradient(180deg, #ffe991, #d69a17);
}

.harvest-bar-medal.rank-2 {
  background: linear-gradient(180deg, #f4f7fb, #aeb8c4);
}

.harvest-bar-medal.rank-3 {
  background: linear-gradient(180deg, #f6c79d, #b66a2f);
}

.harvest-variety-year-bar i {
  display: block;
  width: min(34px, 66%);
  min-height: 0;
  border-radius: 7px 7px 0 0;
  background: linear-gradient(180deg, var(--bar-color, var(--brand)), color-mix(in srgb, var(--bar-color, var(--brand)) 76%, #162d26));
  transition: height 160ms ease;
}

.harvest-variety-year-bar span {
  overflow: hidden;
  color: var(--muted);
  font-size: 0.7rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-start-card {
  display: grid;
  gap: 10px;
}

.harvest-start-matrix-wrap {
  overflow-x: auto;
  padding-bottom: 2px;
}

.harvest-start-matrix {
  display: grid;
  gap: 6px;
  min-width: max(720px, calc(210px + var(--harvest-start-years, 1) * 172px));
}

.harvest-start-matrix-head,
.harvest-start-matrix-row {
  display: grid;
  grid-template-columns: 210px repeat(var(--harvest-start-years, 1), minmax(154px, 1fr));
  gap: 6px;
  align-items: stretch;
}

.harvest-start-matrix-head {
  position: sticky;
  top: 0;
  z-index: 1;
}

.harvest-start-matrix-head strong,
.harvest-start-matrix-head span {
  min-height: 28px;
  padding: 7px 9px;
  border: 1px solid #cfe3d8;
  border-radius: 7px;
  background: #e7f4ed;
  color: var(--brand);
  font-size: 0.76rem;
  font-weight: 950;
}

.harvest-start-variety {
  display: grid;
  gap: 2px;
  min-width: 0;
  padding: 8px 9px;
  border: 1px solid #d5e5dd;
  border-radius: 8px;
  background: #fbfdfb;
}

.harvest-start-variety strong,
.harvest-start-variety span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-start-variety strong {
  color: var(--brand);
  font-size: 0.75rem;
  font-weight: 950;
}

.harvest-start-variety span {
  color: var(--ink);
  font-size: 0.82rem;
  font-weight: 950;
}

.harvest-start-cell {
  display: grid;
  gap: 2px;
  min-width: 0;
  min-height: 62px;
  padding: 7px 9px;
  border: 1px solid #d4e4dc;
  border-radius: 8px;
  background: #f8fbf9;
  color: var(--ink);
  text-align: left;
}

.harvest-start-cell b,
.harvest-start-cell strong,
.harvest-start-cell em,
.harvest-start-cell small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-start-cell b {
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 950;
}

.harvest-start-cell strong {
  color: var(--ink);
  font-size: 0.82rem;
  font-weight: 950;
}

.harvest-start-cell em {
  color: #087443;
  font-size: 0.72rem;
  font-style: normal;
  font-weight: 950;
}

.harvest-start-cell small {
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 900;
}

.harvest-start-cell.is-defined {
  border-color: #a9dac0;
  background: #ecf9f1;
}

.harvest-start-cell.is-defined strong {
  color: #087443;
}

.harvest-start-cell.is-detected {
  border-color: #d6e6dc;
  background: #f7fbf8;
}

.harvest-start-cell.is-empty {
  border-style: dashed;
  background: #fbfcfb;
  color: var(--muted);
}

.muted {
  color: var(--muted);
  font-weight: 800;
}

.harvest-export-comparison-card {
  display: grid;
  gap: 10px;
}

.harvest-export-percent-summary {
  display: grid;
  gap: 9px;
  padding: 12px;
}

.harvest-export-percent-summary .panel-header {
  margin-bottom: 0;
}

.harvest-export-percent-summary .panel-header > span {
  flex: 0 0 auto;
  padding: 6px 10px;
  border: 1px solid #b8dccb;
  border-radius: 999px;
  background: #dff3e8;
  color: var(--brand);
  font-size: 0.84rem;
  font-weight: 950;
  white-space: nowrap;
}

.harvest-export-percent-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 8px;
}

.harvest-export-percent-card {
  display: grid;
  gap: 6px;
  min-width: 0;
  padding: 9px;
  border: 1px solid #d3e6dc;
  border-radius: 8px;
  background: #f8fcf9;
}

.harvest-export-percent-card header,
.harvest-export-percent-card footer {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
  min-width: 0;
}

.harvest-export-percent-card strong,
.harvest-export-percent-card b,
.harvest-export-percent-card small,
.harvest-export-percent-card em {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-export-percent-card strong {
  color: var(--ink);
  font-size: 0.78rem;
  font-weight: 950;
}

.harvest-export-percent-card b {
  color: var(--brand);
  font-size: 1rem;
  font-weight: 950;
}

.harvest-export-percent-card > div {
  overflow: hidden;
  height: 9px;
  border-radius: 999px;
  background: #e7f0eb;
}

.harvest-export-percent-card > div i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--bar-color, var(--brand)), color-mix(in srgb, var(--bar-color, var(--brand)) 68%, #f0b429));
}

.harvest-export-percent-card small {
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 900;
}

.harvest-export-percent-card em {
  padding: 3px 6px;
  border-radius: 999px;
  font-size: 0.66rem;
  font-style: normal;
  font-weight: 950;
}

.harvest-export-percent-card em.positive {
  background: #e8f7ef;
  color: #087443;
}

.harvest-export-percent-card em.negative {
  background: #fff0ee;
  color: #b42318;
}

.harvest-export-percent-card em.neutral {
  background: #f1f5f3;
  color: var(--muted);
}

.harvest-export-variety-percent-summary {
  padding-top: 10px;
}

.harvest-export-variety-percent-list {
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
}

.harvest-export-variety-year-stack {
  display: grid;
  gap: 10px;
}

.harvest-export-variety-year-block {
  display: grid;
  gap: 8px;
  min-width: 0;
  padding: 9px;
  border: 1px solid #d6e8de;
  border-radius: 9px;
  background: #fbfefc;
}

.harvest-export-variety-year-block > header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 10px;
  align-items: center;
  padding: 7px 9px;
  border: 1px solid #bdd9cb;
  border-radius: 8px;
  background: linear-gradient(90deg, #dff3e8, #f5fbf7);
}

.harvest-export-variety-year-block > header div {
  display: grid;
  gap: 1px;
  min-width: 0;
}

.harvest-export-variety-year-block > header strong,
.harvest-export-variety-year-block > header small,
.harvest-export-variety-year-block > header b,
.harvest-export-variety-year-block > header span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-export-variety-year-block > header strong {
  color: var(--brand);
  font-size: 0.84rem;
  font-weight: 950;
}

.harvest-export-variety-year-block > header small {
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 900;
}

.harvest-export-variety-year-block > header b {
  color: var(--brand);
  font-size: 0.92rem;
  font-weight: 950;
}

.harvest-export-variety-year-block > header span {
  color: var(--ink);
  font-size: 0.74rem;
  font-weight: 950;
}

.harvest-export-variety-percent-card footer {
  align-items: end;
}

.harvest-export-variety-percent-card em.neutral {
  max-width: 118px;
}

.harvest-export-comparison-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 10px;
}

.harvest-export-comparison-row {
  display: grid;
  gap: 6px;
  min-width: 0;
  padding: 10px;
  border: 1px solid #d3e6dc;
  border-radius: 8px;
  background: #f8fcf9;
}

.harvest-export-comparison-row > strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.82rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-export-comparison-row > small {
  color: var(--muted);
  font-size: 0.7rem;
  font-weight: 900;
}

.harvest-export-comparison-row > div {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(48px, 1fr));
  gap: 7px;
  align-items: end;
  min-height: 118px;
}

.harvest-export-comparison-row span {
  display: grid;
  grid-template-rows: auto 86px auto;
  gap: 4px;
  min-width: 0;
  text-align: center;
}

.harvest-export-comparison-row b,
.harvest-export-comparison-row em {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.66rem;
  font-style: normal;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-export-comparison-row span i {
  align-self: end;
  justify-self: center;
  width: min(30px, 64%);
  min-height: 0;
  border-radius: 7px 7px 0 0;
  background: linear-gradient(180deg, var(--bar-color, var(--brand)), color-mix(in srgb, var(--bar-color, var(--brand)) 76%, #162d26));
}

.harvest-species-row td {
  position: sticky;
  left: 0;
  z-index: 1;
  background: #e0f1e8;
  color: var(--brand);
  font-weight: 950;
  text-transform: uppercase;
}

.harvest-export-year-row td {
  padding: 0 !important;
  border-top: 10px solid #ffffff;
  background: #f8fcf9;
}

.harvest-export-year-row div {
  display: flex;
  gap: 9px;
  align-items: center;
  justify-content: space-between;
  padding: 8px 10px;
  border: 1px solid #b9d9c9;
  border-radius: 8px;
  background: linear-gradient(90deg, #dff3e8, #f7fcf9);
}

.harvest-export-year-row strong {
  color: var(--brand);
  font-size: 0.86rem;
  font-weight: 950;
}

.harvest-export-year-row span,
.harvest-export-year-row b {
  overflow: hidden;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-export-year-row b {
  color: var(--ink);
}

.harvest-export-year-total-row td {
  border-top: 2px solid #9dcdb6;
  border-bottom: 8px solid #ffffff;
  background: #e8f6ee;
  color: var(--brand);
  font-weight: 950;
}

.harvest-export-year-total-row td:first-child,
.harvest-export-year-total-row td:nth-child(2) {
  background: #d7eddf;
}

.harvest-year-row {
  display: grid;
  grid-template-columns: minmax(120px, 0.45fr) minmax(0, 1fr);
  gap: 10px;
  align-items: start;
}

.harvest-year-row > div {
  display: grid;
  gap: 5px;
}

.harvest-year-row span {
  display: grid;
  grid-template-columns: 44px minmax(80px, 1fr) 74px;
  gap: 6px;
  align-items: center;
  min-height: 22px;
  padding: 3px 7px;
}

.harvest-year-row b,
.harvest-year-row em {
  position: relative;
  z-index: 1;
  color: var(--ink);
  font-size: 0.72rem;
  font-style: normal;
  font-weight: 900;
}

.harvest-calibre-chips {
  display: flex;
  gap: 5px;
  flex-wrap: wrap;
}

.harvest-calibre-chips span {
  padding: 4px 7px;
  border-radius: 999px;
  background: #edf7f2;
  color: var(--brand);
  font-size: 0.72rem;
  font-weight: 900;
}

.harvest-analytics-table table {
  min-width: 860px;
}

.harvest-potrero-summary-card {
  display: grid;
  gap: 12px;
}

.harvest-potrero-species-stack {
  display: grid;
  gap: 16px;
}

.harvest-potrero-species-section {
  display: grid;
  gap: 10px;
  min-width: 0;
}

.harvest-potrero-species-section > header {
  display: flex;
  gap: 10px;
  align-items: start;
  justify-content: space-between;
  padding: 9px 11px;
  border: 1px solid #c8dfd3;
  border-radius: 8px;
  background: #e6f4ec;
}

.harvest-potrero-species-section > header div {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.harvest-potrero-species-section > header strong {
  overflow: hidden;
  color: var(--brand);
  font-size: 0.95rem;
  font-weight: 950;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}

.harvest-potrero-species-section > header span {
  color: var(--muted);
  font-size: 0.74rem;
  font-weight: 900;
}

.harvest-potrero-species-section > header b {
  color: var(--ink);
  font-size: 0.84rem;
  font-weight: 950;
  white-space: nowrap;
}

.harvest-potrero-variety-masonry {
  column-gap: 12px;
  column-width: 352px;
}

.harvest-potrero-variety-card {
  display: inline-grid;
  grid-template-rows: auto auto;
  gap: 9px;
  align-content: start;
  align-self: start;
  width: 100%;
  min-width: 0;
  margin: 0 0 12px;
  padding: 10px;
  border: 1px solid #cfe3d8;
  border-radius: 8px;
  background: linear-gradient(180deg, #fbfdfb, #f1f8f4);
  break-inside: avoid;
}

.harvest-potrero-variety-card > header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: start;
  padding-bottom: 8px;
  border-bottom: 1px solid #d9e9e0;
}

.harvest-potrero-variety-card > header div {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.harvest-potrero-variety-card > header strong {
  overflow: hidden;
  color: var(--brand);
  font-size: 0.9rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-potrero-variety-card > header span {
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 900;
}

.harvest-potrero-variety-card > header b {
  color: var(--ink);
  font-size: 0.82rem;
  font-weight: 950;
  white-space: nowrap;
}

.harvest-potrero-year-list {
  display: grid;
  gap: 7px;
  align-content: start;
}

.harvest-potrero-year-row {
  display: grid;
  grid-template-columns: minmax(92px, 0.35fr) minmax(0, 1fr);
  gap: 8px;
  align-items: center;
}

.harvest-potrero-year-row > strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.78rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-potrero-year-bars {
  display: grid;
  gap: 5px;
  min-width: 0;
}

.harvest-potrero-year-bars span {
  display: grid;
  grid-template-columns: 42px minmax(74px, 1fr) 64px;
  gap: 6px;
  align-items: center;
  min-width: 0;
}

.harvest-potrero-year-bars span.has-density {
  grid-template-columns: 42px minmax(74px, 1fr) minmax(122px, 0.52fr);
}

.harvest-potrero-year-bars b,
.harvest-potrero-year-bars small {
  overflow: hidden;
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-potrero-year-bars small {
  color: var(--ink);
  text-align: right;
}

.harvest-potrero-year-value {
  display: grid;
  gap: 1px;
  justify-items: end;
}

.harvest-potrero-year-value strong {
  color: var(--ink);
  font-size: 0.68rem;
  font-weight: 950;
}

.harvest-potrero-year-value em {
  overflow: hidden;
  max-width: 100%;
  color: #0b745f;
  font-size: 0.58rem;
  font-style: normal;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-potrero-year-bars i {
  display: block;
  overflow: hidden;
  height: 10px;
  border-radius: 999px;
  background: #e7f0eb;
}

.harvest-potrero-year-bars em {
  display: block;
  height: 100%;
  min-width: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--bar-color, var(--brand)), color-mix(in srgb, var(--bar-color, var(--brand)) 68%, #f0b429));
}

.harvest-productivity-variety-card {
  break-inside: avoid;
}

.harvest-productivity-list {
  display: grid;
  gap: 9px;
}

.harvest-productivity-potrero-row {
  display: grid;
  gap: 7px;
  padding: 8px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.72);
}

.harvest-productivity-potrero-head {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
  min-width: 0;
}

.harvest-productivity-detail-button {
  display: inline-grid;
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  padding: 0;
  place-items: center;
  border: 1px solid #9bcbb7;
  border-radius: 50%;
  background: #eff9f4;
  color: #087756;
  font-size: 1rem;
  font-weight: 950;
  line-height: 1;
  cursor: pointer;
}

.harvest-productivity-detail-button:hover,
.harvest-productivity-detail-button:focus-visible {
  border-color: #087756;
  background: #dff4e9;
}

.harvest-productivity-potrero-head strong,
.harvest-productivity-potrero-head span {
  overflow: hidden;
  color: var(--ink);
  font-size: 0.76rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-productivity-potrero-head span {
  color: var(--muted);
  font-size: 0.68rem;
}

.harvest-productivity-years {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(116px, 1fr));
  gap: 6px;
}

.harvest-productivity-year-card {
  display: grid;
  gap: 6px;
  min-width: 0;
  padding: 7px;
  border: 1px solid #d7e7de;
  border-radius: 7px;
  background: #f8fcfa;
}

.harvest-productivity-year-card header {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 6px;
  align-items: center;
}

.harvest-productivity-year-card header b {
  color: var(--brand);
  font-size: 0.68rem;
  font-weight: 950;
}

.harvest-productivity-year-card header i {
  display: block;
  overflow: hidden;
  height: 8px;
  border-radius: 999px;
  background: #e7f0eb;
}

.harvest-productivity-year-card header em {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--bar-color, var(--brand));
}

.harvest-productivity-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 5px;
}

.harvest-productivity-metrics span {
  display: grid;
  gap: 1px;
  min-width: 0;
}

.harvest-productivity-metrics small {
  overflow: hidden;
  color: var(--muted);
  font-size: 0.54rem;
  font-weight: 950;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}

.harvest-productivity-metrics strong {
  overflow: hidden;
  color: #063f35;
  font-size: 0.72rem;
  font-weight: 950;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-export-summary-panel {
  gap: 8px;
  padding: 12px;
}

.harvest-export-summary-panel .panel-header {
  margin-bottom: 4px;
}

.harvest-export-table-wrap th,
.harvest-export-table-wrap td {
  padding: 6px 7px;
  font-size: 0.72rem;
  line-height: 1.15;
  vertical-align: middle;
  white-space: nowrap;
}

.harvest-export-main-table {
  min-width: 1180px !important;
  font-size: 0.74rem;
}

.harvest-export-main-table th:nth-child(1),
.harvest-export-main-table td:nth-child(1) {
  width: 42px;
  min-width: 42px;
}

.harvest-export-main-table th:nth-child(2),
.harvest-export-main-table td:nth-child(2) {
  width: 96px;
  min-width: 96px;
}

.harvest-export-main-table th:nth-child(3),
.harvest-export-main-table td:nth-child(3) {
  width: 72px;
  min-width: 72px;
}

.harvest-export-calibre-menu {
  display: grid;
  gap: 10px;
  padding: 12px;
}

.harvest-export-calibre-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(150px, 190px) auto;
  gap: 10px;
  align-items: end;
}

.harvest-export-calibre-header h2,
.harvest-export-calibre-header p {
  margin: 0;
}

.harvest-export-calibre-header label {
  display: grid;
  gap: 4px;
  color: var(--muted);
  font-size: 0.68rem;
  font-weight: 950;
  text-transform: uppercase;
}

.harvest-export-calibre-header select {
  min-height: 32px;
  border: 1px solid #c9dfd2;
  border-radius: 7px;
  background: var(--surface);
  color: var(--ink);
  font-size: 0.76rem;
  font-weight: 900;
}

.harvest-export-calibre-header > strong {
  align-self: end;
  padding: 5px 8px;
  border: 1px solid #c9dfd2;
  border-radius: 999px;
  background: #e7f4ed;
  color: var(--brand);
  font-size: 0.72rem;
  font-weight: 950;
  white-space: nowrap;
}

.harvest-export-calibre-menu > summary {
  display: flex;
  gap: 12px;
  align-items: start;
  justify-content: space-between;
  cursor: pointer;
  list-style: none;
}

.harvest-export-calibre-menu > summary::-webkit-details-marker {
  display: none;
}

.harvest-export-calibre-menu > summary h2,
.harvest-export-calibre-menu > summary p {
  margin: 0;
}

.harvest-export-calibre-menu > summary strong {
  flex: 0 0 auto;
  padding: 5px 8px;
  border: 1px solid #c9dfd2;
  border-radius: 999px;
  background: #e7f4ed;
  color: var(--brand);
  font-size: 0.72rem;
  font-weight: 950;
  white-space: nowrap;
}

.harvest-export-calibre-table {
  width: max-content;
  min-width: 100% !important;
  font-size: 0.7rem;
}

.harvest-calibre-species-stack {
  display: grid;
  gap: 10px;
}

.harvest-calibre-year-stack {
  display: grid;
  gap: 12px;
}

.harvest-calibre-year-block {
  display: grid;
  gap: 9px;
  min-width: 0;
  padding: 8px;
  border: 1px solid #d6e8de;
  border-radius: 9px;
  background: #fbfefc;
}

.harvest-calibre-year-block > header {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  min-width: 0;
  padding: 7px 9px;
  border: 1px solid #bdd9cb;
  border-radius: 8px;
  background: linear-gradient(90deg, #dff3e8, #f5fbf7);
  color: var(--brand);
}

.harvest-calibre-year-block > header strong,
.harvest-calibre-year-block > header span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-calibre-year-block > header strong {
  font-size: 0.84rem;
  font-weight: 950;
}

.harvest-calibre-year-block > header span {
  color: var(--ink);
  font-size: 0.74rem;
  font-weight: 950;
}

.harvest-calibre-species-block {
  display: grid;
  gap: 6px;
  min-width: 0;
}

.harvest-calibre-species-block h3 {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
  margin: 0;
  padding: 6px 8px;
  border: 1px solid #cfe3d8;
  border-radius: 8px;
  background: #e6f4ec;
  color: var(--brand);
  font-size: 0.78rem;
  font-weight: 950;
  text-transform: uppercase;
}

.harvest-calibre-species-block h3 span,
.harvest-calibre-species-block h3 b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-calibre-species-block h3 b {
  color: var(--ink);
  font-size: 0.7rem;
}

.harvest-export-calibre-table th {
  padding: 5px 6px;
  font-size: 0.64rem;
  text-align: center;
  white-space: nowrap;
}

.harvest-export-calibre-table td {
  min-width: 52px;
  padding: 4px 6px;
  font-size: 0.68rem;
  line-height: 1.05;
  text-align: center;
  vertical-align: middle;
}

.harvest-export-calibre-table td[data-label="Variedad"],
.harvest-export-calibre-table td[data-label="Potrero"],
.harvest-export-calibre-table td[data-label="Categoria"],
.harvest-export-calibre-table td[data-label="Ano"] {
  min-width: 58px;
  text-align: left;
}

.harvest-export-calibre-table td[data-label="Variedad"] {
  min-width: 82px;
  max-width: 108px;
}

.harvest-export-calibre-table td[data-label="Potrero"] {
  min-width: 66px;
  max-width: 92px;
}

.harvest-export-calibre-table td[data-label="Categoria"],
.harvest-export-calibre-table td[data-label="Ano"] {
  min-width: 42px;
  max-width: 58px;
}

.harvest-export-calibre-table td strong {
  font-size: 0.68rem;
}

.harvest-export-calibre-table td small {
  display: block;
  margin-top: 1px;
  color: var(--muted);
  font-size: 0.56rem;
  font-weight: 900;
}

@media (max-width: 640px) {
  .harvest-export-filter-title,
  .harvest-export-variety-year-block > header,
  .harvest-export-year-row div {
    grid-template-columns: 1fr;
    align-items: start;
  }

  .harvest-export-filter-title {
    display: grid;
  }

  .harvest-export-year-row div {
    display: grid;
  }

  .harvest-export-filter-grid {
    grid-template-columns: 1fr;
  }

  .harvest-export-years-field .harvest-year-checks {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 2px;
  }

  .harvest-year-vertical-bars {
    grid-template-columns: repeat(auto-fit, minmax(58px, 1fr));
    gap: 8px;
    min-height: 184px;
  }

  .harvest-year-vertical-bar {
    grid-template-rows: auto 132px auto;
  }

  .harvest-year-vertical-bar > div {
    height: 132px;
  }

  .harvest-year-vertical-bar > strong,
  .harvest-year-vertical-bar span {
    font-size: 0.7rem;
  }

  .harvest-variety-year-groups {
    grid-template-columns: 1fr;
  }

  .harvest-variety-year-bars {
    grid-template-columns: repeat(auto-fit, minmax(48px, 1fr));
    min-height: 150px;
  }

  .harvest-variety-year-bar {
    grid-template-rows: auto 104px auto;
  }

  .harvest-variety-year-bar > div {
    height: 104px;
  }

  .harvest-variety-year-group header {
    grid-template-columns: 1fr;
    align-items: start;
  }

  .harvest-variety-year-totals span,
  .harvest-variety-year-totals em,
  .harvest-variety-year-group header em {
    white-space: normal;
  }

  .harvest-potrero-variety-masonry {
    column-width: auto;
    columns: 1;
  }

  .harvest-potrero-year-row {
    grid-template-columns: 1fr;
  }

  .harvest-potrero-year-bars span {
    grid-template-columns: 38px minmax(70px, 1fr) 58px;
  }

  .harvest-potrero-year-bars span.has-density {
    grid-template-columns: 38px minmax(70px, 1fr) minmax(108px, 0.6fr);
  }

  .harvest-productivity-years {
    grid-template-columns: 1fr;
  }

  .harvest-productivity-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .harvest-export-filters {
    grid-template-columns: 1fr;
  }

  .harvest-export-calibre-header {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .harvest-export-calibre-header > strong {
    justify-self: start;
  }
}

.map-panel {
  min-width: 0;
}

.geo-map {
  display: grid;
  place-items: center;
  min-height: 620px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f4f7f1;
}

.geo-map svg {
  width: 100%;
  height: 100%;
  min-height: 620px;
}

.dashboard-ops {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 18px;
  margin-top: 18px;
  align-items: stretch;
}

.dashboard-alerts {
  display: grid;
  gap: 18px;
  min-width: 0;
}

.alert-panel {
  min-height: 0;
}

.scroll-alerts {
  max-height: 258px;
  overflow-y: auto;
  padding-right: 4px;
}

.map-label-google {
  position: absolute;
  transform: translate(-50%, -50%);
  white-space: nowrap;
  pointer-events: none;
  z-index: 2;
  font-family: Arial, sans-serif;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 0;
  user-select: none;
}

.map-label-potrero-google {
  color: #ffffff;
  font-size: 22px;
  text-shadow:
    -2px -2px 0 #111111,
    2px -2px 0 #111111,
    -2px 2px 0 #111111,
    2px 2px 0 #111111,
    0 2px 6px rgba(0, 0, 0, 0.95);
}

.map-label-block-google {
  color: #ffd84d;
  font-size: 10px;
  text-shadow:
    -1px -1px 0 #111111,
    1px -1px 0 #111111,
    -1px 1px 0 #111111,
    1px 1px 0 #111111,
    0 1px 4px rgba(0, 0, 0, 0.95);
}

.agricultural-map-layer-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 32px;
  margin: 10px 0 0 10px;
  padding: 5px 9px;
  border: 1px solid rgba(20, 72, 55, 0.28);
  border-radius: 4px;
  background: rgba(255, 255, 255, 0.96);
  color: #153c30;
  box-shadow: 0 2px 7px rgba(3, 24, 17, 0.24);
  cursor: pointer;
  font: 800 12px/1 Arial, sans-serif;
  user-select: none;
}

.agricultural-map-layer-toggle input {
  width: 15px;
  height: 15px;
  margin: 0;
  accent-color: #0d7a5f;
}

.map-label-tranque-google {
  color: #ffffff;
  font-size: 13px;
  text-shadow:
    -1px -1px 0 #050505,
    1px -1px 0 #050505,
    -1px 1px 0 #050505,
    1px 1px 0 #050505,
    0 2px 5px rgba(0, 0, 0, 0.95);
}

.agricultural-map-icon {
  position: absolute;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
  width: max-content;
  max-width: 104px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #ffffff;
  font: 900 12px/1 Arial, sans-serif;
  letter-spacing: 0;
  text-shadow:
    -1px -1px 0 #111111,
    1px -1px 0 #111111,
    -1px 1px 0 #111111,
    1px 1px 0 #111111;
  transform: translate(-50%, -42px);
  user-select: none;
  z-index: 14;
}

.agricultural-map-icon img {
  display: block;
  width: 34px;
  height: 39px;
  filter: drop-shadow(0 3px 4px rgba(0, 0, 0, 0.5));
}

.agricultural-map-icon span {
  display: block;
  max-width: 104px;
  padding: 2px 4px;
  border-radius: 3px;
  background: rgba(5, 25, 19, 0.72);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.agricultural-map {
  position: relative;
  isolation: isolate;
  width: 100%;
  border: 1px solid #a9c8bc;
  border-radius: 8px;
  background: #10271f;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.18), 0 8px 22px rgba(13, 55, 41, 0.12);
}

.agricultural-map .gm-style .gm-style-iw-c {
  max-width: min(320px, calc(100vw - 44px)) !important;
  border-radius: 7px;
  box-shadow: 0 8px 24px rgba(7, 35, 27, 0.24);
}

.agricultural-map .gm-style-mtc button,
.agricultural-map .gm-fullscreen-control {
  font-weight: 800 !important;
}

.geo-map .map-block {
  fill: #dfe8dc;
  stroke: #d4a017;
  stroke-width: 1.15;
}

.geo-map .map-block.related {
  fill: #f7d98b;
}

.geo-map .map-block.active {
  fill: var(--brand);
}

.geo-map .map-potrero {
  fill: transparent;
  stroke: var(--stroke);
  stroke-width: 4.2;
  vector-effect: non-scaling-stroke;
}

.geo-map .map-potrero.active-parent {
  stroke-width: 6;
}

.geo-map .map-label {
  text-anchor: middle;
  dominant-baseline: middle;
  pointer-events: none;
  paint-order: stroke fill;
  fill: #111111;
  font-family: Arial, sans-serif;
  font-weight: 900;
}

.geo-map .map-label-potrero {
  fill: #ffffff;
  stroke: #111111;
  stroke-width: 5px;
  font-size: 21px;
}

.geo-map .map-label-block {
  fill: #ffd84d;
  stroke: #111111;
  stroke-width: 3.4px;
  font-size: 12px;
}

.layout {
  display: grid;
  gap: 18px;
}

.two-columns {
  grid-template-columns: minmax(0, 1.35fr) minmax(320px, 0.65fr);
}

.panel {
  padding: 18px;
}

.panel-header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  margin-bottom: 14px;
}

.panel-header p {
  margin-bottom: 0;
  color: var(--muted);
}

.table-wrap {
  overflow-x: auto;
}

table {
  width: 100%;
  border-collapse: collapse;
  min-width: 720px;
}

th,
td {
  border-bottom: 1px solid var(--line);
  padding: 12px 10px;
  text-align: left;
  vertical-align: top;
}

th {
  color: #3f4b42;
  font-size: 0.8rem;
  text-transform: uppercase;
}

.badge {
  display: inline-flex;
  min-height: 28px;
  align-items: center;
  border-radius: 999px;
  padding: 0 10px;
  font-size: 0.78rem;
  font-weight: 800;
}

.success {
  background: #e6f5ec;
  color: var(--ok);
}

.warning {
  background: #fff4df;
  color: var(--warn);
}

.danger {
  background: #fff0ed;
  color: var(--danger);
}

.info {
  background: #e8f1fb;
  color: var(--info);
}

.neutral {
  background: var(--surface-2);
  color: var(--muted);
}

.alert-list,
.timeline,
.split-list,
.bar-list {
  display: grid;
  gap: 12px;
}

.alert-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  border-bottom: 1px solid var(--line);
  padding-bottom: 12px;
}

.alert-row strong,
.alert-row span {
  display: block;
}

.order-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.order-card,
.execution-card {
  padding: 18px;
}

.order-card-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: flex-start;
}

.metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 16px 0;
}

.metrics div {
  padding: 10px;
  border-radius: 8px;
  background: var(--surface-2);
}

.metrics dt {
  color: var(--muted);
  font-size: 0.76rem;
}

.metrics dd {
  margin: 4px 0 0;
  font-weight: 800;
}

.recipe-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 16px;
}

.recipe-list span {
  border-radius: 999px;
  background: #edf5ef;
  padding: 7px 10px;
  color: #2f4937;
  font-size: 0.86rem;
}

.tech-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 12px 0 14px;
}

.tech-strip span {
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #ffffff;
  padding: 7px 10px;
  color: #405046;
  font-size: 0.84rem;
}

.tech-strip.compact {
  margin-bottom: 0;
}

.operator-board {
  display: grid;
  gap: 16px;
}

.operator-title {
  margin-bottom: 2px;
}

.execution-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(260px, 360px);
  gap: 18px;
  align-items: center;
}

.mix-box {
  display: grid;
  gap: 7px;
  padding: 14px;
  border-radius: 8px;
  background: #f3f6f1;
}

.wide-actions {
  grid-column: 1 / -1;
}

.wide-actions button {
  flex: 1;
}

.timeline-item {
  border-left: 3px solid var(--brand);
  padding-left: 12px;
}

.bar-row {
  display: grid;
  grid-template-columns: 150px minmax(120px, 1fr) 110px;
  gap: 10px;
  align-items: center;
}

.field-row {
  grid-template-columns: 210px minmax(120px, 1fr) 100px 120px;
}

.field-row em {
  color: var(--muted);
  font-style: normal;
  text-align: right;
}

.progress-box {
  display: grid;
  gap: 9px;
  margin: 14px 0;
}

.progress-box div:first-child {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: baseline;
}

.progress-box span {
  color: var(--muted);
}

.progress {
  height: 12px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--surface-2);
}

.progress i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--brand-2);
}

.gantt-panel {
  display: grid;
  gap: 12px;
  margin-bottom: 18px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfa;
}

.gantt-head {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: end;
}

.gantt-head p {
  margin-bottom: 0;
  color: var(--muted);
}

.gantt-controls {
  display: grid;
  grid-template-columns: 170px minmax(210px, 1fr) 145px 110px 145px 140px;
  gap: 10px;
  align-items: end;
}

.gantt-controls label,
.gantt-species-filter {
  min-width: 0;
}

.gantt-species-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  min-height: 44px;
  margin: 0;
  padding: 7px 9px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.gantt-species-filter legend {
  padding: 0 4px;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 800;
}

.gantt-species-filter label {
  display: inline-flex;
  gap: 5px;
  align-items: center;
  width: auto;
  margin: 0;
  font-size: 0.78rem;
  font-weight: 800;
}

.muted-control {
  opacity: 0.55;
}

.gantt-table {
  display: grid;
  gap: 8px;
  overflow-x: auto;
  overflow-y: visible;
}

.gantt-row {
  display: grid;
  grid-template-columns: 240px minmax(620px, 1fr);
  gap: 8px;
  align-items: center;
  min-width: 920px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.gantt-row[data-action="select-gantt-order"] {
  cursor: pointer;
}

.gantt-row.selected {
  border-color: var(--brand);
  box-shadow: 0 0 0 2px rgba(31, 111, 74, 0.12);
}

.gantt-row > span {
  display: grid;
  gap: 2px;
}

.gantt-row small {
  color: var(--muted);
}

.gantt-months {
  background: var(--surface-2);
  color: #405046;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
}

.gantt-month-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(38px, 1fr));
  gap: 0;
  align-items: center;
  border: 1px solid var(--line);
  border-right: 0;
  background: #ffffff;
}

.gantt-month-grid b {
  min-height: 28px;
  display: grid;
  place-items: center;
  border-right: 1px solid var(--line);
  text-align: center;
}

.gantt-track i {
  position: relative;
  display: grid;
  place-items: center;
  height: 28px;
  overflow: visible;
  border-radius: 6px;
  background: var(--surface-2);
  color: #111111;
  font-style: normal;
  font-weight: 900;
  z-index: 0;
  isolation: isolate;
}

.gantt-track i.active {
  border: 2px solid var(--program-color, var(--brand));
  background: color-mix(in srgb, var(--program-color, var(--brand)) 42%, white);
}

.gantt-track i.active::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  display: block;
  width: var(--progress);
  height: 4px;
  background: var(--program-color, var(--brand));
  z-index: -1;
}

.gantt-track i.active.done,
.gantt-day-track i.active.done {
  background: color-mix(in srgb, var(--program-color, var(--brand)) 42%, white);
}

.gantt-track i.active.done::after,
.gantt-day-track i.active.done::after {
  background: var(--program-color, var(--brand));
}

.gantt-track i.active.pending,
.gantt-day-track i.active.pending {
  background: color-mix(in srgb, var(--program-color, var(--brand)) 42%, white);
}

.gantt-track i.active.pending::after,
.gantt-day-track i.active.pending::after {
  background: var(--program-color, var(--brand));
}

.gantt-track i.active.process,
.gantt-day-track i.active.process {
  background: color-mix(in srgb, var(--program-color, var(--brand)) 42%, white);
}

.gantt-track i.active.process::after,
.gantt-day-track i.active.process::after {
  background: var(--program-color, var(--brand));
}

.gantt-table-month {
  gap: 7px;
}

.gantt-month-detail {
  grid-template-columns: 240px minmax(930px, 1fr);
  min-width: 1220px;
}

.gantt-month-header {
  background: var(--surface-2);
  color: #405046;
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
}

.gantt-day-grid {
  display: grid;
  grid-template-columns: repeat(var(--days), minmax(26px, 1fr));
  gap: 0;
  align-items: center;
  border: 1px solid var(--line);
  border-right: 0;
  background: #ffffff;
}

.gantt-day-grid b {
  min-height: 28px;
  display: grid;
  place-items: center;
  border-right: 1px solid var(--line);
  text-align: center;
  font-size: 0.75rem;
}

.gantt-day-track i {
  position: relative;
  display: grid;
  place-items: center;
  height: 30px;
  overflow: visible;
  border-radius: 5px;
  background: var(--surface-2);
  color: #111111;
  font-size: 0.68rem;
  font-style: normal;
  font-weight: 800;
  z-index: 0;
  isolation: isolate;
}

.gantt-day-track {
  min-height: calc(max(1, var(--rows)) * 36px);
  grid-auto-rows: 34px;
  align-items: center;
  background:
    repeating-linear-gradient(
      to right,
      transparent 0,
      transparent calc((100% / var(--days)) - 1px),
      var(--line) calc((100% / var(--days)) - 1px),
      var(--line) calc(100% / var(--days))
    ),
    #ffffff;
}

.gantt-stack {
  display: grid;
  gap: 2px;
  min-height: 34px;
  padding: 2px;
  border-right: 1px solid var(--line);
  align-items: center;
  position: relative;
}

.gantt-track .gantt-stack i {
  display: grid;
  place-items: center;
  color: #111111;
  font-size: 0.68rem;
  font-style: normal;
  font-weight: 800;
}

.gantt-track i::before,
.gantt-day-track i::before {
  content: attr(data-tooltip);
  position: absolute;
  left: 50%;
  top: calc(100% + 10px);
  bottom: auto;
  z-index: 9999;
  display: none;
  width: max-content;
  max-width: min(380px, 82vw);
  transform: translateX(-50%);
  white-space: pre-line;
  overflow-wrap: anywhere;
  pointer-events: none;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 12px;
  background: #ffffff;
  color: #111111;
  box-shadow: var(--shadow);
  font-size: 0.78rem;
  font-weight: 800;
  line-height: 1.45;
  text-align: left;
}

.gantt-track i:hover::before,
.gantt-day-track i:hover::before {
  display: block;
}

.gantt-day-track i.active {
  border: 2px solid var(--program-color, var(--brand));
  background: color-mix(in srgb, var(--program-color, var(--brand)) 42%, white);
  cursor: pointer;
  min-width: 0;
  padding: 0 6px;
  justify-content: start;
}

.gantt-day-track i.active::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  display: block;
  width: var(--progress);
  height: 4px;
  background: var(--program-color, var(--brand));
  z-index: -1;
}

.gantt-detail {
  display: grid;
  gap: 12px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}


.gantt-detail-note {
  display: grid;
  gap: 6px;
  padding: 10px 12px;
  border: 1px solid rgba(10, 61, 98, 0.14);
  border-left: 4px solid var(--brand);
  border-radius: 10px;
  background: linear-gradient(135deg, rgba(231, 246, 236, 0.92), rgba(255, 255, 255, 0.96));
  color: #111111;
}

.gantt-detail-note strong {
  color: var(--brand-2);
  font-size: 0.82rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.gantt-detail-note p {
  margin: 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.45;
}

.program-color-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 8px 2px 0;
}

.program-color-legend span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: #111111;
  font-size: 0.86rem;
  font-weight: 800;
}

.program-color-legend i {
  width: 16px;
  height: 16px;
  border: 2px solid var(--program-color);
  border-radius: 4px;
  background: color-mix(in srgb, var(--program-color) 42%, white);
}

.gantt-detail-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
}

.gantt-detail-grid span {
  display: grid;
  gap: 4px;
  padding: 10px;
  border-radius: 8px;
  background: var(--surface-2);
}

.gantt-detail-grid strong {
  color: var(--muted);
  font-size: 0.76rem;
  text-transform: uppercase;
}

.compact-table table {
  min-width: 560px;
  font-size: 0.9rem;
}

.program-filters {
  display: grid;
  grid-template-columns: 150px 150px minmax(220px, 1fr) 220px auto;
  gap: 12px;
  align-items: end;
  margin-bottom: 16px;
}

.program-kpis {
  margin-top: 8px;
}

.program-number-chip {
  display: inline-grid;
  min-width: 34px;
  place-items: center;
  border: 2px solid var(--program-color);
  border-radius: 6px;
  padding: 3px 8px;
  background: color-mix(in srgb, var(--program-color) 42%, white);
  color: #111111;
}

.mini-progress {
  height: 8px;
  min-width: 110px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--surface-2);
  margin-bottom: 5px;
}

.mini-progress i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--brand-2);
}

.report-block {
  margin-top: 18px;
}

.report-toolbar {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: end;
  margin-bottom: 18px;
}

.report-toolbar p {
  margin-bottom: 0;
  color: var(--muted);
}

.report-filters {
  display: grid;
  grid-template-columns: 180px 150px auto;
  gap: 10px;
  align-items: end;
}

.inline-filter {
  min-width: 170px;
}

.report-drill {
  border-bottom: 1px solid var(--line);
  padding: 8px 0;
}

.report-drill summary {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  cursor: pointer;
  color: var(--ink);
}

.report-drill summary span {
  color: var(--muted);
  font-weight: 700;
}

.report-water-comparison-list {
  display: grid;
  gap: 6px;
  padding: 8px 0 2px;
}

.report-water-comparison {
  display: grid;
  grid-template-columns: minmax(150px, 1fr) auto auto;
  gap: 12px;
  align-items: center;
  padding: 7px 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface-2);
}

.report-water-comparison span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.report-water-comparison small {
  color: var(--muted);
  font-weight: 700;
}

.report-kpis {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.report-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.report-program-products-panel {
  grid-column: 1 / -1;
}

.report-program-product-table {
  max-height: 520px;
  border: 1px solid var(--line);
  border-radius: 7px;
}

.report-program-product-table table {
  min-width: 1180px;
}

.report-program-product-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #eef7f2;
}

.report-program-group-row td {
  position: sticky;
  left: 0;
  padding: 8px 10px;
  background: #dff1e8;
  color: #0d513d;
  border-top: 2px solid #9dcfba;
}

.report-program-group-row td,
.report-program-group-row span {
  white-space: normal;
}

.report-program-group-row strong,
.report-program-group-row span {
  display: inline-block;
  margin-right: 16px;
}

.chart-panel {
  min-height: 300px;
}

.chart-body {
  display: grid;
  gap: 12px;
}

.report-progress-row {
  display: grid;
  grid-template-columns: minmax(130px, 1fr) minmax(160px, 2fr) 110px;
  gap: 10px;
  align-items: center;
}

.report-progress-row span {
  min-width: 0;
  color: #34433a;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.report-progress-row div {
  height: 14px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--surface-2);
}

.report-progress-row i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--accent);
}

.report-progress-row i.done {
  background: var(--ok);
}

.report-progress-row i.process {
  background: var(--danger);
}

.report-progress-row i.pending {
  background: #c48a15;
}

.report-progress-row strong {
  text-align: right;
}

.monthly-row {
  display: grid;
  grid-template-columns: 44px minmax(34px, 1fr) 88px 100px;
  gap: 8px;
  align-items: end;
}

.monthly-row div {
  display: flex;
  align-items: end;
  height: 86px;
  border-radius: 8px;
  background: var(--surface-2);
  overflow: hidden;
}

.monthly-row i {
  display: block;
  width: 100%;
  min-height: 2px;
  background: var(--brand-2);
}

.monthly-row small {
  color: var(--muted);
  text-align: right;
}

.bar-row div {
  height: 12px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--surface-2);
}

.bar-row i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--accent);
}

.good {
  color: var(--ok);
}

.bad {
  color: var(--danger);
}

.empty {
  border: 1px dashed var(--line);
  border-radius: 8px;
  padding: 24px;
  color: var(--muted);
}

.modal {
  width: min(920px, calc(100vw - 24px));
  max-height: calc(100vh - 24px);
  border: 0;
  border-radius: 8px;
  padding: 0;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.28);
}

.modal::backdrop {
  background: rgba(15, 28, 20, 0.45);
}

.modal-body {
  display: grid;
  gap: 16px;
  padding: 22px;
}

.auth-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  padding: 4px;
  border-radius: 8px;
  background: var(--surface-2);
}

.auth-tabs button {
  min-height: 40px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--muted);
  font-weight: 800;
}

.auth-tabs button.active {
  background: #ffffff;
  color: var(--brand);
  box-shadow: 0 4px 14px rgba(32, 51, 38, 0.12);
}

.link-button {
  min-height: auto;
  border: 0;
  padding: 4px 0;
  background: transparent;
  color: var(--brand);
  font-weight: 900;
  text-align: center;
}

.link-button:hover {
  text-decoration: underline;
}

.auth-privacy {
  display: grid;
  justify-items: center;
  gap: 3px;
  border-top: 1px solid rgba(31, 111, 74, 0.14);
  padding-top: 10px;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 750;
  text-align: center;
}

.auth-privacy .link-button {
  min-height: 24px;
  color: #075f46;
}

.sidebar-privacy-link {
  display: inline-block;
  border: 0;
  padding: 0;
  background: transparent;
  color: rgba(255, 255, 255, 0.82);
  font-size: 0.62rem;
  font-weight: 850;
  text-align: left;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}

.privacy-policy-modal {
  width: min(940px, calc(100vw - 24px));
  max-height: min(88vh, 820px);
  overflow: hidden;
  border-radius: 12px;
  background: #f4faf6;
}

.privacy-policy-body {
  gap: 0;
  padding: 0;
  background:
    linear-gradient(135deg, rgba(236, 253, 245, 0.92), rgba(255, 255, 255, 0.94)),
    radial-gradient(circle at 12% 8%, rgba(16, 185, 129, 0.24), transparent 34%),
    linear-gradient(135deg, #0f3d2e, #f4faf6 56%, #ffffff);
}

.privacy-hero {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  padding: 20px;
  border-bottom: 1px solid rgba(31, 111, 74, 0.14);
  background:
    linear-gradient(135deg, rgba(9, 78, 57, 0.94), rgba(20, 121, 89, 0.78)),
    linear-gradient(90deg, rgba(255, 255, 255, 0.08), transparent);
  color: #ffffff;
}

.privacy-logo {
  display: grid;
  place-items: center;
  width: 58px;
  height: 58px;
  border: 1px solid rgba(255, 255, 255, 0.42);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 14px 34px rgba(4, 44, 31, 0.26);
}

.privacy-logo img {
  width: 46px;
  height: 46px;
  object-fit: contain;
}

.privacy-hero span {
  display: block;
  margin-bottom: 3px;
  color: rgba(255, 255, 255, 0.78);
  font-size: 0.72rem;
  font-weight: 900;
  text-transform: uppercase;
}

.privacy-hero h2 {
  margin: 0;
  font-size: clamp(1.35rem, 2.4vw, 2rem);
  line-height: 1.05;
}

.privacy-hero p {
  max-width: 760px;
  margin: 6px 0 0;
  color: rgba(255, 255, 255, 0.88);
  font-size: 0.86rem;
  line-height: 1.35;
}

.privacy-hero .icon-button {
  border-color: rgba(255, 255, 255, 0.34);
  background: rgba(255, 255, 255, 0.14);
  color: #ffffff;
}

.privacy-policy-content {
  display: grid;
  gap: 10px;
  max-height: min(58vh, 540px);
  overflow: auto;
  padding: 16px 20px;
}

.privacy-policy-content section {
  display: grid;
  gap: 6px;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 9px;
  padding: 12px;
  background: rgba(255, 255, 255, 0.82);
}

.privacy-policy-content h3,
.privacy-policy-content p {
  margin: 0;
}

.privacy-policy-content h3,
.privacy-summary strong,
.privacy-note strong {
  color: #0d513d;
  font-size: 0.88rem;
  font-weight: 950;
}

.privacy-policy-content p,
.privacy-policy-content li {
  color: #3d524a;
  font-size: 0.8rem;
  line-height: 1.45;
}

.privacy-policy-content ul {
  display: grid;
  gap: 4px;
  margin: 0;
  padding-left: 18px;
}

.privacy-summary {
  border-color: rgba(4, 120, 87, 0.22) !important;
  background: #ecfdf5 !important;
}

.privacy-note {
  border-color: rgba(245, 158, 11, 0.28) !important;
  background: #fff8e7 !important;
}

.privacy-actions {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  border-top: 1px solid rgba(31, 111, 74, 0.12);
  padding: 12px 20px 16px;
  background: rgba(255, 255, 255, 0.88);
}

.privacy-actions span {
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 850;
}

.privacy-page {
  min-height: 100vh;
  background:
    linear-gradient(135deg, rgba(238, 247, 244, 0.96), rgba(255, 255, 255, 0.98)),
    radial-gradient(circle at 14% 10%, rgba(16, 185, 129, 0.22), transparent 30%),
    linear-gradient(135deg, #123d2f, #eef7f4 48%, #ffffff);
}

.privacy-page-shell {
  display: grid;
  gap: 14px;
  width: min(1120px, calc(100% - 28px));
  margin: 0 auto;
  padding: 28px 0 36px;
}

.privacy-page-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
  min-height: 220px;
  border: 1px solid rgba(255, 255, 255, 0.32);
  border-radius: 14px;
  padding: clamp(18px, 3vw, 34px);
  background:
    linear-gradient(135deg, rgba(8, 64, 45, 0.96), rgba(18, 125, 88, 0.86)),
    linear-gradient(90deg, rgba(255, 255, 255, 0.12), transparent);
  box-shadow: 0 24px 70px rgba(9, 62, 45, 0.2);
  color: #ffffff;
}

.privacy-page-brand {
  display: flex;
  gap: 18px;
  align-items: center;
  min-width: 0;
}

.privacy-page-brand span {
  display: block;
  margin-bottom: 4px;
  color: rgba(255, 255, 255, 0.76);
  font-size: 0.78rem;
  font-weight: 950;
  text-transform: uppercase;
}

.privacy-page-brand h1 {
  margin: 0;
  font-size: clamp(2rem, 4.4vw, 4rem);
  line-height: 0.98;
}

.privacy-page-brand p {
  max-width: 620px;
  margin: 10px 0 0;
  color: rgba(255, 255, 255, 0.86);
  font-size: 1rem;
  line-height: 1.35;
}

.privacy-back-link {
  align-self: start;
  border-color: rgba(255, 255, 255, 0.42);
  background: rgba(255, 255, 255, 0.16);
  color: #ffffff;
  text-decoration: none;
}

.privacy-page-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.privacy-page-card {
  display: grid;
  gap: 8px;
  border: 1px solid rgba(31, 111, 74, 0.14);
  border-radius: 12px;
  padding: 18px;
  background: rgba(255, 255, 255, 0.86);
  box-shadow: 0 12px 34px rgba(12, 65, 49, 0.08);
}

.privacy-page-card h2,
.privacy-page-card p {
  margin: 0;
}

.privacy-page-card h2,
.privacy-page-card strong {
  color: #0d513d;
  font-size: 1rem;
  font-weight: 950;
}

.privacy-page-card p,
.privacy-page-card li {
  color: #3d524a;
  font-size: 0.9rem;
  line-height: 1.55;
}

.privacy-page-card ul {
  display: grid;
  gap: 6px;
  margin: 0;
  padding-left: 20px;
}

.privacy-page-summary {
  border-color: rgba(4, 120, 87, 0.24);
  background: #ecfdf5;
}

.privacy-page-note {
  border-color: rgba(245, 158, 11, 0.28);
  background: #fff8e7;
}

.privacy-page-footer {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  padding: 4px 2px;
  color: var(--muted);
  font-size: 0.8rem;
  font-weight: 850;
}

.privacy-page-footer a {
  color: var(--brand);
  font-weight: 950;
}

.auth-inline-actions {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: 8px;
}

.auth-pane {
  display: none;
}

.active-auth-pane {
  display: grid;
  gap: 16px;
}

.auth-status {
  min-height: 22px;
  border-radius: 8px;
  padding: 9px 11px;
  background: var(--surface-2);
  color: var(--muted);
  font-weight: 700;
}

.auth-status:empty {
  display: none;
}

.auth-status.error {
  background: #fff0ed;
  color: var(--danger);
}

.auth-status.success {
  background: #e6f5ec;
  color: var(--ok);
}

.modal-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

label {
  display: grid;
  gap: 6px;
  color: #435045;
  font-weight: 700;
}

.full {
  grid-column: 1 / -1;
}

.block-picker,
.program-picker {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-2);
}

.block-picker-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: end;
}

.selected-blocks {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  min-height: 34px;
  align-items: center;
}

.selected-block-group {
  display: grid;
  gap: 6px;
  min-width: 180px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
}

.selected-block-group strong {
  color: #111111;
  font-size: 0.84rem;
}

.selected-block-group div {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.block-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 32px;
  border: 1px solid var(--brand);
  border-radius: 999px;
  padding: 6px 10px;
  background: #ffffff;
  color: var(--brand);
  font-weight: 800;
}

.block-chip span {
  color: var(--muted);
}

.field-hint,
.muted-text {
  margin: 0;
  color: var(--muted);
  font-size: 0.9rem;
  font-weight: 600;
}

input,
select,
textarea {
  width: 100%;
  min-height: 42px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 9px 11px;
  background: #ffffff;
  color: var(--ink);
}

textarea {
  resize: vertical;
}

.recipe-editor {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfa;
}

.recipe-line {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) 130px 150px 150px 40px;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
}

.recipe-product-picker {
  min-width: 0;
}

.recipe-product-picker input,
.recipe-product-trigger {
  width: 100%;
}

.recipe-product-trigger {
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 7px 9px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #ffffff;
  color: var(--ink);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.recipe-product-trigger:hover,
.recipe-product-trigger:focus-visible {
  border-color: var(--brand);
  outline: 2px solid rgba(4, 120, 87, 0.14);
  outline-offset: 1px;
}

.recipe-product-trigger > span {
  min-width: 0;
  display: grid;
  gap: 2px;
}

.recipe-product-trigger strong,
.recipe-product-trigger small {
  overflow-wrap: anywhere;
}

.recipe-product-trigger strong {
  font-size: 0.82rem;
  line-height: 1.15;
}

.recipe-product-trigger small {
  color: var(--muted);
  font-size: 0.67rem;
  line-height: 1.2;
}

.recipe-product-trigger > b {
  flex: 0 0 auto;
  padding: 3px 6px;
  border-radius: 5px;
  background: var(--surface-2);
  color: var(--brand);
  font-size: 0.68rem;
}

.recipe-product-dialog {
  width: min(840px, calc(100vw - 24px));
  overflow: hidden;
}

.recipe-product-catalog {
  height: min(760px, calc(100dvh - 28px));
  grid-template-rows: auto auto auto minmax(0, 1fr);
  gap: 12px;
  overflow: hidden;
}

.recipe-product-catalog .modal-head > div {
  display: grid;
  gap: 2px;
}

.recipe-product-catalog .modal-head h2,
.recipe-product-catalog .modal-head p {
  margin: 0;
}

.recipe-product-catalog .modal-head p {
  color: var(--muted);
  font-size: 0.76rem;
  font-weight: 700;
}

.recipe-product-catalog-tools {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(190px, 0.38fr);
  gap: 10px;
  align-items: end;
}

.recipe-product-catalog-tools label {
  min-width: 0;
  display: grid;
  gap: 5px;
  color: #40564e;
  font-size: 0.7rem;
  font-weight: 850;
  text-transform: uppercase;
}

.recipe-product-catalog-tools input,
.recipe-product-catalog-tools select {
  min-height: 42px;
  font-size: 0.86rem;
  text-transform: none;
}

.recipe-product-catalog-summary {
  min-height: 24px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  color: var(--muted);
  font-size: 0.72rem;
}

.recipe-product-catalog-list {
  min-height: 0;
  display: grid;
  align-content: start;
  gap: 6px;
  padding: 2px 7px 2px 2px;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}

.recipe-product-option {
  width: 100%;
  min-height: 64px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(130px, 0.3fr);
  gap: 12px;
  align-items: center;
  padding: 9px 11px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #ffffff;
  color: var(--ink);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color 120ms ease, background-color 120ms ease, transform 120ms ease;
}

.recipe-product-option:hover,
.recipe-product-option:focus-visible {
  border-color: var(--brand);
  background: #f3faf7;
  outline: none;
  transform: translateY(-1px);
}

.recipe-product-option.is-selected {
  border-color: var(--brand);
  background: #eaf6f1;
  box-shadow: inset 3px 0 0 var(--brand);
}

.recipe-product-option-copy,
.recipe-product-option-meta {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.recipe-product-option-copy strong,
.recipe-product-option-copy small,
.recipe-product-option-copy em,
.recipe-product-option-meta small {
  overflow-wrap: anywhere;
}

.recipe-product-option-copy strong {
  font-size: 0.87rem;
  line-height: 1.2;
}

.recipe-product-option-copy small,
.recipe-product-option-copy em {
  color: var(--muted);
  font-size: 0.7rem;
  line-height: 1.25;
}

.recipe-product-option-copy em {
  font-style: normal;
}

.recipe-product-option-meta {
  justify-items: end;
  text-align: right;
}

.recipe-product-option-meta b {
  padding: 4px 7px;
  border-radius: 5px;
  background: #e5f4ee;
  color: var(--brand);
  font-size: 0.72rem;
}

.recipe-product-option-meta small {
  color: #536a61;
  font-size: 0.63rem;
  font-weight: 750;
}

.recipe-product-empty {
  min-height: 180px;
  display: grid;
  place-content: center;
  gap: 6px;
  color: var(--muted);
  text-align: center;
}

.recipe-product-empty strong {
  color: var(--ink);
}

.recipe-line-head {
  color: var(--muted);
  font-size: 0.82rem;
}

.recipe-line input[name="productHaProgram"][readonly] {
  border-color: #9fc9ba;
  background: #eaf6f1;
  color: #155f4b;
  font-weight: 850;
  cursor: default;
}

.toast {
  position: fixed;
  right: 24px;
  bottom: 24px;
  transform: translateY(20px);
  opacity: 0;
  pointer-events: none;
  border-radius: 8px;
  background: #17211b;
  color: #ffffff;
  padding: 12px 16px;
  box-shadow: var(--shadow);
  transition: 180ms ease;
}

.toast.visible {
  transform: translateY(0);
  opacity: 1;
}

.calc-preview {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #f3f6f1;
}

.calc-preview span {
  color: var(--muted);
}

.calc-preview strong {
  display: block;
  margin-top: 4px;
  color: var(--ink);
}

.print-area {
  display: none;
}

@media (max-width: 980px) {
  .app-shell {
    grid-template-columns: 1fr;
  }

  .sidebar {
    position: static;
    height: auto;
    padding: 16px;
  }

  .nav {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .sync-box {
    grid-template-columns: 1fr 1fr;
  }

  .sync-box span {
    grid-column: 1 / -1;
  }

  .main {
    padding: 18px;
  }

  .kpi-grid,
  .core-overview,
  .report-grid,
  .two-columns,
  .dashboard-ops,
  .order-grid,
  .block-picker-head,
  .execution-card {
    grid-template-columns: 1fr;
  }
}

@media print {
  @page {
    size: A4 landscape;
    margin: 10mm;
  }

  body {
    background: #ffffff;
  }

  .app-shell,
  .modal,
  .toast {
    display: none !important;
  }

  .print-area {
    display: block;
    color: #111111;
    font-family: Arial, sans-serif;
  }

  .print-sheet {
    width: 100%;
  }

  .print-head {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: flex-start;
    border-bottom: 2px solid #111111;
    padding-bottom: 8px;
    margin-bottom: 10px;
  }

  .print-head h1 {
    font-size: 22px;
    margin: 0 0 4px;
  }

  .print-head p,
  .print-box span {
    margin: 0;
    font-size: 12px;
  }

  .print-box {
    border: 1px solid #111111;
    padding: 8px 16px;
    min-width: 130px;
    text-align: center;
  }

  .print-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 6px;
    margin-bottom: 10px;
  }

  .print-grid div {
    border: 1px solid #444444;
    padding: 5px;
    min-height: 42px;
  }

  .print-grid strong,
  .print-grid span {
    display: block;
    font-size: 11px;
  }

  .print-grid span {
    margin-top: 3px;
    font-size: 12px;
  }

  .print-table {
    width: 100%;
    min-width: 0;
    border-collapse: collapse;
    font-size: 11px;
  }

  .print-table th,
  .print-table td {
    border: 1px solid #333333;
    padding: 5px;
  }

  .print-table th {
    background: #eeeeee !important;
    color: #111111;
  }

  .signature-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
    margin-top: 28px;
  }

  .signature-grid span {
    display: block;
    border-bottom: 1px solid #111111;
    height: 28px;
  }

  .signature-grid strong {
    display: block;
    margin-top: 5px;
    text-align: center;
    font-size: 11px;
  }
}

@media (max-width: 640px) {
  .topbar,
  .panel-header,
  .order-card-head {
    align-items: stretch;
    flex-direction: column;
  }

  .top-actions,
  .card-actions,
  .modal-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .nav {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .kpi-grid,
  .metrics,
  .form-grid,
  .program-filters,
  .report-toolbar,
  .report-filters,
  .gantt-controls,
  .gantt-detail-grid,
  .recipe-line,
  .bar-row,
  .report-progress-row,
  .monthly-row,
  .calc-preview {
    grid-template-columns: 1fr;
  }

  .wide-actions {
    display: grid;
    grid-template-columns: 1fr;
  }
}

/* ===== Mejoras responsive y legibilidad móvil - Canelillo AgroCore ===== */
html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  overflow-x: hidden;
}

img,
svg,
canvas,
video {
  max-width: 100%;
}

button,
.nav-item,
.nav-group-toggle,
.primary-button,
.secondary-button,
.ghost-button,
.danger-button,
.icon-button {
  touch-action: manipulation;
}

input,
select,
textarea {
  max-width: 100%;
  color: var(--ink);
  background: #ffffff;
}

.auth-status:not(:empty) {
  padding: 10px 12px;
  border-radius: 10px;
  background: #eef7f1;
  color: #123d2b;
  font-weight: 800;
}

.table-wrap,
.gantt-table,
.report-table,
.geo-map-wrap {
  -webkit-overflow-scrolling: touch;
}

.table-wrap::after,
.gantt-table::after {
  content: "Desliza hacia el lado para ver más";
  display: none;
  margin-top: 8px;
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 700;
}

@media (max-width: 980px) {
  :root {
    --shadow: 0 14px 32px rgba(9, 35, 62, 0.12);
  }

  .app-shell {
    display: block;
  }

  .sidebar {
    position: sticky;
    top: 0;
    z-index: 20;
    height: auto;
    max-height: none;
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
    box-shadow: 0 10px 30px rgba(0, 29, 54, 0.18);
  }

  .brand {
    min-width: 0;
  }

  .brand strong,
  .brand span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .nav {
    display: block;
  }

  .nav-group.open {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding-bottom: 6px;
    scroll-snap-type: x proximity;
  }

  .nav-item {
    flex: 0 0 auto;
    width: auto;
    min-width: 112px;
    text-align: center;
    scroll-snap-align: start;
  }

  .sync-box {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
  }

  .sync-box span {
    flex: 1 0 100%;
  }

  .main {
    padding: 18px clamp(12px, 4vw, 22px) 28px;
  }

  .topbar {
    position: sticky;
    top: 122px;
    z-index: 15;
    padding: 12px;
    margin: -6px -6px 18px;
    border: 1px solid var(--line);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.94);
    backdrop-filter: blur(12px);
    box-shadow: 0 10px 24px rgba(9, 35, 62, 0.08);
  }

  .top-actions {
    flex-wrap: wrap;
  }

  .panel,
  .order-card,
  .execution-card,
  .auth-card,
  .modal-body {
    border-radius: 18px;
  }

  .table-wrap::after,
  .gantt-table::after {
    display: block;
  }

  table {
    min-width: 680px;
  }

  .gantt-row,
  .gantt-month-detail {
    min-width: 880px;
  }
}

@media (max-width: 640px) {
  body {
    background: #f3f7f5;
  }

  .auth-gate {
    align-items: start;
    padding: max(14px, env(safe-area-inset-top)) 12px 18px;
    background: linear-gradient(160deg, #09233e 0%, #123d2b 44%, #f7fbf8 44%);
  }

  .auth-card {
    padding: 18px;
    gap: 14px;
    border-radius: 22px;
  }

  .auth-tabs {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .auth-tabs button,
  .primary-button,
  .secondary-button,
  .ghost-button,
  .danger-button,
  .nav-item,
  .nav-group-toggle {
    min-height: 46px;
  }

  .sidebar {
    padding: 12px;
    gap: 12px;
  }

  .brand-mark {
    width: 40px;
    height: 40px;
    border-radius: 12px;
  }

  .nav-group-toggle {
    border-radius: 14px;
  }

  .nav-group.open {
    margin-right: -12px;
    padding-right: 12px;
  }

  .nav-item {
    min-width: 104px;
    border-radius: 14px;
    padding-inline: 12px;
    font-size: 0.9rem;
  }

  .sync-box {
    display: grid;
    grid-template-columns: 1fr;
  }

  .main {
    padding: 14px 10px 24px;
  }

  .topbar {
    top: 112px;
    display: grid;
    gap: 12px;
    margin: 0 0 14px;
  }

  h1 {
    font-size: clamp(1.35rem, 7vw, 1.85rem);
    line-height: 1.08;
  }

  h2 {
    font-size: 1.16rem;
  }

  h3 {
    font-size: 1rem;
  }

  p,
  label,
  td,
  input,
  select,
  textarea,
  button {
    font-size: 0.95rem;
  }

  .top-actions,
  .card-actions,
  .modal-actions,
  .wide-actions {
    display: grid;
    grid-template-columns: 1fr;
    width: 100%;
  }

  .top-actions > *,
  .card-actions > *,
  .modal-actions > *,
  .wide-actions > * {
    width: 100%;
  }

  .panel,
  .order-card,
  .execution-card {
    padding: 14px;
  }

  .kpi-grid,
  .report-grid,
  .dashboard-ops,
  .order-grid,
  .metrics,
  .form-grid,
  .program-filters,
  .report-toolbar,
  .report-filters,
  .gantt-controls,
  .gantt-detail-grid,
  .recipe-line,
  .bar-row,
  .field-row,
  .report-progress-row,
  .monthly-row,
  .calc-preview,
  .execution-card {
    grid-template-columns: 1fr !important;
  }

  .panel-header,
  .order-card-head,
  .gantt-head,
  .alert-row,
  .progress-box div:first-child {
    align-items: stretch;
    flex-direction: column;
  }

  .metrics {
    gap: 10px;
  }

  .metrics div {
    padding: 12px;
  }

  .recipe-list,
  .tech-strip {
    gap: 6px;
  }

  .recipe-list span,
  .tech-strip span,
  .badge {
    width: fit-content;
    max-width: 100%;
    white-space: normal;
  }

  .modal {
    width: min(96vw, 760px);
    max-height: 92dvh;
    padding: 0;
  }

  .modal-body {
    max-height: 92dvh;
    overflow: auto;
    padding: 16px;
  }

  .modal-head {
    position: sticky;
    top: 0;
    z-index: 3;
    margin: -16px -16px 12px;
    padding: 14px 16px;
    background: #ffffff;
    border-bottom: 1px solid var(--line);
  }

  dialog::backdrop {
    background: rgba(2, 20, 36, 0.58);
  }

  .toast {
    left: 10px;
    right: 10px;
    bottom: max(10px, env(safe-area-inset-bottom));
    width: auto;
    text-align: center;
  }

  table {
    min-width: 620px;
    font-size: 0.88rem;
  }

  th,
  td {
    padding: 10px 8px;
  }

  .gantt-row,
  .gantt-month-detail {
    min-width: 760px;
    grid-template-columns: 180px minmax(560px, 1fr);
  }

  .gantt-day-grid b,
  .gantt-track .gantt-stack i,
  .gantt-day-track i {
    font-size: 0.62rem;
  }
}

@media (max-width: 420px) {
  .brand span {
    display: none;
  }

  .nav-item {
    min-width: 96px;
    font-size: 0.84rem;
  }

  .topbar {
    top: 102px;
  }

  .auth-card,
  .panel,
  .order-card,
  .execution-card {
    border-radius: 16px;
  }

  table {
    min-width: 580px;
  }
}

/* ===== Rediseño visual premium + responsive móvil Canelillo AgroCore ===== */
:root {
  --bg: #eef5f4;
  --surface: rgba(255, 255, 255, 0.94);
  --surface-2: #f0f7f3;
  --ink: #082033;
  --muted: #607181;
  --line: rgba(8, 32, 51, 0.12);
  --brand: #0b2d4d;
  --brand-2: #17824d;
  --accent: #21a366;
  --shadow: 0 22px 55px rgba(8, 32, 51, 0.14);
  --glow: 0 18px 45px rgba(23, 130, 77, 0.22);
}

body {
  background:
    radial-gradient(circle at 10% 5%, rgba(33, 163, 102, 0.13), transparent 28%),
    radial-gradient(circle at 90% 0%, rgba(11, 45, 77, 0.18), transparent 34%),
    linear-gradient(135deg, #eef5f4 0%, #f8fbff 100%);
}

.auth-gate {
  overflow: hidden;
  background:
    linear-gradient(120deg, rgba(3, 18, 29, 0.82), rgba(10, 67, 47, 0.76) 46%, rgba(5, 24, 35, 0.68)),
    url("fondo.JPEG") center / cover no-repeat,
    linear-gradient(135deg, #061a2e, #145f3d 58%, #ffffff);
  perspective: none;
}

.auth-gate::before,
.auth-gate::after {
  display: none;
}

.auth-card {
  position: relative;
  z-index: 1;
  width: min(980px, calc(100vw - 28px));
  grid-template-columns: minmax(310px, 0.9fr) minmax(380px, 1.1fr);
  align-items: stretch;
  gap: 0;
  padding: 0;
  overflow: hidden;
  border-radius: 22px;
  border: 1px solid rgba(255, 255, 255, 0.34);
  background: linear-gradient(90deg, rgba(8, 44, 31, 0.94) 0 38%, rgba(255, 255, 255, 0.98) 38% 100%);
  backdrop-filter: blur(18px) saturate(1.08);
  box-shadow: 0 34px 90px rgba(1, 16, 27, 0.46);
  transform-style: flat;
  animation: cardEntrance 420ms cubic-bezier(.2,.8,.2,1) both;
}

.auth-card > .auth-brand,
.auth-card > .auth-copy {
  grid-column: 1;
}

.auth-card > .auth-brand {
  align-self: start;
  margin: 28px 28px 0;
  color: #ffffff;
}

.auth-card > .auth-brand strong {
  color: #ffffff;
  font-size: 1rem;
}

.auth-card > .auth-brand span {
  color: rgba(232, 250, 239, 0.82);
  font-weight: 850;
}

.auth-copy {
  display: grid;
  align-content: center;
  gap: 15px;
  min-height: 420px;
  padding: 30px 28px 32px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0));
}

.auth-copy h1 {
  max-width: 10.5em;
  margin: 0;
  color: #ffffff;
  font-size: clamp(1.9rem, 3.2vw, 3rem);
  line-height: 1;
}

.auth-copy p {
  max-width: 32ch;
  margin: 0;
  color: rgba(235, 251, 241, 0.84);
  font-size: 0.86rem;
  font-weight: 800;
  line-height: 1.35;
}

.auth-security-list {
  display: grid;
  gap: 8px;
  margin-top: 4px;
}

.auth-security-list span {
  display: grid;
  gap: 1px;
  padding: 10px 11px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.08);
}

.auth-security-list strong {
  color: #ffffff;
  font-size: 0.78rem;
}

.auth-security-list small {
  color: rgba(232, 250, 239, 0.72);
  font-size: 0.68rem;
  font-weight: 800;
}

.auth-trust-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 6px;
}

.auth-trust-strip span {
  padding: 5px 8px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.10);
  color: #ecfff4;
  font-size: 0.68rem;
  font-weight: 950;
}

.auth-card-main,
.auth-card > .auth-tabs,
.auth-card > .auth-status,
.auth-card > .auth-pane,
.auth-card > .auth-privacy {
  grid-column: 2;
}

.auth-card > .auth-tabs {
  margin: 28px 30px 0;
}

.auth-card > .auth-status,
.auth-card > .auth-pane,
.auth-card > .auth-privacy {
  margin-inline: 30px;
}

.auth-card > .auth-privacy {
  margin-bottom: 26px;
}

.auth-pane-head {
  display: grid;
  gap: 3px;
  padding: 10px 12px;
  border: 1px solid rgba(31, 111, 74, 0.14);
  border-radius: 12px;
  background: #f3faf6;
}

.auth-pane-head strong {
  color: #173925;
  font-size: 0.92rem;
}

.auth-pane-head span {
  color: var(--muted);
  font-size: 0.74rem;
  font-weight: 800;
}

.auth-submit {
  min-height: 44px;
  font-size: 0.94rem;
}

.primary-button.is-loading,
.secondary-button.is-loading,
.danger-button.is-loading {
  cursor: progress;
  opacity: 0.74;
}

.password-rules {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: -4px;
}

.password-rules span {
  padding: 4px 7px;
  border: 1px solid rgba(95, 110, 101, 0.16);
  border-radius: 999px;
  background: #f5f7f4;
  color: #617168;
  font-size: 0.66rem;
  font-weight: 900;
}

.password-rules span.is-valid {
  border-color: rgba(31, 111, 74, 0.22);
  background: #e7f5ed;
  color: #1f6f4a;
}

@media (max-width: 760px) {
  .auth-gate {
    align-items: start;
    overflow-y: auto;
    padding: 12px;
  }

  .auth-card {
    width: min(100%, 440px);
    grid-template-columns: 1fr;
    margin-block: 10px;
  }

  .auth-card > .auth-brand,
  .auth-card > .auth-copy,
  .auth-card > .auth-tabs,
  .auth-card > .auth-status,
  .auth-card > .auth-pane,
  .auth-card > .auth-privacy {
    grid-column: 1;
    margin-inline: 16px;
  }

  .auth-card > .auth-brand {
    margin-top: 18px;
  }

  .auth-copy {
    min-height: auto;
    padding: 18px 16px;
  }

  .auth-copy h1 {
    max-width: none;
    font-size: 1.45rem;
  }

  .auth-card > .auth-tabs {
    margin-top: 0;
  }

  .auth-card > .auth-privacy {
    margin-bottom: 16px;
  }
}

.brand-mark {
  position: relative;
  overflow: hidden;
  border-radius: 16px;
  background: linear-gradient(145deg, #ffffff, #dff4e8);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7), 0 14px 28px rgba(11,45,77,.22);
}

.brand-mark img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 6px;
}

.brand-mark.logo-fallback::after {
  content: "AC";
  font-weight: 950;
  color: var(--brand-2);
}

.sidebar {
  background:
    linear-gradient(180deg, rgba(6, 26, 46, 0.98), rgba(8, 60, 42, 0.96)),
    radial-gradient(circle at 20% 0%, rgba(33, 163, 102, 0.28), transparent 35%);
  box-shadow: 16px 0 55px rgba(8, 32, 51, 0.18);
}

.nav-item,
.nav-group-toggle,
.ghost-button,
.primary-button,
.secondary-button,
.danger-button,
.icon-button {
  border-radius: 14px;
  transition: transform 180ms ease, box-shadow 180ms ease, background 180ms ease, border-color 180ms ease;
}

.nav-item:hover,
.nav-item.active,
.primary-button:hover,
.secondary-button:hover,
.ghost-button:hover,
.danger-button:hover,
.icon-button:hover {
  transform: translateY(-2px);
}

.nav-item.active {
  background: linear-gradient(135deg, rgba(33,163,102,.26), rgba(255,255,255,.12));
  box-shadow: inset 4px 0 0 #21a366, 0 12px 24px rgba(0,0,0,.12);
}

.primary-button {
  background: linear-gradient(135deg, #0b2d4d, #17824d);
  box-shadow: 0 12px 24px rgba(11,45,77,.18);
}

.secondary-button {
  color: #0b2d4d;
  background: #ffffff;
}

.panel,
.kpi,
.order-card,
.execution-card,
.gantt-panel,
.gantt-detail,
.modal {
  border-radius: 24px;
  border: 1px solid rgba(8,32,51,.10);
  background: rgba(255,255,255,.92);
  backdrop-filter: blur(12px);
  transform-style: preserve-3d;
  animation: sectionRise 420ms ease both;
}

.panel:hover,
.kpi:hover,
.order-card:hover,
.execution-card:hover {
  box-shadow: var(--glow);
  transform: translateY(-3px) rotateX(.4deg);
}

.kpi strong {
  color: #0b2d4d;
}

.table-wrap {
  border-radius: 18px;
  border: 1px solid rgba(8,32,51,.08);
  background: #ffffff;
}

table {
  overflow: hidden;
}

th {
  color: #0b2d4d;
  background: #f0f7f3;
  letter-spacing: .04em;
}

tbody tr {
  transition: background 160ms ease, transform 160ms ease;
}

tbody tr:hover {
  background: rgba(33, 163, 102, 0.055);
}

input:focus,
select:focus,
textarea:focus {
  outline: 3px solid rgba(33, 163, 102, 0.16);
  border-color: #21a366;
  box-shadow: 0 0 0 4px rgba(33, 163, 102, 0.08);
}

.view.active-view {
  animation: pageFade 340ms ease both;
}

.report-progress-row div,
.progress,
.monthly-row div,
.bar-row div {
  background: linear-gradient(180deg, #eaf3f4, #dfeee8);
}

.report-progress-row i,
.bar-row i,
.monthly-row i,
.progress i {
  background: linear-gradient(90deg, #17824d, #21a366);
  box-shadow: 0 0 16px rgba(33, 163, 102, 0.25);
}

@keyframes cardEntrance {
  from { opacity: 0; transform: translateY(22px) rotateX(8deg) scale(.97); }
  to { opacity: 1; transform: translateY(0) rotateX(0) scale(1); }
}

@keyframes float3d {
  0%, 100% { transform: translateY(0) rotateX(0deg) rotateY(0deg); }
  50% { transform: translateY(-7px) rotateX(1.2deg) rotateY(-1.2deg); }
}

@keyframes sectionRise {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes pageFade {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes orbFloat {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to { transform: translate3d(28px, 22px, 80px) scale(1.08); }
}

@media (max-width: 760px) {
  .inventory-layout.two-columns,
  .report-grid,
  .report-kpis,
  .kpi-grid {
    grid-template-columns: 1fr !important;
  }

  .panel-header,
  .report-toolbar {
    display: grid;
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .panel-header .top-actions,
  .report-filters {
    display: grid;
    grid-template-columns: 1fr;
    width: 100%;
  }

  #inventory table,
  #prices table,
  #reports .compact-table table {
    min-width: 0;
    border-collapse: separate;
    border-spacing: 0 12px;
  }

  #inventory thead,
  #prices thead,
  #reports .compact-table thead {
    display: none;
  }

  #inventory tbody,
  #prices tbody,
  #reports .compact-table tbody,
  #inventory tr,
  #prices tr,
  #reports .compact-table tr,
  #inventory td,
  #prices td,
  #reports .compact-table td {
    display: block;
    width: 100%;
  }

  #inventory tr,
  #prices tr,
  #reports .compact-table tr {
    border: 1px solid rgba(8,32,51,.10);
    border-radius: 18px;
    padding: 12px;
    background: linear-gradient(145deg, #ffffff, #f5fbf7);
    box-shadow: 0 12px 28px rgba(8,32,51,.08);
  }

  #inventory td,
  #prices td,
  #reports .compact-table td {
    display: grid;
    grid-template-columns: minmax(105px, 42%) 1fr;
    gap: 10px;
    align-items: center;
    border-bottom: 1px solid rgba(8,32,51,.08);
    padding: 10px 2px;
    text-align: right;
    word-break: break-word;
  }

  #inventory td:first-child,
  #prices td:first-child,
  #reports .compact-table td:first-child {
    grid-template-columns: 1fr;
    text-align: left;
    color: #082033;
    font-size: 1rem;
  }

  #inventory td:last-child,
  #prices td:last-child,
  #reports .compact-table td:last-child {
    border-bottom: 0;
  }

  #inventory td::before,
  #prices td::before,
  #reports .compact-table td::before {
    content: attr(data-label);
    color: #607181;
    font-size: .78rem;
    font-weight: 900;
    text-align: left;
    text-transform: uppercase;
  }

  #inventory td:first-child::before,
  #prices td:first-child::before,
  #reports .compact-table td:first-child::before {
    content: none;
  }

  #prices .price-input {
    text-align: right;
    min-height: 46px;
  }

  .chart-panel {
    min-height: auto;
  }

  .report-progress-row {
    grid-template-columns: 1fr !important;
    gap: 7px;
    padding: 12px;
    border-radius: 16px;
    background: #f7fbf8;
  }

  .report-progress-row span,
  .report-progress-row strong {
    text-align: left;
    white-space: normal;
  }

  .monthly-row {
    grid-template-columns: 52px 1fr !important;
    align-items: center;
    padding: 12px;
    border-radius: 16px;
    background: #f7fbf8;
  }

  .monthly-row div {
    height: 48px;
  }

  .monthly-row strong,
  .monthly-row small {
    grid-column: 1 / -1;
    text-align: left;
  }
}

@media (max-width: 520px) {
  .auth-card {
    margin-top: 18px;
    border-radius: 24px;
  }

  .auth-brand {
    align-items: center;
  }

  .sidebar {
    border-radius: 0 0 22px 22px;
  }

  .topbar {
    border-radius: 20px;
  }

  .panel,
  .kpi,
  .order-card,
  .execution-card {
    border-radius: 20px;
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
}

/* Destaque suave para ordenes nuevas sin alterar el orden normal del listado */
.order-status-stack {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
}

.new-order-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: max-content;
  border-radius: 999px;
  padding: 6px 10px;
  color: #ffffff;
  font-size: .72rem;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
  background: linear-gradient(135deg, #21a366, #0b2d4d);
  box-shadow: 0 10px 22px rgba(33, 163, 102, .28);
  animation: newOrderPulse 1.8s ease-in-out infinite;
}

.new-order-badge::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 0 0 5px rgba(255,255,255,.18);
}

.is-new-order {
  position: relative;
  border-color: rgba(33, 163, 102, .42) !important;
  box-shadow: 0 18px 34px rgba(11, 45, 77, .12), 0 0 0 1px rgba(33, 163, 102, .14) inset;
}

.is-new-order::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  background: linear-gradient(135deg, rgba(33,163,102,.14), transparent 38%);
}

@keyframes newOrderPulse {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-1px) scale(1.03); }
}

@media (max-width: 640px) {
  .order-status-stack {
    align-items: flex-start;
    width: 100%;
  }
  .new-order-badge {
    font-size: .68rem;
    padding: 5px 9px;
  }
}

/* Estados de orden: colores coherentes y fáciles de identificar */
.badge.status-badge {
  gap: 6px;
  min-height: 30px;
  padding: 5px 11px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 0.76rem;
  font-weight: 900;
  line-height: 1;
  white-space: nowrap;
  box-shadow: 0 8px 18px rgba(2, 20, 36, 0.08);
}

.badge.status-planned {
  background: #fef3c7;
  color: #7c4a03;
  border-color: #facc15;
}

.badge.status-in-progress {
  background: #dbeafe;
  color: #0b3a7a;
  border-color: #3b82f6;
}

.badge.status-closed {
  background: #dcfce7;
  color: #14532d;
  border-color: #22c55e;
}

.badge.status-cancelled {
  background: #fee2e2;
  color: #7f1d1d;
  border-color: #ef4444;
}

.badge.status-draft,
.badge.status-neutral {
  background: #f3f4f6;
  color: #374151;
  border-color: #9ca3af;
}

@media (max-width: 640px) {
  .badge.status-badge {
    font-size: 0.72rem;
    padding: 5px 9px;
    max-width: 100%;
    white-space: normal;
  }
}

/* Ajustes finales Bodega: responsive real para salidas y botón azul contextual */
.warehouse-order-card {
  overflow: hidden;
}

.warehouse-dispatch-button,
.warehouse-complete-button {
  background: linear-gradient(135deg, #0b2d4d 0%, #1464a5 55%, #21a366 100%);
  color: #ffffff;
  border: 1px solid rgba(80, 176, 255, 0.35);
  box-shadow: 0 14px 26px rgba(11, 45, 77, 0.22);
}

.warehouse-dispatch-button:hover {
  box-shadow: 0 18px 34px rgba(20, 100, 165, 0.28);
}

.warehouse-complete-button,
.warehouse-complete-button:disabled {
  opacity: 1;
  cursor: default;
  background: linear-gradient(135deg, #0b2d4d 0%, #17824d 100%);
  color: #ffffff;
  border-color: rgba(33, 163, 102, 0.45);
  box-shadow: 0 12px 24px rgba(23, 130, 77, 0.20);
}

.is-complete-order {
  border-color: rgba(33, 163, 102, 0.36) !important;
  background: linear-gradient(180deg, #ffffff 0%, #f4fbf7 100%);
}

.is-complete-order .progress i {
  background: linear-gradient(90deg, #1464a5, #21a366);
}

@media (max-width: 900px) {
  .warehouse-order-card {
    padding: 14px;
  }

  .warehouse-order-card .metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .warehouse-order-card .table-wrap {
    overflow: visible;
  }

  .warehouse-order-card .table-wrap::after {
    display: none;
  }

  .warehouse-product-table table,
  .warehouse-history-table table,
  .warehouse-product-table thead,
  .warehouse-history-table thead,
  .warehouse-product-table tbody,
  .warehouse-history-table tbody,
  .warehouse-product-table tr,
  .warehouse-history-table tr,
  .warehouse-product-table td,
  .warehouse-history-table td {
    display: block;
    width: 100%;
    min-width: 0;
  }

  .warehouse-product-table table,
  .warehouse-history-table table {
    border-spacing: 0;
  }

  .warehouse-product-table thead,
  .warehouse-history-table thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
  }

  .warehouse-product-table tr,
  .warehouse-history-table tr {
    margin: 10px 0;
    padding: 10px;
    border: 1px solid rgba(11, 45, 77, 0.12);
    border-radius: 16px;
    background: #f8fbfd;
    box-shadow: 0 8px 18px rgba(11, 45, 77, 0.06);
  }

  .warehouse-product-table td,
  .warehouse-history-table td {
    display: grid;
    grid-template-columns: minmax(110px, 42%) minmax(0, 1fr);
    gap: 10px;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px solid rgba(11, 45, 77, 0.08);
    text-align: right;
    white-space: normal;
    word-break: break-word;
  }

  .warehouse-product-table td:last-child,
  .warehouse-history-table td:last-child {
    border-bottom: 0;
  }

  .warehouse-product-table td::before,
  .warehouse-history-table td::before {
    content: attr(data-label);
    color: #0b2d4d;
    font-weight: 900;
    text-align: left;
  }

  .warehouse-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }

  .warehouse-actions .warehouse-dispatch-button,
  .warehouse-actions .warehouse-complete-button {
    grid-column: 1 / -1;
  }
}

@media (max-width: 520px) {
  .warehouse-order-card .metrics,
  .warehouse-actions {
    grid-template-columns: 1fr !important;
  }

  .warehouse-product-table td,
  .warehouse-history-table td {
    grid-template-columns: 1fr;
    gap: 3px;
    text-align: left;
  }
}

/* Ajustes solicitados: Bodega con filtros de fecha y estado, Gantt con canceladas */
.warehouse-panel-header {
  align-items: flex-start;
  gap: 18px;
}

.warehouse-filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: end;
  gap: 10px;
}

.warehouse-filters .inline-filter {
  min-width: 150px;
}

.warehouse-filters input[type="date"],
.warehouse-filters select {
  width: 100%;
}

.cancel-order-button {
  background: linear-gradient(135deg, #991b1b, #ef4444) !important;
  color: #ffffff !important;
  border-color: rgba(239, 68, 68, 0.4) !important;
}

.gantt-track i.active.cancelled,
.gantt-day-track i.active.cancelled {
  background: #fee2e2;
  border-color: #ef4444;
  color: #7f1d1d;
  text-decoration: line-through;
}

.gantt-track i.active.cancelled::after,
.gantt-day-track i.active.cancelled::after {
  width: 100%;
  background: repeating-linear-gradient(45deg, #ef4444 0 6px, #fca5a5 6px 12px);
}

@media (max-width: 760px) {
  .warehouse-panel-header {
    display: grid;
  }

  .warehouse-filters {
    justify-content: stretch;
    display: grid;
    grid-template-columns: 1fr 1fr;
    width: 100%;
  }

  .warehouse-filters .inline-filter,
  .warehouse-filters button {
    width: 100%;
    min-width: 0;
  }
}

@media (max-width: 520px) {
  .warehouse-filters {
    grid-template-columns: 1fr;
  }
}

/* Bodega: campos bloqueados para bodeguero y hora de salida */
#dispatchForm .locked-field {
  position: relative;
}

#dispatchForm .locked-field input:disabled,
#dispatchForm .locked-field select:disabled,
#dispatchForm .locked-field textarea:disabled {
  background: linear-gradient(135deg, #dcfce7 0%, #f0fdf4 100%) !important;
  border-color: rgba(34, 197, 94, 0.55) !important;
  color: #14532d !important;
  font-weight: 800;
  opacity: 1;
  cursor: not-allowed;
  box-shadow: inset 0 0 0 1px rgba(34, 197, 94, 0.12);
}

#dispatchForm .locked-field small {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 5px;
  color: #166534;
  font-size: 0.72rem;
  font-weight: 800;
}

#dispatchForm .locked-field small::before {
  content: "🔒";
  font-size: 0.78rem;
}

.warehouse-history-table td[data-label="Hora"] {
  font-weight: 900;
  color: #0b2d4d;
}

/* Campos autocompletados en Crear orden: visibles, bloqueados y coherentes con el diseño agricola. */
.autofill-locked-field {
  position: relative;
}

.autofill-locked-field input[readonly] {
  background: linear-gradient(135deg, rgba(220, 252, 231, 0.98), rgba(187, 247, 208, 0.88));
  border-color: rgba(34, 197, 94, 0.45);
  color: #064e3b;
  font-weight: 700;
  cursor: not-allowed;
  box-shadow: inset 0 0 0 1px rgba(34, 197, 94, 0.16);
}

.autofill-locked-field::after {
  content: "🔒";
  position: absolute;
  right: 12px;
  top: 35px;
  font-size: 0.95rem;
  opacity: 0.8;
  pointer-events: none;
}

.autofill-locked-field small {
  display: block;
  margin-top: 0.28rem;
  color: #047857;
  font-weight: 700;
  font-size: 0.72rem;
}

/* Fix: nota/tooltip de Carta Gantt siempre por encima de las barras */
.gantt-panel,
.gantt-table,
.gantt-row,
.gantt-month-grid,
.gantt-day-grid,
.gantt-track,
.gantt-day-track,
.gantt-stack {
  overflow-y: visible !important;
}

.gantt-table {
  padding-top: 72px;
  margin-top: -56px;
}

.gantt-row {
  position: relative;
  z-index: 1;
}

.gantt-row:hover,
.gantt-row.selected {
  z-index: 50;
}

.gantt-track i,
.gantt-day-track i,
.gantt-track .gantt-stack i {
  position: relative;
  z-index: 2;
}

.gantt-track i:hover,
.gantt-day-track i:hover,
.gantt-track .gantt-stack i:hover {
  z-index: 10000;
}

.gantt-track i::before,
.gantt-day-track i::before {
  top: auto !important;
  bottom: calc(100% + 12px) !important;
  z-index: 20000 !important;
  max-width: min(520px, 88vw);
  background: rgba(255, 255, 255, 0.98);
  border: 1px solid rgba(10, 61, 98, 0.18);
  box-shadow: 0 22px 55px rgba(5, 20, 36, 0.24);
}

.gantt-track i::after,
.gantt-day-track i::after {
  z-index: 0 !important;
}

.gantt-track i.active,
.gantt-day-track i.active {
  isolation: auto !important;
}

@media (max-width: 760px) {
  .gantt-table {
    padding-top: 96px;
    margin-top: -72px;
  }

  .gantt-track i::before,
  .gantt-day-track i::before {
    left: 0;
    right: auto;
    transform: none;
    max-width: min(360px, 82vw);
  }
}

/* Filtros fijos tipo Excel: mantiene los filtros visibles al hacer scroll */
.main,
.view.active-view,
.panel,
.gantt-panel,
.warehouse-panel-header {
  overflow: visible;
}

.program-filters,
.gantt-controls,
.warehouse-filters,
.report-toolbar {
  position: sticky;
  top: 12px;
  z-index: 850;
  border: 1px solid rgba(10, 61, 98, 0.12);
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(255,255,255,0.96), rgba(240,247,243,0.96));
  backdrop-filter: blur(14px) saturate(1.12);
  -webkit-backdrop-filter: blur(14px) saturate(1.12);
  box-shadow: 0 14px 32px rgba(5, 20, 36, 0.12);
  padding: 12px;
}

.gantt-controls {
  z-index: 900;
}

.warehouse-filters {
  z-index: 875;
}

.report-toolbar {
  top: 12px;
  padding: 14px;
}

.report-toolbar .report-filters {
  margin: 0;
}

.program-filters::before,
.gantt-controls::before,
.warehouse-filters::before,
.report-toolbar::before {
  content: "Filtros";
  position: absolute;
  top: -10px;
  left: 16px;
  padding: 2px 9px;
  border-radius: 999px;
  background: #0b2d4d;
  color: #ffffff;
  font-size: 0.66rem;
  font-weight: 900;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  box-shadow: 0 8px 18px rgba(11, 45, 77, 0.18);
}

.report-toolbar::before {
  content: "Filtros reporte";
}

.warehouse-filters::before {
  content: "Filtros bodega";
}

.gantt-controls::before {
  content: "Filtros Gantt";
}

@media (max-width: 920px) {
  .program-filters,
  .gantt-controls,
  .warehouse-filters,
  .report-toolbar {
    top: 8px;
    z-index: 1200;
    border-radius: 16px;
    padding: 12px;
  }

  .report-toolbar {
    display: grid;
    gap: 12px;
  }
}

@media (max-width: 560px) {
  .program-filters,
  .gantt-controls,
  .warehouse-filters,
  .report-toolbar {
    top: 6px;
    max-height: 58vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* Fix especifico: filtros fijos en Bodega y Carta Gantt.
   Algunos filtros estaban dentro de headers propios, por eso el sticky general no aplicaba. */
.gantt-panel,
.gantt-panel .gantt-table,
.panel:has(.warehouse-panel-header) {
  overflow: visible !important;
}

.gantt-panel .gantt-head,
.panel-header.warehouse-panel-header {
  position: sticky !important;
  top: 10px !important;
  z-index: 5000 !important;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin: -4px -4px 16px;
  padding: 14px;
  border: 1px solid rgba(10, 61, 98, 0.14);
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(255,255,255,0.98), rgba(240,247,243,0.98));
  box-shadow: 0 16px 34px rgba(5, 20, 36, 0.14);
  backdrop-filter: blur(16px) saturate(1.14);
  -webkit-backdrop-filter: blur(16px) saturate(1.14);
}

.gantt-panel .gantt-head::before,
.panel-header.warehouse-panel-header::before {
  content: "Filtros fijos";
  position: absolute;
  top: -10px;
  left: 18px;
  padding: 2px 10px;
  border-radius: 999px;
  background: #0b2d4d;
  color: #ffffff;
  font-size: 0.66rem;
  font-weight: 900;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  box-shadow: 0 8px 18px rgba(11, 45, 77, 0.2);
}

.gantt-panel .gantt-head::before {
  content: "Filtros Gantt";
}

.panel-header.warehouse-panel-header::before {
  content: "Filtros Bodega";
}

.gantt-panel .gantt-controls,
.panel-header.warehouse-panel-header .warehouse-filters {
  position: static !important;
  top: auto !important;
  z-index: auto !important;
  margin: 0;
  box-shadow: none;
  border: 0;
  background: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  padding: 0;
}

.gantt-panel .gantt-controls::before,
.panel-header.warehouse-panel-header .warehouse-filters::before {
  content: none !important;
}

@media (max-width: 920px) {
  .gantt-panel .gantt-head,
  .panel-header.warehouse-panel-header {
    top: 8px !important;
    display: grid;
    grid-template-columns: 1fr;
  }

  .gantt-panel .gantt-controls,
  .panel-header.warehouse-panel-header .warehouse-filters {
    width: 100%;
  }
}

@media (max-width: 560px) {
  .gantt-panel .gantt-head,
  .panel-header.warehouse-panel-header {
    top: 6px !important;
    max-height: 62vh;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
  }
}

.dispatch-row-actions {
  display: flex;
  gap: 0.45rem;
  flex-wrap: wrap;
  align-items: center;
}

.dispatch-row-actions .small-button {
  padding: 0.35rem 0.55rem;
  font-size: 0.78rem;
}

/* Ajuste puntual: N programa / Objetivo en bodega y PDF */
.warehouse-order-context {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
  margin: 12px 0;
}
.warehouse-order-context > div {
  background: rgba(255,255,255,0.72);
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 12px;
  padding: 10px 12px;
}
.warehouse-order-context strong {
  display: block;
  font-size: 0.72rem;
  color: #0f5132;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.warehouse-order-context span {
  color: #0f172a;
  font-weight: 700;
}
.print-objective-title {
  text-align: center;
  color: #000;
  font-size: 15px;
  font-weight: 700;
  margin: 8px 0 12px;
}

/* Responsive especifico para Riego: mantiene Programa y Real alineados
   y reduce altura de cabecera/filtros en notebook, tablet y celular. */
@media (max-width: 1180px) {
  .irrigation-row {
    grid-template-columns: 386px max-content 58px 74px;
  }

  .irrigation-block-label {
    grid-template-columns: 40px 52px minmax(0, 1fr);
    gap: 3px 6px;
  }

  .irrigation-block-data > small:first-child {
    flex-basis: 92px;
  }

  .irrigation-days {
    grid-template-columns: repeat(var(--days), 26px);
    gap: 2px;
  }

  .irrigation-date-cell,
  .irrigation-tray-cell,
  .irrigation-program-cell,
  .irrigation-hour-input,
  .calicata-day-cell,
  .calicata-detail-cell {
    width: 26px;
    min-height: 26px;
  }

  .irrigation-potrero-group {
    min-width: calc(520px + (var(--days) * 28px));
  }
}

@media (max-width: 860px) {
  .main {
    padding: 7px 8px 14px !important;
  }

  .topbar {
    position: sticky !important;
    top: 0 !important;
    z-index: 80 !important;
    min-height: 28px !important;
    margin: 0 0 4px !important;
    padding: 4px 6px !important;
    border-radius: 10px !important;
    box-shadow: 0 8px 18px rgba(8, 32, 51, 0.08) !important;
  }

  .topbar .eyebrow {
    display: none;
  }

  .topbar h1 {
    font-size: 0.92rem;
  }

  .topbar .ghost-button,
  .topbar .secondary-button,
  .topbar .primary-button {
    min-height: 26px;
    padding: 3px 8px;
    font-size: 0.7rem;
  }

  .irrigation-panel {
    gap: 3px;
  }

  .irrigation-panel-header {
    top: 36px;
    display: grid;
    grid-template-columns: 1fr;
    gap: 3px;
    padding: 2px 0;
  }

  .irrigation-panel-header h2 {
    font-size: 0.78rem;
  }

  .irrigation-panel-header p {
    display: none;
  }

  .irrigation-filters {
    width: 100%;
    min-width: 0;
    grid-template-columns: repeat(2, minmax(0, 1fr)) 70px 58px auto;
    gap: 3px;
    padding: 3px;
  }

  .irrigation-filters label {
    font-size: 0.54rem;
  }

  .irrigation-filters select,
  .irrigation-filters input,
  .irrigation-filters button {
    min-height: 24px;
    font-size: 0.64rem;
  }

  .irrigation-compare-wrap {
    top: 35px;
    gap: 3px;
    padding-bottom: 3px;
  }

  .irrigation-section-title {
    padding: 2px 6px;
    gap: 6px;
  }

  .irrigation-section-title strong {
    font-size: 0.72rem;
  }

  .irrigation-section-title span {
    font-size: 0.56rem;
  }

  .irrigation-gantt-program,
  .irrigation-gantt-real {
    min-height: 156px;
    max-height: max(156px, calc((100svh - 212px) / 2));
  }

  .irrigation-row {
    grid-template-columns: 300px max-content 54px 66px;
    gap: 3px;
  }

  .irrigation-block-head,
  .irrigation-block-label,
  .irrigation-total-head,
  .irrigation-total,
  .irrigation-reposition-head,
  .irrigation-reposition {
    min-height: 25px;
    padding: 3px 5px;
    border-radius: 5px;
  }

  .irrigation-block-label {
    grid-template-columns: 34px 44px minmax(0, 1fr);
    gap: 2px 5px;
  }

  .irrigation-block-label > span,
  .irrigation-block-label small {
    font-size: 0.58rem;
  }

  .irrigation-block-metric {
    width: 100%;
    gap: 2px;
  }

  .irrigation-block-metric span {
    padding: 1px 3px;
    font-size: 0.52rem;
  }

  .irrigation-days {
    grid-template-columns: repeat(var(--days), 24px);
    gap: 1px;
  }

  .irrigation-date-cell,
  .irrigation-tray-cell,
  .irrigation-program-cell,
  .irrigation-hour-input,
  .calicata-day-cell,
  .calicata-detail-cell {
    width: 24px;
    min-height: 24px;
    font-size: 0.56rem;
  }

  .irrigation-date-cell em,
  .irrigation-date-cell span,
  .irrigation-tray-cell em,
  .irrigation-tray-cell span {
    font-size: 0.5rem;
    line-height: 1;
  }

  .irrigation-potrero-group {
    min-width: calc(423px + (var(--days) * 25px));
  }
}

@media (max-width: 640px) {
  .app-shell:not(.locked) {
    display: block !important;
  }

  .sidebar {
    position: sticky !important;
    top: 0 !important;
    z-index: 120 !important;
    height: auto !important;
    padding: 7px 8px !important;
    border-radius: 0 0 14px 14px !important;
  }

  .brand {
    gap: 7px;
  }

  .brand-mark {
    width: 30px;
    height: 30px;
  }

  .brand small,
  .sync-box {
    display: none !important;
  }

  .nav {
    display: flex !important;
    grid-template-columns: none !important;
    gap: 5px;
    overflow-x: auto;
    padding-bottom: 2px;
    scrollbar-width: thin;
  }

  .nav-group,
  .nav-item,
  .nav-group-toggle {
    flex: 0 0 auto;
  }

  .nav-group-items {
    display: none;
  }

  .nav-group-toggle,
  .nav-item {
    min-height: 29px;
    padding: 4px 8px;
    border-radius: 9px;
    font-size: 0.68rem;
    white-space: nowrap;
  }

  .main {
    padding: 5px 6px 12px !important;
  }

  .topbar {
    top: 48px !important;
    grid-template-columns: minmax(0, 1fr) auto;
    min-height: 26px !important;
  }

  .topbar h1 {
    font-size: 0.84rem;
  }

  .user-chip {
    max-width: 138px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .irrigation-panel-header {
    top: 84px;
  }

  .irrigation-filters {
    grid-template-columns: minmax(96px, 1fr) minmax(96px, 1fr) 64px 52px;
  }

  .irrigation-filters button {
    grid-column: 1 / -1;
    min-height: 24px;
  }

  .irrigation-compare-wrap {
    top: 84px;
  }

  .irrigation-gantt-program,
  .irrigation-gantt-real {
    min-height: 146px;
    max-height: max(146px, calc((100svh - 236px) / 2));
  }

  .irrigation-row {
    grid-template-columns: 246px max-content 48px 58px;
  }

  .irrigation-block-label {
    grid-template-columns: 30px 39px minmax(0, 1fr);
  }

  .irrigation-block-data {
    gap: 2px 4px;
  }

  .irrigation-block-data > small:first-child {
    flex: 1 1 68px;
  }

  .irrigation-days {
    grid-template-columns: repeat(var(--days), 22px);
  }

  .irrigation-date-cell,
  .irrigation-tray-cell,
  .irrigation-program-cell,
  .irrigation-hour-input,
  .calicata-day-cell,
  .calicata-detail-cell {
    width: 22px;
    min-height: 23px;
  }

  .irrigation-total,
  .irrigation-reposition {
    font-size: 0.58rem;
  }

  .irrigation-potrero-group {
    min-width: calc(352px + (var(--days) * 23px));
  }
}

@media (max-width: 420px) {
  .topbar h1 {
    font-size: 0.78rem;
  }

  .topbar .top-actions {
    gap: 4px;
  }

  .topbar .ghost-button,
  .topbar .secondary-button,
  .topbar .primary-button {
    padding: 3px 6px;
    font-size: 0.62rem;
  }

  .irrigation-row {
    grid-template-columns: 220px max-content 46px 54px;
  }

  .irrigation-block-label {
    grid-template-columns: 28px 35px minmax(0, 1fr);
  }

  .irrigation-block-metric span {
    font-size: 0.48rem;
  }

  .irrigation-days {
    grid-template-columns: repeat(var(--days), 21px);
  }

  .irrigation-date-cell,
  .irrigation-tray-cell,
  .irrigation-program-cell,
  .irrigation-hour-input,
  .calicata-day-cell,
  .calicata-detail-cell {
    width: 21px;
    min-height: 22px;
  }

  .irrigation-potrero-group {
    min-width: calc(320px + (var(--days) * 22px));
  }
}

/* Riego responsive v2: matriz fluida + columnas de comparacion a la derecha. */
.irrigation-panel {
  --irrigation-gap: 4px;
  --irrigation-block-col: clamp(360px, 24vw, 520px);
  --irrigation-day-size: clamp(28px, 1.75vw, 36px);
  --irrigation-day-gap: 2px;
  --irrigation-month-width: 1178px;
  --irrigation-total-col: 64px;
  --irrigation-reposition-col: 82px;
  --irrigation-diff-hours-col: 72px;
  --irrigation-diff-reposition-col: 82px;
  --irrigation-right-reposition: calc(var(--irrigation-diff-reposition-col) + var(--irrigation-gap) + var(--irrigation-diff-hours-col) + var(--irrigation-gap));
  --irrigation-right-total: calc(var(--irrigation-right-reposition) + var(--irrigation-reposition-col) + var(--irrigation-gap));
}

.irrigation-gantt {
  width: 100%;
  max-width: 100%;
  scrollbar-width: thin;
}

.irrigation-row {
  grid-template-columns:
    var(--irrigation-block-col)
    max-content
    var(--irrigation-total-col)
    var(--irrigation-reposition-col)
    var(--irrigation-diff-hours-col)
    var(--irrigation-diff-reposition-col) !important;
  gap: var(--irrigation-gap) !important;
}

.irrigation-days {
  grid-template-columns: repeat(var(--days), var(--irrigation-day-size)) !important;
  gap: var(--irrigation-day-gap) !important;
}

.irrigation-date-cell,
.irrigation-tray-cell,
.irrigation-program-cell,
.irrigation-hour-input,
.calicata-day-cell,
.calicata-detail-cell {
  width: var(--irrigation-day-size) !important;
  min-height: var(--irrigation-day-size) !important;
}

.irrigation-block-head,
.irrigation-block-label,
.irrigation-total-head,
.irrigation-total,
.irrigation-reposition-head,
.irrigation-reposition,
.irrigation-difference-head,
.irrigation-difference {
  position: sticky;
  z-index: 1;
  display: grid;
  align-content: center;
  min-height: max(25px, var(--irrigation-day-size));
  padding: 4px 7px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  font-weight: 900;
}

.irrigation-total-head,
.irrigation-total {
  right: var(--irrigation-right-total) !important;
}

.irrigation-reposition-head,
.irrigation-reposition {
  right: var(--irrigation-right-reposition) !important;
}

.irrigation-difference-hours {
  right: calc(var(--irrigation-diff-reposition-col) + var(--irrigation-gap));
}

.irrigation-difference-reposition {
  right: 0;
}

.irrigation-difference-head,
.irrigation-difference {
  justify-content: center;
  text-align: center;
}

.irrigation-difference-head {
  z-index: 31;
  background: #eef5ef;
  color: var(--brand);
}

.irrigation-difference {
  color: var(--ink);
}

.irrigation-difference-base {
  background: #f3fbfc;
  color: #0b5f73;
  font-size: 0.62rem;
}

.irrigation-difference.is-over {
  background: #fff6df;
  color: #9a5b00;
}

.irrigation-difference.is-under {
  background: #eef5ff;
  color: #1d4f91;
}

.irrigation-difference.is-even {
  background: #e8f6ec;
  color: var(--brand);
}

.irrigation-difference.is-empty {
  background: #f6f7f6;
  color: var(--muted);
}

.irrigation-gantt-program .irrigation-difference-head,
.irrigation-gantt-program .irrigation-difference,
.irrigation-gantt-program .irrigation-difference-base {
  background: #edf8fa;
  border-color: rgba(41, 127, 143, 0.24);
  color: #0b5f73;
}

.calicata-toggle {
  right: var(--irrigation-right-total) !important;
  width: var(--irrigation-total-col);
}

.irrigation-potrero-group {
  min-width: calc(
    var(--irrigation-block-col)
    + var(--irrigation-month-width)
    + var(--irrigation-total-col)
    + var(--irrigation-reposition-col)
    + var(--irrigation-diff-hours-col)
    + var(--irrigation-diff-reposition-col)
    + (var(--irrigation-gap) * 5)
  ) !important;
}

@media (min-width: 1500px) {
  .irrigation-panel {
    --irrigation-block-col: clamp(430px, 25vw, 560px);
    --irrigation-day-size: clamp(32px, 1.85vw, 40px);
    --irrigation-month-width: 1300px;
    --irrigation-total-col: 72px;
    --irrigation-reposition-col: 92px;
    --irrigation-diff-hours-col: 82px;
    --irrigation-diff-reposition-col: 94px;
  }
}

@media (max-width: 1180px) {
  .irrigation-panel {
    --irrigation-block-col: clamp(300px, 34vw, 386px);
    --irrigation-day-size: clamp(24px, 2.35vw, 28px);
    --irrigation-month-width: 930px;
    --irrigation-total-col: 58px;
    --irrigation-reposition-col: 74px;
    --irrigation-diff-hours-col: 64px;
    --irrigation-diff-reposition-col: 74px;
  }
}

@media (max-width: 860px) {
  .irrigation-panel {
    --irrigation-block-col: clamp(246px, 48vw, 310px);
    --irrigation-day-size: clamp(22px, 3.2vw, 25px);
    --irrigation-month-width: 806px;
    --irrigation-total-col: 52px;
    --irrigation-reposition-col: 62px;
    --irrigation-diff-hours-col: 56px;
    --irrigation-diff-reposition-col: 64px;
  }

  .irrigation-block-head,
  .irrigation-block-label,
  .irrigation-total-head,
  .irrigation-total,
  .irrigation-reposition-head,
  .irrigation-reposition,
  .irrigation-difference-head,
  .irrigation-difference {
    padding: 3px 5px;
    border-radius: 5px;
  }

  .irrigation-difference-head,
  .irrigation-difference {
    font-size: 0.56rem;
  }
}

@media (max-width: 640px) {
  .irrigation-panel {
    --irrigation-gap: 3px;
    --irrigation-block-col: clamp(214px, 58vw, 246px);
    --irrigation-day-size: clamp(20px, 5.4vw, 22px);
    --irrigation-day-gap: 1px;
    --irrigation-month-width: 712px;
    --irrigation-total-col: 46px;
    --irrigation-reposition-col: 54px;
    --irrigation-diff-hours-col: 50px;
    --irrigation-diff-reposition-col: 56px;
  }

  .irrigation-gantt-program,
  .irrigation-gantt-real {
    min-height: 44svh;
    max-height: 44svh;
  }

  .irrigation-block-head,
  .irrigation-block-label,
  .irrigation-total-head,
  .irrigation-total,
  .irrigation-reposition-head,
  .irrigation-reposition,
  .irrigation-difference-head,
  .irrigation-difference {
    min-height: max(23px, var(--irrigation-day-size));
    padding: 2px 4px;
  }
}

@media (max-width: 420px) {
  .irrigation-panel {
    --irrigation-block-col: 210px;
    --irrigation-day-size: 20px;
    --irrigation-month-width: 650px;
    --irrigation-total-col: 44px;
    --irrigation-reposition-col: 52px;
    --irrigation-diff-hours-col: 48px;
    --irrigation-diff-reposition-col: 54px;
  }
}

@media (max-width: 920px) {
  .irrigation-kpis,
  .irrigation-report-grid,
  .irrigation-balance-charts,
  .irrigation-bandeja-charts {
    grid-template-columns: 1fr 1fr;
  }

  .irrigation-table-scroll {
    max-height: 46svh;
  }

  .irrigation-bandeja-analysis-toolbar {
    grid-template-columns: 1fr auto;
  }

  .irrigation-bandeja-year-checks {
    grid-column: 1 / -1;
    grid-row: 2;
  }

  .irrigation-bandeja-analysis-actions {
    grid-column: 2;
    grid-row: 1;
  }

  .irrigation-bandeja-analysis-tables {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .irrigation-tabs {
    gap: 4px;
  }

  .irrigation-tab {
    min-height: 27px;
    padding: 3px 8px;
    font-size: 0.66rem;
  }

  .irrigation-kpis,
  .irrigation-report-grid,
  .irrigation-balance-charts,
  .irrigation-bandeja-charts {
    grid-template-columns: 1fr;
  }

  .irrigation-balance-charts {
    --balance-chart-height: 56svh;
  }

  .irrigation-balance-charts .chart-panel {
    height: var(--balance-chart-height);
  }

  .irrigation-balance-toolbar {
    align-items: stretch;
    flex-direction: column;
  }

  .irrigation-balance-toolbar label {
    min-width: 0;
  }

  .irrigation-balance-chart {
    grid-template-columns: repeat(auto-fit, minmax(58px, 1fr));
  }

  .irrigation-balance-potrero-bar > div {
    height: 118px;
  }

  .irrigation-balance-block-chart {
    grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
    min-height: calc(var(--balance-chart-height) - 90px);
    max-height: calc(var(--balance-chart-height) - 90px);
    overflow: auto;
  }

  .irrigation-annual-balance-chart {
    grid-template-columns: 1fr;
    max-height: 48svh;
  }

  .irrigation-annual-potrero-row {
    grid-template-columns: 1fr;
  }

  .irrigation-annual-bars span {
    grid-template-columns: 50px minmax(0, 1fr) 58px;
  }

  .irrigation-volume-chart {
    grid-template-columns: repeat(var(--days, 31), 18px);
  }

  .irrigation-bandeja-chart {
    grid-template-columns: repeat(var(--days, 31), 18px);
  }

  .irrigation-report-panel {
    padding: 9px;
  }

  .irrigation-table-scroll {
    max-height: 52svh;
  }

  .irrigation-bandeja-form {
    grid-template-columns: 1fr;
  }

  .irrigation-bandeja-entry-row {
    align-items: stretch;
    flex-direction: column;
  }

  .irrigation-bandeja-entry-row button {
    width: 100%;
  }

  .irrigation-bandeja-entry-actions {
    width: 100%;
    align-items: stretch;
    flex-direction: column;
  }

  .irrigation-bandeja-view-switch {
    width: 100%;
  }

  .irrigation-bandeja-view-switch button {
    width: auto;
    white-space: normal;
  }

  .irrigation-bandeja-analysis-toolbar {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .irrigation-bandeja-analysis-actions,
  .irrigation-bandeja-year-checks {
    grid-column: 1;
    grid-row: auto;
  }

  .irrigation-bandeja-analysis-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .irrigation-bandeja-analysis-actions button {
    width: 100%;
  }

  .irrigation-bandeja-trend-panel .panel-header {
    align-items: flex-start;
    flex-direction: column;
  }

  .irrigation-bandeja-trend-legend {
    justify-content: flex-start;
  }

  .irrigation-bandeja-dialog-grid {
    grid-template-columns: 1fr;
  }

  .irrigation-bandeja-dialog-actions {
    grid-template-columns: 1fr;
  }

  .irrigation-program-tool-controls {
    grid-template-columns: 1fr 1fr;
  }

  .irrigation-program-tool-controls button {
    grid-column: 1 / -1;
  }
}

/* Compactacion especifica de Riego: prioriza espacio vertical para Programa y Real. */
.app-shell:has(#irrigation.active-view) .main {
  padding-top: 4px;
}

.app-shell:has(#irrigation.active-view) .topbar {
  min-height: 22px;
  margin-bottom: 2px;
}

.app-shell:has(#irrigation.active-view) .topbar .eyebrow {
  display: none;
}

.app-shell:has(#irrigation.active-view) .topbar h1 {
  font-size: 0.88rem;
  line-height: 1;
}

.app-shell:has(#irrigation.active-view) .topbar .secondary-button,
.app-shell:has(#irrigation.active-view) .topbar .primary-button {
  min-height: 22px;
  padding: 0 7px;
  font-size: 0.64rem;
}

.app-shell:has(#irrigation.active-view) .panel.irrigation-panel {
  padding: 5px 6px 6px;
}

.app-shell:has(#irrigation.active-view) .irrigation-panel-header {
  display: grid;
  grid-template-columns: minmax(110px, 1fr) minmax(420px, 0.72fr);
  gap: 4px;
  margin-bottom: 2px;
  padding: 0;
}

.app-shell:has(#irrigation.active-view) .irrigation-panel-header h2 {
  margin: 0;
  font-size: 0.76rem;
  line-height: 1.05;
}

.app-shell:has(#irrigation.active-view) .irrigation-panel-header p {
  margin: 0;
  font-size: 0.5rem;
  line-height: 1.05;
}

.app-shell:has(#irrigation.active-view) .irrigation-filters {
  justify-self: end;
  width: min(100%, 560px);
  min-width: 0;
  grid-template-columns: minmax(78px, 1fr) minmax(78px, 1fr) 62px 52px 86px 54px;
  padding: 2px;
  gap: 3px;
}

.app-shell:has(#irrigation.active-view) .irrigation-filters label {
  font-size: 0.5rem;
  line-height: 1.05;
}

.app-shell:has(#irrigation.active-view) .irrigation-filters select,
.app-shell:has(#irrigation.active-view) .irrigation-filters input,
.app-shell:has(#irrigation.active-view) .irrigation-filters button {
  min-height: 20px;
  padding: 1px 5px;
  font-size: 0.6rem;
}

.app-shell:has(#irrigation.active-view) .irrigation-section-title {
  padding: 2px 6px;
}

.irrigation-calicatas-panel {
  border: 1px solid rgba(31, 111, 74, 0.16);
  border-radius: 8px;
  background: linear-gradient(180deg, #f8fcf8, #ffffff);
  padding: 6px;
  margin-bottom: 6px;
}

.irrigation-calicatas-head {
  display: grid;
  grid-template-columns: minmax(160px, 1fr) minmax(240px, 360px);
  gap: 8px;
  align-items: end;
  margin-bottom: 6px;
}

.irrigation-calicatas-head strong {
  display: block;
  color: var(--brand);
  font-size: 0.82rem;
  line-height: 1;
}

.irrigation-calicatas-head span {
  display: block;
  color: var(--muted);
  font-size: 0.58rem;
  line-height: 1.1;
  margin-top: 2px;
}

.irrigation-calicatas-head label {
  display: grid;
  gap: 2px;
  color: var(--muted);
  font-size: 0.56rem;
  font-weight: 900;
}

.irrigation-calicatas-head select {
  width: 100%;
  min-height: 25px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 0.66rem;
  font-weight: 800;
  padding: 3px 7px;
}

.irrigation-calicata-map-controls {
  display: grid;
  grid-template-columns: minmax(150px, 1fr) auto;
  gap: 7px;
  align-items: end;
}

.irrigation-map-toggle {
  align-self: end;
  min-height: 25px;
  display: inline-flex;
  gap: 5px;
  align-items: center;
  justify-content: center;
  padding: 3px 7px;
  border: 1px solid rgba(31, 111, 74, 0.18);
  border-radius: 6px;
  background: #f3faf5;
  color: var(--brand);
  white-space: nowrap;
}

.irrigation-map-toggle input {
  width: 13px;
  height: 13px;
  accent-color: var(--brand);
}

.irrigation-map-toggle span {
  margin: 0;
  color: inherit;
  font-size: 0.58rem;
  line-height: 1;
}

.irrigation-calicatas-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(250px, 320px);
  gap: 8px;
  align-items: stretch;
}

.irrigation-calicata-map {
  min-height: 218px;
  border-radius: 8px;
  overflow: hidden;
}

.irrigation-calicata-history {
  min-height: 218px;
  max-height: 218px;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #ffffff;
  padding: 6px;
}

.irrigation-calicata-history-title {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  align-items: center;
  margin-bottom: 5px;
}

.irrigation-calicata-history-title strong {
  color: var(--ink);
  font-size: 0.7rem;
}

.irrigation-calicata-history-title span {
  color: var(--muted);
  font-size: 0.54rem;
  font-weight: 800;
  text-align: right;
}

.irrigation-calicata-card {
  width: 100%;
  display: grid;
  gap: 2px;
  text-align: left;
  border: 1px solid rgba(31, 111, 74, 0.12);
  border-radius: 7px;
  background: #f8fbf8;
  color: var(--ink);
  padding: 6px;
  margin-bottom: 5px;
  cursor: pointer;
}

.irrigation-calicata-card:hover {
  border-color: rgba(31, 111, 74, 0.36);
  background: #eef8f1;
}

.irrigation-calicata-card span {
  color: var(--muted);
  font-size: 0.52rem;
  font-weight: 900;
}

.irrigation-calicata-card strong {
  color: var(--brand);
  font-size: 0.64rem;
  line-height: 1.1;
}

.irrigation-calicata-card small,
.irrigation-calicata-card em {
  color: var(--muted);
  font-size: 0.56rem;
  font-style: normal;
  line-height: 1.15;
}

.irrigation-calicata-card em {
  color: var(--ink);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.irrigation-calicata-photo {
  display: block;
  width: 100%;
  max-height: 150px;
  object-fit: cover;
  border-radius: 7px;
  margin: 6px 0;
  border: 1px solid var(--line);
}

.irrigation-calicata-observation {
  margin: 6px 0 0;
  color: var(--ink);
  font-size: 0.72rem;
  line-height: 1.25;
}

.app-shell:has(#calicatas.active-view) .main {
  padding-top: 8px;
}

.app-shell:has(#calicatas.active-view) .topbar {
  min-height: 30px;
  margin-bottom: 8px;
}

.app-shell:has(#calicatas.active-view) .topbar .eyebrow {
  display: none;
}

.app-shell:has(#calicatas.active-view) .topbar h1 {
  font-size: 1rem;
  line-height: 1.1;
}

.calicatas-panel {
  min-height: calc(100svh - 76px);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 8px;
  padding: 8px;
}

.calicatas-panel-header {
  align-items: end;
  gap: 10px;
  margin-bottom: 0;
}

.calicatas-panel-header h2 {
  margin: 0;
  font-size: 1rem;
  line-height: 1.05;
}

.calicatas-panel-header p {
  margin: 2px 0 0;
  font-size: 0.68rem;
}

.calicatas-filters {
  justify-content: end;
  grid-template-columns: minmax(120px, 1fr) minmax(120px, 1fr) 92px 72px;
  gap: 6px;
  padding: 6px;
}

.app-shell:has(#calicatas.active-view) .irrigation-calicatas-panel {
  min-height: 0;
  height: 100%;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  margin-bottom: 0;
}

.app-shell:has(#calicatas.active-view) .irrigation-calicatas-layout {
  min-height: 0;
  height: 100%;
  grid-template-columns: minmax(0, 1fr) minmax(300px, 360px);
}

.app-shell:has(#calicatas.active-view) .irrigation-calicata-map,
.app-shell:has(#calicatas.active-view) .irrigation-calicata-history {
  min-height: calc(100svh - 190px);
  height: 100%;
  max-height: none;
}

@media (max-width: 760px) {
  .app-shell:has(#irrigation.active-view) .irrigation-panel-header {
    grid-template-columns: 1fr;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-filters {
    justify-self: stretch;
    width: 100%;
  }

  .irrigation-calicatas-head,
  .irrigation-calicatas-layout {
    grid-template-columns: 1fr;
  }

  .irrigation-calicata-map-controls {
    grid-template-columns: 1fr;
  }

  .irrigation-map-toggle {
    justify-content: flex-start;
  }

  .irrigation-calicata-map {
    min-height: 240px;
  }

  .irrigation-calicata-history {
    min-height: 150px;
    max-height: 190px;
  }

  .calicatas-panel {
    min-height: calc(100svh - 72px);
    padding: 6px;
  }

  .calicatas-panel-header,
  .calicatas-filters {
    grid-template-columns: 1fr;
  }

  .app-shell:has(#calicatas.active-view) .irrigation-calicatas-layout {
    grid-template-columns: 1fr;
  }

  .app-shell:has(#calicatas.active-view) .irrigation-calicata-map {
    min-height: 58svh;
  }

  .app-shell:has(#calicatas.active-view) .irrigation-calicata-history {
    min-height: 24svh;
    max-height: 28svh;
  }
}

/* Ajuste fino Gantt: celdas textuales al ancho del contenido, sin huecos ni desbordes. */
.app-shell:has(#irrigation.active-view) .irrigation-panel {
  --irrigation-block-col: clamp(250px, 18vw, 292px);
  --irrigation-day-size: clamp(18px, 1.15vw, 22px);
  --irrigation-day-gap: 1px;
  --irrigation-month-width: 100%;
  --irrigation-total-col: clamp(40px, 3vw, 46px);
  --irrigation-reposition-col: clamp(50px, 3.4vw, 58px);
  --irrigation-diff-hours-col: clamp(46px, 3.2vw, 54px);
  --irrigation-diff-reposition-col: clamp(50px, 3.5vw, 58px);
}

.app-shell:has(#irrigation.active-view) .irrigation-row {
  grid-template-columns:
    var(--irrigation-block-col)
    minmax(0, 1fr)
    var(--irrigation-total-col)
    var(--irrigation-reposition-col)
    var(--irrigation-diff-hours-col)
    var(--irrigation-diff-reposition-col) !important;
  width: 100%;
  min-width: 0;
}

@media (max-width: 640px) {
  .privacy-hero {
    grid-template-columns: auto minmax(0, 1fr) 32px;
    gap: 10px;
    padding: 14px;
  }

  .privacy-logo {
    width: 48px;
    height: 48px;
    border-radius: 11px;
  }

  .privacy-logo img {
    width: 38px;
    height: 38px;
  }

  .privacy-hero h2 {
    font-size: 1.25rem;
  }

  .privacy-hero p {
    font-size: 0.74rem;
  }

  .privacy-policy-content {
    max-height: 62vh;
    padding: 12px;
  }

  .privacy-policy-content section {
    padding: 10px;
  }

  .privacy-actions {
    align-items: stretch;
    flex-direction: column;
    padding: 10px 12px 12px;
  }

  .privacy-page-shell {
    width: min(100% - 16px, 720px);
    padding: 10px 0 22px;
  }

  .privacy-page-hero {
    grid-template-columns: 1fr;
    min-height: 0;
    padding: 16px;
  }

  .privacy-page-brand {
    align-items: flex-start;
    gap: 12px;
  }

  .privacy-page-brand h1 {
    font-size: 2rem;
  }

  .privacy-page-brand p {
    font-size: 0.86rem;
  }

  .privacy-back-link {
    width: 100%;
    justify-content: center;
  }

  .privacy-page-grid {
    grid-template-columns: 1fr;
  }

  .privacy-page-card {
    padding: 13px;
  }

  .privacy-page-footer {
    align-items: flex-start;
    flex-direction: column;
  }
}

.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-row {
  grid-template-columns:
    minmax(var(--irrigation-block-col), calc(var(--irrigation-block-col) + var(--irrigation-diff-hours-col) + var(--irrigation-diff-reposition-col) + var(--irrigation-gap) * 2))
    minmax(0, 1fr)
    var(--irrigation-total-col)
    var(--irrigation-reposition-col) !important;
}

.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-total-head,
.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-total {
  right: calc(var(--irrigation-reposition-col) + var(--irrigation-gap)) !important;
}

.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-reposition-head,
.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-reposition {
  right: 0 !important;
}

.app-shell:has(#irrigation.active-view) .irrigation-days {
  grid-template-columns: repeat(var(--days), minmax(0, 1fr)) !important;
  width: 100%;
  min-width: 0;
}

.app-shell:has(#irrigation.active-view) .irrigation-potrero-group {
  width: 100%;
  min-width: 0 !important;
}

.app-shell:has(#irrigation.active-view) .irrigation-date-cell,
.app-shell:has(#irrigation.active-view) .irrigation-hour-input,
.app-shell:has(#irrigation.active-view) .calicata-day-cell,
.app-shell:has(#irrigation.active-view) .calicata-detail-cell {
  width: 100% !important;
  min-width: 0;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-label {
  grid-template-columns: minmax(18px, max-content) minmax(34px, max-content) minmax(0, 1fr) !important;
  justify-content: stretch;
  gap: 2px 4px;
  padding-inline: 4px;
  overflow: hidden;
}

.app-shell:has(#irrigation.active-view) .calicata-label {
  grid-template-columns: max-content minmax(0, 1fr) !important;
}

.app-shell:has(#irrigation.active-view) .calicata-label strong {
  max-width: none;
  min-width: max-content;
}

.app-shell:has(#irrigation.active-view) .calicata-label span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-label strong {
  min-width: 1.4ch;
  max-width: 3.5ch;
  overflow: hidden;
  text-overflow: ellipsis;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-label > span {
  min-width: max-content;
}

.app-shell:has(#irrigation.active-view) .calicata-label strong {
  max-width: none;
  min-width: max-content;
  overflow: visible;
  text-overflow: clip;
}

.app-shell:has(#irrigation.active-view) .calicata-label span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-data {
  display: grid !important;
  grid-template-columns: minmax(52px, 0.85fr) minmax(112px, 1.15fr);
  width: 100%;
  max-width: 100%;
  min-width: 0;
  gap: 2px 4px;
}

.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-block-data {
  grid-template-columns: minmax(120px, 1fr) max-content;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-data > small:first-child {
  flex: initial !important;
  max-width: 100%;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-metric {
  display: inline-flex !important;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow: hidden !important;
  justify-content: flex-end;
  gap: 2px;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-metric span {
  min-width: 0;
  padding-inline: 2px;
  font-size: 0.46rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.app-shell:has(#irrigation.active-view) .irrigation-total-head,
.app-shell:has(#irrigation.active-view) .irrigation-total,
.app-shell:has(#irrigation.active-view) .irrigation-reposition-head,
.app-shell:has(#irrigation.active-view) .irrigation-reposition,
.app-shell:has(#irrigation.active-view) .irrigation-difference-head,
.app-shell:has(#irrigation.active-view) .irrigation-difference {
  padding-inline: 4px;
  font-size: 0.62rem;
}

@media (min-width: 1500px) {
  .app-shell:has(#irrigation.active-view) .irrigation-panel {
    --irrigation-block-col: clamp(270px, 16vw, 320px);
    --irrigation-month-width: 100%;
  }
}

@media (max-width: 1180px) {
  .app-shell:has(#irrigation.active-view) .irrigation-panel {
    --irrigation-block-col: clamp(220px, 24vw, 250px);
    --irrigation-month-width: 100%;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-block-data {
    grid-template-columns: minmax(46px, 0.62fr) minmax(102px, 1.38fr);
  }
}

@media (max-width: 640px) {
  .app-shell:has(#irrigation.active-view) .irrigation-panel {
    --irrigation-block-col: 206px;
    --irrigation-month-width: 100%;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-block-data {
    grid-template-columns: minmax(68px, 1fr);
  }

  .app-shell:has(#irrigation.active-view) .irrigation-block-metric {
    grid-column: 1;
    flex-wrap: wrap;
    width: 100%;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-block-metric span {
    font-size: 0.5rem;
  }
}

/* Capa visual final: jerarquia clara de menu, color mas vivo y lectura limpia. */
:root {
  --bg: #eef7f4;
  --surface: #ffffff;
  --surface-2: #e7f3ee;
  --ink: #10251f;
  --muted: #5d6f69;
  --line: rgba(13, 74, 57, 0.14);
  --brand: #047857;
  --brand-2: #10b981;
  --accent: #f59e0b;
  --shadow: 0 20px 46px rgba(9, 52, 41, 0.14);
  --glow: 0 18px 40px rgba(16, 185, 129, 0.18);
}

body {
  background:
    linear-gradient(135deg, rgba(16, 185, 129, 0.10), transparent 28%),
    linear-gradient(180deg, #f6fbf8 0%, #edf7f3 100%);
}

.sidebar {
  background: linear-gradient(180deg, #063a31 0%, #07513f 52%, #08382f 100%);
}

.nav {
  gap: 7px;
}

.nav-group-toggle {
  min-height: 34px;
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.13);
  border-color: rgba(255, 255, 255, 0.20);
  color: #ffffff;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.03);
}

.nav-group.open {
  position: relative;
  display: grid;
  gap: 4px;
  margin: -2px 0 2px 8px;
  padding: 6px 0 6px 10px;
  border-left: 2px solid rgba(16, 185, 129, 0.58);
}

.nav-group .nav-item {
  min-height: 28px;
  border-radius: 7px;
  padding-left: 10px;
  background: rgba(255, 255, 255, 0.06);
  color: #d8f5e7;
  font-size: 0.78rem;
  font-weight: 800;
}

.nav-group .nav-item:hover,
.nav-group .nav-item.active {
  background: #dff8ea;
  color: #064e3b;
  box-shadow: inset 3px 0 0 var(--accent);
}

.nav > .nav-item {
  font-weight: 900;
}

.nav > .nav-item.active {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.24), rgba(16, 185, 129, 0.18));
  box-shadow: inset 4px 0 0 var(--accent), 0 10px 22px rgba(0, 0, 0, 0.12);
}

.panel,
.kpi,
.chart-panel,
.irrigation-report-panel {
  border-radius: 10px;
  transition: transform 170ms ease, box-shadow 170ms ease, border-color 170ms ease;
}

.panel:hover,
.kpi:hover,
.chart-panel:hover {
  transform: translateY(-1px);
  box-shadow: var(--glow);
}

.kpi small:empty {
  display: none;
}

.irrigation-bandeja-day i em {
  bottom: calc(100% + 4px);
  transform: translateX(-50%);
  padding: 1px 3px;
  border-radius: 4px;
  background: rgba(255, 255, 255, 0.82);
  color: #12362b;
  font-size: 0.52rem;
}

.app-shell:has(#calicatas.active-view) .main {
  height: 100svh;
  overflow: hidden;
}

.app-shell:has(#calicatas.active-view) .calicatas-panel {
  height: calc(100svh - 58px);
  min-height: 0;
  overflow: hidden;
}

.app-shell:has(#calicatas.active-view) .irrigation-calicatas-panel {
  overflow: hidden;
}

.app-shell:has(#calicatas.active-view) .irrigation-calicatas-layout {
  overflow: hidden;
}

.app-shell:has(#calicatas.active-view) .irrigation-calicata-history {
  overflow-y: auto;
}

/* Mobile responsive audit pass: compacta navegacion, filtros y paneles sin cambiar la logica. */
@media (max-width: 760px) {
  html,
  body {
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
  }

  .app-shell:not(.locked) {
    display: block !important;
    min-height: 100svh;
  }

  .sidebar {
    position: sticky !important;
    top: 0 !important;
    z-index: 180 !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 6px max(8px, env(safe-area-inset-left)) 6px max(8px, env(safe-area-inset-right)) !important;
    border-radius: 0 0 14px 14px !important;
    box-shadow: 0 10px 28px rgba(5, 48, 39, 0.22);
  }

  .brand {
    display: grid !important;
    grid-template-columns: 26px minmax(0, 1fr);
    align-items: center;
    gap: 7px;
    margin-bottom: 4px;
  }

  .brand-mark {
    width: 26px !important;
    height: 26px !important;
  }

  .brand strong {
    font-size: 0.72rem;
    line-height: 1.05;
  }

  .brand span,
  .brand small,
  .sync-box {
    display: none !important;
  }

  .nav {
    display: flex !important;
    grid-template-columns: none !important;
    align-items: center;
    gap: 5px !important;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
    padding: 1px 2px 3px;
    scrollbar-width: none;
    scroll-snap-type: x proximity;
  }

  .nav::-webkit-scrollbar {
    display: none;
  }

  .nav-group {
    display: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
  }

  .nav-group.open {
    display: contents !important;
  }

  .nav-group-toggle,
  .nav-item,
  .nav-group .nav-item,
  .nav > .nav-item {
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: max-content !important;
    max-width: 142px;
    min-height: 27px !important;
    padding: 4px 8px !important;
    border-radius: 999px !important;
    font-size: 0.67rem !important;
    line-height: 1 !important;
    white-space: nowrap;
    scroll-snap-align: start;
  }

  .nav-group-toggle::after {
    margin-left: 5px;
  }

  .nav-group .nav-item {
    background: rgba(255, 255, 255, 0.10) !important;
    color: #e5fbef !important;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.08);
  }

  .nav-group .nav-item.active,
  .nav > .nav-item.active {
    background: #e7fff1 !important;
    color: #064e3b !important;
    box-shadow: inset 0 -2px 0 var(--accent);
  }

  .main {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    padding: 6px 6px calc(12px + env(safe-area-inset-bottom)) !important;
  }

  .topbar {
    position: sticky;
    top: 69px !important;
    z-index: 95;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 6px;
    min-height: 30px !important;
    margin-bottom: 6px !important;
    padding: 4px 6px !important;
    border-radius: 10px !important;
  }

  .topbar .eyebrow {
    display: none;
  }

  .topbar h1 {
    overflow: hidden;
    margin: 0;
    font-size: 0.84rem !important;
    line-height: 1.1;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .topbar .top-actions {
    gap: 4px;
  }

  .user-chip {
    max-width: 128px;
    min-height: 24px;
    padding: 3px 7px;
    overflow: hidden;
    font-size: 0.62rem;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .view {
    width: 100%;
    max-width: 100%;
    min-width: 0;
  }

  .panel,
  .chart-panel,
  .irrigation-report-panel,
  .kpi {
    border-radius: 9px;
  }

  .panel-header,
  .gantt-head,
  .warehouse-panel-header,
  .irrigation-panel-header,
  .calicatas-panel-header {
    display: grid !important;
    grid-template-columns: 1fr !important;
    align-items: start !important;
    gap: 5px !important;
    padding: 7px !important;
  }

  .panel-header h2,
  .gantt-head h2,
  .calicatas-panel-header h2 {
    margin: 0;
    font-size: 0.92rem !important;
    line-height: 1.1;
  }

  .panel-header p,
  .gantt-head p,
  .calicatas-panel-header p {
    display: none !important;
  }

  .program-filters,
  .irrigation-filters,
  .calicatas-filters,
  .harvest-filters,
  .gantt-controls,
  .report-filters,
  .warehouse-filters,
  .irrigation-local-filters,
  .irrigation-balance-toolbar {
    display: flex !important;
    grid-template-columns: none !important;
    align-items: end !important;
    justify-content: flex-start !important;
    gap: 5px !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    overflow-x: auto;
    overflow-y: hidden;
    padding: 5px !important;
    border-radius: 10px !important;
    scrollbar-width: thin;
  }

  .program-filters > label,
  .irrigation-filters > label,
  .calicatas-filters > label,
  .harvest-filters > label,
  .gantt-controls > label,
  .report-filters > label,
  .warehouse-filters > label,
  .irrigation-local-filters > label,
  .irrigation-balance-toolbar > label,
  .inline-filter,
  .gantt-species-filter {
    flex: 0 0 clamp(116px, 42vw, 172px) !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    font-size: 0.58rem !important;
  }

  .harvest-date-range {
    flex-basis: 236px !important;
  }

  .harvest-date-range span {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 4px;
    min-width: 0 !important;
  }

  .program-filters button,
  .irrigation-filters button,
  .calicatas-filters button,
  .harvest-filters button,
  .gantt-controls button,
  .report-filters button,
  .warehouse-filters button,
  .irrigation-local-filters button,
  .irrigation-balance-toolbar button {
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: max-content;
    min-height: 29px !important;
    padding: 5px 9px !important;
    font-size: 0.62rem !important;
    white-space: nowrap;
  }

  select,
  input,
  textarea {
    min-height: 30px;
    font-size: 0.75rem;
  }

  .kpi-grid,
  .harvest-dashboard-grid,
  .application-dashboard-grid,
  .irrigation-balance-charts,
  .irrigation-bandeja-charts,
  .irrigation-report-grid,
  .dashboard-grid,
  .program-kpis {
    grid-template-columns: 1fr !important;
  }

  .table-wrap,
  .gantt-table,
  .irrigation-balance-matrix,
  .irrigation-gantt-program,
  .irrigation-gantt-real {
    max-width: 100%;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
  }

  #manager.active-view .gantt-panel:not(.mobile-gantt-open) .gantt-table,
  #manager.active-view .gantt-panel:not(.mobile-gantt-open) .gantt-detail,
  #manager.active-view .gantt-panel:not(.mobile-gantt-open) .gantt-status-legend {
    display: none !important;
  }

  #manager.active-view .gantt-panel.mobile-gantt-open .gantt-table {
    max-height: 72svh;
  }

  .modal,
  dialog {
    width: min(96vw, 520px) !important;
    max-width: calc(100vw - 16px) !important;
  }

  .modal-body,
  .dialog-card,
  .irrigation-program-dialog,
  .irrigation-observation-dialog {
    max-height: calc(100svh - 18px) !important;
    overflow: auto !important;
  }

  .irrigation-observation-dialog {
    padding: 14px;
  }

  .irrigation-observation-dialog .dialog-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .irrigation-observation-dialog .dialog-actions .danger-button {
    grid-column: 1 / -1;
    width: 100%;
    margin-right: 0;
  }

  .irrigation-observation-summary {
    grid-template-columns: 64px minmax(0, 1fr);
  }

  .irrigation-observation-summary span:last-child {
    grid-column: 1 / -1;
  }

  .modal-actions {
    position: sticky;
    bottom: 0;
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
    background: inherit;
  }
}

/* Monitoreo de plagas */
.app-shell:has(#pestMonitoring.active-view) .main {
  height: 100dvh;
  overflow: auto;
}

#pestMonitoring.active-view {
  height: auto;
  min-height: calc(100dvh - 45px);
}

.pest-monitoring-shell {
  display: grid;
  grid-template-rows: auto auto auto auto;
  height: auto;
  min-height: 0;
  gap: 8px;
}

.pest-filter-bar {
  display: grid;
  grid-template-columns: 126px 126px minmax(140px, 1.1fr) minmax(120px, 0.9fr) minmax(120px, 1fr) 92px 30px;
  align-items: end;
  gap: 7px;
  padding: 7px 9px;
  border: 1px solid #b9d8cd;
  border-radius: 7px;
  background: #f7fbf9;
  box-shadow: 0 3px 12px rgba(20, 66, 52, 0.08);
}

.pest-filter-bar label {
  display: grid;
  min-width: 0;
  gap: 2px;
  color: #365c50;
  font-size: 0.64rem;
  font-weight: 800;
}

.pest-filter-bar input,
.pest-filter-bar select {
  width: 100%;
  min-width: 0;
  height: 29px;
  padding: 3px 7px;
  border-color: #c5dcd4;
  background: #ffffff;
  font-size: 0.73rem;
}

.pest-filter-bar .icon-button {
  width: 30px;
  min-width: 30px;
  min-height: 29px;
  padding: 0;
}

.pest-kpis {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
}

.pest-kpis .kpi {
  min-height: 62px;
  padding: 8px 11px;
}

.pest-kpis .kpi strong {
  font-size: 1.15rem;
}

.pest-monitoring-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(340px, 390px);
  height: clamp(500px, calc(100dvh - 185px), 720px);
  min-height: 0;
  gap: 8px;
}

.pest-map-panel {
  position: relative;
  min-height: 0;
  padding: 0;
  overflow: hidden !important;
}

.pest-monitoring-map {
  width: 100%;
  height: 100%;
  min-height: 0;
}

.pest-tree-layer-control {
  position: absolute;
  top: 54px;
  left: 10px;
  z-index: 7;
  display: grid;
  grid-template-columns: 18px 22px auto auto;
  min-height: 38px;
  align-items: center;
  gap: 5px;
  padding: 6px 9px;
  border: 1px solid rgba(255, 255, 255, 0.82);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 4px 14px rgba(8, 42, 31, 0.22);
  color: #173c31;
  cursor: pointer;
  backdrop-filter: blur(6px);
}

.pest-tree-layer-control input {
  width: 16px;
  height: 16px;
  margin: 0;
  accent-color: #17845f;
}

.pest-tree-layer-icon {
  display: block;
  width: 18px;
  height: 24px;
  object-fit: contain;
}

.pest-tree-layer-control strong {
  font-size: 0.7rem;
}

.pest-tree-layer-control small {
  min-width: 25px;
  padding: 2px 5px;
  border-radius: 4px;
  background: #e4f3ed;
  color: #17684f;
  font-size: 0.61rem;
  font-weight: 900;
  text-align: center;
}

.pest-heat-overlay {
  position: absolute;
  pointer-events: none;
  opacity: 0.96;
  mix-blend-mode: normal;
  filter: saturate(1.08) contrast(1.03);
}

.pest-heat-overlay canvas {
  display: block;
}

.pest-tree-number-label {
  color: #103b2e !important;
  font-family: inherit !important;
  line-height: 1 !important;
  text-shadow:
    -1px -1px 0 #ffffff,
    1px -1px 0 #ffffff,
    -1px 1px 0 #ffffff,
    1px 1px 0 #ffffff;
}

.pest-map-legend {
  position: absolute;
  right: 10px;
  bottom: 24px;
  z-index: 5;
  display: grid;
  grid-template-columns: auto auto;
  align-items: center;
  gap: 4px 7px;
  min-width: 224px;
  padding: 7px 9px;
  border: 1px solid rgba(255, 255, 255, 0.7);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 5px 16px rgba(8, 42, 31, 0.22);
  color: #284d42;
  font-size: 0.65rem;
  backdrop-filter: blur(6px);
}

.pest-map-legend strong {
  grid-column: 1 / -1;
  font-size: 0.7rem;
}

.pest-map-legend div {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: 32px minmax(0, 1fr);
  align-items: center;
  gap: 7px;
}

.pest-map-legend span {
  width: 28px;
  height: 7px;
  border-radius: 2px;
}

.pest-ranking-panel {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  min-height: 0;
  padding: 11px;
  overflow: hidden !important;
}

.pest-ranking-panel .panel-header {
  margin-bottom: 7px;
}

.pest-ranking-panel h2 {
  margin: 0;
  font-size: 0.94rem;
}

.pest-ranking-panel .panel-header span {
  color: var(--muted);
  font-size: 0.68rem;
}

.pest-coverage-explainer {
  display: grid;
  gap: 3px;
  margin: 0 0 8px;
  padding: 7px 8px;
  border-left: 3px solid #258a70;
  background: #eef8f4;
  color: #45685e;
  font-size: 0.63rem;
  line-height: 1.35;
}

.pest-coverage-explainer strong {
  color: #185d4b;
}

.pest-ranking-list,
.pest-coverage-wrap {
  min-height: 0;
  overflow: auto;
}

.pest-coverage-table {
  min-width: 0;
  table-layout: fixed;
}

.pest-coverage-table th,
.pest-coverage-table td {
  padding: 7px 5px;
  border-bottom: 1px solid #dbe8e3;
  font-size: 0.66rem;
  text-align: right;
  white-space: nowrap;
}

.pest-coverage-table th:first-child,
.pest-coverage-table td:first-child {
  width: 42%;
  text-align: left;
}

.pest-coverage-table button {
  display: flex;
  width: 100%;
  min-width: 0;
  justify-content: space-between;
  gap: 5px;
  padding: 2px 0;
  border: 0;
  background: transparent;
  color: #173c31;
  font-size: 0.68rem;
  font-weight: 800;
  text-align: left;
  cursor: pointer;
}

.pest-coverage-table button span {
  color: #647b73;
  font-size: 0.61rem;
}

.pest-coverage-table tbody tr:hover {
  background: #edf7f3;
}

.pest-monthly-panel {
  padding: 12px;
}

.pest-monthly-panel .panel-header {
  margin-bottom: 8px;
}

.pest-monthly-panel h2 {
  margin: 0;
  font-size: 0.96rem;
}

.pest-monthly-panel p {
  margin: 2px 0 0;
  font-size: 0.7rem;
}

.pest-monthly-table-wrap {
  max-height: 360px;
  overflow: auto;
  border: 1px solid #d5e5df;
  border-radius: 6px;
}

.pest-monthly-table {
  min-width: 1080px;
}

.pest-monthly-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 8px 7px;
  background: #e8f3ef;
  color: #285447;
  font-size: 0.66rem;
  text-transform: none;
}

.pest-monthly-table td {
  padding: 7px;
  font-size: 0.68rem;
  text-align: right;
  white-space: nowrap;
}

.pest-monthly-table th:first-child,
.pest-monthly-table th:nth-child(2),
.pest-monthly-table td:first-child,
.pest-monthly-table td:nth-child(2) {
  text-align: left;
}

.pest-monthly-table tbody tr:nth-child(even) {
  background: #f7faf8;
}

.pest-latest-potrero-meta,
.pest-monthly-subhead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.pest-latest-potrero-meta {
  margin-bottom: 6px;
  color: #60766e;
  font-size: 0.66rem;
  font-weight: 800;
}

.pest-latest-potrero-meta strong {
  color: #116a50;
}

.pest-latest-potrero-wrap {
  max-height: 250px;
  overflow: auto;
  border: 1px solid #cfe1da;
  border-radius: 6px;
}

.pest-latest-potrero-table {
  width: 100%;
  border-collapse: collapse;
}

.pest-latest-potrero-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 7px 8px;
  background: #e2f1eb;
  color: #285447;
  font-size: 0.65rem;
  text-align: left;
}

.pest-latest-potrero-table td {
  padding: 7px 8px;
  border-top: 1px solid #e1ebe7;
  color: #263f37;
  font-size: 0.68rem;
}

.pest-latest-potrero-table td:last-child {
  text-align: right;
}

.pest-latest-potrero-table time {
  color: #116a50;
  font-weight: 900;
}

.pest-latest-potrero-table td:nth-child(3) span {
  display: inline-block;
  margin: 1px 3px 1px 0;
  padding: 2px 5px;
  border-radius: 4px;
  background: #edf6f2;
  color: #42675b;
  font-size: 0.61rem;
  font-weight: 850;
}

.pest-monthly-subhead {
  margin: 12px 0 6px;
  padding-top: 10px;
  border-top: 1px solid #d8e7e1;
}

.pest-monthly-subhead h3 {
  margin: 0;
  color: #173c31;
  font-size: 0.8rem;
}

.pest-monthly-subhead span {
  color: #647b73;
  font-size: 0.64rem;
  font-weight: 750;
}

.pest-ranking-row {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr) auto;
  width: 100%;
  align-items: center;
  gap: 7px;
  padding: 7px 5px;
  border: 0;
  border-bottom: 1px solid #dbe8e3;
  border-radius: 0;
  background: transparent;
  color: #173c31;
  text-align: left;
  cursor: pointer;
}

.pest-ranking-row:hover {
  background: #edf7f3;
}

.pest-ranking-row > span {
  color: #6b827a;
  font-size: 0.67rem;
  font-weight: 800;
  text-align: center;
}

.pest-ranking-row div {
  display: grid;
  min-width: 0;
  gap: 1px;
}

.pest-ranking-row strong,
.pest-ranking-row small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pest-ranking-row strong { font-size: 0.72rem; }
.pest-ranking-row small { color: var(--muted); font-size: 0.62rem; }
.pest-ranking-row b { color: #137659; font-size: 0.72rem; }

.pest-data-note:empty { display: none; }
.pest-data-note {
  display: grid;
  gap: 1px;
  margin-top: 7px;
  padding: 7px;
  border-left: 3px solid #c58119;
  background: #fff8e8;
  color: #755315;
  font-size: 0.64rem;
}

.pest-map-info {
  display: grid;
  min-width: 210px;
  gap: 5px;
  color: #173c31;
  font-family: Inter, system-ui, sans-serif;
}

.pest-map-info > strong {
  padding-bottom: 4px;
  border-bottom: 1px solid #d5e4df;
  font-size: 0.82rem;
}

.pest-map-info div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: 0.7rem;
}

.pest-tree-info p {
  margin: 3px 0 0;
  padding: 6px 7px;
  border-left: 3px solid #d88918;
  background: #fff6e7;
  color: #754d10;
  font-size: 0.66rem;
  line-height: 1.35;
}

.pest-loading-state {
  display: grid;
  min-height: 320px;
  place-content: center;
  justify-items: center;
  gap: 8px;
  color: var(--muted);
  text-align: center;
}

.loading-spinner {
  width: 28px;
  height: 28px;
  border: 3px solid #cce2da;
  border-top-color: #15815f;
  border-radius: 50%;
  animation: pestSpin 700ms linear infinite;
}

@keyframes pestSpin { to { transform: rotate(360deg); } }

@media (max-width: 980px) {
  .pest-filter-bar {
    grid-template-columns: repeat(3, minmax(110px, 1fr));
  }

  .pest-filter-bar .icon-button {
    width: 100%;
  }

  .pest-monitoring-layout {
    grid-template-columns: minmax(0, 1fr) 320px;
  }
}

@media (max-width: 760px) {
  .app-shell:has(#pestMonitoring.active-view) .main {
    height: auto;
    overflow: visible;
  }

  #pestMonitoring.active-view {
    height: auto;
  }

  .pest-monitoring-shell {
    display: grid;
    height: auto;
  }

  .pest-filter-bar {
    grid-template-columns: 1fr 1fr;
  }

  .pest-kpis {
    grid-template-columns: 1fr 1fr;
  }

  .pest-monitoring-layout {
    grid-template-columns: 1fr;
    height: auto;
  }

  .pest-monitoring-map {
    height: 58svh;
    min-height: 390px;
  }

  .pest-ranking-panel {
    max-height: 48svh;
  }

  .pest-map-legend {
    right: 7px;
    bottom: 18px;
    min-width: min(220px, calc(100% - 14px));
  }

  .pest-tree-layer-control {
    top: 52px;
    left: 8px;
  }

  .pest-monthly-table-wrap {
    max-height: 58svh;
  }
}

@media (prefers-reduced-motion: reduce) {
  .loading-spinner { animation: none; }
}

@media (max-width: 760px) and (orientation: portrait) {
  .app-shell:has(#irrigation.active-view) .irrigation-panel {
    --irrigation-block-col: clamp(142px, 42vw, 176px);
    --irrigation-day-size: 20px;
    --irrigation-total-col: 42px;
    --irrigation-reposition-col: 48px;
    --irrigation-diff-hours-col: 46px;
    --irrigation-diff-reposition-col: 48px;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-header {
    position: sticky;
    top: 107px;
    z-index: 82;
    background: rgba(255,255,255,0.94);
    backdrop-filter: blur(12px);
  }

  .app-shell:has(#irrigation.active-view) .irrigation-filters {
    max-height: 42px;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-row {
    grid-template-columns:
      var(--irrigation-block-col)
      max-content
      var(--irrigation-total-col)
      var(--irrigation-reposition-col)
      var(--irrigation-diff-hours-col)
      var(--irrigation-diff-reposition-col) !important;
    width: max-content;
    min-width: 100%;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-days {
    grid-template-columns: repeat(var(--days), var(--irrigation-day-size)) !important;
    width: max-content;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-potrero-group {
    min-width: max-content !important;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-block-label {
    grid-template-columns: 24px 34px minmax(0, 1fr);
    gap: 3px;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-block-data {
    gap: 2px 3px;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-block-data small {
    font-size: 0.49rem;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-date-cell,
  .app-shell:has(#irrigation.active-view) .irrigation-tray-cell,
  .app-shell:has(#irrigation.active-view) .irrigation-hour-input,
  .app-shell:has(#irrigation.active-view) .irrigation-program-cell,
  .app-shell:has(#irrigation.active-view) .calicata-day-cell,
  .app-shell:has(#irrigation.active-view) .calicata-detail-cell {
    width: var(--irrigation-day-size) !important;
    min-width: var(--irrigation-day-size) !important;
    min-height: 22px !important;
    padding: 1px !important;
    font-size: 0.55rem !important;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-compare-wrap {
    max-height: calc(100svh - 158px);
    overflow: auto;
  }
}

@media (max-width: 760px) {
  .app-shell:has(#calicatas.active-view) .main {
    height: auto;
    min-height: calc(100svh - 72px);
    overflow: visible;
  }

  .app-shell:has(#calicatas.active-view) .calicatas-panel {
    height: auto;
    min-height: calc(100svh - 112px);
    padding: 6px;
    overflow: visible;
  }

  .app-shell:has(#calicatas.active-view) .irrigation-calicatas-layout {
    display: grid;
    grid-template-rows: minmax(360px, 58svh) minmax(180px, 28svh);
    gap: 7px;
    height: calc(100svh - 182px);
    min-height: 560px;
    overflow: hidden;
  }

  .app-shell:has(#calicatas.active-view) .irrigation-calicata-map,
  .app-shell:has(#calicatas.active-view) .irrigation-calicata-history {
    min-height: 0 !important;
    max-height: none !important;
    height: 100% !important;
  }

  .app-shell:has(#calicatas.active-view) .irrigation-calicata-history {
    overflow-y: auto;
  }

  .irrigation-balance-charts {
    --balance-chart-height: auto;
  }

  .irrigation-balance-charts .chart-panel,
  .irrigation-balance-chart,
  .irrigation-balance-block-chart {
    height: auto !important;
    min-height: 340px !important;
    max-height: none !important;
  }

  .irrigation-balance-block-chart {
    grid-template-columns: repeat(auto-fit, minmax(86px, 1fr));
  }

  .irrigation-bandeja-chart {
    overflow-x: auto;
  }

  .irrigation-bandeja-day {
    min-width: 34px;
  }
}

@media (max-width: 430px) {
  .topbar {
    top: 66px !important;
  }

  .user-chip {
    max-width: 104px;
  }

  .program-filters > label,
  .irrigation-filters > label,
  .calicatas-filters > label,
  .harvest-filters > label,
  .gantt-controls > label,
  .report-filters > label,
  .warehouse-filters > label,
  .irrigation-local-filters > label,
  .irrigation-balance-toolbar > label,
  .inline-filter,
  .gantt-species-filter {
    flex-basis: 122px !important;
  }

  .harvest-date-range {
    flex-basis: 214px !important;
  }
}

/* Ajuste fino de filtros moviles con estructuras internas especiales. */
@media (max-width: 760px) {
  .program-filters > label,
  .irrigation-filters > label,
  .calicatas-filters > label,
  .harvest-filters > label,
  .gantt-controls > label,
  .report-filters > label,
  .warehouse-filters > label,
  .irrigation-local-filters > label,
  .irrigation-balance-toolbar > label,
  .inline-filter {
    display: grid !important;
    grid-template-rows: auto 26px;
    gap: 2px;
    line-height: 1;
  }

  .program-filters select,
  .program-filters input,
  .irrigation-filters select,
  .irrigation-filters input,
  .calicatas-filters select,
  .calicatas-filters input,
  .harvest-filters select,
  .harvest-filters input,
  .gantt-controls select,
  .gantt-controls input,
  .report-filters select,
  .report-filters input,
  .warehouse-filters select,
  .warehouse-filters input,
  .irrigation-local-filters select,
  .irrigation-local-filters input,
  .irrigation-balance-toolbar select,
  .irrigation-balance-toolbar input {
    min-height: 26px !important;
    height: 26px !important;
    padding: 3px 7px !important;
    font-size: 0.68rem !important;
  }

  .irrigation-balance-toolbar {
    max-height: 44px !important;
  }

  .irrigation-balance-toolbar > div {
    flex: 0 0 112px;
    min-width: 112px;
    gap: 0;
    align-self: center;
  }

  .irrigation-balance-toolbar strong {
    font-size: 0.72rem;
    line-height: 1;
  }

  .irrigation-balance-toolbar span {
    font-size: 0.58rem;
    line-height: 1;
  }

  .gantt-controls {
    max-height: 46px !important;
  }

  .gantt-species-filter {
    display: flex !important;
    flex: 0 0 188px !important;
    align-items: center;
    gap: 6px !important;
    min-height: 32px !important;
    height: 32px !important;
    padding: 3px 6px !important;
    overflow-x: auto;
    overflow-y: hidden;
    white-space: nowrap;
  }

  .gantt-species-filter legend {
    float: left;
    width: auto;
    margin: 0 4px 0 0;
    padding: 0;
    font-size: 0.58rem;
    line-height: 24px;
  }

  .gantt-species-filter label {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    align-items: center;
    gap: 3px;
    min-height: 24px !important;
    margin: 0 !important;
    font-size: 0.6rem !important;
    white-space: nowrap;
  }

  .gantt-species-filter input {
    width: 13px !important;
    height: 13px !important;
    min-height: 13px !important;
  }

  .warehouse-panel-header .warehouse-filters,
  .warehouse-filters {
    flex-wrap: nowrap !important;
    max-height: 44px !important;
  }

  .warehouse-filters .inline-filter {
    flex: 0 0 126px !important;
  }

  .warehouse-filters button {
    align-self: end;
  }
}

/* Pulido mobile de modulos de trabajo: menos aire vertical, mismas acciones. */
@media (max-width: 760px) {
  .program-filters::before,
  .gantt-controls::before,
  .warehouse-filters::before,
  .irrigation-filters::before,
  .calicatas-filters::before,
  .harvest-filters::before,
  .report-filters::before,
  .irrigation-local-filters::before {
    display: none !important;
    content: none !important;
  }

  .panel,
  .order-card,
  .gantt-panel,
  .chart-panel,
  .irrigation-report-panel {
    padding: 10px !important;
  }

  .panel-header {
    margin-bottom: 6px;
  }

  .top-actions,
  .panel-header .top-actions,
  .card-actions {
    display: flex !important;
    flex-wrap: nowrap !important;
    align-items: center;
    justify-content: flex-start;
    gap: 6px !important;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    scrollbar-width: none;
  }

  .top-actions::-webkit-scrollbar,
  .card-actions::-webkit-scrollbar {
    display: none;
  }

  .top-actions > *,
  .card-actions > *,
  .panel-header .top-actions > * {
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: max-content;
  }

  .primary-button,
  .secondary-button,
  .ghost-button,
  .danger-button,
  .link-button {
    min-height: 32px !important;
    padding: 6px 10px !important;
    border-radius: 10px !important;
    font-size: 0.72rem !important;
    line-height: 1.05 !important;
  }

  .order-grid {
    gap: 9px !important;
  }

  .order-card {
    gap: 8px !important;
  }

  .order-card h3,
  .panel h2,
  .chart-panel h2,
  .irrigation-report-panel h2 {
    font-size: 0.95rem !important;
    line-height: 1.12;
  }

  .empty,
  .empty-state strong {
    padding: 16px !important;
    font-size: 0.9rem !important;
    line-height: 1.2;
  }

  .gantt-panel {
    gap: 8px !important;
    margin-bottom: 10px !important;
  }

  .gantt-mobile-gate {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px !important;
    padding: 8px !important;
    border-radius: 12px !important;
  }

  .gantt-mobile-gate strong {
    display: block;
    font-size: 0.82rem !important;
    line-height: 1.08;
  }

  .gantt-mobile-gate span {
    display: block;
    margin-top: 2px;
    font-size: 0.66rem !important;
    line-height: 1.18;
  }

  .gantt-mobile-gate button {
    align-self: center;
  }

  .gantt-head {
    gap: 5px !important;
    padding: 7px !important;
  }

  .gantt-head h3,
  .gantt-head h2 {
    font-size: 0.9rem !important;
    line-height: 1.08;
  }

  .gantt-mobile-hint {
    margin: 4px 0 !important;
    font-size: 0.72rem !important;
    line-height: 1.25 !important;
  }
}

@media (max-width: 760px) {
  .irrigation-bandeja-navigation {
    width: 100%;
    overflow-x: auto;
    padding-bottom: 2px;
    scrollbar-width: thin;
  }

  .irrigation-bandeja-navigation > * {
    flex: 0 0 auto;
  }

  .irrigation-bandeja-navigation label {
    min-width: 108px;
  }

  .irrigation-bandeja-navigation input,
  .irrigation-bandeja-navigation select {
    width: 108px;
  }

  .irrigation-bandeja-summary {
    gap: 10px;
    overflow-x: auto;
    white-space: nowrap;
  }

  .irrigation-bandeja-matrix-help {
    display: grid;
    gap: 2px;
    font-size: 0.58rem;
  }

  .irrigation-bandeja-matrix-scroll {
    height: calc(100svh - 300px);
    min-height: 390px;
  }

  .irrigation-bandeja-matrix-table {
    --bandeja-day-width: 42px;
    --bandeja-date-width: 72px;
    --bandeja-value-width: 60px;
    --bandeja-accum-width: 66px;
    --bandeja-rain-width: 58px;
    --bandeja-historical-width: 96px;
  }

  .irrigation-bandeja-matrix-table th,
  .irrigation-bandeja-matrix-table td {
    height: 26px;
    padding: 3px 4px;
    font-size: 0.59rem;
  }

  .irrigation-bandeja-matrix-table .bandeja-month-heading div {
    width: 100%;
    min-width: 0;
  }
}

/* Riego: filtros superpuestos y comparacion con el alto util completo. */
.app-shell:has(#irrigation.active-view) .irrigation-panel {
  position: relative;
}

.irrigation-filter-toggle {
  position: absolute;
  top: 2px;
  right: -1px;
  z-index: 121;
  display: grid;
  width: 25px;
  min-width: 25px;
  height: 48px;
  padding: 0;
  place-items: center;
  border: 1px solid #056c52;
  border-right: 0;
  border-radius: 8px 0 0 8px;
  background: #08775a;
  box-shadow: 0 4px 12px rgba(4, 73, 55, 0.18);
  color: #fff;
  cursor: pointer;
  font-size: 1.25rem;
  font-weight: 900;
  line-height: 1;
  transition: background 160ms ease, transform 160ms ease;
}

.irrigation-filter-toggle:hover,
.irrigation-filter-toggle:focus-visible {
  background: #075f49;
}

.irrigation-filter-toggle.is-open {
  transform: translateX(-1px);
}

.irrigation-filter-drawer {
  position: absolute;
  top: 0;
  right: 25px;
  z-index: 120;
  width: min(660px, calc(100% - 34px));
  max-height: min(250px, calc(100svh - 62px));
  padding: 8px;
  overflow: auto;
  border: 1px solid rgba(8, 119, 90, 0.28);
  border-radius: 8px 0 8px 8px;
  background: rgba(255, 255, 255, 0.98);
  box-shadow: 0 12px 30px rgba(14, 54, 43, 0.2);
  opacity: 0;
  pointer-events: none;
  transform: translate3d(12px, 0, 0);
  visibility: hidden;
  transition: opacity 160ms ease, transform 160ms ease, visibility 160ms ease;
  will-change: transform, opacity;
  contain: layout paint;
}

.irrigation-filter-drawer.is-open {
  opacity: 1;
  pointer-events: auto;
  transform: translate3d(0, 0, 0);
  visibility: visible;
}

.irrigation-filter-drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 6px;
}

.irrigation-filter-drawer-head > div {
  display: flex;
  min-width: 0;
  align-items: baseline;
  gap: 8px;
}

.irrigation-filter-drawer-head strong {
  color: var(--brand);
  font-size: 0.76rem;
}

.irrigation-filter-drawer-head span {
  color: var(--muted);
  font-size: 0.62rem;
}

.irrigation-filter-drawer-head .icon-button {
  width: 24px;
  min-width: 24px;
  min-height: 24px;
  padding: 0;
}

.app-shell:has(#irrigation.active-view) .irrigation-filter-drawer .irrigation-filters {
  position: static;
  top: auto;
  width: 100%;
  min-width: 0;
  grid-template-columns: minmax(100px, 1fr) minmax(100px, 1fr) 78px 72px auto auto auto;
  justify-self: stretch;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.app-shell:has(#irrigation.active-view) .irrigation-filter-drawer .irrigation-filters::before {
  display: none;
  content: none;
}

.app-shell:has(#irrigation.active-view) .irrigation-filter-drawer .irrigation-bandeja-navigation {
  width: 100%;
  justify-content: flex-end;
}

@media (prefers-reduced-motion: reduce) {
  .irrigation-filter-drawer,
  .irrigation-filter-toggle {
    transition: none;
  }
}

@media (min-width: 761px) {
  .app-shell:has(#irrigation.active-view) .panel.irrigation-panel-gantt {
    height: calc(100dvh - 39px);
    max-height: calc(100dvh - 39px);
    min-height: 0;
    padding-top: 2px;
    overflow: hidden;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .irrigation-compare-wrap {
    position: static;
    top: auto;
    grid-template-rows: auto minmax(0, 1fr) auto minmax(0, 1fr);
    height: 100%;
    min-height: 0;
    gap: 3px;
    padding: 0;
    overflow: hidden;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .irrigation-gantt-program,
  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .irrigation-gantt-real {
    height: 100%;
    min-height: 0;
    max-height: none;
    gap: 2px;
    padding-bottom: 2px;
    overflow: auto;
    scrollbar-gutter: stable;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .irrigation-potrero-group-compact {
    min-height: 20px;
    padding-top: 1px;
    padding-bottom: 1px;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row {
    height: 22px;
    min-height: 22px;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row > div,
  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row .calicata-day-cell,
  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row .calicata-detail-cell {
    height: 22px;
    min-height: 22px;
    padding-top: 1px;
    padding-bottom: 1px;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row .calicata-label {
    padding-top: 2px;
    padding-bottom: 2px;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row .calicata-toggle {
    height: 22px;
    min-height: 22px;
    padding: 0;
  }
}

@media (max-width: 760px) {
  .irrigation-filter-toggle {
    position: fixed;
    top: 111px;
    right: 0;
    height: 44px;
    z-index: 132;
  }

  .irrigation-filter-drawer {
    position: fixed;
    top: 106px;
    right: 25px;
    z-index: 131;
    width: min(calc(100vw - 44px), calc(100% - 12px));
    max-height: min(66svh, 430px);
    border-radius: 8px 0 8px 8px;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-filter-drawer .irrigation-filters {
    display: grid;
    max-height: none;
    grid-template-columns: 1fr 1fr;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-filter-drawer .irrigation-filters button {
    width: 100%;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-filter-drawer .irrigation-bandeja-navigation {
    display: grid;
    grid-template-columns: auto minmax(100px, 1fr) auto minmax(100px, 1fr) auto;
    overflow: visible;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .irrigation-compare-wrap {
    display: grid;
    grid-template-rows: auto minmax(300px, 44svh) auto minmax(300px, 44svh);
    max-height: none;
    overflow: visible;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .irrigation-gantt-program,
  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .irrigation-gantt-real {
    height: 100%;
    min-height: 0;
    max-height: none;
    padding-bottom: 2px;
    overflow: auto;
    scrollbar-gutter: stable;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row,
  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row > div,
  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row .calicata-day-cell,
  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row .calicata-detail-cell,
  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .calicata-row .calicata-toggle {
    height: 28px;
    min-height: 28px;
  }
}

/* Programa Fitosanitario oficial */
.official-program-panel {
  padding: 16px;
  background: #f7faf8;
}

.official-program-head {
  margin-bottom: 12px;
  border-bottom: 1px solid #cfe0d6;
  padding-bottom: 12px;
}

.section-kicker {
  display: block;
  margin-bottom: 2px;
  color: #18765a;
  font-size: 0.72rem;
  font-weight: 850;
  text-transform: uppercase;
}

.program-sync-notice {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
  border-left: 4px solid #d49318;
  padding: 9px 12px;
  background: #fff7df;
  color: #5d491f;
}

.program-sync-notice span {
  color: #725f38;
  font-size: 0.84rem;
}

.official-program-filters {
  grid-template-columns: minmax(150px, 1.1fr) repeat(4, minmax(110px, 0.75fr)) minmax(190px, 1.5fr) auto;
  gap: 8px;
  margin-bottom: 10px;
  border: 1px solid #d7e5dc;
  border-radius: 6px;
  padding: 9px;
  background: #ffffff;
}

.official-program-filters label {
  min-width: 0;
  font-size: 0.72rem;
}

.official-program-filters select,
.official-program-filters input {
  min-width: 0;
  height: 36px;
}

.official-program-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 1px;
  overflow: hidden;
  margin-bottom: 10px;
  border: 1px solid #cfe0d6;
  border-radius: 6px;
  background: #cfe0d6;
}

.official-program-summary span {
  flex: 1 1 150px;
  padding: 8px 12px;
  background: #ffffff;
  color: #53685f;
  font-size: 0.8rem;
}

.official-program-summary strong {
  margin-right: 5px;
  color: #123f32;
  font-size: 1.05rem;
}

.official-program-summary .has-warning strong {
  color: #a35d00;
}

.official-program-list {
  display: grid;
  gap: 6px;
}

.official-program-item {
  overflow: clip;
  border: 1px solid #cfe0d6;
  border-radius: 6px;
  background: #ffffff;
}

.official-program-item > summary {
  position: relative;
  display: grid;
  grid-template-columns: 46px minmax(150px, 1fr) minmax(220px, 1.5fr) 120px 80px;
  gap: 10px;
  align-items: center;
  min-height: 52px;
  padding: 7px 10px;
  cursor: pointer;
  list-style: none;
}

.official-program-item > summary::-webkit-details-marker {
  display: none;
}

.official-program-item > summary::after {
  content: "+";
  position: absolute;
  right: 6px;
  color: #668076;
}

.official-program-item[open] > summary::after {
  content: "−";
}

.official-program-item[open] > summary {
  background: #eef7f2;
}

.official-program-number {
  display: grid;
  width: 42px;
  height: 38px;
  place-items: center;
  border-left: 4px solid #15966d;
  background: #e5f5ee;
  color: #0c654a;
  font-weight: 900;
}

.official-program-title,
.official-program-meta {
  display: grid;
  min-width: 0;
}

.official-program-title strong,
.official-program-title small,
.official-program-objective,
.official-program-meta small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.official-program-title small,
.official-program-meta small {
  color: #65776f;
  font-size: 0.72rem;
}

.official-program-objective {
  color: #314a40;
  font-size: 0.84rem;
}

.official-program-state,
.official-line-state {
  border-radius: 999px;
  padding: 4px 7px;
  text-align: center;
  font-size: 0.7rem;
  font-weight: 800;
}

.official-program-state.is-complete,
.official-line-state.is-complete {
  background: #dff4e8;
  color: #14633f;
}

.official-program-state.needs-review,
.official-line-state.needs-review {
  background: #fff0d0;
  color: #945600;
}

.official-program-detail {
  display: grid;
  gap: 10px;
  border-top: 1px solid #d9e7df;
  padding: 12px;
}

.official-program-facts {
  display: grid;
  grid-template-columns: repeat(5, minmax(110px, 1fr));
  gap: 1px;
  overflow: hidden;
  border: 1px solid #dbe8e0;
  border-radius: 5px;
  background: #dbe8e0;
}

.official-program-facts span {
  display: grid;
  gap: 2px;
  padding: 8px;
  background: #f8fbf9;
}

.official-program-facts small {
  color: #687a72;
  font-size: 0.68rem;
  text-transform: uppercase;
}

.official-program-facts strong {
  font-size: 0.82rem;
}

.official-products-table table {
  min-width: 760px;
}

.official-program-notes {
  border-left: 3px solid #d7a33c;
  padding: 8px 10px;
  background: #fffaf0;
}

.official-program-notes p {
  margin: 4px 0 0;
  color: #5c5547;
  font-size: 0.8rem;
  line-height: 1.35;
}

.official-program-actions {
  display: flex;
  justify-content: flex-end;
}

.official-order-program-picker .block-picker-head {
  grid-template-columns: minmax(280px, 1fr) auto;
}

.recipe-dose-control,
.recipe-result-control {
  display: grid;
  gap: 2px;
}

.recipe-dose-control small,
.recipe-result-control small {
  overflow: hidden;
  color: #64776e;
  font-size: 0.66rem;
  line-height: 1.1;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.recipe-line-incomplete {
  border-left: 3px solid #d49318;
  padding-left: 6px;
}

@media (max-width: 1180px) {
  .official-program-filters {
    grid-template-columns: repeat(3, minmax(140px, 1fr));
  }

  .official-program-item > summary {
    grid-template-columns: 46px minmax(150px, 1fr) minmax(180px, 1fr) 110px 74px;
  }
}

@media (max-width: 760px) {
  .official-program-panel {
    padding: 8px;
  }

  .official-program-head {
    align-items: center;
  }

  .program-sync-notice {
    align-items: flex-start;
    flex-direction: column;
    gap: 2px;
  }

  .official-program-filters {
    display: grid;
    grid-template-columns: 1fr 1fr;
    overflow: visible;
    padding: 8px;
  }

  .official-program-filters::before {
    display: none;
  }

  .official-program-filters .program-search,
  .official-program-filters button {
    grid-column: 1 / -1;
  }

  .official-program-item > summary {
    position: relative;
    grid-template-columns: 42px minmax(0, 1fr) 66px;
    gap: 8px;
    min-height: 58px;
    padding-right: 18px;
  }

  .official-program-objective,
  .official-program-meta {
    display: none;
  }

  .official-program-facts {
    grid-template-columns: 1fr 1fr;
  }

  .official-program-facts span:last-child {
    grid-column: 1 / -1;
  }

  .official-program-actions .primary-button {
    width: 100%;
  }

  .official-order-program-picker .block-picker-head {
    grid-template-columns: 1fr;
  }

  .recipe-line:not(.recipe-line-head) {
    grid-template-columns: 1fr 1fr 40px;
  }

  .recipe-line:not(.recipe-line-head) > .recipe-product-picker {
    grid-column: 1 / -1;
  }

  .recipe-line:not(.recipe-line-head) .recipe-result-control {
    grid-column: 1 / 3;
  }

  .recipe-line:not(.recipe-line-head) > .icon-button {
    grid-column: 3;
  }

  .recipe-line-head {
    display: none;
  }

  .recipe-product-dialog {
    width: calc(100vw - 12px);
    max-height: calc(100dvh - 12px);
  }

  .recipe-product-catalog {
    height: calc(100dvh - 12px);
    padding: 14px;
  }

  .recipe-product-catalog-tools {
    grid-template-columns: 1fr;
  }

  .recipe-product-option {
    grid-template-columns: minmax(0, 1fr) 92px;
    gap: 8px;
    padding: 9px;
  }

  .recipe-product-option-meta small {
    font-size: 0.58rem;
  }
}

/* Orden de aplicacion - formulario operativo A4 horizontal */
@media print {
  @page {
    size: A4 landscape;
    margin: 5mm;
  }

  html,
  body {
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    background: #ffffff !important;
  }

  .auth-gate,
  .app-shell,
  dialog,
  .modal,
  .toast {
    display: none !important;
  }

  .print-area {
    position: static !important;
    display: block !important;
    width: 100% !important;
    margin: 0 !important;
    color: #14251f !important;
    font-family: Arial, Helvetica, sans-serif !important;
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }

  .print-area .application-order-pdf {
    box-sizing: border-box;
    display: grid;
    width: 100%;
    gap: 2.2mm;
    margin: 0;
    color: #14251f;
    font-size: 7.5pt;
    line-height: 1.14;
  }

  .application-order-pdf *,
  .application-order-pdf *::before,
  .application-order-pdf *::after {
    box-sizing: border-box;
  }

  .application-order-pdf .pdf-order-header {
    display: grid;
    grid-template-columns: 43mm minmax(0, 1fr) 35mm;
    align-items: stretch;
    gap: 3mm;
    min-height: 14mm;
    margin: 0;
    padding: 0 0 2mm;
    border-bottom: 1.2mm solid #167258;
  }

  .application-order-pdf .pdf-company,
  .application-order-pdf .pdf-order-title,
  .application-order-pdf .pdf-order-number {
    display: grid;
    align-content: center;
  }

  .application-order-pdf .pdf-company strong {
    color: #145d49;
    font-size: 11pt;
  }

  .application-order-pdf .pdf-company span,
  .application-order-pdf .pdf-order-title span {
    margin-top: 0.8mm;
    color: #5c6f67;
    font-size: 6.5pt;
  }

  .application-order-pdf .pdf-order-title {
    justify-items: center;
    text-align: center;
  }

  .application-order-pdf .pdf-order-title h1 {
    margin: 0;
    color: #132e25;
    font-size: 15pt;
    line-height: 1.05;
    letter-spacing: 0;
  }

  .application-order-pdf .pdf-order-number {
    justify-items: center;
    border: 0.5mm solid #167258;
    background: #eaf5f0 !important;
  }

  .application-order-pdf .pdf-order-number small {
    color: #416159;
    font-size: 6.5pt;
    font-weight: 800;
  }

  .application-order-pdf .pdf-order-number strong {
    color: #124c3b;
    font-size: 19pt;
    line-height: 1;
  }

  .application-order-pdf .pdf-order-fields {
    display: grid;
    grid-template-columns: 25mm 45mm 38mm 35mm minmax(45mm, 1fr) 23mm 28mm 27mm;
    min-height: 15mm;
    border: 0.3mm solid #91a69d;
  }

  .application-order-pdf .pdf-order-fields > div {
    display: grid;
    align-content: center;
    min-width: 0;
    padding: 1.4mm 1.8mm;
    border-right: 0.25mm solid #b5c3bd;
  }

  .application-order-pdf .pdf-order-fields > div:last-child {
    border-right: 0;
  }

  .application-order-pdf .pdf-order-fields small {
    color: #5b6d66;
    font-size: 5.8pt;
    font-weight: 800;
    text-transform: uppercase;
  }

  .application-order-pdf .pdf-order-fields strong {
    margin-top: 0.8mm;
    overflow-wrap: anywhere;
    color: #132e25;
    font-size: 7.7pt;
  }

  .application-order-pdf table {
    width: 100%;
    min-width: 0;
    margin: 0;
    border-collapse: collapse;
    table-layout: fixed;
  }

  .application-order-pdf .pdf-order-header,
  .application-order-pdf .pdf-order-fields,
  .application-order-pdf .pdf-products-table,
  .application-order-pdf .pdf-sign-safety,
  .application-order-pdf .pdf-equipment-safety,
  .application-order-pdf .pdf-operation-log,
  .application-order-pdf .pdf-order-footer {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  .application-order-pdf th,
  .application-order-pdf td {
    border: 0.25mm solid #91a39b;
    padding: 1mm 1.2mm;
    overflow-wrap: anywhere;
    text-align: center;
    vertical-align: middle;
  }

  .application-order-pdf th {
    background: #dcece5 !important;
    color: #173f33;
    font-size: 6.2pt;
    font-weight: 800;
  }

  .application-order-pdf td {
    font-size: 6.8pt;
  }

  .application-order-pdf td small {
    display: block;
    margin-top: 0.5mm;
    color: #66776f;
    font-size: 5.3pt;
  }

  .application-order-pdf .pdf-products-table tbody tr {
    height: 5.3mm;
    break-inside: avoid;
  }

  .application-order-pdf .pdf-products-table .pdf-product-name {
    padding-left: 2mm;
    text-align: left;
    font-weight: 800;
  }

  .application-order-pdf .pdf-col-product {
    width: 30mm;
  }

  .application-order-pdf .pdf-col-dose {
    width: 20mm;
  }

  .application-order-pdf .pdf-col-period {
    width: 17mm;
  }

  .application-order-pdf .pdf-col-water {
    width: 23mm;
  }

  .application-order-pdf .pdf-col-objective {
    width: 48mm;
  }

  .application-order-pdf .pdf-col-total {
    width: 24mm;
  }

  .application-order-pdf .pdf-empty-row td {
    height: 5.3mm;
  }

  .application-order-pdf .pdf-sign-safety {
    display: grid;
    grid-template-columns: 58mm minmax(0, 1fr) 58mm;
    min-height: 17mm;
    border: 0.3mm solid #91a39b;
  }

  .application-order-pdf .pdf-sign-safety > div {
    min-width: 0;
    padding: 1.5mm 2mm;
  }

  .application-order-pdf .pdf-issued-signature,
  .application-order-pdf .pdf-acknowledgement {
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-rows: auto 1fr auto;
    gap: 0.6mm 2mm;
  }

  .application-order-pdf .pdf-issued-signature small,
  .application-order-pdf .pdf-acknowledgement small {
    color: #53675f;
    font-size: 6pt;
    font-weight: 800;
    text-transform: uppercase;
  }

  .application-order-pdf .pdf-issued-signature strong {
    overflow: hidden;
    font-size: 7pt;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .application-order-pdf .pdf-issued-signature span,
  .application-order-pdf .pdf-acknowledgement span {
    grid-column: 1 / -1;
    border-bottom: 0.3mm solid #53675f;
  }

  .application-order-pdf .pdf-issued-signature b,
  .application-order-pdf .pdf-acknowledgement b {
    grid-column: 1 / -1;
    color: #66776f;
    font-size: 5.5pt;
    text-align: center;
  }

  .application-order-pdf .pdf-safety-note {
    display: grid;
    align-content: center;
    border-right: 0.25mm solid #aab9b3;
    border-left: 0.25mm solid #aab9b3;
    background: #f4f8f6 !important;
    text-align: center;
  }

  .application-order-pdf .pdf-safety-note strong {
    color: #174b3b;
    font-size: 7.2pt;
  }

  .application-order-pdf .pdf-safety-note span,
  .application-order-pdf .pdf-safety-note em {
    margin-top: 0.5mm;
    font-size: 6.2pt;
    font-style: normal;
  }

  .application-order-pdf .pdf-safety-note em {
    color: #7a4f00;
    font-weight: 700;
  }

  .application-order-pdf .pdf-equipment-safety {
    display: grid;
    grid-template-columns: 34mm 38mm 55mm minmax(0, 1fr);
    min-height: 28mm;
    border: 0.3mm solid #91a39b;
  }

  .application-order-pdf .pdf-equipment-safety > div {
    display: grid;
    align-content: start;
    gap: 0.8mm;
    padding: 1.5mm 2mm;
    border-right: 0.25mm solid #aab9b3;
  }

  .application-order-pdf .pdf-equipment-safety > div:last-child {
    border-right: 0;
  }

  .application-order-pdf .pdf-equipment-safety h2 {
    margin: 0 0 0.6mm;
    color: #174b3b;
    font-size: 6.5pt;
    text-transform: uppercase;
  }

  .application-order-pdf .pdf-check {
    display: grid;
    grid-template-columns: 4mm 1fr;
    align-items: center;
    gap: 1mm;
    font-size: 6.2pt;
  }

  .application-order-pdf .pdf-check i {
    display: grid;
    width: 3.5mm;
    height: 3.5mm;
    place-items: center;
    border: 0.3mm solid #53675f;
    font-size: 6pt;
    font-style: normal;
    font-weight: 900;
  }

  .application-order-pdf .pdf-machine-data dl {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1mm;
    margin: 0;
  }

  .application-order-pdf .pdf-machine-data dl div {
    min-width: 0;
    padding: 1mm;
    border: 0.25mm solid #bdc9c4;
  }

  .application-order-pdf .pdf-machine-data dt {
    color: #65766f;
    font-size: 5.3pt;
    font-weight: 800;
    text-transform: uppercase;
  }

  .application-order-pdf .pdf-machine-data dd {
    margin: 0.6mm 0 0;
    overflow: hidden;
    font-size: 6.5pt;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .application-order-pdf .pdf-operation-log tbody tr {
    height: 5mm;
  }

  .application-order-pdf .pdf-operation-log th,
  .application-order-pdf .pdf-operation-log td {
    padding: 0.7mm 0.8mm;
    font-size: 5.7pt;
  }

  .application-order-pdf .pdf-operation-log th:nth-child(4),
  .application-order-pdf .pdf-operation-log th:nth-child(8) {
    width: 37mm;
  }

  .application-order-pdf .pdf-order-footer {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 3mm;
    min-height: 7mm;
    border-top: 0.8mm solid #167258;
    padding: 1.2mm 1mm 0;
  }

  .application-order-pdf .pdf-order-footer span {
    color: #4f655d;
    font-size: 6.2pt;
    font-weight: 800;
    text-transform: uppercase;
  }

  .application-order-pdf .pdf-order-footer strong {
    font-size: 8pt;
  }

  .application-order-pdf .pdf-order-footer small {
    color: #6a7973;
    font-size: 5.5pt;
  }

  .application-order-pdf.pdf-dense {
    gap: 1.5mm;
    font-size: 6.8pt;
  }

  .application-order-pdf.pdf-dense .pdf-products-table tbody tr,
  .application-order-pdf.pdf-dense .pdf-operation-log tbody tr {
    height: 4.3mm;
  }

  .application-order-pdf.pdf-dense th,
  .application-order-pdf.pdf-dense td {
    padding-top: 0.6mm;
    padding-bottom: 0.6mm;
    font-size: 5.8pt;
  }
}

/* Calculador de productos para salidas de bodega */
.dispatch-product-calculator {
  gap: 8px;
  padding: 10px;
}

.dispatch-product-calculator-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.dispatch-product-calculator-head h3 {
  margin: 0;
}

.dispatch-product-calc-row {
  display: grid;
  grid-template-columns: minmax(180px, 1.15fr) minmax(260px, 1.65fr) minmax(150px, 0.8fr) auto;
  gap: 10px;
  align-items: center;
  min-height: 58px;
  border: 1px solid #c8ddd4;
  border-left: 4px solid #168262;
  border-radius: 6px;
  padding: 8px;
  background: #ffffff;
}

.dispatch-product-calc-row.is-manual {
  border-left-color: #d49522;
  background: #fffdf7;
}

.dispatch-product-identity,
.dispatch-product-formula {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.dispatch-product-identity strong {
  overflow: hidden;
  color: #153b30;
  font-size: 0.86rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Carta Gantt comparable: Programa y Riegos reales comparten coordenadas de dias. */
.app-shell:has(#irrigation.active-view) .irrigation-panel {
  --irrigation-block-col: clamp(320px, 22vw, 390px);
  --irrigation-day-size: clamp(23px, 1.35vw, 28px);
  --irrigation-day-gap: 2px;
  --irrigation-total-col: clamp(46px, 3.1vw, 54px);
  --irrigation-reposition-col: clamp(58px, 3.8vw, 68px);
  --irrigation-diff-hours-col: clamp(50px, 3.4vw, 60px);
  --irrigation-diff-reposition-col: clamp(56px, 3.7vw, 66px);
  --irrigation-program-compare-reserve: calc(var(--irrigation-diff-hours-col) + var(--irrigation-diff-reposition-col) + var(--irrigation-gap) + var(--irrigation-gap));
}

.app-shell:has(#irrigation.active-view) .irrigation-row {
  grid-template-columns:
    var(--irrigation-block-col)
    max-content
    var(--irrigation-total-col)
    var(--irrigation-reposition-col)
    var(--irrigation-diff-hours-col)
    var(--irrigation-diff-reposition-col) !important;
  width: max-content;
  min-width: 100%;
}

.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-row {
  grid-template-columns:
    var(--irrigation-block-col)
    max-content
    var(--irrigation-total-col)
    var(--irrigation-reposition-col) !important;
  box-sizing: content-box;
  padding-right: var(--irrigation-program-compare-reserve);
}

.app-shell:has(#irrigation.active-view) .irrigation-days {
  grid-template-columns: repeat(var(--days), var(--irrigation-day-size)) !important;
  width: max-content;
  min-width: 0;
}

.app-shell:has(#irrigation.active-view) .irrigation-date-cell,
.app-shell:has(#irrigation.active-view) .irrigation-hour-input,
.app-shell:has(#irrigation.active-view) .calicata-day-cell,
.app-shell:has(#irrigation.active-view) .calicata-detail-cell {
  width: var(--irrigation-day-size) !important;
  min-width: var(--irrigation-day-size) !important;
}

.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-total-head,
.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-total {
  right: calc(var(--irrigation-reposition-col) + var(--irrigation-gap)) !important;
}

.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-reposition-head,
.app-shell:has(#irrigation.active-view) .irrigation-gantt-program .irrigation-reposition {
  right: 0 !important;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-label {
  grid-template-columns: minmax(22px, max-content) minmax(42px, max-content) minmax(0, 1fr) !important;
  align-items: center;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-data {
  grid-template-columns: minmax(0, 1fr);
  align-content: center;
  gap: 2px;
}

.app-shell:has(#irrigation.active-view) .irrigation-crop-variety {
  max-width: none !important;
  overflow: visible !important;
  color: #263d32;
  font-size: 0.61rem;
  font-weight: 950;
  line-height: 1.08;
  text-overflow: clip !important;
  white-space: normal !important;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-metric {
  display: flex !important;
  flex-wrap: wrap;
  justify-content: flex-start;
  overflow: visible !important;
}

.app-shell:has(#irrigation.active-view) .irrigation-block-metric span {
  flex: 0 0 auto;
  max-width: none;
  overflow: visible;
  text-overflow: clip;
}

@media (max-width: 760px) {
  .app-shell:has(#irrigation.active-view) .irrigation-panel {
    --irrigation-block-col: clamp(230px, 68vw, 300px);
    --irrigation-day-size: 23px;
    --irrigation-total-col: 46px;
    --irrigation-reposition-col: 54px;
    --irrigation-diff-hours-col: 48px;
    --irrigation-diff-reposition-col: 52px;
  }
}

@media (max-width: 430px) {
  .app-shell:has(#irrigation.active-view) .irrigation-panel {
    --irrigation-block-col: 230px;
    --irrigation-day-size: 22px;
  }
}

.dispatch-product-identity span,
.dispatch-product-formula small {
  color: #60746b;
  font-size: 0.7rem;
}

.dispatch-product-formula strong {
  color: #17654f;
  font-size: 0.74rem;
  line-height: 1.25;
}

.dispatch-product-calc-row.is-manual .dispatch-product-formula::after {
  content: "Cantidad editada";
  width: fit-content;
  border-radius: 999px;
  padding: 2px 6px;
  background: #fff0cf;
  color: #8b5700;
  font-size: 0.64rem;
  font-weight: 800;
}

.dispatch-product-total {
  display: grid;
  gap: 4px;
  min-width: 0;
  color: #52665d;
  font-size: 0.7rem;
}

.dispatch-product-input-wrap {
  display: grid;
  grid-template-columns: minmax(85px, 1fr) auto;
  align-items: center;
  overflow: hidden;
  border: 1px solid #9fc5b7;
  border-radius: 5px;
  background: #eef8f3;
}

.dispatch-product-input-wrap input {
  min-width: 0;
  height: 36px;
  border: 0;
  background: transparent;
  color: #124b3b;
  font-weight: 850;
}

.dispatch-product-input-wrap b {
  padding: 0 8px;
  color: #3f6557;
  font-size: 0.72rem;
}

.dispatch-use-calculation {
  min-height: 36px;
  white-space: nowrap;
}

@media (max-width: 900px) {
  .dispatch-product-calc-row {
    grid-template-columns: 1fr 1fr;
  }

  .dispatch-product-identity,
  .dispatch-product-formula {
    grid-column: 1 / -1;
  }
}

@media (max-width: 560px) {
  .dispatch-product-calculator-head {
    align-items: stretch;
    flex-direction: column;
  }

  .dispatch-product-calc-row {
    grid-template-columns: 1fr;
  }

  .dispatch-product-identity,
  .dispatch-product-formula {
    grid-column: auto;
  }

  .dispatch-use-calculation {
    width: 100%;
  }
}

/* Login y registro: acceso corporativo AgroCore */
#authGate.auth-gate {
  padding: clamp(14px, 2.6vw, 28px);
  background:
    linear-gradient(120deg, rgba(3, 18, 29, 0.82), rgba(9, 66, 47, 0.78) 48%, rgba(5, 24, 35, 0.7)),
    url("fondo.JPEG") center / cover no-repeat;
}

#authGate .auth-card {
  width: min(1020px, calc(100vw - 28px));
  max-height: min(760px, calc(100vh - 28px));
  display: grid;
  grid-template-columns: minmax(300px, 0.9fr) minmax(390px, 1.1fr);
  gap: 0;
  padding: 0;
  overflow: hidden auto;
  border: 1px solid rgba(255, 255, 255, 0.34);
  border-radius: 22px;
  background: linear-gradient(90deg, rgba(7, 40, 29, 0.95) 0 38%, rgba(255, 255, 255, 0.98) 38% 100%);
  box-shadow: 0 34px 92px rgba(1, 16, 27, 0.46);
}

#authGate .auth-brand,
#authGate .auth-copy {
  grid-column: 1;
}

#authGate .auth-brand {
  margin: 28px 28px 0;
  color: #ffffff;
}

#authGate .auth-brand strong {
  color: #ffffff;
}

#authGate .auth-brand span {
  color: rgba(235, 251, 241, 0.76);
}

#authGate .auth-tabs,
#authGate .auth-status,
#authGate .auth-pane,
#authGate .auth-privacy {
  grid-column: 2;
  width: auto;
  margin-inline: 30px;
}

#authGate .auth-tabs {
  align-self: end;
  margin-top: 30px;
  padding: 5px;
  gap: 5px;
  border: 1px solid rgba(31, 111, 74, 0.1);
  border-radius: 14px;
  background: #edf5f1;
}

#authGate .auth-tabs button {
  min-height: 38px;
  border-radius: 10px;
  color: #5b7068;
  cursor: pointer;
}

#authGate .auth-tabs button.active {
  color: #084532;
  background: #ffffff;
  box-shadow: 0 8px 18px rgba(8, 55, 39, 0.1);
}

#authGate .auth-status {
  min-height: 0;
  margin-top: 10px;
  padding: 9px 11px;
  border: 1px solid rgba(31, 111, 74, 0.13);
  border-left: 4px solid #1f6f4a;
  border-radius: 10px;
  background: #f4fbf7;
  color: #274c3e;
  font-size: 0.76rem;
  font-weight: 850;
}

#authGate .auth-status.error {
  border-color: rgba(180, 35, 24, 0.14);
  border-left-color: #b42318;
  background: #fff3f1;
}

#authGate .auth-status.success {
  border-color: rgba(15, 159, 110, 0.16);
  border-left-color: #0f9f6e;
  background: #edf9f2;
}

#authGate .auth-status:empty {
  display: none;
}

#authGate .auth-pane {
  margin-top: 14px;
}

#authGate .active-auth-pane {
  gap: 12px;
}

#authGate .auth-pane label {
  display: grid;
  gap: 5px;
  color: #315246;
  font-size: 0.74rem;
  font-weight: 950;
}

#authGate .auth-pane input,
#authGate .auth-pane select {
  width: 100%;
  min-height: 40px;
  border: 1px solid #cfe0d9;
  border-radius: 11px;
  padding: 9px 10px;
  background: #fbfefd;
  color: #10251f;
  font-size: 0.86rem;
  font-weight: 760;
  outline: none;
  transition: border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
}

#authGate .auth-pane input:focus,
#authGate .auth-pane select:focus {
  border-color: #1f8f62;
  background: #ffffff;
  box-shadow: 0 0 0 3px rgba(31, 143, 98, 0.12);
}

#authGate #gateRegisterForm .form-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

#authGate #gateRegisterForm .full {
  grid-column: 1 / -1;
}

#authGate .auth-submit,
#authGate #gateLoginButton,
#authGate #gateRegisterButton,
#authGate #gateRecoverButton,
#authGate #gateResetPasswordButton {
  min-height: 42px;
  border-radius: 12px;
  font-size: 0.9rem;
  box-shadow: 0 12px 24px rgba(9, 72, 50, 0.18);
}

#authGate .link-button {
  justify-self: center;
  width: max-content;
  padding: 3px 0;
  color: #0a6046;
  font-size: 0.76rem;
}

#authGate .auth-inline-actions {
  grid-template-columns: minmax(0, 0.86fr) minmax(0, 1.14fr);
  gap: 8px;
}

#authGate .password-rules {
  margin: -2px 0 2px;
}

#authGate .auth-privacy {
  margin-top: 12px;
  margin-bottom: 26px;
  padding-top: 11px;
}

@media (max-width: 820px) {
  #authGate.auth-gate {
    align-items: start;
    overflow-y: auto;
    padding: max(12px, env(safe-area-inset-top)) 12px 18px;
  }

  #authGate .auth-card {
    width: min(100%, 460px);
    max-height: none;
    grid-template-columns: 1fr;
    background: rgba(255, 255, 255, 0.98);
  }

  #authGate .auth-brand,
  #authGate .auth-copy,
  #authGate .auth-tabs,
  #authGate .auth-status,
  #authGate .auth-pane,
  #authGate .auth-privacy {
    grid-column: 1;
    margin-inline: 16px;
  }

  #authGate .auth-brand {
    margin-top: 16px;
    color: #0c3226;
  }

  #authGate .auth-brand strong {
    color: #0c3226;
  }

  #authGate .auth-brand span {
    color: #617168;
  }

  #authGate .auth-copy {
    min-height: auto;
    padding: 16px 0 12px;
  }

  #authGate .auth-copy h1 {
    max-width: none;
    color: #0c3226;
    font-size: 1.5rem;
  }

  #authGate .auth-copy p {
    max-width: none;
    color: #50645c;
  }

  #authGate .auth-security-list {
    grid-template-columns: 1fr;
  }

  #authGate .auth-security-list span,
  #authGate .auth-trust-strip span {
    border-color: rgba(31, 111, 74, 0.14);
    background: #f1f8f4;
  }

  #authGate .auth-security-list strong {
    color: #173925;
  }

  #authGate .auth-security-list small,
  #authGate .auth-trust-strip span {
    color: #607168;
  }

  #authGate .auth-tabs {
    margin-top: 0;
  }

  #authGate #gateRegisterForm .form-grid {
    grid-template-columns: 1fr;
  }
}

/* Ajuste compacto: menos espacio muerto en login/registro */
#authGate .auth-card {
  width: min(880px, calc(100vw - 28px));
  max-height: calc(100vh - 28px);
  grid-template-columns: minmax(250px, 0.72fr) minmax(430px, 1.28fr);
  grid-template-rows: auto auto minmax(0, auto) auto;
  align-content: start;
  align-items: start;
  background: linear-gradient(90deg, rgba(7, 40, 29, 0.96) 0 34%, rgba(255, 255, 255, 0.985) 34% 100%);
}

#authGate .auth-brand {
  grid-row: 1;
  margin: 20px 22px 0;
}

#authGate .auth-brand .brand-mark {
  width: 40px;
  height: 40px;
  border-radius: 12px;
}

#authGate .auth-brand strong {
  font-size: 0.9rem;
  line-height: 1.05;
}

#authGate .auth-brand span {
  font-size: 0.68rem;
}

#authGate .auth-copy {
  grid-row: 2 / 5;
  align-content: end;
  min-height: 0;
  padding: 18px 22px 24px;
  gap: 0;
}

#authGate .auth-copy h1 {
  max-width: 7.8em;
  font-size: clamp(1.65rem, 2.5vw, 2.35rem);
  line-height: 0.98;
}

#authGate .auth-module-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

#authGate .auth-module-chip {
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  min-height: 48px;
  padding: 9px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.09);
  color: #ecfff4;
}

#authGate .auth-module-chip svg {
  width: 24px;
  height: 24px;
  color: #bff2d3;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
  fill: none;
}

#authGate .auth-module-chip strong {
  overflow: hidden;
  color: #ffffff;
  font-size: 0.72rem;
  font-weight: 950;
  line-height: 1.05;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#authGate .auth-module-chip:last-child {
  grid-column: 1 / -1;
}

#authGate .auth-copy p {
  display: none;
  max-width: 28ch;
  font-size: 0.78rem;
  line-height: 1.28;
}

#authGate .auth-security-list,
#authGate .auth-trust-strip {
  display: none;
}

#authGate .auth-security-list {
  gap: 6px;
  margin-top: 2px;
}

#authGate .auth-security-list span {
  grid-template-columns: minmax(82px, auto) minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  padding: 7px 9px;
  border-radius: 10px;
}

#authGate .auth-security-list strong {
  font-size: 0.7rem;
}

#authGate .auth-security-list small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.62rem;
}

#authGate .auth-trust-strip {
  gap: 5px;
  margin-top: 2px;
}

#authGate .auth-trust-strip span {
  padding: 4px 7px;
  font-size: 0.62rem;
}

#authGate .auth-tabs,
#authGate .auth-status,
#authGate .auth-pane,
#authGate .auth-privacy {
  margin-inline: 24px;
}

#authGate .auth-tabs {
  grid-row: 1;
  margin-top: 22px;
  padding: 4px;
}

#authGate .auth-tabs button {
  min-height: 34px;
  font-size: 0.8rem;
}

#authGate .auth-status {
  grid-row: 2;
  margin-top: 8px;
  padding: 7px 10px;
  font-size: 0.72rem;
}

#authGate .auth-pane {
  grid-row: 3;
  margin-top: 10px;
}

#authGate .active-auth-pane {
  gap: 9px;
}

#authGate .auth-pane-head {
  padding: 8px 10px;
  border-radius: 10px;
}

#authGate .auth-pane-head strong {
  font-size: 0.86rem;
}

#authGate .auth-pane-head span {
  font-size: 0.68rem;
}

#authGate .auth-pane label {
  gap: 4px;
  font-size: 0.69rem;
}

#authGate .auth-pane input,
#authGate .auth-pane select {
  min-height: 36px;
  border-radius: 9px;
  padding: 7px 9px;
  font-size: 0.8rem;
}

#authGate #gateRegisterForm .form-grid {
  gap: 8px;
}

#authGate #gateLoginButton,
#authGate #gateRegisterButton,
#authGate #gateRecoverButton,
#authGate #gateResetPasswordButton {
  min-height: 38px;
  border-radius: 10px;
  font-size: 0.84rem;
}

#authGate .link-button {
  font-size: 0.7rem;
}

#authGate .password-rules {
  gap: 4px;
  margin: -1px 0 0;
}

#authGate .password-rules span {
  padding: 3px 6px;
  font-size: 0.6rem;
}

#authGate .auth-privacy {
  grid-row: 4;
  margin-top: 9px;
  margin-bottom: 18px;
  padding-top: 8px;
  font-size: 0.66rem;
}

@media (max-width: 820px) {
  #authGate .auth-card {
    width: min(100%, 430px);
    max-height: none;
    grid-template-columns: 1fr;
    grid-template-rows: none;
    background: rgba(255, 255, 255, 0.985);
  }

  #authGate .auth-brand,
  #authGate .auth-copy,
  #authGate .auth-tabs,
  #authGate .auth-status,
  #authGate .auth-pane,
  #authGate .auth-privacy {
    margin-inline: 14px;
    grid-row: auto;
  }

  #authGate .auth-copy {
    padding: 12px 0 8px;
    gap: 8px;
  }

  #authGate .auth-copy h1 {
    font-size: 1.32rem;
  }

  #authGate .auth-copy p {
    font-size: 0.76rem;
  }

  #authGate .auth-module-grid {
    grid-template-columns: repeat(5, minmax(48px, 1fr));
    gap: 6px;
  }

  #authGate .auth-module-chip,
  #authGate .auth-module-chip:last-child {
    grid-column: auto;
  }

  #authGate .auth-module-chip {
    grid-template-columns: 1fr;
    justify-items: center;
    min-height: 54px;
    padding: 7px 5px;
    border-color: rgba(31, 111, 74, 0.14);
    background: #f1f8f4;
  }

  #authGate .auth-module-chip svg {
    color: #0a6046;
  }

  #authGate .auth-module-chip strong {
    max-width: 100%;
    color: #173925;
    font-size: 0.55rem;
    text-align: center;
  }

  #authGate .auth-security-list span {
    grid-template-columns: minmax(74px, auto) minmax(0, 1fr);
  }
}

/* Responsive V2: tablet, telefono y pantallas amplias sin cambiar flujos ni datos. */
@media (hover: none) {
  .panel:hover,
  .kpi:hover,
  .chart-panel:hover {
    transform: none;
    box-shadow: var(--shadow);
  }
}

@media (min-width: 1680px) {
  .app-shell {
    grid-template-columns: 248px minmax(0, 1fr);
  }

  .main {
    padding: 12px 18px;
  }

  .kpi-grid,
  .weather-kpi-grid {
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  }

  .harvest-dashboard-grid,
  .harvest-analytics-grid,
  .irrigation-balance-charts,
  .irrigation-bandeja-charts,
  .dashboard-grid,
  .application-dashboard-grid {
    gap: 16px;
  }

  .harvest-map,
  .pest-monitoring-map {
    min-height: min(74dvh, 780px);
  }

  .harvest-export-percent-list,
  .harvest-export-variety-percent-list {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  }

  .fertilizer-tank-grid {
    grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
  }
}

@media (max-width: 1180px) {
  .app-shell {
    grid-template-columns: 218px minmax(0, 1fr);
  }

  .main {
    padding-inline: 8px;
  }

  .kpi-grid,
  .weather-kpi-grid,
  .program-kpis,
  .harvest-dashboard-grid,
  .application-dashboard-grid,
  .dashboard-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .harvest-export-filter-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .harvest-export-years-field {
    grid-column: 1 / 3;
  }

  .harvest-export-filter-grid > button {
    width: 100%;
  }

  .harvest-export-comparison-list,
  .harvest-export-variety-percent-list,
  .harvest-export-percent-list {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  }

  .irrigation-balance-charts,
  .irrigation-bandeja-charts {
    grid-template-columns: 1fr;
  }

  .pest-monitoring-layout {
    grid-template-columns: minmax(0, 1fr);
    height: auto;
  }

  .pest-map-panel {
    min-height: clamp(430px, 58dvh, 620px);
  }

  .pest-ranking-panel {
    max-height: 380px;
  }
}

@media (max-width: 900px) {
  html,
  body {
    max-width: 100%;
    overflow-x: hidden;
  }

  .app-shell:not(.locked) {
    display: block;
    min-height: 100dvh;
  }

  .sidebar {
    position: sticky;
    top: 0;
    z-index: 190;
    height: auto;
    min-height: 0;
    padding: 8px max(10px, env(safe-area-inset-left)) 8px max(10px, env(safe-area-inset-right));
    border-radius: 0 0 14px 14px;
    box-shadow: 0 12px 28px rgba(5, 48, 39, 0.22);
  }

  .brand {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr);
    gap: 8px;
    margin-bottom: 5px;
  }

  .brand-mark {
    width: 28px;
    height: 28px;
    border-radius: 8px;
  }

  .brand strong {
    font-size: 0.78rem;
    line-height: 1.05;
  }

  .brand span,
  .brand small,
  .sync-box {
    display: none;
  }

  .nav {
    display: flex;
    width: 100%;
    max-width: 100%;
    gap: 6px;
    overflow-x: auto;
    overflow-y: hidden;
    padding: 2px 0 4px;
    scrollbar-width: none;
    scroll-snap-type: x proximity;
  }

  .nav::-webkit-scrollbar {
    display: none;
  }

  .nav-group {
    display: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
  }

  .nav-group.open {
    display: contents !important;
  }

  .nav-group-toggle,
  .nav-item,
  .nav-group .nav-item,
  .nav > .nav-item {
    flex: 0 0 auto;
    width: auto;
    min-width: max-content;
    max-width: 158px;
    min-height: 30px;
    padding: 5px 10px;
    border-radius: 999px;
    font-size: 0.72rem;
    line-height: 1;
    white-space: nowrap;
    scroll-snap-align: start;
  }

  .nav-group .nav-item {
    background: rgba(255, 255, 255, 0.10);
    color: #e5fbef;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.08);
  }

  .nav-group .nav-item.active,
  .nav > .nav-item.active {
    background: #e7fff1;
    color: #064e3b;
    box-shadow: inset 0 -2px 0 var(--accent);
  }

  .main {
    width: 100%;
    max-width: 100%;
    padding: 8px 8px calc(14px + env(safe-area-inset-bottom));
  }

  .topbar {
    position: sticky;
    top: clamp(88px, 10.5svh, 104px);
    z-index: 100;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 6px;
    align-items: center;
    min-height: 34px;
    margin-bottom: 8px;
    padding: 6px 8px;
    border: 1px solid rgba(13, 74, 57, 0.10);
    border-radius: 11px;
    background: rgba(246, 251, 248, 0.92);
    backdrop-filter: blur(10px);
  }

  .topbar .eyebrow {
    display: none;
  }

  .topbar h1 {
    overflow: hidden;
    margin: 0;
    font-size: 0.94rem;
    line-height: 1.1;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .topbar .top-actions,
  .panel-header .top-actions,
  .card-actions,
  .wide-actions {
    flex-wrap: nowrap;
    max-width: 100%;
    overflow-x: auto;
    scrollbar-width: none;
  }

  .topbar .top-actions::-webkit-scrollbar,
  .panel-header .top-actions::-webkit-scrollbar,
  .card-actions::-webkit-scrollbar,
  .wide-actions::-webkit-scrollbar {
    display: none;
  }

  .panel,
  .kpi,
  .chart-panel,
  .order-card,
  .execution-card,
  .irrigation-report-panel {
    min-width: 0;
    border-radius: 9px;
  }

  .panel-header,
  .gantt-head,
  .warehouse-panel-header,
  .irrigation-panel-header,
  .calicatas-panel-header,
  .fertilizer-toolbar {
    display: grid;
    grid-template-columns: 1fr;
    align-items: start;
    gap: 7px;
  }

  .panel-header p,
  .gantt-head p,
  .warehouse-panel-header p,
  .irrigation-panel-header p,
  .calicatas-panel-header p {
    max-width: 68ch;
    line-height: 1.25;
  }

  .kpi-grid,
  .weather-kpi-grid,
  .program-kpis,
  .harvest-dashboard-grid,
  .application-dashboard-grid,
  .dashboard-grid,
  .harvest-analytics-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .program-filters,
  .irrigation-filters,
  .calicatas-filters,
  .harvest-filters,
  .gantt-controls,
  .report-filters,
  .warehouse-filters,
  .irrigation-local-filters,
  .irrigation-balance-toolbar {
    display: flex;
    width: 100%;
    max-width: 100%;
    gap: 6px;
    align-items: end;
    overflow-x: auto;
    overflow-y: hidden;
    padding-bottom: 2px;
    scrollbar-width: thin;
  }

  .program-filters > label,
  .irrigation-filters > label,
  .calicatas-filters > label,
  .harvest-filters > label,
  .gantt-controls > label,
  .report-filters > label,
  .warehouse-filters > label,
  .irrigation-local-filters > label,
  .irrigation-balance-toolbar > label,
  .inline-filter,
  .gantt-species-filter {
    flex: 0 0 clamp(132px, 30vw, 196px);
    min-width: 0;
  }

  .table-wrap,
  .compact-table,
  .fertilizer-table-wrap,
  .harvest-analytics-table,
  .harvest-export-table-wrap,
  .harvest-calibre-table-wrap,
  .official-products-table,
  .pest-monthly-table-wrap {
    max-width: 100%;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-gutter: stable;
  }

  .harvest-map {
    min-height: clamp(420px, 62dvh, 640px);
  }

  .harvest-map-info {
    width: min(280px, calc(100vw - 42px));
  }

  .harvest-map-info-grid {
    grid-template-columns: 1fr 1fr;
  }

  .irrigation-calicatas-layout {
    grid-template-columns: 1fr;
  }

  .irrigation-calicata-map,
  .irrigation-calicata-history {
    min-height: 320px;
  }

  .fertilizer-tank-grid {
    grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
  }

  .fertilizer-table {
    min-width: 900px;
  }
}

@media (max-width: 640px) {
  .main {
    padding-inline: 6px;
  }

  .topbar {
    top: clamp(88px, 10.5svh, 98px);
    min-height: 30px;
    padding: 4px 6px;
  }

  .topbar h1 {
    font-size: 0.86rem;
  }

  .user-chip {
    max-width: 118px;
    min-height: 24px;
    padding: 3px 7px;
    overflow: hidden;
    font-size: 0.62rem;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .panel,
  .order-card,
  .gantt-panel,
  .chart-panel,
  .irrigation-report-panel,
  .harvest-analytics-card,
  .harvest-export-filter-panel {
    padding: 9px;
  }

  .panel-header,
  .gantt-head,
  .warehouse-panel-header,
  .irrigation-panel-header,
  .calicatas-panel-header {
    padding: 6px;
  }

  .panel-header p,
  .gantt-head p,
  .warehouse-panel-header p,
  .irrigation-panel-header p,
  .calicatas-panel-header p {
    display: none;
  }

  .kpi-grid,
  .weather-kpi-grid,
  .program-kpis,
  .harvest-dashboard-grid,
  .application-dashboard-grid,
  .dashboard-grid,
  .harvest-analytics-grid,
  .irrigation-balance-charts,
  .irrigation-bandeja-charts {
    grid-template-columns: 1fr;
  }

  .weather-station-header-actions,
  .weather-view-switch,
  .weather-station-filters,
  .harvest-export-filter-grid {
    grid-template-columns: 1fr;
  }

  .harvest-export-years-field,
  .harvest-export-filter-grid > button {
    grid-column: auto;
  }

  .harvest-export-filter-title,
  .harvest-export-variety-year-block > header,
  .harvest-export-calibre-header,
  .harvest-export-year-row div {
    display: grid;
    grid-template-columns: 1fr;
    align-items: start;
  }

  .harvest-year-checks {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 2px;
  }

  .harvest-export-percent-list,
  .harvest-export-variety-percent-list,
  .harvest-export-comparison-list {
    grid-template-columns: 1fr;
  }

  .harvest-export-comparison-row > div {
    min-height: 96px;
  }

  .harvest-export-comparison-row span {
    grid-template-rows: auto 68px auto;
  }

  .harvest-export-main-table {
    min-width: 1060px !important;
  }

  .harvest-export-calibre-table {
    font-size: 0.64rem;
  }

  .harvest-map {
    min-height: min(62dvh, 520px);
  }

  .harvest-map-info {
    width: min(260px, calc(100vw - 34px));
    gap: 6px;
  }

  .harvest-map-info-grid {
    grid-template-columns: 1fr;
  }

  .pest-filter-bar {
    grid-template-columns: 1fr 1fr;
  }

  .pest-map-legend {
    right: 6px;
    bottom: 14px;
    min-width: min(218px, calc(100% - 12px));
  }

  .pest-monitoring-map {
    min-height: 380px;
  }

  .fertilizer-toolbar {
    padding: 9px;
  }

  .fertilizer-filters label,
  .fertilizer-filters button {
    flex: 0 0 clamp(140px, 54vw, 210px);
    width: auto;
  }

  .fertilizer-tank-grid {
    grid-template-columns: 1fr;
  }

  .modal,
  dialog {
    width: min(96vw, 520px) !important;
    max-width: calc(100vw - 14px) !important;
  }

  .modal-body,
  .dialog-card,
  .irrigation-program-dialog,
  .irrigation-observation-dialog {
    max-height: calc(100dvh - 18px) !important;
    overflow: auto !important;
  }
}

@media (max-width: 430px) {
  .nav-group-toggle,
  .nav-item,
  .nav-group .nav-item,
  .nav > .nav-item {
    max-width: 136px;
    min-height: 28px;
    padding: 4px 8px;
    font-size: 0.67rem;
  }

  .program-filters > label,
  .irrigation-filters > label,
  .calicatas-filters > label,
  .harvest-filters > label,
  .gantt-controls > label,
  .report-filters > label,
  .warehouse-filters > label,
  .irrigation-local-filters > label,
  .irrigation-balance-toolbar > label,
  .fertilizer-filters > label,
  .inline-filter,
  .gantt-species-filter {
    flex-basis: 124px;
  }

  .primary-button,
  .secondary-button,
  .ghost-button,
  .danger-button,
  .link-button {
    min-height: 31px;
    padding: 5px 9px;
    font-size: 0.68rem;
  }

  .weather-kpi,
  .kpi {
    padding: 9px;
  }

  .weather-kpi strong,
  .kpi strong {
    font-size: 1.05rem;
  }

  .harvest-map,
  .pest-monitoring-map {
    min-height: 360px;
  }

  #authGate .auth-module-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #authGate .auth-module-chip {
    min-height: 50px;
  }
}

@media (max-width: 900px) and (orientation: landscape) {
  .sidebar {
    padding-block: 5px;
  }

  .brand {
    display: none;
  }

  .topbar {
    top: 44px;
  }

  .harvest-map,
  .pest-monitoring-map {
    min-height: 70dvh;
  }

  .app-shell:has(#irrigation.active-view) .irrigation-panel-gantt .irrigation-compare-wrap {
    grid-template-rows: auto minmax(260px, 48dvh) auto minmax(260px, 48dvh);
  }
}

/* AgroCore UI 241: navegacion, cuenta y lectura visual de Cosecha. */
:root {
  --orchard-orange: #e47c16;
  --orchard-mandarin: #f3a51b;
  --orchard-avocado: #557b2d;
  --panel-line: #c7d9d2;
  --panel-shadow: 0 7px 20px rgba(18, 59, 49, 0.075);
}

body {
  background: #edf4f1;
}

.sidebar {
  border-right: 1px solid rgba(255, 255, 255, 0.09);
  background:
    linear-gradient(180deg, #073f35 0%, #075b47 48%, #073b34 100%);
}

.sidebar .brand {
  padding: 2px 3px 10px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.11);
}

.nav-item,
.nav-group-toggle {
  display: grid;
  grid-template-columns: 23px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  text-align: left;
}

.nav-icon {
  display: grid;
  width: 23px;
  height: 23px;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.08);
  font-size: 0.82rem;
  line-height: 1;
}

.nav-label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nav-sub-dot {
  width: 6px;
  height: 6px;
  margin-left: 7px;
  border-radius: 50%;
  background: rgba(197, 236, 219, 0.72);
}

.nav-group .nav-item.active .nav-sub-dot {
  background: var(--orchard-orange);
  box-shadow: 0 0 0 3px rgba(228, 124, 22, 0.15);
}

.nav-group-toggle::after {
  float: none;
  justify-self: end;
}

.nav-group.open {
  border-left-color: rgba(244, 168, 48, 0.72);
}

.nav > .nav-item.active,
.nav-group .nav-item.active {
  box-shadow: inset 3px 0 0 var(--orchard-orange);
}

.panel,
.chart-panel,
.kpi,
.irrigation-report-panel {
  border-color: var(--panel-line);
  box-shadow: var(--panel-shadow);
  background: #ffffff;
}

.panel-header {
  min-width: 0;
  padding-bottom: 8px;
  border-bottom: 1px solid #deebe6;
}

.panel-header h2 {
  color: #153b31;
}

.user-menu {
  position: relative;
}

.user-chip {
  display: grid;
  grid-template-columns: 30px minmax(90px, 1fr) 16px;
  gap: 7px;
  align-items: center;
  min-height: 38px;
  max-width: 260px;
  border: 1px solid #c4d8d0;
  border-radius: 8px;
  padding: 3px 7px 3px 4px;
  background: #ffffff;
  color: var(--ink);
  box-shadow: 0 4px 13px rgba(16, 66, 53, 0.08);
  cursor: pointer;
  text-align: left;
}

.user-chip:hover,
.user-menu.open .user-chip {
  border-color: #68aa91;
  background: #f7fbf9;
}

.user-avatar,
.account-avatar {
  display: grid;
  place-items: center;
  border-radius: 7px;
  background: linear-gradient(145deg, #08664f, #12a476);
  color: #ffffff;
  font-weight: 950;
}

.user-avatar {
  width: 30px;
  height: 30px;
  font-size: 0.65rem;
}

.user-chip-copy {
  display: grid;
  min-width: 0;
  line-height: 1.05;
}

.user-chip-copy strong,
.user-chip-copy small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.user-chip-copy strong {
  font-size: 0.7rem;
}

.user-chip-copy small {
  margin-top: 3px;
  color: #667d75;
  font-size: 0.58rem;
  font-weight: 800;
}

.user-chevron {
  color: #668078;
  font-size: 0.86rem;
  font-weight: 900;
  transition: transform 160ms ease;
}

.user-menu.open .user-chevron {
  transform: rotate(180deg);
}

.user-menu-panel {
  position: absolute;
  top: calc(100% + 7px);
  right: 0;
  z-index: 1000;
  display: grid;
  width: 215px;
  padding: 6px;
  border: 1px solid #c6d9d1;
  border-radius: 8px;
  background: #ffffff;
  box-shadow: 0 18px 38px rgba(13, 54, 43, 0.18);
}

.user-menu-panel[hidden] {
  display: none;
}

.user-menu-panel button {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: 7px;
  align-items: center;
  min-height: 34px;
  border: 0;
  border-radius: 6px;
  padding: 6px 8px;
  background: transparent;
  color: #173d33;
  font-size: 0.72rem;
  font-weight: 850;
  text-align: left;
  cursor: pointer;
}

.user-menu-panel button:hover {
  background: #edf7f2;
}

.user-menu-panel button:last-child {
  color: #a53027;
}

.modal:has(.account-dialog) {
  width: min(850px, calc(100vw - 24px));
}

.account-dialog {
  max-height: calc(100dvh - 28px);
  overflow: auto;
}

.account-dialog .modal-head > div {
  display: grid;
  gap: 2px;
}

.account-dialog-eyebrow {
  color: var(--brand);
  font-size: 0.62rem;
  font-weight: 950;
  text-transform: uppercase;
}

.account-identity {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  gap: 11px;
  align-items: center;
  padding: 10px;
  border: 1px solid #c9ddd4;
  border-radius: 8px;
  background: #f3f9f6;
}

.account-avatar {
  width: 48px;
  height: 48px;
  font-size: 0.9rem;
}

.account-identity div {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.account-identity strong,
.account-identity span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.account-identity strong {
  font-size: 0.95rem;
}

.account-identity span {
  color: var(--muted);
  font-size: 0.7rem;
}

.account-identity em {
  padding: 4px 8px;
  border: 1px solid #b9d8ca;
  border-radius: 999px;
  background: #e4f4ec;
  color: #0a684e;
  font-size: 0.68rem;
  font-style: normal;
  font-weight: 950;
}

.account-dialog-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(250px, 0.75fr);
  gap: 10px;
}

.account-section {
  display: grid;
  gap: 9px;
  align-content: start;
  padding: 11px;
  border: 1px solid #d3e2dc;
  border-radius: 8px;
  background: #ffffff;
}

.account-section-head {
  display: grid;
  gap: 2px;
  padding-bottom: 7px;
  border-bottom: 1px solid #e1ebe7;
}

.account-section-head strong {
  color: #143e33;
  font-size: 0.82rem;
}

.account-section-head span {
  color: var(--muted);
  font-size: 0.65rem;
}

.account-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.account-form-grid .full {
  grid-column: 1 / -1;
}

.account-section label {
  display: grid;
  gap: 3px;
  color: #536c64;
  font-size: 0.64rem;
  font-weight: 900;
}

.account-section input {
  width: 100%;
  min-height: 34px;
  border: 1px solid #c9dcd4;
  border-radius: 6px;
  padding: 6px 8px;
  background: #ffffff;
  color: var(--ink);
  font-size: 0.75rem;
  font-weight: 750;
}

.account-section input[readonly] {
  background: #f2f6f4;
  color: #63756f;
}

.account-save-button {
  justify-self: end;
  min-height: 34px;
}

.harvest-filter-shell,
.harvest-export-filter-panel {
  display: grid;
  grid-template-columns: repeat(4, minmax(118px, 0.72fr)) minmax(230px, 1.35fr) auto;
  gap: 7px;
  align-items: end;
  padding: 8px;
  border: 1px solid #ccdcd6;
  border-radius: 8px;
  background: #f7faf8;
}

.harvest-operational-filters {
  grid-template-columns: minmax(250px, 1.35fr) repeat(3, minmax(125px, 0.72fr)) auto;
}

.harvest-filter-shell > label,
.harvest-export-filter-grid > label,
.harvest-export-years-field {
  display: grid;
  gap: 3px;
  min-width: 0;
  color: #50685f;
  font-size: 0.61rem;
  font-weight: 950;
  text-transform: uppercase;
}

.harvest-filter-shell select,
.harvest-filter-shell input,
.harvest-export-filter-grid select {
  width: 100%;
  min-height: 31px;
  border: 1px solid #c5d8d0;
  border-radius: 6px;
  background: #ffffff;
  color: var(--ink);
  font-size: 0.7rem;
  font-weight: 850;
}

.harvest-filter-shell > button,
.harvest-export-filter-grid > button {
  justify-self: end;
  min-height: 31px;
}

.harvest-analysis-filters .harvest-year-checks,
.harvest-export-years-field .harvest-year-checks {
  justify-content: flex-end;
}

.harvest-export-filter-panel {
  grid-template-columns: 1fr;
  padding: 8px;
}

.harvest-export-filter-grid {
  grid-template-columns: repeat(3, minmax(122px, 0.72fr)) minmax(250px, 1.35fr) auto;
}

.harvest-species-badge {
  display: grid;
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  place-items: center;
  border: 1px solid rgba(20, 60, 49, 0.12);
  border-radius: 8px;
  font-size: 1.3rem;
  line-height: 1;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.62);
}

.harvest-species-badge.orange {
  background: #fff0dc;
}

.harvest-species-badge.mandarin {
  background: #fff6d8;
  filter: saturate(1.12);
}

.harvest-species-badge.avocado {
  background: #eaf2dc;
}

.harvest-species-badge.other {
  background: #e7f3ed;
}

.harvest-species-badge.compact {
  width: 30px;
  height: 30px;
  border-radius: 7px;
  font-size: 1rem;
}

.harvest-start-variety {
  grid-template-columns: 30px minmax(0, 1fr);
  align-items: center;
}

.harvest-start-variety > div {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.harvest-start-variety > div strong,
.harvest-start-variety > div span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-potrero-species-section > header {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr) auto;
  align-items: center;
  border-color: #bdd8ca;
  background: #edf7f2;
}

.harvest-contractor-ranking-panel {
  display: grid;
  gap: 10px;
}

.harvest-contractor-stack {
  display: grid;
  gap: 12px;
}

.harvest-contractor-species {
  display: grid;
  gap: 8px;
  min-width: 0;
}

.harvest-contractor-species > header {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr);
  gap: 9px;
  align-items: center;
  padding: 7px 9px;
  border-left: 4px solid var(--orchard-orange);
  background: #f1f7f4;
}

.harvest-contractor-species > header div {
  display: grid;
  gap: 1px;
}

.harvest-contractor-species > header strong {
  color: #135846;
  font-size: 0.82rem;
  font-weight: 950;
}

.harvest-contractor-species > header span {
  color: var(--muted);
  font-size: 0.62rem;
  font-weight: 850;
}

.harvest-contractor-variety-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
  gap: 8px;
}

.harvest-contractor-variety-card {
  display: grid;
  gap: 7px;
  min-width: 0;
  padding: 9px;
  border: 1px solid #d2e1db;
  border-radius: 8px;
  background: #ffffff;
}

.harvest-contractor-variety-card h3 {
  margin: 0;
  color: #173e34;
  font-size: 0.78rem;
  font-weight: 950;
}

.harvest-contractor-years {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 7px;
}

.harvest-contractor-year {
  display: grid;
  grid-template-columns: 38px minmax(0, 1fr);
  gap: 6px;
  align-items: start;
  padding-top: 6px;
  border-top: 1px solid #e1ebe7;
}

.harvest-contractor-year > b {
  color: #647970;
  font-size: 0.64rem;
}

.harvest-contractor-year > div {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.harvest-contractor-rank {
  display: grid;
  grid-template-columns: 21px minmax(0, 1fr) auto auto;
  gap: 5px;
  align-items: center;
  min-width: 0;
  padding: 4px 5px;
  border-radius: 6px;
  background: #f5f8f6;
}

.harvest-contractor-rank em {
  display: grid;
  width: 20px;
  height: 20px;
  place-items: center;
  border-radius: 50%;
  color: #ffffff;
  font-size: 0.58rem;
  font-style: normal;
  font-weight: 950;
}

.harvest-contractor-rank.rank-1 em { background: #c88b09; }
.harvest-contractor-rank.rank-2 em { background: #7b8790; }
.harvest-contractor-rank.rank-3 em { background: #a35e2a; }

.harvest-contractor-rank strong,
.harvest-contractor-rank i,
.harvest-contractor-rank small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-contractor-rank strong {
  font-size: 0.66rem;
}

.harvest-contractor-rank i,
.harvest-contractor-rank small {
  color: #5d7069;
  font-size: 0.58rem;
  font-style: normal;
  font-weight: 900;
}

@media (max-width: 1100px) {
  .harvest-filter-shell,
  .harvest-operational-filters,
  .harvest-export-filter-grid {
    grid-template-columns: repeat(3, minmax(130px, 1fr));
  }

  .harvest-analysis-filters .harvest-year-checks,
  .harvest-export-years-field {
    grid-column: span 2;
    justify-content: start;
  }
}

@media (max-width: 760px) {
  .nav-item,
  .nav-group-toggle,
  .nav-group .nav-item,
  .nav > .nav-item {
    display: inline-grid !important;
    grid-template-columns: auto auto auto !important;
    gap: 5px !important;
  }

  .nav-icon {
    width: 20px;
    height: 20px;
    border-radius: 5px;
    font-size: 0.68rem;
  }

  .nav-sub-dot {
    width: 5px;
    height: 5px;
    margin-left: 2px;
  }

  .user-chip {
    grid-template-columns: 27px minmax(58px, 92px) 12px;
    min-height: 31px;
    max-width: 145px;
    padding-right: 5px;
  }

  .user-avatar {
    width: 27px;
    height: 27px;
  }

  .user-chip-copy strong {
    font-size: 0.61rem;
  }

  .user-chip-copy small {
    font-size: 0.52rem;
  }

  .user-menu-panel {
    position: fixed;
    top: 106px;
    right: 8px;
    width: min(230px, calc(100vw - 16px));
  }

  .account-dialog-grid,
  .account-form-grid {
    grid-template-columns: 1fr;
  }

  .account-form-grid .full {
    grid-column: auto;
  }

  .account-identity {
    grid-template-columns: 42px minmax(0, 1fr);
  }

  .account-avatar {
    width: 42px;
    height: 42px;
  }

  .account-identity em {
    grid-column: 2;
    justify-self: start;
  }

  .harvest-filter-shell,
  .harvest-operational-filters,
  .harvest-export-filter-grid {
    display: flex !important;
    align-items: end;
    gap: 6px;
    overflow-x: auto;
    padding: 6px !important;
  }

  .harvest-filter-shell > label,
  .harvest-export-filter-grid > label {
    flex: 0 0 138px;
  }

  .harvest-operational-filters .harvest-date-range {
    flex-basis: 238px;
  }

  .harvest-analysis-filters .harvest-year-checks,
  .harvest-export-years-field {
    flex: 0 0 auto;
    grid-column: auto;
    min-width: max-content;
  }

  .harvest-filter-shell > button,
  .harvest-export-filter-grid > button {
    flex: 0 0 auto;
  }

  .harvest-contractor-variety-grid,
  .harvest-contractor-years {
    grid-template-columns: 1fr;
  }

  .harvest-contractor-rank {
    grid-template-columns: 21px minmax(0, 1fr) auto;
  }

  .harvest-contractor-rank small {
    display: none;
  }
}

@media (max-width: 980px) {
  .satellite-toolbar,
  .satellite-layout {
    grid-template-columns: 1fr;
  }

  .satellite-controls {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .satellite-mosaic-control {
    grid-column: 1 / -1;
  }

  .satellite-map-type-control,
  .satellite-layer-style-control,
  .satellite-use-chip {
    grid-column: 1 / -1;
  }

  .satellite-use-chip {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .satellite-use-chip code {
    grid-column: 1 / -1;
    justify-self: start;
    max-width: 100%;
  }

  .satellite-controls button {
    grid-column: 1 / -1;
  }

  .satellite-summary-grid,
  .satellite-index-grid,
  .satellite-source-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .satellite-map,
  .satellite-scene-list {
    min-height: 360px;
    max-height: 54svh;
  }

  .satellite-decision-legend {
    position: static;
    width: 100%;
    margin-top: 6px;
  }

  .satellite-decision-legend > div {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .satellite-processing-warning {
    position: static;
    max-width: none;
    margin-top: 6px;
    transform: none;
  }
}

@media (max-width: 560px) {
  .agricultural-map .map-label-potrero-google {
    font-size: 18px;
  }

  .agricultural-map .map-label-block-google {
    font-size: 9px;
  }

  .satellite-controls,
  .satellite-summary-grid,
  .satellite-index-grid,
  .satellite-source-grid {
    grid-template-columns: 1fr;
  }

  .satellite-scene-card {
    grid-template-columns: 76px minmax(0, 1fr);
  }

  .satellite-scene-card img,
  .satellite-scene-thumb {
    width: 76px;
    height: 76px;
  }

  .satellite-scene-title,
  .satellite-scene-actions {
    align-items: flex-start;
    flex-direction: column;
  }

  .satellite-decision-legend > div {
    grid-template-columns: repeat(5, minmax(72px, 1fr));
    overflow-x: auto;
    padding-bottom: 2px;
  }
}

/* Overrides finales UI 242. */
.nav-item,
.nav-group-toggle {
  grid-template-columns: minmax(0, 1fr) auto;
}

.nav-icon,
.nav-sub-dot,
.harvest-species-badge {
  display: none !important;
}

.nav-label,
.user-chip-copy :is(strong, small),
.account-identity :is(strong, span),
.harvest-start-variety > div :is(strong, span),
.harvest-rank-row span,
.harvest-export-comparison-row :is(b, em),
.harvest-export-year-row :is(span, b),
.harvest-export-variety-year-block > header :is(strong, small, b, span) {
  max-width: none;
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.user-menu-panel button {
  display: block;
}

.harvest-start-variety,
.harvest-contractor-species > header {
  grid-template-columns: minmax(0, 1fr);
}

.harvest-potrero-species-section > header {
  grid-template-columns: minmax(0, 1fr) auto;
}

.view.active-view :is(.weather-station-filters, .satellite-toolbar, .program-filters, .gantt-controls, .warehouse-filters, .report-toolbar, .irrigation-balance-toolbar, .irrigation-local-filters, .calicatas-filters, .harvest-filter-shell, .harvest-export-filter-panel, .fertilizer-toolbar, .pest-filter-bar) {
  position: sticky !important;
  top: var(--agrocore-sticky-filter-top) !important;
  z-index: 880;
  border-color: #b9d4c9;
  background: rgba(248, 252, 250, 0.97);
  box-shadow: 0 8px 20px rgba(13, 67, 52, 0.12);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

/* Programa de fertilizantes */
.fertilizer-analysis-shell {
  display: grid;
  gap: 10px;
  min-width: 0;
}

.fertilizer-analysis-toolbar,
.fertilizer-analysis-panel,
.fertilizer-analysis-kpis article {
  border: 1px solid #c8ddd3;
  border-radius: 7px;
  background: #fff;
}

.fertilizer-analysis-toolbar {
  display: grid;
  gap: 9px;
  padding: 10px 12px;
}

.fertilizer-analysis-toolbar > div:first-child {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}

.fertilizer-analysis-toolbar h2,
.fertilizer-analysis-panel h3 {
  margin: 0;
  color: #123d31;
}

.fertilizer-analysis-toolbar h2 { font-size: 1.05rem; }
.fertilizer-analysis-toolbar > div:first-child span,
.fertilizer-analysis-panel header span {
  color: #60796e;
  font-size: 0.7rem;
  font-weight: 750;
}

.fertilizer-analysis-filters {
  display: grid;
  grid-template-columns: repeat(5, minmax(112px, 1fr)) auto;
  align-items: end;
  gap: 7px;
}

.fertilizer-analysis-filters label {
  display: grid;
  gap: 3px;
  min-width: 0;
  color: #49675b;
  font-size: 0.61rem;
  font-weight: 900;
  text-transform: uppercase;
}

.fertilizer-analysis-filters select {
  width: 100%;
  min-width: 0;
  height: 34px;
  padding: 0 8px;
  border: 1px solid #cadbd3;
  border-radius: 6px;
  background: #fff;
  color: #173e32;
  font-size: 0.72rem;
  font-weight: 750;
}

.fertilizer-analysis-unit { height: 34px; }
.fertilizer-analysis-unit button { min-width: 42px; }
.fertilizer-analysis-filters > .secondary-button { height: 34px; padding: 0 12px; }

.fertilizer-analysis-warning {
  padding: 8px 11px;
  border: 1px solid #efc06d;
  border-radius: 6px;
  background: #fff8e9;
  color: #85530a;
  font-size: 0.72rem;
  font-weight: 800;
}

.fertilizer-analysis-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.fertilizer-analysis-kpis article {
  display: grid;
  gap: 3px;
  padding: 9px 11px;
  border-top: 3px solid #28846a;
}

.fertilizer-analysis-kpis article.is-good { border-top-color: #15804f; }
.fertilizer-analysis-kpis article.is-warning { border-top-color: #d58b19; }
.fertilizer-analysis-kpis article.is-low { border-top-color: #c54b42; }
.fertilizer-analysis-kpis article.programmed-kpi { border-top-color: #256bd7; }
.fertilizer-analysis-kpis article.actual-kpi { border-top-color: #178152; }
.fertilizer-analysis-kpis article.is-pending { border-top-color: #d58b19; }
.fertilizer-analysis-kpis article.is-excess { border-top-color: #8f4eb8; }
.fertilizer-analysis-kpis span { color: #61786e; font-size: 0.65rem; font-weight: 800; }
.fertilizer-analysis-kpis strong { color: #143d31; font-size: 1rem; }

.fertilizer-kpi-groups {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 1.25fr) minmax(210px, 0.7fr);
  gap: 8px;
}

.fertilizer-kpi-group {
  min-width: 0;
  border: 1px solid #c8ddd3;
  border-radius: 7px;
  background: #fff;
  overflow: hidden;
}

.fertilizer-kpi-group > header {
  padding: 6px 9px;
  border-bottom: 1px solid #dbe8e2;
  background: #eef7f2;
  color: #204e40;
  font-size: 0.67rem;
  text-transform: uppercase;
}

.fertilizer-kpi-group > div {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.fertilizer-kpi-status > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.fertilizer-kpi-group article {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: baseline;
  gap: 2px 6px;
  min-width: 0;
  padding: 8px 9px;
  border-left: 3px solid #28846a;
  border-right: 1px solid #e2ebe7;
}

.fertilizer-kpi-group article:last-child { border-right: 0; }
.fertilizer-kpi-group article.programmed-kpi { border-left-color: #256bd7; }
.fertilizer-kpi-group article.actual-kpi { border-left-color: #178152; }
.fertilizer-kpi-group article.is-pending { border-left-color: #d58b19; }
.fertilizer-kpi-group article.is-excess { border-left-color: #8f4eb8; }
.fertilizer-kpi-group article.is-good { border-left-color: #15804f; }
.fertilizer-kpi-group article.is-warning { border-left-color: #d58b19; }
.fertilizer-kpi-group article.is-low { border-left-color: #c54b42; }
.fertilizer-kpi-group article span { color: #61786e; font-size: 0.6rem; font-weight: 800; }
.fertilizer-kpi-group article strong { color: #143d31; font-size: 0.9rem; text-align: right; }
.fertilizer-kpi-group article small { grid-column: 1 / -1; color: #71857c; font-size: 0.52rem; text-align: right; }

.fertilizer-season-total-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 2px 4px 0;
}

.fertilizer-season-total-heading h3 { margin: 0; color: #123d31; font-size: 0.9rem; }
.fertilizer-season-total-heading span { color: #60796e; font-size: 0.65rem; font-weight: 800; }
.fertilizer-season-total-heading strong { color: #31594c; font-size: 0.72rem; }

.fertilizer-analysis-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
  gap: 10px;
  min-width: 0;
}

.fertilizer-analysis-panel { min-width: 0; padding: 10px; }
.fertilizer-analysis-panel > header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid #d9e6e0;
}
.fertilizer-analysis-panel h3 { font-size: 0.88rem; }

.fertilizer-product-bars {
  display: grid;
  gap: 7px;
  max-height: 330px;
  padding-top: 8px;
  overflow: auto;
}

.fertilizer-product-bar-row {
  display: grid;
  grid-template-columns: minmax(115px, 0.32fr) minmax(0, 1fr);
  align-items: center;
  gap: 8px;
}

.fertilizer-product-bar-row > strong {
  overflow: hidden;
  color: #244b3f;
  font-size: 0.67rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fertilizer-product-dual-metrics { display: grid; gap: 5px; }
.fertilizer-product-dual-metrics > div {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr);
  align-items: center;
  gap: 6px;
}
.fertilizer-product-dual-metrics > div > span {
  color: #667d73;
  font-size: 0.57rem;
  font-weight: 900;
  text-transform: uppercase;
}

.fertilizer-comparison-bars { display: grid; gap: 2px; }
.fertilizer-comparison-bars > span {
  display: grid;
  grid-template-columns: minmax(2px, var(--bar-width)) auto;
  align-items: center;
  gap: 5px;
  min-height: 12px;
}
.fertilizer-comparison-bars i { height: 7px; border-radius: 2px; }
.fertilizer-comparison-bars b { color: #47655a; font-size: 0.61rem; white-space: nowrap; }
.fertilizer-comparison-bars .is-programmed i,
.fertilizer-month-chart .is-programmed,
.fertilizer-nutrient-bars .is-programmed i { background: #256bd7; }
.fertilizer-comparison-bars .is-actual i,
.fertilizer-month-chart .is-actual,
.fertilizer-nutrient-bars .is-actual i { background: #178152; }

.fertilizer-analysis-legend {
  display: flex;
  justify-content: flex-end;
  gap: 14px;
  min-height: 18px;
  padding: 0 4px;
}

.fertilizer-analysis-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: #48655a;
  font-size: 0.68rem;
  font-weight: 850;
}

.fertilizer-analysis-legend span::before {
  width: 10px;
  height: 10px;
  border-radius: 2px;
  background: #256bd7;
  content: "";
}

.fertilizer-analysis-legend span.is-actual::before { background: #178152; }

.fertilizer-month-panel { padding-bottom: 12px; }

.fertilizer-month-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.fertilizer-month-metric {
  display: inline-flex;
  flex: 0 0 auto;
  padding: 2px;
  border: 1px solid #bfd6cb;
  border-radius: 6px;
  background: #edf5f1;
}

.fertilizer-month-metric button {
  min-height: 28px;
  padding: 0 9px;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: #4d6c60;
  font-size: 0.61rem;
  font-weight: 850;
  cursor: pointer;
}

.fertilizer-month-metric button.active {
  background: #126d52;
  color: #fff;
  box-shadow: 0 1px 3px rgba(18, 70, 55, 0.18);
}

.fertilizer-month-matrix-wrap {
  max-width: 100%;
  max-height: 68vh;
  margin-top: 9px;
  border: 1px solid #d5e3dc;
  border-radius: 6px;
  overflow: auto;
  overscroll-behavior: contain;
}

.fertilizer-month-matrix {
  min-width: max-content;
  border-collapse: separate;
  border-spacing: 0;
  background: #fff;
  font-size: 0.62rem;
}

.fertilizer-month-matrix th,
.fertilizer-month-matrix td {
  min-width: 148px;
  padding: 6px;
  border-right: 1px solid #dce7e2;
  border-bottom: 1px solid #dce7e2;
  vertical-align: top;
}

.fertilizer-month-matrix thead th {
  position: sticky;
  top: 0;
  z-index: 4;
  max-width: 160px;
  background: #eaf4ef;
  color: #244e41;
  font-size: 0.61rem;
  line-height: 1.2;
  text-align: center;
  white-space: normal;
}

.fertilizer-month-matrix .fertilizer-month-axis {
  position: sticky;
  left: 0;
  z-index: 3;
  width: 154px;
  min-width: 154px;
  max-width: 154px;
  background: #f5faf7;
}
.fertilizer-month-matrix thead .fertilizer-month-axis { z-index: 6; background: #dceee5; }
.fertilizer-month-matrix-row.is-expanded .fertilizer-month-axis { background: #e8f5ee; }

.fertilizer-month-axis-heading { display: flex; align-items: center; gap: 7px; }
.fertilizer-month-axis-heading button,
.fertilizer-day-accordion header button {
  display: grid;
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  place-items: center;
  padding: 0;
  border: 1px solid #92bda9;
  border-radius: 50%;
  background: #fff;
  color: #12684d;
  font-size: 0.9rem;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}
.fertilizer-month-axis-heading strong { display: block; color: #18483a; font-size: 0.68rem; text-transform: capitalize; }
.fertilizer-month-axis-heading small { display: block; color: #71847c; font-size: 0.52rem; }

.fertilizer-month-completion { position: relative; display: grid; grid-template-columns: auto 1fr; gap: 1px 6px; margin-top: 7px; }
.fertilizer-month-completion::before {
  grid-column: 1 / -1;
  height: 5px;
  border-radius: 3px;
  background: #dfe9e4;
  content: "";
}
.fertilizer-month-completion > span {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--completion);
  max-width: 100%;
  height: 5px;
  border-radius: 3px;
  background: #178152;
}
.fertilizer-month-completion.is-warning > span { background: #d58b19; }
.fertilizer-month-completion.is-low > span { background: #c54b42; }
.fertilizer-month-completion b { color: #234d40; font-size: 0.62rem; }
.fertilizer-month-completion small { color: #72857d; font-size: 0.49rem; text-align: right; }

.fertilizer-month-product-cell { background: #fff; }
.fertilizer-month-product-cell.is-empty { color: #9aaba4; text-align: center; vertical-align: middle; }
.fertilizer-month-product-cell > div {
  display: grid;
  grid-template-columns: 42px repeat(3, minmax(30px, 1fr));
  align-items: center;
  gap: 3px;
}
.fertilizer-month-product-cell > div + div { margin-top: 4px; }
.fertilizer-month-product-cell > div > span { color: #61776e; font-size: 0.5rem; font-weight: 900; text-transform: uppercase; }
.fertilizer-month-product-cell b { padding: 4px 2px; border-radius: 3px; font-size: 0.55rem; text-align: center; white-space: nowrap; }
.fertilizer-month-product-cell b.is-programmed { background: #e8f0ff; color: #205ab6; }
.fertilizer-month-product-cell b.is-actual { background: #e4f5ed; color: #126b49; }
.fertilizer-month-product-cell b.is-pending { background: #fff3dc; color: #96600b; }
.fertilizer-month-product-cell b.is-excess { background: #f4eafa; color: #78359f; }

.fertilizer-month-detail-row > td { padding: 8px; background: #f3f8f5; }
.fertilizer-day-accordion-list {
  position: sticky;
  left: 8px;
  display: grid;
  gap: 5px;
  width: min(920px, calc(100vw - 250px));
}
.fertilizer-day-accordion { border: 1px solid #d5e4dd; border-radius: 5px; background: #fff; overflow: hidden; }
.fertilizer-day-accordion.is-expanded { border-color: #89b8a4; }
.fertilizer-day-accordion > header {
  display: grid;
  grid-template-columns: auto minmax(150px, 1fr) auto auto;
  align-items: center;
  gap: 9px;
  padding: 6px 8px;
}
.fertilizer-day-accordion > header strong { display: block; color: #204d3e; font-size: 0.64rem; text-transform: capitalize; }
.fertilizer-day-accordion > header small { display: block; color: #72857d; font-size: 0.52rem; }
.fertilizer-day-accordion > header > span { color: #63786f; font-size: 0.55rem; white-space: nowrap; }
.fertilizer-day-accordion > header > span b { color: #173f33; font-size: 0.64rem; }

.fertilizer-day-products { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 5px; padding: 0 8px 8px 41px; }
.fertilizer-day-products > div {
  display: grid;
  grid-template-columns: minmax(100px, 1fr) auto auto auto;
  align-items: center;
  gap: 6px;
  padding: 6px;
  border: 1px solid #e0ebe6;
  border-radius: 4px;
  background: #f8fbf9;
}
.fertilizer-day-products strong { overflow: hidden; color: #234d40; font-size: 0.58rem; text-overflow: ellipsis; white-space: nowrap; }
.fertilizer-day-products span,
.fertilizer-day-products small { color: #647a70; font-size: 0.52rem; white-space: nowrap; }

.fertilizer-month-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
  gap: 8px;
  padding-top: 9px;
}

.fertilizer-month-summary {
  min-width: 0;
  border: 1px solid #d5e4dd;
  border-radius: 6px;
  background: #f9fcfa;
  overflow: hidden;
  transition: border-color 150ms ease, box-shadow 150ms ease;
}

.fertilizer-month-summary.is-expanded {
  border-color: #87b9a5;
  box-shadow: 0 3px 10px rgba(20, 83, 65, 0.09);
}

.fertilizer-month-summary > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 7px 8px;
  border-bottom: 1px solid #e0ebe6;
  background: #eef7f2;
}

.fertilizer-month-summary > header > div { display: flex; align-items: baseline; gap: 7px; min-width: 0; }
.fertilizer-month-summary > header strong { color: #174c3c; font-size: 0.74rem; text-transform: capitalize; }
.fertilizer-month-summary > header small { color: #6c8178; font-size: 0.58rem; font-weight: 750; }
.fertilizer-month-summary > header button {
  display: grid;
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
  place-items: center;
  padding: 0;
  border: 1px solid #9bc6b4;
  border-radius: 50%;
  background: #fff;
  color: #11664c;
  font-size: 1rem;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}

.fertilizer-month-metrics { display: grid; gap: 5px; padding: 7px; }
.fertilizer-month-metrics > div {
  display: grid;
  grid-template-columns: minmax(62px, 0.8fr) repeat(3, minmax(52px, 1fr));
  align-items: stretch;
  gap: 4px;
}
.fertilizer-month-metrics > div > span {
  align-self: center;
  color: #536f64;
  font-size: 0.61rem;
  font-weight: 900;
  text-transform: uppercase;
}
.fertilizer-month-metrics b {
  display: grid;
  gap: 1px;
  min-width: 0;
  padding: 5px 4px;
  border-radius: 4px;
  font-size: 0.69rem;
  text-align: right;
}
.fertilizer-month-metrics b small { overflow: hidden; font-size: 0.48rem; text-overflow: ellipsis; white-space: nowrap; }
.fertilizer-month-metrics b.is-programmed { background: #e8f0ff; color: #205ab6; }
.fertilizer-month-metrics b.is-actual { background: #e4f5ed; color: #126b49; }
.fertilizer-month-metrics b.is-pending { background: #fff3dc; color: #96600b; }
.fertilizer-month-metrics b.is-excess { background: #f4eafa; color: #78359f; }

.fertilizer-month-products {
  display: grid;
  gap: 6px;
  max-height: 360px;
  padding: 0 7px 7px;
  overflow-y: auto;
}

.fertilizer-month-product {
  min-width: 0;
  border: 1px solid #dce8e2;
  border-radius: 5px;
  background: #fff;
  overflow: hidden;
}

.fertilizer-month-product > header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 7px;
  border-bottom: 1px solid #e4ece8;
  background: #f4f9f6;
}
.fertilizer-month-product > header strong {
  overflow: hidden;
  color: #17483a;
  font-size: 0.64rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.fertilizer-month-product > header small { color: #70847b; font-size: 0.54rem; font-weight: 800; white-space: nowrap; }
.fertilizer-month-metrics.is-product-breakdown { padding: 6px; }

.fertilizer-product-days {
  display: grid;
  max-height: 150px;
  overflow-y: auto;
}

.fertilizer-month-day {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 7px;
  padding: 6px;
  border-top: 1px solid #e1ebe6;
}
.fertilizer-month-day > div { min-width: 0; }
.fertilizer-month-day strong { display: block; color: #234d40; font-size: 0.63rem; text-transform: capitalize; }
.fertilizer-month-day small { display: block; overflow: hidden; color: #6b8177; font-size: 0.54rem; text-overflow: ellipsis; white-space: nowrap; }
.fertilizer-month-day > span { color: #60776d; font-size: 0.54rem; white-space: nowrap; }
.fertilizer-month-day > span b { color: #173f33; font-size: 0.63rem; }
.fertilizer-month-no-days { padding: 8px; color: #70847b; font-size: 0.62rem; text-align: center; }

.fertilizer-nutrient-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
  padding-top: 9px;
}

.fertilizer-nutrient-card {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr);
  align-items: center;
  gap: 7px;
  padding: 7px;
  border: 1px solid #d8e6df;
  border-radius: 6px;
  background: #f7fbf9;
}

.fertilizer-nutrient-card > strong {
  color: #173f33;
  font-size: 0.71rem;
}

.fertilizer-nutrient-bars { display: grid; gap: 3px; }
.fertilizer-nutrient-bars > span {
  display: grid;
  grid-template-columns: minmax(2px, var(--bar-width)) auto;
  align-items: center;
  gap: 5px;
  min-height: 12px;
}
.fertilizer-nutrient-bars i { height: 7px; border-radius: 2px; }
.fertilizer-nutrient-bars b { color: #49675c; font-size: 0.61rem; white-space: nowrap; }

.fertilizer-month-chart {
  display: flex;
  align-items: stretch;
  gap: 7px;
  min-height: 265px;
  padding: 12px 2px 0;
  overflow-x: auto;
}
.fertilizer-month-column {
  display: grid;
  grid-template-rows: minmax(180px, 1fr) auto auto;
  gap: 3px;
  min-width: 52px;
  text-align: center;
}
.fertilizer-month-column > div {
  display: flex;
  align-items: end;
  justify-content: center;
  gap: 4px;
  padding: 5px;
  border-radius: 5px;
  background: #f0f6f3;
}
.fertilizer-month-column > div span { width: 15px; min-height: 0; border-radius: 3px 3px 0 0; }
.fertilizer-month-column strong { color: #2d5548; font-size: 0.61rem; text-transform: capitalize; white-space: nowrap; }
.fertilizer-month-column small { color: #6a8077; font-size: 0.56rem; font-weight: 750; }

.fertilizer-analysis-table-wrap {
  max-height: 420px;
  overflow: auto;
}
.fertilizer-analysis-table-wrap table { width: 100%; border-collapse: collapse; font-size: 0.67rem; }
.fertilizer-analysis-table-wrap th {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 7px 6px;
  background: #eaf4ef;
  color: #31594c;
  text-align: left;
  white-space: nowrap;
}
.fertilizer-analysis-table-wrap td { padding: 6px; border-bottom: 1px solid #e1ebe6; color: #35574c; }
.fertilizer-analysis-table-wrap td small { display: block; color: #6d8178; }
.fertilizer-analysis-table-wrap td.is-negative { color: #b43a36; font-weight: 850; }
.fertilizer-analysis-table-wrap td.is-positive { color: #147348; font-weight: 850; }
.fertilizer-analysis-loading { display: grid; place-items: center; gap: 8px; min-height: 240px; text-align: center; }

@media (max-width: 1180px) {
  .fertilizer-analysis-filters { grid-template-columns: repeat(4, minmax(120px, 1fr)); }
  .fertilizer-analysis-grid { grid-template-columns: 1fr; }
  .fertilizer-analysis-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .fertilizer-kpi-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fertilizer-kpi-status { grid-column: 1 / -1; }
}

@media (max-width: 720px) {
  .fertilizer-analysis-toolbar > div:first-child { align-items: start; flex-direction: column; }
  .fertilizer-analysis-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fertilizer-analysis-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fertilizer-kpi-groups { grid-template-columns: 1fr; }
  .fertilizer-kpi-status { grid-column: auto; }
  .fertilizer-kpi-group article { padding: 7px; }
  .fertilizer-month-panel-header { align-items: stretch; flex-direction: column; }
  .fertilizer-month-metric { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fertilizer-month-metric button { padding: 0 4px; }
  .fertilizer-nutrient-grid { grid-template-columns: 1fr; }
  .fertilizer-product-bar-row { grid-template-columns: 100px minmax(0, 1fr); }
  .fertilizer-month-summary-grid { grid-template-columns: 1fr; }
  .fertilizer-month-day { grid-template-columns: minmax(0, 1fr) auto; }
  .fertilizer-month-day > span:last-child { grid-column: 2; }
  .fertilizer-month-matrix th,
  .fertilizer-month-matrix td { min-width: 136px; }
  .fertilizer-month-matrix .fertilizer-month-axis { width: 118px; min-width: 118px; max-width: 118px; }
  .fertilizer-month-product-cell > div { grid-template-columns: 38px repeat(3, minmax(28px, 1fr)); }
  .fertilizer-day-accordion-list { width: calc(100vw - 72px); }
  .fertilizer-day-accordion > header { grid-template-columns: auto minmax(110px, 1fr) auto; }
  .fertilizer-day-accordion > header > span:last-child { grid-column: 3; }
  .fertilizer-day-products { grid-template-columns: 1fr; padding-left: 8px; }
  .fertilizer-day-products > div { grid-template-columns: minmax(90px, 1fr) auto; }
  .fertilizer-analysis-detail { padding: 8px; }
  .fertilizer-analysis-table-wrap { max-height: 60vh; }
}

.view.active-view :is(.program-filters, .gantt-controls, .warehouse-filters, .report-toolbar, .irrigation-filters, .calicatas-filters, .irrigation-local-filters)::before {
  content: none !important;
}

.harvest-contractor-years {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.harvest-contractor-year {
  display: grid;
  grid-template-columns: 1fr;
  gap: 6px;
}

.harvest-contractor-year > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.harvest-contractor-bar-row {
  grid-template-columns: minmax(90px, 0.85fr) minmax(50px, 1.4fr) minmax(74px, auto) 40px;
  gap: 5px;
}

.harvest-variety-year-bar strong {
  max-width: none;
  overflow: visible;
  font-size: 0.6rem;
  line-height: 1.05;
  text-overflow: clip;
  white-space: nowrap;
}

.view.active-view table:not(.irrigation-bandeja-matrix-table) :is(th, td) {
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.view.active-view :is(.panel, .kpi, .weather-kpi, .chart-panel, .order-card, .execution-card) :is(strong, b, em, small, span, p):not(.irrigation-gantt *):not(.gantt-table *):not(.irrigation-bandeja-matrix *):not(.geo-map *) {
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.view.active-view :is(strong, b, em, small, span, td, th)[title]:not(.irrigation-gantt *):not(.gantt-table *):not(.irrigation-bandeja-matrix *) {
  max-width: none;
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

@media (max-width: 900px) {
  :root {
    --agrocore-sticky-filter-top: clamp(126px, 15svh, 144px);
  }

  .nav-item,
  .nav-group-toggle,
  .nav-group .nav-item,
  .nav > .nav-item {
    grid-template-columns: minmax(0, 1fr) auto !important;
  }
}

@media (max-width: 760px) {
  .harvest-contractor-years {
    grid-template-columns: 1fr;
  }

  .harvest-contractor-year {
    grid-template-columns: 1fr;
  }
}

/* AgroCore UI 243: cosecha analisis mas compacto y ranking expandible. */
.view.active-view .harvest-analytics-card {
  padding: 10px !important;
  gap: 8px !important;
}

.view.active-view .harvest-analytics-card .panel-header {
  min-height: 0;
  margin-bottom: 2px;
  padding-bottom: 4px;
}

.view.active-view .harvest-analytics-card .panel-header h2 {
  font-size: 0.98rem;
  line-height: 1.1;
}

.view.active-view .harvest-analytics-card .panel-header p {
  margin-top: 2px;
  font-size: 0.72rem;
  line-height: 1.15;
}

.harvest-analysis-filters {
  padding: 8px !important;
  gap: 7px !important;
}

.harvest-analysis-filters label {
  gap: 3px;
}

.harvest-analysis-filters select,
.harvest-analysis-filters input,
.harvest-analysis-filters button {
  min-height: 34px;
}

#harvestProductivityDialog {
  width: min(920px, calc(100vw - 24px));
}

.harvest-productivity-dialog {
  display: grid;
  gap: 12px;
  max-height: min(84vh, 760px);
}

.harvest-productivity-dialog-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.harvest-productivity-dialog-summary span {
  display: grid;
  gap: 2px;
  padding: 9px 11px;
  border: 1px solid #cee3d9;
  border-radius: 7px;
  background: #f3faf6;
}

.harvest-productivity-dialog-summary small {
  color: var(--muted);
  font-size: 0.64rem;
  font-weight: 800;
}

.harvest-productivity-dialog-summary strong {
  color: var(--brand);
  font-size: 0.9rem;
}

.harvest-productivity-block-table-wrap {
  max-height: min(58vh, 520px);
  border: 1px solid #d4e6dd;
  border-radius: 7px;
}

.harvest-productivity-block-table {
  min-width: 660px;
}

.harvest-productivity-block-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #eaf6f0;
}

.harvest-productivity-block-table th,
.harvest-productivity-block-table td {
  padding: 7px 9px;
  text-align: right;
  white-space: nowrap;
}

.harvest-productivity-block-table th:first-child,
.harvest-productivity-block-table td:first-child {
  text-align: left;
}

.harvest-productivity-block-table .harvest-block-group-row th {
  padding: 8px 10px;
  border-top: 3px solid #9bcbb5;
  background: #dff1e8;
  color: #075c46;
  text-align: left;
  font-size: 0.78rem;
}

.harvest-block-group-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.harvest-block-group-head strong {
  color: #063f32;
  font-size: 0.76rem;
}

.harvest-block-rank {
  display: inline-grid;
  width: 23px;
  height: 23px;
  place-items: center;
  border-radius: 50%;
  background: #e2f3eb;
  color: #087756;
  font-size: 0.67rem;
}

.harvest-analysis-filters .harvest-year-checks {
  min-height: 34px;
  padding: 4px 5px;
  gap: 5px;
}

.harvest-variety-year-totals {
  gap: 5px !important;
  margin-bottom: 4px;
}

.harvest-variety-year-totals span,
.harvest-variety-year-totals em {
  padding: 4px 6px !important;
  font-size: 0.64rem !important;
}

.harvest-variety-year-legend {
  gap: 7px !important;
  margin: 2px 0 4px !important;
}

.harvest-comparison-species-stack,
.harvest-contractor-stack {
  gap: 8px !important;
}

.harvest-comparison-species,
.harvest-contractor-species {
  gap: 6px !important;
}

.harvest-comparison-species {
  padding: 7px !important;
}

.harvest-comparison-species-head {
  min-height: 0;
  padding-bottom: 5px !important;
}

.harvest-comparison-species-totals span,
.harvest-comparison-species-totals > strong {
  padding: 3px 5px !important;
}

.harvest-variety-year-groups {
  gap: 7px !important;
}

.harvest-variety-year-group {
  padding: 7px !important;
  gap: 5px !important;
}

.harvest-variety-year-group header {
  gap: 5px !important;
  margin-bottom: 1px !important;
}

.harvest-variety-year-bars {
  min-height: 118px !important;
  gap: 5px !important;
}

.harvest-variety-year-bar {
  gap: 3px !important;
}

.harvest-variety-year-bar > div {
  height: 82px !important;
}

.harvest-contractor-ranking-panel {
  gap: 8px !important;
}

.harvest-contractor-species > header {
  min-height: 0;
  padding: 5px 8px !important;
}

.harvest-contractor-variety-grid {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)) !important;
  gap: 7px !important;
}

.harvest-contractor-variety-card {
  padding: 7px !important;
  gap: 5px !important;
}

.harvest-contractor-variety-card h3 {
  font-size: 0.74rem !important;
  line-height: 1.1;
}

.harvest-contractor-years {
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)) !important;
  gap: 6px !important;
}

.harvest-contractor-year {
  gap: 4px !important;
  padding-top: 4px !important;
}

.harvest-contractor-year > header {
  min-height: 0;
  font-size: 0.62rem !important;
}

.harvest-contractor-bars {
  gap: 4px !important;
}

.harvest-contractor-bar-row {
  grid-template-columns: 20px minmax(86px, 0.95fr) minmax(54px, 1.35fr) minmax(70px, auto) 38px !important;
  min-height: 28px;
  padding: 4px 5px !important;
  gap: 5px !important;
}

.harvest-contractor-position {
  display: grid;
  width: 18px;
  height: 18px;
  place-items: center;
  border-radius: 999px;
  background: #e4f1eb;
  color: #0d6b51;
  font-size: 0.6rem;
  font-weight: 950;
}

.harvest-contractor-bar-row > strong {
  font-size: 0.61rem !important;
  line-height: 1.08 !important;
}

.harvest-contractor-bar-track {
  height: 7px !important;
}

.harvest-contractor-bar-value b,
.harvest-contractor-bar-value small,
.harvest-contractor-bar-row > em {
  font-size: 0.57rem !important;
  line-height: 1.05;
}

.harvest-show-more-button {
  justify-self: start;
  min-height: 27px;
  padding: 4px 8px;
  border: 1px solid #b8d7ca;
  border-radius: 999px;
  background: #f4fbf8;
  color: #0d6048;
  font-size: 0.64rem;
  font-weight: 900;
  cursor: pointer;
}

.harvest-show-more-button:hover {
  border-color: #0d7a5a;
  background: #e8f6ef;
}

@media (max-width: 760px) {
  .harvest-contractor-variety-grid,
  .harvest-contractor-years {
    grid-template-columns: 1fr !important;
  }

  .harvest-contractor-bar-row {
    grid-template-columns: 20px minmax(0, 1fr) 42px !important;
  }

  .harvest-contractor-bar-track,
  .harvest-contractor-bar-value {
    grid-column: 2 / -1;
  }
}

/* AgroCore UI 244: analisis de cosecha progresivo y rankings legibles. */
.harvest-analysis-open-section {
  position: relative;
  min-width: 0;
  content-visibility: auto;
  contain-intrinsic-size: 1px 680px;
}

.harvest-analysis-open-section > .harvest-analytics-card .panel-header {
  padding-right: 76px;
}

.harvest-analysis-fold-card {
  overflow: hidden;
  min-height: 0;
  padding: 0 !important;
  border-color: #c7ddd3;
  background: #f8fcfa;
  box-shadow: none;
}

.harvest-analysis-fold-trigger {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) 28px;
  gap: 9px;
  align-items: center;
  width: 100%;
  min-height: 52px;
  padding: 7px 9px;
  border: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.harvest-analysis-fold-trigger:hover,
.harvest-analysis-fold-trigger:focus-visible {
  background: #edf8f3;
}

.harvest-analysis-fold-code {
  display: grid;
  width: 32px;
  height: 32px;
  place-items: center;
  border: 1px solid #afd4c4;
  border-radius: 7px;
  background: #dff3e9;
  color: #096348;
  font-size: 0.72rem;
  font-weight: 950;
  line-height: 1;
}

.harvest-analysis-fold-copy {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.harvest-analysis-fold-copy strong {
  color: #173d33;
  font-size: 0.79rem;
  font-weight: 950;
}

.harvest-analysis-fold-copy small {
  overflow: hidden;
  color: #667a72;
  font-size: 0.64rem;
  font-weight: 750;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.harvest-analysis-fold-state {
  display: grid;
  width: 26px;
  height: 26px;
  place-items: center;
  border: 1px solid #bcd7cb;
  border-radius: 50%;
  background: #ffffff;
  color: #096348;
  font-size: 1rem;
  font-weight: 900;
}

.harvest-analysis-collapse-button {
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 3;
  display: inline-grid;
  grid-template-columns: 18px auto;
  gap: 3px;
  align-items: center;
  min-height: 27px;
  padding: 3px 7px 3px 4px;
  border: 1px solid #bdd8cc;
  border-radius: 6px;
  background: #f3faf6;
  color: #235e4d;
  font-size: 0.62rem;
  font-weight: 900;
  cursor: pointer;
}

.harvest-analysis-collapse-button span:first-child {
  display: grid;
  width: 18px;
  height: 18px;
  place-items: center;
  border-radius: 4px;
  background: #dcefe6;
  font-size: 0.9rem;
  line-height: 1;
}

.harvest-contractor-position.rank-1,
.harvest-contractor-position.rank-2,
.harvest-contractor-position.rank-3,
.harvest-rank-medal {
  border: 1px solid rgba(39, 44, 42, 0.16);
  color: #25312d;
  box-shadow: 0 1px 3px rgba(14, 47, 37, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.62);
}

.harvest-contractor-position.rank-1,
.harvest-rank-medal.rank-1 {
  background: linear-gradient(180deg, #ffe584, #d99a12);
}

.harvest-contractor-position.rank-2,
.harvest-rank-medal.rank-2 {
  background: linear-gradient(180deg, #f5f7f8, #aeb9c1);
}

.harvest-contractor-position.rank-3,
.harvest-rank-medal.rank-3 {
  background: linear-gradient(180deg, #f4bf90, #b86b31);
}

.harvest-rank-medal {
  display: inline-grid;
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  margin-right: 5px;
  place-items: center;
  border-radius: 50%;
  font-size: 0.57rem;
  font-weight: 950;
  vertical-align: middle;
}

.harvest-productivity-potrero-head > strong {
  display: flex;
  min-width: 0;
  align-items: center;
}

.harvest-start-cell.is-estimated {
  border-style: dashed;
}

.harvest-contractor-years {
  align-items: start;
}

.harvest-contractor-year {
  align-self: start;
}

@media (max-width: 760px) {
  .harvest-analysis-fold-trigger {
    grid-template-columns: 32px minmax(0, 1fr) 26px;
    min-height: 50px;
  }

  .harvest-analysis-fold-copy small {
    white-space: normal;
  }

  .harvest-analysis-collapse-button {
    width: 28px;
    grid-template-columns: 1fr;
    padding: 4px;
  }

  .harvest-analysis-collapse-button span:last-child {
    display: none;
  }

  .harvest-analysis-open-section > .harvest-analytics-card .panel-header {
    padding-right: 38px;
  }
}

/* Cierre visual de Aplicaciones: prevalece sobre estilos historicos. */
#warehouse .panel-header.warehouse-panel-header {
  display: grid !important;
  grid-template-columns: minmax(250px, 0.65fr) minmax(590px, 1.35fr) !important;
  align-items: end !important;
  gap: 12px !important;
  margin: 0 0 8px !important;
  padding: 9px 10px !important;
  border-radius: 7px !important;
}

#warehouse .panel-header.warehouse-panel-header::before {
  content: none !important;
}

#warehouse .warehouse-filters::before {
  content: none !important;
}

:is(#program, #manager, #warehouse, #orders, #inventory, #prices, #reports) table td:first-child,
:is(#program, #manager, #warehouse, #orders, #inventory, #prices, #reports) table td:first-child :is(strong, span) {
  max-width: none !important;
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: normal !important;
  overflow-wrap: anywhere;
  line-height: 1.25;
}

#warehouse .warehouse-panel-header h2 {
  margin: 0;
  font-size: 1rem;
}

#warehouse .warehouse-panel-header p {
  margin: 2px 0 0;
  font-size: 0.7rem;
  line-height: 1.25;
}

#warehouse .warehouse-filters {
  display: grid !important;
  grid-template-columns: minmax(100px, 0.7fr) minmax(110px, 0.8fr) repeat(2, minmax(135px, 1fr)) auto !important;
  align-items: end !important;
  gap: 6px !important;
  width: 100%;
}

#warehouse .warehouse-order-list {
  gap: 7px;
}

#warehouse .warehouse-order-card[hidden] {
  display: none !important;
}

#warehouse .warehouse-order-card {
  gap: 4px;
  padding: 8px 9px;
}

#warehouse .warehouse-order-card .order-card-head h3 {
  font-size: 0.82rem;
}

#warehouse .warehouse-created-at {
  font-size: 0.58rem;
}

#warehouse .warehouse-order-card .metrics > div {
  min-height: 38px;
  padding: 4px 6px;
}

#warehouse .warehouse-order-card .metrics dt {
  font-size: 0.54rem;
}

#warehouse .warehouse-order-card .metrics dd {
  font-size: 0.76rem;
  line-height: 1.05;
}

#warehouse .warehouse-order-context {
  gap: 4px;
}

#warehouse .warehouse-order-context > div {
  padding: 4px 6px;
}

#warehouse .warehouse-order-context strong {
  font-size: 0.54rem;
}

#warehouse .warehouse-order-context span {
  font-size: 0.65rem;
}

#warehouse .application-order-details > summary {
  min-height: 28px;
  padding: 3px 6px;
  font-size: 0.64rem;
}

#warehouse .application-order-details > summary::after {
  width: 19px;
  height: 19px;
  flex-basis: 19px;
}

#warehouse .warehouse-order-card .warehouse-actions {
  min-height: 28px;
}

#warehouse .warehouse-order-card .warehouse-actions button {
  min-height: 27px;
  padding: 3px 7px;
  font-size: 0.61rem;
}

#manager .manager-orders-month-checklist {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 0;
  border: 0;
  padding: 0;
}

#manager .manager-orders-month-checklist legend {
  width: 100%;
  margin-bottom: 2px;
  color: #42665b;
  font-size: 0.62rem;
  font-weight: 900;
  text-transform: uppercase;
}

#manager .manager-orders-month-checklist label {
  display: inline-flex;
  min-height: 27px;
  align-items: center;
  gap: 3px;
  margin: 0;
  border: 1px solid #c8ddd5;
  border-radius: 5px;
  padding: 3px 6px;
  background: #ffffff;
  color: #365f52;
  font-size: 0.63rem;
  font-weight: 800;
  cursor: pointer;
}

#manager .manager-orders-month-checklist label:has(input:checked) {
  border-color: #218164;
  background: #e4f4ed;
  color: #0d5a43;
}

#manager .manager-orders-month-checklist input {
  width: 13px;
  height: 13px;
  min-height: 0;
  margin: 0;
}

#manager .manager-unified-month-filter {
  grid-column: 1 / -1;
  min-width: 0;
  padding-top: 2px;
}

#manager .gantt-month-grid b.is-filtered-out {
  opacity: 0.35;
  background: #edf2f0;
}

#manager .manager-order-card.is-gantt-target {
  border-color: #dc2626;
  border-left-color: #dc2626;
  background: linear-gradient(90deg, #fff1f2, #ffffff 24%);
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.24), 0 8px 22px rgba(127, 29, 29, 0.14);
}

#manager .manager-order-card.is-gantt-target:focus {
  outline: none;
}

#manager .gantt-track i.active.is-selected,
#manager .gantt-day-track i.active.is-selected {
  outline: 3px solid #dc2626;
  outline-offset: 2px;
  z-index: 15;
}

@media (min-width: 1180px) {
  #warehouse .warehouse-order-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
  }

  #warehouse .warehouse-order-card .metrics {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  #manager .manager-orders-month-checklist {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 3px;
  }

  #manager .manager-orders-month-checklist legend {
    display: none;
  }

  #manager .manager-orders-month-checklist label {
    flex: 0 0 auto;
  }

}

#warehouse .warehouse-filters .inline-filter {
  min-width: 0;
  font-size: 0.62rem;
}

#warehouse .warehouse-filters input,
#warehouse .warehouse-filters select,
#warehouse .warehouse-filters button {
  min-height: 30px;
  height: 30px;
  padding-block: 3px;
  font-size: 0.68rem;
}

#manager .manager-order-number strong {
  overflow-wrap: normal !important;
  white-space: nowrap !important;
}

@media (max-width: 1040px) {
  #warehouse .panel-header.warehouse-panel-header {
    grid-template-columns: 1fr !important;
  }
}

@media (max-width: 680px) {
  #warehouse .warehouse-filters {
    display: flex !important;
    grid-template-columns: none !important;
    overflow-x: auto;
  }

  #warehouse .warehouse-filters .inline-filter {
    flex: 0 0 148px !important;
  }
}

/* Trabajo fertilizante: matriz acumulada por potrero y bloque. */
.fertilizer-work-shell {
  display: grid;
  gap: 10px;
  min-width: 0;
}

.fertilizer-work-toolbar {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  padding: 10px 12px;
  border: 1px solid #bed9cc;
  border-radius: 7px;
  background: #fff;
  box-shadow: 0 6px 18px rgba(18, 68, 51, 0.06);
}

.fertilizer-work-toolbar h2 {
  margin: 0;
  color: #123f31;
  font-size: 1.05rem;
}

.fertilizer-work-toolbar > div span {
  display: block;
  margin-top: 2px;
  color: #60786e;
  font-size: 0.72rem;
  font-weight: 700;
}

.fertilizer-work-toolbar label {
  display: grid;
  gap: 4px;
  min-width: min(360px, 38vw);
  color: #35584c;
  font-size: 0.66rem;
  font-weight: 850;
  text-transform: uppercase;
}

.fertilizer-work-toolbar select {
  width: 100%;
  height: 36px;
  padding: 0 34px 0 10px;
  border: 1px solid #b9d3c7;
  border-radius: 6px;
  background: #f9fcfa;
  color: #143f32;
  font-weight: 800;
}

.fertilizer-work-filters {
  display: grid;
  grid-template-columns: minmax(150px, 190px) minmax(260px, 360px);
  gap: 8px;
  min-width: 0;
}

.fertilizer-work-filters label { min-width: 0; }

.fertilizer-work-summary {
  display: grid;
  grid-template-columns: minmax(220px, 1.3fr) repeat(2, minmax(180px, 1fr));
  border: 1px solid #c7ddd2;
  border-radius: 7px;
  background: #edf7f1;
  overflow: hidden;
}

.fertilizer-work-summary > div {
  display: grid;
  gap: 2px;
  padding: 8px 12px;
  border-right: 1px solid #c7ddd2;
}

.fertilizer-work-summary > div:last-child { border-right: 0; }
.fertilizer-work-summary span { color: #547065; font-size: 0.62rem; font-weight: 850; text-transform: uppercase; }
.fertilizer-work-summary strong { color: #104a37; font-size: 0.9rem; }
.fertilizer-work-summary small { color: #60786e; font-size: 0.65rem; }

.fertilizer-work-card {
  min-width: 0;
  border: 1px solid #b9d6c8;
  border-radius: 7px;
  background: #fff;
  box-shadow: 0 5px 16px rgba(17, 65, 49, 0.055);
  overflow: hidden;
}

.fertilizer-work-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 7px 10px;
  border-bottom: 1px solid #bad8ca;
  background: #e5f3eb;
}

.fertilizer-work-card-header > div:first-child {
  display: flex;
  align-items: baseline;
  gap: 8px;
  min-width: 0;
}

.fertilizer-work-card-header span,
.fertilizer-work-card-header small { color: #5c746a; font-size: 0.64rem; font-weight: 750; }
.fertilizer-work-card-header h3 { margin: 0; color: #086a4a; font-size: 1rem; }
.fertilizer-work-card-balance { display: flex; align-items: baseline; gap: 7px; white-space: nowrap; }
.fertilizer-work-card-balance strong { color: #b36e06; font-size: 0.9rem; }
.fertilizer-work-card-balance.is-excess strong { color: #a34137; }

.fertilizer-work-warning {
  padding: 7px 10px;
  border-bottom: 1px solid #efd4a8;
  background: #fff7e8;
  color: #765220;
  font-size: 0.72rem;
  font-weight: 750;
}

.fertilizer-work-table-wrap {
  width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-gutter: stable;
}

.fertilizer-work-table {
  width: max(100%, calc(620px + (var(--block-count) * 82px)));
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
  color: #173d32;
  font-size: 0.69rem;
}

.fertilizer-work-table th,
.fertilizer-work-table td {
  height: 38px;
  padding: 5px 6px;
  border-right: 1px solid #cdded6;
  border-bottom: 1px solid #d7e4de;
  text-align: center;
  vertical-align: middle;
}

.fertilizer-work-table tr > :last-child { border-right: 0; }
.fertilizer-work-table thead th { color: #143e32; font-size: 0.65rem; font-weight: 900; }
.fertilizer-work-table thead tr:nth-child(2) th { background: #f1f7f4; }
.fertilizer-work-table thead tr:nth-child(2) th:nth-child(1) { width: 102px; }
.fertilizer-work-table thead tr:nth-child(2) th:nth-child(2) { width: 150px; text-align: left; }
.fertilizer-work-table thead tr:nth-child(2) th:nth-child(3) { width: 90px; }
.fertilizer-work-table thead tr:nth-child(2) th:nth-child(4) { width: 78px; }
.fertilizer-work-table thead tr:nth-child(2) th:nth-child(5) { width: 82px; }
.fertilizer-work-table thead tr:nth-child(2) th:nth-child(6) { width: 118px; text-align: left; }
.fertilizer-work-table thead .fertilizer-work-block-heading { width: 82px; background: #e5f1ea; }
.fertilizer-work-preparation-heading { background: #174d3d; color: #fff !important; }
.fertilizer-work-potrero-heading { background: #0f7552; color: #fff !important; font-size: 0.76rem !important; }

.fertilizer-work-table tbody th { text-align: left; font-weight: 850; }
.fertilizer-work-table tbody td:nth-child(2) {
  overflow-wrap: anywhere;
  text-align: left;
  font-weight: 800;
}
.fertilizer-work-table td strong { display: block; font-size: 0.72rem; }
.fertilizer-work-table td small { display: block; margin-top: 1px; color: #657b72; font-size: 0.58rem; font-weight: 750; }
.fertilizer-work-reference-row > * { background: #f3f8f5; }
.fertilizer-work-program-row > * { background: #fff8d9; }
.fertilizer-work-program-row td { color: #715600; }
.fertilizer-work-solution-row > * { background: #e8f4ff; }
.fertilizer-work-solution-row td { color: #165682; }
.fertilizer-work-application-row > * { background: #fff; }
.fertilizer-work-application-row:nth-of-type(even) > * { background: #fafcfb; }
.fertilizer-work-application-row td.has-application { background: #ddf3e6; color: #08714d; }
.fertilizer-work-application-row td.is-empty { color: #9aaca4; }
.fertilizer-work-empty-row td { height: 54px; color: #71847c; font-weight: 700; }

.fertilizer-work-table tfoot th,
.fertilizer-work-table tfoot td { font-weight: 900; }
.fertilizer-work-table tfoot th { text-align: left; }
.fertilizer-work-total-row > * { background: #dff2e7; color: #0e6848; }
.fertilizer-work-difference-row > * { background: #fff1cf; color: #825900; }
.fertilizer-work-difference-row.is-excess > *,
.fertilizer-work-difference-row td.is-excess { background: #fee7e4; color: #a43f37; }

@media (max-width: 900px) {
  .fertilizer-work-toolbar { align-items: stretch; flex-direction: column; }
  .fertilizer-work-toolbar label { min-width: 0; width: 100%; }
  .fertilizer-work-filters { grid-template-columns: minmax(130px, 0.7fr) minmax(210px, 1.3fr); }
  .fertilizer-work-summary { grid-template-columns: 1fr; }
  .fertilizer-work-summary > div { border-right: 0; border-bottom: 1px solid #c7ddd2; }
  .fertilizer-work-summary > div:last-child { border-bottom: 0; }
}

@media (max-width: 620px) {
  .fertilizer-work-shell { gap: 8px; }
  .fertilizer-work-toolbar { padding: 9px; }
  .fertilizer-work-filters { grid-template-columns: 1fr; }
  .fertilizer-work-card-header { align-items: flex-start; flex-direction: column; gap: 5px; }
  .fertilizer-work-card-balance { width: 100%; justify-content: space-between; }
  .fertilizer-work-table { font-size: 0.66rem; }
  .fertilizer-work-table th,
  .fertilizer-work-table td { height: 36px; padding: 4px 5px; }
}

/* Informaticos: dialogos alineados con el sistema modal de AgroCore. */
dialog.informatics-task-dialog {
  width: min(720px, calc(100vw - 24px));
  border-radius: 8px;
}

dialog.informatics-staff-dialog {
  width: min(640px, calc(100vw - 24px));
  border-radius: 8px;
}

.informatics-task-dialog .modal-body,
.informatics-staff-dialog .modal-body {
  gap: 14px;
  width: 100%;
  max-height: calc(100dvh - 24px);
  padding: 18px;
  overflow-y: auto;
}

.informatics-dialog-head {
  position: sticky;
  z-index: 4;
  top: -18px;
  margin: -18px -18px 0;
  border-bottom: 1px solid #d7e6df;
  background: #fff;
  padding: 16px 18px 13px;
}

.informatics-dialog-head > div {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.informatics-dialog-head h2,
.informatics-dialog-head p {
  margin: 0;
}

.informatics-dialog-head h2 {
  color: #163f34;
  font-size: 1.15rem;
}

.informatics-dialog-head p:not(.eyebrow) {
  color: #64766f;
  font-size: 0.72rem;
  font-weight: 650;
  text-transform: capitalize;
}

.informatics-dialog-head .icon-button {
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
}

.informatics-task-dialog .informatics-task-summary {
  border: 1px solid #cfe2d9;
  border-left: 4px solid #168061;
  border-radius: 6px;
}

.informatics-task-dialog .informatics-form-grid {
  gap: 11px 12px;
  margin: 0;
}

.informatics-task-dialog .informatics-form-grid label {
  min-width: 0;
  color: #3e574e;
  font-size: 0.76rem;
}

.informatics-task-dialog .informatics-form-grid input,
.informatics-task-dialog .informatics-form-grid select,
.informatics-task-dialog .informatics-form-grid textarea {
  width: 100%;
  min-width: 0;
  border-color: #c8dcd3;
  border-radius: 6px;
  background: #fff;
}

.informatics-task-dialog .informatics-form-grid textarea[readonly],
.informatics-task-dialog .informatics-form-grid input[readonly] {
  background: #f1f6f3;
  color: #40564d;
}

.informatics-task-dialog .informatics-time-preview {
  align-self: end;
  display: grid;
  gap: 2px;
  min-height: 44px;
  margin: 0;
  padding: 7px 10px;
}

.informatics-time-preview span {
  color: #62766e;
  font-size: 0.64rem;
  font-weight: 750;
}

.informatics-time-preview strong {
  color: #087052;
  font-size: 0.9rem;
}

.informatics-task-dialog .modal-actions,
.informatics-staff-dialog .modal-actions {
  justify-content: flex-end;
  border-top: 1px solid #e0ebe6;
  padding-top: 12px;
}

.informatics-staff-section {
  display: grid;
  gap: 9px;
  border: 1px solid #d5e5dd;
  border-radius: 7px;
  background: #f9fcfa;
  padding: 12px;
}

.informatics-staff-section h3 {
  margin: 0;
  color: #173f34;
  font-size: 0.86rem;
}

.informatics-staff-dialog .informatics-staff-add {
  grid-template-columns: minmax(0, 1fr) auto;
  margin: 0;
}

.informatics-staff-dialog .informatics-staff-add input {
  width: 100%;
  min-width: 0;
}

.informatics-staff-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.informatics-staff-heading span {
  display: grid;
  place-items: center;
  min-width: 28px;
  height: 24px;
  border-radius: 12px;
  background: #e1f1ea;
  color: #087052;
  font-size: 0.7rem;
  font-weight: 850;
}

.informatics-staff-dialog .informatics-staff-list {
  max-height: min(330px, 42dvh);
}

.informatics-staff-dialog .informatics-staff-list > div {
  grid-template-columns: 34px minmax(0, 1fr) auto;
  background: #fff;
}

.informatics-staff-dialog .informatics-staff-list > div > div {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.informatics-staff-dialog .informatics-staff-list strong,
.informatics-staff-dialog .informatics-staff-list small {
  display: block;
  min-width: 0;
  overflow-wrap: anywhere;
}

@media (max-width: 620px) {
  dialog.informatics-task-dialog,
  dialog.informatics-staff-dialog {
    width: calc(100vw - 12px);
    max-height: calc(100dvh - 12px);
    margin: 6px;
  }

  .informatics-task-dialog .modal-body,
  .informatics-staff-dialog .modal-body {
    max-height: calc(100dvh - 12px);
    padding: 14px;
  }

  .informatics-dialog-head {
    top: -14px;
    margin: -14px -14px 0;
    padding: 13px 14px 11px;
  }

  .informatics-task-dialog .informatics-form-grid,
  .informatics-staff-dialog .informatics-staff-add {
    grid-template-columns: 1fr;
  }

  .informatics-task-dialog .informatics-form-grid .full {
    grid-column: auto;
  }

  .informatics-staff-dialog .informatics-staff-list > div {
    grid-template-columns: 32px minmax(0, 1fr) auto;
  }

  .informatics-staff-dialog .informatics-staff-list > div .user-avatar {
    display: grid;
  }
}

.informatics-day > header small {
  display: block;
  margin-top: 2px;
  color: #477066;
  font-size: 0.56rem;
  font-weight: 800;
}

.informatics-time-preview small {
  display: block;
  color: #62766e;
  font-size: 0.62rem;
  font-weight: 750;
}

.informatics-time-preview small.is-outside {
  color: #a34b16;
}

.informatics-module button,
.informatics-task-dialog button,
.informatics-staff-dialog button {
  letter-spacing: 0;
  box-shadow: none;
  transform: none;
}

.informatics-toolbar-actions .primary-button,
.informatics-toolbar-actions .secondary-button,
.informatics-pending-list .primary-button,
.informatics-task-dialog .modal-actions button,
.informatics-staff-dialog .primary-button,
.informatics-staff-dialog .secondary-button {
  min-height: 34px;
  border-radius: 6px;
  padding: 7px 12px;
  font-size: 0.72rem;
  font-weight: 850;
  line-height: 1.1;
}

.informatics-toolbar-actions .primary-button,
.informatics-pending-list .primary-button,
.informatics-task-dialog .primary-button,
.informatics-staff-dialog .primary-button {
  border: 1px solid #087557;
  background: #087557;
  color: #fff;
}

.informatics-toolbar-actions .secondary-button,
.informatics-task-dialog .secondary-button,
.informatics-staff-dialog .secondary-button {
  border: 1px solid #b9d3c8;
  background: #fff;
  color: #145d49;
}

.informatics-module button:hover,
.informatics-task-dialog button:hover,
.informatics-staff-dialog button:hover {
  filter: brightness(0.96);
  transform: translateY(-1px);
}

.informatics-module button:focus-visible,
.informatics-task-dialog button:focus-visible,
.informatics-staff-dialog button:focus-visible {
  outline: 3px solid rgb(28 139 105 / 22%);
  outline-offset: 1px;
}

.informatics-day-add {
  border-radius: 6px;
  font-weight: 700;
}

.informatics-entry-actions .icon-action {
  min-height: 28px;
  border: 1px solid #c8dbd2;
  border-radius: 5px;
  background: #fff;
  color: #315e51;
  font-weight: 800;
}

.informatics-entry-actions .icon-action.primary {
  border-color: #9fcbb9;
  background: #e8f5ee;
  color: #087052;
}

.informatics-week-navigation .icon-action {
  border: 1px solid #bfd7cc;
  border-radius: 6px;
  background: #fff;
  color: #0c674f;
}

.informatics-week-navigation .secondary-button {
  min-height: 38px;
  border: 1px solid #bfd7cc;
  border-radius: 6px;
  background: #f7fbf9;
  color: #145d49;
  font-weight: 800;
}
