/* Famly – pozdější doplňky a přepisy napříč moduly. POZOR: záměrně se načítá POSLEDNÍ z main-* sady – pravidla tady přepisují dřívější. Nové styly patří do domény, sem jen vědomé přepisy. (D18 split) */
/* ========================================================================
   BUDGET - category item + category CRUD modals
   ======================================================================== */

.category-item {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-3);
  background: transparent;
  border: none;
  border-radius: var(--r-lg);
  text-align: left;
  width: 100%;
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease-out), transform var(--t-fast) var(--ease-spring);
  position: relative;
}

.category-item:active { transform: scale(0.98); background: var(--state-active); }

/* Always show edit icon on touch (no hover) */
@media (hover: none) {
  .category-edit-btn { opacity: 0.55; }
}

/* Color swatches */
.color-swatches {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}

.color-swatch {
  width: 32px;
  height: 32px;
  border-radius: var(--r-full);
  border: 2px solid transparent;
  cursor: pointer;
  transition: transform var(--t-fast), border-color var(--t-fast);
}

.color-swatch.selected {
  border-color: #fff;
  transform: scale(1.15);
}

/* Icon picker */
.icon-picker {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}

.icon-pick-btn {
  width: 48px;
  height: 48px;
  border-radius: var(--r-md);
  background: var(--glass-bg);
  border: 1.5px solid transparent;
  color: var(--text-secondary);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background var(--t-fast), border-color var(--t-fast), color var(--t-fast);
}

.icon-pick-btn.selected {
  background: var(--brand-primary-muted);
  border-color: var(--brand-primary);
  color: var(--brand-primary-light);
}

.icon-pick-btn:active { transform: scale(0.92); }

/* === Mobilní zmenšení fontů === */
@media (max-width: 480px) {
  .card-value { font-size: var(--fs-xl); }
  .weight-panel .weight-current span:first-child { font-size: var(--fs-xl) !important; }
  .week-day-date { font-size: var(--fs-base); }
  .week-day { min-height: 96px; padding: var(--sp-2) 2px; }
  .week-day-name { font-size: 9px; letter-spacing: 0.04em; }
  .day-kcal-big .text-lg { font-size: var(--fs-xl); }
  h2[style*="fs-2xl"], .dog-name { font-size: var(--fs-xl) !important; }
}

.dog-photo-edit {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-3);
  margin-bottom: var(--sp-4);
}

.shopping-item-label {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  flex: 1;
  min-width: 0;
  cursor: pointer;
}
.shopping-item .btn-icon-sm { flex-shrink: 0; }

/* === Měsíční rozpočet (příjmy / pravidelné výdaje) === */
.recurring-summary {
  display: flex;
  gap: var(--sp-2);
  margin: var(--sp-3) 0;
}
.recurring-stat {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--sp-2) var(--sp-3);
  background: var(--glass-bg-soft);
  border-radius: var(--r-md);
}
.recurring-stat-label {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
}
.recurring-stat-value {
  font-weight: var(--fw-bold);
  font-size: var(--fs-sm);
  font-variant-numeric: tabular-nums;
}
.recurring-stat-value.income { color: #10B981; }
.recurring-stat-value.expense { color: #EF4444; }

/* Zbývá tento měsíc – hero karta nahoře v přehledu výdajů */
.budget-remaining-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-2);
}
.budget-remaining-label {
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  color: var(--text-secondary);
  letter-spacing: -0.01em;
}
.budget-remaining-badge {
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  color: var(--section-accent);
  background: color-mix(in srgb, var(--section-accent) 16%, transparent);
  padding: 3px var(--sp-2);
  border-radius: var(--r-full);
  font-variant-numeric: tabular-nums;
}
.budget-remaining-badge.over { color: var(--color-danger); background: rgba(239,68,68,0.15); }

.budget-remaining-value {
  font-size: var(--fs-4xl);
  font-weight: var(--fw-bold);
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--text-primary);
  margin: var(--sp-2) 0 var(--sp-3);
}
.budget-remaining-value.negative { color: var(--color-danger); }

.budget-remaining-bar {
  height: 6px;
  border-radius: var(--r-full);
  background: rgba(255,255,255,0.10);
  overflow: hidden;
  margin-bottom: var(--sp-4);
}
.budget-remaining-bar-fill {
  height: 100%;
  border-radius: var(--r-full);
  background: linear-gradient(90deg, var(--section-accent), var(--section-accent-2));
  transition: width var(--t-slow) var(--ease-out);
}
.budget-remaining-bar-fill.over { background: var(--color-danger); }

