/* =============================================================================
   FarmLivo Design System — Sprint B0
   Tokens, typography, layout, components. Use --fl-* variables only.
   Compatible with existing Bootstrap / ui-shared styles (additive layer).
   ============================================================================= */

/* -------------------------------------------------------------------------- */
/* 1. Design tokens                                                           */
/* -------------------------------------------------------------------------- */

:root {
  --fl-primary: #24513A;
  --fl-primary-hover: #1D4230;

  --fl-olive: #6F8F3D;
  --fl-olive-soft: #EAF4E8;

  --fl-sand: #E8D6A3;
  --fl-sand-soft: #FAF4E3;

  --fl-amber: #E4A11B;
  --fl-amber-soft: #FFF4D6;

  --fl-bg: #F7F8F3;
  --fl-surface: #FFFFFF;
  --fl-surface-muted: #FAFBF7;

  --fl-info: #2F6F8F;
  --fl-info-soft: #EAF2F8;

  --fl-success: #2F7D4A;
  --fl-success-soft: #EAF4E8;

  --fl-warning: #B97800;
  --fl-warning-soft: #FFF4D6;

  --fl-danger: #D96A5F;
  --fl-danger-soft: #FDECEC;

  --fl-text: #1F2A24;
  --fl-muted: #66736B;
  --fl-muted-2: #8A968F;

  --fl-border: #DDE5DC;
  --fl-border-strong: #C8D4C8;

  --fl-shadow-soft: 0 8px 24px rgba(36, 81, 58, 0.08);
  --fl-shadow-hover: 0 12px 32px rgba(36, 81, 58, 0.12);

  --fl-radius-sm: 10px;
  --fl-radius-md: 14px;
  --fl-radius-lg: 18px;
  --fl-radius-xl: 24px;

  --fl-space-xs: 4px;
  --fl-space-sm: 8px;
  --fl-space-md: 12px;
  --fl-space-lg: 16px;
  --fl-space-xl: 24px;
  --fl-space-2xl: 32px;

  --fl-font: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  --fl-chart-revenue: var(--fl-success);
  --fl-chart-cost: #E08A4F;
  --fl-chart-result-positive: var(--fl-primary);
  --fl-chart-result-negative: var(--fl-danger);
  --fl-chart-egg: var(--fl-amber);
  --fl-chart-stock: var(--fl-info);
  --fl-chart-feed: var(--fl-olive);
  --fl-chart-health: var(--fl-info);
  --fl-chart-mortality: var(--fl-danger);

  --fl-focus-ring: 0 0 0 3px rgba(36, 81, 58, 0.28);
  --fl-transition: 160ms ease;
}

/* Bridge optional legacy tokens without breaking existing pages */
:root {
  --ds-primary: var(--fl-primary);
  --ds-text: var(--fl-text);
  --ds-muted: var(--fl-muted);
  --ds-border: var(--fl-border);
  --ds-surface: var(--fl-surface);
  --ds-radius-lg: var(--fl-radius-lg);
  --ds-soft-shadow: var(--fl-shadow-soft);
}

/* -------------------------------------------------------------------------- */
/* 2. Typography                                                              */
/* -------------------------------------------------------------------------- */

.fl-page,
.fl-page-container,
.fl-card,
.fl-kpi-card,
.fl-chart-card {
  font-family: var(--fl-font);
}

.fl-page-title {
  margin: 0;
  font-size: clamp(1.75rem, 2vw, 2rem);
  font-weight: 700;
  line-height: 1.2;
  color: var(--fl-text);
  letter-spacing: -0.02em;
}

.fl-section-title {
  margin: 0;
  font-size: clamp(1.15rem, 1.5vw, 1.375rem);
  font-weight: 700;
  line-height: 1.3;
  color: var(--fl-text);
}

.fl-card-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.35;
  color: var(--fl-text);
}

.fl-kpi-value {
  font-size: clamp(1.625rem, 2.5vw, 2.125rem);
  font-weight: 700;
  line-height: 1.1;
  color: var(--fl-text);
  font-variant-numeric: tabular-nums;
}

.fl-body {
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--fl-text);
}

.fl-muted {
  color: var(--fl-muted);
}

.fl-small {
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--fl-muted);
}

.fl-eyebrow {
  display: inline-block;
  margin-block-end: var(--fl-space-xs);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--fl-muted);
}

/* -------------------------------------------------------------------------- */
/* 3. Layout                                                                  */
/* -------------------------------------------------------------------------- */

.fl-page {
  background: var(--fl-bg);
  color: var(--fl-text);
  min-height: 100%;
}

.fl-page-container {
  padding: var(--fl-space-xl);
}

.fl-section {
  margin-block-end: var(--fl-space-xl);
}

.fl-section-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--fl-space-lg);
  flex-wrap: wrap;
  margin-block-end: var(--fl-space-lg);
}

.fl-section-actions {
  display: flex;
  align-items: center;
  gap: var(--fl-space-sm);
  flex-wrap: wrap;
}

.fl-grid {
  display: grid;
  gap: var(--fl-space-lg);
}

.fl-grid-kpi {
  display: grid;
  gap: var(--fl-space-lg);
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.fl-stack {
  display: flex;
  flex-direction: column;
  gap: var(--fl-space-md);
}

.fl-inline {
  display: flex;
  align-items: center;
  gap: var(--fl-space-sm);
  flex-wrap: wrap;
}

@media (max-width: 768px) {
  .fl-page-container {
    padding: var(--fl-space-lg);
  }

  .fl-grid-kpi {
    grid-template-columns: 1fr;
  }
}

/* -------------------------------------------------------------------------- */
/* 4. Cards                                                                   */
/* -------------------------------------------------------------------------- */

.fl-card {
  background: var(--fl-surface);
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-lg);
  box-shadow: var(--fl-shadow-soft);
  overflow: hidden;
}

.fl-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--fl-space-md);
  flex-wrap: wrap;
  padding: var(--fl-space-lg) var(--fl-space-lg) 0;
}

.fl-card-subtitle {
  margin: var(--fl-space-xs) 0 0;
  font-size: 0.8125rem;
  color: var(--fl-muted);
  line-height: 1.45;
}

.fl-card-body {
  padding: var(--fl-space-lg);
}

.fl-card-footer {
  padding: var(--fl-space-md) var(--fl-space-lg) var(--fl-space-lg);
  border-block-start: 1px solid var(--fl-border);
}

.fl-card-hover {
  transition: box-shadow var(--fl-transition), transform var(--fl-transition), border-color var(--fl-transition);
}

