/* Generated by scripts/build_ui_token_api.py from config/ui_tokens/registry.json.
   Registry digest: 55537ba4107268f584c91d9593f9a356dc697892101d84ebf3b17dddc4f8a9ba. Do not edit this file directly. */


:root {
  color-scheme: light;
  --gh-background-canvas: radial-gradient(circle at 12% 92%, rgb(255 184 169 / 56%), transparent 35%), radial-gradient(circle at 88% 10%, rgb(150 222 209 / 56%), transparent 34%), linear-gradient(180deg, #daf2eb 0%, #f7f4ed 47%, #ef9a86 100%);
  --gh-background-photo-overlay: linear-gradient(rgb(8 16 12 / 10%) 28%, rgb(8 16 12 / 92%) 100%);
  --gh-border-urgency-width: 3px;
  --gh-border-width: 1px;
  --gh-breakpoint-compact: 640px;
  --gh-breakpoint-compact-height: 1050px;
  --gh-breakpoint-desktop: 1200px;
  --gh-breakpoint-desktop-legacy: 1180px;
  --gh-breakpoint-desktop-max: 1199px;
  --gh-breakpoint-mobile-legacy: 760px;
  --gh-breakpoint-mobile-max: 767px;
  --gh-breakpoint-phone: 520px;
  --gh-breakpoint-phone-wide: 560px;
  --gh-breakpoint-rail-wide: 1100px;
  --gh-breakpoint-tablet-min: 768px;
  --gh-breakpoint-tablet-wide: 900px;
  --gh-breakpoint-wide-max: 1439px;
  --gh-color-action: #247c65;
  --gh-color-action-soft: #e8f4ef;
  --gh-color-action-strong: #175b49;
  --gh-color-border: #e3e6e1;
  --gh-color-border-strong: #c8cec8;
  --gh-color-canvas: #f5f6f2;
  --gh-color-control-border: #667067;
  --gh-color-danger: #a33227;
  --gh-color-danger-soft: #fff1ef;
  --gh-color-focus: #247c65;
  --gh-color-info: #315f7d;
  --gh-color-info-soft: #edf4f8;
  --gh-color-navigation: #f0f2ed;
  --gh-color-on-image: #ffffff;
  --gh-color-on-image-muted: #e3e6e1;
  --gh-color-photo-overlay-base: #08100c;
  --gh-color-scrim: rgb(26 26 26 / 42%);
  --gh-color-surface: #ffffff;
  --gh-color-text: #1a1a1a;
  --gh-color-text-muted: #667067;
  --gh-color-warning: #8a560f;
  --gh-color-warning-soft: #fff7df;
  --gh-container-card-min: 260px;
  --gh-container-content: 1440px;
  --gh-container-reading: 960px;
  --gh-elevation-none: none;
  --gh-focus-offset: 3px;
  --gh-focus-width: 3px;
  --gh-grid-desktop-gap: 24px;
  --gh-grid-mobile-gap: 12px;
  --gh-layer-content: 1;
  --gh-layer-dialog: 100;
  --gh-layer-header: 10;
  --gh-layer-navigation: 40;
  --gh-layer-overlay: 80;
  --gh-motion-ease: ease;
  --gh-motion-fast: 120ms;
  --gh-motion-none: 0ms;
  --gh-opacity-disabled: 0.55;
  --gh-radius-control: 8px;
  --gh-radius-pill: 999px;
  --gh-radius-surface: 10px;
  --gh-size-control-comfortable: 48px;
  --gh-size-icon: 22px;
  --gh-size-touch-target: 44px;
  --gh-space-2xl: 32px;
  --gh-space-3xl: 40px;
  --gh-space-lg: 16px;
  --gh-space-md: 12px;
  --gh-space-none: 0px;
  --gh-space-sm: 8px;
  --gh-space-xl: 24px;
  --gh-space-xs: 4px;
  --gh-typography-body-line: 22px;
  --gh-typography-body-size: 15px;
  --gh-typography-card-line: 21px;
  --gh-typography-card-size: 16px;
  --gh-typography-family-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --gh-typography-family-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --gh-typography-line-normal: 1.45;
  --gh-typography-line-relaxed: 1.6;
  --gh-typography-line-tight: 1.2;
  --gh-typography-meta-line: 17px;
  --gh-typography-meta-size: 12px;
  --gh-typography-screen-line: 36px;
  --gh-typography-screen-size: 32px;
  --gh-typography-section-line: 26px;
  --gh-typography-section-size: 20px;
  --gh-typography-weight-bold: 700;
  --gh-typography-weight-medium: 500;
  --gh-typography-weight-regular: 400;
  --gh-typography-weight-semibold: 650;
  --gh-c-badge-radius: 999px;
  --gh-c-button-background: #ffffff;
  --gh-c-button-border: #c8cec8;
  --gh-c-button-radius: 8px;
  --gh-c-button-touch-target: 44px;
  --gh-c-card-background: #ffffff;
  --gh-c-card-border: #e3e6e1;
  --gh-c-card-radius: 8px;
  --gh-c-dialog-background: #ffffff;
  --gh-c-dialog-border: #c8cec8;
  --gh-c-dialog-radius: 10px;
  --gh-c-dialog-scrim: rgb(26 26 26 / 42%);
  --gh-c-field-background: #ffffff;
  --gh-c-field-border: #667067;
  --gh-c-field-radius: 8px;
  --gh-c-navigation-background: #f0f2ed;
  --gh-c-navigation-selected-background: #e8f4ef;
  --gh-c-navigation-selected-text: #175b49;
  --gh-c-overview-caption-right-share: 55%;
  --gh-c-overview-copy-fluid-padding: 3vw;
  --gh-c-overview-overdue-button-border: #a33227;
  --gh-c-overview-paper: #fffaf2;
  --gh-c-overview-round-radius: 50%;
  --gh-c-panel-radius: 10px;
  --gh-c-photo-stage-default-image-max-height: 78vh;
  --gh-c-photo-stage-image-height: 72vh;
  --gh-c-photo-stage-image-max-height: 780px;
  --gh-c-photo-stage-image-width: 100%;
  --gh-c-plant-card-min-height: 356px;
  --gh-c-plant-card-mobile-min-height: 330px;
  --gh-c-plant-card-on-image-muted: #e3e6e1;
  --gh-c-plant-card-on-image-text: #ffffff;
  --gh-c-plant-card-photo-min-share: 0.44;
  --gh-c-plant-card-photo-overlay: linear-gradient(rgb(8 16 12 / 10%) 28%, rgb(8 16 12 / 92%) 100%);
  --gh-c-plant-card-urgency-edge: 3px;
  --gh-c-status-danger-background: #fff1ef;
  --gh-c-status-info-background: #edf4f8;
  --gh-c-status-success-background: #e8f4ef;
  --gh-c-status-warning-background: #fff7df;
  --gh-c-wants-card-cover-height: 200px;
  --gh-c-wants-grid-column-min: 280px;
}

:root,
.gh-ux-shell,
dialog {
  --accent: var(--gh-color-action);
  --accent-2: var(--gh-color-action-strong);
  --accent-strong: var(--gh-color-action-strong);
  --bg: var(--gh-color-canvas);
  --blue: var(--gh-color-info);
  --danger: var(--gh-color-danger);
  --gh-accent: var(--gh-color-action);
  --gh-bg: var(--gh-color-canvas);
  --gh-bg-warm: var(--gh-color-canvas);
  --gh-blur-lg: var(--gh-elevation-none);
  --gh-blur-sm: var(--gh-elevation-none);
  --gh-border: var(--gh-color-border);
  --gh-border-dash: var(--gh-color-border-strong);
  --gh-border-glass: var(--gh-color-border);
  --gh-border-hair: var(--gh-color-border);
  --gh-control-bg: var(--gh-color-surface);
  --gh-control-border: var(--gh-color-border-strong);
  --gh-danger: var(--gh-color-danger);
  --gh-danger-text: var(--gh-color-danger);
  --gh-ease: var(--gh-motion-ease);
  --gh-elev-2: var(--gh-elevation-none);
  --gh-elev-3: var(--gh-elevation-none);
  --gh-focus: var(--gh-color-focus);
  --gh-fs-base: var(--gh-typography-body-size);
  --gh-fs-lg: var(--gh-typography-card-size);
  --gh-fs-md: var(--gh-typography-body-size);
  --gh-fs-xl: var(--gh-typography-section-size);
  --gh-fs-xs: var(--gh-typography-meta-size);
  --gh-fw-black: var(--gh-typography-weight-bold);
  --gh-fw-bold: var(--gh-typography-weight-bold);
  --gh-fw-medium: var(--gh-typography-weight-medium);
  --gh-fw-semi: var(--gh-typography-weight-semibold);
  --gh-glass-1-bg: var(--gh-color-surface);
  --gh-glass-2-bg: var(--gh-color-surface);
  --gh-highlight-top: var(--gh-elevation-none);
  --gh-ink: var(--gh-color-text);
  --gh-ink-2: var(--gh-color-text);
  --gh-ink-faint: var(--gh-color-text-muted);
  --gh-ink-label: var(--gh-color-text-muted);
  --gh-ink-muted: var(--gh-color-text-muted);
  --gh-ledger-accent: var(--gh-color-action);
  --gh-ledger-accent-soft: var(--gh-color-action-soft);
  --gh-ledger-accent-strong: var(--gh-color-action-strong);
  --gh-ledger-bg: var(--gh-color-canvas);
  --gh-ledger-danger: var(--gh-color-danger);
  --gh-ledger-danger-bg: var(--gh-color-danger-soft);
  --gh-ledger-info: var(--gh-color-info);
  --gh-ledger-info-bg: var(--gh-color-info-soft);
  --gh-ledger-ink: var(--gh-color-text);
  --gh-ledger-line: var(--gh-color-border);
  --gh-ledger-line-strong: var(--gh-color-border-strong);
  --gh-ledger-muted: var(--gh-color-text-muted);
  --gh-ledger-paper: var(--gh-color-surface);
  --gh-ledger-pill: var(--gh-radius-pill);
  --gh-ledger-radius: var(--gh-radius-control);
  --gh-ledger-radius-large: var(--gh-radius-surface);
  --gh-ledger-sidebar: var(--gh-color-navigation);
  --gh-ledger-warning: var(--gh-color-warning);
  --gh-ledger-warning-bg: var(--gh-color-warning-soft);
  --gh-lh-tight: var(--gh-typography-card-line);
  --gh-mint-bg: var(--gh-color-action-soft);
  --gh-mint-fg: var(--gh-color-action-strong);
  --gh-muted: var(--gh-color-text-muted);
  --gh-neutral-bg: var(--gh-color-surface);
  --gh-neutral-fg: var(--gh-color-text);
  --gh-radius-2xl: var(--gh-radius-control);
  --gh-radius-3xl: var(--gh-radius-surface);
  --gh-radius-lg: var(--gh-radius-control);
  --gh-radius-pill: var(--gh-radius-pill);
  --gh-radius-sm: var(--gh-radius-control);
  --gh-red-bg: var(--gh-color-danger-soft);
  --gh-red-fg: var(--gh-color-danger);
  --gh-ring-select: var(--gh-color-focus);
  --gh-shadow-sheet: var(--gh-elevation-none);
  --gh-sky-bg: var(--gh-color-info-soft);
  --gh-sky-fg: var(--gh-color-info);
  --gh-space-1: var(--gh-space-xs);
  --gh-space-2: var(--gh-space-sm);
  --gh-space-3: var(--gh-space-md);
  --gh-space-4: var(--gh-space-lg);
  --gh-space-5: var(--gh-space-xl);
  --gh-success: var(--gh-color-action);
  --gh-surface: var(--gh-color-surface);
  --gh-surface-2: var(--gh-color-surface);
  --gh-surface-3: var(--gh-color-action-soft);
  --gh-surface-raised: var(--gh-color-surface);
  --gh-surface-soft: var(--gh-color-action-soft);
  --gh-surface-solid: var(--gh-color-surface);
  --gh-transition-md: var(--gh-motion-fast);
  --gh-ux-accent: var(--gh-color-action);
  --gh-ux-accent-soft: var(--gh-color-action-soft);
  --gh-ux-danger: var(--gh-color-danger);
  --gh-ux-focus: var(--gh-color-focus);
  --gh-ux-ink: var(--gh-color-text);
  --gh-ux-line: var(--gh-color-border);
  --gh-ux-muted: var(--gh-color-text-muted);
  --gh-ux-panel: var(--gh-color-surface);
  --gh-ux-panel-strong: var(--gh-color-surface);
  --gh-ux-shadow: var(--gh-elevation-none);
  --gh-ux-shell-bg: var(--gh-color-canvas);
  --gh-ux-surface: var(--gh-color-surface);
  --gh-warn-bg: var(--gh-color-warning-soft);
  --gh-warn-fg: var(--gh-color-warning);
  --gh-z-overlay: var(--gh-layer-overlay);
  --gh-z-sheet: var(--gh-layer-dialog);
  --ink: var(--gh-color-text);
  --line: var(--gh-color-border);
  --muted: var(--gh-color-text-muted);
  --panel: var(--gh-color-surface);
  --panel-2: var(--gh-color-surface);
  --shadow: var(--gh-elevation-none);
  --soft: var(--gh-color-action-soft);
  --warn: var(--gh-color-warning);
}

/* compiled source: @runtime-contract | role: component-contract */
/* Public component-hook contract. data-gh-* attributes are presentation-only. */
.gh-ui-kit [data-gh-component] { box-sizing: border-box; }
.gh-ui-kit [data-gh-component="button"],
.gh-ui-kit [data-gh-component="link-action"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--gh-c-button-touch-target);
  padding: 0 var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-c-button-border);
  border-radius: var(--gh-c-button-radius);
  background: var(--gh-c-button-background);
  color: var(--gh-color-text);
  font: inherit;
  text-decoration: none;
}
.gh-ui-kit [data-gh-component="field"] { display: grid; gap: var(--gh-space-xs); color: var(--gh-color-text); }
.gh-ui-kit [data-gh-component="field"] :where(input, select, textarea) {
  width: 100%;
  min-height: var(--gh-size-touch-target);
  padding: var(--gh-space-sm) var(--gh-space-md);
  border: var(--gh-border-width) solid var(--gh-c-field-border);
  border-radius: var(--gh-c-field-radius);
  background: var(--gh-c-field-background);
  color: var(--gh-color-text);
  font: inherit;
}
.gh-ui-kit [data-gh-component="badge"] {
  display: inline-flex;
  align-items: center;
  min-height: var(--gh-space-xl);
  padding: 0 var(--gh-space-sm);
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-radius: var(--gh-c-badge-radius);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
  font-size: var(--gh-typography-meta-size);
  line-height: var(--gh-typography-meta-line);
}
.gh-ui-kit [data-gh-component="card"],
.gh-ui-kit [data-gh-component="panel"],
.gh-ui-kit [data-gh-component="plant-card"],
.gh-ui-kit [data-gh-component="plant-detail"],
.gh-ui-kit [data-gh-component="task-row"],
.gh-ui-kit [data-gh-component="event-row"],
.gh-ui-kit [data-gh-component="notice"],
.gh-ui-kit [data-gh-component="data-list"],
.gh-ui-kit [data-gh-component="media"],
.gh-ui-kit [data-gh-component="empty-state"],
.gh-ui-kit [data-gh-component="loading-state"],
.gh-ui-kit [data-gh-component="error-state"],
.gh-ui-kit [data-gh-component="dialog"],
.gh-ui-kit [data-gh-component="planning"],
.gh-ui-kit [data-gh-component="wishlist-card"],
.gh-ui-kit [data-gh-component="history"] {
  min-width: 0;
  padding: var(--gh-space-md);
  border: var(--gh-border-width) solid var(--gh-c-card-border);
  border-radius: var(--gh-c-card-radius);
  background: var(--gh-c-card-background);
  color: var(--gh-color-text);
  box-shadow: var(--gh-elevation-none);
}
.gh-ui-kit [data-gh-component="app-shell"] { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--gh-space-md); }
.gh-ui-kit [data-gh-component="navigation"] { display: flex; flex-wrap: wrap; gap: var(--gh-space-sm); padding: var(--gh-space-sm); background: var(--gh-c-navigation-background); }
.gh-ui-kit [data-gh-component="route-header"] { display: grid; gap: var(--gh-space-xs); border-bottom: var(--gh-border-width) solid var(--gh-color-border); }
.gh-ui-kit [data-gh-component="mode-switch"] { display: flex; flex-wrap: wrap; gap: var(--gh-space-sm); }
.gh-ui-kit [data-gh-component="disclosure"] { border-top: var(--gh-border-width) solid var(--gh-color-border); }
.gh-ui-kit [data-gh-component="media"] [role="img"] { display: grid; min-height: var(--gh-size-control-comfortable); place-items: center; background: var(--gh-color-navigation); }
.gh-ui-kit [data-gh-component="data-list"],
.gh-ui-kit [data-gh-component="history"] { margin: 0; list-style: none; }
.gh-ui-kit [data-gh-component="loading-state"] { cursor: progress; }
.gh-ui-kit [data-gh-component="dialog"] { position: static; width: 100%; margin: 0; border-color: var(--gh-color-border-strong); }
.gh-ui-kit [data-gh-component="plant-card"].gh-plant-catalog-card {
  --gh-catalog-surface: var(--gh-color-surface);
  --gh-catalog-surface-strong: var(--gh-color-surface);
  --gh-catalog-border: var(--gh-color-border);
  --gh-catalog-text: var(--gh-color-text);
  --gh-catalog-muted: var(--gh-color-text-muted);
  --gh-catalog-accent: var(--gh-color-action);
  --gh-catalog-accent-strong: var(--gh-color-action-strong);
  --gh-catalog-accent-soft: var(--gh-color-action-soft);
  --gh-catalog-focus: var(--gh-color-action);
  --gh-catalog-neutral-pill-bg: var(--gh-color-canvas);
  --gh-catalog-neutral-pill-text: var(--gh-color-text-muted);
  --gh-catalog-overdue-edge: var(--gh-color-danger);
  --gh-catalog-overdue-bg: var(--gh-color-danger-soft);
  --gh-catalog-overdue-text: var(--gh-color-danger);
  --gh-catalog-today-edge: var(--gh-color-warning);
  --gh-catalog-today-bg: var(--gh-color-warning-soft);
  --gh-catalog-today-text: var(--gh-color-warning);
  --gh-catalog-soon-edge: var(--gh-color-info);
  --gh-catalog-soon-bg: var(--gh-color-info-soft);
  --gh-catalog-soon-text: var(--gh-color-info);
  --gh-catalog-photo: var(--gh-color-action-soft);
  --gh-catalog-photo-overlay: var(--gh-c-plant-card-photo-overlay);
  --gh-catalog-on-image: var(--gh-c-plant-card-on-image-text);
  --gh-catalog-on-image-muted: var(--gh-c-plant-card-on-image-muted);
  padding: 0;
}

.gh-ui-kit [data-gh-variant="muted"] { color: var(--gh-color-text-muted); }
.gh-ui-kit [data-gh-variant="accent"] { border-color: var(--gh-color-info); background: var(--gh-color-info-soft); color: var(--gh-color-info); }
.gh-ui-kit [data-gh-variant="warning"] { border-color: var(--gh-color-warning); background: var(--gh-color-warning-soft); color: var(--gh-color-warning); }
.gh-ui-kit [data-gh-variant="danger"] { border-color: var(--gh-color-danger); background: var(--gh-color-danger-soft); color: var(--gh-color-danger); }
.gh-ui-kit [data-gh-variant="success"] { border-color: var(--gh-color-action); background: var(--gh-color-action-soft); color: var(--gh-color-action-strong); }
.gh-ui-kit [data-gh-component="button"][data-gh-variant="accent"],
.gh-ui-kit [data-gh-component="button"][data-gh-variant="success"] { background: var(--gh-color-action); color: var(--gh-color-surface); }

.gh-ui-kit [data-gh-state="hover"] { border-color: var(--gh-color-action); }
.gh-ui-kit [data-gh-state="active"] { border-color: var(--gh-color-action-strong); }
.gh-ui-kit [data-gh-state="focus-visible"],
.gh-ui-kit [data-gh-component="button"]:focus-visible,
.gh-ui-kit [data-gh-component="link-action"]:focus-visible,
.gh-ui-kit [data-gh-component="field"] :where(input, select, textarea):focus-visible {
  outline: var(--gh-focus-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}
.gh-ui-kit [data-gh-state="disabled"],
.gh-ui-kit :disabled { opacity: var(--gh-opacity-disabled); }
.gh-ui-kit [data-gh-state="selected"] { border-color: var(--gh-color-action); background: var(--gh-color-action-soft); }
.gh-ui-kit [data-gh-state="loading"] { cursor: progress; }
.gh-ui-kit [data-gh-state="invalid"] { border-color: var(--gh-color-danger); background: var(--gh-color-danger-soft); }

.gh-ui-kit {
  min-width: 0;
  margin: 0;
  background: var(--gh-color-canvas);
  color: var(--gh-color-text);
  font-family: var(--gh-typography-family-body);
  font-size: var(--gh-typography-body-size);
  line-height: var(--gh-typography-line-normal);
}
.gh-ui-kit__main { width: min(var(--gh-container-content), calc(100vw - var(--gh-space-2xl))); margin: 0 auto; padding: var(--gh-space-xl) 0 var(--gh-space-2xl); }
.gh-ui-kit__header { display: grid; gap: var(--gh-space-sm); margin-bottom: var(--gh-space-xl); }
.gh-ui-kit__header h1 { margin: 0; font-size: var(--gh-typography-screen-size); line-height: var(--gh-typography-screen-line); }
.gh-ui-kit__section { display: grid; gap: var(--gh-space-md); margin-top: var(--gh-space-xl); }
.gh-ui-kit__section > h2 { margin: 0; font-size: var(--gh-typography-section-size); line-height: var(--gh-typography-section-line); }
.gh-ui-kit__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--gh-container-card-min)), 1fr)); gap: var(--gh-grid-desktop-gap); }
.gh-ui-kit__card { min-width: 0; padding: var(--gh-space-lg); border: var(--gh-border-width) solid var(--gh-color-border); border-radius: var(--gh-c-card-radius); background: var(--gh-c-card-background); box-shadow: var(--gh-elevation-none); }
.gh-ui-kit__card h3 { margin: 0 0 var(--gh-space-sm); overflow-wrap: break-word; }
.gh-ui-kit__meta { color: var(--gh-color-text-muted); font-size: var(--gh-typography-meta-size); line-height: var(--gh-typography-meta-line); }
.gh-ui-kit__swatch { width: 100%; min-height: var(--gh-size-touch-target); margin-bottom: var(--gh-space-sm); border: var(--gh-border-width) solid var(--gh-color-border-strong); border-radius: var(--gh-radius-control); }
.gh-ui-kit__variants, .gh-ui-kit__states { display: grid; gap: var(--gh-space-sm); margin-top: var(--gh-space-sm); }
.gh-ui-kit__preview { display: grid; gap: var(--gh-space-sm); }
.gh-ui-kit__preview > :where(*) { max-width: 100%; }
.gh-ui-kit code { overflow-wrap: anywhere; }
@media (max-width: 767px) {
  .gh-ui-kit__main { width: min(100% - var(--gh-space-xl), var(--gh-container-content)); }
  .gh-ui-kit__grid { grid-template-columns: minmax(0, 1fr); gap: var(--gh-grid-mobile-gap); }
}
.gh-ui-kit__swatch[data-token="color.action"] { background: var(--gh-color-action); }
.gh-ui-kit__swatch[data-token="color.action-soft"] { background: var(--gh-color-action-soft); }
.gh-ui-kit__swatch[data-token="color.action-strong"] { background: var(--gh-color-action-strong); }
.gh-ui-kit__swatch[data-token="color.border"] { background: var(--gh-color-border); }
.gh-ui-kit__swatch[data-token="color.border-strong"] { background: var(--gh-color-border-strong); }
.gh-ui-kit__swatch[data-token="color.canvas"] { background: var(--gh-color-canvas); }
.gh-ui-kit__swatch[data-token="color.control-border"] { background: var(--gh-color-control-border); }
.gh-ui-kit__swatch[data-token="color.danger"] { background: var(--gh-color-danger); }
.gh-ui-kit__swatch[data-token="color.danger-soft"] { background: var(--gh-color-danger-soft); }
.gh-ui-kit__swatch[data-token="color.focus"] { background: var(--gh-color-focus); }
.gh-ui-kit__swatch[data-token="color.info"] { background: var(--gh-color-info); }
.gh-ui-kit__swatch[data-token="color.info-soft"] { background: var(--gh-color-info-soft); }
.gh-ui-kit__swatch[data-token="color.navigation"] { background: var(--gh-color-navigation); }
.gh-ui-kit__swatch[data-token="color.on-image"] { background: var(--gh-color-on-image); }
.gh-ui-kit__swatch[data-token="color.on-image-muted"] { background: var(--gh-color-on-image-muted); }
.gh-ui-kit__swatch[data-token="color.photo-overlay-base"] { background: var(--gh-color-photo-overlay-base); }
.gh-ui-kit__swatch[data-token="color.scrim"] { background: var(--gh-color-scrim); }
.gh-ui-kit__swatch[data-token="color.surface"] { background: var(--gh-color-surface); }
.gh-ui-kit__swatch[data-token="color.text"] { background: var(--gh-color-text); }
.gh-ui-kit__swatch[data-token="color.text-muted"] { background: var(--gh-color-text-muted); }
.gh-ui-kit__swatch[data-token="color.warning"] { background: var(--gh-color-warning); }
.gh-ui-kit__swatch[data-token="color.warning-soft"] { background: var(--gh-color-warning-soft); }