.budget-remaining-pills {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}
.brp {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px var(--sp-3);
  border-radius: var(--r-md);
  background: var(--glass-bg-soft);
  border: 1px solid var(--glass-border);
  font-size: var(--fs-xs);
}
.brp-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.brp-dot.income { background: #10B981; }
.brp-dot.fixed  { background: #F59E0B; }
.brp-dot.spent  { background: #EC4899; }
.brp-label { color: var(--text-tertiary); }
.brp-amt { font-weight: var(--fw-semibold); color: var(--text-secondary); font-variant-numeric: tabular-nums; }

.budget-remaining-hint {
  margin-top: var(--sp-3);
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
}

.recurring-list {
  display: flex;
  flex-direction: column;
}
.recurring-item {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-3) 0;
  width: 100%;
  text-align: left;
  background: none;
  border: none;
  border-bottom: 1px solid var(--glass-border);
  cursor: pointer;
  transition: opacity var(--t-fast);
}
.recurring-item:last-child { border-bottom: none; }
.recurring-item:active { opacity: 0.6; }
.recurring-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
}
.recurring-dot.income { background: #10B981; }
.recurring-dot.expense { background: #EF4444; }
.recurring-body { flex: 1; min-width: 0; }
.recurring-name { font-weight: var(--fw-semibold); font-size: var(--fs-base); }
.recurring-meta { font-size: var(--fs-xs); color: var(--text-tertiary); }
.recurring-amount {
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
}
.recurring-amount.income { color: #10B981; }
.recurring-amount.expense { color: #EF4444; }

/* PIN – vizuální zpětná vazba při ověřování */
.pin-input-container.verifying { animation: pinPulse 700ms ease-in-out infinite; }
.pin-input-container.verifying .pin-dot.filled {
  background: var(--brand-primary);
  box-shadow: 0 0 10px rgba(124,58,237,0.6);
}
@keyframes pinPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}
.day-panel { scroll-margin-top: var(--sp-4); }

/* === Jemnější stisk karet (mobile feedback) === */
.card[data-action]:active,
button.card:active {
  transform: scale(0.985);
  filter: brightness(1.04);
}
.card { transition: transform var(--t-fast) var(--ease-spring), box-shadow var(--t-base) var(--ease-out), filter var(--t-fast); }

/* === Plynulé scrollování === */
.app-main, .modal-sheet, .segmented { -webkit-overflow-scrolling: touch; }

/* === Ripple jemnější === */
.ripple { background: rgba(255,255,255,0.22); }
[data-theme="light"] .ripple { background: rgba(124,58,237,0.12); }

/* === Polish pass: konzistence velikostí a odsazení === */

/* Kompaktní týdenní hlavička v Jídle */
.week-nav-header { align-items: center; gap: var(--sp-3); }
.week-range {
  font-size: var(--fs-md);
  font-weight: var(--fw-bold);
  letter-spacing: -0.01em;
  margin-top: 2px;
  white-space: nowrap;
}
.btn-icon-sm.glass {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--r-md);
}
.min-w-0 { min-width: 0; }

/* FAB nepřekrývá poslední obsah – víc místa dole */
.app-main { padding-bottom: calc(var(--nav-height) + var(--safe-bottom) + 104px); }

/* Měsíční rozpočet – čitelnější hodnoty */
.recurring-stat-value { font-size: var(--fs-base); }

/* FAB jemný stín a stisk – stín v barvě akcentu sekce */
.fab {
  box-shadow: 0 10px 28px var(--section-glow), 0 2px 8px rgba(0,0,0,0.3);
  transition: transform var(--t-fast) var(--ease-spring), box-shadow var(--t-base);
}
.fab:active { transform: scale(0.9); }

/* Jednotné mezery sekcí (view-container) na mobilu o kousek menší */
@media (max-width: 480px) {
  .view-container { gap: var(--sp-4); }
  .card { padding: var(--sp-4); }
  .week-range { font-size: var(--fs-base); }
}

/* === Dog birthday card === */
.birthday-card {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
}
.birthday-icon {
  font-size: 32px;
  width: 56px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--r-lg);
  background: var(--brand-gradient-soft);
  flex-shrink: 0;
}
.birthday-date {
  font-size: var(--fs-lg);
  font-weight: var(--fw-bold);
  letter-spacing: -0.01em;
  margin-top: 2px;
}
.birthday-next {
  font-size: var(--fs-sm);
  color: var(--brand-primary-light);
  font-weight: var(--fw-medium);
  margin-top: 2px;
}

/* === Jednotný nadpis stránky === */
/* Jednotná hlavička stránky: titulek (+ podtitulek). Kontextové ovládání
   (přepínač měsíce, segmenty) je samostatný sourozenec pod ní – rozestup
   drží gap .view-containeru, takže je všude stejný. */
.page-header {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.page-title, .meals-title {
  font-size: var(--fs-2xl);
  font-weight: var(--fw-bold);
  letter-spacing: -0.02em;
  margin: 0;
}
.page-subtitle {
  font-size: var(--fs-sm);
  color: var(--text-tertiary);
  margin: 0;
}
@media (max-width: 480px) {
  .page-title, .meals-title { font-size: var(--fs-xl); }
}

/* === Přepínač měsíců (Výdaje) === */
.month-switcher {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
}
.month-switcher-label {
  font-size: var(--fs-md);
  font-weight: var(--fw-bold);
  letter-spacing: -0.01em;
}
.btn-icon-sm[disabled] { opacity: 0.3; pointer-events: none; }

/* === Obálky (spoření) === */
.envelope-list { display: flex; flex-direction: column; }
.envelope-item {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-3) 0; width: 100%; text-align: left;
  background: none; border: none; border-bottom: 1px solid var(--glass-border);
  cursor: pointer; transition: opacity var(--t-fast);
}
.envelope-item:last-child { border-bottom: none; }
.envelope-item:active { opacity: 0.6; }
.envelope-emoji {
  font-size: 22px; width: 42px; height: 42px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: var(--r-md); background: var(--glass-bg-strong);
}
.envelope-body { flex: 1; min-width: 0; }
.envelope-name { font-weight: var(--fw-semibold); }
.envelope-meta { font-size: var(--fs-xs); color: var(--text-tertiary); }
.envelope-balance { font-weight: var(--fw-bold); font-variant-numeric: tabular-nums; color: var(--brand-primary-light); }

.env-balance-box {
  text-align: center; padding: var(--sp-4);
  background: var(--brand-gradient-soft); border-radius: var(--r-lg);
}
.env-balance-big { font-size: var(--fs-2xl); font-weight: var(--fw-bold); letter-spacing: -0.02em; }
.env-actions { display: flex; gap: var(--sp-2); }
.env-history-header { letter-spacing: -0.01em; font-weight: var(--fw-semibold); padding-top: var(--sp-2); }
.env-moves { display: flex; flex-direction: column; }
.env-move {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2);
  padding: var(--sp-2) 0; border-bottom: 1px solid var(--glass-border);
}
.env-move:last-child { border-bottom: none; }
.env-move-amount { font-weight: var(--fw-bold); font-variant-numeric: tabular-nums; }
.env-move-amount.pos { color: #10B981; }
.env-move-amount.neg { color: #EF4444; }
.env-move-meta { font-size: var(--fs-xs); color: var(--text-tertiary); margin-top: 1px; }

.emoji-picker { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.emoji-btn {
  width: 44px; height: 44px; font-size: 22px; border-radius: var(--r-md);
  background: var(--glass-bg); border: 1.5px solid transparent; cursor: pointer;
}
.emoji-btn.selected { border-color: var(--brand-primary); background: var(--brand-primary-muted); }

/* === Graf výdajů v čase === */
.trend-chart {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--sp-2);
  height: 140px;
  margin-top: var(--sp-3);
}
.trend-col {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  gap: var(--sp-1);
  height: 100%;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
}
.trend-val {
  font-size: 10px;
  font-weight: var(--fw-semibold);
  color: var(--text-tertiary);
  font-variant-numeric: tabular-nums;
}
.trend-bar {
  width: 70%;
  max-width: 28px;
  border-radius: var(--r-sm);
  background: var(--glass-bg-strong);
  transition: height var(--t-base) var(--ease-spring), background var(--t-fast), transform var(--t-fast);
  min-height: 4px;
}
.trend-col.active .trend-bar { background: var(--brand-gradient); box-shadow: 0 0 14px rgba(124,58,237,0.5); }
.trend-col:active .trend-bar { transform: scaleY(0.96); }
.trend-col.active .trend-val { color: var(--brand-primary-light); }
.trend-label {
  font-size: var(--fs-xs);
  color: var(--text-tertiary);
  text-transform: capitalize;
}
.trend-col.active .trend-label { color: var(--text-secondary); font-weight: var(--fw-semibold); }

/* === iOS „Přidat na plochu" banner === */
.ios-install {
  position: fixed;
  left: 50%;
  bottom: calc(var(--nav-height) + var(--safe-bottom) + var(--sp-3));
  transform: translate(-50%, 140%);
  width: min(420px, calc(100vw - var(--sp-5) * 2));
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-4);
  background: var(--glass-bg-strong);
  backdrop-filter: blur(40px) saturate(180%);
  -webkit-backdrop-filter: blur(40px) saturate(180%);
  border: 1px solid var(--glass-border-strong);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-xl);
  z-index: var(--z-toast);
  opacity: 0;
  transition: transform 400ms var(--ease-spring), opacity 300ms var(--ease-out);
}
.ios-install.show { transform: translate(-50%, 0); opacity: 1; }
.ios-install-icon {
  width: 40px; height: 40px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: var(--r-md); color: #fff; background: var(--brand-gradient);
}
.ios-install-text { display: flex; flex-direction: column; flex: 1; min-width: 0; gap: 1px; }
.ios-install-text strong { font-weight: var(--fw-bold); font-size: var(--fs-sm); }
.ios-install-text span { font-size: var(--fs-xs); color: var(--text-secondary); }
.ios-install-text b { color: var(--text-primary); font-weight: var(--fw-semibold); }
.ios-install-close {
  width: 32px; height: 32px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: var(--r-full); color: var(--text-tertiary);
  background: var(--glass-bg);
}

/* === Pull-to-refresh (iOS styl) === */
.ptr {
  position: fixed;
  top: calc(var(--safe-top) + var(--header-height) - 8px);
  left: 50%;
  transform: translateX(-50%);
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  border-radius: var(--r-full);
  background: var(--glass-bg-strong);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid var(--glass-border);
  box-shadow: var(--shadow-md);
  opacity: 0;
  z-index: var(--z-sticky);
  pointer-events: none;
  transition: opacity 200ms var(--ease-out), transform 250ms var(--ease-spring);
}
.ptr-spin {
  width: 18px; height: 18px;
  border: 2px solid var(--glass-border-strong);
  border-top-color: var(--brand-primary);
  border-radius: 50%;
}
.ptr.ready .ptr-spin { border-top-color: var(--brand-primary-light); }
.ptr.spinning .ptr-spin { animation: spin 700ms linear infinite; }

/* ====================================================================
   DASHBOARD – REDESIGN
   Kompaktní hlavička, agenda „Dnes", sloučená výživa, statistické
   dlaždice a rychlé zkratky. Rozestupy řeší .view-container (gap).
   ==================================================================== */

/* --- Hlavička --- */
.dash-top { display: flex; flex-direction: column; gap: var(--sp-3); }
.dash-top-main { display: flex; align-items: center; gap: var(--sp-3); }
.dash-top-forecast { display: flex; padding-top: var(--sp-3); border-top: 1px solid var(--glass-border); }
.dash-top-avatar { flex: none; }
.dash-top-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.dash-hello { font-size: var(--fs-lg); font-weight: var(--fw-bold); letter-spacing: -0.01em; color: var(--text-primary); line-height: var(--lh-tight); }
.dash-date { font-size: var(--fs-sm); color: var(--text-secondary); }
.dash-nameday { font-size: var(--fs-xs); color: var(--text-tertiary); }
.dash-wchip {
  flex: none; display: flex; align-items: center; gap: 5px;
  padding: 7px 12px; border-radius: var(--r-full);
  background: var(--glass-bg); border: 1px solid var(--glass-border);
  font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--text-secondary);
}
.dash-wchip-icon { font-size: 15px; line-height: 1; }
.dash-wday { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; min-width: 0; }
.dash-wday + .dash-wday { border-left: 1px solid var(--glass-border); }
.dash-wday-l { font-size: var(--fs-xs); color: var(--text-tertiary); }
.dash-wday-i { font-size: 22px; line-height: 1; }
.dash-wday-t { font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--text-primary); white-space: nowrap; }