.fl-card-hover:hover {
  box-shadow: var(--fl-shadow-hover);
  border-color: var(--fl-border-strong);
}

.fl-card-hover:focus-within {
  box-shadow: var(--fl-shadow-hover);
}

/* -------------------------------------------------------------------------- */
/* 5. Buttons                                                                 */
/* -------------------------------------------------------------------------- */

.fl-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--fl-space-sm);
  padding: 0.55rem 1rem;
  border-radius: 12px;
  border: 1px solid transparent;
  font-family: inherit;
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
  transition: background var(--fl-transition), border-color var(--fl-transition), color var(--fl-transition), box-shadow var(--fl-transition);
  white-space: nowrap;
}

.fl-btn:focus-visible {
  outline: none;
  box-shadow: var(--fl-focus-ring);
}

.fl-btn:disabled,
.fl-btn.is-disabled {
  opacity: 0.55;
  cursor: not-allowed;
  pointer-events: none;
}

.fl-btn-primary {
  background: var(--fl-primary);
  color: #fff;
  border-color: var(--fl-primary);
}

.fl-btn-primary:hover:not(:disabled) {
  background: var(--fl-primary-hover);
  border-color: var(--fl-primary-hover);
  color: #fff;
}

.fl-btn-secondary {
  background: var(--fl-surface);
  color: var(--fl-text);
  border-color: var(--fl-border-strong);
}

.fl-btn-secondary:hover:not(:disabled) {
  background: var(--fl-surface-muted);
  border-color: var(--fl-border-strong);
  color: var(--fl-text);
}

.fl-btn-soft {
  background: var(--fl-olive-soft);
  color: var(--fl-primary);
  border-color: transparent;
}

.fl-btn-soft:hover:not(:disabled) {
  background: #dcebd8;
  color: var(--fl-primary-hover);
}

.fl-btn-warning {
  background: var(--fl-warning-soft);
  color: var(--fl-warning);
  border-color: #f0d89a;
}

.fl-btn-warning:hover:not(:disabled) {
  background: #ffecb8;
  color: #9a6400;
}

.fl-btn-danger {
  background: var(--fl-danger-soft);
  color: #9c3f36;
  border-color: #f5c4bf;
}

.fl-btn-danger:hover:not(:disabled) {
  background: #fad9d5;
  color: #7a322b;
}

.fl-btn-ghost {
  background: transparent;
  color: var(--fl-muted);
  border-color: transparent;
}

.fl-btn-ghost:hover:not(:disabled) {
  background: var(--fl-surface-muted);
  color: var(--fl-text);
}

.fl-btn-sm {
  padding: 0.4rem 0.75rem;
  font-size: 0.8125rem;
  border-radius: 10px;
}

.fl-btn-icon {
  padding: 0.5rem;
  inline-size: 2.375rem;
  block-size: 2.375rem;
}

/* -------------------------------------------------------------------------- */
/* 6. Badges                                                                  */
/* -------------------------------------------------------------------------- */

.fl-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  border: 1px solid var(--fl-border);
  background: var(--fl-surface-muted);
  color: var(--fl-text);
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.3;
  white-space: nowrap;
}