/* compiled source: config/ui_tokens/structure/dashboard.css | role: shared-card-structure */
* { }
    body { }
    header { background: var(--gh-color-info-soft); border-bottom: var(--gh-border-width) solid var(--line); }
    .wrap { width: min(1500px, calc(100vw - 28px)); margin: 0 auto; }
    .topbar { display: grid; grid-template-columns: minmax(260px, 1fr) auto; gap: var(--gh-space-lg); align-items: center; padding: var(--gh-space-lg) 0 var(--gh-space-lg); }
    h1 { }
    .subtitle { margin-top: var(--gh-space-sm); color: var(--muted); font-size: var(--gh-typography-body-size); }
    .actions { display: flex; gap: var(--gh-space-md); align-items: center; justify-content: flex-end; flex-wrap: wrap; }
    button { min-height: 40px; border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); background: var(--panel-2); color: var(--ink); font: inherit; }
    button.primary { border-color: var(--gh-color-border-strong); background: var(--gh-color-scrim); color: var(--gh-color-text); font-weight: var(--gh-typography-weight-bold); }
    .stats { padding: 0 0 var(--gh-space-lg); }
    .stat { border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); box-shadow: var(--gh-elevation-none); }
    button.stat { min-height: auto; color: var(--ink); }
    button.stat[aria-expanded="true"] { border-color: var(--accent); background: var(--gh-color-action-soft); }
    button.stat:focus-visible { outline: var(--gh-border-urgency-width) solid var(--accent); outline-offset: var(--gh-focus-offset); }
    .stat b { }
    .stat span { }
    .stat.future-stat { border-color: var(--gh-color-warning); background: var(--gh-color-warning-soft); }
    .stat.future-stat b { color: var(--warn); }
    .inventory-panel { margin: calc(var(--gh-space-xs) * -1) 0 var(--gh-space-lg); border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); background: var(--panel); box-shadow: var(--gh-elevation-none); padding: var(--gh-space-md); }
    .inventory-panel[hidden] { display: none; }
    .inventory-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--gh-space-md); margin-bottom: var(--gh-space-md); }
    .inventory-head h2 { margin: 0; font-size: var(--gh-typography-card-size); }
    .inventory-head span { color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .inventory-grid { display: grid; grid-template-columns: 1.2fr 1.2fr .9fr; gap: var(--gh-space-md); }
    .inventory-block { min-width: 0; border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); background: var(--panel-2); padding: var(--gh-space-md); }
    .inventory-block h3 { margin: 0 0 var(--gh-space-sm); font-size: var(--gh-typography-meta-size); color: var(--muted); font-weight: var(--gh-typography-weight-bold); }
    .mini-list { }
    .mini-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--gh-space-sm); align-items: baseline; color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .mini-row b { color: var(--ink); font-size: var(--gh-typography-meta-size); }
    /* #128: was `position: sticky`, which floated this panel over the card grid while scrolling
       (no non-sticky ancestor established a containing block, so the panel stayed pinned at
       top:0 and overlapped cards underneath it). UI kit has no sticky filter bar, so the fix
       here is to let it scroll with the rest of the content instead of pinning it. */
    .sticky-search { position: relative; z-index: var(--gh-layer-content); background: var(--gh-color-info-soft); backdrop-filter: none; border-bottom: var(--gh-border-width) solid var(--line); box-shadow: var(--gh-elevation-none); }
    .filters { display: grid; grid-template-columns: minmax(70px, 110px) minmax(260px, 1fr) auto; gap: var(--gh-space-md) var(--gh-space-lg); align-items: center; padding: var(--gh-space-md) 0 var(--gh-space-md); }
    .filter-options { display: grid; gap: var(--gh-space-md); padding: var(--gh-space-md) 0 0; }
    input, select, textarea { border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); background: var(--gh-color-surface); color: var(--ink); font: inherit; }
    .plant-id-search { text-align: center; font-weight: var(--gh-typography-weight-bold); }
    textarea { }
    .view-tabs { display: flex; flex-wrap: wrap; gap: var(--gh-space-sm); justify-content: flex-end; }
    .view-tab { min-height: 38px; border-radius: var(--gh-radius-pill); color: var(--muted); background: var(--gh-color-surface); }
    .view-tab.active { border-color: var(--accent); background: var(--gh-color-action-soft); color: var(--accent-strong); font-weight: var(--gh-typography-weight-bold); }
    .group-chips { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: var(--gh-space-sm); align-items: center; }
    .group-chip { min-height: 34px; border-radius: var(--gh-radius-pill); color: var(--muted); background: var(--gh-color-surface); font-size: var(--gh-typography-meta-size); }
    .group-chip.active { border-color: var(--accent); background: var(--gh-color-action-soft); color: var(--accent-strong); font-weight: var(--gh-typography-weight-bold); }
    .group-chip b { margin-left: var(--gh-space-sm); color: var(--ink); }
    label.toggle { display: flex; align-items: center; gap: var(--gh-space-sm); color: var(--muted); white-space: nowrap; }
    label.toggle input { width: auto; }
    main { }
    .group { margin-bottom: var(--gh-space-2xl); }
    .group-title { display: flex; align-items: baseline; justify-content: space-between; gap: var(--gh-space-md); margin: 0 0 var(--gh-space-md); padding: 0 var(--gh-space-none); }
    .group-title h2 { margin: 0; font-size: var(--gh-typography-section-size); letter-spacing: 0; }
    .group-title span { color: var(--muted); }
    /* ── Grid (#125, #128, #152 scope comment: compact UI-kit cards) ──
       Production card grid follows the accepted prototype: exactly 3 compact cards per
       desktop row, then 2 on tablet and 1 on mobile. The full operational data lives in the
       opened `.gh-sheet`; the grid card is a summary card, not an inline detail panel. */
    .plant-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gh-space-4); align-items: stretch; }
    /* ── Plant card (#125 size/spacing/radius/shadow contract, #129/#152 equal compact cards) ──
       UI-kit `.gh-plant-card`: glass-2 background, blur, radius-2xl, elev-2/hover-elev-3,
       highlight-top inset. Fixed compact height keeps rows even, while `overflow: hidden`
       prevents the regression where every grid card became a scrollable detail panel. */
    .plant-card { height: 520px; background: var(--gh-glass-2-bg), var(--panel); border: var(--gh-border-glass); border-left: var(--gh-border-urgency-width) solid var(--line); border-radius: var(--gh-radius-2xl); box-shadow: var(--gh-elevation-none); padding: var(--gh-space-lg); min-width: 0; display: flex; flex-direction: column; overflow: hidden; cursor: pointer; transition: box-shadow var(--gh-transition-md); }
    .plant-card:hover { box-shadow: var(--gh-elevation-none); }
    .plant-card[data-bucket="overdue"] { border-left-color: var(--danger); }
    .plant-card[data-bucket="today"] { border-left-color: var(--accent); }
    .plant-card[data-bucket="soon"] { border-left-color: var(--warn); }
    .plant-card[data-scenario="urgent_risk"] { border-left-color: var(--danger); }
    .plant-card[data-scenario="needs_chatgpt_triage"] { border-left-color: var(--gh-color-border-strong); }
    .plant-card[data-scenario="overdue_review"] { border-left-color: var(--gh-color-warning); }
    .plant-card[data-scenario="review_only"] { border-left-color: var(--gh-color-border-strong); }
    .plant-card[data-scenario="today_safe"] { border-left-color: var(--accent); }
    .plant-head { display: grid; grid-template-columns: 1fr; gap: var(--gh-space-md); align-items: start; }
    .media-widget { min-width: 0; display: grid; gap: var(--gh-space-sm); }
    /* ── Photo container (#129 fixed-ratio slot, #130 focal point) ──
       UI-kit `.gh-photo` is a fixed-height slot (190px in the kit's compact reference,
       scaled up here for this dashboard's larger card photo) with `.gh-photo__pills` for
       status badges layered on top of the image instead of as separate text chips. Fixed
       aspect-ratio (not just height) keeps the slot proportionally stable across breakpoints;
       object-fit: cover + object-position: center center avoids the below-center crop that
       #130 reported (was accidentally acceptable before because avatars were square icons,
       not full plant photos in a wide card). */
    .avatar { width: 100%; aspect-ratio: 4 / 3; border-radius: var(--gh-radius-lg); border: var(--gh-border-width) solid var(--line); background: var(--gh-color-canvas); display: grid; place-items: center; color: var(--accent); font-size: clamp(var(--gh-typography-screen-size), 6vw, var(--gh-typography-screen-size)); font-weight: var(--gh-typography-weight-bold); overflow: hidden; position: relative; cursor: pointer; }
    .plant-card .avatar { aspect-ratio: 16 / 9; }
    .avatar:focus-visible { outline: var(--gh-border-urgency-width) solid var(--accent); outline-offset: var(--gh-focus-offset); }
    .avatar.drag-over { border-color: var(--accent-strong); box-shadow: var(--gh-elevation-none); }
    .avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center center; display: block; }
    .avatar-pills { position: absolute; left: 9px; right: 9px; top: 9px; z-index: var(--gh-layer-content); display: flex; gap: var(--gh-space-sm); flex-wrap: wrap; pointer-events: none; }
    .avatar-overlay { position: absolute; inset: auto 8px 8px; min-height: 28px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--gh-radius-pill); background: var(--gh-color-scrim); color: var(--gh-color-surface); font-size: var(--gh-typography-meta-size); font-weight: var(--gh-typography-weight-bold); opacity: 0; transform: translateY(4px); transition: var(--gh-motion-fast) ease; pointer-events: none; }
    .avatar:hover .avatar-overlay, .avatar:focus-visible .avatar-overlay, .avatar.empty-photo .avatar-overlay, .avatar.loading-photo .avatar-overlay, .avatar.drag-over .avatar-overlay { opacity: 1; transform: translateY(0); }
    .media-tools { display: grid; grid-template-columns: auto 34px minmax(44px, auto) 34px minmax(0, 1fr); gap: var(--gh-space-sm); align-items: center; min-width: 0; color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .media-tools.single-photo { grid-template-columns: auto minmax(44px, auto) minmax(0, 1fr); }
    .media-tools button { min-width: 34px; min-height: 34px; padding: var(--gh-space-xs) var(--gh-space-sm); font-size: var(--gh-typography-meta-size); border-radius: var(--gh-radius-pill); }
    .media-tools button:disabled, .photo-nav:disabled { opacity: var(--gh-opacity-disabled); cursor: default; box-shadow: var(--gh-elevation-none); }
    .media-tools .avatar-add { grid-column: 1; }
    .media-tools .gallery-prev { grid-column: 2; }
    .media-tools .gallery-counter { grid-column: 3; justify-self: center; white-space: nowrap; font-variant-numeric: tabular-nums; }
    .media-tools .gallery-next { grid-column: 4; }
    .media-tools .gallery-delete { color: var(--danger); border-color: var(--gh-color-border); }
    .media-tools.single-photo > span:not(.photo-date) { grid-column: 2; justify-self: center; white-space: nowrap; font-variant-numeric: tabular-nums; }
    .media-tools .photo-date { grid-column: 1 / -1; grid-row: 2; justify-self: start; text-align: left; white-space: normal; min-width: 0; }
    .photo-date, .media-status { min-height: 18px; color: var(--muted); font-size: var(--gh-typography-meta-size); line-height: var(--gh-typography-line-tight); overflow-wrap: anywhere; }
    .media-status { color: var(--accent-strong); }
    .plant-card .media-tools, .plant-card .media-status { display: none; }
    .title-row { display: flex; align-items: flex-start; gap: var(--gh-space-sm); margin: 0 0 var(--gh-space-sm); }
    .plant-name { margin: 0; font-size: var(--gh-typography-card-size); line-height: var(--gh-typography-line-tight); overflow-wrap: break-word; word-break: normal; hyphens: auto; min-width: 0; }
    .name-ru { color: var(--muted); font-size: var(--gh-typography-meta-size); margin: calc(var(--gh-space-none) * -1) 0 var(--gh-space-sm); overflow-wrap: anywhere; }
    .plant-summary { color: var(--muted); font-size: var(--gh-typography-meta-size); line-height: var(--gh-typography-line-normal); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
    .collection-icon { flex: 0 0 auto; width: 26px; height: 26px; border-radius: var(--gh-radius-pill); display: inline-grid; place-items: center; border: var(--gh-border-width) solid var(--line); font-size: var(--gh-typography-card-size); font-weight: var(--gh-typography-weight-bold); line-height: var(--gh-typography-line-tight); }
    .collection-icon.in { color: var(--gh-color-action-strong); background: var(--gh-mint-bg); border-color: var(--gh-color-border); }
    .collection-icon.wish { color: var(--gh-color-text-muted); background: var(--gh-color-info-soft); border-color: var(--gh-color-border); }
    .collection-icon.out { color: var(--gh-color-danger); background: var(--gh-red-bg); border-color: var(--gh-color-border); }
    .collection-icon.pending { color: var(--gh-color-warning); background: var(--gh-warn-bg); border-color: var(--gh-color-border); }
    .collection-icon.unknown { color: var(--muted); background: var(--soft); }
    .collection-icon.out.legacy-out-icon span { transform: rotate(45deg); }
    .icon-legend { display: flex; flex-wrap: wrap; gap: var(--gh-space-sm); align-items: center; margin: calc(var(--gh-space-xs) * -1) 0 var(--gh-space-lg); color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .icon-legend span { display: inline-flex; align-items: center; gap: var(--gh-space-xs); }
    .icon-legend .collection-icon { width: 20px; height: 20px; font-size: var(--gh-typography-meta-size); }
    .plant-id { background: var(--gh-color-action-soft); color: var(--accent-strong); font-weight: var(--gh-typography-weight-bold); }
    .meta, .task-meta { display: flex; gap: var(--gh-space-sm); flex-wrap: wrap; margin-bottom: var(--gh-space-sm); }
    .pill { }
    /* ── Badge taxonomy on card photo (#125 scope comment: gh-badge variants) ──
       UI kit lays status pills on top of the card photo (`.gh-photo__pills` with
       `data-variant="quarantine|seedling|greenhouse|wishlist|today|soon|overdue"`), instead
       of the plain-text `.pill`/`.risk-flag` chips used below the photo. `.gh-badge` mirrors
       that variant taxonomy so callers can drop a small colored pill into `.avatar-pills`
       without introducing a new component; existing `.pill`/`.risk-flag`/`.collection-icon`
       markup and behavior below the photo are unchanged. */
    .gh-badge { display: inline-flex; align-items: center; gap: var(--gh-space-xs); min-height: 20px; padding: var(--gh-space-xs) var(--gh-space-sm); border-radius: var(--gh-radius-pill); background: var(--gh-neutral-bg); color: var(--gh-neutral-fg); font-size: var(--gh-fs-xs); font-weight: var(--gh-typography-weight-bold); backdrop-filter: none; white-space: nowrap; }
    .gh-badge[data-gh-variant="accent"] { background: var(--gh-sky-bg); color: var(--gh-sky-fg); }
    .gh-badge[data-gh-variant="warning"] { background: var(--gh-warn-bg); color: var(--gh-warn-fg); }
    .gh-badge[data-gh-variant="danger"] { background: var(--gh-red-bg); color: var(--gh-red-fg); }
    .gh-badge[data-gh-variant="success"] { background: var(--gh-mint-bg); color: var(--gh-mint-fg); }
    .gh-badge[data-gh-variant="muted"] { background: var(--gh-surface-3); color: var(--muted); }
    .primary-flow { display: grid; gap: var(--gh-space-sm); margin-top: var(--gh-space-md); }
    .next-action { border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); background: var(--gh-color-surface); padding: var(--gh-space-md) var(--gh-space-md); display: grid; gap: var(--gh-space-sm); }
    .next-action.missing { border-color: var(--gh-color-border); background: var(--gh-color-info-soft); }
    .next-action.future { border-color: var(--gh-color-warning); background: var(--gh-color-warning-soft); }
    .next-action div { display: flex; justify-content: space-between; gap: var(--gh-space-md); color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .next-action b { color: var(--accent-strong); }
    .next-action p { margin: 0; font-size: var(--gh-typography-body-size); overflow-wrap: anywhere; }
    .next-action small { color: var(--muted); overflow-wrap: anywhere; }
    .plant-card .next-action p, .plant-card .next-action small { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
    .risk-flags { width: 100%; display: flex; flex-wrap: wrap; gap: var(--gh-space-sm); margin-top: var(--gh-space-md); }
    .risk-flag { min-height: 24px; border-radius: var(--gh-radius-pill); padding: var(--gh-space-xs) var(--gh-space-sm); background: var(--gh-red-bg); color: var(--gh-red-fg); font-size: var(--gh-typography-meta-size); border: var(--gh-border-width) solid var(--gh-color-border); overflow-wrap: anywhere; }
    .risk-flag[data-insight="MISSING_NEXT_ACTION"] { background: var(--gh-color-action-soft); color: var(--accent-strong); border-color: var(--gh-color-border); }
    .group-cutoff, .future-section-banner, .future-cutoff { border: var(--gh-border-width) solid var(--gh-color-warning); border-radius: var(--gh-radius-control); background: var(--gh-color-warning-soft); color: var(--gh-warn-fg); }
    .group-cutoff { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--gh-space-sm) var(--gh-space-md); align-items: baseline; margin: 0 0 var(--gh-space-md); padding: var(--gh-space-md) var(--gh-space-md); }
    .group-cutoff span { color: var(--gh-warn-fg); overflow-wrap: anywhere; }
    .future-section-banner { display: grid; gap: var(--gh-space-xs); margin-top: var(--gh-space-md); padding: var(--gh-space-sm) var(--gh-space-md); }
    .future-section-banner span { color: var(--gh-warn-fg); }
    .future-cutoff { display: grid; grid-template-columns: auto auto; gap: var(--gh-space-xs) var(--gh-space-md); align-items: baseline; margin: 0 0 var(--gh-space-sm); padding: var(--gh-space-sm) var(--gh-space-sm); }
    .future-cutoff span { color: var(--gh-warn-fg); }
    .future-cutoff p { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: var(--gh-typography-meta-size); overflow-wrap: anywhere; }
    article.task.future-task { opacity: var(--gh-opacity-disabled); border-color: var(--gh-color-warning); background: var(--gh-color-danger-soft); }
    article.task.future-task.marked { border-color: var(--gh-color-warning); background: var(--gh-color-danger-soft); }
    .plant-brief { color: var(--muted); margin: var(--gh-space-md) 0 0; padding: var(--gh-space-md) var(--gh-space-md); border-radius: var(--gh-radius-control); background: var(--gh-color-surface); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gh-space-sm) var(--gh-space-lg); }
    .plant-brief div { overflow-wrap: anywhere; }
    .plant-sections { flex: 0 0 auto; min-height: 0; overflow: visible; display: grid; align-content: start; gap: var(--gh-space-sm); margin-top: var(--gh-space-md); padding-right: var(--gh-space-xs); }
    .plant-sections details { border-top: var(--gh-border-width) solid var(--line); padding-top: var(--gh-space-sm); }
    .plant-sections details:first-child { border-top: 0; padding-top: 0; }
    /* ── #126: plant detail sheet (modal, opens over the grid) ──
       Source: docs/design/ui-kit/green-house-ui-kit-standalone.html, `.gh-overlay`/`.gh-sheet`.
       The inline `.plant-card` above (with its own `<details>` sections) is left completely
       intact -- this sheet is an additional, richer view of the SAME data (avatar/gallery,
       tasks, history, brief/raw fields), opened by clicking the card. Nothing here removes or
       replaces existing markup, data-attributes, or click handlers; it only adds a modal
       promotion of the same content, per #126 acceptance ("без потери данных/функциональности"). */
    .gh-overlay { position: fixed; inset: 0; z-index: var(--gh-z-overlay); background: var(--gh-color-scrim); backdrop-filter: none; display: flex; align-items: center; justify-content: center; padding: clamp(var(--gh-space-lg), 4vw, var(--gh-space-2xl)); }
    .gh-overlay[data-state="closed"] { display: none; }
    .gh-sheet { width: min(1120px, calc(100vw - 56px)); max-height: min(900px, calc(100vh - 56px)); overflow: auto; -webkit-overflow-scrolling: touch; background: var(--gh-glass-1-bg); backdrop-filter: none; border-radius: var(--gh-radius-3xl); border: var(--gh-border-glass); box-shadow: var(--gh-elevation-none); display: grid; grid-template-columns: 1fr; gap: var(--gh-space-4); padding: var(--gh-space-lg); z-index: var(--gh-z-sheet); }
    .gh-sheet__top { display: grid; grid-template-columns: minmax(280px, 340px) minmax(0, 1fr); gap: var(--gh-space-5); align-items: start; }
    .gh-sheet__photo { min-height: 0; overflow: visible; align-self: start; }
    .gh-sheet__photo .media-widget { display: grid; gap: var(--gh-space-md); min-width: 0; }
    .gh-sheet__photo .avatar { height: auto; min-height: 0; max-height: min(560px, calc(100vh - 190px)); aspect-ratio: 4 / 5; border-radius: var(--gh-radius-surface); }
    .gh-sheet__col { display: flex; flex-direction: column; gap: var(--gh-space-3); min-width: 0; min-height: 0; overflow: visible; }
    .gh-sheet__head { display: flex; align-items: flex-start; gap: var(--gh-space-3); }
    .gh-sheet__heading-copy { flex: 1; min-width: 0; }
    .gh-sheet__title { font-size: var(--gh-fs-xl); font-weight: var(--gh-fw-bold); letter-spacing: 0; color: var(--ink); overflow-wrap: anywhere; }
    .gh-sheet__sub { font-size: var(--gh-fs-base); color: var(--muted); font-style: italic; margin-top: var(--gh-space-none); overflow-wrap: anywhere; }
    .gh-sheet__close { width: 36px; height: 36px; min-height: 36px; border-radius: 50%; background: var(--soft); display: flex; align-items: center; justify-content: center; font-size: var(--gh-typography-body-size); color: var(--ink); cursor: pointer; flex: none; padding: 0; }
    .gh-sheet__close:hover { background: var(--line); }
    .gh-sheet__pills { display: flex; gap: var(--gh-space-sm); flex-wrap: wrap; }
    .gh-plant-info-actions { display: flex; align-items: center; gap: var(--gh-space-md); flex-wrap: wrap; }
    .gh-plant-info-copy { min-height: 40px; border-radius: var(--gh-radius-surface); padding: var(--gh-space-sm) var(--gh-space-md); background: var(--gh-color-scrim); border-color: var(--gh-color-border-strong); color: var(--gh-color-text); font-size: var(--gh-fs-base); font-weight: var(--gh-fw-bold); }
    .gh-plant-info-copy:disabled { opacity: var(--gh-opacity-disabled); cursor: default; }
    .gh-plant-info-status { min-height: 18px; color: var(--muted); font-size: var(--gh-fs-base); }
    .gh-photo-tools-row { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--gh-space-sm) var(--gh-space-md); align-items: center; margin-top: auto; }
    .gh-photo-tools-row .media-tools { min-width: 0; }
    .gh-photo-tools-row .media-status { grid-column: 1 / -1; min-height: 16px; }
    .gh-photo-note { color: var(--muted); font-size: var(--gh-typography-meta-size); line-height: var(--gh-typography-line-normal); overflow-wrap: anywhere; }
    .gh-action-line { height: 4px; border-radius: var(--gh-radius-pill); background: var(--accent); }
    .gh-sheet__tasks,
    .gh-sheet__history,
    .gh-sheet__details { display: grid; gap: var(--gh-space-md); border-radius: var(--gh-radius-surface); background: var(--gh-color-surface); border: var(--gh-border-width) solid var(--gh-color-border); box-shadow: var(--gh-elevation-none); padding: var(--gh-space-lg); }
    .gh-sheet__section-head { display: flex; justify-content: space-between; gap: var(--gh-space-md); align-items: flex-start; }
    .gh-sheet__section-head h3 { margin: 0; color: var(--ink); font-size: var(--gh-fs-md); font-weight: var(--gh-fw-bold); }
    .gh-sheet__section-head p { margin: var(--gh-space-xs) 0 0; color: var(--muted); font-size: var(--gh-fs-base); }
    .gh-sheet__count { min-height: 28px; border-radius: var(--gh-radius-pill); padding: var(--gh-space-xs) var(--gh-space-md); background: var(--gh-color-navigation); color: var(--muted); font-size: var(--gh-typography-meta-size); font-weight: var(--gh-fw-bold); white-space: nowrap; }
    .gh-sheet__task-list { display: grid; gap: var(--gh-space-md); }
    .gh-sheet__history-list { display: grid; gap: var(--gh-space-none); }
    .gh-sheet__details { display: block; color: var(--muted); }
    .gh-sheet__details > summary { cursor: pointer; color: var(--muted); font-size: var(--gh-fs-base); font-weight: var(--gh-fw-semi); }
    .gh-sheet__details-body { display: grid; gap: var(--gh-space-none); margin-top: var(--gh-space-md); }
    .gh-kv-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--gh-space-sm); }
    .gh-kv { border: var(--gh-border-width) solid var(--gh-color-border); border-radius: var(--gh-radius-surface); background: var(--gh-color-surface); box-shadow: var(--gh-elevation-none); padding: var(--gh-space-sm) var(--gh-space-md); display: grid; gap: var(--gh-space-none); }
    .gh-kv__label { color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .gh-kv__value { color: var(--ink); font-size: var(--gh-typography-meta-size); overflow-wrap: anywhere; }
    .gh-plant-card-editor { display: grid; gap: var(--gh-space-md); }
    .gh-plant-card-editor .gh-kv { align-content: start; }
    .gh-plant-card-editor input,
    .gh-plant-card-editor select,
    .gh-plant-card-editor textarea { width: 100%; min-width: 0; min-height: 38px; border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-surface); background: var(--gh-color-surface); color: var(--ink); padding: var(--gh-space-sm) var(--gh-space-sm); font: inherit; font-size: var(--gh-typography-meta-size); line-height: var(--gh-typography-line-normal); }
    .gh-plant-card-editor textarea { min-height: 64px; resize: vertical; }
    .gh-plant-card-editor input:focus,
    .gh-plant-card-editor select:focus,
    .gh-plant-card-editor textarea:focus { outline: var(--gh-border-urgency-width) solid var(--gh-color-focus); outline-offset: var(--gh-focus-offset); border-color: var(--accent); }
    .gh-plant-card-editor__actions { display: flex; align-items: center; gap: var(--gh-space-md); flex-wrap: wrap; }
    .gh-history-row { display: grid; grid-template-columns: minmax(44px, 88px) auto minmax(0, 1fr); gap: var(--gh-space-sm); align-items: baseline; padding: var(--gh-space-sm) 0; border-top: var(--gh-border-width) solid var(--line); font-size: var(--gh-typography-meta-size); }
    .gh-history-row:first-child { border-top: 0; }
    .gh-history-row__date { color: var(--muted); font-variant-numeric: tabular-nums; }
    .gh-history-row__tag { color: var(--accent-strong); font-weight: var(--gh-typography-weight-semibold); }
    .gh-history-row__note { color: var(--ink); overflow-wrap: anywhere; }
    .gh-history-row[data-variant="raw"] .gh-history-row__tag { color: var(--muted); }
    /* #126 "Поля" tab: raw field rows use `field name | value`, not `date | tag | note` --
       the 44px date column is too narrow for field names like `scenario_group`, so this
       variant collapses to 2 columns instead of reusing the 3-column date/tag/note layout. */
    .gh-history-row[data-variant="raw"] { grid-template-columns: minmax(90px, 150px) minmax(0, 1fr); }
    .gh-history-row[data-variant="raw"] .gh-history-row__date { color: var(--accent-strong); font-variant-numeric: normal; font-weight: var(--gh-typography-weight-semibold); overflow-wrap: anywhere; }
    /* Fields tab (#126: separate "Поля" raw/service-data tab from "История") uses the same
       .gh-history-row component with data-variant="raw", per QA note in #107/#126 comments. */
    .gh-dropzone { border: var(--gh-border-dash); border-radius: var(--gh-radius-lg); padding: var(--gh-space-lg); display: flex; flex-direction: column; align-items: center; gap: var(--gh-space-sm); text-align: center; color: var(--muted); cursor: pointer; background: var(--gh-color-surface); }
    .gh-dropzone__icon { width: 34px; height: 34px; border-radius: var(--gh-radius-pill); display: inline-flex; align-items: center; justify-content: center; background: var(--gh-color-action-soft); color: var(--accent-strong); font-weight: var(--gh-fw-bold); flex: none; }
    .gh-dropzone__title { font-size: var(--gh-typography-meta-size); font-weight: var(--gh-fw-semi); color: var(--ink); }
    .gh-dropzone__hint { font-size: var(--gh-typography-meta-size); }
    /* #126: disabled/read-only upload state (file/static mode, window.GREENHOUSE_DASHBOARD_MEDIA_READONLY
       or non-http(s) protocol -- same condition as App.canUploadPhotos() in media.js). UI kit gives this
       a styled contract instead of the old bare alert() in App.uploadPlantPhotos(); the alert() fallback
       stays in media.js for any caller that bypasses the dropzone, but the dropzone itself now visually
       communicates the read-only state before a click ever happens. */
    .gh-dropzone[data-state="disabled"] { opacity: var(--gh-opacity-disabled); pointer-events: none; cursor: not-allowed; }
    .wishlist-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--gh-space-md); }
    .wishlist-card { min-height: 560px; background: var(--panel); border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); box-shadow: var(--gh-elevation-none); overflow: hidden; display: flex; flex-direction: column; }
    .wishlist-photo { position: relative; aspect-ratio: 4 / 3; background: var(--gh-color-canvas); display: grid; place-items: center; color: var(--accent); font-size: var(--gh-typography-screen-size); font-weight: var(--gh-typography-weight-bold); overflow: hidden; }
    .wishlist-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
    .wishlist-photo .image-fallback { position: relative; z-index: var(--gh-layer-content); }
    .wishlist-body { padding: var(--gh-space-md); display: grid; gap: var(--gh-space-sm); flex: 1; align-content: start; }
    .wishlist-body h3 { margin: 0; font-size: var(--gh-typography-section-size); line-height: var(--gh-typography-line-tight); overflow-wrap: anywhere; }
    .wishlist-source { color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .wishlist-source a { color: var(--accent-strong); }
    .pest-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: var(--gh-space-md); }
    .pest-card { min-height: 520px; background: var(--panel); border: var(--gh-border-width) solid var(--line); border-left: var(--gh-border-urgency-width) solid var(--gh-color-warning); border-radius: var(--gh-radius-control); box-shadow: var(--gh-elevation-none); padding: var(--gh-space-md); display: grid; gap: var(--gh-space-sm); align-content: start; }
    .pest-card[data-category="protocol"] { border-left-color: var(--accent); }
    .pest-card[data-category="indicator_or_beneficial"] { border-left-color: var(--gh-color-border-strong); }
    .pest-card-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--gh-space-md); align-items: start; }
    .pest-card h3 { margin: 0; font-size: var(--gh-typography-section-size); line-height: var(--gh-typography-line-tight); overflow-wrap: anywhere; }
    .pest-id { color: var(--muted); font-size: var(--gh-typography-meta-size); border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-pill); padding: var(--gh-space-xs) var(--gh-space-sm); background: var(--gh-color-surface); white-space: nowrap; }
    .pest-list { margin: var(--gh-space-sm) 0 0 var(--gh-space-lg); padding: 0; color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .pest-list li { margin: var(--gh-space-xs) 0; overflow-wrap: anywhere; }
    .pest-preps { display: grid; gap: var(--gh-space-sm); margin-top: var(--gh-space-sm); }
    .pest-preps div { border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); background: var(--gh-color-surface); padding: var(--gh-space-sm); display: grid; gap: var(--gh-space-xs); }
    .pest-preps b { color: var(--ink); }
    .pest-preps span, .pest-preps small { color: var(--muted); overflow-wrap: anywhere; }
    .task-list { display: grid; gap: var(--gh-space-md); margin-top: var(--gh-space-md); }
    article.task { border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); background: var(--gh-color-surface); padding: var(--gh-space-md); }
    article.task[data-priority="высокий"] { border-left: var(--gh-border-urgency-width) solid var(--warn); }
    .primary-task-actions { margin-top: var(--gh-space-sm); padding: var(--gh-space-sm); border-color: var(--gh-color-action); background: var(--gh-color-surface); }
    .primary-task-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--gh-space-sm); color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .primary-task-head b { color: var(--accent-strong); font-weight: var(--gh-typography-weight-bold); overflow-wrap: anywhere; text-align: right; }
    .decision-guide { margin: var(--gh-space-sm) 0 var(--gh-space-sm); border: var(--gh-border-width) solid var(--gh-color-action); border-radius: var(--gh-radius-control); background: var(--gh-color-surface); padding: var(--gh-space-sm) var(--gh-space-md); display: grid; gap: var(--gh-space-sm); }
    .decision-guide-title { color: var(--accent-strong); font-weight: var(--gh-typography-weight-bold); font-size: var(--gh-typography-meta-size); }
    .decision-guide p { margin: 0; color: var(--muted); font-size: var(--gh-typography-meta-size); overflow-wrap: anywhere; }
    .decision-guide-list { display: grid; gap: var(--gh-space-xs); }
    .decision-guide-list div { display: grid; grid-template-columns: minmax(120px, .48fr) minmax(0, 1fr); gap: var(--gh-space-sm); align-items: baseline; font-size: var(--gh-typography-meta-size); }
    .decision-guide-list b { color: var(--ink); overflow-wrap: anywhere; }
    .decision-guide-list span { color: var(--muted); overflow-wrap: anywhere; }
    .task-action { margin: 0 0 var(--gh-space-sm); font-weight: var(--gh-typography-weight-medium); overflow-wrap: anywhere; }
    details { margin: var(--gh-space-md) 0 0; color: var(--muted); }
    summary { cursor: pointer; color: var(--accent); font-weight: var(--gh-typography-weight-semibold); }
    .detail-text { margin-top: var(--gh-space-sm); white-space: pre-wrap; overflow-wrap: anywhere; }
    .gh-sheet .task-list { gap: var(--gh-space-md); margin-top: 0; }
    .gh-sheet article.task { border-radius: var(--gh-radius-surface); background: var(--gh-color-surface); border: var(--gh-border-width) solid var(--gh-color-border); box-shadow: var(--gh-elevation-none); padding: var(--gh-space-md) var(--gh-space-lg); }
    .gh-sheet article.task[data-priority="высокий"] { border-left: var(--gh-border-urgency-width) solid var(--gh-color-border-strong); }
    .gh-sheet .primary-task-actions { background: var(--gh-color-surface); border-color: var(--gh-color-border); }
    .gh-sheet__task { overflow: hidden; padding: 0; border-radius: var(--gh-radius-surface); background: var(--gh-color-surface); border-color: var(--gh-color-border); box-shadow: var(--gh-elevation-none); }
    .gh-sheet__task-accent { height: 5px; background: var(--accent); }
    .gh-sheet__task-body { display: grid; gap: var(--gh-space-md); padding: var(--gh-space-lg) var(--gh-space-lg) var(--gh-space-lg); }
    .gh-sheet__task-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--gh-space-lg); }
    .gh-sheet__task-head b { color: var(--accent-strong); font-size: var(--gh-fs-base); font-weight: var(--gh-fw-bold); line-height: var(--gh-lh-tight); text-transform: lowercase; }
    .gh-sheet__task-head .pill { flex: 0 0 auto; min-height: 28px; font-size: var(--gh-typography-meta-size); font-weight: var(--gh-fw-bold); }
    .gh-sheet__task-title { margin: 0; color: var(--ink); font-size: var(--gh-fs-md); font-weight: var(--gh-fw-semi); line-height: var(--gh-typography-line-normal); overflow-wrap: anywhere; }
    .gh-sheet__task-context { display: grid; gap: var(--gh-space-sm); padding: var(--gh-space-md) var(--gh-space-md); border-radius: var(--gh-radius-surface); background: var(--gh-color-action-soft); color: var(--accent-strong); font-size: var(--gh-fs-base); line-height: var(--gh-typography-line-normal); }
    .gh-sheet__task-context strong { color: var(--accent-strong); font-weight: var(--gh-fw-bold); }
    .substrate-recipe-card { display: grid; gap: var(--gh-space-sm); padding: var(--gh-space-md); border: var(--gh-border-width) solid var(--gh-color-border); border-radius: var(--gh-radius-surface); background: var(--gh-color-info-soft); }
    .substrate-recipe-card > b { color: var(--accent-strong); font-size: var(--gh-fs-base); }
    .substrate-recipe-list { display: grid; gap: var(--gh-space-sm); }
    .substrate-recipe-list > div { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: var(--gh-space-sm); align-items: baseline; color: var(--ink); line-height: var(--gh-typography-line-normal); }
    .substrate-recipe-list strong { color: var(--accent-strong); font-variant-numeric: tabular-nums; }
    .substrate-recipe-list span { overflow-wrap: anywhere; }
    .gh-sheet__task .decision-guide { margin: 0; background: var(--gh-color-action-soft); border-color: var(--gh-color-border); }
    .gh-sheet__task .task-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: var(--gh-space-md); margin: 0; }
    .gh-sheet__task .task-actions button { min-height: 44px; border-radius: var(--gh-radius-surface); padding: var(--gh-space-sm) var(--gh-space-md); color: var(--ink); background: var(--gh-color-surface); border-color: var(--gh-color-border); font-size: var(--gh-fs-md); font-weight: var(--gh-fw-bold); text-align: center; }
    .gh-sheet__task .task-complete-button { background: var(--gh-color-scrim); border-color: var(--gh-color-border-strong); color: var(--gh-color-text); }
    .gh-sheet__task .task-problem-button { background: var(--gh-warn-bg); border-color: var(--gh-color-border-strong); color: var(--gh-warn-fg); }
    .gh-sheet__task .task-danger-button { background: var(--gh-color-surface); border-color: var(--gh-color-border-strong); color: var(--danger); }
    .future-task-actions button:disabled { opacity: var(--gh-opacity-disabled); cursor: not-allowed; color: var(--muted); background: var(--gh-color-surface); border-color: var(--gh-color-border); box-shadow: var(--gh-elevation-none); }
    .gh-sheet .plant-sections { margin-top: 0; padding-right: 0; }
    .gh-sheet .detail-text { color: var(--muted); }
    .gh-post-problem { grid-column: 1 / -1; overflow: hidden; padding: 0; border-radius: var(--gh-radius-surface); background: var(--gh-color-surface); border: var(--gh-border-width) solid var(--gh-color-border); box-shadow: var(--gh-elevation-none); }
    .gh-post-problem__accent { height: 6px; background: var(--accent); }
    .gh-post-problem__body { display: grid; gap: var(--gh-space-md); padding: var(--gh-space-lg) var(--gh-space-xl) var(--gh-space-xl); }
    .gh-post-problem__head { display: flex; align-items: center; justify-content: space-between; gap: var(--gh-space-md); color: var(--muted); font-size: var(--gh-fs-base); }
    .gh-post-problem__head b { color: var(--accent-strong); font-size: var(--gh-fs-lg); font-weight: var(--gh-fw-black); }
    .gh-post-problem__head span { font-variant-numeric: tabular-nums; }
    .gh-post-problem__saved { border-radius: var(--gh-radius-surface); padding: var(--gh-space-md) var(--gh-space-md); background: var(--gh-color-action-soft); color: var(--accent-strong); font-size: var(--gh-fs-base); line-height: var(--gh-typography-line-normal); overflow-wrap: anywhere; }
    .gh-post-problem__saved strong { font-weight: var(--gh-fw-black); }
    .gh-post-problem__title { margin: 0; color: var(--ink); font-size: var(--gh-fs-xl); font-weight: var(--gh-fw-black); line-height: var(--gh-typography-line-tight); overflow-wrap: anywhere; }
    .gh-post-problem__text { margin: 0; color: var(--muted); font-size: var(--gh-fs-md); line-height: var(--gh-typography-line-normal); overflow-wrap: anywhere; }
    .gh-post-problem__actions { display: flex; flex-wrap: wrap; gap: var(--gh-space-md); }
    .gh-post-problem__actions button { min-height: var(--gh-size-touch-target); }
    .gh-post-problem__copy,
    .gh-post-problem__secondary { min-height: 44px; border-radius: var(--gh-radius-surface); padding: var(--gh-space-sm) var(--gh-space-lg); font-size: var(--gh-fs-md); font-weight: var(--gh-fw-bold); }
    .gh-post-problem__copy { background: var(--gh-color-scrim); border-color: var(--gh-color-border-strong); color: var(--gh-color-text); }
    .gh-post-problem__secondary { background: var(--gh-color-surface); border-color: var(--gh-color-border); color: var(--accent-strong); }
    .gh-post-problem__status { min-height: 18px; color: var(--muted); font-size: var(--gh-fs-base); }
    .gh-completed-today { overflow: hidden; padding: 0; border-radius: var(--gh-radius-surface); background: var(--gh-color-navigation); border: var(--gh-border-width) solid var(--gh-color-border); box-shadow: var(--gh-elevation-none); }
    .gh-completed-today__head { display: flex; align-items: center; justify-content: space-between; gap: var(--gh-space-md); padding: var(--gh-space-md) var(--gh-space-lg); color: var(--muted); font-size: var(--gh-fs-base); border-bottom: var(--gh-border-width) solid var(--gh-color-border); }
    .gh-completed-today__head b { color: var(--accent-strong); font-size: var(--gh-fs-md); font-weight: var(--gh-fw-black); }
    .gh-completed-today__list { display: grid; gap: var(--gh-space-sm); padding: var(--gh-space-md) var(--gh-space-lg) var(--gh-space-lg); }
    .gh-completed-today__row { display: grid; gap: var(--gh-space-xs); }
    .gh-completed-today__row span { color: var(--accent-strong); font-size: var(--gh-fs-base); font-weight: var(--gh-fw-bold); }
    .gh-completed-today__row p { margin: 0; color: var(--ink); font-size: var(--gh-fs-base); line-height: var(--gh-typography-line-normal); overflow-wrap: anywhere; }
    .gh-completed-today__row small { color: var(--muted); font-size: var(--gh-fs-xs); }
    .compact-list { display: grid; gap: var(--gh-space-xs); color: var(--muted); font-size: var(--gh-typography-meta-size); overflow-wrap: anywhere; }
    .compact-list strong { color: var(--ink); }
    .empty { }
    .supplies-info-trigger { border-color: var(--gh-color-border); color: var(--accent-strong); }
    .supplies-info-overlay { position: fixed; inset: 0; z-index: var(--gh-layer-dialog); background: var(--gh-color-action-soft); display: grid; justify-content: end; }
    .supplies-info-overlay[hidden] { display: none; }
    .supplies-info-drawer { width: min(430px, calc(100vw - 26px)); height: 100vh; display: grid; grid-template-rows: auto auto auto 1fr auto; background: var(--gh-color-canvas); border-left: var(--gh-border-width) solid var(--gh-color-border); box-shadow: var(--gh-elevation-none); backdrop-filter: none; }
    .supplies-info-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--gh-space-lg); padding: var(--gh-space-lg) var(--gh-space-lg) var(--gh-space-lg); border-bottom: var(--gh-border-width) solid var(--gh-color-border); }
    .supplies-info-head h2 { margin: 0; color: var(--ink); font-size: var(--gh-typography-section-size); line-height: var(--gh-typography-line-tight); letter-spacing: 0; }
    .supplies-info-head p { margin: var(--gh-space-sm) 0 0; color: var(--muted); font-size: var(--gh-typography-meta-size); line-height: var(--gh-typography-line-normal); }
    .supplies-info-close { width: 38px; min-height: 38px; padding: 0; border-radius: var(--gh-radius-pill); font-size: var(--gh-typography-section-size); line-height: var(--gh-typography-line-tight); }
    .supplies-info-actions { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--gh-space-sm); padding: var(--gh-space-md) var(--gh-space-lg) var(--gh-space-md); }
    .supplies-info-actions .primary { min-height: 44px; }
    .supplies-copy-status { min-height: 17px; color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .supplies-info-tabs { display: flex; gap: var(--gh-space-sm); padding: 0 var(--gh-space-lg) var(--gh-space-md); border-bottom: var(--gh-border-width) solid var(--gh-color-border); overflow-x: auto; }
    .supplies-info-tab { min-height: 36px; padding: var(--gh-space-sm) var(--gh-space-md); border-radius: var(--gh-radius-pill); color: var(--gh-color-text-muted); font-size: var(--gh-typography-meta-size); white-space: nowrap; }
    .supplies-info-tab.active { background: var(--ink); border-color: var(--ink); color: var(--gh-color-surface); }
    .supplies-info-body { overflow: auto; display: grid; gap: var(--gh-space-lg); padding: var(--gh-space-lg) var(--gh-space-lg) var(--gh-space-lg); scrollbar-gutter: stable; }
    .supplies-info-summary { display: flex; flex-wrap: wrap; gap: var(--gh-space-sm); }
    .supplies-info-summary span { min-height: 26px; display: inline-flex; align-items: center; padding: var(--gh-space-xs) var(--gh-space-sm); border-radius: var(--gh-radius-pill); background: var(--gh-color-action-soft); color: var(--accent-strong); font-size: var(--gh-typography-meta-size); font-weight: var(--gh-typography-weight-bold); }
    .supplies-info-section { display: grid; gap: var(--gh-space-sm); }
    .supplies-info-section-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--gh-space-md); }
    .supplies-info-section-head h3 { margin: 0; color: var(--muted); font-size: var(--gh-typography-body-size); font-weight: var(--gh-typography-weight-bold); }
    .supplies-info-section-head span { color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .supplies-info-card { display: grid; gap: var(--gh-space-sm); padding: var(--gh-space-md) var(--gh-space-md); border: var(--gh-border-width) solid var(--gh-color-border); border-radius: var(--gh-radius-control); background: var(--gh-color-surface); box-shadow: var(--gh-elevation-none); }
    .supplies-info-card-head { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: var(--gh-space-sm); }
    .supplies-info-card h3 { margin: 0; color: var(--ink); font-size: var(--gh-typography-body-size); line-height: var(--gh-typography-line-tight); overflow-wrap: anywhere; }
    .supplies-info-card-head span { justify-self: start; max-width: 100%; min-height: 22px; padding: var(--gh-space-none) var(--gh-space-sm); border-radius: var(--gh-radius-pill); background: var(--gh-color-action-soft); color: var(--accent-strong); font-size: var(--gh-typography-meta-size); font-weight: var(--gh-typography-weight-bold); white-space: normal; overflow-wrap: anywhere; }
    .supplies-info-card p { margin: 0; color: var(--gh-color-text-muted); font-size: var(--gh-typography-meta-size); line-height: var(--gh-typography-line-normal); overflow-wrap: anywhere; }
    .supplies-info-card small { color: var(--muted); font-size: var(--gh-typography-meta-size); line-height: var(--gh-typography-line-normal); overflow-wrap: anywhere; }
    .supplies-info-footer { display: flex; align-items: center; justify-content: space-between; gap: var(--gh-space-md); padding: var(--gh-space-md) var(--gh-space-lg); border-top: var(--gh-border-width) solid var(--gh-color-border); background: var(--gh-color-surface); color: var(--muted); font-size: var(--gh-typography-meta-size); }
    dialog { width: min(920px, calc(100vw - 28px)); border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); padding: 0; background: var(--panel); color: var(--ink); box-shadow: var(--gh-elevation-none); }
    dialog::backdrop { background: var(--gh-color-scrim); }
    .photo-dialog { width: min(1120px, calc(100vw - 26px)); background: transparent; border: 0; box-shadow: var(--gh-elevation-none); }
    .photo-dialog::backdrop { background: var(--gh-color-scrim); }
    .photo-viewer { display: grid; gap: var(--gh-space-md); }
    .photo-viewer-toolbar { display: flex; justify-content: space-between; align-items: center; gap: var(--gh-space-md); padding: var(--gh-space-md) var(--gh-space-md); border: var(--gh-border-width) solid var(--line); border-radius: var(--gh-radius-control); background: var(--panel); flex-wrap: wrap; }
    .photo-viewer-toolbar div { display: grid; gap: var(--gh-space-none); min-width: 0; margin-right: auto; }
    .photo-viewer-toolbar span { color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .photo-viewer-toolbar .photo-delete, .photo-delete-confirm { color: var(--danger); border-color: var(--gh-color-border-strong); background: var(--gh-red-bg); }
    .photo-delete-dialog { width: min(520px, calc(100vw - 28px)); }
    .photo-delete-description { margin: 0; color: var(--muted); line-height: var(--gh-typography-line-normal); }
    .photo-delete-actions { display: flex; justify-content: flex-end; gap: var(--gh-space-md); margin-top: var(--gh-space-lg); flex-wrap: wrap; }
    .photo-stage { position: relative; min-height: min(72vh, 780px); border-radius: var(--gh-radius-control); overflow: hidden; background: var(--gh-color-surface); display: grid; place-items: center; }
    .photo-stage img { max-width: var(--gh-c-photo-stage-image-width); max-height: var(--gh-c-photo-stage-default-image-max-height); object-fit: contain; object-position: center center; display: block; }
    .photo-stage[data-wants-gallery-stage] img { width: var(--gh-c-photo-stage-image-width); height: var(--gh-c-photo-stage-image-height); max-width: var(--gh-c-photo-stage-image-width); max-height: var(--gh-c-photo-stage-image-max-height); }
    .photo-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 42px; height: 58px; border-radius: var(--gh-radius-pill); background: var(--gh-color-scrim); font-size: var(--gh-typography-screen-size); line-height: var(--gh-typography-line-tight); }
    .photo-nav.gh-wishlist-card__nav { width: var(--gh-size-touch-target); min-width: var(--gh-size-touch-target); }
    .photo-nav.prev { left: 12px; }
    .photo-nav.next { right: 12px; }
    .photo-counter { justify-self: center; color: var(--muted); font-size: var(--gh-typography-meta-size); }
    .dialog-head { display: flex; align-items: center; justify-content: space-between; gap: var(--gh-space-md); padding: var(--gh-space-lg) var(--gh-space-lg); border-bottom: var(--gh-border-width) solid var(--line); background: var(--soft); }
    .dialog-head h2 { margin: 0; font-size: var(--gh-typography-card-size); }
    .dialog-body { padding: var(--gh-space-lg); }
    #copyTextField { min-height: 360px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: var(--gh-typography-meta-size); line-height: var(--gh-typography-line-normal); }
    .status-line { color: var(--muted); min-height: 22px; margin-top: var(--gh-space-sm); }
    .gh-plant-archive { display: grid; justify-items: end; gap: var(--gh-space-sm); margin-top: var(--gh-space-none); padding-top: var(--gh-space-md); border-top: var(--gh-border-width) solid var(--gh-color-border); }
    .gh-plant-archive__toggle { display: inline-flex; align-items: center; gap: var(--gh-space-xs); min-height: 28px; padding: var(--gh-space-xs) var(--gh-space-sm); border: 0; border-radius: var(--gh-radius-control); background: transparent; color: var(--muted); font-size: var(--gh-typography-meta-size); font-weight: var(--gh-fw-semi); cursor: pointer; }
    .gh-plant-archive__toggle:hover, .gh-plant-archive__toggle:focus-visible { background: var(--gh-color-navigation); color: var(--ink); outline: none; }
    .gh-plant-archive__toggle span { font-size: var(--gh-typography-body-size); line-height: var(--gh-typography-line-tight); transform: rotate(-90deg); }
    .gh-plant-archive[data-state="open"] .gh-plant-archive__toggle span { transform: rotate(0deg); }
    .gh-plant-archive form { display: grid; width: min(100%, 520px); gap: var(--gh-space-sm); padding: var(--gh-space-md); border: var(--gh-border-width) solid var(--gh-color-border-strong); border-radius: var(--gh-radius-surface); background: var(--gh-color-danger-soft); }
    .gh-plant-archive h4 { margin: 0; font-size: var(--gh-fs-base); }
    .gh-plant-archive textarea { width: 100%; min-height: 72px; resize: vertical; }
    .gh-plant-archive__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--gh-space-sm); }
    .gh-plant-archive [data-plant-archive-submit] { min-width: 44px; min-height: 44px; }
    .gh-plant-archive-state { display: grid; gap: var(--gh-space-xs); margin-top: var(--gh-space-none); padding: var(--gh-space-md) 0 0; border-top: var(--gh-border-width) solid var(--line); color: var(--muted); }
    .gh-archived-readonly, .gh-archived-history__intro { color: var(--gh-color-text-muted); }
    .gh-archived-readonly { display: flex; flex-direction: column; gap: var(--gh-space-xs); padding: var(--gh-space-md); border: var(--gh-border-width) solid var(--gh-color-border-strong); border-radius: var(--gh-radius-surface); background: var(--gh-color-canvas); }
    .gh-legacy-task-readonly { padding: var(--gh-space-md) var(--gh-space-md); border: var(--gh-border-width) solid var(--gh-color-border-strong); border-radius: var(--gh-radius-surface); background: var(--gh-color-canvas); color: var(--gh-color-text-muted); font-size: var(--gh-fs-base); line-height: var(--gh-typography-line-normal); }
    .avatar.archived-readonly, .media-tools.archived-readonly { cursor: default; }
    /* ── Tablet breakpoint (#125 scope comment) ──
       UI kit steps 3 -> 2 -> 1 grid columns instead of jumping straight from desktop to a
       single column. */
    @media (max-width: 1180px) {
      .plant-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    }
    @media (max-width: 900px) {
      .topbar { grid-template-columns: 1fr; }
      .filters { grid-template-columns: minmax(70px, 96px) minmax(0, 1fr); }
      .filters .view-tabs { grid-column: 1 / -1; }
      .view-tabs { justify-content: flex-start; }
      .actions { justify-content: flex-start; }
      .stats { }
      .inventory-grid { grid-template-columns: 1fr; }
      .plant-head { grid-template-columns: 1fr; }
      .plant-brief { grid-template-columns: 1fr; }
      .decision-guide-list div { grid-template-columns: 1fr; gap: var(--gh-space-none); }
      .group-cutoff, .future-cutoff { grid-template-columns: 1fr; }
      .supplies-info-overlay { align-items: end; justify-content: stretch; }
      .supplies-info-drawer { width: 100%; height: min(84vh, 760px); border-left: 0; border-top: var(--gh-border-width) solid var(--gh-color-border); border-radius: var(--gh-radius-surface) var(--gh-radius-surface) 0 0; }
      .supplies-info-footer { display: grid; }
      /* #126: sheet drops to a single-column, bottom-anchored full layout on tablet/mobile,
         matching the UI kit's mobile detail sheet (`.gh-overlay{padding: 0;align-items:flex-end}`). */
      .gh-overlay { padding: 0; align-items: flex-end; }
      .gh-sheet { width: 100%; grid-template-columns: 1fr; border-radius: var(--gh-radius-surface) var(--gh-radius-surface) 0 0; max-height: 94vh; overflow-y: auto; gap: var(--gh-space-lg); padding: var(--gh-space-lg) var(--gh-space-lg) calc(var(--gh-space-lg) + env(safe-area-inset-bottom)); }
      .gh-sheet__top { grid-template-columns: 1fr; gap: var(--gh-space-lg); }
      .gh-sheet__photo .avatar { min-height: 0; height: 230px; max-height: none; aspect-ratio: auto; }
      .gh-sheet__col { max-height: none; overflow: visible; }
      .gh-photo-tools-row { grid-template-columns: 1fr; }
      .gh-sheet__section-head { display: grid; }
      .gh-sheet__count { width: fit-content; }
      .gh-sheet__task, .gh-post-problem, .gh-completed-today { grid-column: auto; }
      .gh-sheet__task-body { padding: var(--gh-space-lg); }
      .gh-post-problem__body { padding: var(--gh-space-lg); }
      .gh-completed-today__head { display: grid; justify-content: stretch; }
      .gh-sheet__task-head { display: grid; }
      .gh-post-problem__head { display: grid; justify-content: stretch; }
      .gh-sheet__task-head .pill { width: fit-content; }
      .gh-sheet__task .task-actions { grid-template-columns: 1fr; }
      .gh-plant-info-actions { display: grid; grid-template-columns: 1fr; }
      .gh-plant-archive { justify-items: stretch; }
      .gh-plant-archive__toggle { justify-self: end; }
      .gh-plant-archive form { width: 100%; }
      .gh-plant-archive__actions { display: grid; grid-template-columns: 1fr; }
      .gh-post-problem__actions { display: grid; }
    }
    @media (max-width: 760px) {
      .plant-grid { grid-template-columns: 1fr; }
      .plant-card { height: auto; max-height: none; }
      .plant-head { grid-template-columns: 1fr; }
      .avatar { aspect-ratio: 1; }
      .media-tools { grid-template-columns: auto 32px minmax(42px, auto) 32px minmax(0, 1fr); }
      .media-tools.single-photo { grid-template-columns: auto minmax(42px, auto) minmax(0, 1fr); }
    }