/* --- Obecná dashboard karta --- */
.dash-card { display: block; width: 100%; text-align: left; }
.dash-head { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); margin-bottom: var(--sp-3); }
.dash-title { font-size: var(--fs-md); font-weight: var(--fw-bold); letter-spacing: -0.01em; color: var(--text-primary); }
.dash-sub { font-size: var(--fs-xs); color: var(--text-tertiary); }
.dash-empty { font-size: var(--fs-sm); color: var(--text-tertiary); padding: var(--sp-1) 0; }

/* --- Sedmáček radí (asistent) --- */
.sed-tip {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  background: var(--brand-gradient-soft);
  border: 1px solid var(--glass-border);
}
.sed-tip-mascot { flex: 0 0 auto; width: 58px; height: 58px; }
.sed-tip-mascot .sed-mascot { display: block; }
.sed-tip-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.sed-tip-name {
  font-size: var(--fs-xs); font-weight: var(--fw-bold); letter-spacing: 0.02em;
  color: var(--brand-primary-light);
}
.sed-tip-text { font-size: var(--fs-sm); color: var(--text-secondary); line-height: var(--lh-normal); }
.sed-tip-btn { align-self: flex-start; margin-top: var(--sp-1); }

/* --- Agenda „Dnes" --- */
.agenda-list { display: flex; flex-direction: column; }
.agenda-item { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-2) 0; }
.agenda-item + .agenda-item { border-top: 1px solid var(--glass-border); }
.agenda-ico {
  flex: none; width: 32px; height: 32px; border-radius: var(--r-sm);
  display: flex; align-items: center; justify-content: center; font-size: 16px;
}
.agenda-title { flex: 1; min-width: 0; font-size: var(--fs-base); font-weight: var(--fw-medium); color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.agenda-meta { flex: none; font-size: var(--fs-sm); color: var(--text-tertiary); font-variant-numeric: tabular-nums; }
.agenda-item.urgent .agenda-meta { color: var(--color-danger); font-weight: var(--fw-medium); }

/* --- Výživa: kruh kalorií + makro pruhy --- */
.nutri { display: flex; align-items: center; gap: var(--sp-4); }
.cal-ring { position: relative; flex: none; width: 112px; height: 112px; }
.cal-ring-center { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; }
.cal-ring-num { font-size: var(--fs-xl); font-weight: var(--fw-bold); letter-spacing: -0.02em; color: var(--text-primary); line-height: 1; }
.cal-ring-goal { font-size: var(--fs-xs); color: var(--text-tertiary); }
.cal-ring-of { font-size: 10px; color: var(--text-muted); line-height: 1; margin-top: 1px; }
.nutri-empty-hint {
  margin-top: var(--sp-3);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--glass-border);
  font-size: var(--fs-sm);
  color: var(--text-tertiary);
  text-align: center;
}