.fl-badge-success { background: var(--fl-success-soft); color: var(--fl-success); border-color: #c5dfc9; }
.fl-badge-warning { background: var(--fl-warning-soft); color: var(--fl-warning); border-color: #f0d89a; }
.fl-badge-danger { background: var(--fl-danger-soft); color: #9c3f36; border-color: #f5c4bf; }
.fl-badge-info { background: var(--fl-info-soft); color: var(--fl-info); border-color: #c5dceb; }
.fl-badge-neutral { background: var(--fl-surface-muted); color: var(--fl-muted); border-color: var(--fl-border); }
.fl-badge-egg { background: var(--fl-amber-soft); color: #9a6b00; border-color: #f0d89a; }
.fl-badge-feed { background: var(--fl-olive-soft); color: var(--fl-olive); border-color: #c8ddb0; }
.fl-badge-finance { background: var(--fl-success-soft); color: var(--fl-success); border-color: #c5dfc9; }
.fl-badge-partial { background: var(--fl-sand-soft); color: #7a6530; border-color: #e8d6a3; }

/* -------------------------------------------------------------------------- */
/* 7. KPI card                                                                */
/* -------------------------------------------------------------------------- */

.fl-kpi-card {
  display: grid;
  gap: var(--fl-space-xs);
  padding: var(--fl-space-lg);
  background: var(--fl-surface);
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-lg);
  box-shadow: var(--fl-shadow-soft);
  min-block-size: 7.5rem;
}

.fl-kpi-card.is-loading {
  pointer-events: none;
}

.fl-kpi-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: 2rem;
  block-size: 2rem;
  border-radius: var(--fl-radius-sm);
  background: var(--fl-surface-muted);
  color: var(--fl-primary);
  font-size: 1rem;
}

.fl-kpi-label {
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--fl-muted);
}

.fl-kpi-meta {
  font-size: 0.8125rem;
  color: var(--fl-muted);
  line-height: 1.4;
}

.fl-kpi-trend {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.75rem;
  font-weight: 600;
}

.fl-kpi-trend.is-up { color: var(--fl-success); }
.fl-kpi-trend.is-down { color: var(--fl-danger); }
.fl-kpi-trend.is-neutral { color: var(--fl-muted); }

.fl-kpi-card--egg { border-color: #f0d89a; background: linear-gradient(180deg, #fffdf8 0%, var(--fl-surface) 100%); }
.fl-kpi-card--egg .fl-kpi-icon { background: var(--fl-amber-soft); color: #9a6b00; }

.fl-kpi-card--stock { border-color: #c5dceb; background: linear-gradient(180deg, #f8fbfd 0%, var(--fl-surface) 100%); }
.fl-kpi-card--stock .fl-kpi-icon { background: var(--fl-info-soft); color: var(--fl-info); }

.fl-kpi-card--finance { border-color: #c5dfc9; }
.fl-kpi-card--finance .fl-kpi-icon { background: var(--fl-success-soft); color: var(--fl-success); }

.fl-kpi-card--health { border-color: #c5dceb; }
.fl-kpi-card--health .fl-kpi-icon { background: var(--fl-info-soft); color: var(--fl-info); }

.fl-kpi-card--feed { border-color: #c8ddb0; }
.fl-kpi-card--feed .fl-kpi-icon { background: var(--fl-olive-soft); color: var(--fl-olive); }

.fl-kpi-card--warning { border-color: #f0d89a; }
.fl-kpi-card--warning .fl-kpi-icon { background: var(--fl-warning-soft); color: var(--fl-warning); }

.fl-kpi-card--danger { border-color: #f5c4bf; }
.fl-kpi-card--danger .fl-kpi-icon { background: var(--fl-danger-soft); color: #9c3f36; }

.fl-kpi-card--neutral .fl-kpi-icon { background: var(--fl-surface-muted); color: var(--fl-muted); }

/* -------------------------------------------------------------------------- */
/* 8. Empty state & skeleton                                                  */
/* -------------------------------------------------------------------------- */

.fl-empty-state {
  display: grid;
  justify-items: center;
  gap: var(--fl-space-sm);
  padding: var(--fl-space-2xl) var(--fl-space-xl);
  text-align: center;
  background: var(--fl-surface-muted);
  border: 1px dashed var(--fl-border);
  border-radius: var(--fl-radius-lg);
}

.fl-empty-state-icon {
  display: grid;
  place-items: center;
  inline-size: 3rem;
  block-size: 3rem;
  border-radius: 50%;
  background: var(--fl-olive-soft);
  color: var(--fl-primary);
  font-size: 1.35rem;
}

.fl-empty-state-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  color: var(--fl-text);
}

.fl-empty-state-description {
  margin: 0;
  max-inline-size: 28rem;
  font-size: 0.875rem;
  color: var(--fl-muted);
  line-height: 1.5;
}

.fl-skeleton {
  position: relative;
  overflow: hidden;
  background: var(--fl-surface-muted);
  border-radius: var(--fl-radius-md);
}

.fl-skeleton::after {
  content: "";
  position: absolute;
  inset: 0;
  transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.55), transparent);
  animation: fl-shimmer 1.4s infinite;
}

@keyframes fl-shimmer {
  100% { transform: translateX(100%); }
}

.fl-skeleton-kpi-grid {
  display: grid;
  gap: var(--fl-space-lg);
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.fl-skeleton-kpi { min-block-size: 7.5rem; border-radius: var(--fl-radius-lg); }
.fl-skeleton-card { min-block-size: 10rem; border-radius: var(--fl-radius-lg); }
.fl-skeleton-chart { min-block-size: 17.5rem; border-radius: var(--fl-radius-lg); }
.fl-skeleton-table-row { min-block-size: 3rem; border-radius: var(--fl-radius-sm); margin-block-end: var(--fl-space-sm); }

/* -------------------------------------------------------------------------- */
/* 9. Chart card                                                              */
/* -------------------------------------------------------------------------- */

.fl-chart-card {
  background: var(--fl-surface);
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-lg);
  box-shadow: var(--fl-shadow-soft);
  overflow: hidden;
}

.fl-chart-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--fl-space-md);
  padding: var(--fl-space-lg) var(--fl-space-lg) 0;
}

.fl-chart-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  color: var(--fl-text);
}

.fl-chart-subtitle {
  margin: var(--fl-space-xs) 0 0;
  font-size: 0.8125rem;
  color: var(--fl-muted);
}

.fl-chart-body {
  padding: var(--fl-space-lg);
}

.fl-chart-empty {
  display: grid;
  place-items: center;
  min-block-size: 12rem;
  padding: var(--fl-space-xl);
  color: var(--fl-muted);
  font-size: 0.875rem;
  text-align: center;
}

/* -------------------------------------------------------------------------- */
/* 10. Tables & lists                                                         */
/* -------------------------------------------------------------------------- */

.fl-table-card {
  background: var(--fl-surface);
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-lg);
  box-shadow: var(--fl-shadow-soft);
  overflow: hidden;
}

.fl-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
}

.fl-table thead th {
  padding: var(--fl-space-md) var(--fl-space-lg);
  text-align: start;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--fl-muted);
  background: var(--fl-surface-muted);
  border-block-end: 1px solid var(--fl-border);
}

.fl-table tbody td {
  padding: var(--fl-space-md) var(--fl-space-lg);
  border-block-end: 1px solid var(--fl-border);
  color: var(--fl-text);
  vertical-align: middle;
}

.fl-table tbody tr:last-child td {
  border-block-end: none;
}

.fl-table tbody tr:hover {
  background: var(--fl-surface-muted);
}

.fl-table-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--fl-space-sm);
}

.fl-list-card {
  display: grid;
  gap: var(--fl-space-md);
}

.fl-list-card-item {
  padding: var(--fl-space-lg);
  background: var(--fl-surface);
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-md);
}

.fl-row-actions {
  display: flex;
  align-items: center;
  gap: var(--fl-space-sm);
  margin-inline-start: auto;
}

@media (max-width: 768px) {
  .fl-table-card .fl-table thead {
    display: none;
  }

  .fl-table-card .fl-table tbody tr {
    display: grid;
    gap: var(--fl-space-xs);
    padding: var(--fl-space-md);
    border-block-end: 1px solid var(--fl-border);
  }

  .fl-table-card .fl-table tbody td {
    padding: 0;
    border: none;
  }
}

/* -------------------------------------------------------------------------- */
/* 11. Action drawer                                                          */
/* -------------------------------------------------------------------------- */

.fl-drawer-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(31, 42, 36, 0.38);
  z-index: 1390;
  animation: fl-fade-in 180ms ease;
}

.fl-drawer-panel {
  position: fixed;
  inset-block: 0;
  inset-inline-end: 0;
  inline-size: min(420px, 100vw);
  background: var(--fl-surface);
  box-shadow: -8px 0 32px rgba(36, 81, 58, 0.14);
  z-index: 1400;
  display: flex;
  flex-direction: column;
  animation: fl-slide-in 220ms ease;
}

.fl-drawer-header {
  padding: var(--fl-space-lg) var(--fl-space-xl);
  border-block-end: 1px solid var(--fl-border);
}

.fl-drawer-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--fl-space-lg) var(--fl-space-xl);
}

.fl-drawer-close {
  margin-inline-start: auto;
}

.fl-action-group-title {
  margin: var(--fl-space-lg) 0 var(--fl-space-sm);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--fl-muted);
}

.fl-action-group-title:first-child {
  margin-block-start: 0;
}

.fl-action-item {
  display: flex;
  align-items: flex-start;
  gap: var(--fl-space-md);
  width: 100%;
  padding: var(--fl-space-md);
  margin-block-end: var(--fl-space-sm);
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-md);
  background: var(--fl-surface);
  text-align: start;
  cursor: pointer;
  transition: background var(--fl-transition), border-color var(--fl-transition), box-shadow var(--fl-transition);
}