/* compiled source: config/ui_tokens/styles/shared-card-gpt.css | role: component-contract */
/* Token API component contract: shared card renderer used by the GPT route. */
.gh-ux-shell .sticky-search,
.gh-ux-shell .plant-card,
.gh-ux-shell .stat,
.gh-ux-shell .inventory-panel,
.gh-ux-shell .inventory-block,
.gh-ux-shell .wishlist-card,
.gh-ux-shell .pest-card,
.gh-ux-shell .gh-sheet,
.gh-ux-shell .gh-sheet__tasks,
.gh-ux-shell .gh-sheet__history,
.gh-ux-shell .gh-sheet__details,
.gh-ux-shell .gh-kv,
.gh-ux-shell .gh-sheet article.task,
.gh-ux-shell .gh-sheet__task,
.gh-ux-shell .gh-post-problem,
.gh-ux-shell .gh-completed-today,
.gh-ux-shell .supplies-info-card,
.gh-ux-shell dialog {
  border-color: var(--gh-color-border);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
  backdrop-filter: none;
}

.gh-ux-shell .sticky-search {
  background: var(--gh-color-canvas);
}

.gh-ux-shell .empty {
  border-color: var(--gh-color-border-strong);
  background: var(--gh-color-surface);
  color: var(--gh-color-text-muted);
  box-shadow: var(--gh-elevation-none);
  backdrop-filter: none;
}

.gh-ux-shell .plant-card {
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-left: var(--gh-border-urgency-width) solid var(--line);
  transition: none;
}

.gh-ux-shell .plant-card:hover {
  box-shadow: var(--gh-elevation-none);
}

.gh-ux-shell .plant-card[data-bucket="overdue"] {
  border-left-color: var(--gh-color-danger);
}

.gh-ux-shell .plant-card[data-bucket="today"] {
  border-left-color: var(--gh-color-warning);
}

.gh-ux-shell .plant-card[data-bucket="soon"] {
  border-left-color: var(--gh-color-info);
}

.gh-ux-shell .avatar {
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-action-soft);
}

.gh-ux-shell .gh-badge {
  border: var(--gh-border-width) solid var(--gh-color-border);
  backdrop-filter: none;
}

.gh-ux-shell .gh-overlay {
  background: var(--gh-color-scrim);
  backdrop-filter: none;
}

.gh-ux-shell .gh-sheet {
  border-color: var(--gh-color-border-strong);
}

.gh-ux-shell .gh-sheet__photo .avatar,
.gh-ux-shell .gh-sheet__task,
.gh-ux-shell .gh-post-problem,
.gh-ux-shell .gh-completed-today {
  border-radius: var(--gh-radius-control);
}

.gh-ux-shell .gh-sheet__task .task-complete-button,
.gh-ux-shell .gh-post-problem__copy,
.gh-ux-shell .gh-plant-info-copy {
  border-color: var(--gh-color-action);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-color-action);
  color: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-ux-shell .supplies-info-drawer {
  border-color: var(--gh-color-border-strong);
  background: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
  backdrop-filter: none;
}

.gh-ux-shell :where(.plant-name, .name-ru, .plant-summary, .mini-list b, .mini-list small, .gh-sheet__title, .gh-sheet__sub, .gh-sheet__task-title, .gh-history-row__note) {
  overflow-wrap: break-word;
  word-break: normal;
  hyphens: none;
}

/* compiled source: config/ui_tokens/structure/supabase-live.css | role: auth-shell-structure */
* {
  box-sizing: border-box;
}

body {
  margin: 0;
}

button,
input,
select,
textarea {
  min-height: 38px;
  border: var(--gh-border-width) solid var(--line);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  color: var(--ink);
  font: inherit;
}

button {
  padding: var(--gh-space-sm) var(--gh-space-md);
  cursor: pointer;
}

button:hover,
button:focus-visible {
  border-color: var(--accent);
}

input,
select,
textarea {
  width: 100%;
  padding: var(--gh-space-sm) var(--gh-space-md);
}

textarea {
  min-height: 180px;
  resize: vertical;
}

.app-header {
  position: sticky;
  top: 0;
  z-index: var(--gh-layer-header);
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(320px, auto);
  gap: var(--gh-space-lg);
  align-items: center;
  padding: var(--gh-space-lg) max(var(--gh-space-lg), calc((100vw - var(--gh-container-content)) / 2));
  border-bottom: var(--gh-border-width) solid var(--line);
  background: var(--gh-color-info-soft);
}

h1 {
  margin: 0;
  font-size: var(--gh-typography-screen-size);
  line-height: var(--gh-typography-line-tight);
  letter-spacing: 0;
}

p {
  margin: 0;
}

[hidden] {
  display: none !important;
}

.app-header p,
.muted,
.meta {
  color: var(--muted);
}

main {
  width: min(1440px, calc(100vw - 32px));
  margin: 0 auto;
  padding: var(--gh-space-lg) 0 var(--gh-space-3xl);
}

.card-dashboard-mount[hidden] {
  display: none;
}

.card-dashboard-mount {
  margin: calc(var(--gh-space-lg) * -1) calc((min(var(--gh-container-content), calc(100vw - var(--gh-space-2xl))) - 100vw + var(--gh-space-2xl)) / 2) 0;
}

.live-recovery-panel {
  display: grid;
  gap: var(--gh-space-lg);
  max-width: 58rem;
  margin: var(--gh-space-2xl) auto;
  padding: var(--gh-space-xl);
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
}

.live-recovery-panel h2 { margin: var(--gh-space-xs) 0 var(--gh-space-sm); }
.recovery-details { margin: 0; color: var(--gh-color-text-muted); overflow-wrap: anywhere; }
.recovery-actions { display: flex; flex-wrap: wrap; gap: var(--gh-space-md); }

@media (max-width: 640px) {
  .live-recovery-panel { margin: var(--gh-space-lg); padding: var(--gh-space-lg); }
  .recovery-actions > button { width: 100%; }
}

.live-card-dashboard {
  min-height: 70vh;
}

.live-card-dashboard .card-main {
  padding: var(--gh-space-lg) 0 var(--gh-space-3xl);
}

.login-form {
  display: grid;
  grid-template-columns: minmax(190px, 1fr) minmax(150px, .7fr) auto;
  gap: var(--gh-space-sm);
}

.login-form button,
.user-panel button {
  border-color: var(--gh-color-border-strong);
  background: var(--gh-color-scrim);
  color: var(--gh-color-text);
  font-weight: var(--gh-typography-weight-bold);
}

.user-panel {
  display: flex;
  gap: var(--gh-space-sm);
  justify-content: flex-end;
  align-items: center;
  flex-wrap: wrap;
}

.user-panel span {
  color: var(--accent-2);
  font-weight: var(--gh-typography-weight-bold);
}

.auth-shell {
  display: grid;
  grid-template-columns: minmax(260px, .8fr) minmax(320px, 440px);
  gap: var(--gh-space-lg);
  align-items: stretch;
  min-height: 360px;
  margin-top: var(--gh-space-2xl);
  padding: var(--gh-space-xl);
  border: var(--gh-border-width) solid var(--line);
  border-radius: var(--gh-radius-control);
  background: var(--panel);
}

.auth-copy {
  display: grid;
  align-content: center;
  gap: var(--gh-space-md);
}

.auth-copy h2 {
  margin: 0;
  max-width: 620px;
  font-size: var(--gh-typography-screen-size);
  line-height: var(--gh-typography-line-tight);
  letter-spacing: 0;
}

.auth-copy p {
  max-width: 540px;
  color: var(--muted);
}

.eyebrow {
  color: var(--accent-2);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  letter-spacing: 0;
  text-transform: uppercase;
}

.auth-shell .login-form {
  align-self: center;
  grid-template-columns: 1fr;
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--line);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
}

.login-form label {
  display: grid;
  gap: var(--gh-space-sm);
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
}

.notice {
  display: flex;
  gap: var(--gh-space-md);
  align-items: baseline;
  margin-bottom: var(--gh-space-lg);
  padding: var(--gh-space-md) var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--line);
  border-radius: var(--gh-radius-control);
  background: var(--panel);
  color: var(--muted);
}

.notice b {
  color: var(--ink);
}

.notice:empty {
  display: none;
}

.gh-ux-shell #statusNotice {
  border-color: var(--gh-color-info);
}



.diagnostics-panel {
  display: grid;
  gap: var(--gh-space-md);
  margin-bottom: var(--gh-space-lg);
  padding: var(--gh-space-md) var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-color-warning);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-warning-soft);
}

.diagnostics-panel[hidden] {
  display: none;
}

.diagnostics-head {
  display: flex;
  gap: var(--gh-space-md);
  justify-content: space-between;
  align-items: center;
}

.diagnostics-head div {
  display: grid;
  gap: var(--gh-space-none);
  min-width: 0;
}

.diagnostics-head b {
  color: var(--warn);
}

.diagnostics-head span {
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
  overflow-wrap: anywhere;
}

.diagnostics-head button {
  flex: 0 0 auto;
  border-color: var(--gh-color-action);
  background: var(--gh-color-scrim);
}

#diagnosticsLog {
  max-height: 220px;
  margin: 0;
  overflow: auto;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
}

.stats {
  display: grid;
  grid-template-columns: repeat(6, minmax(130px, 1fr));
  gap: var(--gh-space-md);
  margin-bottom: var(--gh-space-md);
}

.stat {
  min-height: 76px;
  padding: var(--gh-space-md) var(--gh-space-md);
  text-align: left;
  background: var(--panel);
}

.stat b {
  display: block;
  font-size: var(--gh-typography-screen-size);
  line-height: var(--gh-typography-line-tight);
}

.stat span {
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
}

.stat.urgent b {
  color: var(--danger);
}

.stat.warning b {
  color: var(--warn);
}

.secondary-action {
  color: var(--accent-2);
}

.media-action {
  min-height: 30px;
  padding: var(--gh-space-xs) var(--gh-space-sm);
  font-size: var(--gh-typography-meta-size);
}

.secondary-action:disabled {
  cursor: default;
  opacity: var(--gh-opacity-disabled);
}

.overview-stack {
  display: grid;
  gap: var(--gh-space-md);
}

.section-head {
  display: flex;
  justify-content: space-between;
  gap: var(--gh-space-lg);
  align-items: baseline;
  margin-bottom: var(--gh-space-md);
}

.section-head h2 {
  margin: 0;
  font-size: var(--gh-typography-section-size);
}

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: var(--gh-space-md);
}

.row-list {
  display: grid;
  gap: var(--gh-space-sm);
}

.warning-panel,
.urgency-group {
  min-width: 0;
}

.warning-grid,
.urgency-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(130px, 1fr));
  gap: var(--gh-space-md);
}

.warning-card,
.urgency-card {
  display: grid;
  gap: var(--gh-space-xs);
  min-width: 0;
  padding: var(--gh-space-md);
  border: var(--gh-border-width) solid var(--line);
  border-radius: var(--gh-radius-control);
  background: var(--panel);
}

.warning-card b,
.urgency-card b {
  font-size: var(--gh-typography-screen-size);
  line-height: var(--gh-typography-line-tight);
}

.warning-card span,
.urgency-card span {
  color: var(--ink);
  font-weight: var(--gh-typography-weight-bold);
}

.warning-card p,
.urgency-card p,
.more-note {
  color: var(--muted);
}

.warning-card.good b {
  color: var(--accent-2);
}

.warning-card.warn b,
.urgency-card.today b,
.urgency-card.soon b {
  color: var(--warn);
}

.warning-card.danger b,
.urgency-card.overdue b {
  color: var(--danger);
}

.urgency-grid {
  display: grid;
  gap: var(--gh-space-md);
}

.urgency-group {
  padding: var(--gh-space-md);
  border: var(--gh-border-width) solid var(--line);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
}

.info-stack {
  display: grid;
  gap: var(--gh-space-md);
}

.info-panel {
  display: grid;
  gap: var(--gh-space-md);
  padding: var(--gh-space-md);
  border: var(--gh-border-width) solid var(--line);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
}

.info-form {
  display: grid;
  grid-template-columns: minmax(160px, .7fr) minmax(220px, 1fr) minmax(150px, .5fr) auto;
  gap: var(--gh-space-md);
  align-items: end;
}

.info-form label {
  display: grid;
  gap: var(--gh-space-sm);
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
}

.info-text-field {
  grid-column: 1 / -1;
}

.info-save-button {
  border-color: var(--gh-color-border-strong);
  background: var(--gh-color-scrim);
  color: var(--gh-color-text);
  font-weight: var(--gh-typography-weight-bold);
}

.info-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: var(--gh-space-md);
}

.info-record {
  border-color: var(--gh-color-action);
}

.item {
  display: grid;
  gap: var(--gh-space-sm);
  min-width: 0;
  padding: var(--gh-space-md);
  border: var(--gh-border-width) solid var(--line);
  border-radius: var(--gh-radius-control);
  background: var(--panel);
}

.item.compact {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
}

.item h3 {
  margin: 0;
  font-size: var(--gh-typography-card-size);
  line-height: var(--gh-typography-line-tight);
  overflow-wrap: anywhere;
}

.item p {
  color: var(--muted);
  overflow-wrap: anywhere;
}

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

.task-complete-button {
  border-color: var(--gh-color-border-strong);
  background: var(--gh-color-scrim);
  color: var(--gh-color-text);
  font-weight: var(--gh-typography-weight-bold);
}

.task-problem-button {
  border-color: var(--gh-color-warning);
  background: var(--gh-color-warning-soft);
  color: var(--warn);
  font-weight: var(--gh-typography-weight-bold);
}

.task-secondary-button {
  color: var(--accent-2);
}

.task-danger-button {
  border-color: var(--gh-color-warning);
  color: var(--danger);
}

.task-complete-button:disabled,
.task-problem-button:disabled,
.task-secondary-button:disabled,
.task-danger-button:disabled {
  cursor: wait;
  opacity: var(--gh-opacity-disabled);
}

.task-result {
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
}

.plant-card {
  align-content: start;
}

.plant-card-head {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  gap: var(--gh-space-md);
  align-items: start;
}

.plant-avatar {
  display: grid;
  place-items: center;
  width: 48px;
  aspect-ratio: 1;
  border: var(--gh-border-width) solid var(--gh-color-action);
  border-radius: 50%;
  color: var(--accent-2);
  background: var(--gh-color-surface);
  font-weight: var(--gh-typography-weight-bold);
}

.plant-avatar.has-media {
  padding: 0;
  overflow: hidden;
}

.plant-avatar img,
.media-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.media-missing {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  padding: var(--gh-space-xs);
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
  line-height: var(--gh-typography-line-tight);
  text-align: center;
}

.plant-facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--gh-space-sm) var(--gh-space-md);
  margin: var(--gh-space-none) 0 0;
}

.plant-facts div {
  min-width: 0;
}

.plant-facts dt {
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
}

.plant-facts dd {
  margin: var(--gh-space-none) 0 0;
  overflow-wrap: anywhere;
}

.plant-media-panel {
  display: grid;
  gap: var(--gh-space-sm);
  padding-top: var(--gh-space-xs);
}

.photo-dropzone {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--gh-space-xs) var(--gh-space-sm);
  align-items: center;
  min-height: 54px;
  padding: var(--gh-space-md);
  border: var(--gh-border-width) dashed var(--gh-color-action);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  cursor: pointer;
}

.photo-dropzone input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.photo-dropzone span {
  font-weight: var(--gh-typography-weight-bold);
}

.photo-dropzone small {
  color: var(--muted);
}

.photo-dropzone.is-dragging {
  border-color: var(--accent);
  background: var(--gh-color-action-soft);
}

.media-gallery {
  display: grid;
  gap: var(--gh-space-sm);
  margin: 0;
  padding: 0;
  list-style: none;
}

.media-gallery-item,
.media-card-layout {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  gap: var(--gh-space-sm);
  align-items: center;
  min-width: 0;
}

.media-card-layout {
  grid-template-columns: 82px minmax(0, 1fr);
  align-items: start;
}

.media-thumb {
  display: grid;
  place-items: center;
  width: 48px;
  aspect-ratio: 1;
  min-height: 0;
  padding: 0;
  overflow: hidden;
  border-radius: var(--gh-radius-control);
  border-color: var(--gh-color-action);
  color: var(--accent-2);
  background: var(--gh-color-surface);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
}

.media-thumb.large {
  width: 82px;
}

.media-gallery-item b,
.media-gallery-item small {
  display: block;
  min-width: 0;
  overflow-wrap: anywhere;
}

.media-gallery-item small {
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
}

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

.plant-context-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--gh-space-md);
  padding-top: var(--gh-space-xs);
  border-top: var(--gh-border-width) solid var(--line);
}

.plant-context-grid h4 {
  margin: 0 0 var(--gh-space-xs);
  font-size: var(--gh-typography-meta-size);
}

.mini-list {
  display: grid;
  gap: var(--gh-space-sm);
  margin: 0;
  padding: 0;
  list-style: none;
}

.mini-list li {
  display: grid;
  grid-template-columns: minmax(58px, auto) minmax(0, 1fr) auto;
  gap: var(--gh-space-xs) var(--gh-space-sm);
  align-items: center;
  min-width: 0;
}

.mini-list li small {
  grid-column: 2 / -1;
  color: var(--muted);
  overflow-wrap: anywhere;
}

.mini-list li span {
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
}

.mini-list li b {
  min-width: 0;
  overflow-wrap: anywhere;
}

.mini-empty,
.mini-more,
.plant-foot {
  color: var(--muted);
  font-size: var(--gh-typography-meta-size);
}

.plant-foot {
  display: flex;
  gap: var(--gh-space-md);
  flex-wrap: wrap;
  padding-top: var(--gh-space-none);
}