/* Globální hledání (lupa v hlavičce) */
.app-header-actions { display: flex; align-items: center; gap: var(--sp-2); }

.global-search {
  position: fixed; inset: 0; z-index: var(--z-modal);
  background: var(--bg-overlay);
  backdrop-filter: blur(24px) saturate(180%);
  -webkit-backdrop-filter: blur(24px) saturate(180%);
  display: flex; flex-direction: column;
  padding: calc(var(--safe-top) + var(--sp-3)) var(--sp-4) var(--sp-4);
  animation: fadeIn var(--t-base) var(--ease-out);
}
.global-search.removing { opacity: 0; transition: opacity var(--t-fast) var(--ease-out); }
.gsearch-bar { display: flex; align-items: center; gap: var(--sp-2); }
.gsearch-ico { color: var(--text-tertiary); flex-shrink: 0; margin-left: var(--sp-1); }
.gsearch-input {
  flex: 1; min-width: 0; height: 46px; padding: 0 var(--sp-3);
  background: var(--input-bg); border: 1px solid var(--input-border);
  border-radius: var(--r-md); color: var(--input-text); font-size: 16px;
}
.gsearch-cancel {
  background: none; border: none; color: var(--section-accent);
  font-size: var(--fs-base); font-weight: var(--fw-medium);
  padding: var(--sp-2); flex-shrink: 0; cursor: pointer;
}
.gsearch-results { flex: 1; overflow-y: auto; margin-top: var(--sp-4); -webkit-overflow-scrolling: touch; }
.gsearch-hint { color: var(--text-tertiary); text-align: center; padding: var(--sp-7) var(--sp-4); font-size: var(--fs-sm); }
.gsearch-group { margin-bottom: var(--sp-4); }
.gsearch-group-title {
  font-size: var(--fs-xs); font-weight: var(--fw-semibold);
  color: var(--text-tertiary); letter-spacing: 0.02em;
  margin-bottom: var(--sp-2); padding: 0 var(--sp-2);
}
.gsearch-item {
  display: flex; align-items: center; gap: var(--sp-3); width: 100%;
  padding: var(--sp-3); border-radius: var(--r-md);
  background: var(--glass-bg-soft); border: 1px solid var(--glass-border);
  text-align: left; margin-bottom: var(--sp-1); cursor: pointer;
  transition: background-color var(--t-fast) var(--ease-out), transform var(--t-fast) var(--ease-spring);
}
.gsearch-item:active { transform: scale(0.99); background: var(--state-active); }
.gsearch-item-ico { font-size: 20px; flex-shrink: 0; }
.gsearch-item-body { display: flex; flex-direction: column; min-width: 0; }
.gsearch-item-title { font-weight: var(--fw-medium); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gsearch-item-sub { font-size: var(--fs-xs); color: var(--text-tertiary); }

/* Účtenka u výdaje – náhled + lightbox */
.receipt-preview {
  width: 56px; height: 56px; border-radius: var(--r-md);
  overflow: hidden; background: var(--glass-bg-soft);
  border: 1px solid var(--glass-border);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; cursor: pointer; padding: 0;
}
.receipt-preview img { width: 100%; height: 100%; object-fit: cover; }
.receipt-lightbox {
  position: fixed; inset: 0; z-index: var(--z-modal);
  background: rgba(0,0,0,0.92);
  display: flex; align-items: center; justify-content: center;
  padding: var(--sp-5); animation: fadeIn var(--t-base) var(--ease-out);
}
.receipt-lightbox img { max-width: 100%; max-height: 90vh; border-radius: var(--r-md); box-shadow: var(--shadow-xl); }
.receipt-lightbox-close {
  position: absolute; top: calc(var(--safe-top) + var(--sp-4)); right: var(--sp-4);
  width: 40px; height: 40px; border-radius: 50%;
  background: rgba(255,255,255,0.15); color: #fff;
  display: flex; align-items: center; justify-content: center;
}

/* Úkoly domácnosti */
.task-list { display: flex; flex-direction: column; }
.task-item { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-2) 0; }
.task-check {
  width: 28px; height: 28px; border-radius: 50%;
  border: 2px solid var(--glass-border-strong); background: transparent; color: #fff;
  display: flex; align-items: center; justify-content: center; flex-shrink: 0; cursor: pointer;
  transition: background var(--t-fast) var(--ease-out), border-color var(--t-fast), transform var(--t-fast) var(--ease-spring);
}
.task-check:active { transform: scale(0.88); }
.task-item.done .task-check { background: var(--section-accent); border-color: var(--section-accent); }
.task-body {
  flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px;
  background: none; border: none; text-align: left; cursor: pointer; padding: 0;
}
.task-title { font-weight: var(--fw-medium); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.task-item.done .task-title { text-decoration: line-through; color: var(--text-tertiary); }
.task-meta { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
.task-assignee { font-size: var(--fs-xs); font-weight: var(--fw-medium); padding: 2px var(--sp-2); border-radius: var(--r-full); }
.task-due { font-size: var(--fs-xs); color: var(--text-tertiary); }
.task-due.overdue { color: var(--color-danger); font-weight: var(--fw-semibold); }
.task-rec { font-size: var(--fs-xs); color: var(--text-tertiary); background: var(--glass-bg-soft); padding: 2px var(--sp-2); border-radius: var(--r-full); }
.task-alldone { text-align: center; padding: var(--sp-4); color: var(--text-secondary); font-size: var(--fs-md); }

.dogs-card { text-align: left; }
.dash-card-line { margin-top: var(--sp-2); font-size: var(--fs-sm); color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dogs-card-vac {
  margin-top: var(--sp-2);
  font-size: var(--fs-sm);
  color: var(--text-secondary);
}
.dogs-card-vac.urgent { color: var(--color-danger); font-weight: var(--fw-semibold); }
.macro-bars { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--sp-3); }
.mbar-row { display: flex; flex-direction: column; gap: 5px; }
.mbar-top { display: flex; align-items: baseline; justify-content: space-between; font-size: var(--fs-sm); gap: var(--sp-2); }
.mbar-label { color: var(--text-secondary); }
.mbar-val { color: var(--text-primary); font-weight: var(--fw-medium); font-variant-numeric: tabular-nums; white-space: nowrap; }
.mbar-goal { color: var(--text-tertiary); font-weight: var(--fw-regular); }
.mbar-track { height: 7px; border-radius: var(--r-full); background: var(--glass-bg-strong); overflow: hidden; }
.mbar-fill { height: 100%; border-radius: var(--r-full); transition: width 600ms var(--ease-out); }

/* --- Statistické dlaždice (útrata + váha) --- */
.dash-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); }
.stat-tile { display: flex; flex-direction: column; text-align: left; min-width: 0; }
.stat-top { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); margin-bottom: var(--sp-2); }
.stat-label { font-size: var(--fs-sm); color: var(--text-tertiary); }
.stat-ico {
  flex: none; width: 30px; height: 30px; border-radius: var(--r-sm);
  display: flex; align-items: center; justify-content: center;
  background: var(--brand-gradient-soft); color: var(--brand-primary-light);
}
.stat-value { font-size: var(--fs-xl); font-weight: var(--fw-bold); letter-spacing: -0.02em; color: var(--text-primary); line-height: 1.1; }
.stat-progress { margin: var(--sp-3) 0 var(--sp-2); height: 6px; }
.stat-foot { font-size: var(--fs-xs); color: var(--text-tertiary); }
.wt-row { display: flex; align-items: baseline; gap: var(--sp-2); flex-wrap: wrap; }
.wt-unit { font-size: var(--fs-sm); color: var(--text-tertiary); font-weight: var(--fw-regular); margin-left: 3px; }
.wt-badge { font-size: var(--fs-xs); font-weight: var(--fw-semibold); padding: 2px 7px; border-radius: var(--r-full); }
.wt-badge.loss { background: rgba(16,185,129,0.15); color: #34D399; }
.wt-badge.gain { background: rgba(239,68,68,0.15); color: #F87171; }
.stat-tile .weight-sparkline { margin-top: var(--sp-2); }

/* --- Rychlé zkratky --- */
.quick-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(70px, 1fr)); gap: var(--sp-2); }