.fl-action-item:hover:not(:disabled) {
  background: var(--fl-surface-muted);
  border-color: var(--fl-border-strong);
  box-shadow: var(--fl-shadow-soft);
}

.fl-action-item:focus-visible {
  outline: none;
  box-shadow: var(--fl-focus-ring);
}

.fl-action-item:disabled,
.fl-action-item.is-disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.fl-action-item-icon {
  display: grid;
  place-items: center;
  inline-size: 2.25rem;
  block-size: 2.25rem;
  border-radius: var(--fl-radius-sm);
  background: var(--fl-olive-soft);
  color: var(--fl-primary);
  flex-shrink: 0;
}

.fl-action-item-title {
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--fl-text);
}

.fl-action-item-desc {
  margin-block-start: 0.15rem;
  font-size: 0.8125rem;
  color: var(--fl-muted);
  line-height: 1.4;
}

@keyframes fl-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes fl-slide-in {
  from { transform: translateX(100%); }
  to { transform: translateX(0); }
}

[dir="rtl"] .fl-drawer-panel {
  inset-inline-end: auto;
  inset-inline-start: 0;
  box-shadow: 8px 0 32px rgba(36, 81, 58, 0.14);
  animation-name: fl-slide-in-rtl;
}

@keyframes fl-slide-in-rtl {
  from { transform: translateX(-100%); }
  to { transform: translateX(0); }
}

/* -------------------------------------------------------------------------- */
/* 12. RTL utilities                                                          */
/* -------------------------------------------------------------------------- */

[dir="rtl"] .fl-section-header,
[dir="rtl"] .fl-section-actions,
[dir="rtl"] .fl-inline,
[dir="rtl"] .fl-table-actions,
[dir="rtl"] .fl-row-actions {
  direction: rtl;
}

[dir="rtl"] .fl-btn-icon i,
[dir="rtl"] .fl-kpi-trend i {
  transform: scaleX(-1);
}

/* -------------------------------------------------------------------------- */
/* 13. FarmLivo B1 components                                                 */
/* -------------------------------------------------------------------------- */

.fl-page-header {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--fl-space-lg);
  margin-block-end: var(--fl-space-xl);
}

.fl-page-header-main {
  flex: 1 1 16rem;
  min-inline-size: 0;
}

.fl-page-header-back {
  display: inline-block;
  margin-block-end: var(--fl-space-sm);
  font-size: 0.875rem;
  color: var(--fl-info);
  text-decoration: none;
}

.fl-page-header-back:hover {
  color: var(--fl-primary);
}

.fl-page-header-title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--fl-space-sm);
}

.fl-page-header-icon {
  font-size: 1.75rem;
  line-height: 1;
}

.fl-page-header-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--fl-space-sm);
}

.fl-page-header-extra {
  flex: 1 1 100%;
}

.fl-badge-sm {
  font-size: 0.6875rem;
  padding: 0.15rem 0.45rem;
}

.fl-badge-lg {
  font-size: 0.8125rem;
  padding: 0.35rem 0.65rem;
}

.fl-badge-icon {
  margin-inline-end: 0.25rem;
}

.fl-badge-health { background: var(--fl-info-soft); color: var(--fl-info); border: 1px solid var(--fl-border); }
.fl-badge-archived { background: var(--fl-surface-muted); color: var(--fl-muted); border: 1px solid var(--fl-border); }
.fl-badge-growing { background: #e7f5ff; color: #1864ab; border-color: #a5d8ff; }
.fl-badge-schedule { background: #edf2f7; color: #4a5568; border-color: #cbd5e0; }

.fl-kpi-card.is-clickable {
  cursor: pointer;
}

.fl-kpi-card.is-clickable:focus-visible {
  outline: none;
  box-shadow: var(--fl-focus-ring);
}

.fl-card--egg { border-color: color-mix(in srgb, var(--fl-amber) 35%, var(--fl-border)); }
.fl-card--stock { border-color: color-mix(in srgb, var(--fl-info) 30%, var(--fl-border)); }
.fl-card--finance { border-color: color-mix(in srgb, var(--fl-success) 30%, var(--fl-border)); }
.fl-card--health { border-color: color-mix(in srgb, var(--fl-info) 30%, var(--fl-border)); }
.fl-card--feed { border-color: color-mix(in srgb, var(--fl-olive) 35%, var(--fl-border)); }
.fl-card--warning { border-color: color-mix(in srgb, var(--fl-warning) 35%, var(--fl-border)); }
.fl-card--danger { border-color: color-mix(in srgb, var(--fl-danger) 35%, var(--fl-border)); }

.fl-card-header-text {
  display: flex;
  flex-direction: column;
  gap: var(--fl-space-xs);
}

.fl-card-header-icon {
  font-size: 1.25rem;
}

.fl-skeleton-list-row {
  min-block-size: 4.5rem;
  border-radius: var(--fl-radius-md);
  margin-block-end: var(--fl-space-sm);
}

.fl-skeleton-detail-header {
  min-block-size: 6rem;
  border-radius: var(--fl-radius-lg);
}

.fl-chart-card--revenue { border-block-start: 3px solid var(--fl-chart-revenue); }
.fl-chart-card--cost { border-block-start: 3px solid var(--fl-chart-cost); }
.fl-chart-card--result { border-block-start: 3px solid var(--fl-chart-result-positive); }
.fl-chart-card--egg { border-block-start: 3px solid var(--fl-chart-egg); }
.fl-chart-card--stock { border-block-start: 3px solid var(--fl-chart-stock); }
.fl-chart-card--mortality { border-block-start: 3px solid var(--fl-chart-mortality); }

.fl-period-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--fl-space-sm);
}

.fl-period-filter.is-disabled {
  opacity: 0.6;
  pointer-events: none;
}

.fl-period-filter-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--fl-space-sm);
}

.fl-period-chip {
  border: 1px solid var(--fl-border);
  border-radius: 999px;
  padding: 0.35rem 0.85rem;
  background: var(--fl-surface);
  color: var(--fl-text);
  font-size: 0.8125rem;
  cursor: pointer;
  transition: background var(--fl-transition), border-color var(--fl-transition);
}

.fl-period-chip:hover:not(:disabled) {
  background: var(--fl-surface-muted);
  border-color: var(--fl-border-strong);
}

.fl-period-chip.is-active {
  background: var(--fl-olive-soft);
  border-color: var(--fl-primary);
  color: var(--fl-primary);
  font-weight: 600;
}

.fl-period-chip:focus-visible {
  outline: none;
  box-shadow: var(--fl-focus-ring);
}