.pill-row {
  display: flex;
  gap: var(--gh-space-sm);
  flex-wrap: wrap;
}

.pill {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: var(--gh-space-xs) var(--gh-space-sm);
  border-radius: var(--gh-radius-pill);
  border: var(--gh-border-width) solid var(--line);
  color: var(--muted);
  background: var(--gh-color-surface);
  font-size: var(--gh-typography-meta-size);
}

.split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, .42fr);
  gap: var(--gh-space-md);
}

.empty {
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) dashed var(--line);
  border-radius: var(--gh-radius-control);
  color: var(--muted);
  background: var(--panel);
}

.error-state {
  display: grid;
  gap: var(--gh-space-sm);
  border-color: var(--gh-color-warning);
  color: var(--danger);
}

.error-state span {
  color: var(--muted);
}

@media (max-width: 900px) {
  .app-header,
  .auth-shell,
  .split {
    grid-template-columns: 1fr;
  }

  .login-form {
    grid-template-columns: 1fr;
  }

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

  .warning-grid,
  .urgency-summary,
  .info-summary-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

}

@media (max-width: 560px) {
  .diagnostics-head {
    align-items: stretch;
    flex-direction: column;
  }

  .diagnostics-head button {
    width: 100%;
  }

  .warning-grid,
  .urgency-summary,
  .info-summary-grid,
  .info-form,
  .plant-facts,
  .plant-context-grid {
    grid-template-columns: 1fr;
  }

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

  .mini-list li {
    grid-template-columns: 1fr;
  }

  .media-gallery-item,
  .media-card-layout {
    grid-template-columns: 1fr;
  }

  .mini-list li small {
    grid-column: 1;
  }

}

/* compiled source: config/ui_tokens/styles/foundation.css | role: foundation-contract */
/* Token API foundation contract: canvas, root composition and legacy aliases. */
body {
  background: var(--gh-background-canvas) var(--gh-color-canvas);
  /* Keep decorative layers tied to the viewport. Route content can be much
     taller than the screen and must not make the mint radial more saturated. */
  background-attachment: fixed;
  color: var(--gh-color-text);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: var(--gh-typography-body-size);
  line-height: var(--gh-typography-line-normal);
}

.gh-ux-shell {


  /* The shared card surface is injected after page load. Keep its old token
     names mapped here so it inherits the same visual contract. */
  --gh-bg: var(--gh-color-canvas);
  --gh-bg-warm: var(--gh-color-canvas);
  --gh-surface: var(--gh-color-surface);
  --gh-surface-solid: var(--gh-color-surface);
  --gh-surface-2: var(--gh-color-surface);
  --gh-surface-3: var(--gh-color-action-soft);
  --gh-ink: var(--gh-color-text);
  --gh-ink-2: var(--gh-color-text);
  --gh-ink-muted: var(--gh-color-text-muted);
  --gh-ink-faint: var(--gh-color-text-muted);
  --gh-ink-label: var(--gh-color-text-muted);
  --bg: var(--gh-color-canvas);
  --panel: var(--gh-color-surface);
  --panel-2: var(--gh-color-surface);
  --soft: var(--gh-color-action-soft);
  --ink: var(--gh-color-text);
  --muted: var(--gh-color-text-muted);
  --line: var(--gh-color-border);
  --accent: var(--gh-color-action);
  --accent-strong: var(--gh-color-action-strong);
  --accent-2: var(--gh-color-action-strong);
  --danger: var(--gh-color-danger);
  --warn: var(--gh-color-warning);
  --blue: var(--gh-color-info);
  --shadow: none;
  --gh-glass-1-bg: var(--gh-color-surface);
  --gh-glass-2-bg: var(--gh-color-surface);
  --gh-border-glass: 1px solid var(--gh-color-border);
  --gh-highlight-top: none;
  --gh-elev-2: none;
  --gh-elev-3: none;
  --gh-shadow-sheet: none;
  --gh-radius-2xl: var(--gh-radius-control);
  --gh-radius-3xl: var(--gh-radius-surface);
  --gh-radius-lg: var(--gh-radius-control);
  --gh-radius-sm: var(--gh-radius-control);
  --gh-radius-pill: var(--gh-radius-pill);
  --gh-blur-sm: none;
  --gh-blur-lg: none;
  --gh-mint-bg: var(--gh-color-action-soft);
  --gh-mint-fg: var(--gh-color-action-strong);
  --gh-sky-bg: var(--gh-color-info-soft);
  --gh-sky-fg: var(--gh-color-info);
  --gh-warn-bg: var(--gh-color-warning-soft);
  --gh-warn-fg: var(--gh-color-warning);
  --gh-red-bg: var(--gh-color-danger-soft);
  --gh-red-fg: var(--gh-color-danger);
  --gh-neutral-bg: var(--gh-color-surface);
  --gh-neutral-fg: var(--gh-color-text);
  font-size: var(--gh-typography-body-size);
  line-height: var(--gh-typography-line-normal);
}

/* compiled source: config/ui_tokens/structure/care-plan-v1.css | role: component-structure */
.gh-care-plan-composer {
  display: grid;
  gap: var(--gh-space-lg);
}

.gh-care-plan-composer textarea {
  box-sizing: border-box;
  display: block;
  font: var(--gh-typography-body-size)/var(--gh-typography-line-normal) var(--gh-typography-family-mono);
  margin-top: var(--gh-space-sm);
  min-height: 18rem;
  resize: vertical;
  width: 100%;
}

.gh-care-plan-error,
.gh-care-plan-preview,
.gh-care-plan-technical-error,
.gh-care-plan-confirm,
.gh-care-plan-stale,
.gh-care-plan-success {
  border: var(--gh-border-width) solid color-mix(in srgb, currentColor 18%, transparent);
  border-radius: var(--gh-radius-surface);
  padding: var(--gh-space-lg);
}

.gh-care-plan-error + .gh-care-plan-error {
  margin-top: var(--gh-space-md);
}

.gh-care-plan-error dl {
  display: grid;
  gap: var(--gh-space-xs) var(--gh-space-md);
  grid-template-columns: minmax(7rem, auto) 1fr;
  margin-bottom: 0;
}

.gh-care-plan-error dt {
  font-weight: var(--gh-typography-weight-bold);
}

.gh-care-plan-error dd {
  margin: 0;
  overflow-wrap: anywhere;
}

.gh-care-plan-preview h4 {
  margin-bottom: var(--gh-space-xs);
}

.gh-care-plan-preview ol,
.gh-care-plan-preview ul {
  display: grid;
  gap: var(--gh-space-sm);
  margin-top: 0;
}

.gh-care-plan-replacement-count,
.gh-care-plan-confirm,
.gh-care-plan-stale,
.gh-care-plan-success {
  background: color-mix(in srgb, var(--gh-color-action) 12%, transparent);
  border-radius: var(--gh-radius-surface);
  padding: var(--gh-space-md);
}

.gh-care-plan-confirm,
.gh-care-plan-stale,
.gh-care-plan-success {
  margin-top: var(--gh-space-lg);
}

.gh-care-plan-confirm > div {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
}

.care-plan-v1-dialog {
  border: 0;
  border-radius: var(--gh-radius-surface);
  box-sizing: border-box;
  max-height: min(90vh, 960px);
  max-width: min(94vw, 980px);
  padding: 0;
  width: 100%;
}

.care-plan-v1-dialog::backdrop {
  background: var(--gh-color-scrim);
  backdrop-filter: none;
}

.care-plan-v1-dialog .dialog-body {
  max-height: calc(90vh - 6rem);
  overflow: auto;
}

.care-plan-v1-dialog .dialog-head p {
  margin: var(--gh-space-xs) 0 0;
}

/* compiled source: config/ui_tokens/structure/task-actions-v2.css | role: component-structure */
.task-actions-v2 {
  color: var(--gh-color-text);
  font: var(--gh-typography-body-size)/var(--gh-typography-line-normal) var(--gh-typography-family-body);
  margin: 0 auto;
  max-width: 960px;
}

.task-actions-v2 form {
  background: var(--gh-color-surface);
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-surface);
  margin: var(--gh-space-lg) 0;
  padding: var(--gh-space-lg);
}

.task-actions-v2-summary {
  display: grid;
  gap: var(--gh-space-xs);
  margin: 0;
}

.task-actions-v2 label {
  display: block;
  margin: var(--gh-space-md) 0;
}

.task-actions-v2 input:not([type="checkbox"]),
.task-actions-v2 select,
.task-actions-v2 textarea {
  box-sizing: border-box;
  display: block;
  margin-top: var(--gh-space-xs);
  min-height: 44px;
  padding: var(--gh-space-sm);
  width: 100%;
}

.task-actions-v2 button {
  background: var(--gh-color-scrim);
  border: 0;
  border-radius: var(--gh-radius-surface);
  cursor: pointer;
  font-weight: var(--gh-typography-weight-bold);
  min-height: 44px;
  padding: var(--gh-space-sm) var(--gh-space-lg);
}

.task-actions-v2 .task-actions-v2-danger {
  background: var(--gh-color-danger-soft);
  color: var(--gh-color-danger);
}

.task-actions-v2 button:disabled {
  cursor: wait;
  opacity: var(--gh-opacity-disabled);
}

.task-actions-v2-error,
.task-actions-v2-success {
  border-radius: var(--gh-radius-control);
  margin-top: var(--gh-space-md);
  padding: var(--gh-space-md);
}

.task-actions-v2-error {
  background: var(--gh-color-danger-soft);
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
}

.task-actions-v2-success,
.task-actions-v2-readonly {
  background: var(--gh-color-action-soft);
}

.task-actions-v2-error dl {
  display: grid;
  gap: var(--gh-space-xs) var(--gh-space-md);
  grid-template-columns: 120px 1fr;
}

.task-actions-v2-error dt {
  font-weight: var(--gh-typography-weight-bold);
}

.task-actions-v2-error dd {
  margin: 0;
}

.task-actions-v2 pre {
  overflow: auto;
  white-space: pre-wrap;
}

.task-actions-v2-dialog {
  border: 0;
  border-radius: var(--gh-radius-surface);
  max-height: min(88vh, 920px);
  max-width: min(760px, calc(100vw - 32px));
  padding: 0;
  width: 100%;
}

.task-actions-v2-dialog::backdrop {
  background: var(--gh-color-scrim);
  backdrop-filter: none;
}

/* compiled source: config/ui_tokens/structure/new-plant-v1.css | role: component-structure */
.gh-new-plant-composer {
  color: var(--gh-color-text);
  font: var(--gh-typography-body-size)/var(--gh-typography-line-normal) var(--gh-typography-family-body);
  margin: var(--gh-space-xl) auto;
  max-width: 960px;
}

.new-plant-v1-dialog {
  border: 0;
  border-radius: var(--gh-radius-surface);
  box-shadow: var(--gh-elevation-none);
  max-height: min(92vh, 960px);
  max-width: min(1040px, calc(100vw - 24px));
  padding: 0;
  width: 100%;
}

.new-plant-v1-dialog::backdrop {
  background: var(--gh-color-scrim);
}

.new-plant-v1-dialog .gh-new-plant-composer {
  margin: 0;
  max-width: none;
}

.gh-new-plant-composer textarea {
  box-sizing: border-box;
  display: block;
  font: var(--gh-typography-body-size)/var(--gh-typography-line-normal) var(--gh-typography-family-mono);
  margin: var(--gh-space-sm) 0 var(--gh-space-md);
  min-height: 360px;
  padding: var(--gh-space-md);
  width: 100%;
}

.gh-new-plant-composer button {
  cursor: pointer;
  min-height: 44px;
  padding: var(--gh-space-sm) var(--gh-space-lg);
}

.gh-new-plant-guidance {
  align-items: flex-start;
  background: var(--gh-color-info-soft);
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-surface);
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-md) var(--gh-space-lg);
  margin: var(--gh-space-lg) 0;
  padding: var(--gh-space-lg);
}

.gh-new-plant-guidance details {
  flex: 1 1 420px;
}

.gh-new-plant-guidance summary {
  color: var(--gh-color-action-strong);
  cursor: pointer;
  font-weight: var(--gh-typography-weight-bold);
  min-height: 44px;
  padding: var(--gh-space-md) 0;
}

.gh-new-plant-guidance p {
  margin: var(--gh-space-sm) 0;
}

.gh-new-plant-guidance pre {
  background: var(--gh-color-surface);
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-radius: var(--gh-radius-control);
  font: var(--gh-typography-body-size)/var(--gh-typography-line-normal) var(--gh-typography-family-mono);
  margin: var(--gh-space-sm) 0 0;
  max-height: 360px;
  overflow: auto;
  padding: var(--gh-space-md);
  white-space: pre;
}

.gh-new-plant-error,
.gh-new-plant-preview,
.gh-new-plant-duplicate {
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-surface);
  margin: var(--gh-space-md) 0;
  padding: var(--gh-space-lg);
}

.gh-new-plant-error {
  background: var(--gh-color-danger-soft);
  border-color: var(--gh-color-border-strong);
}

.gh-new-plant-error dl,
.gh-new-plant-card-fields {
  display: grid;
  gap: var(--gh-space-sm) var(--gh-space-lg);
  grid-template-columns: minmax(140px, 220px) 1fr;
}

.gh-new-plant-error dt,
.gh-new-plant-card-fields dt {
  font-weight: var(--gh-typography-weight-bold);
}

.gh-new-plant-error dd,
.gh-new-plant-card-fields dd {
  margin: 0;
  overflow-wrap: anywhere;
}

.gh-new-plant-duplicate {
  background: var(--gh-color-warning-soft);
  border-color: var(--gh-color-border-strong);
}

.gh-new-plant-readonly {
  background: var(--gh-color-action-soft);
  border-radius: var(--gh-radius-control);
  padding: var(--gh-space-md);
}

.gh-new-plant-confirm {
  align-items: flex-start;
  background: var(--gh-color-info-soft);
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-surface);
  display: flex;
  flex-direction: column;
  gap: var(--gh-space-md);
  margin-top: var(--gh-space-lg);
  padding: var(--gh-space-lg);
}

.gh-new-plant-confirm label {
  align-items: flex-start;
  display: flex;
  gap: var(--gh-space-md);
}

.gh-new-plant-confirm input {
  margin-top: var(--gh-space-xs);
}

.gh-new-plant-confirm button:disabled {
  cursor: wait;
  opacity: var(--gh-opacity-disabled);
}

/* compiled source: config/ui_tokens/styles/guarded-dialogs.css | role: component-contract */
/* Token API component contract: guarded forms and dialogs. */
.copy-text-actions {
  margin-top: var(--gh-space-md);
}

.care-plan-v1-dialog,
.task-actions-v2-dialog,
.new-plant-v1-dialog {
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
  box-shadow: var(--gh-elevation-none);
}

.care-plan-v1-dialog::backdrop,
.task-actions-v2-dialog::backdrop,
.new-plant-v1-dialog::backdrop {
  background: var(--gh-color-scrim);
  backdrop-filter: none;
}

.care-plan-v1-dialog .dialog-head,
.task-actions-v2-dialog .dialog-head,
.new-plant-v1-dialog .dialog-head {
  border-bottom-color: var(--gh-color-border);
  background: var(--gh-color-surface);
}

.task-actions-v2-dialog .dialog-head > button[aria-label="Закрыть"] {
  min-width: var(--gh-size-touch-target);
  min-height: var(--gh-size-touch-target);
}

/* media.js mounts this legacy confirmation directly under body, outside shell. */
.photo-delete-dialog {
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
  box-shadow: var(--gh-elevation-none);
  backdrop-filter: none;
}

.photo-delete-dialog::backdrop {
  background: var(--gh-color-scrim);
  backdrop-filter: none;
}

.photo-delete-dialog .dialog-head {
  border-bottom-color: var(--gh-color-border);
  background: var(--gh-color-surface);
}

.photo-delete-dialog .photo-delete-description {
  color: var(--gh-color-text-muted);
}

.photo-delete-dialog .photo-delete-confirm {
  border-color: var(--gh-color-danger);
  background: var(--gh-color-danger-soft);
  color: var(--gh-color-danger);
}

.gh-care-plan-error,
.gh-care-plan-preview,
.gh-care-plan-technical-error,
.gh-care-plan-confirm,
.gh-care-plan-stale,
.gh-care-plan-success,
.task-actions-v2 form,
.task-actions-v2-error,
.task-actions-v2-success,
.task-actions-v2-readonly,
.gh-new-plant-error,
.gh-new-plant-preview,
.gh-new-plant-duplicate,
.gh-new-plant-readonly,
.gh-new-plant-confirm {
  border-color: var(--gh-color-border);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-care-plan-confirm,
.gh-care-plan-success,
.task-actions-v2-success,
.task-actions-v2-readonly,
.gh-new-plant-readonly,
.gh-new-plant-confirm {
  border-color: var(--gh-color-action);
  background: var(--gh-color-action-soft);
}

.gh-care-plan-error,
.gh-care-plan-technical-error,
.task-actions-v2-error,
.gh-new-plant-error {
  border-color: var(--gh-color-danger);
  background: var(--gh-color-danger-soft);
  color: var(--gh-color-danger);
}

.gh-care-plan-stale,
.gh-new-plant-duplicate {
  border-color: var(--gh-color-warning);
  background: var(--gh-color-warning-soft);
  color: var(--gh-color-warning);
}

/* compiled source: config/ui_tokens/structure/ux-app-shell.css | role: route-structure */
/* Issue #608: adaptive application shell only. Product screens remain owned by
   their existing card-native modules and mount into stable route roots. */

.gh-ux-icon-sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

.gh-ux-shell {
  --gh-ux-bottom-height: 72px;
  --gh-ux-shell-bg: var(--gh-color-info-soft);
  --gh-ux-panel: var(--gh-color-surface);
  --gh-ux-panel-strong: var(--gh-color-surface);
  --gh-ux-line: var(--gh-color-border);
  --gh-ux-muted: var(--gh-color-text-muted);
  --gh-ux-ink: var(--gh-color-text);
  --gh-ux-accent: var(--gh-color-action);
  --gh-ux-accent-soft: var(--gh-color-action-soft);
  --gh-ux-danger: var(--gh-color-danger);
  --gh-ux-shadow: 0 16px 44px var(--gh-color-action-soft);
  min-height: 100dvh;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr);
  background: var(--gh-background-canvas) var(--gh-color-canvas);
  background-attachment: fixed;
  color: var(--gh-ux-ink);
}

body {
  min-width: 0;
  overflow-x: clip;
}

.gh-ux-shell button,
.gh-ux-shell a,
.gh-ux-shell input,
.gh-ux-shell select,
.gh-ux-shell textarea,
.gh-ux-shell [tabindex]:not([tabindex="-1"]) {
  scroll-margin: var(--gh-space-lg);
}

.gh-ux-shell :where(button, a, input, select, textarea, [tabindex]:not([tabindex="-1"])):focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-ux-accent);
  outline-offset: var(--gh-focus-offset);
}

.gh-ux-app-bar {
  position: sticky;
  top: 0;
  z-index: var(--gh-layer-navigation);
  min-width: 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: clamp(var(--gh-space-sm), 2vw, var(--gh-space-xl));
  padding: var(--gh-space-sm) clamp(var(--gh-space-md), 3vw, var(--gh-space-3xl));
  border-bottom: var(--gh-border-width) solid var(--gh-ux-line);
}

.gh-ux-brand {
  min-height: 48px;
  display: flex;
  align-items: center;
  gap: var(--gh-space-md);
  padding: var(--gh-space-none) var(--gh-space-sm);
}

.gh-ux-brand-mark {
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  display: grid;
  place-items: center;
  border: var(--gh-border-width) solid var(--gh-color-border);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  letter-spacing: 0;
}

.gh-ux-brand-copy {
  min-width: 0;
  display: grid;
  line-height: var(--gh-typography-line-tight);
}

.gh-ux-brand-copy b {
  overflow: hidden;
  color: var(--gh-ux-ink);
  font-size: var(--gh-typography-card-size);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.gh-ux-brand-copy small {
  margin-top: var(--gh-space-xs);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  letter-spacing: 0;
  text-transform: uppercase;
}

.gh-ux-nav {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: var(--gh-space-xs);
  overflow-x: auto;
  overscroll-behavior-inline: contain;
}

.gh-ux-nav button {
  min-height: 44px;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: var(--gh-space-md);
  padding: var(--gh-space-md) var(--gh-space-sm);
  border: var(--gh-border-width) solid transparent;
  background: transparent;
  font-weight: var(--gh-typography-weight-bold);
  text-align: left;
}

.gh-ux-nav button:hover {

}

.gh-ux-nav button[aria-current="page"] {
  border-color: var(--gh-color-border);
  background: var(--gh-ux-accent-soft);
  color: var(--gh-color-action);
  box-shadow: var(--gh-elevation-none);
}

.gh-ux-nav svg,
.gh-ux-bottom-nav svg,
.gh-ux-events-link svg {
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.gh-ux-nav [data-ux-route-target="gpt"] svg,
.gh-ux-bottom-nav [data-ux-route-target="gpt"] svg {
  fill: currentColor;
  stroke: none;
}

.gh-ux-nav-icon-wrap {
  position: relative;
  display: inline-grid;
  place-items: center;
}

.gh-ux-nav > button > svg {
  display: none;
}

.gh-ux-task-badge {
  position: absolute;
  top: -8px;
  right: -12px;
  min-width: 20px;
  height: 20px;
  display: inline-grid;
  place-items: center;
  padding: 0 var(--gh-space-xs);
  border: var(--gh-border-urgency-width) solid var(--gh-ux-panel-strong);
  border-radius: var(--gh-radius-surface);
  color: var(--gh-color-surface);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  font-variant-numeric: tabular-nums;
  line-height: var(--gh-typography-line-tight);
}

.gh-ux-workspace {
  min-width: 0;
}

.gh-ux-shell .app-header {
  grid-template-columns: auto minmax(0, 1fr) auto;
}

.gh-ux-shell .gh-ux-main {
  width: min(100%, 1500px);
  min-width: 0;
  margin: 0 auto;
  padding: var(--gh-space-lg) clamp(var(--gh-space-lg), 3vw, var(--gh-space-3xl)) var(--gh-space-3xl);
}

.gh-ux-route-deck,
.gh-ux-route-panel,
.gh-ux-route-panel > [data-ux-compat-host] {
  min-width: 0;
}

body:not([data-card-dashboard="ready"]) .gh-ux-route-deck,
body[data-card-dashboard="recovery"] .gh-ux-route-deck,
body[data-auth="signed-out"] .gh-ux-route-deck {
  display: none;
}

body[data-card-dashboard="ready"] .gh-ux-shell-loading,
body[data-card-dashboard="recovery"] .gh-ux-shell-loading,
body[data-auth="signed-out"] .gh-ux-shell-loading {
  display: none;
}

body:not([data-card-dashboard="ready"]) .gh-ux-task-badge,
body:not([data-card-dashboard="ready"]) .gh-ux-shell #userEmail {
  display: none !important;
}

.gh-ux-shell-loading {
  display: grid;
  gap: var(--gh-space-md);
  padding: clamp(var(--gh-space-lg), 4vw, var(--gh-space-3xl));
  border: var(--gh-border-width) solid var(--gh-ux-line);
  border-radius: var(--gh-radius-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-ux-shell-loading p {
  color: var(--gh-ux-muted);
}

.gh-ux-skeleton-line,
.gh-ux-skeleton-grid span {
  display: block;
  min-height: 20px;
}

.gh-ux-skeleton-line { width: min(100%, 520px); }
.gh-ux-skeleton-title { width: min(68%, 280px); min-height: 32px; }
.gh-ux-skeleton-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gh-space-lg); margin-top: var(--gh-space-sm); }
.gh-ux-skeleton-grid span { min-height: 210px; border-radius: var(--gh-radius-surface); }

.gh-ux-route-panel[hidden] {
  display: none !important;
}

.gh-ux-load-status {
  margin: var(--gh-space-lg) var(--gh-space-none) var(--gh-space-none);
  color: var(--gh-color-text);
  font-size: var(--gh-typography-meta-size);
  line-height: var(--gh-typography-line-tight);
  text-align: right;
}

.gh-ux-load-status:empty {
  display: none;
}

.gh-ux-route-header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: var(--gh-space-lg);
  margin: 0 0 var(--gh-space-lg);
  padding: var(--gh-space-sm) var(--gh-space-none) 0;
  border: 0;
  background: transparent;
}

.gh-ux-route-header h2 {

}

.gh-ux-route-header p {
  max-width: 680px;
}

.gh-ux-route-eyebrow {

  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  text-transform: uppercase;
}

.gh-ux-events-link {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: var(--gh-space-sm);
  flex: 0 1 auto;
  border-radius: var(--gh-radius-surface);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-ux-shell .card-dashboard-mount {
  min-width: 0;
  margin: 0;
  border-radius: var(--gh-radius-surface);
  background: transparent;
  color: var(--ink);
  overflow: clip;
}

.gh-ux-shell .live-card-dashboard {
  min-width: 0;
}

.gh-ux-shell .live-card-dashboard .wrap {
  width: min(100%, 1500px);
}

.gh-ux-shell .live-card-dashboard > header .topbar {
  grid-template-columns: minmax(0, 1fr);
  padding-top: var(--gh-space-md);
}

.gh-ux-shell .live-card-dashboard > header .topbar > :first-child {
  display: none;
}

.gh-ux-shell .live-card-dashboard > header .actions {
  justify-content: flex-start;
}

.gh-ux-shell .live-recovery-panel {
  margin: clamp(var(--gh-space-lg), 5vw, var(--gh-space-3xl)) auto;
  border-radius: var(--gh-radius-surface);
  background: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-ux-bottom-nav {
  display: none;
}

@media (min-width: 1200px) and (max-width: 1439px) {
  .gh-ux-shell .app-header .user-panel span {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
  }

  .gh-ux-shell .live-card-dashboard .stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (max-width: 1199px) and (min-width: 768px) {
  .gh-ux-brand {
    padding: 0;
  }

  .gh-ux-brand-mark {
    width: 46px;
    height: 46px;
    flex-basis: 46px;
  }

  .gh-ux-brand-copy {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
  }

  .gh-ux-nav {
    width: 100%;
  }
}

@media (max-width: 767px) {
  .gh-ux-shell {
    display: block;
    min-height: 100dvh;
    padding-bottom: calc(var(--gh-ux-bottom-height) + env(safe-area-inset-bottom));
  }

  .gh-ux-shell .app-header {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--gh-space-md);
    padding: var(--gh-space-md) var(--gh-space-md);
  }

  .gh-ux-nav {
    display: none;
  }

  .gh-ux-shell .user-panel {
    flex-wrap: nowrap;
    gap: var(--gh-space-sm);
  }

  .gh-ux-shell .user-panel span {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
  }

  .gh-ux-shell .user-panel button {
    min-height: 44px;
    padding: var(--gh-space-sm) var(--gh-space-md);
    font-size: var(--gh-typography-meta-size);
  }

  .gh-ux-shell .gh-ux-main {
    width: 100%;
  }

  .gh-ux-route-header {
    align-items: start;
    gap: var(--gh-space-md);
    margin-bottom: var(--gh-space-md);
    padding-inline: var(--gh-space-xs);
  }

  .gh-ux-route-header h2 {

  }

  .gh-ux-route-header p {
    font-size: var(--gh-typography-meta-size);
  }

  .gh-ux-events-link {
    min-width: 44px;
    padding-inline: var(--gh-space-md);
  }

  .gh-ux-events-link svg {
    display: none;
  }

  .gh-ux-shell-loading {
    padding: var(--gh-space-lg);
    border-radius: var(--gh-radius-surface);
  }

  .gh-ux-skeleton-grid {
    grid-template-columns: 1fr;
  }

  .gh-ux-skeleton-grid span:not(:first-child) {
    display: none;
  }

  .gh-ux-shell .live-card-dashboard > header .actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .gh-ux-shell .live-card-dashboard > header .actions > button {
    min-height: 44px;
    width: 100%;
  }

  .gh-ux-shell .live-recovery-panel {
    margin: var(--gh-space-sm) 0;
  }

  .gh-ux-bottom-nav {
    position: fixed;
    inset: auto 0 0;
    z-index: var(--gh-layer-overlay);
    min-height: calc(var(--gh-ux-bottom-height) + env(safe-area-inset-bottom));
    display: flex;
    align-items: start;
    padding: var(--gh-space-sm) var(--gh-space-xs) calc(var(--gh-space-sm) + env(safe-area-inset-bottom));
    border-top: var(--gh-border-width) solid var(--gh-ux-line);
    background: var(--gh-color-canvas);
    box-shadow: var(--gh-elevation-none);
    backdrop-filter: none;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
  }

  .gh-ux-bottom-nav button {
    min-width: var(--gh-ux-bottom-height);
    flex: 1 0 var(--gh-ux-bottom-height);
    min-height: 52px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--gh-space-xs);
    padding: var(--gh-space-xs) var(--gh-space-none);
    border-color: transparent;
    border-radius: var(--gh-radius-surface);
    background: transparent;
    color: var(--gh-ux-muted);
    font-size: var(--gh-typography-meta-size);
    font-weight: var(--gh-typography-weight-bold);
    line-height: var(--gh-typography-line-tight);
  }

  .gh-ux-bottom-nav button[aria-current="page"] {
    background: var(--gh-ux-accent-soft);
    color: var(--gh-color-action);
  }

  .gh-ux-bottom-nav svg {
    width: 21px;
    height: 21px;
  }

  .gh-ux-bottom-nav .gh-ux-task-badge {
    top: -7px;
    right: -11px;
  }
}



@media (prefers-reduced-motion: reduce) {
  .gh-ux-shell *,
  .gh-ux-shell *::before,
  .gh-ux-shell *::after {
    scroll-behavior: auto !important;
    animation-duration: var(--gh-motion-fast) !important;
    animation-iteration-count: 1 !important;
    transition-duration: var(--gh-motion-fast) !important;
  }
}

/* compiled source: config/ui_tokens/structure/ux-fertilizer-sessions.css | role: route-structure */
.gh-fertilizer-route-header {
  align-items: end;
}

.gh-fertilizer-route-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
}

.gh-fertilizer-route-actions button,
.gh-fertilizer-state button,
.gh-fertilizer-session button,
.gh-fertilizer-editor button {
  min-height: 44px;
  padding: var(--gh-space-sm) var(--gh-space-lg);
  color: var(--gh-color-text);
  font: inherit;
  font-weight: var(--gh-typography-weight-bold);
  background: var(--gh-color-surface);
  border: var(--gh-border-width) solid var(--gh-color-control-border);
  border-radius: var(--gh-radius-pill);
  cursor: pointer;
}

.gh-fertilizer-route-actions button:disabled,
.gh-fertilizer-session button:disabled,
.gh-fertilizer-editor button:disabled {
  cursor: progress;
  opacity: var(--gh-opacity-disabled);
}

.gh-fertilizer-state,
.gh-fertilizer-notice {
  padding: var(--gh-space-xl);
  color: var(--gh-color-text);
  background: var(--gh-color-surface);
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-radius: var(--gh-radius-surface);
}

.gh-fertilizer-state h3,
.gh-fertilizer-state p,
.gh-fertilizer-notice {
  margin: 0;
}

.gh-fertilizer-state p {
  margin-block-start: var(--gh-space-sm);
  color: var(--gh-color-text-muted);
}

.gh-fertilizer-state button {
  margin-block-start: var(--gh-space-lg);
}

.gh-fertilizer-notice {
  margin-block-end: var(--gh-space-lg);
  background: var(--gh-color-action-soft);
  border-color: var(--gh-color-action);
}

.gh-fertilizer-notice[data-tone="error"] {
  background: var(--gh-color-danger-soft);
  border-color: var(--gh-color-danger);
}

.gh-fertilizer-notice[data-tone="info"] {
  background: var(--gh-color-info-soft);
  border-color: var(--gh-color-info);
}

.gh-fertilizer-session-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-auto-rows: 1fr;
  align-items: stretch;
  gap: var(--gh-space-lg);
  min-width: 0;
}

.gh-fertilizer-session-grid:has(.gh-fertilizer-editor) {
  grid-auto-rows: auto;
}

.gh-fertilizer-session small,
.gh-fertilizer-session p,
.gh-fertilizer-roster p,
.gh-fertilizer-exception-editor p,
.gh-fertilizer-editor__footer p {
  color: var(--gh-color-text-muted);
}

.gh-fertilizer-session {
  display: grid;
  gap: var(--gh-space-lg);
  min-width: 0;
  padding: var(--gh-space-xl);
  color: var(--gh-color-text);
  background: var(--gh-color-surface);
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-radius: var(--gh-radius-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-fertilizer-session:not(:has(.gh-fertilizer-editor)) {
  grid-template-rows: minmax(0, 1fr) auto auto;
  height: 100%;
}

.gh-fertilizer-session[data-due="overdue"] {
  border-color: var(--gh-color-warning);
}

.gh-fertilizer-session:has(.gh-fertilizer-editor) {
  grid-column: 1 / -1;
}

.gh-fertilizer-session__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--gh-space-lg);
  min-width: 0;
}

.gh-fertilizer-session__head h3,
.gh-fertilizer-session__head p,
.gh-fertilizer-session__recipe strong,
.gh-fertilizer-session__recipe small {
  margin: 0;
  overflow-wrap: anywhere;
}

.gh-fertilizer-session__head h3 {
  margin-block: var(--gh-space-xs);
  font-size: var(--gh-typography-card-size);
}