/* Tlačítko „Přizpůsobit dashboard" + modal s customizací widgetů */
.dash-customize-btn {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin: var(--sp-3) auto var(--sp-1); padding: var(--sp-2) var(--sp-4);
  background: transparent; border: 1px solid var(--glass-border);
  border-radius: var(--r-full); color: var(--text-tertiary);
  font-size: var(--fs-sm); font-weight: var(--fw-medium);
  transition: color var(--t-fast), border-color var(--t-fast), background var(--t-fast);
}
.dash-customize-btn:active { transform: scale(0.97); color: var(--text-secondary); background: var(--state-active); }
.cust-list { display: flex; flex-direction: column; gap: var(--sp-2); margin-bottom: var(--sp-4); }
.cust-row {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-2) var(--sp-3); border-radius: var(--r-md);
  background: var(--glass-bg); border: 1px solid var(--glass-border);
}
.cust-reorder { display: flex; flex-direction: column; gap: 2px; }
.cust-move {
  display: flex; align-items: center; justify-content: center;
  width: 26px; height: 20px; border-radius: 6px;
  background: var(--glass-bg-strong); border: none; color: var(--text-secondary);
}
.cust-move:disabled { opacity: 0.3; }
.cust-move:active:not(:disabled) { transform: scale(0.9); color: var(--brand-primary); }
.cust-label { flex: 1; font-weight: var(--fw-medium); }