.fl-period-custom {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--fl-space-sm);
  inline-size: 100%;
}

.fl-period-field {
  display: grid;
  gap: 0.15rem;
}

.fl-period-error {
  flex: 1 1 100%;
  color: var(--fl-danger);
  font-size: 0.8125rem;
}

.fl-period-hint {
  color: var(--fl-muted);
}

.fl-tabs {
  display: flex;
  gap: var(--fl-space-xs);
  border-block-end: 1px solid var(--fl-border);
  overflow-x: auto;
  scrollbar-width: thin;
}

.fl-tabs.is-scrollable {
  flex-wrap: nowrap;
}

.fl-tab {
  display: inline-flex;
  align-items: center;
  gap: var(--fl-space-xs);
  padding: var(--fl-space-sm) var(--fl-space-md);
  border: none;
  border-block-end: 2px solid transparent;
  background: transparent;
  color: var(--fl-muted);
  font-size: 0.875rem;
  font-weight: 600;
  white-space: nowrap;
  cursor: pointer;
}

.fl-tab.is-active {
  color: var(--fl-primary);
  border-block-end-color: var(--fl-primary);
}

.fl-tab:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.fl-tab:focus-visible {
  outline: none;
  box-shadow: var(--fl-focus-ring);
}

.fl-tab-badge {
  font-size: 0.6875rem;
  padding: 0.1rem 0.4rem;
  border-radius: 999px;
  background: var(--fl-olive-soft);
  color: var(--fl-primary);
}

.fl-table-shell-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--fl-space-md);
  margin-block-end: var(--fl-space-md);
}

@media (max-width: 768px) {
  .fl-page-header-actions {
    inline-size: 100%;
  }

  .fl-page-header-actions .fl-btn {
    flex: 1 1 auto;
  }

  .fl-drawer-panel {
    inset-block: auto 0;
    inset-inline: 0;
    inline-size: 100%;
    max-block-size: 85vh;
    border-start-start-radius: var(--fl-radius-lg);
    border-start-end-radius: var(--fl-radius-lg);
    animation-name: fl-slide-up;
  }
}

@keyframes fl-slide-up {
  from { transform: translateY(100%); }
  to { transform: translateY(0); }
}

/* -------------------------------------------------------------------------- */
/* 14. Pilot helpers (poultry coexistence)                                    */
/* -------------------------------------------------------------------------- */

.poultry-page.fl-page .fl-pilot-header {
  margin-block-end: var(--fl-space-lg);
}

.poultry-page.fl-page .fl-grid-kpi.fl-pilot-kpis {
  margin-block-end: var(--fl-space-xl);
}

.fl-stock-grid {
  display: grid;
  gap: var(--fl-space-md);
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.fl-stock-item {
  padding: var(--fl-space-md);
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-md);
  background: var(--fl-surface-muted);
}

.fl-stock-item.is-warning {
  border-color: #f0d89a;
  background: var(--fl-warning-soft);
}

@media (prefers-reduced-motion: reduce) {
  .fl-skeleton::after,
  .fl-drawer-backdrop,
  .fl-drawer-panel,
  .fl-card-hover {
    animation: none;
    transition: none;
  }
}

/* Official FarmLivo logos — PNG transparent pack (do not filter / scale / cover) */
.farmlivo-logo-navbar {
  display: block;
  width: auto;
  height: 46px;
  max-width: 190px;
  object-fit: contain;
  flex-shrink: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
}

@media (max-width: 768px) {
  .farmlivo-logo-navbar {
    height: 38px;
    max-width: 155px;
  }
}

.farmlivo-logo-login {
  display: block;
  width: min(240px, 70vw);
  height: auto;
  margin: 0 auto;
  object-fit: contain;
  background: transparent;
  border: 0;
  box-shadow: none;
}

.login-logo-card {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  max-width: 100%;
  padding: 18px 26px;
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid rgba(255, 255, 255, 0.65);
  border-radius: 22px;
  box-shadow:
    0 18px 45px rgba(16, 55, 39, 0.18),
    0 2px 8px rgba(16, 55, 39, 0.08);
  backdrop-filter: blur(8px);
}

.login-logo-card .farmlivo-logo-login,
.login-logo-card img {
  width: 280px;
  max-width: min(280px, 70vw);
  height: auto;
  margin: 0;
}

.farmlivo-brand {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
}

.brand-logo,
.top-brand-logo,
.auth-hero-logo,
.boot-logo,
.login-logo-img,
.landing-brand-logo,
.landing-footer-logo,
img[src*="farmlivo-logo"] {
  display: block;
  object-fit: contain;
  background: transparent !important;
  border: 0;
  box-shadow: none;
  image-rendering: auto;
}

.brand-logo,
.top-brand-logo,
.landing-brand-logo,
.landing-footer-logo {
  width: auto;
  height: 46px;
  max-width: 190px;
}

.auth-hero-logo,
.boot-logo,
.login-logo-img {
  width: min(240px, 70vw);
  height: auto;
  max-height: none;
}

.brand-logo-wrap,
.login-brand-logo-wrap,
.app-logo-wrap,
.sidebar-logo-wrap,
.header-logo-wrap,
.navbar-brand {
  background: transparent;
  border: 0;
  box-shadow: none;
}

/* -------------------------------------------------------------------------- */
/* 14. Forms                                                                  */
/* -------------------------------------------------------------------------- */

.fl-form {
  display: flex;
  flex-direction: column;
  gap: var(--fl-space-lg);
}

.fl-field {
  display: flex;
  flex-direction: column;
  gap: var(--fl-space-xs);
}

.fl-label,
.fl-form .form-label {
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--fl-text);
  margin: 0;
}

.fl-hint {
  font-size: 0.75rem;
  color: var(--fl-muted);
  line-height: 1.4;
}

.fl-error {
  font-size: 0.75rem;
  color: var(--fl-danger);
  font-weight: 600;
}

.fl-input,
.fl-select,
.fl-textarea,
.fl-form .form-control,
.fl-form .form-select {
  width: 100%;
  padding: 0.6rem 0.85rem;
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-sm);
  background: var(--fl-surface);
  color: var(--fl-text);
  font-family: inherit;
  font-size: 0.9375rem;
  line-height: 1.4;
  transition: border-color var(--fl-transition), box-shadow var(--fl-transition);
}

.fl-input:focus,
.fl-select:focus,
.fl-textarea:focus,
.fl-form .form-control:focus,
.fl-form .form-select:focus {
  outline: none;
  border-color: var(--fl-primary);
  box-shadow: var(--fl-focus-ring);
}