.gh-fertilizer-session__status,
.gh-fertilizer-badge,
.gh-fertilizer-dose {
  display: inline-flex;
  width: fit-content;
  max-width: 100%;
  padding: var(--gh-space-xs) var(--gh-space-sm);
  border-radius: var(--gh-radius-pill);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  overflow-wrap: anywhere;
}

.gh-fertilizer-session__status {
  color: var(--gh-color-action-strong);
  background: var(--gh-color-action-soft);
}

.gh-fertilizer-session[data-due="overdue"] .gh-fertilizer-session__status,
.gh-fertilizer-badge[data-variant="warning"] {
  color: var(--gh-color-text);
  background: var(--gh-color-warning-soft);
}

.gh-fertilizer-session__recipe {
  display: grid;
  align-content: start;
  gap: var(--gh-space-xs);
  min-width: 118px;
  text-align: right;
}

.gh-fertilizer-session__counts {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--gh-space-sm);
  margin: 0;
}

.gh-fertilizer-session__counts > div {
  display: grid;
  gap: var(--gh-space-xs);
  min-width: 0;
  padding: var(--gh-space-md);
  background: var(--gh-color-canvas);
  border-radius: var(--gh-radius-control);
}

.gh-fertilizer-session__counts dt {
  color: var(--gh-color-text-muted);
  font-size: var(--gh-typography-meta-size);
}

.gh-fertilizer-session__counts dd {
  margin: 0;
  font-size: var(--gh-typography-card-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-fertilizer-session__open {
  justify-self: stretch;
}

.gh-fertilizer-session__open[aria-expanded="true"],
.gh-fertilizer-editor__footer [data-variant="accent"] {
  color: var(--gh-color-surface);
  background: var(--gh-color-action-strong);
  border-color: var(--gh-color-action-strong);
}

.gh-fertilizer-editor {
  display: grid;
  gap: var(--gh-space-lg);
  min-width: 0;
  padding-block-start: var(--gh-space-lg);
  border-block-start: var(--gh-border-width) solid var(--gh-color-border);
}

.gh-fertilizer-editor__fields {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--gh-space-md);
  min-width: 0;
}

.gh-fertilizer-editor__fields label,
.gh-fertilizer-exception-editor label {
  display: grid;
  align-content: start;
  gap: var(--gh-space-sm);
  min-width: 0;
  font-weight: var(--gh-typography-weight-bold);
}

.gh-fertilizer-editor input[type="date"],
.gh-fertilizer-editor input[type="number"] {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  box-sizing: border-box;
  padding: var(--gh-space-sm) var(--gh-space-md);
  color: var(--gh-color-text);
  font: inherit;
  background: var(--gh-color-surface);
  border: var(--gh-border-width) solid var(--gh-color-control-border);
  border-radius: var(--gh-radius-control);
}

.gh-fertilizer-exception-open {
  justify-self: start;
}

.gh-fertilizer-exception-editor {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(150px, 220px) auto auto;
  align-items: end;
  gap: var(--gh-space-md);
  padding: var(--gh-space-lg);
  background: var(--gh-color-info-soft);
  border: var(--gh-border-width) solid var(--gh-color-info);
  border-radius: var(--gh-radius-surface);
}

.gh-fertilizer-exception-editor p {
  margin: var(--gh-space-xs) 0 0;
}

.gh-fertilizer-selection-summary {
  padding: var(--gh-space-md) var(--gh-space-lg);
  background: var(--gh-color-action-soft);
  border-radius: var(--gh-radius-control);
}

.gh-fertilizer-roster,
.gh-fertilizer-resolved {
  min-width: 0;
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-radius: var(--gh-radius-surface);
}

.gh-fertilizer-roster > header {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: var(--gh-space-md);
  margin-block-end: var(--gh-space-md);
}

.gh-fertilizer-roster h4,
.gh-fertilizer-roster p {
  margin: 0;
}

.gh-fertilizer-roster h4 span {
  color: var(--gh-color-text-muted);
}

.gh-fertilizer-roster p {
  margin-block-start: var(--gh-space-xs);
}

.gh-fertilizer-roster[data-fertilizer-roster="excluded"],
.gh-fertilizer-roster[data-fertilizer-roster="recent"] {
  background: var(--gh-color-warning-soft);
}

.gh-fertilizer-roster__list {
  display: grid;
  gap: var(--gh-space-sm);
  min-width: 0;
}

.gh-fertilizer-plant {
  display: grid;
  grid-template-columns: minmax(220px, 1.2fr) minmax(170px, 0.8fr) minmax(160px, auto);
  align-items: center;
  gap: var(--gh-space-md);
  min-width: 0;
  padding: var(--gh-space-md);
  background: var(--gh-color-surface);
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-radius: var(--gh-radius-control);
}

.gh-fertilizer-plant:has([data-fertilizer-feed]:checked) {
  border-color: var(--gh-color-action);
  background: var(--gh-color-action-soft);
}

.gh-fertilizer-plant__select {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  align-items: center;
  min-width: 0;
}

.gh-fertilizer-plant__select > input,
.gh-fertilizer-plant__exception > input {
  width: 22px;
  height: 22px;
  justify-self: center;
  accent-color: var(--gh-color-action);
}

.gh-fertilizer-plant__identity,
.gh-fertilizer-plant__facts,
.gh-fertilizer-plant__actions {
  display: grid;
  gap: var(--gh-space-xs);
  min-width: 0;
}

.gh-fertilizer-plant__identity strong,
.gh-fertilizer-plant__identity small,
.gh-fertilizer-plant__facts small {
  overflow-wrap: anywhere;
}

.gh-fertilizer-dose {
  color: var(--gh-color-action-strong);
  background: var(--gh-color-action-soft);
}

.gh-fertilizer-dose[data-variant="exception"] {
  color: var(--gh-color-text);
  background: var(--gh-color-info-soft);
  outline: var(--gh-border-width) solid var(--gh-color-info);
}

.gh-fertilizer-plant__actions {
  justify-items: start;
}

.gh-fertilizer-plant__actions button {
  min-height: 40px;
  padding: var(--gh-space-xs) var(--gh-space-md);
}

.gh-fertilizer-plant__exception {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  align-items: center;
  min-height: 44px;
  font-size: var(--gh-typography-meta-size);
}

.gh-fertilizer-resolved summary {
  min-height: 44px;
  padding: var(--gh-space-sm) 0;
  font-weight: var(--gh-typography-weight-bold);
  cursor: pointer;
}

.gh-fertilizer-resolved[open] summary {
  margin-block-end: var(--gh-space-md);
}

.gh-fertilizer-editor__footer {
  position: sticky;
  bottom: var(--gh-space-md);
  z-index: var(--gh-layer-content);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gh-space-lg);
  padding: var(--gh-space-lg);
  background: var(--gh-color-surface);
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-fertilizer-editor__footer p {
  margin: 0;
}

.gh-fertilizer-editor__footer > div {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
}

@media (max-width: 1199px) and (min-width: 768px) {
  .gh-fertilizer-session-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
  .gh-fertilizer-editor__fields,
  .gh-fertilizer-exception-editor {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }

  .gh-fertilizer-exception-editor > div {
    grid-column: 1 / -1;
  }

  .gh-fertilizer-plant {
    grid-template-columns: minmax(0, 1fr) minmax(170px, 0.7fr);
  }

  .gh-fertilizer-plant__actions {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
  }
}

@media (max-width: 767px) {
  .gh-fertilizer-session-grid {
    grid-template-columns: minmax(0, 1fr);
    grid-auto-rows: auto;
  }

  .gh-fertilizer-session:not(:has(.gh-fertilizer-editor)) {
    grid-template-rows: auto;
    height: auto;
  }

  .gh-fertilizer-route-header,
  .gh-fertilizer-session__head,
  .gh-fertilizer-roster > header,
  .gh-fertilizer-editor__footer {
    align-items: stretch;
    flex-direction: column;
  }

  .gh-fertilizer-route-actions,
  .gh-fertilizer-route-actions button,
  .gh-fertilizer-session__open,
  .gh-fertilizer-roster > header > button,
  .gh-fertilizer-editor__footer button {
    width: 100%;
  }

  .gh-fertilizer-route-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
  }

  .gh-fertilizer-session__head,
  .gh-fertilizer-editor__fields,
  .gh-fertilizer-exception-editor,
  .gh-fertilizer-plant {
    grid-template-columns: minmax(0, 1fr);
  }

  .gh-fertilizer-session__recipe {
    min-width: 0;
    text-align: left;
  }

  .gh-fertilizer-session__counts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .gh-fertilizer-session,
  .gh-fertilizer-roster {
    padding: var(--gh-space-lg);
  }

  .gh-fertilizer-plant__actions {
    grid-column: auto;
  }

  .gh-fertilizer-editor__footer {
    position: static;
  }

  .gh-fertilizer-editor__footer > div {
    display: grid;
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .gh-fertilizer-session-grid,
  .gh-fertilizer-session-grid * {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/* compiled source: config/ui_tokens/styles/shell-controls.css | role: component-contract */
/* Token API component contract: application shell, navigation and controls. */
.gh-ux-app-bar {
  border-bottom-color: var(--gh-color-border);
  background: var(--gh-color-navigation);
  box-shadow: var(--gh-elevation-none);
  backdrop-filter: none;
}

.gh-ux-brand-mark {
  border-color: var(--gh-color-border-strong);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-action-soft);
  box-shadow: var(--gh-elevation-none);
  color: var(--gh-color-action-strong);
}

.gh-ux-brand-copy b,
.gh-ux-shell .app-header #userEmail {
  color: var(--gh-color-text);
}

.gh-ux-brand-copy small {
  color: var(--gh-color-text-muted);
}

.gh-ux-nav button,
.gh-ux-bottom-nav button {
  border-radius: var(--gh-radius-pill);
  color: var(--gh-color-text-muted);
  transition: none;
}

.gh-ux-nav button:hover,
.gh-ux-bottom-nav button:hover {
  border-color: var(--gh-color-border);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
  transform: none;
}

.gh-ux-nav button[aria-current="page"],
.gh-ux-bottom-nav button[aria-current="page"] {
  border-color: var(--gh-color-action);
  background: var(--gh-color-action-soft);
  box-shadow: var(--gh-elevation-none);
  color: var(--gh-color-action-strong);
}

.gh-ux-task-badge {
  border-color: var(--gh-color-navigation);
  background: var(--gh-color-danger);
}

.gh-ux-shell .app-header {
  border-bottom-color: var(--gh-color-border);
  background: var(--gh-color-canvas);
  backdrop-filter: none;
}

.gh-ux-shell .user-panel button,
.gh-ux-shell .diagnostics-head button {
  border-color: var(--gh-color-border-strong);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
}

.gh-ux-shell .login-form button {
  border-color: var(--gh-color-action);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-color-action);
  color: var(--gh-color-surface);
}

.gh-ux-shell .gh-ux-main {
  padding-top: var(--gh-space-xl);
}

.gh-ux-route-header {
  margin-bottom: var(--gh-space-lg);
  padding-top: 0;
}

.gh-ux-route-header h2 {
  margin: var(--gh-space-none) 0 var(--gh-space-sm);
  color: var(--gh-color-text);
  font-size: var(--gh-typography-screen-size);
  line-height: var(--gh-typography-screen-line);
  letter-spacing: 0;
}

.gh-ux-route-header p {
  color: var(--gh-color-text);
  font-size: var(--gh-typography-body-size);
  line-height: var(--gh-typography-body-line);
}

.gh-ux-route-eyebrow {
  color: var(--gh-color-action-strong);
  letter-spacing: 0;
}

.gh-ux-events-link {
  border-color: var(--gh-color-border-strong);
  background: var(--gh-color-surface);
  color: var(--gh-color-action-strong);
}

.gh-ux-shell-loading,
.gh-ux-shell .live-recovery-panel,
.gh-ux-shell .auth-shell,
.gh-ux-shell .diagnostics-panel,
.gh-ux-shell .notice {
  border-radius: var(--gh-radius-control);
  box-shadow: var(--gh-elevation-none);
}

.gh-ux-shell-loading {
  border-color: var(--gh-color-border);
  background: var(--gh-color-surface);
}

.gh-ux-skeleton-line,
.gh-ux-skeleton-grid span {
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-border);
}

.gh-ux-shell .card-dashboard-mount,
.gh-ux-shell .live-recovery-panel {
  border-radius: var(--gh-radius-surface);
}

.gh-ux-bottom-nav {
  border-top-color: var(--gh-color-border);
  background: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
  backdrop-filter: none;
}

.gh-ux-bottom-nav button {
  border-radius: var(--gh-radius-control);
  color: var(--gh-color-text-muted);
}

/* Controls */
#loginButton {
  min-height: var(--gh-size-touch-target);
}

.gh-ux-shell :where(input:not([type="checkbox"]):not([type="radio"]), select, textarea),
.care-plan-v1-dialog :where(input:not([type="checkbox"]):not([type="radio"]), select, textarea),
.task-actions-v2-dialog :where(input:not([type="checkbox"]):not([type="radio"]), select, textarea),
.new-plant-v1-dialog :where(input:not([type="checkbox"]):not([type="radio"]), select, textarea) {
  border-color: var(--gh-c-field-border);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
}

.gh-ux-shell :where(input[type="checkbox"], input[type="radio"]),
.care-plan-v1-dialog :where(input[type="checkbox"], input[type="radio"]),
.task-actions-v2-dialog :where(input[type="checkbox"], input[type="radio"]),
.new-plant-v1-dialog :where(input[type="checkbox"], input[type="radio"]) {
  accent-color: var(--gh-color-action);
}

.gh-ux-shell :where(button, a, input, select, textarea, summary, [tabindex]:not([tabindex="-1"])):focus-visible,
.care-plan-v1-dialog :where(button, input, select, textarea):focus-visible,
.task-actions-v2-dialog :where(button, input, select, textarea):focus-visible,
.new-plant-v1-dialog :where(button, input, select, textarea):focus-visible {
  outline: var(--gh-focus-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}

.gh-ux-shell :where(button, input, select, textarea):disabled,
.care-plan-v1-dialog :where(button, input, select, textarea):disabled,
.task-actions-v2-dialog :where(button, input, select, textarea):disabled,
.new-plant-v1-dialog :where(button, input, select, textarea):disabled {
  cursor: not-allowed;
  opacity: var(--gh-opacity-disabled);
}

.gh-ux-shell button.primary,
.gh-ux-shell .gh-task-batch-entry button,
.care-plan-v1-dialog [data-care-plan-apply-confirm],
.task-actions-v2-dialog [data-task-action-form]:not([data-task-action-form="delete"]) button[type="submit"],
.new-plant-v1-dialog button[type="submit"],
.new-plant-v1-dialog [data-new-plant-apply] {
  border: var(--gh-border-width) solid var(--gh-color-action);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-color-action);
  color: var(--gh-color-surface);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-ux-shell :where(button.secondary-action, button:not(.primary)),
.care-plan-v1-dialog button,
.task-actions-v2-dialog button,
.new-plant-v1-dialog button {
  box-shadow: var(--gh-elevation-none);
}

.gh-ux-shell :where(button.secondary-action),
.care-plan-v1-dialog [data-care-plan-cancel-confirm],
.new-plant-v1-dialog [data-new-plant-cancel-confirm] {
  border-color: var(--gh-color-border-strong);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
}

.task-actions-v2-dialog [data-task-action-form="delete"] .task-actions-v2-danger,
.task-actions-v2-dialog .task-actions-v2-danger,
.gh-detail-media-tools [data-media-delete],
.gh-detail-media-tools [data-media-delete-confirm],
.gh-ux-shell .photo-delete,
.gh-ux-shell .photo-delete-confirm {
  border-color: var(--gh-color-danger);
  background: var(--gh-color-danger-soft);
  color: var(--gh-color-danger);
}

/* compiled source: config/ui_tokens/styles/system-feedback.css | role: component-contract */
/* Token API component contract: status, notice and feedback states. */
.gh-ux-shell .notice,
.gh-ux-shell .diagnostics-panel {
  border-color: var(--gh-color-border-strong);
  background: var(--gh-color-surface);
  color: var(--gh-color-text-muted);
}

.gh-ux-shell .diagnostics-panel {
  border-color: var(--gh-color-warning);
  background: var(--gh-color-warning-soft);
}

.gh-ux-shell .live-recovery-panel,
.gh-ux-shell .error-state {
  border-color: var(--gh-color-danger);
  background: var(--gh-color-danger-soft);
  color: var(--gh-color-danger);
}

.gh-ux-shell .pill,
.gh-ux-shell .view-tab,
.gh-ux-shell .group-chip {
  border-color: var(--gh-color-border);
  background: var(--gh-color-surface);
}

.gh-ux-shell :where(.view-tab.active, .group-chip.active),
.gh-ux-shell .pill[data-gh-variant="accent"] {
  border-color: var(--gh-color-action);
  background: var(--gh-color-action-soft);
  color: var(--gh-color-action-strong);
}

.gh-ux-shell .pill[data-gh-variant="danger"] {
  border-color: var(--gh-color-danger);
  background: var(--gh-color-danger-soft);
  color: var(--gh-color-danger);
}

.gh-ux-shell .pill[data-gh-variant="warning"] {
  border-color: var(--gh-color-warning);
  background: var(--gh-color-warning-soft);
  color: var(--gh-color-warning);
}

.gh-ux-shell .pill[data-gh-variant="success"] {
  border-color: var(--gh-color-action);
  background: var(--gh-color-action-soft);
  color: var(--gh-color-action-strong);
}

.gh-ux-shell .pill[data-gh-variant="muted"] {
  border-color: var(--gh-color-border);
  background: var(--gh-color-surface);
  color: var(--gh-color-text-muted);
}

/* compiled source: config/ui_tokens/structure/ux-plant-catalog.css | role: route-structure */
#uxPlantsScreenRoot {

  color: var(--gh-catalog-text);
}

.gh-plant-catalog__controls,
.gh-plant-catalog-card,
.gh-plant-catalog-state {
  border: var(--gh-border-width) solid var(--gh-catalog-border);
}

.gh-plant-catalog__controls {
  display: grid;
  margin-block-end: var(--gh-space-xl);
  border-radius: var(--gh-radius-surface);
}

.gh-plant-catalog__toolbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--gh-space-lg);
}

.gh-plant-catalog__search {
  display: flex;
  flex: 1 1 auto;
  min-width: 0;
  align-items: center;
  gap: var(--gh-space-md);
}

.gh-plant-catalog__search > button,
.gh-plant-catalog__actions button,
.gh-plant-catalog__modes button,
.gh-plant-catalog-state button {
  min-height: 44px;
  border: var(--gh-border-width) solid var(--gh-catalog-border);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-catalog-surface-strong);
  color: var(--gh-catalog-text);
  font: inherit;
  font-weight: var(--gh-typography-weight-bold);
  cursor: pointer;
}

.gh-plant-catalog__search > button { padding-inline: var(--gh-space-lg); }
.gh-plant-catalog__search label { flex: 1 1 360px; max-width: 520px; }
.gh-plant-catalog__search input {
  width: 100%;
  min-height: 44px;
  padding: var(--gh-space-md) var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-catalog-border);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-catalog-surface-strong);
  color: var(--gh-catalog-text);
  font: inherit;
}

.gh-plant-catalog__search[data-open="false"] label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
}

.gh-plant-catalog__actions {
  display: flex;
  flex: 0 0 auto;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
}

.gh-plant-catalog__actions button {
  padding-inline: var(--gh-space-lg);
}

.gh-plant-catalog__actions [data-catalog-add-plant] {
  border-color: var(--gh-catalog-accent-strong);
  background: var(--gh-catalog-accent-strong);
  color: var(--gh-catalog-surface-strong);
}

.gh-plant-catalog__action-status {
  margin: 0;
  color: var(--gh-catalog-muted);
}

.gh-plant-catalog__action-status:empty {
  display: none;
}

.gh-plant-catalog__action-status[data-tone="error"] {
  color: var(--gh-color-danger);
}

.gh-plant-catalog__modes {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
}

.gh-plant-catalog__modes button { padding: var(--gh-space-sm) var(--gh-space-lg); }
.gh-plant-catalog__modes button[aria-pressed="true"] {
  border-color: var(--gh-catalog-accent);
  background: var(--gh-catalog-accent-soft);
  color: var(--gh-catalog-accent-strong);
}

.gh-plant-catalog__facets {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--gh-space-md);
}

.gh-plant-catalog__field {
  display: grid;
  min-width: 0;
  gap: var(--gh-space-xs);
  color: var(--gh-catalog-muted);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-plant-catalog__field select {
  min-height: var(--gh-size-touch-target);
}

.gh-plant-catalog__count {
  margin: 0;
  color: var(--gh-catalog-muted);
  font-size: var(--gh-typography-body-size);
}

.gh-plant-catalog__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
}

.gh-plant-catalog-card {
  --gh-catalog-urgency-edge: var(--gh-catalog-border);
  position: relative;
  display: block;
  width: 100%;
  min-width: 0;
  min-height: var(--gh-c-plant-card-min-height);
  padding: 0;
  overflow: hidden;
  border-radius: var(--gh-radius-surface);
  border-inline-start: var(--gh-border-urgency-width) solid var(--gh-catalog-urgency-edge);
  isolation: isolate;
  color: var(--gh-catalog-text);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.gh-plant-catalog-card[data-urgency="overdue"] { border-inline-start-color: var(--gh-catalog-overdue-edge); }
.gh-plant-catalog-card[data-urgency="today"] { border-inline-start-color: var(--gh-catalog-today-edge); }
.gh-plant-catalog-card[data-urgency="soon"] { border-inline-start-color: var(--gh-catalog-soon-edge); }
.gh-plant-catalog-card[data-urgency="archive"] { --gh-catalog-urgency-edge: var(--gh-color-scrim); }

.gh-plant-catalog-card:hover { }

.gh-plant-catalog-card[data-urgency="overdue"]:hover { border-inline-start-color: var(--gh-catalog-overdue-edge); }
.gh-plant-catalog-card[data-urgency="today"]:hover { border-inline-start-color: var(--gh-catalog-today-edge); }
.gh-plant-catalog-card[data-urgency="soon"]:hover { border-inline-start-color: var(--gh-catalog-soon-edge); }

.gh-plant-catalog-card__media {
  position: absolute;
  inset: 0;
  display: grid;
  width: 100%;
  height: 100%;
  place-items: center;
  overflow: hidden;
  font-size: var(--gh-typography-screen-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-plant-catalog-card__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.gh-plant-catalog-card__media::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.gh-plant-catalog-card__missing {
  display: grid;
  align-self: center;
  justify-self: center;
  place-items: center;
  gap: var(--gh-space-sm);
  padding: var(--gh-space-lg);
  text-align: center;
  font-size: var(--gh-typography-card-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-plant-catalog-card__missing > span {
  font-size: var(--gh-typography-screen-size);
  line-height: var(--gh-typography-line-tight);
}

.gh-plant-catalog-card__body {
  position: absolute;
  inset: 0;
  z-index: var(--gh-layer-content);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  pointer-events: none;
}

.gh-plant-catalog-card__top {
  grid-row: 1;
  display: flex;
  min-width: 0;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--gh-space-sm);
  padding: var(--gh-space-md);
}

.gh-plant-catalog-card__summary {
  grid-row: 3;
  display: grid;
  min-width: 0;
  gap: var(--gh-space-md);
  padding: var(--gh-space-lg);
}

.gh-plant-catalog-card__head b,
.gh-plant-catalog-card__head small { display: block; overflow-wrap: anywhere; }
.gh-plant-catalog-card__head b {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.gh-plant-catalog-card__head small {
  display: -webkit-box;
  overflow: hidden;
  margin-block-start: var(--gh-space-xs);
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  font-size: var(--gh-typography-body-size);
}
.gh-plant-catalog-card__id {
  flex: 0 0 auto;
  padding: var(--gh-space-sm) var(--gh-space-md);
  border-radius: var(--gh-radius-control);
  background: var(--gh-catalog-accent-soft);
  color: var(--gh-catalog-accent-strong);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-plant-catalog-card__urgency {
  flex: 0 1 auto;
  width: auto;
  max-width: 100%;
  padding: var(--gh-space-xs) var(--gh-space-md);
  border-radius: var(--gh-radius-control);
  background: var(--gh-catalog-neutral-pill-bg);
  color: var(--gh-catalog-neutral-pill-text);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
}
.gh-plant-catalog-card__urgency[data-variant="overdue"] { background: var(--gh-catalog-overdue-bg); color: var(--gh-catalog-overdue-text); }
.gh-plant-catalog-card__urgency[data-variant="today"] { background: var(--gh-catalog-today-bg); color: var(--gh-catalog-today-text); }
.gh-plant-catalog-card__urgency[data-variant="soon"] { background: var(--gh-catalog-soon-bg); color: var(--gh-catalog-soon-text); }

.gh-plant-catalog-card__meta {
  display: flex;
  width: 100%;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--gh-space-sm) var(--gh-space-lg);
}
.gh-plant-catalog-card__meta > span {
  display: inline-flex;
  min-width: 0;
  align-items: baseline;
  gap: var(--gh-space-xs);
}
.gh-plant-catalog-card__meta small {
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
}
.gh-plant-catalog-card__meta strong { white-space: nowrap; }

.gh-plant-catalog-state {
  padding: var(--gh-space-2xl);
  border-radius: var(--gh-radius-surface);
  color: var(--gh-catalog-text);
}
.gh-plant-catalog-state h3 { margin: 0 0 var(--gh-space-sm); }
.gh-plant-catalog-state p { margin: 0; color: var(--gh-catalog-muted); }
.gh-plant-catalog-state button { margin-block-start: var(--gh-space-lg); padding-inline: var(--gh-space-lg); }

#uxPlantsScreenRoot :is(button, input):focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-catalog-focus);
  outline-offset: var(--gh-focus-offset);
}



/* The legacy list stays mounted as the current detail/actions host. Only its
   catalog chrome is hidden while the issue 610 catalog route is active. */
[data-ux-active-route="plants"] [data-ux-compat-host="plants"] [data-live-card-dashboard] > header,
[data-ux-active-route="plants"] [data-ux-compat-host="plants"] [data-live-card-dashboard] > .sticky-search,
[data-ux-active-route="plants"] [data-ux-compat-host="plants"] [data-live-card-dashboard] > .filter-options,
[data-ux-active-route="plants"] [data-ux-compat-host="plants"] [data-live-card-dashboard] > .card-main {
  display: none !important;
}

[data-ux-active-route="plants"] [data-ux-compat-host="plants"] .card-dashboard-mount,
[data-ux-active-route="plants"] [data-ux-compat-host="plants"] [data-live-card-dashboard] {
  min-height: 0;
  height: 0;
  margin: 0;
  background: transparent;
  box-shadow: var(--gh-elevation-none);
  overflow: visible;
}

@media (max-width: 1199px) {
  .gh-plant-catalog__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
  .gh-plant-catalog__grid { grid-template-columns: minmax(0, 1fr); }
  .gh-plant-catalog-card { min-height: var(--gh-c-plant-card-mobile-min-height); }
  .gh-plant-catalog__controls { padding: var(--gh-space-md); border-radius: var(--gh-radius-surface); }
  .gh-plant-catalog__toolbar { align-items: stretch; flex-direction: column; }
  .gh-plant-catalog__search { align-items: stretch; flex-direction: column; }
  .gh-plant-catalog__search label { flex-basis: auto; max-width: none; }
  .gh-plant-catalog__actions { display: grid; grid-template-columns: minmax(0, 1fr); }
  .gh-plant-catalog__actions button { width: 100%; }
  .gh-plant-catalog__modes { flex-wrap: wrap; }
  .gh-plant-catalog__facets { grid-template-columns: minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  .gh-plant-catalog-card { transition: none; }
  .gh-plant-catalog-card:hover { transform: none; }
}

/* compiled source: config/ui_tokens/styles/plant-catalog.css | role: route-contract */
/* Token API route contract: plant catalogue. */
#uxPlantsScreenRoot {
  --gh-catalog-surface: var(--gh-color-surface);
  --gh-catalog-surface-strong: var(--gh-color-surface);
  --gh-catalog-text: var(--gh-color-text);
  --gh-catalog-muted: var(--gh-color-text-muted);
  --gh-catalog-border: var(--gh-color-border);
  --gh-catalog-accent: var(--gh-color-action);
  --gh-catalog-accent-strong: var(--gh-color-action-strong);
  --gh-catalog-accent-soft: var(--gh-color-action-soft);
  --gh-catalog-focus: var(--gh-color-action);
  --gh-catalog-neutral-pill-bg: var(--gh-color-canvas);
  --gh-catalog-neutral-pill-text: var(--gh-color-text-muted);
  --gh-catalog-overdue-edge: var(--gh-color-danger);
  --gh-catalog-overdue-bg: var(--gh-color-danger-soft);
  --gh-catalog-overdue-text: var(--gh-color-danger);
  --gh-catalog-today-edge: var(--gh-color-warning);
  --gh-catalog-today-bg: var(--gh-color-warning-soft);
  --gh-catalog-today-text: var(--gh-color-warning);
  --gh-catalog-soon-edge: var(--gh-color-info);
  --gh-catalog-soon-bg: var(--gh-color-info-soft);
  --gh-catalog-soon-text: var(--gh-color-info);
  --gh-catalog-photo: var(--gh-color-action-soft);
  --gh-catalog-photo-overlay: var(--gh-c-plant-card-photo-overlay);
  --gh-catalog-on-image: var(--gh-c-plant-card-on-image-text);
  --gh-catalog-on-image-muted: var(--gh-c-plant-card-on-image-muted);
}

.gh-plant-catalog__controls,
.gh-plant-catalog-card,
.gh-plant-catalog-state {
  border-color: var(--gh-color-border);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-plant-catalog__controls {
  gap: var(--gh-space-md);
  margin-bottom: var(--gh-space-lg);
  padding: var(--gh-space-lg);
}

.gh-plant-catalog__search > button,
.gh-plant-catalog__search input {
  border-color: var(--gh-c-field-border);
  border-radius: var(--gh-radius-control);
}

.gh-plant-catalog__grid {
  gap: var(--gh-space-md);
}

.gh-plant-catalog-card {
  border-inline-start-width: var(--gh-border-urgency-width);
  transition: none;
}

.gh-plant-catalog-card:hover {
  border-block-color: var(--gh-color-border-strong);
  border-inline-end-color: var(--gh-color-border-strong);
  box-shadow: var(--gh-elevation-none);
  transform: none;
}

.gh-plant-catalog-card__media {
  background: var(--gh-catalog-photo);
  color: var(--gh-color-action-strong);
}

.gh-plant-catalog-card__media::after {
  background: var(--gh-catalog-photo-overlay);
}

.gh-plant-catalog-card__missing {
  color: var(--gh-color-photo-overlay-base);
}

.gh-plant-catalog-card__summary {
  color: var(--gh-catalog-on-image);
}

.gh-plant-catalog-card__head b,
.gh-plant-catalog-card__head small,
.gh-plant-catalog-card__meta {
  overflow-wrap: break-word;
  word-break: normal;
  hyphens: none;
}

.gh-plant-catalog-card__head b {
  color: var(--gh-catalog-on-image);
  font-size: var(--gh-typography-section-size);
  line-height: var(--gh-typography-section-line);
}

.gh-plant-catalog-card__head small,
.gh-plant-catalog-card__meta small {
  color: var(--gh-catalog-on-image-muted);
}

.gh-plant-catalog-card__meta strong {
  color: var(--gh-catalog-on-image);
}

.gh-plant-catalog-card__urgency {
  overflow-wrap: break-word;
  word-break: normal;
}

/* compiled source: config/ui_tokens/structure/ux-overview.css | role: route-structure */
#uxOverviewScreenRoot {
  min-width: 0;
  color: var(--gh-overview-ink);
  font-family: var(--gh-typography-family-body);
}

#uxOverviewMount > [data-ux-compat-host="overview"] {
  display: none;
}

#uxOverviewScreenRoot [data-overview-content],
.gh-overview-side,
.gh-overview-photo-shell,
.gh-overview-side > [data-overview-risk],
.gh-overview-side > [data-overview-wanted] {
  min-width: 0;
}

.gh-overview-state {
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-overview-line);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-overview-surface);
}

.gh-overview-state h3 {
  margin: 0;
}

.gh-overview-state p {
  margin: var(--gh-space-sm) 0 0;
  color: var(--gh-overview-muted);
}

.gh-overview-dashboard {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
  min-height: min(var(--gh-c-photo-stage-default-image-max-height), var(--gh-c-photo-stage-image-max-height));
  overflow: hidden;
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  background: var(--gh-c-overview-paper);
}

.gh-overview-side {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--gh-space-lg);
  padding: clamp(var(--gh-space-xl), var(--gh-c-overview-copy-fluid-padding), var(--gh-space-3xl));
  background: var(--gh-c-overview-paper);
}

.gh-overview-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--gh-space-md);
  padding-block-end: var(--gh-space-md);
  border-block-end: var(--gh-border-width) solid var(--gh-overview-line);
}

.gh-overview-metrics button {
  min-width: 0;
  min-height: var(--gh-size-touch-target);
  display: grid;
  align-content: center;
  justify-items: start;
  gap: var(--gh-space-xs);
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--gh-color-text-muted);
  font: inherit;
  text-align: start;
  cursor: pointer;
}