/* Farma – Prodeje */
.farm-chips {
  display: flex; gap: var(--sp-2); overflow-x: auto; -webkit-overflow-scrolling: touch;
  padding: 2px 2px var(--sp-1); margin: 0 0 var(--sp-3); scrollbar-width: none;
}
.farm-chips::-webkit-scrollbar { display: none; }
.farm-chip {
  flex: 0 0 auto; padding: var(--sp-2) var(--sp-4); border-radius: var(--r-full);
  background: var(--glass-bg); border: 1px solid var(--glass-border);
  color: var(--text-secondary); font-size: var(--fs-sm); font-weight: var(--fw-medium);
  white-space: nowrap;
}
.farm-chip.active {
  background: var(--section-accent); border-color: var(--section-accent);
  color: #fff;
}
.farm-total-row { display: flex; align-items: center; justify-content: space-between; }
.farm-total-label { color: var(--text-secondary); font-size: var(--fs-sm); }
.farm-total-val { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--section-accent); }
.farm-month-sub { color: var(--section-accent); font-weight: var(--fw-semibold); font-size: var(--fs-sm); }
.farm-list { display: flex; flex-direction: column; }
.farm-row {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3);
  width: 100%; text-align: left; padding: var(--sp-3) 0;
  border-bottom: 1px solid var(--glass-border); background: transparent;
}
.farm-row:last-child { border-bottom: none; }
.farm-row-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.farm-row-title { font-weight: var(--fw-semibold); }
.farm-row-sub { font-size: var(--fs-xs); color: var(--text-tertiary); }
.farm-row-right { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; flex: 0 0 auto; }
.farm-row-amt { font-weight: var(--fw-semibold); }
.farm-row-note { font-size: var(--fs-xs); color: var(--text-tertiary); }
.farm-unitprice { min-height: 18px; font-size: var(--fs-sm); color: var(--section-accent); font-weight: var(--fw-medium); margin: calc(-1 * var(--sp-1)) 0 var(--sp-2); }

/* Farma – Brigádníci (rozbalitelné osoby) */
.farm-worker-head {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3);
  width: 100%; text-align: left; background: transparent; padding: 0;
}
.farm-worker-name { font-weight: var(--fw-bold); font-size: var(--fs-md); }
.farm-worker-right { display: flex; align-items: center; gap: var(--sp-2); flex: 0 0 auto; }
.farm-worker-chev { color: var(--text-tertiary); display: flex; transition: transform var(--t-fast) var(--ease-out); }
.farm-worker.open .farm-worker-chev { transform: rotate(180deg); color: var(--section-accent); }
.farm-worker.open .farm-list { margin-top: var(--sp-3); border-top: 1px solid var(--glass-border); }