.fl-input.is-invalid,
.fl-form .form-control.is-invalid {
  border-color: var(--fl-danger);
}

.fl-form-grid {
  display: grid;
  gap: var(--fl-space-lg);
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
}

/* -------------------------------------------------------------------------- */
/* 15. Modal                                                                  */
/* -------------------------------------------------------------------------- */

/* Bootstrap modals must sit above sticky .fl-app-header (1250) / farm menu (1260). */
.modal-backdrop {
  z-index: 1390;
}

.modal {
  z-index: 1400;
}

body.fl-body-scroll-locked {
  overflow: hidden !important;
  touch-action: none;
}

/* Animal-group create modal: global (not scoped) so scroll always works */
.animal-groups-create-overlay {
  position: fixed !important;
  inset: 0 !important;
  z-index: 1400 !important;
  display: flex !important;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  overflow: hidden !important;
  background: rgba(31, 42, 36, 0.42);
}

.animal-groups-create-dialog {
  display: flex !important;
  flex-direction: column !important;
  width: min(920px, 100%);
  height: min(92vh, 900px) !important;
  max-height: min(92vh, 900px) !important;
  overflow: hidden !important;
  border-radius: var(--fl-radius-lg, 12px);
  border: 1px solid var(--fl-border, #e5e7eb);
  background: var(--fl-surface, #fff);
  box-shadow: 0 24px 64px rgba(15, 23, 42, 0.28);
}

.animal-groups-create-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex: 0 0 auto !important;
  padding: 1rem 1.25rem;
  border-bottom: 1px solid var(--fl-border, #e5e7eb);
  background: var(--fl-surface, #fff);
}

.animal-groups-create-form {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
  height: 100% !important;
  overflow: hidden !important;
  margin: 0;
}

.animal-groups-create-body {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  height: 0 !important; /* force flex child to take remaining space and scroll */
  overflow-x: hidden !important;
  overflow-y: scroll !important;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: 1rem 1.25rem;
  touch-action: pan-y;
}

.animal-groups-create-footer {
  display: flex;
  justify-content: flex-end;
  gap: 0.75rem;
  flex: 0 0 auto !important;
  padding: 0.85rem 1.25rem;
  border-top: 1px solid var(--fl-border, #e5e7eb);
  background: var(--fl-surface, #fff);
}

.fl-modal-backdrop,
.confirm-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1400;
  display: grid;
  place-items: center;
  padding: var(--fl-space-lg);
  background: rgba(31, 42, 36, 0.42);
  animation: fl-fade-in 180ms ease;
}

.fl-modal-panel,
.confirm-dialog {
  width: min(520px, 100%);
  max-height: min(90vh, 720px);
  overflow: auto;
  padding: var(--fl-space-xl);
  border-radius: var(--fl-radius-lg);
  border: 1px solid var(--fl-border);
  background: var(--fl-surface);
  box-shadow: var(--fl-shadow-hover);
  animation: fl-scale-in 200ms ease;
}

.fl-modal-head,
.confirm-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--fl-space-md);
  margin-block-end: var(--fl-space-md);
}

.fl-modal-title,
.confirm-head h5 {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--fl-text);
}

.fl-modal-body {
  color: var(--fl-text);
  line-height: 1.55;
}

.fl-modal-footer,
.confirm-actions {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--fl-space-sm);
  margin-block-start: var(--fl-space-lg);
  padding-block-start: var(--fl-space-md);
  border-block-start: 1px solid var(--fl-border);
}

@keyframes fl-scale-in {
  from { opacity: 0; transform: scale(0.96) translateY(8px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}

/* -------------------------------------------------------------------------- */
/* 16. Form drawer (shared with poultry module)                               */
/* -------------------------------------------------------------------------- */

.fl-form-drawer-overlay,
.poultry-drawer-overlay {
  position: fixed;
  inset: 0;
  z-index: 1400;
  background: rgba(31, 42, 36, 0.42);
  display: flex;
  justify-content: flex-end;
  align-items: stretch;
  animation: fl-fade-in 180ms ease;
}

.fl-form-drawer-panel,
.poultry-drawer-panel {
  width: min(560px, 100vw);
  height: 100vh;
  max-height: 100vh;
  overflow: hidden;
  background: var(--fl-surface);
  padding: var(--fl-space-xl);
  box-shadow: -8px 0 32px rgba(36, 81, 58, 0.14);
  display: flex;
  flex-direction: column;
  gap: var(--fl-space-lg);
  animation: fl-slide-in 220ms ease;
}

.fl-form-drawer-panel.is-wide {
  width: min(680px, 100vw);
}

.fl-form-drawer-head,
.poultry-drawer-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--fl-space-lg);
  padding-block-end: var(--fl-space-md);
  border-block-end: 1px solid var(--fl-border);
}

.fl-form-drawer-eyebrow,
.poultry-drawer-eyebrow {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--fl-muted);
}

.fl-form-drawer-title,
.poultry-drawer-title {
  margin: var(--fl-space-xs) 0 0;
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--fl-text);
}

.fl-form-drawer-body,
.poultry-drawer-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.fl-form-drawer-footer,
.poultry-drawer-footer {
  margin-block-start: auto;
  display: flex;
  flex-wrap: wrap;
  gap: var(--fl-space-sm);
  padding-block-start: var(--fl-space-lg);
  border-block-start: 1px solid var(--fl-border);
}

[dir="rtl"] .fl-form-drawer-overlay,
[dir="rtl"] .poultry-drawer-overlay {
  justify-content: flex-start;
}

[dir="rtl"] .fl-form-drawer-panel,
[dir="rtl"] .poultry-drawer-panel {
  box-shadow: 8px 0 32px rgba(36, 81, 58, 0.14);
  animation-name: fl-slide-in-rtl;
}

@media (max-width: 768px) {
  .fl-form-drawer-overlay,
  .poultry-drawer-overlay {
    justify-content: center;
    align-items: flex-end;
  }

  .fl-form-drawer-panel,
  .poultry-drawer-panel {
    width: 100vw;
    height: 92vh;
    border-radius: var(--fl-radius-lg) var(--fl-radius-lg) 0 0;
  }
}

/* -------------------------------------------------------------------------- */
/* 17. Toolbar, filters, chips                                                */
/* -------------------------------------------------------------------------- */

.fl-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--fl-space-lg);
}

.fl-toolbar-main {
  flex: 1 1 16rem;
  min-width: 0;
}

.fl-toolbar-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--fl-space-sm);
}