.gh-overview-metrics b {
  color: var(--gh-color-text);
  font-size: calc(var(--gh-typography-section-size) + var(--gh-space-xs));
  font-variant-numeric: tabular-nums;
  line-height: var(--gh-typography-line-tight);
}

.gh-overview-metrics span {
  min-width: 0;
  font-size: var(--gh-typography-meta-size);
  line-height: var(--gh-typography-meta-line);
  overflow-wrap: anywhere;
}

.gh-overview-intro {
  min-width: 0;
  margin: 0;
  padding: 0;
  background: transparent;
}

.gh-overview-intro .gh-ux-route-eyebrow {
  color: var(--gh-color-action-strong);
}

.gh-overview-intro h2 {
  max-width: var(--gh-container-reading);
  margin: var(--gh-space-sm) 0 var(--gh-space-md);
  color: var(--gh-color-text);
  font-size: calc(var(--gh-typography-screen-size) + var(--gh-space-xl));
  font-weight: var(--gh-typography-weight-bold);
  line-height: var(--gh-typography-line-tight);
  overflow-wrap: normal;
  word-break: normal;
}

.gh-overview-intro p {
  max-width: var(--gh-container-reading);
  margin: 0;
  color: var(--gh-color-text-muted);
  font-size: var(--gh-typography-body-size);
  line-height: var(--gh-typography-body-line);
}

.gh-overview-route-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
}

.gh-overview-route-actions button {
  min-height: var(--gh-size-touch-target);
}

.gh-overview-risk,
.gh-overview-wanted {
  min-width: 0;
  border: 0;
  border-block-start: var(--gh-border-width) solid var(--gh-overview-line);
  border-radius: 0;
  background: transparent;
  box-shadow: var(--gh-elevation-none);
}

.gh-overview-risk {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--gh-space-lg);
  padding-block-start: var(--gh-space-md);
}

.gh-overview-risk__status {
  width: calc(var(--gh-size-control-comfortable) + var(--gh-space-lg));
  height: calc(var(--gh-size-control-comfortable) + var(--gh-space-lg));
  display: grid;
  place-items: center;
  border-radius: var(--gh-c-overview-round-radius);
  background: var(--gh-color-action-soft);
  color: var(--gh-color-action-strong);
  font-size: var(--gh-typography-section-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-overview-risk[data-gh-variant="danger"] .gh-overview-risk__status {
  background: var(--gh-color-danger-soft);
  color: var(--gh-color-danger);
}

.gh-overview-risk__copy {
  min-width: 0;
}

.gh-overview-risk__copy > span,
.gh-overview-wanted span {
  color: var(--gh-color-action-strong);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  line-height: var(--gh-typography-meta-line);
  text-transform: uppercase;
}

.gh-overview-risk h3,
.gh-overview-wanted h3 {
  margin: var(--gh-space-xs) 0 0;
  color: var(--gh-color-text);
  font-size: var(--gh-typography-card-size);
  line-height: var(--gh-typography-card-line);
}

.gh-overview-risk__copy > p,
.gh-overview-wanted p {
  margin: var(--gh-space-xs) 0 0;
  color: var(--gh-color-text-muted);
  font-size: var(--gh-typography-meta-size);
  line-height: var(--gh-typography-meta-line);
}

.gh-overview-text-action {
  min-height: var(--gh-size-touch-target);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--gh-space-sm);
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--gh-color-action-strong);
  font: inherit;
  font-weight: var(--gh-typography-weight-bold);
  text-align: start;
  cursor: pointer;
}

.gh-overview-risk ul {
  grid-column: 2 / -1;
  display: grid;
  gap: var(--gh-space-sm);
  margin: 0;
  padding: 0;
  list-style: none;
}

.gh-overview-risk li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--gh-space-md);
  padding-block-start: var(--gh-space-sm);
  border-block-start: var(--gh-border-width) solid var(--gh-overview-line);
}

.gh-overview-risk li > div {
  min-width: 0;
}

.gh-overview-risk li b,
.gh-overview-risk li small {
  display: block;
  overflow-wrap: anywhere;
}

.gh-overview-risk li small {
  margin-block-start: var(--gh-space-xs);
  color: var(--gh-color-text-muted);
  font-size: var(--gh-typography-meta-size);
}

.gh-overview-risk li p {
  margin: var(--gh-space-xs) 0 0;
  color: var(--gh-color-text);
  font-size: var(--gh-typography-meta-size);
  line-height: var(--gh-typography-meta-line);
  overflow-wrap: anywhere;
}

.gh-overview-wanted {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--gh-space-lg);
  padding-block-start: var(--gh-space-md);
}

.gh-overview-wanted__media {
  width: calc(var(--gh-size-control-comfortable) + var(--gh-space-lg));
  height: calc(var(--gh-size-control-comfortable) + var(--gh-space-lg));
  overflow: hidden;
  border-radius: var(--gh-c-overview-round-radius);
  background: var(--gh-color-canvas);
}

.gh-overview-wanted__media img,
.gh-overview-wanted__missing {
  width: 100%;
  height: 100%;
}

.gh-overview-wanted__media img {
  display: block;
  object-fit: cover;
}

.gh-overview-wanted__missing {
  display: grid;
  place-items: center;
  color: var(--gh-color-action-strong);
  font-size: var(--gh-typography-section-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-overview-wanted__body {
  min-width: 0;
  padding: 0;
}

.gh-overview-wanted__body p {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.gh-overview-wanted--state {
  grid-template-columns: minmax(0, 1fr) auto;
}

.gh-overview-photo-shell {
  position: relative;
  min-height: 0;
  overflow: hidden;
  background: var(--gh-color-photo-overlay-base);
}

.gh-overview-photo-mount {
  width: 100%;
  height: 100%;
}

.gh-overview-photo {
  position: relative;
  width: 100%;
  height: 100%;
  min-height: var(--gh-c-plant-card-min-height);
  overflow: hidden;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: var(--gh-color-photo-overlay-base);
  color: var(--gh-color-on-image);
  font: inherit;
  text-align: start;
  cursor: pointer;
}

.gh-overview-photo > img,
.gh-overview-photo__missing,
.gh-overview-photo__overlay {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.gh-overview-photo > img {
  display: block;
  object-fit: cover;
}

.gh-overview-photo__missing {
  display: grid;
  place-items: center;
  color: var(--gh-color-on-image);
  font-size: var(--gh-typography-screen-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-overview-photo__overlay {
  background: var(--gh-background-photo-overlay);
  pointer-events: none;
}

.gh-overview-photo__kicker {
  position: absolute;
  top: var(--gh-space-xl);
  left: var(--gh-space-xl);
  z-index: var(--gh-layer-content);
  padding: var(--gh-space-sm) var(--gh-space-md);
  border-radius: 0;
  background: var(--gh-c-overview-paper);
  color: var(--gh-color-action-strong);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  line-height: var(--gh-typography-meta-line);
  text-transform: uppercase;
}

.gh-overview-photo__caption {
  position: absolute;
  right: var(--gh-c-overview-caption-right-share);
  bottom: var(--gh-space-xl);
  left: var(--gh-space-xl);
  z-index: var(--gh-layer-content);
  display: grid;
  gap: var(--gh-space-xs);
  color: var(--gh-color-on-image);
  pointer-events: none;
}

.gh-overview-photo__caption b {
  font-size: var(--gh-typography-section-size);
  font-weight: var(--gh-typography-weight-semibold);
  line-height: var(--gh-typography-section-line);
  overflow-wrap: anywhere;
}

.gh-overview-photo__caption small {
  color: var(--gh-color-on-image-muted);
  font-size: var(--gh-typography-meta-size);
  line-height: var(--gh-typography-meta-line);
  overflow-wrap: anywhere;
}

.gh-overview-quote {
  position: absolute;
  right: var(--gh-space-xl);
  bottom: var(--gh-space-xl);
  z-index: var(--gh-layer-content);
  width: fit-content;
  max-width: calc(var(--gh-container-card-min) + var(--gh-space-3xl) + var(--gh-space-3xl) + var(--gh-space-xl));
  margin: 0;
  color: var(--gh-color-on-image);
  pointer-events: none;
}

.gh-overview-quote p {
  margin: 0;
  color: var(--gh-color-on-image);
  font-size: var(--gh-typography-body-size);
  font-weight: var(--gh-typography-weight-semibold);
  line-height: var(--gh-typography-line-normal);
  overflow-wrap: normal;
  word-break: normal;
}

.gh-overview-quote cite {
  display: block;
  margin-block-start: var(--gh-space-sm);
  color: var(--gh-color-on-image-muted);
  font-size: var(--gh-typography-meta-size);
  font-style: normal;
  line-height: var(--gh-typography-meta-line);
  text-align: right;
}

.gh-overview-photo--empty {
  display: grid;
  align-content: space-between;
  padding: var(--gh-space-xl);
  background: var(--gh-color-action-soft);
  color: var(--gh-color-text);
  cursor: default;
}

.gh-overview-photo--empty > span {
  color: var(--gh-color-action-strong);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  text-transform: uppercase;
}

.gh-overview-photo--empty h3,
.gh-overview-photo--empty p {
  margin: 0;
}

.gh-overview-photo--empty p {
  margin-block-start: var(--gh-space-sm);
  color: var(--gh-color-text-muted);
}

@media (max-width: 900px) {
  .gh-overview-dashboard {
    grid-template-columns: minmax(0, 1fr);
    min-height: 0;
    overflow: visible;
  }

  .gh-overview-photo-shell {
    min-height: min(var(--gh-c-photo-stage-image-height), var(--gh-c-photo-stage-image-max-height));
  }
}

@media (min-width: 900px) and (max-height: 760px) {
  .gh-overview-side {
    gap: var(--gh-space-sm);
    padding: var(--gh-space-md) var(--gh-space-xl);
  }

  .gh-overview-metrics {
    padding-block-end: var(--gh-space-sm);
  }

  .gh-overview-intro h2 {
    margin: var(--gh-space-xs) 0 var(--gh-space-sm);
    font-size: calc(var(--gh-typography-screen-size) + var(--gh-space-lg));
  }

  .gh-overview-intro p {
    font-size: var(--gh-typography-meta-size);
    line-height: var(--gh-typography-meta-line);
  }

  .gh-overview-risk,
  .gh-overview-wanted {
    gap: var(--gh-space-md);
    padding-block-start: var(--gh-space-sm);
  }

  .gh-overview-risk__status,
  .gh-overview-wanted__media {
    width: var(--gh-size-control-comfortable);
    height: var(--gh-size-control-comfortable);
  }

  .gh-overview-risk__copy > p,
  .gh-overview-wanted p,
  .gh-overview-risk li p {
    display: none;
  }

  .gh-overview-risk ul {
    gap: var(--gh-space-xs);
  }
}

@media (max-width: 767px) {
  .gh-overview-side {
    gap: var(--gh-space-md);
    padding: var(--gh-space-xl) var(--gh-space-lg);
  }

  .gh-overview-metrics {
    gap: var(--gh-space-sm);
  }

  .gh-overview-metrics b {
    font-size: var(--gh-typography-section-size);
  }

  .gh-overview-intro h2 {
    font-size: var(--gh-typography-screen-size);
    line-height: var(--gh-typography-screen-line);
  }

  .gh-overview-risk,
  .gh-overview-wanted {
    grid-template-columns: auto minmax(0, 1fr);
    gap: var(--gh-space-md);
  }

  .gh-overview-risk__status,
  .gh-overview-wanted__media {
    width: var(--gh-size-control-comfortable);
    height: var(--gh-size-control-comfortable);
  }

  .gh-overview-risk > .gh-overview-text-action,
  .gh-overview-wanted > .gh-overview-text-action {
    grid-column: 2;
    justify-self: start;
  }

  .gh-overview-risk ul {
    grid-column: 2;
  }

  .gh-overview-risk li {
    grid-template-columns: minmax(0, 1fr);
  }

  .gh-overview-risk li .gh-overview-text-action {
    justify-self: start;
  }

  .gh-overview-wanted--state {
    grid-template-columns: minmax(0, 1fr);
  }

  .gh-overview-wanted--state > .gh-overview-text-action {
    grid-column: 1;
  }

  .gh-overview-photo__kicker {
    top: var(--gh-space-lg);
    left: var(--gh-space-lg);
  }

  .gh-overview-photo__caption {
    display: none;
  }

  .gh-overview-quote {
    right: var(--gh-space-lg);
    bottom: var(--gh-space-lg);
    left: var(--gh-space-lg);
    width: auto;
    max-width: none;
  }
}

/* compiled source: config/ui_tokens/styles/overview-planning.css | role: route-contract */
/* Token API route contract: botanical overview. */
#uxOverviewScreenRoot {
  --gh-overview-surface: var(--gh-color-surface);
  --gh-overview-ink: var(--gh-color-text);
  --gh-overview-muted: var(--gh-color-text-muted);
  --gh-overview-line: var(--gh-color-border);
}

.gh-overview-state {
  box-shadow: var(--gh-elevation-none);
}

.gh-overview-photo {
  box-shadow: var(--gh-elevation-none);
}

.gh-overview-metrics button:hover,
.gh-overview-text-action:hover {
  color: var(--gh-color-action-strong);
}

.gh-overview-photo:focus-visible,
.gh-overview-metrics button:focus-visible,
.gh-overview-text-action:focus-visible {
  outline: var(--gh-focus-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}

/* compiled source: config/ui_tokens/structure/ux-plant-detail.css | role: route-structure */
.gh-plant-detail[hidden] {
  display: none !important;
}

html.gh-detail-open,
html.gh-detail-open body {
  overflow: hidden;
}

.gh-plant-detail {
  position: fixed;
  inset: 0;
  z-index: var(--gh-layer-dialog);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: var(--gh-space-xl);
}

.gh-plant-detail__sheet {
  flex: 0 0 auto;
  width: min(1320px, 100%);
  max-height: none;
  margin: auto 0;
  overflow: visible;
  color: var(--detail-ink);
  border: var(--gh-border-width) solid var(--gh-color-border);
}

.gh-plant-detail__sticky {
  position: relative;
  top: var(--gh-space-sm);
  z-index: var(--gh-layer-header);
  display: flex;
  justify-content: flex-end;
  height: 0;
  padding: var(--gh-space-none) var(--gh-space-md);
  pointer-events: none;
}

.gh-plant-detail__sticky-identity {
  display: grid;
  gap: var(--gh-space-xs);
  min-width: 0;
  min-height: 56px;
  padding: var(--gh-space-sm) calc(var(--gh-size-touch-target) + var(--gh-space-lg) + var(--gh-space-md)) var(--gh-space-sm) var(--gh-space-lg);
  border-bottom: var(--gh-border-width) solid var(--detail-line);
}

.gh-plant-detail__sticky-identity span {
  color: var(--detail-muted);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  text-transform: uppercase;
}

.gh-plant-detail__sticky-identity strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.gh-plant-detail__close,
.gh-plant-detail__retry {
  min-width: 44px;
  min-height: 44px;
  border: var(--gh-border-width) solid var(--detail-line);
  color: var(--detail-ink);
  background: var(--detail-card);
  font: inherit;
  cursor: pointer;
}

.gh-plant-detail__close {
  pointer-events: auto;
}

.gh-plant-detail__close:focus-visible,
.gh-plant-detail__retry:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}

.gh-plant-detail__body {
  padding: var(--gh-space-lg);
}

.gh-plant-detail__top {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
  align-items: stretch;
  min-height: clamp(520px, 70dvh, 720px);
  overflow: hidden;
  border: var(--gh-border-width) solid var(--detail-line);
  border-radius: var(--gh-radius-surface);
  background: var(--detail-card);
}

@media (min-width: 768px) {
  .gh-plant-detail__top {
    height: min(720px, calc(100dvh - var(--gh-space-3xl) - var(--gh-space-3xl) - var(--gh-space-3xl) - var(--gh-space-3xl)));
  }
}

.gh-plant-detail__media {
  --gh-detail-media-footer-size: var(--gh-size-touch-target);
  --gh-detail-media-rail-size: calc(var(--gh-size-touch-target) + var(--gh-space-lg) + var(--gh-space-sm));
  position: relative;
  min-width: 0;
  min-height: 0;
  height: 100%;
  align-self: stretch;
  overflow: hidden;
  border-radius: var(--gh-radius-surface) 0 0 var(--gh-radius-surface);
}

.gh-plant-detail__media > img,
.gh-plant-detail__missing {
  position: absolute;
  inset: 0 0 calc(var(--gh-detail-media-footer-size) + var(--gh-border-width)) var(--gh-detail-media-rail-size);
  width: calc(100% - var(--gh-detail-media-rail-size));
  height: calc(100% - var(--gh-detail-media-footer-size) - var(--gh-border-width));
  min-height: 0;
}

.gh-plant-detail__media > img {
  display: block;
  object-fit: cover;
}

.gh-plant-detail__missing {
  box-sizing: border-box;
  display: grid;
  place-items: center;
  padding: var(--gh-space-xl);
  color: var(--gh-color-info);
  text-align: center;
}

.gh-plant-detail__media-date {
  position: absolute;
  right: 0;
  bottom: 0;
  left: var(--gh-detail-media-rail-size);
  z-index: var(--gh-layer-content);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gh-space-md);
  min-height: var(--gh-detail-media-footer-size);
  padding: 0 var(--gh-space-md);
  color: var(--detail-muted);
  background: var(--detail-card);
  border-top: var(--gh-border-width) solid var(--detail-line);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  line-height: var(--gh-typography-line-tight);
}

.gh-plant-detail__media-drop-copy {
  margin-left: auto;
  color: var(--gh-color-action);
  text-align: right;
}

.gh-plant-detail__media-drop-copy--phone {
  display: none;
}

.gh-plant-detail__facts,
.gh-plant-detail__full-facts {
  display: grid;
  gap: var(--gh-space-md);
  min-width: 0;
}

.gh-plant-detail__facts-area {
  position: relative;
  min-width: 0;
  min-height: 0;
  height: auto;
  overflow: visible;
  overscroll-behavior: auto;
  border-left: var(--gh-border-width) solid var(--detail-line);
}

.gh-plant-detail__editor-host {
  min-width: 0;
}

.gh-plant-detail__identity {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: var(--gh-space-md);
  padding: var(--gh-space-lg) var(--gh-space-lg) var(--gh-space-md);
}

.gh-plant-detail__identity-copy {
  display: grid;
  gap: var(--gh-space-sm);
  min-width: 0;
}

.gh-plant-detail__identity-copy > span:first-child {
  color: var(--gh-color-action);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  text-transform: uppercase;
}

.gh-plant-detail__identity-copy h2,
.gh-plant-detail__identity-copy p {
  margin: 0;
}

.gh-plant-detail__identity-copy h2 {
  font-size: clamp(var(--gh-typography-card-size), 2.6vw, var(--gh-typography-screen-size));
  line-height: var(--gh-typography-line-tight);
}

.gh-plant-detail__identity-copy p {
  color: var(--detail-muted);
  line-height: var(--gh-typography-line-normal);
}

.gh-plant-detail__accessible-name {
  position: absolute;
  width: var(--gh-border-width);
  height: var(--gh-border-width);
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.gh-plant-detail__facts {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: start;
  gap: var(--gh-space-none) var(--gh-space-lg);
  margin: 0;
  padding: 0 var(--gh-space-lg) var(--gh-space-md);
}

.gh-plant-detail__fact {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-content: start;
  gap: var(--gh-space-xs);
  min-width: 0;
  padding: var(--gh-space-sm) var(--gh-space-xs);
  border-bottom: var(--gh-border-width) solid var(--detail-line);
}

.gh-plant-detail__fact dt {
  margin: 0;
  color: var(--detail-muted);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-plant-detail__fact dd {
  margin: 0;
  overflow-wrap: anywhere;
  line-height: var(--gh-typography-line-normal);
}

.gh-plant-detail__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
  min-width: 0;
}

.gh-plant-detail__tags--compact {
  padding: 0 var(--gh-space-lg) var(--gh-space-md);
}

.gh-plant-detail__tag {
  display: inline-flex;
  align-items: baseline;
  gap: var(--gh-space-xs);
  max-width: 100%;
  padding: var(--gh-space-sm) var(--gh-space-md);
  border-radius: var(--gh-radius-pill);
  color: var(--detail-ink);
  background: var(--gh-color-action-soft);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  line-height: var(--gh-typography-line-tight);
  overflow-wrap: anywhere;
}

.gh-plant-detail__tag-label {
  color: var(--detail-muted);
  font-weight: var(--gh-typography-weight-regular);
}

.gh-plant-detail__restriction {
  display: grid;
  gap: var(--gh-space-xs);
  margin: 0 var(--gh-space-lg) var(--gh-space-lg);
  padding: var(--gh-space-md);
  border-left: var(--gh-border-urgency-width) solid var(--gh-color-action);
  background: var(--gh-color-action-soft);
}

.gh-plant-detail__restriction strong {
  color: var(--gh-color-action);
  font-size: var(--gh-typography-meta-size);
  text-transform: uppercase;
}

.gh-plant-detail__restriction p {
  margin: 0;
  color: var(--detail-muted);
  line-height: var(--gh-typography-line-normal);
  overflow-wrap: anywhere;
}

.gh-plant-detail__body > .gh-plant-detail__restriction {
  margin-top: var(--gh-space-lg);
  margin-right: var(--gh-space-none);
  margin-bottom: var(--gh-space-none);
  margin-left: var(--gh-space-none);
}

.gh-plant-detail__full-facts {
  display: none;
  margin-top: var(--gh-space-lg);
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--detail-line);
  border-radius: var(--gh-radius-surface);
  background: var(--detail-card);
}

.gh-plant-detail__full-facts h2 {
  margin: 0;
  font-size: var(--gh-typography-card-size);
}

.gh-plant-detail__full-facts dl {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--gh-space-none) var(--gh-space-lg);
  margin: 0;
}

.gh-plant-detail__full-facts .gh-plant-detail__restriction {
  margin: 0;
}

.gh-plant-detail__substrate {
  display: grid;
  gap: var(--gh-space-sm);
  margin-top: var(--gh-space-lg);
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-color-surface);
}

.gh-plant-detail__substrate h2,
.gh-plant-detail__substrate p {
  margin: var(--gh-space-none);
}

.gh-plant-detail__substrate h2 {
  color: var(--gh-color-text);
  font-size: var(--gh-typography-card-size);
}

.gh-plant-detail__substrate p {
  color: var(--gh-color-text-muted);
  line-height: var(--gh-typography-line-normal);
}

[data-detail-facts-area][data-detail-editor-active] {
  overflow: hidden;
}

[data-detail-facts-area][data-detail-editor-active] .gh-plant-detail__identity-copy,
[data-detail-facts-area][data-detail-editor-active] .gh-plant-detail__facts,
[data-detail-facts-area][data-detail-editor-active] .gh-plant-detail__tags,
[data-detail-facts-area][data-detail-editor-active] .gh-plant-detail__restriction {
  display: none;
}

[data-detail-facts-area][data-detail-editor-active] .gh-plant-detail__identity {
  display: contents;
}

[data-detail-facts-area][data-detail-editor-active] .gh-plant-detail__editor-host {
  position: absolute;
  inset: 0;
  z-index: var(--gh-layer-content);
  overflow-y: auto;
  overscroll-behavior: contain;
  background: var(--detail-card);
}

[data-detail-facts-area][data-detail-editor-active] .gh-detail-editor {
  min-height: 100%;
  padding: var(--gh-space-lg);
}

.gh-plant-detail__mounts {
  display: grid;
  gap: var(--gh-space-lg);
  margin-top: var(--gh-space-lg);
}

.gh-plant-detail__child-mount:empty {
  display: none;
}

.gh-plant-workspace__archive {
  justify-items: stretch;
}

.gh-plant-workspace__archive-copy {
  display: grid;
  gap: var(--gh-space-xs);
}

.gh-plant-workspace__archive .gh-plant-archive__toggle {
  justify-self: end;
}

.gh-plant-detail__state {
  display: grid;
  place-items: center;
  min-height: min(560px, 70dvh);
  padding: var(--gh-space-3xl) var(--gh-space-lg);
  text-align: center;
}

.gh-plant-detail__state > div {
  max-width: 520px;
}

.gh-plant-detail__state h2 {
  margin: 0 0 var(--gh-space-md);
}

.gh-plant-detail__state p {
  color: var(--detail-muted);
}

.gh-plant-detail__retry {
  padding: 0 var(--gh-space-lg);
}



@media (min-width: 768px) and (max-width: 900px) and (max-height: 1050px) {
  .gh-plant-detail__facts {
    gap: var(--gh-space-sm);
    padding: var(--gh-space-md);
  }

  .gh-plant-detail__fact {
    padding: var(--gh-space-sm) var(--gh-space-xs);
  }
}

@media (max-width: 767px) {
  .gh-plant-detail {
    align-items: flex-start;
    padding: 0;
  }

  .gh-plant-detail__sheet {
    width: 100%;
    max-height: none;
    margin: var(--gh-space-xl) 0 0;
  }

  .gh-plant-detail__body {
    padding: var(--gh-space-md) var(--gh-space-md) calc(var(--gh-space-xl) + env(safe-area-inset-bottom));
  }

  .gh-plant-detail__top {
    min-height: 0;
    height: auto;
    overflow: visible;
  }

  .gh-plant-detail__media {
    --gh-detail-media-footer-size: calc(var(--gh-size-touch-target) + var(--gh-space-sm) + var(--gh-space-sm));
    --gh-detail-media-thumbs-size: calc(var(--gh-size-touch-target) + var(--gh-space-md) + var(--gh-space-md));
    min-height: 440px;
    height: clamp(440px, 62dvh, 620px);
    align-self: stretch;
    border-radius: var(--gh-radius-surface) var(--gh-radius-surface) 0 0;
  }

  .gh-plant-detail__media > img,
  .gh-plant-detail__missing {
    inset: 0 0 calc(var(--gh-detail-media-footer-size) + var(--gh-detail-media-thumbs-size) + var(--gh-border-width) + var(--gh-border-width));
    width: 100%;
    height: calc(100% - var(--gh-detail-media-footer-size) - var(--gh-detail-media-thumbs-size) - var(--gh-border-width) - var(--gh-border-width));
  }

  .gh-plant-detail__media-date {
    left: 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-content: center;
    gap: var(--gh-space-xs);
    padding: var(--gh-space-xs) var(--gh-space-md);
  }

  .gh-plant-detail__media-drop-copy {
    margin-left: 0;
    text-align: left;
  }

  .gh-plant-detail__media-drop-copy--desktop {
    display: none;
  }

  .gh-plant-detail__media-drop-copy--phone {
    display: block;
  }

  .gh-plant-detail__facts-area {
    height: auto;
    overflow: visible;
    border-top: var(--gh-border-width) solid var(--detail-line);
    border-left: 0;
  }

  .gh-plant-detail__facts {
    display: none;
  }

  .gh-plant-detail__tags--compact,
  .gh-plant-detail__facts-area > .gh-plant-detail__restriction {
    display: none;
  }

  .gh-plant-detail__full-facts {
    display: grid;
    margin-top: var(--gh-space-md);
  }

  .gh-plant-detail__substrate {
    margin-top: var(--gh-space-md);
  }

  .gh-plant-detail__full-facts .gh-plant-detail__fact {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--gh-space-xs);
  }

  .gh-plant-detail__full-facts dl {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (prefers-reduced-motion: reduce) {
  .gh-plant-detail,
  .gh-plant-detail * {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/* compiled source: config/ui_tokens/structure/ux-plant-detail-tasks.css | role: route-structure */
.gh-detail-tasks {
  color: var(--gh-ink, var(--gh-color-text));
  min-width: 0;
}

.gh-detail-tasks__header,
.gh-detail-tasks__meta,
.gh-detail-tasks__actions,
.gh-detail-tasks__confirm-actions {
  align-items: center;
  display: flex;
  gap: var(--gh-space-md);
}

.gh-detail-tasks__header,
.gh-detail-tasks__meta {
  justify-content: space-between;
}

.gh-detail-tasks__header-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
}

.gh-detail-tasks__header h2,
.gh-detail-tasks--state h2,
.gh-detail-tasks__confirm h3 {
  margin: 0;
}

.gh-detail-tasks__list {
  display: grid;
  gap: var(--gh-space-md);
  list-style: none;
  margin: var(--gh-space-md) 0 0;
  padding: 0;
}

.gh-detail-tasks__row,
.gh-detail-tasks--state,
.gh-detail-tasks__success,
.gh-detail-tasks__conflict {
  background: var(--gh-surface-raised, var(--gh-color-surface));
  border: var(--gh-border-width) solid var(--gh-border, var(--gh-color-border-strong));
  border-radius: var(--gh-radius-surface);
  box-sizing: border-box;
  min-width: 0;
  padding: var(--gh-space-lg);
}

.gh-detail-tasks__action,
.gh-detail-tasks__conditions,
.gh-detail-tasks__row-result,
.gh-detail-tasks__action-result,
.gh-detail-tasks--state p {
  overflow-wrap: anywhere;
}

.gh-detail-tasks__action {
  font-weight: var(--gh-typography-weight-semibold);
  margin: var(--gh-space-md) 0 0;
}

.gh-detail-tasks__conditions {
  color: var(--gh-muted, var(--gh-color-text-muted));
  margin: var(--gh-space-sm) 0 0;
}

.gh-detail-tasks__actions {
  align-items: flex-start;
  flex-wrap: wrap;
  margin-top: var(--gh-space-lg);
}

.gh-detail-tasks button,
.gh-detail-tasks summary {
  align-items: center;
  border-radius: var(--gh-radius-surface);
  box-sizing: border-box;
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  min-height: 44px;
  padding: var(--gh-space-md) var(--gh-space-md);
}

.gh-detail-tasks button {
  background: var(--gh-control-bg, var(--gh-color-navigation));
  border: var(--gh-border-width) solid var(--gh-control-border, var(--gh-color-border-strong));
  color: inherit;
}

.gh-detail-tasks button:disabled {
  cursor: wait;
  opacity: var(--gh-opacity-disabled);
}

.gh-detail-tasks button:focus-visible,
.gh-detail-tasks summary:focus-visible,
#uxPlantDetailTasksMount:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-focus, var(--gh-color-focus));
  outline-offset: var(--gh-focus-offset);
}

.gh-detail-tasks details {
  min-width: min(100%, 15rem);
}

.gh-detail-tasks details[open] {
  display: grid;
  gap: var(--gh-space-sm);
}

.gh-detail-tasks summary {
  border: var(--gh-border-width) solid transparent;
}

.gh-detail-tasks__confirm {

  border-left: var(--gh-border-urgency-width) solid var(--gh-accent, var(--gh-color-action));
  display: grid;
  gap: var(--gh-space-md);
  margin-top: var(--gh-space-lg);
  padding: var(--gh-space-lg);
}

.gh-detail-tasks__confirm label {
  display: grid;
  gap: var(--gh-space-xs);
}

.gh-detail-tasks__confirm input[type="date"],
.gh-detail-tasks__confirm textarea {
  border: var(--gh-border-width) solid var(--gh-control-border, var(--gh-color-border-strong));
  border-radius: var(--gh-radius-control);
  box-sizing: border-box;
  color: inherit;
  font: inherit;
  max-width: 100%;
  min-height: 44px;
  padding: var(--gh-space-sm);
  width: 100%;
}

.gh-detail-tasks__confirm input[type="checkbox"] {
  height: 22px;
  width: 22px;
}

.gh-detail-tasks__success {

  margin: 0 0 var(--gh-space-md);
}

.gh-detail-tasks__warning,
.gh-detail-tasks__conflict,
.gh-detail-tasks__row-result,
.gh-detail-tasks__action-result {
  color: var(--gh-danger, var(--gh-color-danger));
}

.gh-detail-tasks__row-result:empty,
.gh-detail-tasks__action-result:empty {
  display: none;
}

@media (max-width: 767px) {
  .gh-detail-tasks__actions,
  .gh-detail-tasks__confirm-actions {
    align-items: stretch;
    display: grid;
    grid-template-columns: 1fr;
  }

  .gh-detail-tasks__actions > button,
  .gh-detail-tasks__actions > details,
  .gh-detail-tasks__confirm-actions > button,
  .gh-detail-tasks details > button,
  .gh-detail-tasks summary {
    justify-content: center;
    width: 100%;
  }
}

/* compiled source: config/ui_tokens/structure/ux-plant-detail-editor.css | role: route-structure */
.gh-detail-editor,
.gh-detail-editor__entry {
  min-width: 0;
  color: inherit;
}

.gh-detail-editor {
  display: grid;
  gap: var(--gh-space-md);
  padding: var(--gh-space-xs) 0 var(--gh-container-card-min);
}

.gh-detail-editor header,
.gh-detail-editor label {
  display: grid;
  gap: var(--gh-space-sm);
}

.gh-detail-editor header h2,
.gh-detail-editor header p,
.gh-detail-editor__entry p,
.gh-detail-editor__message,
.gh-detail-editor__exit p {
  margin: 0;
}

.gh-detail-editor__entry {
  display: grid;
  justify-items: end;
  gap: var(--gh-space-sm);
  max-width: var(--gh-container-card-min);
}

.gh-detail-editor__entry-message {
  justify-self: stretch;
  overflow-wrap: anywhere;
  text-align: left;
}

.gh-detail-editor select,
.gh-detail-editor input,
.gh-detail-editor textarea,
.gh-detail-editor button,
.gh-detail-editor__entry button {
  box-sizing: border-box;
  min-height: 44px;
  max-width: 100%;
  border: var(--gh-border-width) solid color-mix(in srgb, currentColor 32%, transparent);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-ux-surface, var(--gh-color-surface));
  color: inherit;
  font: inherit;
}

.gh-detail-editor select,
.gh-detail-editor input,
.gh-detail-editor textarea {
  width: 100%;
  padding: var(--gh-space-sm) var(--gh-space-md);
}

.gh-detail-editor textarea {
  min-height: 92px;
  resize: vertical;
}

.gh-detail-editor button,
.gh-detail-editor__entry button {
  padding: var(--gh-space-sm) var(--gh-space-lg);
  cursor: pointer;
}

.gh-detail-editor__entry button[data-editor-open] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--gh-space-sm);
  min-height: var(--gh-size-touch-target);
  border: 0;
  border-bottom: var(--gh-border-width) solid transparent;
  border-radius: 0;
  padding: var(--gh-space-sm) 0;
  color: var(--gh-color-action);
  background: transparent;
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  white-space: nowrap;
}