/* Farma – Přehled (statistiky) */
.farm-hero { text-align: center; }
.farm-hero-label { color: var(--text-secondary); font-size: var(--fs-sm); }
.farm-hero-val { font-size: var(--fs-3xl); font-weight: var(--fw-bold); color: var(--section-accent); margin: var(--sp-1) 0 var(--sp-3); letter-spacing: -0.02em; }
.farm-hero-val.negative { color: var(--color-danger); }
.farm-hero-pills { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.farm-pill {
  flex: 1 1 140px; display: flex; align-items: center; gap: 6px;
  padding: var(--sp-2) var(--sp-3); border-radius: var(--r-md);
  background: var(--glass-bg); border: 1px solid var(--glass-border);
  font-size: var(--fs-sm); color: var(--text-secondary);
}
.farm-pill-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.farm-pill-dot.rev { background: var(--section-accent); }
.farm-pill-dot.gig { background: #CA8A04; }
.farm-pill-dot.cost { background: #B45309; }
.farm-pill-dot.wage { background: var(--color-danger); }
.farm-pill-amt { margin-left: auto; font-weight: var(--fw-semibold); color: var(--text-primary); }
.farm-stat-row {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3);
  padding: var(--sp-3) 0; border-bottom: 1px solid var(--glass-border);
}
.farm-stat-row:last-child { border-bottom: none; }
.farm-badge {
  display: inline-block; margin-left: var(--sp-2); padding: 1px 8px;
  border-radius: var(--r-full); font-size: 11px; font-weight: var(--fw-semibold);
  background: color-mix(in srgb, var(--section-accent) 22%, transparent); color: var(--section-accent);
  vertical-align: middle;
}
.farm-note { margin-top: var(--sp-3); font-size: var(--fs-sm); color: var(--text-tertiary); }

/* Farma má 5 záložek → vodorovně posuvné segmenty (nic se neořízne, na širším
   displeji vyplní celou šířku). */
.segmented-farm { overflow-x: auto; overflow-y: hidden; scrollbar-width: none; }
.segmented-farm::-webkit-scrollbar { display: none; }
.segmented-farm .segment { flex: 1 0 auto; padding-left: var(--sp-2); padding-right: var(--sp-2); }
.farm-mbadge {
  display: inline-block; margin-left: var(--sp-2); padding: 1px 8px;
  border-radius: var(--r-full); font-size: 11px; font-weight: var(--fw-semibold);
  vertical-align: middle;
}
.farm-mbadge.kombajn { background: color-mix(in srgb, #CA8A04 22%, transparent); color: #CA8A04; }
.farm-mbadge.traktor { background: color-mix(in srgb, #15803D 22%, transparent); color: #15803D; }

/* Farma – správa plodin */
.farm-chip-manage { display: inline-flex; align-items: center; justify-content: center; padding: var(--sp-2); color: var(--text-tertiary); }
.farm-crop-list { display: flex; flex-direction: column; gap: var(--sp-2); margin-bottom: var(--sp-4); }
.farm-crop-row { display: flex; align-items: center; gap: var(--sp-2); }
.farm-crop-row .farm-crop-name { flex: 1; min-width: 0; }
.farm-crop-row .farm-crop-unit { flex: 0 0 82px; }
.farm-crop-del {
  flex: 0 0 auto; display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: var(--r-md);
  background: var(--glass-bg); border: 1px solid var(--glass-border); color: var(--color-danger);
}
.farm-crop-del:active { transform: scale(0.92); }
.farm-crop-add { display: flex; align-items: center; gap: var(--sp-2); }
.farm-crop-add [data-new-name] { flex: 1; min-width: 0; }
.farm-crop-add [data-new-unit] { flex: 0 0 82px; }
.farm-crop-add [data-new-parent] { flex: 1; min-width: 0; }
.farm-crop-add [data-add] { flex: 0 0 auto; }
/* odrůda pod plodinou (Česnek → Bjetín) – odsazený řádek */
.farm-crop-row--child { margin-left: var(--sp-3); padding-left: var(--sp-3); border-left: 2px solid var(--glass-border); }

/* Přehled – rozpad plodiny po odrůdách („kolik se čeho prodalo") */
.farm-parts { display: flex; flex-direction: column; gap: 6px; padding: var(--sp-2) 0 var(--sp-3) var(--sp-3); border-left: 2px solid var(--glass-border); margin-left: var(--sp-1); }
.farm-subrow { display: flex; align-items: baseline; gap: var(--sp-3); font-size: var(--fs-sm); }
.farm-subrow-name { flex: 1; min-width: 0; color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.farm-subrow-qty { flex: 0 0 auto; color: var(--text-tertiary); font-size: var(--fs-xs); }
.farm-subrow-amt { flex: 0 0 auto; color: var(--text-primary); font-weight: var(--fw-semibold); }

/* Farma – Objednávky */
.farm-section-label {
  display: flex; align-items: center; gap: 6px;
  margin: var(--sp-3) 0 var(--sp-2); padding: 0 var(--sp-1);
  font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--section-accent);
}
.farm-section-label.muted { color: var(--text-tertiary); }
.farm-section-label svg { flex: 0 0 auto; }

.farm-pending-nudge {
  display: flex; align-items: center; gap: var(--sp-3); width: 100%; text-align: left; cursor: pointer;
}
.farm-pending-ico {
  flex: 0 0 auto; display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: var(--r-md);
  background: color-mix(in srgb, var(--section-accent) 16%, transparent); color: var(--section-accent);
}
.farm-pending-chev { flex: 0 0 auto; color: var(--text-tertiary); display: flex; }

.farm-order { display: flex; flex-direction: column; gap: var(--sp-3); }
.farm-order.done { opacity: 0.9; }
.farm-order-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sp-2); }
.farm-order-head-btn {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2);
  width: 100%; text-align: left; cursor: pointer;
}
.farm-order-total { flex: 0 0 auto; font-weight: var(--fw-bold); color: var(--section-accent); }
.farm-order-done-right { display: flex; align-items: center; gap: var(--sp-2); flex: 0 0 auto; }
.farm-order.done .farm-worker-chev { color: var(--text-tertiary); display: flex; transition: transform var(--t-fast) var(--ease-out); }
.farm-order.done.open .farm-worker-chev { transform: rotate(180deg); color: var(--section-accent); }
.farm-order-items {
  display: flex; flex-direction: column; gap: 4px;
  padding-left: var(--sp-3); border-left: 2px solid var(--glass-border);
}
.farm-order-item { display: flex; justify-content: space-between; gap: var(--sp-3); font-size: var(--fs-sm); }
.farm-order-item-name { color: var(--text-secondary); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.farm-order-item-qty { color: var(--text-tertiary); flex: 0 0 auto; }
.farm-order-actions { display: flex; gap: var(--sp-2); }
.farm-order-actions .btn { flex: 1; }

/* modal – řádky položek objednávky */
.farm-oitems { display: flex; flex-direction: column; gap: var(--sp-2); margin-bottom: var(--sp-2); }
.farm-oitem { display: flex; align-items: center; gap: var(--sp-2); }
.farm-oitem .oitem-crop { flex: 1 1 auto; min-width: 0; }
.farm-oitem .oitem-qty { flex: 0 0 78px; }
.farm-oitem-del {
  flex: 0 0 auto; display: flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: var(--r-md);
  background: var(--glass-bg); border: 1px solid var(--glass-border); color: var(--text-tertiary);
}
.farm-oitem-del:active { transform: scale(0.92); }
.farm-oadd { width: 100%; }

/* sheet – vyřízení objednávky */
.farm-fulfill-labels { display: flex; gap: var(--sp-2); padding: 0 var(--sp-1) 4px; font-size: var(--fs-xs); color: var(--text-tertiary); }
.farm-fulfill-labels span:first-child { flex: 1; }
.farm-fulfill-labels span:nth-child(2) { flex: 0 0 78px; }
.farm-fulfill-labels span:last-child { flex: 0 0 92px; }
.farm-fulfill-list { display: flex; flex-direction: column; gap: var(--sp-2); }
.farm-fulfill-row { display: flex; align-items: center; gap: var(--sp-2); }
.farm-fulfill-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--fs-sm); font-weight: var(--fw-medium); }
.farm-fulfill-unit { color: var(--text-tertiary); font-weight: var(--fw-normal); font-size: var(--fs-xs); }
.farm-fulfill-qty { flex: 0 0 78px; }
.farm-fulfill-price { flex: 0 0 92px; }
.farm-fulfill-total {
  display: flex; align-items: center; justify-content: space-between;
  margin: var(--sp-3) 0; padding-top: var(--sp-3); border-top: 1px solid var(--glass-border);
  font-weight: var(--fw-bold);
}
.farm-fulfill-total span:last-child { color: var(--section-accent); font-size: var(--fs-lg); }

/* Průvodce prvním nastavením profilu */
.setup-progress { display: flex; gap: 6px; justify-content: center; margin-bottom: var(--sp-4); }
.setup-dot { width: 28px; height: 4px; border-radius: 2px; background: var(--glass-border); transition: background var(--t-fast); }
.setup-dot.on { background: var(--brand-primary); }
.setup-hero { display: flex; flex-direction: column; align-items: center; text-align: center; gap: var(--sp-2); margin-bottom: var(--sp-4); }
.setup-hero .avatar { margin-bottom: var(--sp-1); }
.setup-title { font-size: var(--fs-lg); font-weight: var(--fw-bold); margin: 0; }
.setup-body > .setup-title { margin-bottom: 2px; }
.setup-sub { font-size: var(--fs-sm); color: var(--text-secondary); margin: 0; line-height: 1.45; }
.setup-body > .setup-sub { margin-bottom: var(--sp-3); }
.setup-methods { display: flex; flex-direction: column; gap: var(--sp-2); margin-top: var(--sp-2); }
.setup-footer { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); margin-top: var(--sp-4); }
.setup-nav { display: flex; align-items: center; gap: var(--sp-2); }
.quick-pill {
  display: flex; flex-direction: column; align-items: center; gap: 5px;
  padding: var(--sp-3) var(--sp-1); border-radius: var(--r-md);
  background: var(--glass-bg); border: 1px solid var(--glass-border);
  color: var(--text-secondary);
}
.quick-ico { color: var(--brand-primary-light); display: flex; }
.quick-ico svg { width: 22px; height: 22px; }
.quick-label { font-size: var(--fs-xs); }