.fl-search-inline {
  display: flex;
  gap: var(--fl-space-sm);
  align-items: stretch;
}

.fl-search-inline .fl-input,
.fl-search-inline .form-control {
  min-width: 12rem;
}

.fl-filter-grid {
  display: grid;
  gap: var(--fl-space-lg);
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
}

.fl-chip-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--fl-space-sm);
}

.fl-chip-label {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--fl-muted);
}

.fl-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--fl-space-xs);
  padding: 0.4rem 0.85rem;
  border-radius: 999px;
  border: 1px solid var(--fl-border);
  background: var(--fl-surface);
  color: var(--fl-text);
  font-size: 0.8125rem;
  font-weight: 600;
  cursor: pointer;
  transition: background var(--fl-transition), border-color var(--fl-transition), color var(--fl-transition), box-shadow var(--fl-transition);
}

.fl-chip:hover {
  border-color: var(--fl-border-strong);
  background: var(--fl-surface-muted);
}

.fl-chip.is-active {
  border-color: var(--fl-primary);
  background: var(--fl-olive-soft);
  color: var(--fl-primary);
  box-shadow: var(--fl-shadow-soft);
}

/* -------------------------------------------------------------------------- */
/* 18. Sticky actions                                                         */
/* -------------------------------------------------------------------------- */

.fl-sticky-actions {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--fl-space-sm);
  padding: var(--fl-space-md) 0;
  margin-block-end: var(--fl-space-lg);
  background: color-mix(in srgb, var(--fl-bg) 92%, transparent);
  backdrop-filter: blur(8px);
}

/* -------------------------------------------------------------------------- */
/* 19. Status badge extensions                                                */
/* -------------------------------------------------------------------------- */

.fl-badge-draft { background: var(--fl-sand-soft); color: #7a6520; }
.fl-badge-archived { background: #eceff1; color: #546e7a; }
.fl-badge-active { background: var(--fl-success-soft); color: var(--fl-success); }
.fl-badge-inactive { background: var(--fl-surface-muted); color: var(--fl-muted); }

/* -------------------------------------------------------------------------- */
/* 20. Bootstrap bridge inside FarmLivo pages                                 */
/* -------------------------------------------------------------------------- */

.fl-page .btn-primary {
  background: var(--fl-primary);
  border-color: var(--fl-primary);
}

.fl-page .btn-primary:hover {
  background: var(--fl-primary-hover);
  border-color: var(--fl-primary-hover);
}

.fl-page .btn-outline-primary {
  color: var(--fl-primary);
  border-color: var(--fl-border-strong);
}

.fl-page .btn-outline-primary:hover {
  background: var(--fl-olive-soft);
  color: var(--fl-primary);
  border-color: var(--fl-primary);
}

.fl-page .section-card {
  background: var(--fl-surface);
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-lg);
  box-shadow: var(--fl-shadow-soft);
}

.fl-page .ui-species-tab {
  border-radius: 999px;
  border: 1px solid var(--fl-border);
  background: var(--fl-surface);
  color: var(--fl-text);
  font-weight: 600;
}

.fl-page .ui-species-tab.active {
  border-color: var(--fl-primary);
  background: var(--fl-olive-soft);
  color: var(--fl-primary);
}

.fl-page .animal-table {
  --bs-table-bg: transparent;
}

.fl-page .animal-table thead th {
  background: var(--fl-surface-muted);
  color: var(--fl-muted);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border-bottom: 1px solid var(--fl-border);
}

.fl-page .animal-table tbody tr:hover {
  background: color-mix(in srgb, var(--fl-olive-soft) 40%, transparent);
}

/* -------------------------------------------------------------------------- */
/* 21. App shell + legacy bridge (all authenticated pages)                    */
/* -------------------------------------------------------------------------- */

.fl-app-content {
  background: var(--fl-bg-page);
  color: var(--fl-text);
  padding-block: 1.25rem 2rem;
}

.fl-app-content .btn-primary,
.fl-page .btn-primary {
  background: var(--fl-primary);
  border-color: var(--fl-primary);
  border-radius: var(--fl-radius-md);
  font-weight: 600;
  min-height: var(--fl-btn-height);
}

.fl-app-content .btn-primary:hover,
.fl-page .btn-primary:hover {
  background: var(--fl-primary-hover);
  border-color: var(--fl-primary-hover);
}

.fl-app-content .btn-outline-primary,
.fl-page .btn-outline-primary {
  color: var(--fl-primary);
  border-color: var(--fl-border-strong);
  border-radius: var(--fl-radius-md);
  font-weight: 600;
}

.fl-app-content .btn-outline-primary:hover,
.fl-page .btn-outline-primary:hover {
  background: var(--fl-olive-soft);
  color: var(--fl-primary);
  border-color: var(--fl-primary);
}

.fl-app-content .btn-outline-secondary,
.fl-app-content .btn-secondary,
.fl-page .btn-outline-secondary,
.fl-page .btn-secondary {
  border-radius: var(--fl-radius-md);
  font-weight: 600;
  border-color: var(--fl-border-strong);
}

.fl-app-content .section-card,
.fl-page .section-card {
  background: var(--fl-surface);
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-lg);
  box-shadow: var(--fl-shadow-soft);
  padding: 1rem 1.25rem;
}

.fl-app-content .form-label,
.fl-page .form-label,
.fl-app-content .fl-label,
.fl-page .fl-label {
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--fl-muted);
  margin-bottom: 0.35rem;
}

.fl-app-content .form-control,
.fl-app-content .form-select,
.fl-page .form-control,
.fl-page .form-select,
.fl-app-content .fl-input,
.fl-page .fl-input {
  border-radius: var(--fl-radius-md);
  border: 1px solid var(--fl-border);
  background: var(--fl-surface);
  min-height: 2.5rem;
}

.fl-app-content .form-control:focus,
.fl-app-content .form-select:focus,
.fl-page .form-control:focus,
.fl-page .form-select:focus {
  border-color: var(--fl-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--fl-primary) 18%, transparent);
}

.fl-app-content .ui-species-tab,
.fl-app-content .species-tab,
.fl-page .ui-species-tab {
  border-radius: 999px;
  border: 1px solid var(--fl-border);
  background: var(--fl-surface);
  color: var(--fl-text);
  font-weight: 600;
  padding: 0.4rem 0.9rem;
}

.fl-app-content .ui-species-tab.active,
.fl-app-content .species-tab.active,
.fl-page .ui-species-tab.active {
  border-color: var(--fl-primary);
  background: var(--fl-olive-soft);
  color: var(--fl-primary);
}