.gh-detail-editor__entry button[data-editor-open]:hover {
  border-bottom-color: currentColor;
}

.gh-detail-editor__entry-icon {
  font-size: var(--gh-typography-card-size);
  line-height: var(--gh-typography-line-tight);
}

.gh-detail-editor button:disabled {
  cursor: default;
  opacity: var(--gh-opacity-disabled);
}

.gh-detail-editor :focus-visible,
.gh-detail-editor__entry :focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-ux-focus, var(--gh-color-focus));
  outline-offset: var(--gh-focus-offset);
}

.gh-detail-editor__error {
  color: var(--gh-danger-text, var(--gh-color-danger));
  font-weight: var(--gh-typography-weight-bold);
}

.gh-detail-editor__message,
.gh-detail-editor__exit {
  padding: var(--gh-space-md) var(--gh-space-md);
  border: var(--gh-border-width) solid color-mix(in srgb, currentColor 35%, transparent);
  border-radius: var(--gh-radius-surface);
}

.gh-detail-editor__exit {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
}

.gh-detail-editor__exit p {
  flex-basis: 100%;
}

.gh-detail-editor__actions {
  position: sticky;
  bottom: 0;
  z-index: var(--gh-layer-content);
  display: flex;
  gap: var(--gh-space-sm);
  padding: var(--gh-space-md) 0;
}

[data-detail-facts-area][data-detail-editor-active] > [data-detail-compact-facts],
[data-detail-full-facts][data-detail-editor-active] > :not(#uxPlantDetailEditMount) {
  display: none;
}

@media (max-width: 767px) {
  .gh-detail-editor__entry {
    justify-items: start;
    max-width: var(--gh-container-reading);
    margin-top: var(--gh-space-md);
  }
}



@media (prefers-reduced-motion: reduce) {
  .gh-detail-editor *,
  .gh-detail-editor__entry * {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/* compiled source: config/ui_tokens/structure/ux-plant-detail-media.css | role: route-structure */
.gh-detail-media-tools {
  position: absolute;
  inset: 0;
  z-index: var(--gh-layer-content);
  pointer-events: none;
}

.gh-detail-media-tools button,
.gh-detail-media-tools dialog {
  pointer-events: auto;
}

.gh-detail-media-tools__upload-target,
.gh-detail-media-tools__viewer-target {
  position: absolute;
  inset: 0 0 calc(var(--gh-detail-media-footer-size) + var(--gh-border-width)) var(--gh-detail-media-rail-size);
  width: calc(100% - var(--gh-detail-media-rail-size));
  height: calc(100% - var(--gh-detail-media-footer-size) - var(--gh-border-width));
  min-width: var(--gh-size-touch-target);
  min-height: var(--gh-size-touch-target);
  border: var(--gh-border-width) solid transparent;
  border-radius: var(--gh-radius-control);
  color: transparent;
  background: transparent;
}

.gh-detail-media-tools__upload-target {
  cursor: copy;
}

.gh-detail-media-tools__viewer-target {
  cursor: zoom-in;
}

.gh-detail-media-tools__upload-target:focus-visible,
.gh-detail-media-tools__viewer-target:focus-visible,
.gh-detail-media-tools__frame-nav button:focus-visible,
.gh-detail-media-tools__add:focus-visible,
.gh-detail-media-tools__thumb:focus-visible,
.gh-detail-media-tools__dialog button:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}

.gh-detail-media-tools__frame-nav {
  position: absolute;
  top: var(--gh-space-none);
  right: var(--gh-space-md);
  bottom: calc(var(--gh-detail-media-footer-size) + var(--gh-border-width));
  left: calc(var(--gh-detail-media-rail-size) + var(--gh-space-md));
  z-index: var(--gh-layer-header);
  display: flex;
  align-items: center;
  justify-content: space-between;
  pointer-events: none;
}

.gh-detail-media-tools__frame-nav--viewer {
  top: var(--gh-space-none);
  right: var(--gh-space-md);
  bottom: var(--gh-space-none);
  left: var(--gh-space-md);
}

.gh-detail-media-tools__frame-nav button {
  min-width: var(--gh-size-touch-target);
  min-height: var(--gh-size-touch-target);
  width: var(--gh-size-touch-target);
  height: var(--gh-size-touch-target);
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-pill);
  color: var(--gh-color-on-image);
  background: var(--gh-color-photo-overlay-base);
  font-size: var(--gh-typography-section-size);
  font-weight: var(--gh-typography-weight-bold);
  line-height: var(--gh-typography-line-tight);
  cursor: pointer;
  pointer-events: auto;
}

.gh-detail-media-tools__add {
  position: absolute;
  right: var(--gh-space-md);
  bottom: var(--gh-space-none);
  z-index: var(--gh-layer-header);
  min-width: var(--gh-size-touch-target);
  min-height: var(--gh-detail-media-footer-size);
  padding: 0 var(--gh-space-md);
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-radius: var(--gh-radius-pill);
  color: var(--gh-color-action);
  background: var(--detail-card);
  font-weight: var(--gh-typography-weight-bold);
  cursor: pointer;
}

.gh-detail-media-tools__footer-actions {
  position: absolute;
  right: var(--gh-space-md);
  bottom: var(--gh-space-none);
  z-index: var(--gh-layer-header);
  display: flex;
  gap: var(--gh-space-sm);
}

.gh-detail-media-tools__footer-actions .gh-detail-media-tools__add {
  position: static;
}

.gh-detail-media-tools__file {
  position: fixed;
  width: var(--gh-border-width);
  height: var(--gh-border-width);
  overflow: hidden;
  clip-path: inset(50%);
  opacity: 0;
  pointer-events: none;
}

.gh-detail-media-tools__thumbs {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  z-index: var(--gh-layer-content);
  display: flex;
  flex-direction: column;
  gap: var(--gh-space-sm);
  width: var(--gh-detail-media-rail-size);
  overflow-y: auto;
  padding: var(--gh-space-md);
  border-right: var(--gh-border-width) solid var(--detail-line);
  background: var(--detail-card);
  pointer-events: auto;
}

.gh-detail-media-tools__thumb {
  position: relative;
  flex: 0 0 var(--gh-size-touch-target);
  width: var(--gh-size-touch-target);
  min-width: var(--gh-size-touch-target);
  min-height: var(--gh-size-touch-target);
  padding: var(--gh-space-none);
  overflow: hidden;
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-radius: var(--gh-radius-control);
  color: var(--detail-ink);
  background: var(--detail-card);
}

.gh-detail-media-tools__thumb.is-current {
  border-width: var(--gh-border-urgency-width);
  border-color: var(--gh-color-action);
}

.gh-detail-media-tools__thumb img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  object-fit: cover;
}

.gh-detail-media-tools__drop-hint {
  position: absolute;
  inset: var(--gh-space-md) var(--gh-space-md) calc(var(--gh-detail-media-footer-size) + var(--gh-space-md)) calc(var(--gh-detail-media-rail-size) + var(--gh-space-md));
  z-index: var(--gh-layer-header);
  display: grid;
  place-items: center;
  border: var(--gh-border-urgency-width) dashed var(--gh-color-border);
  border-radius: var(--gh-radius-surface);
  padding: var(--gh-space-lg);
  color: var(--gh-color-surface);
  text-align: center;
  background: var(--gh-color-scrim);
  pointer-events: none;
}

.gh-detail-media-tools__drop-hint[hidden] {
  display: none;
}

.gh-detail-media-tools__operation-status {
  position: absolute;
  right: var(--gh-space-md);
  bottom: calc(var(--gh-detail-media-footer-size) + var(--gh-space-md));
  left: calc(var(--gh-detail-media-rail-size) + var(--gh-space-md));
  z-index: var(--gh-layer-header);
  margin: 0;
  padding: var(--gh-space-sm);
  border-radius: var(--gh-radius-surface);
  color: var(--gh-color-surface);
  text-align: center;
  background: var(--gh-color-scrim);
}

.gh-detail-media-tools__operation-status:empty {
  display: none;
}

.gh-detail-media-tools__operation-status[data-kind="error"] {
  background: var(--gh-color-action);
}

.gh-detail-media-tools__viewer {
  position: fixed;
  inset: 0;
  width: 100vw;
  max-width: none;
  height: 100dvh;
  max-height: none;
  margin: 0;
  overflow: hidden;
  border: 0;
  padding: var(--gh-space-lg);
  color: var(--gh-color-surface);
  background: var(--gh-color-scrim);
}

.gh-detail-media-tools__viewer::backdrop {
  background: var(--gh-color-scrim);
}

.gh-detail-media-tools__viewer-shell {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  gap: var(--gh-space-md);
  width: 100%;
  height: 100%;
}

.gh-detail-media-tools__viewer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gh-space-md);
  min-height: var(--gh-size-touch-target);
  border-bottom: 0;
  background: transparent;
  font-variant-numeric: tabular-nums;
}

.gh-detail-media-tools__viewer-head button {
  min-width: var(--gh-size-touch-target);
  min-height: var(--gh-size-touch-target);
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-control);
  color: var(--gh-color-surface);
  background: var(--gh-color-navigation);
  font-size: var(--gh-typography-section-size);
  cursor: pointer;
}

.gh-detail-media-tools__viewer-actions {
  flex-wrap: wrap;
}

.gh-detail-media-tools__viewer-actions > span {
  margin-right: auto;
}

.gh-detail-media-tools__viewer-stage {
  position: relative;
  display: grid;
  width: 100%;
  height: 100%;
  min-height: 0;
  place-items: center;
  overflow: hidden;
}

.gh-detail-media-tools__viewer-stage img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.gh-detail-media-tools__viewer-thumbs {
  display: flex;
  justify-content: center;
  gap: var(--gh-space-sm);
  overflow-x: auto;
  padding: var(--gh-space-xs);
}

.gh-detail-media-tools__viewer-thumbs .gh-detail-media-tools__thumb {
  border-color: var(--gh-color-border-strong);
}

.gh-detail-media-tools__viewer-thumbs .gh-detail-media-tools__thumb.is-current {
  border-color: var(--gh-color-focus);
}

.gh-detail-media-tools--state {
  position: static;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--gh-space-sm);
  min-height: var(--gh-size-touch-target);
  padding: var(--gh-space-sm);
  color: var(--gh-color-surface);
  background: var(--gh-color-scrim);
}

.gh-detail-media-tools__dialog {
  max-width: min(92vw, 620px);
  padding: var(--gh-space-lg);
}

.gh-detail-media-tools__dialog::backdrop {

}

.gh-detail-media-tools__dialog img {
  display: block;
  max-width: 100%;
  max-height: 70vh;
  margin: var(--gh-space-md) auto;
  object-fit: contain;
}

.gh-detail-media-tools__dialog button {
  position: relative;
  z-index: var(--gh-layer-content);
  min-width: var(--gh-size-touch-target);
  min-height: var(--gh-size-touch-target);
}

@media (max-width: 767px) {
  .gh-detail-media-tools__upload-target,
  .gh-detail-media-tools__viewer-target {
    inset: 0 0 calc(var(--gh-detail-media-footer-size) + var(--gh-detail-media-thumbs-size) + var(--gh-border-width) + var(--gh-border-width));
    width: 100%;
    height: calc(100% - var(--gh-detail-media-footer-size) - var(--gh-detail-media-thumbs-size) - var(--gh-border-width) - var(--gh-border-width));
  }

  .gh-detail-media-tools__thumbs {
    top: auto;
    right: 0;
    bottom: var(--gh-detail-media-footer-size);
    flex-direction: row;
    width: auto;
    height: var(--gh-detail-media-thumbs-size);
    overflow-x: auto;
    overflow-y: hidden;
    border-top: var(--gh-border-width) solid var(--detail-line);
    border-right: 0;
  }

  .gh-detail-media-tools__frame-nav--card {
    right: var(--gh-space-md);
    bottom: calc(var(--gh-detail-media-footer-size) + var(--gh-detail-media-thumbs-size) + var(--gh-border-width) + var(--gh-border-width));
    left: var(--gh-space-md);
  }

  .gh-detail-media-tools__drop-hint {
    inset: var(--gh-space-md) var(--gh-space-md) calc(var(--gh-detail-media-footer-size) + var(--gh-detail-media-thumbs-size) + var(--gh-space-md)) var(--gh-space-md);
  }

  .gh-detail-media-tools__operation-status {
    right: var(--gh-space-sm);
    bottom: calc(var(--gh-detail-media-footer-size) + var(--gh-detail-media-thumbs-size) + var(--gh-space-sm));
    left: var(--gh-space-sm);
  }

  .gh-detail-media-tools__viewer {
    padding: var(--gh-space-md);
  }
}

@media (prefers-reduced-motion: reduce) {
  .gh-detail-media-tools * {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/* compiled source: config/ui_tokens/structure/ux-plant-detail-history.css | role: route-structure */
.gh-plant-history {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  padding: var(--gh-space-lg);
  color: var(--detail-ink, var(--gh-color-text));
  background: var(--detail-card, var(--gh-color-surface));
  border: var(--gh-border-width) solid var(--detail-line, var(--gh-color-border));
  border-radius: var(--gh-radius-surface);
}

.gh-plant-history__title,
.gh-plant-history__state-title {
  margin: 0;
}

.gh-plant-history__title {
  font-size: var(--gh-typography-section-size);
}

.gh-plant-history__list {
  display: grid;
  gap: 0;
  margin: var(--gh-space-lg) 0;
  padding: 0;
  list-style: none;
}

.gh-plant-history__item {
  position: relative;
  min-width: 0;
  padding: 0 0 var(--gh-space-lg) var(--gh-space-xl);
  overflow-wrap: anywhere;
}

.gh-plant-history__item::before {
  position: absolute;
  top: 7px;
  left: 3px;
  width: 11px;
  height: 11px;
  border: var(--gh-border-urgency-width) solid var(--detail-card, var(--gh-color-border));
  border-radius: 50%;
  content: "";
}

.gh-plant-history__item:not(:last-child)::after {
  position: absolute;
  top: 20px;
  bottom: 2px;
  left: 8px;
  width: 2px;
  background: var(--detail-line, var(--gh-color-action-soft));
  content: "";
}

.gh-plant-history__item[data-history-exact] {
  margin: calc(var(--gh-space-sm) * -1) calc(var(--gh-space-sm) * -1) var(--gh-space-md) var(--gh-space-lg);
  padding: var(--gh-space-md) var(--gh-space-md) var(--gh-space-lg) var(--gh-space-2xl);
  border: var(--gh-border-urgency-width) solid var(--gh-color-action);
}

.gh-plant-history__item[data-history-exact]::before {
  left: 11px;
}

.gh-plant-history__item[data-history-exact]::after {
  display: none;
}

.gh-plant-history__item:focus-visible,
.gh-plant-history__button:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}

.gh-plant-history__item-head {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-sm) var(--gh-space-md);
  align-items: baseline;
}

.gh-plant-history__date {
  color: var(--detail-muted, var(--gh-color-text-muted));
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-plant-history__label {
  font-size: var(--gh-typography-card-size);
}

.gh-plant-history__text,
.gh-plant-history__state-copy,
.gh-plant-history__inline-error p {
  margin: var(--gh-space-sm) 0 0;
  line-height: var(--gh-typography-line-relaxed);
  white-space: normal;
}

.gh-plant-history__loading,
.gh-plant-history__end,
.gh-plant-history__state,
.gh-plant-history__inline-error {
  margin: var(--gh-space-lg) 0 0;
}

.gh-plant-history__state,
.gh-plant-history__inline-error {
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--detail-line, var(--gh-color-border));
  border-radius: var(--gh-radius-surface);
}

.gh-plant-history__button {
  min-width: 44px;
  min-height: 44px;
  margin-top: var(--gh-space-lg);
  padding: var(--gh-space-sm) var(--gh-space-lg);
  color: var(--detail-ink, var(--gh-color-text));
  background: color-mix(in srgb, var(--gh-color-action) 10%, var(--detail-card, var(--gh-color-surface)));
  border: var(--gh-border-width) solid var(--gh-color-action);
  border-radius: var(--gh-radius-surface);
  font: inherit;
  font-weight: var(--gh-typography-weight-bold);
  cursor: pointer;
}

.gh-plant-history__button + .gh-plant-history__button {
  margin-left: var(--gh-space-md);
}

.gh-plant-history__button--secondary {
  background: var(--detail-card, var(--gh-color-surface));
}

.gh-plant-history__button:disabled {
  cursor: wait;
  opacity: var(--gh-opacity-disabled);
}

@media (max-width: 767px) {
  .gh-plant-history {
    padding: var(--gh-space-lg);
    border-radius: var(--gh-radius-surface);
  }

  .gh-plant-history__item {
    padding-left: var(--gh-space-xl);
  }

  .gh-plant-history__button,
  .gh-plant-history__button + .gh-plant-history__button {
    width: 100%;
    margin-left: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .gh-plant-history,
  .gh-plant-history * {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/* compiled source: config/ui_tokens/styles/plant-detail.css | role: route-contract */
/* Token API component contract: current plant detail, tasks, media and history. */
.gh-plant-detail {
  background: var(--gh-color-scrim);
  backdrop-filter: none;
}

.gh-plant-detail__sheet {
  --detail-bg: var(--gh-color-canvas);
  --detail-card: var(--gh-color-surface);
  --detail-ink: var(--gh-color-text);
  --detail-muted: var(--gh-color-text-muted);
  --detail-line: var(--gh-color-border);
  border-color: var(--gh-color-border-strong);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-color-canvas);
  box-shadow: var(--gh-elevation-none);
}

.gh-plant-detail__sticky {
  background: transparent;
  backdrop-filter: none;
}

.gh-plant-detail__close,
.gh-plant-detail__retry {
  border-color: var(--gh-color-border-strong);
  border-radius: var(--gh-radius-control);
}

.gh-plant-detail__top,
.gh-plant-detail__full-facts,
.gh-plant-detail__fact,
.gh-detail-tasks__row,
.gh-detail-tasks--state,
.gh-detail-tasks__success,
.gh-detail-tasks__conflict,
.gh-plant-history,
.gh-plant-history__state,
.gh-plant-history__inline-error {
  border-color: var(--gh-color-border);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-plant-detail__media {
  background: var(--gh-color-action-soft);
}

.gh-plant-detail__media-date,
.gh-detail-media-tools__frame-controls button,
.gh-detail-media-tools__actions button,
.gh-detail-media-tools__thumb,
.gh-detail-media-tools__add {
  backdrop-filter: none;
}

.gh-detail-media-tools__dialog {
  border: var(--gh-border-width) solid var(--gh-color-border-strong);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
  box-shadow: var(--gh-elevation-none);
}

.gh-detail-media-tools__dialog::backdrop {
  background: var(--gh-color-scrim);
}

.gh-detail-media-tools__drop-hint,
.gh-detail-media-tools__operation-status {
  border-radius: var(--gh-radius-control);
}

.gh-detail-editor select,
.gh-detail-editor input,
.gh-detail-editor textarea,
.gh-detail-editor button,
.gh-detail-editor__entry button,
.gh-detail-editor__message,
.gh-detail-editor__exit,
.gh-detail-tasks button,
.gh-detail-tasks summary,
.gh-detail-tasks__confirm input[type="date"],
.gh-detail-tasks__confirm textarea,
.gh-plant-history__button {
  border-color: var(--gh-color-border-strong);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
}

.gh-detail-editor__actions {
  background: var(--gh-color-surface);
}

.gh-detail-tasks__confirm {
  border-left-color: var(--gh-color-action);
  background: var(--gh-color-action-soft);
}

.gh-detail-tasks [data-issue614-action="complete"],
.gh-detail-tasks__confirm[data-kind="complete"] button[type="submit"],
.gh-detail-tasks__confirm[data-kind="reschedule"] button[type="submit"] {
  border-color: var(--gh-color-action);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-color-action);
  color: var(--gh-color-surface);
}

.gh-detail-tasks [data-issue614-action="problem"],
.gh-detail-tasks__confirm[data-kind="problem"] button[type="submit"] {
  border-color: var(--gh-color-warning);
  background: var(--gh-color-warning-soft);
  color: var(--gh-color-warning);
}

.gh-detail-tasks__confirm[data-kind="problem"] {
  border-left-color: var(--gh-color-warning);
  background: var(--gh-color-warning-soft);
}

.gh-detail-tasks [data-issue614-action="delete"],
.gh-detail-tasks__confirm[data-kind="delete"] button[type="submit"] {
  border-color: var(--gh-color-danger);
  background: var(--gh-color-danger-soft);
  color: var(--gh-color-danger);
}

.gh-detail-tasks__confirm[data-kind="delete"] {
  border-left-color: var(--gh-color-danger);
  background: var(--gh-color-danger-soft);
}

.gh-detail-tasks__success {
  border-color: var(--gh-color-action);
  background: var(--gh-color-action-soft);
}

.gh-detail-tasks__warning,
.gh-detail-tasks__conflict,
.gh-detail-tasks__row-result,
.gh-detail-tasks__action-result,
.gh-detail-editor__error,
.gh-plant-history__inline-error {
  color: var(--gh-color-danger);
}

.gh-plant-history__item,
.gh-plant-detail__fact dd,
.gh-detail-tasks__action,
.gh-detail-tasks__conditions,
.gh-detail-tasks__row-result,
.gh-detail-tasks__action-result {
  overflow-wrap: break-word;
  word-break: normal;
}

.gh-plant-history__item::before {
  background: var(--gh-color-action);
  box-shadow: var(--gh-elevation-none);
}

.gh-plant-history__item[data-history-exact] {
  border-color: var(--gh-color-action);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-action-soft);
}

#uxPlantDetailRoot :where(button, a, input, select, textarea, summary, [tabindex]:not([tabindex="-1"])):focus-visible {
  outline: var(--gh-focus-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}

/* compiled source: config/ui_tokens/structure/ux-events.css | role: route-structure */
#uxEventsScreenRoot {

  color: var(--events-ink);
}

.gh-ux-shell[data-ux-active-route="events"] #uxEventsMount > [data-ux-compat-host="events"] {
  display: none;
}

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

.gh-events__heading {
  display: grid;
  gap: var(--gh-space-xs);
}

.gh-events__eyebrow {
  color: var(--events-muted);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  letter-spacing: 0;
  text-transform: uppercase;
}

.gh-events__title,
.gh-events__summary,
.gh-events__group-title,
.gh-events__empty h3,
.gh-events__state h2,
.gh-events__state p,
.gh-events__progress,
.gh-events__inline-error,
.gh-events__end {
  margin: 0;
}

.gh-events__summary,
.gh-events__text,
.gh-events__end {
  color: var(--events-muted);
}

.gh-events__controls {
  display: grid;
  grid-template-columns: minmax(260px, 1.4fr) minmax(220px, 1fr) minmax(150px, 0.7fr) minmax(170px, 0.8fr) auto;
  align-items: end;
  gap: var(--gh-space-md);
}

.gh-events__periods {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--gh-space-sm);
}

.gh-events__field {
  display: grid;
  gap: var(--gh-space-sm);
  min-width: 0;
  color: var(--events-muted);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-events__input,
.gh-events__select,
.gh-events__control,
.gh-events__entry {
  min-height: 44px;
  border: var(--gh-border-width) solid color-mix(in srgb, var(--events-ink) 24%, transparent);
  border-radius: var(--gh-radius-surface);
  background: var(--events-surface);
  color: var(--events-ink);
  font: inherit;
}

.gh-events__input,
.gh-events__select {
  width: 100%;
  padding: 0 var(--gh-space-md);
}

.gh-events__control {
  padding: 0 var(--gh-space-lg);
  font-weight: var(--gh-typography-weight-bold);
  cursor: pointer;
}

.gh-events__control[aria-pressed="true"] {

}

.gh-events__control:disabled {
  cursor: wait;
  opacity: var(--gh-opacity-disabled);
}

.gh-events__export {
  white-space: nowrap;
}

.gh-events__progress,
.gh-events__inline-error,
.gh-events__state,
.gh-events__empty {
  border: var(--gh-border-width) solid color-mix(in srgb, var(--events-ink) 18%, transparent);
  border-radius: var(--gh-radius-surface);
  background: var(--events-surface-soft);
}

.gh-events__progress,
.gh-events__inline-error {
  padding: var(--gh-space-md) var(--gh-space-lg);
}

.gh-events__inline-error {

}

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

.gh-events__group {
  min-width: 0;
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid color-mix(in srgb, var(--events-ink) 18%, transparent);
  border-radius: var(--gh-radius-surface);
  background: var(--events-surface-soft);
}

.gh-events__group-title {
  overflow-wrap: anywhere;
  font-size: var(--gh-typography-card-size);
}

.gh-events__list {
  display: grid;
  gap: var(--gh-space-sm);
  margin: var(--gh-space-md) 0 0;
  padding: 0;
  list-style: none;
}

.gh-events__item {
  min-width: 0;
}

.gh-events__entry {
  display: grid;
  grid-template-columns: minmax(150px, 0.55fr) minmax(180px, 0.8fr) minmax(260px, 1.5fr);
  align-items: center;
  gap: var(--gh-space-lg);
  width: 100%;
  padding: var(--gh-space-md);
  text-align: left;
  cursor: pointer;
}

.gh-events__entry:hover {

}

.gh-events__entry-head,
.gh-events__plant,
.gh-events__text {
  min-width: 0;
  overflow-wrap: anywhere;
}

.gh-events__entry-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--gh-space-sm) var(--gh-space-md);
}

.gh-events__date,
.gh-events__type,
.gh-events__plant {
  font-weight: var(--gh-typography-weight-bold);
}

.gh-events__type {
  color: var(--events-accent);
}

.gh-events__footer {
  display: flex;
  justify-content: center;
}

.gh-events__state,
.gh-events__empty {
  display: grid;
  justify-items: center;
  gap: var(--gh-space-md);
  padding: var(--gh-space-2xl);
  text-align: center;
}

.gh-events__control:focus-visible,
.gh-events__input:focus-visible,
.gh-events__select:focus-visible,
.gh-events__entry:focus-visible,
.gh-events__inline-error:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--events-accent);
  outline-offset: var(--gh-focus-offset);
}



@media (max-width: 1100px) {
  .gh-events__controls {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .gh-events__periods {
    grid-column: 1 / -1;
  }

  .gh-events__export {
    justify-self: start;
  }

  .gh-events__entry {
    grid-template-columns: minmax(150px, 0.7fr) minmax(220px, 1.3fr);
  }

  .gh-events__text {
    grid-column: 1 / -1;
  }
}

@media (max-width: 767px) {
  .gh-events__controls {
    grid-template-columns: minmax(0, 1fr);
  }

  .gh-events__periods {
    grid-column: auto;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .gh-events__export {
    width: 100%;
  }

  .gh-events__group {
    padding: var(--gh-space-md);
  }

  .gh-events__entry {
    grid-template-columns: minmax(0, 1fr);
  }

  .gh-events__text {
    grid-column: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  .gh-events *,
  .gh-events *::before,
  .gh-events *::after {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/* compiled source: config/ui_tokens/styles/events.css | role: route-contract */
/* Token API route contract: events journal. */
#uxEventsScreenRoot {
  --events-surface: var(--gh-color-surface);
  --events-surface-soft: var(--gh-color-surface);
  --events-ink: var(--gh-color-text);
  --events-muted: var(--gh-color-text-muted);
  --events-accent: var(--gh-color-action);
}

.gh-events__input,
.gh-events__select,
.gh-events__control,
.gh-events__entry,
.gh-events__progress,
.gh-events__inline-error,
.gh-events__state,
.gh-events__empty,
.gh-events__group {
  border-color: var(--gh-color-border);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-events__control[aria-pressed="true"] {
  border-color: var(--gh-color-action);
  background: var(--gh-color-action-soft);
  color: var(--gh-color-action-strong);
}

.gh-events__entry:hover {
  border-color: var(--gh-color-border-strong);
  background: var(--gh-color-surface);
}

.gh-events__entry-head,
.gh-events__plant,
.gh-events__text,
.gh-events__group-title {
  overflow-wrap: break-word;
  word-break: normal;
}

.gh-events__inline-error {
  border-color: var(--gh-color-danger);
  background: var(--gh-color-danger-soft);
  color: var(--gh-color-danger);
}

/* Route-local containment for font/scrollbar differences at the 360 px gate. */
#uxEventsMount,
#uxEventsScreenRoot,
.gh-events,
.gh-events__controls,
.gh-events__periods,
.gh-events__groups,
.gh-events__group,
.gh-events__list,
.gh-events__item,
.gh-events__entry,
.gh-events__controls > *,
.gh-events__periods > * {
  min-width: 0;
  max-width: 100%;
}

@media (max-width: 767px) {
  .gh-events__export {
    min-width: 0;
    max-width: 100%;
    white-space: normal;
  }
}

/* compiled source: config/ui_tokens/structure/ux-task-report.css | role: route-structure */
.gh-ux-shell[data-ux-active-route="tasks"] #uxTasksMount > [data-ux-compat-host="tasks"] {
  display: none;
}

#uxTasksScreenRoot {

  color: var(--ink);
}

#uxTasksScreenRoot .gh-task-report-head {
  border-bottom: 0;
  background: transparent;
}

.gh-task-report-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: var(--gh-space-lg);
  margin-bottom: var(--gh-space-lg);
}

.gh-task-report-head span,
.gh-task-report-row span,
.gh-task-report-row small {
  color: var(--muted, var(--gh-color-text-muted));
}

.gh-task-report-head h2,
.gh-task-report-group h3,
.gh-task-report-subgroup h4,
.gh-task-report-state h3,
.gh-task-report-empty h3 {
  margin: 0;
}

.gh-task-report-head label {
  display: grid;
  gap: var(--gh-space-sm);
  min-width: 190px;
  font-weight: var(--gh-typography-weight-bold);
}

.gh-task-report-head select,
.gh-task-report-tabs button,
.gh-task-report-chips button,
.gh-task-report-state button {
  min-height: 44px;
  border: var(--gh-border-width) solid color-mix(in srgb, var(--ink, var(--gh-color-action)) 24%, transparent);
  border-radius: var(--gh-radius-surface);
  background: var(--surface, var(--gh-color-surface));
  color: var(--ink, var(--gh-color-text));
}

.gh-task-report-head select {
  padding: 0 var(--gh-space-3xl) 0 var(--gh-space-md);
}

.gh-task-report-tabs,
.gh-task-report-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
  margin-bottom: var(--gh-space-lg);
}

.gh-task-report-tabs button,
.gh-task-report-chips button,
.gh-task-report-state button {
  padding: 0 var(--gh-space-lg);
  font-weight: var(--gh-typography-weight-bold);
  cursor: pointer;
}

.gh-task-report-tabs button[aria-selected="true"],
.gh-task-report-chips button[aria-pressed="true"] {

}

.gh-task-report-groups {
  display: grid;
  gap: var(--gh-space-lg);
}

.gh-task-report-group,
.gh-task-report-subgroup,
.gh-task-report-state,
.gh-task-report-empty,
.gh-task-report-warning {
  border: var(--gh-border-width) solid color-mix(in srgb, var(--ink, var(--gh-color-action)) 18%, transparent);
  border-radius: var(--gh-radius-surface);
  background: color-mix(in srgb, var(--surface, var(--gh-color-surface)) 96%, var(--gh-color-action-soft));
}

.gh-task-report-group {
  padding: var(--gh-space-lg);
}

.gh-task-report-subgroup {
  margin-top: var(--gh-space-md);
  padding: var(--gh-space-md);
}

.gh-task-report-group > ul,
.gh-task-report-subgroup > ul {
  display: grid;
  gap: var(--gh-space-sm);
  margin: var(--gh-space-md) 0 0;
  padding: 0;
  list-style: none;
}

.gh-task-report-row {
  display: grid;
  grid-template-columns: 48px minmax(160px, 0.7fr) 112px minmax(240px, 1.3fr);
  align-items: center;
  gap: var(--gh-space-md);
  min-width: 0;
  padding: var(--gh-space-md);
}

.gh-task-report-avatar,
.gh-task-report-avatar img,
.gh-task-report-avatar-missing {
  width: 48px;
  height: 48px;
  border-radius: 50%;
}

.gh-task-report-avatar img {
  display: block;
  object-fit: cover;
}