.fl-app-content .empty-state,
.fl-page .empty-state {
  background: var(--fl-surface-muted);
  border: 1px dashed var(--fl-border);
  border-radius: var(--fl-radius-lg);
  color: var(--fl-muted);
  padding: 1.5rem;
  text-align: center;
}

.fl-app-content .table,
.fl-page .table {
  --bs-table-bg: transparent;
}

.fl-app-content .table thead th,
.fl-page .table thead th {
  background: var(--fl-surface-muted);
  color: var(--fl-muted);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border-bottom: 1px solid var(--fl-border);
}

.fl-app-content .table tbody tr:hover,
.fl-page .table tbody tr:hover {
  background: color-mix(in srgb, var(--fl-olive-soft) 35%, transparent);
}

.fl-app-content .dashboard-section-card,
.fl-page .dashboard-section-card {
  background: var(--fl-surface);
  border: 1px solid var(--fl-border);
  border-radius: var(--fl-radius-lg);
  box-shadow: var(--fl-shadow-soft);
}

.fl-app-content .dashboard-section-title,
.fl-page .dashboard-section-title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--fl-text);
}

.fl-app-content .dashboard-section-eyebrow,
.fl-page .dashboard-section-eyebrow {
  color: var(--fl-primary);
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

/* Dashboard shell layout */
.fl-dashboard-shell {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.fl-dashboard-shell-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 1.25rem;
}

.fl-dashboard-shell-grid--single {
  grid-template-columns: 1fr;
}

@media (max-width: 1024px) {
  .fl-dashboard-shell-grid {
    grid-template-columns: 1fr;
  }

  .fl-page-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.75rem;
  }

  .fl-page-header-actions {
    width: 100%;
    flex-wrap: wrap;
  }

  .fl-grid-kpi {
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  }
}

@media (max-width: 640px) {
  .fl-app-content {
    padding-inline: 0.75rem !important;
  }

  .fl-page-container {
    padding-inline: 0;
  }

  .fl-toolbar,
  .fl-filter-grid {
    grid-template-columns: 1fr;
  }

  .fl-search-inline {
    flex-direction: column;
    align-items: stretch;
  }

  .fl-modal-panel {
    margin: 0.75rem;
    max-width: calc(100vw - 1.5rem);
  }
}

/* -------------------------------------------------------------------------- */
/* Dark theme                                                                 */
/* -------------------------------------------------------------------------- */

[data-theme="dark"] {
  --fl-bg: #101512;
  --fl-surface: #182019;
  --fl-surface-muted: #141a16;
  --fl-text: #e8eee9;
  --fl-muted: #9aa89f;
  --fl-muted-2: #738078;
  --fl-border: #2a3530;
  --fl-border-strong: #36423c;
  --fl-olive-soft: #243024;
  --fl-sand-soft: #2a2618;
  --fl-info-soft: #1a2830;
  --fl-success-soft: #1a2a20;
  --fl-warning-soft: #2a2210;
  --fl-danger-soft: #301816;
  --fl-shadow-soft: 0 8px 24px rgba(0, 0, 0, 0.35);
  --fl-shadow-hover: 0 12px 32px rgba(0, 0, 0, 0.45);
}

[data-theme="dark"] body,
[data-theme="dark"] #app,
[data-theme="dark"] .content,
[data-theme="dark"] .fl-app-content {
  background: var(--fl-bg) !important;
  color: var(--fl-text);
}

[data-theme="dark"] .farm-card,
[data-theme="dark"] .fl-section-card,
[data-theme="dark"] .activity-kpi,
[data-theme="dark"] .activity-filter-chip,
[data-theme="dark"] .form-control,
[data-theme="dark"] .admin-timeline-item {
  background: var(--fl-surface);
  color: var(--fl-text);
  border-color: var(--fl-border);
}

[data-theme="dark"] .sidebar,
[data-theme="dark"] .nav-shell,
[data-theme="dark"] .top-row {
  background: #121916;
  border-color: var(--fl-border);
}

[data-theme="dark"] .farm-logo-preview {
  background: var(--fl-surface-muted);
  border: 1px solid var(--fl-border);
  border-radius: 8px;
  max-height: 72px;
  padding: 0.5rem;
}

.farm-dashboard-hero-weather-row {
  display: grid;
  gap: 1rem;
  grid-template-columns: minmax(0, 1fr);
}

@media (min-width: 1100px) {
  .farm-dashboard-hero-weather-row {
    grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
    align-items: start;
  }
}

.farm-weather-widget {
  min-height: 180px;
}

.farm-weather-widget--rtl {
  direction: rtl;
}

.farm-weather-widget-temp {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--fl-text);
}

.farm-weather-widget-body {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}

.farm-weather-widget-current {
  display: flex;
  gap: 0.75rem;
  align-items: center;
}

.farm-weather-widget-icon {
  font-size: 1.75rem;
  line-height: 1;
}

.farm-weather-widget-muted {
  margin: 0;
  color: var(--fl-text-muted);
  font-size: 0.92rem;
}

.farm-weather-widget-metrics {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem 1rem;
  font-size: 0.9rem;
  color: var(--fl-text-muted);
}

.farm-weather-widget-forecast-title {
  display: block;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--fl-text-muted);
  margin-bottom: 0.35rem;
}

.farm-weather-widget-forecast-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(56px, 1fr));
  gap: 0.5rem;
}

.farm-weather-widget-forecast-day {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.45rem 0.5rem;
  border-radius: 8px;
  background: var(--fl-surface-muted);
  font-size: 0.82rem;
}

.farm-weather-widget-advice {
  border-radius: 10px;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--fl-border);
  background: var(--fl-surface-muted);
}

.farm-weather-widget-advice.is-warning {
  border-color: #f59e0b55;
  background: #fffbeb;
}

.farm-weather-widget-advice.is-critical {
  border-color: #ef444455;
  background: #fef2f2;
}

.farm-weather-widget-advice-label {
  display: block;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--fl-text-muted);
  margin-bottom: 0.2rem;
}

.farm-weather-widget-advice p {
  margin: 0;
  font-size: 0.9rem;
}

.farm-weather-widget-skeleton {
  min-height: 120px;
  border-radius: 10px;
  background: linear-gradient(90deg, var(--fl-surface-muted), var(--fl-surface), var(--fl-surface-muted));
  background-size: 200% 100%;
  animation: fl-skeleton-shimmer 1.2s ease-in-out infinite;
}

.dashboard-section-accent-sky .dashboard-section-accent {
  background: linear-gradient(180deg, #38bdf8, #0ea5e9);
}