.gh-task-report-avatar-missing {
  display: grid;
  place-items: center;
  background: var(--gh-color-action-soft);
  color: var(--gh-color-action-strong);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-task-report-plant,
.gh-task-report-copy {
  display: grid;
  gap: var(--gh-space-xs);
  min-width: 0;
}

.gh-task-report-row time {
  font-weight: var(--gh-typography-weight-bold);
}

.gh-task-report-state,
.gh-task-report-empty {
  padding: var(--gh-space-2xl);
  text-align: center;
}

.gh-task-report-warning {
  margin: 0 0 var(--gh-space-lg);
  padding: var(--gh-space-md) var(--gh-space-lg);
}

.gh-task-report-tabs button:focus-visible,
.gh-task-report-chips button:focus-visible,
.gh-task-report-head select:focus-visible,
.gh-task-report-state button:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}



@media (max-width: 900px) {
  .gh-task-report-row {
    grid-template-columns: 48px minmax(0, 1fr) auto;
  }

  .gh-task-report-copy {
    grid-column: 2 / -1;
  }
}

@media (max-width: 767px) {
  .gh-task-report-head {
    align-items: stretch;
    flex-direction: column;
  }

  .gh-task-report-head label {
    min-width: 0;
  }

  .gh-task-report-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .gh-task-report-tabs button {
    padding-inline: var(--gh-space-sm);
  }

  .gh-task-report-row {
    grid-template-columns: 48px minmax(0, 1fr);
  }

  .gh-task-report-row time,
  .gh-task-report-copy {
    grid-column: 2;
  }
}

@media (prefers-reduced-motion: reduce) {
  .gh-task-report-tabs *,
  .gh-task-report-chips * {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/* compiled source: config/ui_tokens/structure/ux-task-selection.css | role: route-structure */
#uxTasksScreenRoot .gh-task-selection-check {
  display: grid;
  width: 44px;
  min-width: 44px;
  height: 44px;
  place-items: center;
  border-radius: var(--gh-radius-surface);
  cursor: pointer;
}

#uxTasksScreenRoot .gh-task-selection-check input {
  width: 22px;
  height: 22px;
  margin: 0;
  accent-color: var(--gh-color-action);
  cursor: pointer;
}

#uxTasksScreenRoot .gh-task-selection-check:has(input:focus-visible) {
  outline: var(--gh-border-urgency-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}

#uxTasksScreenRoot .gh-task-report-row.gh-task-selection-enabled {
  grid-template-columns: 44px 48px minmax(160px, 0.7fr) 112px minmax(240px, 1.3fr);
}

.gh-task-selection-select-all {
  display: flex;
  justify-content: flex-start;
  margin: 0 0 var(--gh-space-lg);
}

.gh-task-selection-select-all[hidden] {
  display: none;
}

.gh-task-selection-select-all button {
  min-height: var(--gh-size-touch-target);
  padding: 0 var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-color-action);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-action);
  color: var(--gh-color-surface);
  font-weight: var(--gh-typography-weight-bold);
  cursor: pointer;
}

.gh-task-selection-select-all button[aria-pressed="true"] {
  background: var(--gh-color-action-soft);
  color: var(--gh-color-action-strong);
}

.gh-task-selection-select-all button:focus-visible {
  outline: var(--gh-focus-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}

.gh-task-selection-toolbar {
  position: sticky;
  z-index: var(--gh-layer-content);
  bottom: calc(var(--gh-ux-bottom-height, 0px) + env(safe-area-inset-bottom) + 8px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gh-space-md);
  margin: 0 0 var(--gh-space-lg);
  padding: var(--gh-space-md) var(--gh-space-lg);
  border: var(--gh-border-width) solid color-mix(in srgb, var(--ink, var(--gh-color-action)) 24%, transparent);
  border-radius: var(--gh-radius-surface);
  background: var(--surface, var(--gh-color-surface));
  box-shadow: var(--gh-elevation-none);
  color: var(--ink, var(--gh-color-text));
}

.gh-task-selection-toolbar[hidden] {
  display: none;
}

.gh-task-selection-toolbar p {
  margin: 0;
  font-weight: var(--gh-typography-weight-bold);
}

.gh-task-selection-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: var(--gh-space-sm);
}

.gh-task-selection-actions button {
  min-height: 44px;
  padding: 0 var(--gh-space-lg);
  border: var(--gh-border-width) solid color-mix(in srgb, var(--ink, var(--gh-color-action)) 24%, transparent);
  border-radius: var(--gh-radius-surface);
  background: color-mix(in srgb, var(--surface, var(--gh-color-surface)) 92%, var(--gh-color-action-soft));
  color: var(--ink, var(--gh-color-text));
  font-weight: var(--gh-typography-weight-bold);
  cursor: pointer;
}

.gh-task-selection-actions button:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}

#uxTasksScreenRoot[data-task-selection-mode="selected"] > .gh-task-report-warning,
#uxTasksScreenRoot[data-task-selection-mode="selected"] > .gh-task-selection-select-all,
#uxTasksScreenRoot[data-task-selection-mode="selected"] > .gh-task-report-groups {
  display: none;
}

.gh-task-selection-view {
  display: grid;
  gap: var(--gh-space-lg);
}

.gh-task-selection-group {
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid color-mix(in srgb, var(--ink, var(--gh-color-action)) 18%, transparent);
  border-radius: var(--gh-radius-surface);
  background: color-mix(in srgb, var(--surface, var(--gh-color-surface)) 96%, var(--gh-color-action-soft));
}

.gh-task-selection-group h3 {
  margin: 0;
}

.gh-task-selection-group ul {
  display: grid;
  gap: var(--gh-space-sm);
  margin: var(--gh-space-md) 0 0;
  padding: 0;
  list-style: none;
}

@media (max-width: 900px) {
  #uxTasksScreenRoot .gh-task-report-row.gh-task-selection-enabled {
    grid-template-columns: 44px 48px minmax(0, 1fr) auto;
  }

  #uxTasksScreenRoot .gh-task-report-row.gh-task-selection-enabled .gh-task-report-copy {
    grid-column: 3 / -1;
  }
}

@media (max-width: 767px) {
  #uxTasksScreenRoot .gh-task-report-row.gh-task-selection-enabled {
    grid-template-columns: 44px 48px minmax(0, 1fr);
  }

  #uxTasksScreenRoot .gh-task-report-row.gh-task-selection-enabled time,
  #uxTasksScreenRoot .gh-task-report-row.gh-task-selection-enabled .gh-task-report-copy {
    grid-column: 3;
  }

  .gh-task-selection-toolbar {
    align-items: stretch;
    flex-direction: column;
  }

  .gh-task-selection-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }

  .gh-task-selection-select-all button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .gh-task-selection-toolbar *,
  .gh-task-selection-select-all *,
  .gh-task-selection-view * {
    scroll-behavior: auto !important;
    transition: none !important;
  }
}

/* compiled source: config/ui_tokens/structure/ux-task-batch-session.css | role: route-structure */
.gh-task-batch-session-mount {
  display: grid;
  gap: var(--gh-space-lg);
  width: 100%;
  min-width: 0;
  margin-block-start: var(--gh-space-lg);
}

.gh-task-batch-session-mount[hidden],
.gh-task-batch-entry[hidden],
[data-task-batch-session-root][hidden] {
  display: none !important;
}

.gh-task-batch-entry {
  --gh-task-batch-surface: var(--gh-ux-panel-strong, var(--gh-color-canvas));
  --gh-task-batch-ink: var(--gh-ux-ink, var(--gh-color-text));
  display: flex;
  justify-content: flex-end;
}

.gh-task-selection-actions > .gh-task-batch-entry {
  order: -1;
}

.gh-task-batch-entry button {
  min-width: 44px;
  min-height: 44px;
  padding: var(--gh-space-md) var(--gh-space-lg);
  color: var(--gh-ux-shell-bg, var(--gh-color-surface));
  font: inherit;
  font-weight: var(--gh-typography-weight-bold);
  background: var(--gh-task-batch-ink);
  border: var(--gh-border-width) solid var(--gh-task-batch-ink);
  border-radius: var(--gh-radius-pill);
  cursor: pointer;
}

.gh-task-batch-entry button:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-task-batch-ink);
  outline-offset: var(--gh-focus-offset);
}

.gh-task-batch-card {
  --gh-task-batch-border: var(--gh-ux-ink, var(--gh-color-border));
  --gh-task-batch-surface: var(--gh-ux-panel-strong, var(--gh-color-canvas));
  --gh-task-batch-ink: var(--gh-ux-ink, var(--gh-color-text));
  --gh-task-batch-muted: var(--gh-ux-muted, var(--gh-color-text-muted));
  display: grid;
  gap: var(--gh-space-lg);
  width: 100%;
  box-sizing: border-box;
  padding: clamp(var(--gh-space-lg), 3vw, var(--gh-space-2xl));
  color: var(--gh-task-batch-ink);
  background: var(--gh-task-batch-surface);
  border: var(--gh-border-width) solid var(--gh-task-batch-border);
  border-radius: var(--gh-radius-surface);
  color-scheme: light dark;
}

.gh-task-batch-head,
.gh-task-batch-head p,
.gh-task-batch-head h2,
.gh-task-batch-summary,
.gh-task-batch-status,
.gh-task-batch-skipped {
  margin: 0;
}

.gh-task-batch-head {
  display: grid;
  gap: var(--gh-space-xs);
  color: var(--gh-task-batch-ink);
  background: transparent;
  border: 0;
}

.gh-task-batch-head p,
.gh-task-batch-summary,
.gh-task-batch-skipped {
  color: var(--gh-task-batch-muted);
}

.gh-task-batch-head h2 {
  overflow-wrap: anywhere;
  font-size: clamp(var(--gh-typography-section-size), 3vw, var(--gh-typography-screen-size));
  line-height: var(--gh-typography-line-tight);
}

.gh-task-batch-fields {
  display: grid;
  gap: var(--gh-space-lg);
  min-width: 0;
  margin: 0;
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-task-batch-border);
  border-radius: var(--gh-radius-surface);
}

.gh-task-batch-fields legend {
  padding: 0 var(--gh-space-sm);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-task-batch-choice,
.gh-task-batch-date,
.gh-task-batch-comment {
  display: grid;
  gap: var(--gh-space-sm);
  min-width: 0;
}

.gh-task-batch-choice {
  grid-template-columns: 44px minmax(0, 1fr);
  align-items: center;
  min-height: 44px;
  font-weight: var(--gh-typography-weight-bold);
}

.gh-task-batch-choice input {
  width: 22px;
  height: 22px;
  margin: var(--gh-space-md);
}

.gh-task-batch-date input,
.gh-task-batch-comment textarea {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  padding: var(--gh-space-md) var(--gh-space-md);
  color: inherit;
  font: inherit;
  background: transparent;
  border: var(--gh-border-width) solid var(--gh-task-batch-border);
  border-radius: var(--gh-radius-surface);
}

.gh-task-batch-date input {
  min-height: 44px;
}

.gh-task-batch-comment textarea {
  resize: vertical;
}

.gh-task-batch-error {
  margin: 0;
  color: var(--gh-ux-danger, var(--gh-color-danger));
  font-weight: var(--gh-typography-weight-bold);
}

.gh-task-batch-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-md);
}

.gh-task-batch-actions button {
  min-width: 44px;
  min-height: 44px;
  padding: var(--gh-space-md) var(--gh-space-lg);
  color: inherit;
  font: inherit;
  font-weight: var(--gh-typography-weight-bold);
  background: transparent;
  border: var(--gh-border-width) solid var(--gh-task-batch-border);
  border-radius: var(--gh-radius-pill);
  cursor: pointer;
}

.gh-task-batch-actions button:hover {
  background: color-mix(in srgb, var(--gh-task-batch-border) 14%, transparent);
}

.gh-task-batch-actions button:focus-visible,
.gh-task-batch-fields input:focus-visible,
.gh-task-batch-fields textarea:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-task-batch-ink);
  outline-offset: var(--gh-focus-offset);
}

.gh-task-batch-actions [data-task-batch-confirm] {
}

.gh-task-batch-actions [data-task-batch-confirm]:disabled {
  cursor: progress;
  opacity: var(--gh-opacity-disabled);
}

.gh-task-batch-progress {
  display: grid;
  gap: var(--gh-space-sm);
  padding: var(--gh-space-lg);
  color: var(--gh-task-batch-ink);
  background: var(--gh-color-action-soft);
  border: var(--gh-border-width) solid var(--gh-task-batch-border);
  border-radius: var(--gh-radius-surface);
}

.gh-task-batch-progress[hidden] {
  display: none;
}

.gh-task-batch-progress p {
  margin: 0;
}

.gh-task-batch-progress [data-task-batch-progress-copy] {
  font-weight: var(--gh-typography-weight-bold);
}

.gh-task-batch-progress progress {
  width: 100%;
  height: var(--gh-space-lg);
  accent-color: var(--gh-color-action);
}

.gh-task-batch-progress-outcomes {
  color: var(--gh-task-batch-muted);
  font-size: var(--gh-typography-meta-size);
}

.gh-task-batch-card[aria-busy="true"],
[aria-busy="true"] > .gh-task-batch-card {
  cursor: progress;
}

.gh-task-batch-totals {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--gh-space-md);
  margin: 0;
}

.gh-task-batch-totals div {
  display: grid;
  gap: var(--gh-space-xs);
  min-width: 0;
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-task-batch-border);
  border-radius: var(--gh-radius-surface);
}

.gh-task-batch-totals dt {
  color: var(--gh-task-batch-muted);
}

.gh-task-batch-totals dd {
  margin: 0;
  font-size: var(--gh-typography-section-size);
  font-weight: var(--gh-typography-weight-bold);
}

.gh-task-batch-errors {
  display: grid;
  gap: var(--gh-space-lg);
}

.gh-task-batch-recovery-layout {
  display: grid;
  grid-template-columns: minmax(220px, 0.7fr) minmax(0, 1.3fr);
  gap: var(--gh-space-lg);
}

.gh-task-batch-recovery-layout > * {
  min-width: 0;
}

.gh-task-batch-errors section {
  min-width: 0;
  padding: var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-ux-danger, var(--gh-color-danger));
  border-radius: var(--gh-radius-surface);
}

.gh-task-batch-errors h3 {
  margin: 0 0 var(--gh-space-sm);
  overflow-wrap: anywhere;
}

.gh-task-batch-review-card {
  display: grid;
  gap: var(--gh-space-sm);
  min-width: 0;
  padding-block: var(--gh-space-md);
  border-block-start: var(--gh-border-width) solid var(--gh-task-batch-border);
}

.gh-task-batch-review-card:first-of-type {
  border-block-start: 0;
}

.gh-task-batch-review-card h4,
.gh-task-batch-review-card p {
  margin: 0;
  overflow-wrap: anywhere;
}

.gh-task-batch-review-meta {
  color: var(--gh-task-batch-muted);
}

.gh-task-batch-errors ul {
  display: grid;
  gap: var(--gh-space-sm);
  margin: 0;
  padding-inline-start: var(--gh-space-xl);
}

.gh-task-batch-errors li,
.gh-task-batch-skipped,
.gh-task-batch-status {
  overflow-wrap: anywhere;
}

@media (max-width: 520px) {
  .gh-task-selection-actions > .gh-task-batch-entry {
    grid-column: 1 / -1;
  }

  .gh-task-batch-entry,
  .gh-task-batch-entry button {
    width: 100%;
  }

  .gh-task-batch-card {
    padding: var(--gh-space-lg);
    border-radius: var(--gh-radius-surface);
  }

  .gh-task-batch-totals {
    grid-template-columns: 1fr;
  }

  .gh-task-batch-recovery-layout {
    grid-template-columns: 1fr;
  }

  .gh-task-batch-actions,
  .gh-task-batch-actions button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .gh-task-batch-card,
  .gh-task-batch-card * {
    scroll-behavior: auto !important;
    transition-duration: var(--gh-motion-fast) !important;
    animation-duration: var(--gh-motion-fast) !important;
    animation-iteration-count: 1 !important;
  }
}

/* compiled source: config/ui_tokens/structure/ux-navigation-context.css | role: route-structure */
[data-task-report-open] {
  cursor: pointer;
}

[data-task-report-open]:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-ux-focus, var(--gh-color-focus));
  outline-offset: var(--gh-focus-offset);
}

[data-issue622-exact-target] {
  scroll-margin-block: var(--gh-container-card-min);
  outline: var(--gh-border-urgency-width) solid var(--gh-ux-focus, var(--gh-color-focus));
  outline-offset: var(--gh-focus-offset);
  background: color-mix(in srgb, var(--gh-ux-focus, var(--gh-color-action)) 10%, transparent);
}

[data-issue622-exact-target="task"] {
  border-inline-start: var(--gh-border-urgency-width) solid var(--gh-ux-focus, var(--gh-color-info));
}

[data-issue622-exact-target="event"] {
  box-shadow: var(--gh-elevation-none);
}

@media (forced-colors: active) {
  [data-issue622-exact-target] {
    outline-color: Highlight;
    background: Canvas;
  }
}

/* compiled source: config/ui_tokens/styles/tasks.css | role: route-contract */
/* Token API route contract: tasks and batch session. */
#uxTasksScreenRoot {
  --surface: var(--gh-color-surface);
  --ink: var(--gh-color-text);
  --muted: var(--gh-color-text-muted);
}

.gh-task-report-head select,
.gh-task-report-tabs button,
.gh-task-report-chips button,
.gh-task-report-state button,
.gh-task-selection-actions button {
  border-color: var(--gh-c-field-border);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-color-surface);
  color: var(--gh-color-text);
}

.gh-task-report-tabs button[aria-selected="true"],
.gh-task-report-chips button[aria-pressed="true"] {
  border-color: var(--gh-color-action);
  background: var(--gh-color-action-soft);
  color: var(--gh-color-action-strong);
}

.gh-task-report-group,
.gh-task-report-subgroup,
.gh-task-report-state,
.gh-task-report-empty,
.gh-task-report-warning,
.gh-task-selection-group,
.gh-task-selection-toolbar,
.gh-task-batch-card,
.gh-task-batch-fields,
.gh-task-batch-totals div {
  border-color: var(--gh-color-border);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-task-report-row {
  border: var(--gh-border-width) solid var(--gh-color-border);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
}

.gh-task-report-plant,
.gh-task-report-copy {
  overflow-wrap: break-word;
  word-break: normal;
}

.gh-task-selection-toolbar {
  border-color: var(--gh-color-border-strong);
}

.gh-task-batch-entry button,
.gh-task-batch-actions button {
  border-radius: var(--gh-radius-pill);
}

.gh-task-batch-actions [data-task-batch-confirm] {
  border-color: var(--gh-color-action);
  background: var(--gh-color-action);
  color: var(--gh-color-surface);
}

#uxTasksScreenRoot .gh-task-report-tabs button:focus-visible,
#uxTasksScreenRoot .gh-task-report-chips button:focus-visible,
#uxTasksScreenRoot .gh-task-report-head select:focus-visible,
#uxTasksScreenRoot .gh-task-report-state button:focus-visible,
#uxTasksScreenRoot .gh-task-selection-actions button:focus-visible,
#uxTasksScreenRoot .gh-task-selection-check:has(input:focus-visible) {
  outline: var(--gh-focus-width) solid var(--gh-color-focus);
  outline-offset: var(--gh-focus-offset);
}

/* compiled source: config/ui_tokens/structure/ux-wishlist.css | role: route-structure */
#uxWantsScreenRoot {

  color: var(--gh-wishlist-ink);
}

.gh-wishlist__state {
  padding: var(--gh-space-xl);
  border: var(--gh-border-width) solid var(--gh-wishlist-line);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-wishlist-surface);
}
.gh-wishlist__state h3 { margin: 0; }
.gh-wishlist__state p { margin: var(--gh-space-sm) 0 0; color: var(--gh-wishlist-muted); }
.gh-wishlist__state button {
  min-height: 44px;
  margin-block-start: var(--gh-space-lg);
  padding: var(--gh-space-sm) var(--gh-space-lg);
  border: var(--gh-border-width) solid var(--gh-wishlist-line);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-wishlist-surface-strong);
  color: var(--gh-wishlist-ink);
  font: inherit;
  font-weight: var(--gh-typography-weight-bold);
  cursor: pointer;
}

.gh-wishlist { min-width: 0; }
.gh-wishlist__head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: var(--gh-space-lg);
  margin-block-end: var(--gh-space-lg);
  border: 0;
  background: transparent;
}
.gh-wishlist__head span {
  color: var(--gh-wishlist-accent-strong);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  letter-spacing: 0;
  text-transform: uppercase;
}
.gh-wishlist__head h3 { margin: var(--gh-space-xs) 0 0; font-size: clamp(var(--gh-typography-section-size), 3vw, var(--gh-typography-screen-size)); }
.gh-wishlist__head p { margin: 0; color: var(--gh-wishlist-muted); font-weight: var(--gh-typography-weight-bold); }

.gh-wishlist__filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
  margin-block-end: var(--gh-space-lg);
}
.gh-wishlist__filters button,
.gh-wishlist-card__toggle,
.gh-wishlist-disclosure__planning button {
  min-height: 44px;
  border: var(--gh-border-width) solid var(--gh-wishlist-line);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-wishlist-surface-strong);
  color: var(--gh-wishlist-ink);
  font: inherit;
  font-weight: var(--gh-typography-weight-bold);
  cursor: pointer;
}
.gh-wishlist__filters button { padding: var(--gh-space-sm) var(--gh-space-lg); }
.gh-wishlist__filters button[aria-pressed="true"] {
  border-color: var(--gh-wishlist-accent);
  background: var(--gh-wishlist-accent-soft);
  color: var(--gh-wishlist-accent-strong);
}

.gh-wishlist__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
  align-items: start;
  gap: var(--gh-space-lg);
  min-width: 0;
}

.gh-wishlist-card {
  display: grid;
  min-width: 0;
  align-content: start;
  overflow: hidden;
  border: var(--gh-border-width) solid var(--gh-wishlist-line);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-wishlist-surface);
  box-shadow: var(--gh-elevation-none);
}
.gh-wishlist-card__top {
  display: grid;
  min-width: 0;
}
.gh-wishlist-card__media {
  position: relative;
  display: grid;
  min-width: 0;
  min-height: 240px;
  margin: 0;
  place-items: stretch;
  overflow: hidden;
  background: var(--gh-wishlist-photo);
}
.gh-wishlist-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.gh-wishlist-card__missing {
  display: grid;
  width: 100%;
  min-height: 100%;
  place-content: center;
  place-items: center;
  color: var(--gh-wishlist-accent-strong);
  text-align: center;
}
.gh-wishlist-card__missing span { font-size: var(--gh-typography-screen-size); line-height: var(--gh-typography-line-tight); }
.gh-wishlist-card__missing small { margin-block-start: var(--gh-space-sm); font-weight: var(--gh-typography-weight-bold); }

.gh-wishlist-card__title {
  position: absolute;
  z-index: var(--gh-layer-content);
  inset-inline: 0;
  inset-block-end: 0;
  padding: var(--gh-space-3xl) var(--gh-space-lg) var(--gh-space-lg);
  background: var(--gh-color-canvas);
  color: var(--gh-color-surface);
  pointer-events: none;
}
.gh-wishlist-card__title h3 {
  margin: 0;
  overflow-wrap: anywhere;
  font-size: clamp(var(--gh-typography-card-size), 1.4vw, var(--gh-typography-section-size));
  line-height: var(--gh-typography-line-tight);
  text-shadow: var(--gh-elevation-none);
}

.gh-wishlist-card__compact {
  display: flex;
  min-width: 0;
  padding: clamp(var(--gh-space-md), 2vw, var(--gh-space-lg));
  flex-direction: column;
  align-items: flex-start;
  gap: var(--gh-space-md);
}
.gh-wishlist-card__price { margin: 0; font-weight: var(--gh-typography-weight-bold); }
.gh-wishlist-card__status {
  max-width: 100%;
  margin: 0;
  padding: var(--gh-space-xs) var(--gh-space-sm);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-wishlist-accent-soft);
  color: var(--gh-wishlist-accent-strong);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  overflow-wrap: anywhere;
}
.gh-wishlist-card__status[data-wishlist-status="unknown"] {
  background: transparent;
  color: var(--gh-wishlist-muted);
  outline: var(--gh-border-width) solid var(--gh-wishlist-line);
}
.gh-wishlist-card__tags {
  display: flex;
  max-width: 100%;
  margin: auto 0 0;
  padding: 0;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
  list-style: none;
}
.gh-wishlist-card__tags li {
  max-width: 100%;
  padding: var(--gh-space-xs) var(--gh-space-sm);
  border-radius: var(--gh-radius-pill);
  background: var(--gh-color-action-soft);
  color: var(--gh-wishlist-muted);
  font-size: var(--gh-typography-meta-size);
  font-weight: var(--gh-typography-weight-bold);
  overflow-wrap: anywhere;
}

.gh-wishlist-card__toggle {
  justify-self: stretch;
  margin: var(--gh-space-md);
}
.gh-wishlist-disclosure {
  min-width: 0;
  padding: var(--gh-space-lg);
  border-block-start: var(--gh-border-width) solid var(--gh-wishlist-line);
}
.gh-wishlist-disclosure h4 { margin: 0 0 var(--gh-space-lg); font-size: var(--gh-typography-card-size); overflow-wrap: anywhere; }
.gh-wishlist-disclosure dl {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--gh-space-md) var(--gh-space-lg);
  margin: 0;
}
.gh-wishlist-disclosure dl > div { min-width: 0; }
.gh-wishlist-disclosure dt { color: var(--gh-wishlist-muted); font-size: var(--gh-typography-meta-size); font-weight: var(--gh-typography-weight-bold); }
.gh-wishlist-disclosure dd { margin: var(--gh-space-xs) 0 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.gh-wishlist-disclosure__source,
.gh-wishlist-disclosure__planning { margin: var(--gh-space-lg) 0 0; }
.gh-wishlist-disclosure__source a { color: var(--gh-wishlist-accent-strong); overflow-wrap: anywhere; }
.gh-wishlist-disclosure__planning {
  display: flex;
  align-items: stretch;
  flex-direction: column;
  gap: var(--gh-space-md);
  padding-block-start: var(--gh-space-lg);
  border-block-start: var(--gh-border-width) solid var(--gh-wishlist-line);
}
.gh-wishlist-disclosure__planning > p { margin: 0; color: var(--gh-wishlist-muted); overflow-wrap: anywhere; }
.gh-wishlist-disclosure__planning > p:first-child { flex: none; }
.gh-wishlist-disclosure__planning button {
  width: 100%;
  flex: 0 0 auto;
  padding: var(--gh-space-sm) var(--gh-space-lg);
  white-space: normal;
}
.gh-wishlist-disclosure__planning [data-variant="error"] { }

.gh-wishlist__empty {
  padding: var(--gh-space-xl);
  border: var(--gh-border-width) solid var(--gh-wishlist-line);
  border-radius: var(--gh-radius-surface);
  background: var(--gh-wishlist-surface);
}
.gh-wishlist__empty h3 { margin: 0; }
.gh-wishlist__empty p { margin: var(--gh-space-sm) 0 0; color: var(--gh-wishlist-muted); }

.gh-wishlist button:focus-visible,
.gh-wishlist a:focus-visible,
.gh-wishlist__state button:focus-visible {
  outline: var(--gh-border-urgency-width) solid var(--gh-wishlist-accent);
  outline-offset: var(--gh-focus-offset);
}

@media (max-width: 767px) {
  .gh-wishlist__head { align-items: flex-start; flex-direction: column; gap: var(--gh-space-sm); }
  .gh-wishlist-card__media { min-height: 220px; }
  .gh-wishlist-disclosure dl { grid-template-columns: minmax(0, 1fr); }
  .gh-wishlist-disclosure__planning { align-items: stretch; flex-direction: column; }
  .gh-wishlist-disclosure__planning button { width: 100%; }
}



@media (prefers-reduced-motion: reduce) {
  .gh-wishlist * { scroll-behavior: auto; }
}

/* compiled source: config/ui_tokens/styles/wishlist.css | role: route-contract */
/* Token API route contract: wants. */
#uxWantsScreenRoot {
  --gh-wishlist-surface: var(--gh-color-surface);
  --gh-wishlist-surface-strong: var(--gh-color-surface);
  --gh-wishlist-ink: var(--gh-color-text);
  --gh-wishlist-muted: var(--gh-color-text-muted);
  --gh-wishlist-line: var(--gh-color-border);
  --gh-wishlist-accent: var(--gh-color-action);
  --gh-wishlist-accent-strong: var(--gh-color-action-strong);
  --gh-wishlist-accent-soft: var(--gh-color-action-soft);
  --gh-wishlist-photo: var(--gh-color-action-soft);
}

.gh-wishlist__state,
.gh-wishlist-card,
.gh-wishlist__empty {
  border-color: var(--gh-color-border);
  border-radius: var(--gh-radius-control);
  background: var(--gh-color-surface);
  box-shadow: var(--gh-elevation-none);
}

.gh-wishlist-card__top {
  grid-template-columns: minmax(190px, 1fr) minmax(150px, .75fr);
}

.gh-wishlist-card__title h3,
.gh-wishlist-card__status,
.gh-wishlist-card__tags li,
.gh-wishlist-disclosure :where(h4, dd, a, p) {
  overflow-wrap: break-word;
  word-break: normal;
}

.gh-wishlist-disclosure__planning [data-variant="error"] {
  color: var(--gh-color-danger);
}

.gh-wants-card__note {
  display: -webkit-box;
  margin: 0;
  overflow: hidden;
  color: var(--gh-color-text-muted);
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.gh-wants-note-edit {
  justify-self: start;
  min-width: var(--gh-size-touch-target);
  min-height: var(--gh-size-touch-target);
  padding: var(--gh-space-xs);
  font-weight: var(--gh-typography-weight-bold);
  text-align: start;
}

.gh-wants-note-editor {
  display: grid;
  gap: var(--gh-space-sm);
}

.gh-wants-note-editor__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gh-space-sm);
}

.gh-wants-note-editor__actions button {
  min-height: var(--gh-size-touch-target);
}

.gh-wants-card__title {
  margin: 0;
  color: var(--gh-color-text);
  font-size: var(--gh-typography-card-size);
  font-weight: var(--gh-typography-weight-bold);
  line-height: var(--gh-typography-line-tight);
  overflow-wrap: break-word;
}

#uxWantsScreenRoot .gh-wishlist__grid {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--gh-c-wants-grid-column-min)), 1fr));
  align-items: stretch;
}

#uxWantsScreenRoot .gh-wishlist-card__media {
  height: var(--gh-c-wants-card-cover-height);
  min-height: var(--gh-c-wants-card-cover-height);
}

#uxWantsScreenRoot .gh-wishlist-card__media img {
  min-width: 0;
  min-height: 0;
}

#uxWantsScreenRoot .gh-wishlist-card__media .gh-wishlist-card__status {
  position: absolute;
  z-index: var(--gh-layer-content);
  inset-block-end: var(--gh-space-sm);
  inset-inline-start: var(--gh-space-sm);
}

#uxWantsScreenRoot .gh-wishlist-card[data-wants-drop-enabled="true"] {
  position: relative;
}

.gh-wants-card__drop-status {
  position: absolute;
  z-index: var(--gh-layer-overlay);
  inset: var(--gh-space-xs);
  display: none;
  padding: var(--gh-space-lg);
  place-items: center;
  border: var(--gh-border-width) solid var(--gh-color-action);
  border-radius: var(--gh-radius-control);
  background: var(--gh-wishlist-accent-soft);
  color: var(--gh-wishlist-accent-strong);
  font-size: var(--gh-typography-card-size);
  font-weight: var(--gh-typography-weight-bold);
  text-align: center;
  pointer-events: none;
}

#uxWantsScreenRoot .gh-wishlist-card[data-gh-state="selected"] .gh-wants-card__drop-status,
#uxWantsScreenRoot .gh-wishlist-card[data-gh-state="loading"] .gh-wants-card__drop-status {
  display: grid;
}

/* compiled source: config/ui_tokens/styles/responsive.css | role: responsive-contract */
/* Token API shared responsive and reduced-motion contract. */
@media (max-width: 767px) {
  .gh-ux-route-header h2 {
    font-size: var(--gh-typography-screen-size);
    line-height: var(--gh-typography-screen-line);
  }

  .gh-ux-shell .gh-ux-main {
    padding: var(--gh-space-lg) var(--gh-space-md) var(--gh-space-xl);
  }

  .gh-ux-shell-loading,
  .gh-overview-metrics article,
  .gh-wishlist-card,
  .gh-task-report-group,
  .gh-events__group {
    border-radius: var(--gh-radius-control);
  }

  .gh-wishlist-card__top {
    grid-template-columns: minmax(0, 1fr);
  }

  .gh-wishlist-card__compact {
    padding: var(--gh-space-lg);
  }

  .gh-plant-detail__sheet {
    border-radius: var(--gh-radius-surface) var(--gh-radius-surface) 0 0;
  }

  .gh-plant-detail__top {
    grid-template-columns: minmax(0, 1fr);
  }

  .care-plan-v1-dialog,
  .task-actions-v2-dialog,
  .new-plant-v1-dialog {
    border-radius: var(--gh-radius-surface) var(--gh-radius-surface) 0 0;
  }

  .gh-ux-shell .gh-sheet {
    border-radius: var(--gh-radius-surface) var(--gh-radius-surface) 0 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .gh-ux-shell *,
  .gh-ux-shell *::before,
  .gh-ux-shell *::after,
  .care-plan-v1-dialog *,
  .task-actions-v2-dialog *,
  .new-plant-v1-dialog * {
    scroll-behavior: auto !important;
    animation: none !important;
    transition: none !important;
  }
}
