/* ================================================================
   shelter-kz – Design System
   ================================================================ */

:root {
  /* AV DS 4 token contract with Qaz.pet brand values. */
  --background: 36 33% 97%;
  --foreground: 28 18% 15%;
  --card: 0 0% 100%;
  --card-foreground: 28 18% 15%;
  --border-token: 32 18% 87%;
  --muted: 32 22% 94%;
  --muted-foreground: 28 10% 34%;
  --primary: 36 86% 31%;
  --primary-foreground: 0 0% 100%;
  --secondary: 34 22% 92%;
  --secondary-foreground: 28 18% 20%;
  --destructive: 0 67% 47%;
  --destructive-foreground: 0 0% 100%;
  --ring: 36 86% 31%;
  --font-sans: "IBM Plex Sans", "Inter", "Onest", "Helvetica Neue", Arial, sans-serif;
  --font-display: "IBM Plex Sans", "Inter", "Onest", "Helvetica Neue", Arial, sans-serif;
  --font-mono: "IBM Plex Mono", "JetBrains Mono", Menlo, monospace;
  --radius: 0.4375rem;
  --shadow-sm: 0 1px 3px hsl(28 18% 15% / 0.06), 0 1px 2px hsl(28 18% 15% / 0.04);
  --shadow-md: 0 4px 8px hsl(28 18% 15% / 0.07), 0 2px 4px hsl(28 18% 15% / 0.04);
  --shadow-lg: 0 8px 16px hsl(28 18% 15% / 0.09), 0 4px 8px hsl(28 18% 15% / 0.04);

  /* Compatibility aliases for the existing public surface. */
  --bg: hsl(var(--background));
  --surface: hsl(var(--card));
  --text: hsl(var(--foreground));
  --text-secondary: hsl(var(--muted-foreground));
  --text-muted: hsl(28 8% 40%);
  --accent: hsl(var(--primary));
  --accent-hover: hsl(36 88% 25%);
  --accent-light: hsl(39 80% 94%);
  --danger: hsl(var(--destructive));
  --danger-light: hsl(0 70% 96%);
  --warning: hsl(30 88% 29%);
  --warning-light: hsl(40 88% 95%);
  --success: hsl(148 50% 29%);
  --success-light: hsl(148 45% 95%);
  --border: hsl(var(--border-token));
  --border-light: hsl(32 18% 92%);
  --radius-sm: calc(var(--radius) - 1px);
  --radius-lg: calc(var(--radius) + 4px);
  --transition: 0.2s ease;
  --header-h: 56px;
  --bottom-nav-h: 64px;
  --tablet-rail-w: 88px;
}

[data-theme="dark"] {
  --background: 28 14% 8%;
  --foreground: 32 18% 91%;
  --card: 28 11% 12%;
  --card-foreground: 32 18% 91%;
  --border-token: 28 10% 20%;
  --muted: 28 9% 16%;
  --muted-foreground: 30 10% 68%;
  --primary: 39 82% 61%;
  --primary-foreground: 28 25% 10%;
  --secondary: 28 9% 18%;
  --secondary-foreground: 32 18% 91%;
  --destructive: 0 75% 64%;
  --destructive-foreground: 28 25% 8%;
  --ring: 39 82% 61%;
  --text-muted: hsl(30 9% 58%);
  --accent-hover: hsl(39 80% 56%);
  --accent-light: hsl(39 46% 16%);
  --danger-light: hsl(0 42% 15%);
  --warning: hsl(36 88% 60%);
  --warning-light: hsl(35 44% 13%);
  --success: hsl(148 48% 58%);
  --success-light: hsl(148 45% 12%);
  --border-light: hsl(28 9% 16%);
}

/* ── Reset & Base ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-sans);
  font-size: 15px;
  line-height: 1.6;
  color: var(--text);
  background: var(--bg);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  -webkit-font-smoothing: antialiased;
}
[hidden] { display: none !important; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
input, select, textarea { font-family: inherit; }
main { flex: 1; }

.ui-icon {
  display: inline-block;
  flex: 0 0 auto;
  vertical-align: -0.15em;
}

.section-title--with-icon,
.mobile-nav-link {
  display: flex;
  align-items: center;
  gap: 7px;
}

/* ── Container ── */
.container {
  width: 100%;
  max-width: 1200px;
  margin-inline: auto;
  padding-inline: 20px;
}

/* ── Header ── */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--surface);
  border-bottom: 1px solid var(--border-light);
  height: var(--header-h);
}
.header-inner {
  display: flex;
  align-items: center;
  gap: 24px;
  height: 100%;
}
.logo {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.logo-text {
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--text);
  letter-spacing: 0;
}
.logo-kz { color: var(--accent); }

.main-nav {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: 1;
}
.nav-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: var(--radius-sm);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--text-secondary);
  transition: background var(--transition), color var(--transition);
  white-space: nowrap;
}
.nav-link:hover, .nav-link.active {
  background: var(--border-light);
  color: var(--text);
}
.nav-link--urgent { color: var(--danger); font-weight: 600; }
.nav-link--urgent:hover, .nav-link--urgent.active {
  background: var(--danger-light);
  color: var(--danger);
}

.header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}
.lang-switch { display: flex; gap: 4px; }
.lang-btn {
  padding: 4px 8px;
  border-radius: var(--radius-sm);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--text-muted);
  transition: var(--transition);
}
.lang-btn.active {
  background: var(--accent);
  color: hsl(var(--primary-foreground));
}
.lang-btn:hover:not(.active) {
  background: var(--border-light);
}

.theme-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  transition: background var(--transition), color var(--transition);
}
.theme-toggle:hover { background: var(--border-light); color: var(--text); }
[data-theme="light"] .icon-moon { display: none; }
[data-theme="dark"] .icon-sun { display: none; }

.mobile-menu-btn {
  display: none;
  flex-direction: column;
  gap: 5px;
  width: 36px; height: 36px;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  color: var(--text);
}
.mobile-menu-btn span {
  display: block;
  width: 20px; height: 2px;
  background: currentColor;
  border-radius: 2px;
  transition: transform var(--transition), opacity var(--transition);
}
.mobile-menu-btn.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.mobile-menu-btn.is-open span:nth-child(2) { opacity: 0; }
.mobile-menu-btn.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.mobile-nav {
  display: none;
  flex-direction: column;
  background: var(--surface);
  border-top: 1px solid var(--border);
  padding: 12px 0;
}
.mobile-nav.is-open { display: flex; }
.mobile-nav-link {
  padding: 12px 20px;
  font-size: 1rem;
  font-weight: 500;
  color: var(--text-secondary);
  transition: background var(--transition);
}
.mobile-nav-link:hover { background: var(--border-light); color: var(--text); }
.mobile-nav-link.active {
  background: var(--accent-light);
  color: var(--accent-dark);
}
.mobile-nav-link--urgent { color: var(--danger); }

/* ── Footer ── */
.site-footer {
  border-top: 1px solid var(--border);
  padding: 32px 0;
  margin-top: 64px;
}
.footer-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  text-align: center;
}
.footer-logo {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
  font-size: 1rem;
}
.footer-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  margin-bottom: 12px;
}
.footer-links {
  display: flex;
  gap: 20px;
  flex-wrap: wrap;
}
.footer-links a {
  color: var(--text-secondary);
  font-size: 0.85rem;
  transition: color var(--transition);
}
.footer-links a:hover { color: var(--accent); }
.footer-desc { color: var(--text-secondary); font-size: 0.875rem; }
.footer-copy { color: var(--text-muted); font-size: 0.8rem; }
@media (max-width: 640px) {
  .footer-top { flex-direction: column; gap: 12px; }
  .footer-links { justify-content: center; }
}

/* ── Shared utilities / AV DS alignment helpers ── */
.btn--block {
  width: 100%;
}

.form-section-title--spaced {
  margin-top: 28px;
}

.stack-gap-sm {
  margin-top: 8px;
}

.stack-gap-md {
  margin-top: 12px;
}

.brand-suffix {
  opacity: 0.5;
}

.brand-suffix--strong {
  opacity: 0.6;
}

.chip-icon-inline {
  margin-right: 3px;
}

.status-page {
  text-align: center;
  padding: 80px 20px;
}

.status-page-code {
  font-size: 72px;
  margin-bottom: 16px;
}

.status-page-code--accent {
  color: var(--accent);
}

.status-page-code--danger {
  color: var(--danger);
}

.status-page-title {
  margin-bottom: 12px;
}

.status-page-copy {
  color: var(--text-secondary);
  margin-bottom: 32px;
}

.status-page-secondary {
  margin-left: 12px;
}

.empty-state-icon {
  font-size: 3rem;
  margin-bottom: 12px;
}

.empty-state-icon--lg {
  font-size: 3.5rem;
  margin-bottom: 16px;
}

.empty-state-icon--xl {
  font-size: 4rem;
}

.empty-state-icon--loose {
  margin-bottom: 1rem;
}

.empty-state--panel {
  padding: 40px 0;
}

.avds-page-band {
  padding: 28px 0 20px;
}

.avds-shell {
  background: var(--surface);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}

.avds-hero {
  padding: 28px;
  display: grid;
  gap: 24px;
}

.avds-hero-copy {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.avds-kicker {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.avds-title {
  font-size: 3rem;
  line-height: 1.1;
  letter-spacing: 0;
}

.avds-copy {
  max-width: 62ch;
  color: var(--text-secondary);
  font-size: 1rem;
  line-height: 1.7;
}

.avds-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.avds-inline-note {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: fit-content;
  max-width: 100%;
  padding: 10px 14px;
  border-radius: 999px;
  background: var(--accent-light);
  color: var(--text);
  font-size: 0.9rem;
  font-weight: 500;
}

.avds-inline-note--danger {
  background: var(--danger-light);
  color: var(--danger);
}

@media (max-width: 640px) {
  .avds-inline-note {
    align-items: flex-start;
    width: 100%;
    border-radius: var(--radius-sm);
  }

  .avds-inline-note > span:last-child {
    min-width: 0;
    line-height: 1.45;
  }
}

.avds-metric-strip {
  display: grid;
  gap: 1px;
  background: var(--border-light);
  border-radius: var(--radius);
  overflow: hidden;
}

.avds-metric {
  background: var(--bg);
  padding: 18px;
  min-width: 0;
}

.avds-metric-value {
  display: block;
  font-size: 1.5rem;
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: 0;
  color: var(--text);
}

.avds-metric-value--danger {
  color: var(--danger);
}

.avds-metric-value--accent {
  color: var(--accent);
}

.avds-metric-label {
  display: block;
  margin-top: 6px;
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.45;
}

.avds-utility-grid {
  display: grid;
  gap: 16px;
  margin-top: 18px;
}

.avds-utility-card {
  background: var(--surface);
  border: 1px solid var(--border-light);
  border-radius: var(--radius);
  padding: 18px;
  box-shadow: var(--shadow-sm);
}

.avds-utility-card h2,
.avds-utility-card h3 {
  font-size: 1rem;
  line-height: 1.35;
  margin-bottom: 8px;
}

.avds-utility-card p {
  color: var(--text-secondary);
  font-size: 0.9rem;
  line-height: 1.6;
  margin-bottom: 14px;
}

.avds-utility-card .btn {
  margin-top: auto;
}

.avds-utility-card--soft {
  background: color-mix(in srgb, var(--surface) 74%, var(--accent-light));
}

.avds-section-shell {
  padding: 18px;
}

.section-subtitle--catalog {
  margin-top: -8px;
  margin-bottom: 18px;
  max-width: 720px;
}

.tools-workflow {
  margin-top: 18px;
}

.tools-workflow-grid {
  display: grid;
  gap: 12px;
}

.tools-workflow-step {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: flex-start;
  padding: 14px;
  border: 1px solid var(--border-light);
  border-radius: var(--radius);
  background: color-mix(in srgb, var(--surface) 88%, var(--accent-light));
}

.tools-workflow-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 999px;
  background: var(--accent);
  color: hsl(var(--primary-foreground));
  font-weight: 800;
  font-size: 0.8rem;
}

.tools-workflow-step h3 {
  font-size: 0.98rem;
  line-height: 1.35;
  margin: 0;
  overflow-wrap: anywhere;
}

.tools-workflow-step p {
  color: var(--text-secondary);
  font-size: 0.9rem;
  line-height: 1.55;
}

.tools-vision-panel {
  display: grid;
  grid-template-columns: minmax(0, 0.78fr) minmax(0, 1.22fr);
  gap: 18px;
  align-items: stretch;
  margin-top: 22px;
  padding: 22px;
  border: 1px solid var(--border-light);
  border-radius: var(--radius-lg);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--surface) 92%, var(--accent-light)), var(--surface)),
    var(--surface);
  box-shadow: var(--shadow-sm);
}

.tools-vision-copy {
  align-self: center;
  min-width: 0;
}

.tools-vision-flow {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.tools-vision-step {
  position: relative;
  min-width: 0;
  padding: 16px;
  border: 1px solid color-mix(in srgb, var(--border) 62%, transparent);
  border-radius: var(--radius);
  background: color-mix(in srgb, var(--surface) 86%, white);
}

.tools-vision-step:not(:last-child)::after {
  content: "";
  position: absolute;
  top: 34px;
  right: -10px;
  width: 10px;
  height: 1px;
  background: var(--border);
}

.tools-vision-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  margin-bottom: 18px;
  border-radius: 12px;
  color: var(--accent);
  background: color-mix(in srgb, var(--accent-light) 72%, var(--surface));
}

.tools-vision-step strong {
  display: block;
  margin-bottom: 7px;
  color: var(--text);
  font-size: 0.98rem;
  line-height: 1.35;
}

.tools-vision-step span:last-child {
  display: block;
  color: var(--text-secondary);
  font-size: 0.88rem;
  line-height: 1.55;
}

.tools-source-panel {
  margin-top: 18px;
  padding-top: 22px;
  border-top: 1px solid var(--border-light);
}

.tools-source-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 16px;
}

.tools-source-card {
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--border-light);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow-xs);
}

.tools-source-label {
  display: inline-flex;
  margin-bottom: 14px;
  padding: 5px 9px;
  border-radius: 999px;
  color: var(--accent);
  background: var(--accent-light);
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1;
}

.tools-source-card h3 {
  margin-bottom: 8px;
  color: var(--text);
  font-size: 1rem;
  line-height: 1.35;
}

.tools-source-card p {
  color: var(--text-secondary);
  font-size: 0.9rem;
  line-height: 1.58;
}

.tools-lab-stage {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, 0.85fr);
  gap: 18px;
  align-items: center;
  margin-top: 22px;
  padding: 22px;
  border: 1px solid color-mix(in srgb, var(--accent) 18%, var(--border-light));
  border-radius: var(--radius-lg);
  background: color-mix(in srgb, var(--bg) 80%, var(--surface));
  box-shadow: var(--shadow-sm);
}

.tools-lab-board {
  display: grid;
  grid-template-columns: minmax(126px, 0.72fr) minmax(88px, 0.48fr) minmax(160px, 1fr);
  gap: 12px;
  align-items: stretch;
  min-width: 0;
}

.tools-lab-photo,
.tools-lab-vector,
.tools-lab-results {
  min-height: 156px;
  border-radius: var(--radius);
  border: 1px solid var(--border-light);
  background: var(--surface);
}

.tools-lab-photo {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  color: var(--accent);
  background:
    radial-gradient(circle at 50% 38%, color-mix(in srgb, var(--accent-light) 80%, transparent) 0 28%, transparent 29%),
    linear-gradient(135deg, color-mix(in srgb, var(--surface) 78%, var(--accent-light)), var(--surface));
}

.tools-lab-photo span {
  color: var(--text-secondary);
  font-size: 0.78rem;
  font-weight: 700;
}

.tools-lab-vector {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 9px;
  padding: 16px;
}

.tools-lab-vector span {
  display: block;
  height: 8px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent) 24%, var(--border)));
}

.tools-lab-vector span:nth-child(2) { width: 78%; opacity: 0.86; }
.tools-lab-vector span:nth-child(3) { width: 62%; opacity: 0.74; }
.tools-lab-vector span:nth-child(4) { width: 88%; opacity: 0.64; }
.tools-lab-vector span:nth-child(5) { width: 52%; opacity: 0.55; }

.tools-lab-results {
  display: grid;
  gap: 8px;
  padding: 12px;
}

.tools-lab-results div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 10px;
  background: color-mix(in srgb, var(--surface) 78%, var(--accent-light));
}

.tools-lab-results strong {
  color: var(--text);
  font-size: 1.05rem;
}

.tools-lab-results span {
  color: var(--text-secondary);
  font-size: 0.78rem;
  font-weight: 700;
}

.tools-lab-copy {
  min-width: 0;
}

.tools-lab-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 18px;
}

@media (max-width: 900px) {
  .tools-vision-panel {
    grid-template-columns: 1fr;
    padding: 18px;
  }

  .tools-vision-flow,
  .tools-source-grid {
    grid-template-columns: 1fr;
  }

  .tools-vision-step:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: -10px;
    left: 34px;
    width: 1px;
    height: 10px;
  }

  .tools-lab-stage {
    grid-template-columns: 1fr;
    padding: 18px;
  }

  .tools-lab-board {
    grid-template-columns: 1fr;
  }

  .tools-lab-photo,
  .tools-lab-vector,
  .tools-lab-results {
    min-height: auto;
  }
}

.tool-data-line {
  color: var(--text-secondary);
  font-size: 0.9rem;
  margin: 12px 0 0;
}

.tool-data-line strong {
  color: var(--accent);
  font-weight: 800;
}

.partner-data-line {
  color: var(--text-secondary);
  font-size: 0.9rem;
  margin: 12px 0 0;
}

.partner-data-line strong {
  color: var(--accent);
  font-weight: 800;
}

@media (min-width: 900px) {
  .avds-hero {
    grid-template-columns: minmax(0, 1.3fr) minmax(320px, 0.8fr);
    align-items: start;
  }

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

  .avds-utility-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .tools-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    max-width: none;
  }

  .tools-workflow-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 639px) {
  .avds-hero {
    padding: 20px;
  }

  .avds-title {
    font-size: 1.7rem;
  }

  .avds-actions {
    flex-direction: column;
  }

  .avds-actions .btn {
    width: 100%;
  }
}

/* ── Buttons ── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 20px;
  border-radius: var(--radius-sm);
  font-size: 0.9rem;
  font-weight: 600;
  line-height: 1.2;
  cursor: pointer;
  transition: background var(--transition), color var(--transition), box-shadow var(--transition), transform 0.1s;
  white-space: nowrap;
  border: 2px solid transparent;
}
.btn:active { transform: scale(0.98); }

.btn--primary {
  background: var(--accent);
  color: hsl(var(--primary-foreground));
  border-color: var(--accent);
}
.btn--primary:hover { background: var(--accent-hover); border-color: var(--accent-hover); box-shadow: var(--shadow-md); }

.btn--outline {
  background: transparent;
  color: var(--accent);
  border-color: var(--accent);
}
.btn--outline:hover { background: var(--accent-light); }

.btn--ghost {
  background: var(--border-light);
  color: var(--text-secondary);
  border-color: transparent;
}
.btn--ghost:hover { background: var(--border); color: var(--text); }

.btn--danger {
  background: var(--danger);
  color: white;
  border-color: var(--danger);
}
.btn--danger:hover { background: #b91c1c; }

.btn--sm { padding: 7px 14px; font-size: 0.8rem; }
.btn--lg { padding: 13px 28px; font-size: 1rem; }
.btn:disabled { opacity: 0.6; cursor: not-allowed; }

/* ── Badges ── */
.badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 8px;
  border-radius: 100px;
  font-size: 0.75rem;
  font-weight: 600;
}
.badge--success { background: #F0FAF4; color: #2D7A50; }
.badge--warning { background: var(--warning-light); color: var(--warning); }
.badge--info { background: #eff6ff; color: #2563eb; }
.badge--danger { background: var(--danger-light); color: var(--danger); }

/* ── Timer Badge ── */
.timer-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: var(--radius-sm);
  font-weight: 700;
  font-size: 0.9rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.01em;
}
.timer-green { background: var(--success-light); color: var(--success); }
.timer-orange { background: var(--warning-light); color: var(--warning); }
.timer-red { background: var(--danger-light); color: var(--danger); animation: pulse 1s ease-in-out infinite; }
.timer-badge--lg { font-size: 1rem; padding: 8px 16px; }
.timer-badge--xl { font-size: 1.1rem; padding: 10px 18px; }
.timer-badge--spaced { margin-top: 0.75rem; }

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.6; }
}

/* ── Pulse dot ── */
.pulse-dot {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--danger);
  animation: pulse-dot 1.5s ease-in-out infinite;
}
.pulse-dot--lg { width: 12px; height: 12px; }
.pulse-dot--xl { width: 16px; height: 16px; }
@keyframes pulse-dot {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.4); opacity: 0.6; }
}

/* ── Chips ── */
.chip {
  display: inline-flex;
  align-items: center;
  padding: 5px 12px;
  border-radius: 100px;
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--text-secondary);
  background: var(--surface);
  border: 1.5px solid var(--border);
  cursor: pointer;
  transition: all var(--transition);
  white-space: nowrap;
}
.chip:hover { border-color: var(--accent); color: var(--accent); }
.chip--active { background: var(--accent); color: hsl(var(--primary-foreground)); border-color: var(--accent); font-weight: 600; }
.chip--danger.chip--active { background: var(--danger); border-color: var(--danger); color: white; }

/* ── Hero Banner ── */
.hero-banner {
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  padding: 20px 0;
}
.hero-stats {
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
}
.hero-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.hero-stat-number {
  font-size: 2rem;
  font-weight: 800;
  color: var(--accent);
  line-height: 1.1;
}
.hero-stat-number--success { color: var(--success); }
.hero-stat-number--danger { color: var(--danger); }
.hero-stat-label { font-size: 0.75rem; color: var(--text-muted); font-weight: 500; text-align: center; }
.hero-stat-div { width: 1px; height: 40px; background: var(--border); }
.hero-urgent-banner {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 14px;
  padding: 10px 16px;
  background: var(--danger-light);
  border-radius: var(--radius-sm);
  border: 1px solid #fca5a5;
  font-size: 0.875rem;
  color: var(--danger);
  flex-wrap: wrap;
}
.hero-urgent-link { color: var(--danger); font-weight: 700; text-decoration: underline; }

/* ── Filters ── */
.filters-section {
  padding: 16px 0;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: var(--header-h);
  z-index: 50;
}
.filters-toggle { display: none; }
.filters-body { display: block; }
.filters-form {
  display: flex;
  align-items: flex-end;
  gap: 24px;
  flex-wrap: wrap;
}
.filter-group { display: flex; flex-direction: column; gap: 6px; }
.filter-label { font-size: 0.75rem; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; }
.filter-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.filter-select {
  padding: 6px 12px;
  border-radius: var(--radius-sm);
  border: 1.5px solid var(--border);
  background: var(--surface);
  color: var(--text);
  font-size: 0.875rem;
  cursor: pointer;
  min-width: 140px;
}
.filter-select:focus { outline: none; border-color: var(--accent); }

/* ── Section Header ── */
.section-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 24px;
  padding-top: 32px;
}
.section-title { font-size: 1.5rem; font-weight: 700; }
.section-count { font-size: 0.875rem; color: var(--text-muted); font-weight: 500; }

.page-header { padding: 40px 0 24px; }
.page-title { font-size: 2rem; font-weight: 800; margin-bottom: 8px; }
.page-subtitle { color: var(--text-secondary); font-size: 1rem; margin-bottom: 16px; }

/* ── Animals Grid ── */
.animals-section { padding-bottom: 48px; }
.animals-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.animals-grid--4 { grid-template-columns: repeat(4, 1fr); }

/* ── Animal Card ── */
.animal-card {
  background: var(--surface);
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  overflow: hidden;
  transition: box-shadow var(--transition), transform var(--transition), border-color var(--transition);
  display: flex;
  flex-direction: column;
}
.animal-card:hover { box-shadow: 0 4px 16px rgba(232,168,56,0.18); transform: translateY(-2px); border-color: rgba(232,168,56,0.4); }
.animal-card--urgent { border-color: var(--danger); }
.animal-card--urgent:hover { box-shadow: 0 4px 16px rgba(220, 38, 38, 0.25); }
.animal-card-link { display: flex; flex-direction: column; flex: 1; }

.animal-photo {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--border-light);
}
.animal-photo img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center 30%;
  transition: transform 0.4s ease;
}
.animal-card:hover .animal-photo img { transform: scale(1.04); }
.animal-photo-placeholder {
  width: 100%; height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--border-light);
}
.animal-photo-placeholder--sm { min-height: 160px; }

.urgent-badge {
  position: absolute;
  top: 10px; left: 10px;
  background: var(--danger);
  color: white;
  padding: 3px 8px;
  border-radius: var(--radius-sm);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.urgent-badge--big { font-size: 0.8rem; padding: 5px 12px; }
.reserved-badge {
  position: absolute;
  top: 10px; right: 10px;
  background: var(--warning);
  color: white;
  padding: 3px 8px;
  border-radius: var(--radius-sm);
  font-size: 0.7rem;
  font-weight: 700;
}

.animal-card-body {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1;
}
.animal-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.animal-name { font-size: 1.05rem; font-weight: 700; }
.animal-species-badge { font-size: 1.2rem; }
.animal-meta { font-size: 0.8rem; color: var(--text-muted); }
.animal-badges { display: flex; gap: 4px; flex-wrap: wrap; }
.animal-shelter {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 0.75rem;
  color: var(--text-muted);
  margin-top: auto;
}
.animal-shelter--spaced { margin-top: 12px; }
.animal-adopt-btn { margin: 0 16px 16px; }

/* ── Pagination ── */
.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 16px;
  padding-top: 32px;
}
.pagination-btn {
  padding: 8px 18px;
  border-radius: var(--radius-sm);
  border: 1.5px solid var(--border);
  font-weight: 600;
  font-size: 0.875rem;
  color: var(--text);
  background: var(--surface);
  transition: all var(--transition);
}
.pagination-btn:hover { border-color: var(--accent); color: var(--accent); }
.pagination-info { color: var(--text-muted); font-size: 0.875rem; }

/* ── Empty State ── */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 64px 20px;
  text-align: center;
  color: var(--text-secondary);
}
.empty-state :is(h2, h3) { font-size: 1.25rem; font-weight: 700; color: var(--text); }
.empty-state a { color: var(--accent); font-weight: 600; }

/* ── Breadcrumb ── */
.breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 20px 0 0;
  font-size: 0.85rem;
  color: var(--text-muted);
}
.breadcrumb a { color: var(--text-muted); }
.breadcrumb a:hover { color: var(--accent); }
.breadcrumb span:not([aria-current]) { opacity: 0.5; }

/* ── Animal Detail Page ── */
.animal-page { padding-bottom: 64px; }
.animal-detail {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  padding-top: 24px;
}

.animal-gallery { position: sticky; top: calc(var(--header-h) + 20px); align-self: start; }
.gallery-main {
  position: relative;
  border-radius: var(--radius);
  overflow: hidden;
  aspect-ratio: 4/3;
  background: var(--border-light);
}
.gallery-main-img { width: 100%; height: 100%; object-fit: cover; }
.gallery-placeholder {
  width: 100%; height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.gallery-urgent-badge {
  position: absolute;
  bottom: 16px; left: 16px;
  background: var(--danger);
  color: white;
  padding: 6px 14px;
  border-radius: var(--radius-sm);
  font-weight: 800;
  font-size: 0.85rem;
  letter-spacing: 0.06em;
}
.gallery-thumbs {
  display: flex;
  gap: 8px;
  margin-top: 12px;
  overflow-x: auto;
}
.gallery-thumb-button {
  width: 72px;
  height: 72px;
  padding: 0;
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  flex: 0 0 72px;
}
.gallery-thumb {
  width: 100%; height: 100%;
  border-radius: var(--radius-sm);
  object-fit: cover;
  cursor: pointer;
  border: 2px solid transparent;
  flex-shrink: 0;
  opacity: 0.7;
  transition: opacity var(--transition), border-color var(--transition);
}
.gallery-thumb:hover, .gallery-thumb--active { opacity: 1; border-color: var(--accent); }

.animal-info { display: flex; flex-direction: column; gap: 20px; }
.animal-info-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.animal-detail-name { font-size: 2rem; font-weight: 800; }
.animal-detail-meta { color: var(--text-secondary); margin-top: 4px; }
.animal-badges--lg { display: flex; gap: 6px; flex-wrap: wrap; }
.animal-section { border-top: 1px solid var(--border-light); padding-top: 16px; }
.animal-section-title { font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-muted); margin-bottom: 8px; }
.animal-character, .animal-description, .animal-health-notes { color: var(--text-secondary); line-height: 1.7; }
.animal-shelter-info a { color: var(--accent); }
.animal-intake-date { font-size: 0.8rem; color: var(--text-muted); }
.animal-cta { display: flex; gap: 10px; flex-wrap: wrap; padding-top: 8px; }
.animal-cta--top { padding-top: 0; }
.animal-cta--spaced { margin-top: 20px; }
.animal-action-card {
  margin-top: 18px;
  padding: 18px 20px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.animal-quick-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 14px;
}
.animal-quick-meta-item {
  padding-top: 12px;
  border-top: 1px solid var(--border-light);
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.animal-quick-meta-label {
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.similar-section { margin-top: 48px; }

/* ── Swipe Page ── */
.swipe-page { min-height: calc(100vh - var(--header-h)); }
.swipe-header {
  text-align: center;
  padding: 32px 0 16px;
}
.swipe-title { font-size: 1.75rem; font-weight: 800; margin-bottom: 8px; }
.swipe-subtitle { color: var(--text-secondary); margin-bottom: 16px; }
.swipe-filter-chips { display: flex; justify-content: center; gap: 8px; }

.swipe-arena {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 20px 0 40px;
  min-height: 500px;
  position: relative;
}
.swipe-stack {
  position: relative;
  width: 380px;
  height: 540px;
}
.swipe-card {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background: var(--surface);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
  cursor: grab;
  user-select: none;
  transition: box-shadow var(--transition);
  display: flex;
  flex-direction: column;
}
.swipe-card:active { cursor: grabbing; }
.swipe-card.is-gone { pointer-events: none; }

.swipe-card-photo {
  position: relative;
  flex: 1;
  overflow: hidden;
  background: var(--border-light);
}
.swipe-card-photo img { width: 100%; height: 100%; object-fit: cover; }
.swipe-card-placeholder {
  width: 100%; height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.swipe-card-emoji { font-size: 5rem; }
.swipe-urgent-ribbon {
  position: absolute;
  top: 0; left: 0; right: 0;
  background: var(--danger);
  color: white;
  text-align: center;
  padding: 4px;
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.08em;
}
.swipe-card-info {
  padding: 16px;
  background: var(--surface);
}
.swipe-card-main { margin-bottom: 10px; }
.swipe-card-name { font-size: 1.3rem; font-weight: 800; }
.swipe-card-meta { color: var(--text-secondary); font-size: 0.875rem; margin-bottom: 4px; }
.swipe-card-character { color: var(--text-muted); font-size: 0.8rem; line-height: 1.5; margin-bottom: 8px; }
.swipe-card-badges { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 8px; }
.swipe-card-shelter {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 0.75rem;
  color: var(--text-muted);
  margin-top: 6px;
}

.swipe-controls {
  display: flex;
  align-items: center;
  gap: 20px;
  margin-top: 24px;
}
.swipe-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  transition: all var(--transition);
}
.swipe-btn--skip {
  width: 60px; height: 60px;
  background: var(--surface);
  color: var(--danger);
  box-shadow: var(--shadow-md);
  border: 2px solid var(--border);
}
.swipe-btn--skip:hover { background: var(--danger-light); border-color: var(--danger); transform: scale(1.05); }
.swipe-btn--like {
  width: 72px; height: 72px;
  background: var(--accent);
  color: white;
  box-shadow: var(--shadow-lg);
}
.swipe-btn--like:hover { background: var(--accent-hover); transform: scale(1.08); }
.swipe-btn--reset {
  width: 44px; height: 44px;
  background: var(--surface);
  color: var(--text-muted);
  box-shadow: var(--shadow-sm);
  border: 1.5px solid var(--border);
}
.swipe-btn--reset:hover { color: var(--accent); border-color: var(--accent); }
.swipe-counter {
  margin-top: 16px;
  font-size: 0.8rem;
  color: var(--text-muted);
  font-weight: 600;
}

/* Swipe labels */
.swipe-label {
  position: absolute;
  top: 40px;
  padding: 8px 16px;
  border-radius: var(--radius-sm);
  font-weight: 800;
  font-size: 1.2rem;
  letter-spacing: 0.06em;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s;
}
.swipe-label--like { left: 20px; background: var(--accent); color: white; }
.swipe-label--skip { right: 20px; background: var(--danger); color: white; }

/* Swipe Popup */
.swipe-popup {
  position: fixed;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%) scale(0.9);
  background: var(--surface);
  border-radius: var(--radius-lg);
  padding: 32px;
  text-align: center;
  max-width: 340px;
  width: calc(100% - 40px);
  box-shadow: var(--shadow-lg);
  z-index: 200;
  opacity: 0;
  pointer-events: none;
  transition: all 0.25s ease;
}
.swipe-popup.is-visible {
  opacity: 1;
  pointer-events: all;
  transform: translate(-50%, -50%) scale(1);
}
.swipe-popup-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.4);
  z-index: 190;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s;
}
.swipe-popup-overlay.is-visible { opacity: 1; pointer-events: all; }
.swipe-popup-emoji { font-size: 3rem; margin-bottom: 12px; }
.swipe-popup-title { font-size: 1.25rem; font-weight: 800; margin-bottom: 4px; }
.swipe-popup-animal { color: var(--text-secondary); margin-bottom: 20px; }
.swipe-popup-actions { display: flex; flex-direction: column; gap: 10px; }

/* ── Urgent Page ── */
.urgent-hero {
  background: linear-gradient(135deg, #fff1f1, #fef2f2);
  border-bottom: 1px solid #fca5a5;
  padding: 32px 0;
}
[data-theme="dark"] .urgent-hero {
  background: linear-gradient(135deg, #2a0a0a, #200808);
  border-bottom-color: #7f1d1d;
}
.urgent-hero-inner {
  display: flex;
  align-items: center;
  gap: 20px;
}
.urgent-title { font-size: 1.75rem; font-weight: 800; color: var(--danger); }
.urgent-subtitle { color: var(--text-secondary); margin-top: 4px; }
.urgent-page .animals-section, .urgent-page .container { padding-top: 32px; }

/* ── Shelters ── */
.shelters-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  padding-bottom: 48px;
}
.shelter-card {
  background: var(--surface);
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  transition: box-shadow var(--transition);
}
.shelter-card:hover { box-shadow: var(--shadow-md); }
.shelter-card--verified { border-color: var(--accent); }
.shelter-card-header { display: flex; align-items: flex-start; gap: 16px; }
.shelter-icon { flex-shrink: 0; }
.shelter-name {
  font-size: 1.1rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 6px;
}
.verified-badge { color: var(--accent); }
.shelter-city {
  font-size: 0.85rem;
  color: var(--text-muted);
  display: flex;
  align-items: center;
  gap: 4px;
  margin-top: 4px;
}
.shelter-type-badge {
  margin-left: 8px;
  background: var(--border-light);
  padding: 2px 8px;
  border-radius: 100px;
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--text-muted);
}
.shelter-capacity { display: flex; flex-direction: column; gap: 6px; }
.capacity-bar {
  height: 8px;
  background: var(--border-light);
  border-radius: 100px;
  overflow: hidden;
}
.capacity-fill {
  height: 100%;
  background: var(--accent);
  border-radius: 100px;
  transition: width 0.5s ease;
}
.capacity-label { font-size: 0.8rem; color: var(--text-muted); }
.shelter-animal-count { font-size: 0.875rem; color: var(--text-secondary); }
.shelter-address { font-size: 0.85rem; color: var(--text-muted); }
.shelter-contacts {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.shelter-contact-link {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.85rem;
  color: var(--accent);
}
.shelter-contact-link:hover { text-decoration: underline; }
.shelter-animals-btn { align-self: flex-start; }

/* ── Lost/Found ── */
.lostfound-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  padding: 24px 0;
}
.lostfound-card {
  background: var(--surface);
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  overflow: hidden;
  position: relative;
  transition: box-shadow var(--transition);
}
.lostfound-card:hover { box-shadow: var(--shadow-md); }
.lostfound-card--lost { border-top: 3px solid var(--danger); }
.lostfound-card--found { border-top: 3px solid var(--success); }
.lostfound-type-badge {
  position: absolute;
  top: 12px; right: 12px;
  background: var(--danger);
  color: white;
  padding: 3px 8px;
  border-radius: var(--radius-sm);
  font-size: 0.7rem;
  font-weight: 700;
}
.lostfound-type-badge--found { background: var(--success); }
.lostfound-photo {
  width: 100%;
  height: 180px;
  object-fit: cover;
}
.lostfound-photo-count {
  position: absolute;
  top: 12px;
  left: 12px;
  padding: 4px 8px;
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--text) 82%, transparent);
  color: var(--surface);
  font-size: 0.72rem;
  font-weight: 700;
}
.lostfound-photo-placeholder {
  width: 100%; height: 140px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--danger-light);
  font-size: 3rem;
}
.lostfound-photo-placeholder--found { background: var(--success-light); }
.lostfound-body { padding: 16px; }
.lostfound-title { font-size: 0.95rem; font-weight: 600; margin-bottom: 8px; }
.lostfound-meta {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.lostfound-meta span {
  font-size: 0.75rem;
  background: var(--border-light);
  padding: 2px 8px;
  border-radius: 100px;
  color: var(--text-muted);
}
.lostfound-location {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 0.8rem;
  color: var(--text-secondary);
  margin-bottom: 4px;
}
.lostfound-date { font-size: 0.75rem; color: var(--text-muted); margin-bottom: 12px; }
.lostfound-contact {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 0.85rem;
  border-top: 1px solid var(--border-light);
  padding-top: 12px;
}
.lostfound-contact a { color: var(--accent); }

/* ── Tabs ── */
.tabs {
  display: flex;
  gap: 4px;
  border-bottom: 2px solid var(--border);
  margin-top: 24px;
}
.tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 20px;
  font-size: 0.925rem;
  font-weight: 600;
  color: var(--text-muted);
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;
  transition: color var(--transition), border-color var(--transition);
  cursor: pointer;
  background: none;
}
.tab:hover { color: var(--text); }
.tab--active { color: var(--accent); border-bottom-color: var(--accent); }

/* ── Report Form ── */
.report-form-section {
  margin-top: 48px;
  padding: 32px;
  background: var(--surface);
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
}

/* ── Adopt Form ── */
.adopt-layout {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 40px;
  padding-top: 24px;
  padding-bottom: 64px;
}
.adopt-preview {
  position: sticky;
  top: calc(var(--header-h) + 20px);
  align-self: start;
  background: var(--surface);
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  overflow: hidden;
  padding-bottom: 20px;
}
.adopt-preview-photo {
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--border-light);
}
.adopt-preview-photo img { width: 100%; height: 100%; object-fit: cover; }
.adopt-preview-name { font-size: 1.2rem; font-weight: 700; padding: 16px 16px 0; }
.adopt-preview-meta { font-size: 0.875rem; color: var(--text-muted); padding: 4px 16px 0; }
.adopt-preview-shelter {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 0.8rem;
  color: var(--text-muted);
  padding: 8px 16px 0;
}
.adopt-preview .timer-badge { margin: 0 16px; }

.adopt-form-title { font-size: 1.75rem; font-weight: 800; margin-bottom: 6px; }
.adopt-form-subtitle { color: var(--text-secondary); margin-bottom: 24px; }
.adopt-submit-btn { width: 100%; }

.adopt-process-panel {
  margin: 0 0 22px;
  padding: 16px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: color-mix(in srgb, var(--surface) 92%, var(--accent-light));
}

.adopt-process-panel h2 {
  margin: 0 0 12px;
  color: var(--text);
  font-size: 1rem;
  line-height: 1.3;
}

.adopt-process-steps {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
  padding: 0;
  list-style: none;
}

.adopt-process-steps li {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  align-items: start;
  gap: 9px;
  color: var(--text-secondary);
  font-size: 0.83rem;
  line-height: 1.45;
}

.adopt-process-steps span {
  display: grid;
  width: 26px;
  height: 26px;
  place-items: center;
  border-radius: 999px;
  background: var(--accent);
  color: #fff;
  font-size: 0.72rem;
  font-weight: 800;
}

.form-success-link { display: inline-flex; margin-top: 8px; font-weight: 700; text-decoration: underline; }
.partner-lead-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  max-width: 760px;
  margin: 0 auto;
}

.partner-lead-form input,
.partner-lead-form select,
.partner-lead-form textarea {
  width: 100%;
  min-width: 0;
  padding: 11px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font: inherit;
}

.partner-lead-form textarea,
.partner-lead-form label,
.partner-lead-form button,
.partner-lead-form p {
  grid-column: 1 / -1;
}

.partner-lead-form textarea {
  min-height: 110px;
  resize: vertical;
}

.partner-lead-consent {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  color: var(--text-secondary);
  font-size: 0.88rem;
  line-height: 1.45;
}

.partner-lead-consent input {
  width: auto;
  margin-top: 0.25em;
}

@media (max-width: 640px) {
  .partner-lead-form {
    grid-template-columns: 1fr;
  }
}
.request-status-page { padding: 64px 0; }
.request-status-card { max-width: 680px; margin: 0 auto; padding: 32px; background: var(--surface); border: 1px solid var(--border-light); border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.request-status-card h1 { font-size: 1.75rem; margin: 8px 0; }
.request-status-lead, .request-status-note { color: var(--text-secondary); }
.request-status-current { display: grid; gap: 4px; margin: 24px 0; padding: 16px; border-left: 3px solid var(--accent); background: var(--accent-light); }
.request-status-label { color: var(--text-muted); font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; }
.request-status-steps { display: grid; gap: 12px; padding-left: 20px; margin: 24px 0; color: var(--text-secondary); }
.request-status-steps .is-current { color: var(--text); font-weight: 600; }
.request-status-note { padding-top: 16px; border-top: 1px solid var(--border-light); margin-bottom: 24px; }
.adopt-form-note { font-size: 0.75rem; color: var(--text-muted); text-align: center; margin-top: 8px; }

/* ── Forms ── */
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.form-group { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }
.form-label { font-size: 0.85rem; font-weight: 600; color: var(--text-secondary); }
.form-input, .form-select, .form-textarea {
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  border: 1.5px solid var(--border);
  background: var(--surface);
  color: var(--text);
  font-size: 0.9rem;
  transition: border-color var(--transition);
  width: 100%;
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-light);
}
.form-input--lg { padding: 13px 18px; font-size: 1rem; }
.form-textarea { resize: vertical; min-height: 100px; }
.form-fieldset {
  border: 1.5px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 16px 20px;
  margin-bottom: 16px;
}
.form-legend {
  font-size: 0.8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
  padding: 0 8px;
}
.form-success {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 18px;
  background: var(--success-light);
  color: var(--success);
  border-radius: var(--radius-sm);
  font-weight: 600;
  margin-bottom: 16px;
}
.form-success--stack {
  align-items: flex-start;
  flex-direction: column;
}
.lostfound-manage-hero {
  align-items: flex-start;
}
.lostfound-manage-card {
  margin-block: 24px 56px;
}
.lostfound-manage-summary {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: 24px;
  align-items: start;
}
.lostfound-manage-summary h2 {
  font-size: 1.15rem;
  margin-bottom: 10px;
}
.lostfound-manage-summary p {
  color: var(--text-secondary);
  margin-bottom: 6px;
}
.lostfound-manage-photo {
  width: 180px;
  aspect-ratio: 4 / 3;
  border-radius: var(--radius-sm);
  object-fit: cover;
}
.lostfound-index-status {
  display: grid;
  gap: 4px;
  margin-top: 24px;
  padding-block: 16px;
  border-block: 1px solid var(--border-light);
  color: var(--text-secondary);
}
.lostfound-index-status strong {
  color: var(--text);
}
.lostfound-manage-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-block: 20px;
}
.match-reason {
  margin-top: 8px;
  color: var(--text-secondary);
  font-size: 0.78rem;
  line-height: 1.4;
}
@media (max-width: 600px) {
  .lostfound-manage-summary {
    grid-template-columns: 1fr;
  }
  .lostfound-manage-photo {
    width: 100%;
  }
}
.form-error {
  padding: 12px 16px;
  background: var(--danger-light);
  color: var(--danger);
  border-radius: var(--radius-sm);
  font-weight: 500;
  margin-bottom: 16px;
}

/* Radio group */
.radio-group { display: flex; gap: 16px; flex-wrap: wrap; }
.radio-label {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: 0.9rem;
  font-weight: 500;
}
.radio-label input[type=radio] { accent-color: var(--accent); width: 16px; height: 16px; }

.radio-group--cards { flex-direction: row; gap: 12px; margin-bottom: 8px; }
.radio-card { cursor: pointer; flex: 1; min-width: 140px; }
.radio-card input { position: absolute; opacity: 0; width: 0; height: 0; }
.radio-card-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 16px 12px;
  border: 2px solid var(--border);
  border-radius: var(--radius-sm);
  text-align: center;
  transition: all var(--transition);
}
.radio-card input:checked + .radio-card-inner {
  border-color: var(--accent);
  background: var(--accent-light);
}
.radio-card-icon { font-size: 1.5rem; }
.radio-card-title { font-size: 0.875rem; font-weight: 700; }
.radio-card-desc { font-size: 0.75rem; color: var(--text-muted); }

/* Checkboxes */
.checkboxes-list { display: flex; flex-direction: column; gap: 12px; }
.checkbox-label {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  cursor: pointer;
  font-size: 0.9rem;
}
.checkbox-label input[type=checkbox] { position: absolute; opacity: 0; width: 0; height: 0; }
.checkbox-custom {
  width: 18px; height: 18px;
  border: 2px solid var(--border);
  border-radius: 4px;
  flex-shrink: 0;
  margin-top: 1px;
  transition: all var(--transition);
  position: relative;
}
.checkbox-label input:checked + .checkbox-custom {
  background: var(--accent);
  border-color: var(--accent);
}
.checkbox-label input:checked + .checkbox-custom::after {
  content: '';
  position: absolute;
  top: 2px; left: 4px;
  width: 6px; height: 9px;
  border: 2px solid white;
  border-top: none;
  border-left: none;
  transform: rotate(45deg);
}

/* ── Dashboard ── */
.dashboard-page { padding-bottom: 64px; }
.dashboard-header {
  padding: 40px 0 32px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 32px;
}
.dashboard-title {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 1.75rem;
  font-weight: 800;
}
.dashboard-subtitle { color: var(--text-secondary); margin-top: 4px; }
.dashboard-updated { font-size: 0.8rem; color: var(--text-muted); margin-top: 4px; }

.kpi-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 12px;
  margin-bottom: 24px;
}
.kpi-card {
  background: var(--surface);
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  padding: 20px;
  text-align: center;
  transition: box-shadow var(--transition);
}
.kpi-card:hover { box-shadow: var(--shadow-md); }
.kpi-skeleton { animation: skeleton 1.5s infinite; }
@keyframes skeleton {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}
.kpi-value {
  font-size: 2rem;
  font-weight: 800;
  color: var(--accent);
  line-height: 1.1;
  margin-bottom: 6px;
}
.kpi-value--success { color: var(--success); }
.kpi-value--danger { color: var(--danger); }
.kpi-value--warning { color: var(--warning); }
.kpi-label { font-size: 0.75rem; color: var(--text-muted); font-weight: 500; line-height: 1.3; }

.charts-row {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}
.chart-card {
  background: var(--surface);
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  padding: 24px;
  margin-bottom: 16px;
}
.chart-title { font-size: 1rem; font-weight: 700; margin-bottom: 20px; color: var(--text); }
.chart-empty {
  min-height: 200px;
  display: grid;
  place-items: center;
  margin: 0;
  color: var(--text-muted);
  font-size: 0.875rem;
  text-align: center;
}
.chart-empty[hidden] { display: none; }

.table-card {
  background: var(--surface);
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  padding: 24px;
}
.table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.dashboard-table {
  width: 100%;
  min-width: 700px;
  border-collapse: collapse;
  font-size: 0.875rem;
}
.dashboard-table th {
  text-align: left;
  padding: 10px 14px;
  background: var(--border-light);
  font-weight: 700;
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
  white-space: nowrap;
}
.dashboard-table td {
  padding: 12px 14px;
  border-bottom: 1px solid var(--border-light);
  color: var(--text-secondary);
}
.dashboard-table tr:last-child td { border-bottom: none; }
.dashboard-table tr:hover td { background: var(--border-light); }
.table-loading { text-align: center; color: var(--text-muted); padding: 32px; }
.dash-verified { color: var(--accent); }

.mini-bar {
  height: 6px;
  background: var(--border-light);
  border-radius: 100px;
  overflow: hidden;
  width: 80px;
  margin-bottom: 2px;
}
.mini-bar-fill {
  height: 100%;
  border-radius: 100px;
}

/* ── Auth Page ── */
.auth-page {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: calc(100vh - var(--header-h) - 180px);
  padding: 40px 20px;
}
.auth-card {
  background: var(--surface);
  border-radius: var(--radius-lg);
  border: 1.5px solid var(--border);
  padding: 40px;
  max-width: 400px;
  width: 100%;
  text-align: center;
  box-shadow: var(--shadow-lg);
}
.auth-icon { margin-bottom: 16px; }
.auth-title { font-size: 1.5rem; font-weight: 800; margin-bottom: 6px; }
.auth-subtitle { color: var(--text-secondary); margin-bottom: 24px; font-size: 0.875rem; }
.auth-form { text-align: left; }

/* ── Responsive ── */
@media (max-width: 1024px) {
  .kpi-grid { grid-template-columns: repeat(3, 1fr); }
  .animals-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
  .main-nav { display: none; }
  /* mobile-menu-btn now hidden by bottom-nav block */

  /* Collapsible filters on mobile */
  .filters-section { padding: 0; position: relative; top: auto; z-index: 50; }
  .filters-section .container { padding-inline: 0; }
  .filters-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 12px 20px;
    background: var(--bg);
    border: none;
    border-bottom: 1px solid var(--border);
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--text-secondary);
    cursor: pointer;
  }
  .filters-toggle svg {
    transition: transform 0.2s;
    color: var(--text-muted);
  }
  .filters-toggle.is-open svg { transform: rotate(180deg); }
  .filters-body {
    display: none;
    border-bottom: 1px solid var(--border);
    background: var(--bg);
  }
  .filters-body.is-open { display: block; }

  /* Animals grid – 2 columns on mobile */
  .animals-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .animals-grid--4 { grid-template-columns: repeat(2, 1fr); gap: 10px; }

  /* Card compact rules moved to bottom-nav media block */

  .shelters-grid { grid-template-columns: 1fr; }
  .lostfound-grid { grid-template-columns: 1fr; }
  .kpi-grid { grid-template-columns: repeat(2, 1fr); }
  .charts-row { grid-template-columns: 1fr; }

  /* Animal detail page */
  .animal-detail { grid-template-columns: 1fr; gap: 20px; }
  .animal-gallery { position: static; }
  .gallery-main { border-radius: 0; margin-inline: -20px; width: calc(100% + 40px); }
  .animal-detail-name { font-size: 1.5rem; }
  .animal-info-header { flex-direction: column; gap: 8px; }
  .animal-cta { flex-direction: column; }
  .animal-cta .btn { width: 100%; justify-content: center; }
  .share-buttons { flex-wrap: wrap; }

  .adopt-layout { grid-template-columns: 1fr; }
  .adopt-preview { position: static; }

  .form-row { grid-template-columns: 1fr; }
  .radio-group--cards { flex-direction: column; }

  .swipe-stack { width: calc(100vw - 40px); height: 480px; }

  /* Hero / section overrides moved to bottom-nav media block */

  /* Similar animals – softer urgent border */
  .similar-section .animal-card--urgent { border-width: 1px; border-color: rgba(220,38,38,0.4); }
  .similar-section .animal-card--urgent:hover { box-shadow: var(--shadow-md); }
  .similar-section { margin-top: 32px; }
  .similar-section .section-title { font-size: 1.1rem; }

  .dashboard-table { font-size: 0.8rem; }
  .adopt-page { overflow: hidden; }

  /* Footer rules moved to bottom-nav media block */

  /* Breadcrumb */
  .breadcrumb { padding: 12px 0 0; font-size: 0.78rem; }

  /* Success stories */
  .success-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
}

/* AV DS 4 interaction and readability contract. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid hsl(var(--ring) / 0.42);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}

@media (max-width: 480px) {
  .kpi-grid { grid-template-columns: 1fr 1fr; }
  .swipe-stack { height: 440px; }
  .animals-grid--4 { grid-template-columns: 1fr; }
  .animals-grid { grid-template-columns: repeat(2, 1fr); }
  .container { padding-inline: 14px; }
  .gallery-main { margin-inline: -14px; width: calc(100% + 28px); }
}

/* ================================================================
   R2: Share Buttons
   ================================================================ */

.share-section {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-top: 20px;
  border-top: 1px solid var(--border);
  margin-top: 20px;
}

.share-label {
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--text-muted);
}

.share-buttons {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.share-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 14px;
  border-radius: var(--radius-sm);
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  border: 1.5px solid var(--border);
  background: var(--surface);
  color: var(--text-secondary);
  transition: background var(--transition), color var(--transition), border-color var(--transition), transform var(--transition), box-shadow var(--transition);
}
.share-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--accent-light);
  box-shadow: var(--shadow-sm);
  transform: translateY(-1px);
}
.share-btn:active { transform: scale(0.97); }

.share-btn--tg:hover { border-color: #2AABEE; color: #2AABEE; background: #e8f7ff; }
[data-theme="dark"] .share-btn--tg:hover { background: #0d2535; }
.share-btn--wa:hover { border-color: #25D366; color: #25D366; background: #eafbf0; }
[data-theme="dark"] .share-btn--wa:hover { background: #072015; }

/* Toast */
.share-toast {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(16px);
  background: var(--text);
  color: var(--bg);
  padding: 10px 22px;
  border-radius: 99px;
  font-size: 0.85rem;
  font-weight: 600;
  opacity: 0;
  pointer-events: none;
  z-index: 2000;
  transition: opacity 0.25s ease, transform 0.25s ease;
  white-space: nowrap;
}
.share-toast--visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* QR Modal */
.qr-modal {
  position: fixed;
  inset: 0;
  z-index: 1500;
  display: flex;
  align-items: center;
  justify-content: center;
}
.qr-modal[hidden] { display: none; }
.qr-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(4px);
}
.qr-modal-content {
  position: relative;
  background: var(--surface);
  border-radius: var(--radius-lg);
  padding: 28px 32px 24px;
  box-shadow: var(--shadow-lg);
  text-align: center;
  min-width: 260px;
  animation: qrFadeIn 0.2s ease;
}
@keyframes qrFadeIn {
  from { opacity: 0; transform: scale(0.9); }
  to { opacity: 1; transform: scale(1); }
}
.qr-modal-close {
  position: absolute;
  top: 10px;
  right: 14px;
  font-size: 1.4rem;
  line-height: 1;
  color: var(--text-muted);
  cursor: pointer;
  padding: 4px;
  border-radius: var(--radius-sm);
  transition: color var(--transition), background var(--transition);
}
.qr-modal-close:hover { color: var(--text); background: var(--border-light); }
.qr-modal-title {
  font-weight: 700;
  font-size: 1rem;
  margin-bottom: 16px;
  color: var(--text);
}
.qr-image {
  width: 200px;
  height: 200px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  display: block;
  margin: 0 auto;
}
.qr-modal-hint {
  font-size: 0.78rem;
  color: var(--text-muted);
  margin-top: 12px;
}

/* ================================================================
   R2: Urgent Card Share Buttons
   ================================================================ */

.animal-card-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 0 16px 16px;
}

.animal-card-footer .animal-adopt-btn {
  margin: 0;
  flex: 1;
}

.card-share-btns {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}

.card-share-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: var(--radius-sm);
  border: 1.5px solid var(--border);
  background: var(--surface);
  color: var(--text-muted);
  cursor: pointer;
  transition: background var(--transition), color var(--transition), border-color var(--transition);
  flex-shrink: 0;
}
.card-share-btn:hover { transform: translateY(-1px); }
.card-share-btn--tg:hover { border-color: #2AABEE; color: #2AABEE; background: #e8f7ff; }
[data-theme="dark"] .card-share-btn--tg:hover { background: #0d2535; }
.card-share-btn--wa:hover { border-color: #25D366; color: #25D366; background: #eafbf0; }
[data-theme="dark"] .card-share-btn--wa:hover { background: #072015; }

/* ================================================================
   R2: PWA Install Banner
   ================================================================ */

.pwa-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1200;
  transform: translateY(100%);
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  background: var(--surface);
  border-top: 1px solid var(--border);
  box-shadow: 0 -4px 20px rgba(0,0,0,0.12);
  padding: 14px 16px;
  padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px));
}
.pwa-banner--visible {
  transform: translateY(0);
}
.pwa-banner-inner {
  display: flex;
  align-items: center;
  gap: 12px;
  max-width: 600px;
  margin: 0 auto;
}
.pwa-banner-icon {
  flex-shrink: 0;
}
.pwa-banner-text {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.pwa-banner-text strong {
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pwa-banner-text span {
  font-size: 0.75rem;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pwa-banner-install {
  flex-shrink: 0;
  white-space: nowrap;
}
.pwa-banner-dismiss {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  cursor: pointer;
  transition: background var(--transition), color var(--transition);
}
.pwa-banner-dismiss:hover {
  background: var(--border-light);
  color: var(--text);
}

@media (max-width: 400px) {
  .share-btn span { display: none; }
  .share-btn { padding: 8px 10px; }
  .pwa-banner-text span { display: none; }
}

/* ================================================================
   R5: AI Match Quiz
   ================================================================ */

.match-quiz-overlay {
  position: fixed;
  inset: 0;
  z-index: 1400;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(6px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}
.match-quiz-overlay.is-visible {
  opacity: 1;
  pointer-events: auto;
}

.match-quiz {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(0.92);
  z-index: 1450;
  background: var(--surface);
  border-radius: var(--radius-lg);
  border: 1.5px solid var(--border);
  box-shadow: var(--shadow-lg);
  padding: 32px 28px 28px;
  max-width: 440px;
  width: calc(100vw - 32px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease, transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.match-quiz.is-visible {
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, -50%) scale(1);
}

.match-quiz-header { text-align: center; margin-bottom: 24px; }
.match-quiz-title {
  font-size: 1.35rem;
  font-weight: 800;
  margin-bottom: 6px;
  color: var(--text);
}
.match-quiz-subtitle {
  font-size: 0.85rem;
  color: var(--text-secondary);
}

.match-question {
  margin-bottom: 20px;
}
.match-label {
  display: block;
  font-size: 0.9rem;
  font-weight: 700;
  margin-bottom: 10px;
  color: var(--text);
}

.match-options {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.match-option {
  flex: 1;
  min-width: 0;
  position: relative;
  cursor: pointer;
}
.match-option input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.match-option-text {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 10px 8px;
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  background: var(--bg);
  color: var(--text-secondary);
  font-size: 0.82rem;
  font-weight: 600;
  transition: all 0.15s ease;
  text-align: center;
  white-space: nowrap;
}
.match-option:hover .match-option-text {
  border-color: var(--accent);
  color: var(--accent);
}
.match-option.is-selected .match-option-text,
.match-option input:checked + .match-option-text {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
  box-shadow: 0 2px 8px rgba(224,92,42,0.25);
}

.match-actions {
  display: flex;
  gap: 10px;
  margin-top: 24px;
}
.match-submit-btn {
  flex: 1;
}
.match-skip-btn {
  flex-shrink: 0;
}

/* Match score badge on cards */
.match-score-badge {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 5;
  padding: 4px 10px;
  border-radius: 99px;
  background: rgba(224,92,42,0.92);
  color: #fff;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  backdrop-filter: blur(4px);
}

/* Match result banner */
.match-result-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 10px 20px;
  margin-bottom: 16px;
  border-radius: var(--radius);
  background: linear-gradient(135deg, var(--accent) 0%, #6BC4B5 100%);
  color: #fff;
  font-weight: 700;
  font-size: 0.9rem;
  animation: matchBannerIn 0.4s ease;
}
.match-result-banner.is-fading {
  opacity: 0;
  transition: opacity 0.5s ease;
}
.match-result-count {
  background: rgba(255,255,255,0.25);
  padding: 2px 10px;
  border-radius: 99px;
  font-size: 0.8rem;
}
@keyframes matchBannerIn {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 480px) {
  .match-quiz { padding: 24px 20px 20px; }
  .match-options { flex-direction: column; }
  .match-option { min-width: 100%; }
}

/* ================================================================
   R6: Match Analytics Dashboard
   ================================================================ */

.dashboard-header-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.dashboard-nav {
  display: flex;
  gap: 6px;
  margin-top: 12px;
  margin-bottom: 4px;
}
.dashboard-nav-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border-radius: var(--radius);
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text-secondary);
  border: 1.5px solid var(--border);
  background: var(--surface);
  transition: all 0.15s ease;
  text-decoration: none;
}
.dashboard-nav-item:hover {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--accent-light);
}
.dashboard-nav-item.is-active {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}

.charts-row--3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.charts-row--4 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

@media (max-width: 1100px) {
  .charts-row--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.kpi-value--accent { color: var(--accent); }

/* Top liked animals table */
.top-animal-cell {
  display: flex;
  align-items: center;
  gap: 10px;
}
.top-animal-thumb {
  width: 40px;
  height: 40px;
  border-radius: var(--radius-sm);
  object-fit: cover;
  flex-shrink: 0;
}
.top-animal-emoji {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-sm);
  background: var(--bg);
  font-size: 1.3rem;
  flex-shrink: 0;
}

.temp-tags {
  font-size: 0.78rem;
  letter-spacing: 0.02em;
}

.like-count {
  font-weight: 700;
  color: var(--accent);
}

/* Insight box */
.insight-box {
  margin-top: 24px;
  padding: 24px 28px;
  background: linear-gradient(135deg, #FFFAF0 0%, #FFF6E8 100%);
  border: 1.5px solid #f0d4bf;
  border-radius: var(--radius-lg);
}
[data-theme="dark"] .insight-box {
  background: linear-gradient(135deg, #1C1810 0%, #1F1B14 100%);
  border-color: #3d2e20;
}
.insight-title {
  font-size: 1.1rem;
  font-weight: 800;
  margin-bottom: 14px;
  color: var(--text);
}
.insight-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.insight-list li {
  padding: 8px 14px;
  background: var(--surface);
  border-radius: var(--radius-sm);
  font-size: 0.88rem;
  color: var(--text-secondary);
  line-height: 1.5;
  border: 1px solid var(--border-light);
}

.btn--outline {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border-radius: var(--radius-sm);
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-secondary);
  border: 1.5px solid var(--border);
  background: var(--surface);
  cursor: pointer;
  transition: all 0.15s ease;
  text-decoration: none;
}
.btn--outline:hover {
  border-color: var(--accent);
  color: var(--accent);
}
.btn--sm { padding: 6px 12px; font-size: 0.78rem; }

@media (max-width: 768px) {
  .charts-row--3 { grid-template-columns: 1fr; }
  .charts-row--4 { grid-template-columns: 1fr; }
  .dashboard-header-top { flex-direction: column; align-items: flex-start; }
  .dashboard-nav { flex-wrap: wrap; gap: 4px; }
  .dashboard-nav-item { padding: 6px 12px; font-size: 0.8rem; }
  .kpi-card { padding: 14px; }
  .kpi-value { font-size: 1.5rem; }
  .kpi-label { font-size: 0.7rem; }
}

/* Photo upload in lost/found form */
.photo-upload-area {
  position: relative;
  border: 2px dashed var(--border);
  border-radius: 12px;
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s;
  overflow: hidden;
  min-height: 140px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.photo-upload-area:hover,
.photo-upload-area--dragover {
  border-color: var(--accent);
  background: var(--accent-light);
}
.photo-upload-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 24px;
  color: var(--text-muted);
  font-size: 0.875rem;
}
.photo-upload-placeholder svg {
  opacity: 0.5;
}
.photo-upload-preview {
  width: 100%;
  max-height: 300px;
  object-fit: contain;
  border-radius: 10px;
}
.photo-upload-remove {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgba(0,0,0,0.5);
  color: #fff;
  border: none;
  font-size: 1.1rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

/* ================================================================
   NEW PAGES – guide.html
   ================================================================ */

/* ── Shared btn--accent ── */
.btn--accent {
  background: var(--accent);
  color: hsl(var(--primary-foreground));
  border-color: var(--accent);
}
.btn--accent:hover { background: var(--accent-hover); border-color: var(--accent-hover); box-shadow: var(--shadow-md); }

/* ── Shared section layout ── */
.guide-section {
  padding: 64px 0;
}
.guide-section--alt { background: var(--bg); }

.section-header { text-align: center; margin-bottom: 40px; }
.section-title {
  font-size: 1.75rem;
  font-weight: 800;
  color: var(--text);
  margin-bottom: 8px;
  letter-spacing: 0;
}
.section-subtitle {
  font-size: 1rem;
  color: var(--text-secondary);
  max-width: 560px;
  margin: 0 auto;
}

/* ── text helpers ── */
.text-success { color: var(--success); }
.text-danger  { color: var(--danger); }

/* ================================================================
   GUIDE PAGE
   ================================================================ */

/* ── Guide Hero ── */
.guide-hero {
  background: linear-gradient(135deg, var(--accent) 0%, #D49730 100%);
  padding: 64px 0 48px;
  color: white;
}
.guide-hero .avds-kicker {
  color: var(--text-muted) !important;
}
.guide-hero .avds-hero-copy .avds-title {
  color: var(--text) !important;
}
.guide-hero .avds-copy {
  color: var(--text-secondary) !important;
}
.guide-hero-inner { text-align: center; }
.guide-hero-label {
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  opacity: 0.8;
  margin-bottom: 12px;
}
.guide-hero-title {
  font-size: 3rem;
  font-weight: 800;
  letter-spacing: 0;
  margin-bottom: 12px;
}
.guide-hero-subtitle {
  font-size: 1.1rem;
  opacity: 0.9;
  max-width: 500px;
  margin: 0 auto 28px;
}
.guide-hero-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-start;
  max-width: 980px;
}
.guide-hero-nav-link {
  padding: 6px 14px;
  background: rgba(255,255,255,0.15);
  border-radius: 100px;
  font-size: 0.85rem;
  font-weight: 500;
  color: white;
  transition: background var(--transition);
  border: 1px solid rgba(255,255,255,0.25);
}
.guide-hero-nav-link:hover { background: rgba(255,255,255,0.28); }
.guide-hero-highlights {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 18px;
  margin-bottom: 16px;
}
.guide-hero-highlight {
  background: rgba(255,255,255,0.9);
  border: 1px solid rgba(255,255,255,0.42);
  border-radius: var(--radius);
  padding: 12px 14px;
  min-height: 86px;
  box-shadow: var(--shadow-sm);
}
.guide-hero-highlight strong {
  display: block;
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 6px;
}
.guide-hero-highlight span {
  display: block;
  font-size: 0.83rem;
  line-height: 1.45;
  color: var(--text-secondary);
}

/* ── Guide Steps ── */
.guide-steps {
  display: flex;
  flex-direction: column;
  gap: 0;
  max-width: 680px;
  margin: 0 auto;
}
.guide-step {
  display: flex;
  gap: 20px;
  padding: 24px 0;
  border-bottom: 1px solid var(--border-light);
  align-items: flex-start;
}
.guide-step--last { border-bottom: none; }
.guide-step-num {
  flex-shrink: 0;
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--border-light);
  color: var(--text-secondary);
  font-weight: 700;
  font-size: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 2px;
}
.guide-step-num--accent {
  background: var(--accent);
  color: white;
}
.guide-step-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 6px;
}
.guide-step-text {
  font-size: 0.9rem;
  color: var(--text-secondary);
  margin-bottom: 10px;
  line-height: 1.6;
}
.guide-step-body .btn { margin-top: 4px; }

/* ── Requirements ── */
.guide-req-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 16px;
}
.guide-req-card {
  background: var(--surface);
  border-radius: var(--radius);
  padding: 24px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-light);
}
.guide-req-card--wide { grid-column: 1 / -1; }
.guide-req-icon { font-size: 2rem; margin-bottom: 10px; }
.guide-req-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 6px;
}
.guide-req-text { font-size: 0.875rem; color: var(--text-secondary); line-height: 1.6; }

/* ── Chipping ── */
.guide-chip-badges { margin-bottom: 12px; }
.guide-chip-law-badge {
  display: inline-block;
  background: var(--accent);
  color: white;
  font-size: 0.75rem;
  font-weight: 700;
  padding: 4px 12px;
  border-radius: 100px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.guide-chip-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
  margin-bottom: 32px;
}
.guide-chip-card {
  background: var(--surface);
  border-radius: var(--radius);
  padding: 24px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-light);
}
.guide-chip-card--accent {
  background: var(--accent-light);
  border-color: rgba(224,92,42,0.2);
}
.guide-chip-card-icon { font-size: 2rem; margin-bottom: 10px; }
.guide-chip-card-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 8px;
}
.guide-chip-card-text { font-size: 0.875rem; color: var(--text-secondary); line-height: 1.6; }
.guide-chip-link {
  display: inline-block;
  margin-top: 10px;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--accent);
}
.guide-chip-link:hover { text-decoration: underline; }

.guide-chip-bottom {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.guide-chip-cost, .guide-chip-fines {
  background: var(--surface);
  border-radius: var(--radius);
  padding: 24px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-light);
}
.guide-chip-sub-title {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 14px;
}
.guide-chip-cost-row, .guide-chip-fine-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid var(--border-light);
  font-size: 0.875rem;
  gap: 8px;
}
.guide-chip-cost-row:last-child, .guide-chip-fine-row:last-child { border-bottom: none; }
.guide-chip-cost-row strong, .guide-chip-fine-row strong { font-weight: 700; }
.guide-chip-cost-row--free strong { color: var(--success); }
.guide-chip-fine-note {
  font-size: 0.8rem;
  color: var(--text-muted);
  margin-top: 10px;
  line-height: 1.5;
}

/* ── Health ── */
.guide-health-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 16px;
}
.guide-health-card {
  background: var(--surface);
  border-radius: var(--radius);
  padding: 28px 24px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-light);
  text-align: center;
}
.guide-health-icon { font-size: 2.5rem; margin-bottom: 12px; }
.guide-health-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 8px;
}
.guide-health-text { font-size: 0.875rem; color: var(--text-secondary); line-height: 1.6; }

/* ── Events ── */
.guide-events-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 16px;
}
.guide-event-card {
  background: var(--surface);
  border-radius: var(--radius);
  padding: 24px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-light);
  position: relative;
}
.guide-event-badge {
  position: absolute;
  top: 16px; right: 16px;
  background: var(--accent-light);
  color: var(--accent);
  font-size: 0.75rem;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 100px;
}
.guide-event-title { font-size: 1rem; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.guide-event-desc { font-size: 0.875rem; color: var(--text-secondary); line-height: 1.6; }
.guide-event-placeholder {
  background: var(--accent-light);
  border-radius: var(--radius);
  padding: 32px 24px;
  text-align: center;
  border: 2px dashed rgba(224,92,42,0.3);
}
.guide-event-placeholder-icon { font-size: 2.5rem; margin-bottom: 12px; }
.guide-event-placeholder-title { font-size: 1rem; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.guide-event-placeholder-text { font-size: 0.875rem; color: var(--text-secondary); margin-bottom: 16px; line-height: 1.6; }

/* ── FAQ ── */
.faq-list { max-width: 720px; margin: 0 auto; }
.faq-item {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin-bottom: 8px;
  overflow: hidden;
  background: var(--surface);
}
.faq-question {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 20px;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--text);
  text-align: left;
  background: none;
  transition: background var(--transition);
}
.faq-question:hover { background: var(--border-light); }
.faq-chevron {
  flex-shrink: 0;
  transition: transform var(--transition);
  color: var(--text-muted);
}
.faq-item--open .faq-chevron { transform: rotate(180deg); }
.faq-answer {
  display: none;
  padding: 0 20px 18px;
}
.faq-item--open .faq-answer { display: block; }
.faq-answer p { font-size: 0.9rem; color: var(--text-secondary); line-height: 1.7; }

/* ── Guide CTA ── */
.guide-cta-section {
  background: var(--text);
  padding: 64px 0;
}
.guide-cta-inner { text-align: center; }
.guide-cta-title {
  font-size: 2.25rem;
  font-weight: 800;
  color: white;
  margin-bottom: 10px;
  letter-spacing: 0;
}
.guide-cta-text { color: rgba(255,255,255,0.7); margin-bottom: 24px; }
.guide-cta-btns { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

/* ================================================================
   RESPONSIVE – Guide
   ================================================================ */

@media (max-width: 768px) {
  .guide-hero-title { font-size: 2rem; }
  .guide-cta-title { font-size: 1.5rem; }
  .guide-chip-bottom { grid-template-columns: 1fr; }
  .guide-events-grid { grid-template-columns: 1fr; }
  .section-title { font-size: 1.4rem; }
}

@media (max-width: 480px) {
  .guide-req-grid { grid-template-columns: 1fr; }
  .guide-req-card--wide { grid-column: 1; }
  .guide-health-grid { grid-template-columns: 1fr; }
  .guide-section { padding: 40px 0; }
}

/* ===== Wave 1: Favorites ===== */
.fav-btn {
  position: absolute; top: 12px; right: 12px; z-index: 10;
  background: rgba(255,255,255,0.85); border: none; border-radius: 50%;
  width: 36px; height: 36px; display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: all 0.2s; color: var(--text-muted);
  backdrop-filter: blur(4px);
}
.fav-btn:hover { background: rgba(255,255,255,1); color: var(--danger); transform: scale(1.1); }
.fav-btn--active { color: var(--danger); }
.fav-btn--active svg { fill: var(--danger); }
.animal-card { position: relative; }

.share-mini-btn {
  position: absolute; top: 12px; right: 56px; z-index: 10;
  background: rgba(255,255,255,0.85); border: none; border-radius: 50%;
  width: 32px; height: 32px; display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: all 0.2s; color: var(--text-muted);
  backdrop-filter: blur(4px);
}
.share-mini-btn:hover { background: rgba(255,255,255,1); color: var(--accent); transform: scale(1.1); }

.fav-count {
  background: var(--danger); color: #fff; border-radius: 10px;
  font-size: 11px; padding: 1px 6px; margin-left: 4px; font-weight: 700;
  vertical-align: middle;
}

.favorites-loading { text-align: center; padding: 60px 0; }
.favorites-section { padding: 40px 0; min-height: 400px; }

/* ===== Wave 1: Success Stories ===== */
.success-section {
  padding: 48px 0; background: var(--bg);
  border-top: 1px solid var(--border-light);
}
.success-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 16px; margin-top: 24px;
}
.success-card {
  border-radius: var(--radius); overflow: hidden;
  background: var(--surface); box-shadow: var(--shadow-sm);
  transition: transform 0.2s, box-shadow 0.2s;
}
.success-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.success-photo { position: relative; aspect-ratio: 1; overflow: hidden; }
.success-photo img { width: 100%; height: 100%; object-fit: cover; }
.success-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.5), transparent 50%);
  display: flex; align-items: flex-end; justify-content: center; padding-bottom: 10px;
}
.success-badge {
  background: var(--success); color: #fff; padding: 3px 12px;
  border-radius: 20px; font-size: 12px; font-weight: 700; letter-spacing: 0.5px;
}
.success-body { padding: 10px 12px; }
.success-name { font-size: 15px; font-weight: 700; margin: 0; }
.success-meta { font-size: 12px; color: var(--text-muted); margin: 2px 0 0; }

.section-subtitle {
  color: var(--text-secondary); font-size: 15px; margin-top: 4px;
}

/* ===== Wave 1: Video ===== */
.animal-video-wrapper {
  position: relative; width: 100%; padding-bottom: 56.25%;
  border-radius: var(--radius); overflow: hidden; background: #000;
  margin-top: 8px;
}
.animal-video-iframe, .animal-video {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  border: none;
}

/* ===== Wave 1: Fav Count Badge (nav) ===== */
.fav-count-badge {
  background: var(--danger); color: #fff; border-radius: 10px;
  font-size: 10px; padding: 1px 5px; margin-left: 3px; font-weight: 700;
  vertical-align: middle; display: inline-block;
}
.nav-link--fav { display: inline-flex; align-items: center; gap: 4px; }

/* Spinner for loading states */
.spinner {
  width: 36px; height: 36px; border: 3px solid var(--border);
  border-top-color: var(--accent); border-radius: 50%;
  animation: spin 0.7s linear infinite; margin: 0 auto;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* Dark mode adjustments for overlay buttons */
[data-theme="dark"] .fav-btn { background: rgba(30,28,26,0.8); }
[data-theme="dark"] .fav-btn:hover { background: rgba(30,28,26,1); }
[data-theme="dark"] .share-mini-btn { background: rgba(30,28,26,0.8); }
[data-theme="dark"] .share-mini-btn:hover { background: rgba(30,28,26,1); }
.success-photo-placeholder {
  width: 100%; height: 100%; display: flex; align-items: center;
  justify-content: center; background: var(--border-light);
  font-size: 2.5rem;
}

/* ===== Wave 1: Extended Filters ===== */
/* (filters-form base styles above, extended in responsive) */

/* ================================================================
   AI FEATURES – Wave 2
   QR Tags · Vet Chat · Breed Detection · Photo Search · Passport
   ================================================================ */

/* ── Shared: Drop Zone ───────────────────────────────────────────────────── */
.drop-zone {
  position: relative;
  border: 2px dashed var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  cursor: pointer;
  transition: border-color var(--transition), background var(--transition);
  overflow: hidden;
  min-height: 160px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.drop-zone:hover,
.drop-zone:focus-visible {
  border-color: var(--accent);
  background: var(--accent-light);
  outline: none;
}
.drop-zone.dragover {
  border-color: var(--accent);
  background: var(--accent-light);
  transform: scale(1.01);
}
.drop-zone-inner {
  text-align: center;
  padding: 28px 20px;
  pointer-events: none;
}
.drop-zone-inner svg { margin-bottom: 12px; }
.drop-zone-title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 4px;
}
.drop-zone-inner p { color: var(--text-secondary); font-size: 0.9rem; margin: 0; }
.drop-zone-hint { font-size: 0.78rem !important; color: var(--text-muted) !important; margin-top: 4px !important; }
.drop-zone-link {
  color: var(--accent);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.drop-zone-preview {
  width: 100%;
  height: 220px;
  object-fit: cover;
  display: block;
}
.drop-zone-remove {
  position: absolute;
  top: 10px; right: 10px;
  background: rgba(0,0,0,0.55);
  color: #fff;
  border: none;
  border-radius: 50%;
  width: 30px; height: 30px;
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background var(--transition);
  z-index: 2;
}
.drop-zone-remove:hover { background: var(--danger); }

[data-theme="dark"] .drop-zone { background: var(--surface); }
[data-theme="dark"] .drop-zone:hover,
[data-theme="dark"] .drop-zone.dragover { background: var(--accent-light); }

/* ── Shared: Confidence Bars ─────────────────────────────────────────────── */
.confidence-bar-wrap {
  flex: 1;
  height: 8px;
  background: var(--border);
  border-radius: 100px;
  overflow: hidden;
  min-width: 60px;
}
.confidence-bar {
  height: 100%;
  background: linear-gradient(90deg, var(--accent), #f59e0b);
  border-radius: 100px;
  width: 0%;
  transition: width 0.7s cubic-bezier(.4,0,.2,1);
}
.confidence-pct {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--text-secondary);
  min-width: 34px;
  text-align: right;
}

/* ── QR Tag – Standalone page (qr_tag.html) ─────────────────────────────── */
.qr-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}
.qr-brand {
  display: flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
  font-weight: 800;
  font-size: 1.1rem;
  color: var(--text);
  letter-spacing: 0;
}
.qr-topbar-badge {
  font-size: 0.75rem;
  font-weight: 600;
  background: var(--accent-light);
  color: var(--accent);
  padding: 3px 10px;
  border-radius: 100px;
  border: 1px solid var(--accent);
}
.qr-photo-wrap {
  position: relative;
  background: var(--bg);
}
.qr-pet-photo {
  width: 100%;
  max-height: 340px;
  object-fit: cover;
  display: block;
}
.qr-pet-photo--placeholder {
  width: 100%;
  height: 220px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 5rem;
  background: var(--border-light);
}
.qr-species-badge {
  position: absolute;
  bottom: 12px;
  left: 16px;
  background: rgba(0,0,0,0.55);
  color: #fff;
  padding: 4px 12px;
  border-radius: 100px;
  font-size: 0.82rem;
  font-weight: 600;
  backdrop-filter: blur(6px);
}
.qr-card {
  background: var(--surface);
  padding: 24px 20px;
}
.qr-pet-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}
.qr-pet-name {
  font-size: 1.75rem;
  font-weight: 800;
  letter-spacing: 0;
  color: var(--text);
  margin: 0;
}
.qr-pet-description {
  color: var(--text-secondary);
  font-size: 0.95rem;
  line-height: 1.5;
  margin: 0 0 20px;
}
.qr-contact-block {
  background: var(--bg);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 20px;
  border: 1px solid var(--border-light);
}
.qr-contact-header {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
  margin-bottom: 8px;
}
.qr-owner-name {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text);
  margin: 0 0 12px;
}
.qr-contact-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.qr-contact-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  font-size: 1rem;
}
.qr-found-section {
  text-align: center;
  padding: 16px 0 8px;
}
.qr-found-hint {
  font-size: 0.9rem;
  color: var(--text-muted);
  margin-bottom: 12px;
}
.qr-found-btn {
  background: #16a34a;
  color: #fff;
  border: none;
  width: 100%;
  font-size: 1.05rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 16px;
  border-radius: var(--radius);
  cursor: pointer;
  transition: background var(--transition), transform var(--transition);
}
.qr-found-btn:hover { background: #15803d; }
.qr-found-btn:active { transform: scale(0.98); }
.qr-found-btn:disabled { opacity: 0.6; cursor: not-allowed; }
.qr-found-subhint {
  font-size: 0.78rem;
  color: var(--text-muted);
  margin-top: 8px;
}
.qr-location-shared {
  text-align: center;
  padding: 20px 0;
}
.qr-location-icon { font-size: 2.5rem; margin-bottom: 12px; }
.qr-location-title {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--success);
  margin-bottom: 8px;
}
.qr-location-hint {
  font-size: 0.9rem;
  color: var(--text-secondary);
  line-height: 1.5;
}
.qr-map-placeholder {
  background: var(--border-light);
  border-radius: var(--radius);
  padding: 24px;
  margin-top: 16px;
  text-align: center;
}
.qr-map-inner p { font-size: 0.9rem; color: var(--text-secondary); margin: 8px 0 0; }
.qr-footer {
  background: var(--surface);
  border-top: 1px solid var(--border);
  padding: 24px 20px;
  text-align: center;
}
.qr-footer-brand {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--text);
}
.qr-footer-hint {
  font-size: 0.82rem;
  color: var(--text-muted);
  margin: 6px 0 0;
}

/* ── QR Create – Form page ───────────────────────────────────────────────── */
.qr-create-layout {
  display: grid;
  grid-template-columns: 1fr 400px;
  gap: 32px;
  align-items: start;
  margin-top: 32px;
}
.qr-create-form-wrap {
  background: var(--surface);
  border-radius: var(--radius-lg);
  padding: 32px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border);
}
.qr-create-preview-wrap {
  position: sticky;
  top: calc(var(--header-h) + 20px);
}
.qr-instruction-card {
  background: var(--surface);
  border-radius: var(--radius-lg);
  padding: 28px 24px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border);
  text-align: center;
}
.qr-instruction-icon { font-size: 2.5rem; margin-bottom: 12px; }
.qr-instruction-card h3 { font-size: 1.1rem; font-weight: 700; margin-bottom: 16px; }
.qr-instruction-steps {
  text-align: left;
  padding-left: 20px;
  margin: 0 0 20px;
}
.qr-instruction-steps li {
  font-size: 0.9rem;
  color: var(--text-secondary);
  padding: 4px 0;
  line-height: 1.5;
}
.qr-instruction-badges {
  display: flex;
  gap: 8px;
  justify-content: center;
  flex-wrap: wrap;
}
.qr-result-card {
  background: var(--surface);
  border-radius: var(--radius-lg);
  padding: 28px 24px;
  box-shadow: var(--shadow-md);
  border: 1px solid var(--success);
  text-align: center;
}
.qr-result-header {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-size: 1rem;
  font-weight: 700;
  color: var(--success);
  margin-bottom: 20px;
}
.qr-result-image {
  width: 200px;
  height: 200px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  margin-bottom: 16px;
  display: block;
  margin-inline: auto;
}
.qr-result-hint {
  font-size: 0.88rem;
  color: var(--text-secondary);
  margin-bottom: 16px;
}
.qr-result-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.qr-result-share-hint {
  font-size: 0.8rem;
  color: var(--text-muted);
  margin-top: 10px;
}
@media (max-width: 900px) {
  .qr-create-layout { grid-template-columns: 1fr; }
  .qr-create-preview-wrap { position: static; }
}

/* ── Vet Chat ─────────────────────────────────────────────────────────────── */
.vet-chat-wrapper { max-width: 760px; margin: 0 auto; }
.chat-disclaimer {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  background: var(--warning-light);
  border: 1px solid var(--warning);
  border-radius: var(--radius);
  padding: 12px 16px;
  font-size: 0.88rem;
  color: var(--text-secondary);
  line-height: 1.5;
  margin-bottom: 20px;
}
.chat-disclaimer svg { flex-shrink: 0; color: var(--warning); margin-top: 1px; }
.vet-chat-container {
  background: var(--surface);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.vet-species-selector {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--bg);
  flex-wrap: wrap;
}
.vet-species-label {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.vet-species-tabs { display: flex; gap: 6px; }
.vet-species-btn {
  padding: 5px 14px;
  border-radius: 100px;
  border: 1.5px solid var(--border);
  background: var(--surface);
  color: var(--text-secondary);
  font-size: 0.88rem;
  font-weight: 600;
  cursor: pointer;
  transition: all var(--transition);
}
.vet-species-btn:hover { border-color: var(--accent); color: var(--accent); }
.vet-species-btn--active {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
.chat-messages {
  flex: 1;
  min-height: 360px;
  max-height: 520px;
  overflow-y: auto;
  padding: 20px 16px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  scroll-behavior: smooth;
}
.chat-bubble {
  display: flex;
  gap: 10px;
  max-width: 85%;
  animation: bubbleFadeIn 0.25s ease;
}
.chat-bubble--user {
  align-self: flex-end;
  flex-direction: row-reverse;
}
.chat-bubble--assistant { align-self: flex-start; }
.chat-avatar {
  flex-shrink: 0;
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--accent-light);
  display: flex; align-items: center; justify-content: center;
  font-size: 1rem;
  border: 1.5px solid var(--border);
  margin-top: 2px;
}
.chat-bubble-inner { display: flex; flex-direction: column; gap: 6px; }
.chat-bubble-text {
  padding: 12px 16px;
  border-radius: var(--radius-lg);
  font-size: 0.95rem;
  line-height: 1.55;
}
.chat-bubble--user .chat-bubble-text {
  background: var(--accent);
  color: #fff;
  border-bottom-right-radius: 4px;
}
.chat-bubble--assistant .chat-bubble-text {
  background: var(--bg);
  color: var(--text);
  border-bottom-left-radius: 4px;
  border: 1px solid var(--border-light);
}
.chat-bubble-meta {
  display: flex;
  justify-content: flex-end;
  padding: 0 4px;
}
.chat-bubble--assistant .chat-bubble-meta { justify-content: flex-start; }
@keyframes bubbleFadeIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Severity badges */
.severity-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.72rem;
  font-weight: 700;
  padding: 2px 9px;
  border-radius: 100px;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}
.severity-badge--low      { background: var(--success-light); color: var(--success); }
.severity-badge--medium   { background: var(--warning-light); color: hsl(32 88% 29%); }
.severity-badge--high     { background: #fff7ed; color: #c2410c; }
.severity-badge--critical { background: var(--danger-light);  color: var(--danger);  }

[data-theme="dark"] .severity-badge--high { background: #3b1503; color: #fb923c; }

/* Typing indicator */
.chat-typing {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 16px 12px;
}
.chat-typing-dots {
  display: flex;
  gap: 4px;
  padding: 10px 14px;
  background: var(--bg);
  border-radius: var(--radius-lg);
  border-bottom-left-radius: 4px;
  border: 1px solid var(--border-light);
}
.chat-typing-dots span {
  width: 6px; height: 6px;
  background: var(--text-muted);
  border-radius: 50%;
  animation: typingDot 1.2s infinite;
}
.chat-typing-dots span:nth-child(2) { animation-delay: 0.2s; }
.chat-typing-dots span:nth-child(3) { animation-delay: 0.4s; }
@keyframes typingDot {
  0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }
  30%           { transform: translateY(-5px); opacity: 1; }
}

/* Chat input */
.chat-input-area {
  padding: 14px 16px;
  border-top: 1px solid var(--border);
  background: var(--surface);
}
.chat-input-wrap {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  background: var(--bg);
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  padding: 8px 8px 8px 14px;
  transition: border-color var(--transition);
}
.chat-input-wrap:focus-within { border-color: var(--accent); }
.chat-input {
  flex: 1;
  border: none;
  background: transparent;
  resize: none;
  font-family: inherit;
  font-size: 0.95rem;
  color: var(--text);
  outline: none;
  min-height: 24px;
  max-height: 140px;
  line-height: 1.5;
  overflow-y: auto;
}
.chat-send-btn {
  flex-shrink: 0;
  width: 36px; height: 36px;
  border-radius: var(--radius-sm);
  background: var(--accent);
  color: #fff;
  border: none;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background var(--transition), opacity var(--transition);
}
.chat-send-btn:hover { background: var(--accent-hover); }
.chat-send-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.chat-input-hint {
  font-size: 0.75rem;
  color: var(--text-muted);
  margin-top: 6px;
  text-align: right;
}
.vet-severity-legend {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 0;
  flex-wrap: wrap;
}
.vet-severity-legend-title {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--text-muted);
}
.vet-severity-legend-items { display: flex; gap: 6px; flex-wrap: wrap; }
.vet-quick-prompts {
  padding: 8px 0 24px;
}
.vet-quick-title {
  font-size: 0.82rem;
  color: var(--text-muted);
  font-weight: 600;
  margin-bottom: 10px;
}
.vet-quick-buttons { display: flex; flex-wrap: wrap; gap: 8px; }

/* ── Breed Detection ─────────────────────────────────────────────────────── */
.breed-detect-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: start;
  margin-top: 32px;
}
.breed-upload-panel {
  background: var(--surface);
  border-radius: var(--radius-lg);
  padding: 28px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.breed-species-toggle {
  display: flex;
  gap: 8px;
}
.breed-toggle-btn {
  flex: 1;
  padding: 9px 16px;
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  background: var(--surface);
  color: var(--text-secondary);
  font-size: 0.95rem;
  font-weight: 600;
  cursor: pointer;
  transition: all var(--transition);
  text-align: center;
}
.breed-toggle-btn:hover { border-color: var(--accent); color: var(--accent); }
.breed-toggle-btn--active {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
.breed-drop-zone { min-height: 200px; }
.breed-photo-preview-wrap { width: 100%; position: relative; }
.breed-photo-preview {
  width: 100%;
  height: 240px;
  object-fit: cover;
  border-radius: calc(var(--radius) - 2px);
  display: block;
}
.breed-loading {
  text-align: center;
  padding: 16px 0;
  color: var(--text-secondary);
  font-size: 0.9rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.breed-loading[hidden] {
  display: none;
}
.breed-results-panel, .breed-empty-panel {
  background: var(--surface);
  border-radius: var(--radius-lg);
  padding: 28px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border);
}
.breed-empty-panel { text-align: center; padding: 40px 28px; }
.breed-empty-icon { font-size: 3rem; margin-bottom: 12px; }
.breed-empty-text {
  font-size: 1rem;
  color: var(--text-secondary);
  margin-bottom: 20px;
}
.breed-examples-title {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 8px;
  text-align: left;
}
.breed-examples-list {
  text-align: left;
  padding-left: 18px;
  color: var(--text-secondary);
  font-size: 0.88rem;
  line-height: 1.7;
  margin: 0;
}
.breed-top-result {
  background: var(--accent-light);
  border: 1px solid var(--accent);
  border-radius: var(--radius);
  padding: 20px;
  margin-bottom: 20px;
}
.breed-top-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--accent);
  margin-bottom: 6px;
}
.breed-top-name {
  font-size: 1.4rem;
  font-weight: 800;
  color: var(--text);
  margin-bottom: 12px;
  letter-spacing: 0;
}
.breed-top-confidence {
  display: flex;
  align-items: center;
  gap: 12px;
}
.breed-top5 { margin-bottom: 16px; }
.breed-top5-title {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 12px;
}
.breed-top5-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.breed-top5-item {
  display: flex;
  align-items: center;
  gap: 10px;
}
.breed-top5-rank {
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--text-muted);
  width: 16px;
  text-align: center;
  flex-shrink: 0;
}
.breed-top5-name {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--text);
  min-width: 120px;
}
.breed-top5-bar { max-width: 140px; }
.breed-ai-note {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  background: var(--bg);
  border-radius: var(--radius-sm);
  padding: 10px 14px;
  font-size: 0.85rem;
  color: var(--text-secondary);
  border: 1px solid var(--border-light);
  margin-bottom: 14px;
}
.breed-ai-note svg { flex-shrink: 0; color: var(--text-muted); margin-top: 1px; }
.breed-save-section { margin-top: 16px; }
@media (max-width: 768px) {
  .breed-detect-layout { grid-template-columns: 1fr; }
}

/* ── Photo Search ─────────────────────────────────────────────────────────── */
.photo-search-layout {
  display: grid;
  grid-template-columns: 380px 1fr;
  gap: 28px;
  align-items: start;
  margin-top: 32px;
}
.photo-search-upload-panel {
  background: var(--surface);
  border-radius: var(--radius-lg);
  padding: 24px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 14px;
  position: sticky;
  top: calc(var(--header-h) + 20px);
}
.photo-search-filter-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.photo-search-filter-label {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--text-muted);
  white-space: nowrap;
}
.photo-search-tabs { display: flex; gap: 4px; flex-wrap: wrap; }
.photo-search-tab {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  border-radius: 100px;
  border: 1.5px solid var(--border);
  background: var(--surface);
  color: var(--text-secondary);
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  transition: all var(--transition);
}
.photo-search-tab:hover { border-color: var(--accent); color: var(--accent); }
.photo-search-tab--active {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
.photo-search-drop-zone { min-height: 180px; }
.photo-search-preview-wrap { width: 100%; position: relative; }
.photo-search-preview-img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  border-radius: calc(var(--radius) - 2px);
  display: block;
}
.photo-search-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 12px 0;
  font-size: 0.9rem;
  color: var(--text-secondary);
}
.photo-search-loading[hidden] {
  display: none;
}
.photo-search-results-area {
  min-height: 300px;
}
.photo-search-empty {
  text-align: center;
  padding: 60px 20px;
  color: var(--text-secondary);
}
.photo-search-empty :is(h2, h3) { color: var(--text); margin-bottom: 8px; }
.photo-search-results-header {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 20px;
}
.photo-search-results-title {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--text);
  margin: 0;
}
.photo-search-results-count {
  font-size: 0.85rem;
  color: var(--text-muted);
}
.similarity-results {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 16px;
}
.similarity-card {
  background: var(--surface);
  border-radius: var(--radius);
  border: 1px solid var(--border);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: transform var(--transition), box-shadow var(--transition);
}
.similarity-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}
.similarity-card-photo {
  position: relative;
  aspect-ratio: 1;
  overflow: hidden;
  background: var(--border-light);
}
.similarity-card-photo img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease;
}
.similarity-card:hover .similarity-card-photo img { transform: scale(1.04); }
.similarity-photo-placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-size: 3rem;
}
.similarity-badge {
  position: absolute;
  top: 8px; right: 8px;
  font-size: 0.78rem;
  font-weight: 800;
  padding: 3px 8px;
  border-radius: 100px;
  backdrop-filter: blur(6px);
  letter-spacing: 0.02em;
}
.similarity-badge--high   { background: rgba(22,163,74,.9);  color: #fff; }
.similarity-badge--medium { background: rgba(217,119,6,.9);  color: #fff; }
.similarity-badge--low    { background: rgba(100,116,139,.8); color: #fff; }
.similarity-type-badge {
  position: absolute;
  bottom: 6px; left: 6px;
  font-size: 0.7rem;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 100px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  backdrop-filter: blur(6px);
}
.similarity-type-badge--lost   { background: rgba(220,38,38,.85); color: #fff; }
.similarity-type-badge--found  { background: rgba(22,163,74,.85);  color: #fff; }
.similarity-type-badge--shelter { background: rgba(37,99,235,.85); color: #fff; }
.similarity-card-body { padding: 12px; }
.similarity-card-name {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 2px;
}
.similarity-card-breed {
  font-size: 0.8rem;
  color: var(--text-muted);
  margin-bottom: 4px;
}
.similarity-card-loc {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 0.78rem;
  color: var(--text-muted);
  margin-bottom: 10px;
}
.similarity-card-actions { display: flex; gap: 8px; }
.photo-search-no-results {
  text-align: center;
  padding: 60px 20px;
  color: var(--text-secondary);
}
.photo-search-no-results :is(h2, h3) { color: var(--text); margin-bottom: 8px; }
@media (max-width: 900px) {
  .photo-search-layout { grid-template-columns: 1fr; }
  .photo-search-upload-panel { position: static; }
}
@media (max-width: 480px) {
  .similarity-results { grid-template-columns: 1fr 1fr; }
}

/* ── Animal Passport ─────────────────────────────────────────────────────── */
.passport-header {
  display: grid;
  grid-template-columns: 320px minmax(0, 1fr);
  gap: 32px;
  align-items: start;
  margin-bottom: 24px;
  padding: 0 0 16px;
}
.passport-photo-wrap {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-md);
  aspect-ratio: 4/3;
  background: var(--border-light);
}
.passport-main-photo {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.passport-photo-placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-size: 5rem;
}
.passport-header-info { display: flex; flex-direction: column; gap: 10px; }
.passport-summary-card {
  margin-top: 10px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 16px 18px;
}
.passport-summary-title {
  margin: 0 0 12px;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--text);
}
.passport-summary-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.passport-summary-item {
  background: var(--surface);
  border: 1px solid var(--border-light);
  border-radius: var(--radius);
  padding: 12px 14px;
}
.passport-summary-item strong {
  display: block;
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 4px;
}
.passport-summary-item span {
  display: block;
  font-size: 0.82rem;
  line-height: 1.45;
  color: var(--text-secondary);
}
.passport-tabs {
  display: flex;
  gap: 8px;
  border-bottom: none;
  margin-bottom: 28px;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 4px;
}
.passport-tabs::-webkit-scrollbar { display: none; }
.passport-tab {
  padding: 10px 16px;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text-muted);
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  border-radius: 999px;
  transition: color var(--transition), border-color var(--transition), background var(--transition), box-shadow var(--transition);
  white-space: nowrap;
  box-shadow: var(--shadow-sm);
}
.passport-tab:hover { color: var(--text); background: var(--bg); }
.passport-tab--active {
  color: var(--accent);
  border-color: rgba(232, 168, 56, 0.36);
  background: var(--accent-light);
  box-shadow: none;
}
.passport-panel { display: block; }
.passport-panel--active { display: block; }
.passport-section-heading {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 20px;
}
.passport-qr-section { max-width: 480px; }
.passport-qr-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  padding: 28px;
  background: var(--bg);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  margin-bottom: 16px;
}
.passport-qr-img {
  width: 200px; height: 200px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
}
.passport-qr-actions { display: flex; flex-direction: column; gap: 10px; width: 100%; max-width: 280px; }
.passport-qr-hint-box {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--accent-light);
  border-radius: var(--radius);
  padding: 12px 16px;
  font-size: 0.88rem;
  color: var(--text-secondary);
  border: 1px solid var(--accent);
}
.passport-qr-hint-box a { color: var(--accent); font-weight: 600; }
.passport-breed-section, .passport-vet-section, .passport-similar-section { max-width: 680px; }
.passport-breed-run {
  background: var(--bg);
  border-radius: var(--radius);
  padding: 28px;
  text-align: center;
  border: 1px solid var(--border);
}
.passport-breed-run p { color: var(--text-secondary); margin-bottom: 16px; }
.passport-info-grid { max-width: 680px; }

/* Vet timeline */
.vet-timeline {
  position: relative;
  padding-left: 28px;
}
.vet-timeline::before {
  content: '';
  position: absolute;
  left: 7px; top: 0; bottom: 0;
  width: 2px;
  background: var(--border);
}
.vet-record-item {
  position: relative;
  margin-bottom: 24px;
}
.vet-record-dot {
  position: absolute;
  left: -25px; top: 6px;
  width: 14px; height: 14px;
  border-radius: 50%;
  border: 2px solid var(--surface);
  background: var(--border);
  z-index: 1;
}
.vet-record-dot--vaccine  { background: var(--success); }
.vet-record-dot--treatment { background: var(--accent); }
.vet-record-dot--surgery  { background: var(--danger); }
.vet-record-dot--checkup  { background: var(--warning); }
.vet-record-content {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 16px;
  box-shadow: var(--shadow-sm);
}
.vet-record-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}
.vet-record-type {
  font-size: 0.85rem;
  font-weight: 700;
}
.vet-record-type--vaccine  { color: var(--success); }
.vet-record-type--treatment { color: var(--accent); }
.vet-record-type--surgery  { color: var(--danger); }
.vet-record-type--checkup  { color: var(--warning); }
.vet-record-date {
  font-size: 0.8rem;
  color: var(--text-muted);
}
.vet-record-desc {
  font-size: 0.92rem;
  color: var(--text-secondary);
  line-height: 1.5;
  margin: 0;
}
.vet-record-doctor {
  font-size: 0.8rem;
  color: var(--text-muted);
  margin: 4px 0 0;
}
@media (max-width: 768px) {
  .passport-header { grid-template-columns: 1fr; }
  .passport-photo-wrap { aspect-ratio: 16/10; }
}

/* ── LostFound AI Search banner ───────────────────────────────────────────── */
.lostfound-ai-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  background: linear-gradient(135deg, var(--accent-light), var(--bg));
  border: 1.5px solid var(--accent);
  border-radius: var(--radius-lg);
  padding: 16px 20px;
  margin-bottom: 24px;
  flex-wrap: wrap;
}
.lostfound-ai-banner-text { flex: 1; min-width: 200px; }
.lostfound-ai-banner-text strong {
  display: block;
  font-size: 1rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 2px;
}
.lostfound-ai-banner-text span {
  font-size: 0.88rem;
  color: var(--text-secondary);
}

/* ── Nav «Ещё» Dropdown ──────────────────────────────────────────────── */
.nav-more {
  position: relative;
}
.nav-more-btn {
  background: none;
  border: none;
  cursor: pointer;
  font-family: inherit;
}
.nav-more-btn svg {
  transition: transform var(--transition);
}
.nav-more.open .nav-more-btn svg {
  transform: rotate(180deg);
}
.nav-more-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 220px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  padding: 6px;
  z-index: 200;
}
.nav-more.open .nav-more-dropdown {
  display: block;
}
.nav-more-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--text-secondary);
  transition: background var(--transition), color var(--transition);
  text-decoration: none;
}
.nav-more-item:hover, .nav-more-item.active {
  background: var(--accent-light);
  color: var(--text);
}
.nav-more-icon {
  width: 20px;
  text-align: center;
  font-size: 0.95rem;
  flex-shrink: 0;
}
.nav-more-divider {
  height: 1px;
  background: var(--border-light);
  margin: 4px 8px;
}

/* Hide dropdown on mobile (bottom-nav handles everything) */
@media (max-width: 768px) {
  .nav-more { display: none; }
}

/* ═══════════════════════════════════════════════════════════
   NEW GUIDE SECTIONS – Walking, Dog Parks, Bite Protocol
   ═══════════════════════════════════════════════════════════ */

/* Dog Parks Grid */
.guide-parks-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
  margin-top: 2rem;
}

.guide-park-city {
  background: var(--surface);
  border-radius: var(--radius);
  padding: 1.75rem;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-light);
  transition: box-shadow var(--transition), transform var(--transition);
}

.guide-park-city:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

.guide-park-city-name {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 1rem;
}

.guide-park-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .65rem;
}

.guide-park-list li {
  position: relative;
  padding-left: 1.25rem;
  font-size: .9rem;
  color: var(--text-secondary);
  line-height: 1.5;
}

.guide-park-list li::before {
  content: '📍';
  position: absolute;
  left: 0;
  top: 0;
  font-size: .75rem;
}

.guide-parks-note {
  text-align: center;
  color: var(--text-muted);
  font-size: .875rem;
  margin-top: 1.5rem;
  font-style: italic;
}

/* Bite Protocol Grid */
.guide-bite-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 1.5rem;
  margin-top: 2rem;
}

.guide-bite-card {
  background: var(--surface);
  border-radius: var(--radius);
  padding: 2rem;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border-light);
}

.guide-bite-card-title {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 1.25rem;
  padding-bottom: .75rem;
  border-bottom: 2px solid var(--border-light);
}

.guide-bite-steps {
  list-style: none;
  padding: 0;
  margin: 0;
  counter-reset: bite-step;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.guide-bite-steps li {
  counter-increment: bite-step;
  position: relative;
  padding-left: 2.25rem;
  font-size: .9rem;
  color: var(--text-secondary);
  line-height: 1.5;
}

.guide-bite-steps li::before {
  content: counter(bite-step);
  position: absolute;
  left: 0;
  top: 0;
  width: 1.5rem;
  height: 1.5rem;
  background: var(--accent);
  color: #fff;
  border-radius: 50%;
  font-size: .75rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ═══════════════════════════════════════════════════════════
   PROFESSIONAL UI POLISH
   ═══════════════════════════════════════════════════════════ */

/* Adoption form fieldset improvements */
.adopt-form .form-fieldset {
  border: 1px solid var(--border-light);
  border-radius: var(--radius);
  padding: 1.5rem;
  margin-bottom: 1.5rem;
}

.adopt-form .form-legend {
  font-weight: 700;
  font-size: 1rem;
  color: var(--text);
  padding: 0 .5rem;
}

/* Vet quick prompts – more chips */
.vet-quick-buttons {
  flex-wrap: wrap;
}

/* Guide hero nav – wrap on mobile with new links */
@media (max-width: 768px) {
  .guide-hero-nav {
    flex-wrap: wrap;
    gap: .5rem;
    justify-content: flex-start;
  }
  
  .guide-hero-nav-link {
    font-size: .8rem;
    padding: .4rem .75rem;
  }
  .guide-hero-highlights {
    grid-template-columns: 1fr;
  }
  
  .guide-bite-grid {
    grid-template-columns: 1fr;
  }
  
  .guide-parks-grid {
    grid-template-columns: 1fr;
  }
}

.verification-note {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: fit-content;
  margin-top: 8px;
  color: hsl(32 88% 29%);
  font-size: 12px;
  font-weight: 700;
}

.verification-note svg,
.animal-verification-alert > svg {
  flex: 0 0 auto;
}

.animal-verification-alert {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 14px 0;
  padding: 12px 14px;
  color: var(--text-secondary);
  background: var(--warning-light);
  border-left: 3px solid var(--warning);
  border-radius: var(--radius-sm);
}

.animal-verification-alert strong,
.animal-verification-alert span {
  display: block;
}

.animal-verification-alert strong {
  color: var(--text);
  margin-bottom: 2px;
}

.animal-verification-date {
  margin: 10px 0;
  color: var(--text-muted);
  font-size: 13px;
}

/* Smooth scroll for guide anchors */
html {
  scroll-behavior: smooth;
}

/* Better card hover transitions for all guide cards */
.guide-req-card,
.guide-chip-card,
.guide-health-card,
.guide-event-card {
  transition: box-shadow var(--transition), transform var(--transition);
}

.guide-req-card:hover,
.guide-chip-card:hover,
.guide-health-card:hover,
.guide-event-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

/* Animal card polish */
.animal-card {
  transition: box-shadow var(--transition), transform var(--transition);
}

.animal-card:hover {
  box-shadow: 0 6px 20px rgba(232,168,56,0.15);
  transform: translateY(-3px);
  border-color: rgba(232,168,56,0.35);
}
[data-theme="dark"] .animal-card:hover {
  box-shadow: 0 6px 20px rgba(240,184,74,0.12);
  border-color: rgba(240,184,74,0.3);
}

/* Footer enhancement */
.site-footer {
  border-top: 1px solid var(--border-light);
}

/* Better filter chips active state */
.chip--active {
  font-weight: 600;
  color: hsl(var(--primary-foreground));
}

/* ═══════════════════════════════════════════════════════════
   BOTTOM NAVIGATION – App-like Mobile Experience
   ═══════════════════════════════════════════════════════════ */

.bottom-nav {
  display: none;
}

/* Bottom nav SVGs: always constrain even outside media query */
.bottom-nav-item svg {
  width: 22px;
  height: 22px;
  flex-shrink: 0;
}

@media (max-width: 768px) {
  .bottom-nav {
    display: flex;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 200;
    background: var(--surface);
    border-top: 1px solid var(--border-light);
    height: var(--bottom-nav-h);
    padding-bottom: env(safe-area-inset-bottom, 0px);
    box-shadow: 0 -2px 12px rgba(0,0,0,0.06);
  }

  .bottom-nav-inner {
    display: flex;
    align-items: stretch;
    justify-content: space-around;
    width: 100%;
    max-width: 500px;
    margin: 0 auto;
    height: 100%;
  }

  .bottom-nav-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1px;
    flex: 1;
    color: var(--text-muted);
    font-size: 0.58rem;
    font-weight: 500;
    letter-spacing: 0.01em;
    text-decoration: none;
    transition: color var(--transition);
    position: relative;
    -webkit-tap-highlight-color: transparent;
    padding: 4px 0 2px;
  }

  .bottom-nav-item svg {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
  }

  .bottom-nav-item.active {
    color: var(--accent);
    font-weight: 600;
  }

  .bottom-nav-item.active::after {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 16px;
    height: 2px;
    background: var(--accent);
    border-radius: 0 0 2px 2px;
  }

  .bottom-nav-item--urgent {
    color: var(--danger);
  }
  .bottom-nav-item--urgent.active {
    color: var(--danger);
  }
  .bottom-nav-item--urgent.active::after {
    background: var(--danger);
  }

  /* Spacer for bottom nav */
  body {
    padding-bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom, 0px));
  }

  /* Фиксированная навигация не должна перекрывать последний CTA в карточке. */
  .animal-action-card {
    scroll-margin-bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom, 0px) + 20px);
  }

  .request-status-page { padding: 32px 0; }
  .request-status-card { padding: 24px 20px; }

  /* Secondary routes open as a compact sheet above the primary bottom nav. */
  .mobile-nav {
    position: fixed;
    left: 12px;
    right: 12px;
    bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom, 0px) + 10px);
    z-index: 190;
    display: none !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    max-height: min(62vh, 360px);
    padding: 8px;
    overflow-y: auto;
    border: 1px solid var(--border-light);
    border-radius: 12px;
    background: var(--surface);
    box-shadow: var(--shadow-lg);
  }

  .mobile-nav.is-open { display: grid !important; }

  .mobile-nav-link {
    min-width: 0;
    padding: 12px;
    border-radius: 8px;
    background: color-mix(in srgb, var(--surface) 92%, var(--accent-light));
  }

  .mobile-nav-backdrop {
    position: fixed;
    inset: 0;
    z-index: 180;
    border: 0;
    background: color-mix(in srgb, var(--text) 18%, transparent);
  }

  .mobile-nav-backdrop[hidden] { display: none; }
  .mobile-menu-btn { display: none !important; }

  /* ── Compact mobile header ── */
  .site-header {
    height: 48px;
    overflow-x: hidden;  /* prevent sun-icon clipping */
  }
  .header-inner {
    gap: 6px;
    overflow: visible;
  }
  .logo svg {
    width: 28px;
    height: 28px;
  }
  .logo-text {
    font-size: 1.05rem;
  }
  .header-actions {
    gap: 4px;
    flex-shrink: 0;
  }
  .lang-switch { gap: 1px; }
  .lang-btn { padding: 3px 5px; font-size: 10px; }
  .theme-toggle {
    width: 28px;
    height: 28px;
  }
  .theme-toggle svg { width: 15px; height: 15px; }

  /* ── Hero stats – compact horizontal strip on mobile ── */
  .hero-banner { padding: 6px 0; }
  .hero-stats {
    display: flex;
    justify-content: space-around;
    gap: 0;
  }
  .hero-stat {
    flex: 1;
    padding: 6px 2px;
    display: flex;
    flex-direction: row;
    align-items: baseline;
    justify-content: center;
    gap: 4px;
    border-right: 1px solid var(--border-light);
  }
  .hero-stat:last-child {
    border-right: none;
  }
  .hero-stat-div { display: none; }
  .hero-stat-number { font-size: 1.05rem; font-weight: 800; line-height: 1; }
  .hero-stat-label { font-size: 0.6rem; line-height: 1.2; text-align: left; }

  /* ── Urgent banner – warmer, less alarming ── */
  .hero-urgent-banner {
    font-size: 0.72rem;
    padding: 8px 12px;
    margin-top: 6px;
    background: #FEF3E2;
    border-color: #F5D8A8;
    color: var(--text);
    border-radius: var(--radius);
    gap: 8px;
  }
  .hero-urgent-banner strong {
    color: var(--danger);
  }
  .hero-urgent-link {
    color: var(--accent-hover);
    font-weight: 600;
  }

  /* ── Filters – better mobile layout ── */
  .filters-section {
    top: 48px;
    position: relative;
    top: auto;
  }
  .filters-toggle {
    padding: 10px 16px;
    font-size: 0.82rem;
  }
  .filters-body {
    padding: 10px 16px 14px;
  }
  .filters-form {
    gap: 10px;
  }
  .filter-group {
    width: 100%;
    gap: 5px;
  }
  .filter-label {
    font-size: 0.68rem;
    letter-spacing: 0.04em;
    color: var(--text-muted);
  }
  .filter-chips { gap: 5px; }
  .chip {
    padding: 5px 11px;
    font-size: 0.76rem;
  }
  .filter-select {
    width: 100%;
    min-width: 0;
    font-size: 0.82rem;
    padding: 7px 12px;
  }
  /* СРОЧНО + ГОРОД side by side */
  .filter-group:has(.filter-select) {
    /* Let city dropdown take full width */
  }

  /* ── Section titles on mobile ── */
  .section-header {
    padding-top: 16px;
    margin-bottom: 14px;
    flex-direction: column;
    gap: 4px;
  }
  .section-title { font-size: 1.1rem; }
  .section-count { font-size: 0.78rem; }

  /* ── Animal cards – tighter on mobile ── */
  .animals-grid { gap: 10px; }
  .animal-card-body { padding: 10px; gap: 4px; }
  .animal-name { font-size: 0.88rem; }
  .animal-meta { font-size: 0.72rem; }
  .animal-badges .badge { font-size: 0.65rem; padding: 2px 6px; }
  .animal-shelter { font-size: 0.68rem; }
  .animal-adopt-btn { margin: 0 10px 10px; padding: 7px 10px; font-size: 0.76rem; }
  .timer-badge { font-size: 0.73rem; padding: 4px 8px; gap: 4px; }
  .timer-badge svg { width: 11px; height: 11px; }
  .urgent-badge { font-size: 0.6rem; padding: 2px 7px; top: 6px; left: 6px; }
  .fav-btn { width: 30px; height: 30px; top: 6px; right: 6px; }
  .fav-btn svg { width: 16px; height: 16px; }
  .share-mini-btn { width: 26px; height: 26px; top: 6px; right: 40px; }
  .share-mini-btn svg { width: 13px; height: 13px; }

  /* ── Footer – compact, no giant icons ── */
  .site-footer {
    margin-top: 24px;
    margin-bottom: 0;
    padding: 16px 0 12px;
  }
  .footer-copy { font-size: 0.72rem; }

  /* ── PWA banner above bottom nav ── */
  .pwa-banner {
    bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom, 0px));
  }
}

/* ═══════════════════════════════════════════════════════════
   SOFTER CARD STYLES – warmer, more welcoming
   ═══════════════════════════════════════════════════════════ */

/* Softer animal card borders */
.animal-card {
  border-color: var(--border-light);
  border-width: 1px;
}
.animal-card:hover {
  border-color: var(--border);
}

/* Softer hero banner */
.hero-banner {
  background: var(--bg);
  border-bottom-color: var(--border-light);
}

/* Softer filter section */
.filters-section {
  border-bottom-color: var(--border-light);
}

/* Buttons – slightly more rounded, gentler */
.btn {
  border-radius: var(--radius-sm);
}

/* Donate button – keep warm but not alarming */
.btn--accent {
  background: var(--accent);
  color: hsl(var(--primary-foreground));
  border-color: var(--accent);
}
.btn--accent:hover {
  background: var(--accent-hover);
  border-color: var(--accent-hover);
}

/* ═══════════════════════════════════════════════════════════
   MOBILE ROUND 3 – detailed polish (2024-04-13)
   ═══════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  /* ── Animal meta text truncation ── */
  .animal-meta {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.35;
  }

  /* ── Timer/ПРОСРОЧЕНО badge – more compact ── */
  .timer-badge {
    font-size: 0.65rem;
    padding: 3px 7px;
    gap: 3px;
    border-radius: 6px;
  }
  .timer-badge svg { width: 10px; height: 10px; }

  /* ── СРОЧНО badge – smaller, crisper ── */
  .urgent-badge {
    font-size: 0.55rem;
    padding: 2px 6px;
    top: 5px;
    left: 5px;
    border-radius: 4px;
    letter-spacing: 0.03em;
  }

  /* ── Share/Fav buttons – tighter on mobile cards ── */
  .fav-btn {
    width: 28px;
    height: 28px;
    top: 5px;
    right: 5px;
  }
  .fav-btn svg { width: 14px; height: 14px; }
  .share-mini-btn {
    width: 24px;
    height: 24px;
    top: 5px;
    right: 37px;
  }
  .share-mini-btn svg { width: 12px; height: 12px; }

  /* ── Animal card body – tighter gaps ── */
  .animal-card-body {
    padding: 8px 10px;
    gap: 3px;
  }
  .animal-name { font-size: 0.85rem; }
  .animal-meta { font-size: 0.7rem; color: var(--text-muted); }
  .animal-badges .badge {
    font-size: 0.6rem;
    padding: 1px 5px;
    border-radius: 4px;
  }
  .animal-shelter {
    font-size: 0.65rem;
    gap: 3px;
    margin-top: 2px;
  }
  .animal-shelter svg { width: 10px; height: 10px; }
  .animal-adopt-btn {
    margin: 0 8px 8px;
    padding: 6px 8px;
    font-size: 0.73rem;
    border-radius: 8px;
  }

  /* ── Animal species badge – smaller on mobile ── */
  .animal-species-badge { font-size: 0.95rem; }

  /* ── Pagination – less padding ── */
  .pagination {
    padding-top: 20px;
    padding-bottom: 8px;
    gap: 12px;
  }
  .pagination-btn {
    padding: 6px 14px;
    font-size: 0.8rem;
  }
  .pagination-info { font-size: 0.8rem; }

  /* ── Animals section – less bottom padding ── */
  .animals-section {
    padding-bottom: 16px;
  }

  /* ── Success stories – horizontal scroll on mobile ── */
  .success-section {
    padding: 24px 0 32px;
  }
  .success-section .section-header {
    padding-top: 8px;
    margin-bottom: 12px;
  }
  .success-section .section-title {
    font-size: 1.05rem;
  }
  .success-section .section-subtitle {
    font-size: 0.78rem;
  }
  .success-grid {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    gap: 10px;
    margin-top: 12px;
    padding-bottom: 8px;
    scrollbar-width: none;
  }
  .success-grid::-webkit-scrollbar { display: none; }
  .success-card {
    flex: 0 0 42vw;
    max-width: 180px;
    scroll-snap-align: start;
  }
  .success-photo {
    aspect-ratio: 3/4;
  }
  .success-body {
    padding: 6px 8px;
  }
  .success-name { font-size: 13px; }
  .success-meta { font-size: 11px; }
  .success-badge {
    font-size: 10px;
    padding: 2px 8px;
  }

  /* ── Animal photo aspect ratio – slightly taller for mobile ── */
  .animal-photo {
    aspect-ratio: 4/3;
  }

  /* ── Card overall refinement ── */
  .animal-card {
    border-radius: var(--radius-sm);
    overflow: hidden;
  }
  .animal-photo {
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
  }
}

/* ════════════════════════════════════════════════════════════════════════════
   FULL-SITE REVIEW FIXES – 2026-04-13d
   ════════════════════════════════════════════════════════════════════════════ */

/* ── /urgent: Title too large on mobile, hero padding excessive, pulse dot clipped ── */
@media (max-width: 768px) {
  .urgent-title {
    font-size: 1.35rem;
    line-height: 1.25;
  }
  .urgent-hero {
    padding: 20px 0;
  }
  .urgent-hero-inner {
    gap: 14px;
  }
  .pulse-dot--xl {
    margin-left: 4px;
  }
}

/* ── /animal/{id}: Similar-animals photos face centering ── */
.similar-section .animal-photo img {
  object-position: center 30%;
}

/* ── /vet: Chat input area buried behind bottom nav on mobile ── */
@media (max-width: 768px) {
  .vet-chat-wrapper {
    padding-bottom: calc(var(--bottom-nav-h) + 12px);
  }
  .vet-severity-legend {
    padding-bottom: 8px;
  }
  .vet-quick-prompts {
    padding-bottom: calc(var(--bottom-nav-h) + 16px);
  }
}

/* ── /favorites: Empty state button text invisible (amber on amber) ── */
.empty-state .btn--primary {
  color: #fff !important;
}

/* ── /shelters: Tighter card padding on mobile ── */
@media (max-width: 768px) {
  .shelter-card {
    padding: 16px;
    gap: 12px;
  }
  .shelter-card-header {
    gap: 12px;
  }
  .shelter-name {
    font-size: 1rem;
  }
}

/* ── /lostfound: Tighter card padding on mobile ── */
@media (max-width: 768px) {
  .lostfound-body {
    padding: 12px;
  }
  .lostfound-contact {
    padding: 12px;
  }
}

/* ── Global photo centering: success, swipe, lostfound ── */
.success-photo img {
  object-position: center 30%;
}
.swipe-card-photo img {
  object-position: center 30%;
}
.lostfound-photo {
  object-position: center 30%;
}
.similarity-card-photo img {
  object-position: center 30%;
}

/* ================================================================
   Wave 2: Auth & Alerts
   ================================================================ */

/* --- Nav auth elements --- */
.nav-login-btn {
  font-size: 0.82rem;
  padding: 6px 14px;
}
.nav-user-link {
  display: flex;
  align-items: center;
}
.nav-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--accent);
}
.nav-avatar--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--accent);
  color: #fff;
  font-weight: 700;
  font-size: 0.85rem;
}

/* --- Auth page --- */
.auth-page {
  padding: 80px 0;
  min-height: 60vh;
  display: flex;
  align-items: center;
}
.auth-card {
  max-width: 420px;
  margin: 0 auto;
  background: var(--surface);
  border-radius: 16px;
  box-shadow: var(--shadow-lg);
  padding: 48px 40px;
  text-align: center;
}
.auth-card-header svg {
  margin-bottom: 16px;
}
.auth-card-header h1 {
  font-size: 1.5rem;
  margin: 0 0 8px;
  color: var(--text);
}
.auth-subtitle {
  color: var(--text-secondary);
  font-size: 0.9rem;
  margin: 0 0 24px;
}
.auth-buttons {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 20px;
}
.btn--google {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 12px 20px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font-weight: 600;
  font-size: 0.95rem;
  text-decoration: none;
  transition: all 0.15s;
}
.btn--google:hover {
  background: var(--bg);
  border-color: var(--text-muted);
}
.auth-footer-text {
  color: var(--text-muted);
  font-size: 0.8rem;
  margin: 0;
}

/* --- Profile page --- */
.profile-page {
  padding: 40px 0 80px;
}
.profile-header {
  display: flex;
  align-items: center;
  gap: 20px;
  margin-bottom: 40px;
  flex-wrap: wrap;
}
.profile-avatar {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  object-fit: cover;
  border: 3px solid var(--accent);
}
.profile-avatar--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--accent);
  color: #fff;
  font-size: 1.5rem;
  font-weight: 700;
}
.profile-info h1 {
  margin: 0;
  font-size: 1.4rem;
}
.profile-email {
  color: var(--text-secondary);
  margin: 4px 0 0;
  font-size: 0.9rem;
}
.profile-since {
  color: var(--text-muted);
  font-size: 0.82rem;
  margin: 2px 0 0;
}
.profile-logout {
  margin-left: auto;
}
.profile-section {
  margin-bottom: 32px;
}
.profile-section h2 {
  font-size: 1.15rem;
  margin: 0 0 16px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border-light);
}
.profile-alerts-list,
.profile-requests-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.profile-alert-card,
.profile-request-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border: 1px solid var(--border-light);
  border-radius: 10px;
  background: var(--bg);
}
.profile-alert-info {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.profile-alert-email {
  font-size: 0.9rem;
  color: var(--text);
}
.profile-alert-status {
  font-size: 0.78rem;
  padding: 2px 10px;
  border-radius: 20px;
  background: var(--danger-light);
  color: var(--danger);
}
.profile-alert-status--active {
  background: var(--success-light);
  color: var(--success);
}
.profile-request-info {
  display: flex;
  align-items: center;
  gap: 12px;
}
.profile-request-date {
  color: var(--text-muted);
  font-size: 0.82rem;
}
.profile-empty {
  color: var(--text-muted);
  font-size: 0.9rem;
  text-align: center;
  padding: 24px;
}

/* --- Alert subscribe section --- */
.alert-subscribe-section {
  padding: 48px 0;
  background: var(--accent-light);
}
.alert-subscribe-card {
  max-width: 700px;
  margin: 0 auto;
  text-align: center;
}
.alert-subscribe-header h2 {
  font-size: 1.3rem;
  margin: 0 0 6px;
}
.alert-subscribe-header p {
  color: var(--text-secondary);
  font-size: 0.9rem;
  margin: 0 0 20px;
}
.alert-form-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: center;
}
.alert-form-row .input {
  flex: 1;
  min-width: 160px;
  padding: 10px 14px;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 0.9rem;
  background: var(--surface);
}
.alert-form-row .input--select {
  flex: 0.7;
  min-width: 120px;
}
.alert-form-msg {
  margin-top: 12px;
  font-size: 0.85rem;
  padding: 8px 16px;
  border-radius: 8px;
}
.alert-form-msg--ok {
  background: var(--success-light);
  color: var(--success);
}
.alert-form-msg--err {
  background: var(--danger-light);
  color: var(--danger);
}

@media (max-width: 768px) {
  .auth-card {
    padding: 32px 24px;
    margin: 0 auto;
  }
  .profile-header {
    flex-direction: column;
    text-align: center;
  }
  .profile-logout {
    margin-left: 0;
  }
  .alert-form-row {
    flex-direction: column;
  }
  .alert-form-row .input,
  .alert-form-row .input--select {
    min-width: auto;
    flex: auto;
  }
}

/* ==========================================================================
   VISUAL HIERARCHY PASS – 2026-07-10
   Секции группируются ритмом и разделителями. Контур остается только у
   самостоятельных объектов и рабочих областей.
   ========================================================================== */

.avds-page-band {
  padding: 36px 0 28px;
}

.avds-shell {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.avds-hero {
  padding: 12px 0 28px;
  border-bottom: 1px solid var(--border-light);
}

.avds-metric-strip {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  overflow: visible;
  background: transparent;
  border: 0;
  border-radius: 0;
}

.avds-metric {
  padding: 14px 18px;
  background: transparent;
}

.avds-metric:nth-child(even) {
  border-left: 1px solid var(--border-light);
}

.avds-utility-grid {
  gap: 28px;
  margin-top: 26px;
}

.avds-utility-card,
.avds-utility-card--soft {
  padding: 18px 0 0;
  background: transparent;
  border: 0;
  border-top: 1px solid var(--border-light);
  border-radius: 0;
  box-shadow: none;
}

.avds-section-shell {
  padding: 20px 0;
}

.filters-section {
  padding: 12px 0;
  background: color-mix(in srgb, var(--bg) 94%, var(--surface));
}

.filters-section .avds-section-shell {
  padding: 0;
}

.btn {
  border-width: 1px;
}

.chip,
.filter-select,
.photo-search-tab,
.vet-species-btn,
.breed-toggle-btn {
  border-width: 1px;
}

/* Повторяемая карточка животного – самостоятельный объект, но без подъема и тени. */
.animal-card,
.lostfound-card,
.shelter-card,
.success-card {
  box-shadow: none;
}

.animal-card:hover,
.animal-card--urgent:hover,
.lostfound-card:hover,
.shelter-card:hover,
.success-card:hover {
  transform: none;
  box-shadow: none;
}

/* Справочник читается как документ, а не как сетка вложенных карточек. */
.guide-hero {
  padding: 36px 0 22px;
  color: var(--text);
  background: transparent;
}

.guide-hero-highlights {
  gap: 24px;
  margin-top: 24px;
}

.guide-hero-highlight {
  min-height: 0;
  padding: 14px 0 0;
  background: transparent;
  border: 0;
  border-top: 1px solid var(--border-light);
  border-radius: 0;
  box-shadow: none;
}

.guide-hero-nav {
  padding-top: 18px;
  border-top: 1px solid var(--border-light);
}

.guide-hero-nav-link {
  padding: 5px 0;
  color: var(--text-secondary);
  background: transparent;
  border: 0;
  border-radius: 0;
}

.guide-hero-nav-link:hover {
  color: var(--accent);
  background: transparent;
}

.guide-section,
.guide-section--alt {
  padding: 48px 0;
  background: transparent;
  border-top: 1px solid var(--border-light);
}

.guide-section .section-header {
  display: block;
  padding-top: 0;
  margin-bottom: 28px;
  text-align: left;
}

.guide-section .section-subtitle {
  margin-right: 0;
  margin-left: 0;
}

.guide-req-grid,
.guide-chip-grid,
.guide-health-grid,
.guide-events-grid {
  gap: 28px;
}

.guide-req-card,
.guide-chip-card,
.guide-chip-card--accent,
.guide-health-card,
.guide-event-card,
.guide-chip-cost,
.guide-chip-fines {
  padding: 20px 0 0;
  background: transparent;
  border: 0;
  border-top: 1px solid var(--border-light);
  border-radius: 0;
  box-shadow: none;
  text-align: left;
}

.guide-req-card:hover,
.guide-chip-card:hover,
.guide-health-card:hover,
.guide-event-card:hover {
  transform: none;
  box-shadow: none;
}

.faq-item {
  margin: 0;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--border-light);
  border-radius: 0;
}

.faq-question {
  padding: 18px 0;
}

.faq-answer {
  padding-right: 0;
  padding-left: 0;
}

/* У самостоятельных рабочих областей остается один понятный внешний контур. */
.qr-create-form-wrap.avds-shell,.breed-upload-panel.avds-shell,
.breed-results-panel.avds-shell,
.breed-empty-panel.avds-shell {
  padding: 28px;
  background: var(--surface);
  border: 1px solid var(--border-light);
  border-radius: var(--radius);
  box-shadow: none;
}

.qr-create-preview-wrap.avds-shell {
  padding: 0;
}

.qr-instruction-card {
  padding: 20px 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  text-align: left;
}

.qr-instruction-badges {
  justify-content: flex-start;
}

.photo-search-layout.avds-shell {
  padding: 24px 0;
}

.photo-search-upload-panel,
.vet-chat-container {
  border-color: var(--border-light);
  border-radius: var(--radius);
  box-shadow: none;
}

.lostfound-ai-banner {
  padding: 18px 0;
  margin-bottom: 8px;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--border-light);
  border-radius: 0;
}

.tabs {
  margin-top: 0;
  border-bottom-width: 1px;
}

@media (max-width: 768px) {
  .avds-page-band {
    padding: 24px 0 16px;
  }

  .avds-hero {
    padding: 6px 0 20px;
    gap: 20px;
  }

  .avds-metric {
    padding: 12px 14px;
  }

  .avds-metric-value {
    font-size: 1.3rem;
  }

  .avds-utility-grid {
    gap: 18px;
    margin-top: 18px;
  }

  .avds-utility-card,
  .avds-utility-card--soft {
    padding-top: 14px;
  }

  .filters-section {
    padding: 0;
  }

  .filters-toggle {
    padding-right: 0;
    padding-left: 0;
  }

  .filters-body {
    padding-right: 0;
    padding-left: 0;
  }

  .guide-hero {
    padding: 24px 0 14px;
  }

  .guide-hero-highlights {
    gap: 16px;
  }

  .guide-section,
  .guide-section--alt {
    padding: 36px 0;
  }

  .guide-req-grid,
  .guide-chip-grid,
  .guide-health-grid,
  .guide-events-grid {
    gap: 20px;
  }

  .qr-create-layout,
  .breed-detect-layout,
  .photo-search-layout {
    margin-top: 16px;
  }

  .qr-create-form-wrap.avds-shell,  .breed-upload-panel.avds-shell,
  .breed-results-panel.avds-shell,
  .breed-empty-panel.avds-shell {
    padding: 20px 0;
    background: transparent;
    border: 0;
    border-radius: 0;
  }

  .photo-search-upload-panel {
    padding: 18px 0;
    background: transparent;
    border: 0;
    border-radius: 0;
  }
}

/* ==========================================================================
   CARD BALANCE CORRECTION – 2026-07-10
   Возвращаем контейнеры только самостоятельным сценариям и смысловым группам.
   ========================================================================== */

.avds-utility-card {
  padding: 20px;
  background: var(--surface);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-sm);
}

.avds-utility-card--soft {
  background: color-mix(in srgb, var(--surface) 80%, var(--accent-light));
}

.guide-hero-highlight {
  padding: 16px;
  background: var(--surface);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-sm);
}

.guide-req-card,
.guide-chip-card,
.guide-chip-card--accent,
.guide-health-card,
.guide-event-card {
  padding: 22px;
  background: var(--surface);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-sm);
}

.guide-chip-card--accent {
  background: color-mix(in srgb, var(--surface) 78%, var(--accent-light));
}

.guide-health-card {
  text-align: center;
}

.lostfound-ai-banner {
  padding: 16px 18px;
  margin-bottom: 12px;
  background: color-mix(in srgb, var(--surface) 76%, var(--accent-light));
  border: 1px solid color-mix(in srgb, var(--border-light) 45%, var(--accent));
  border-radius: var(--radius-sm);
}

.qr-instruction-card {
  padding: 24px;
  background: var(--surface);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-sm);
}

@media (max-width: 768px) {
  .avds-utility-grid {
    gap: 10px;
  }

  .avds-utility-card {
    padding: 16px;
  }

  .guide-hero-highlights,
  .guide-req-grid,
  .guide-chip-grid,
  .guide-health-grid,
  .guide-events-grid {
    gap: 12px;
  }

  .guide-req-card,
  .guide-chip-card,
  .guide-chip-card--accent,
  .guide-health-card,
  .guide-event-card {
    padding: 18px;
  }

  .qr-instruction-card {
    padding: 20px 0;
    background: transparent;
    border: 0;
    border-radius: 0;
  }
}

/* Final readability guard: user content must never be hidden behind ellipses. */
.pwa-banner-text strong,
.pwa-banner-text span {
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
}

@media (max-width: 768px) {
  .animal-meta {
    display: block;
    overflow: visible;
    -webkit-line-clamp: unset;
    -webkit-box-orient: initial;
  }
}

@media (max-width: 520px) {
  .animals-grid,
  .animals-grid--4 {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .animal-photo {
    aspect-ratio: 16 / 10;
  }

  .animal-card-body {
    padding: 14px;
    gap: 7px;
  }

  .animal-name {
    font-size: 1rem;
  }

  .animal-meta,
  .animal-shelter {
    font-size: 0.82rem;
  }

  .animal-badges .badge {
    font-size: 0.72rem;
    padding: 3px 8px;
    border-radius: 999px;
  }

  .animal-adopt-btn {
    margin: 0 14px 14px;
    padding: 10px 14px;
    font-size: 0.86rem;
  }
}

/* -------------------------------------------------------------------------
   MOBILE APP QUALITY PASS – 2026-07-24
   Один финальный контракт поверх ранних responsive-слоёв: у нижней панели
   короткие, но понятные подписи; у первого экрана один главный CTA и два
   вторичных действия. Полные названия остаются в aria-label.
   ------------------------------------------------------------------------- */
@media (max-width: 719px) {
  html {
    scroll-padding-bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom, 0px) + 16px);
  }

  main {
    min-width: 0;
  }

  .bottom-nav {
    isolation: isolate;
  }

  .bottom-nav-item {
    min-height: 58px;
    font-size: 0.6875rem;
    font-weight: 650;
    letter-spacing: 0;
  }

  .bottom-nav-label {
    display: block;
    max-width: 100%;
    overflow: hidden;
    line-height: 1.1;
    text-align: center;
    text-overflow: clip;
    white-space: nowrap;
  }

  .bottom-nav-icon-wrap {
    position: relative;
    display: inline-grid;
    place-items: center;
    width: 22px;
    height: 22px;
  }

  .bottom-nav-count {
    position: absolute;
    top: -7px;
    right: -11px;
    display: inline-grid;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    place-items: center;
    border: 2px solid var(--surface);
    border-radius: 999px;
    background: var(--accent);
    color: hsl(var(--primary-foreground));
    font-size: 0.625rem;
    font-weight: 800;
    line-height: 1;
  }

  .mobile-nav {
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  .catalog-page .avds-actions--home {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  .catalog-page .avds-actions--home .btn {
    width: 100%;
    min-width: 0;
    min-height: 44px;
    justify-content: center;
    padding-inline: 12px;
    text-align: center;
  }

  .catalog-page .avds-actions--home .btn--primary {
    grid-column: 1 / -1;
  }
}

@media (max-width: 359px) {
  .bottom-nav-item {
    font-size: 0.625rem;
  }

  .bottom-nav-count {
    right: -8px;
  }
}

/* ==========================================================================
   DESIGN POLISH PASS – 2026-07-12
   Уточняем палитру и возвращаем подложки там, где они помогают сценарию.
   ========================================================================== */

:root {
  --background: 38 36% 97%;
  --foreground: 24 16% 16%;
  --card: 40 33% 99%;
  --card-foreground: 24 16% 16%;
  --border-token: 34 20% 86%;
  --muted: 38 30% 94%;
  --muted-foreground: 27 9% 38%;
  --primary: 34 83% 34%;
  --primary-foreground: 0 0% 100%;
  --secondary: 35 24% 92%;
  --secondary-foreground: 24 16% 18%;
  --ring: 34 83% 34%;
  --accent-hover: hsl(32 88% 33%);
  --accent-light: hsl(39 88% 94%);
  --warning: hsl(30 88% 29%);
  --warning-light: hsl(39 86% 94%);
  --success: hsl(150 44% 31%);
  --success-light: hsl(148 44% 94%);
  --border-light: hsl(36 22% 91%);
  --shadow-sm: 0 1px 2px hsl(24 16% 16% / 0.05), 0 6px 18px hsl(32 50% 26% / 0.04);
  --shadow-md: 0 10px 28px hsl(32 50% 26% / 0.08), 0 2px 6px hsl(24 16% 16% / 0.04);
  --shadow-lg: 0 18px 44px hsl(32 50% 26% / 0.12), 0 6px 14px hsl(24 16% 16% / 0.05);
}

body {
  background:
    linear-gradient(180deg, hsl(40 38% 98%) 0, hsl(var(--background)) 320px),
    hsl(var(--background));
}

.site-header {
  background: color-mix(in srgb, var(--surface) 92%, white);
  border-bottom-color: color-mix(in srgb, var(--border-light) 78%, var(--accent-light));
  box-shadow: 0 1px 0 hsl(34 20% 86% / 0.55);
}

.logo svg,
.footer-logo svg {
  filter: drop-shadow(0 2px 3px hsl(34 83% 30% / 0.14));
}

.nav-link.active,
.nav-more.open .nav-more-btn {
  background: var(--accent-light);
  color: var(--accent);
}

.lang-btn.active {
  background: var(--accent);
  box-shadow: 0 4px 12px hsl(34 83% 30% / 0.18);
}

.theme-toggle,
.nav-login-btn,
.nav-more-btn {
  border: 1px solid transparent;
}

.theme-toggle:hover,
.nav-more-btn:hover {
  border-color: var(--border-light);
}

.avds-page-band {
  padding-top: 42px;
}

.avds-hero {
  padding: 18px 0 34px;
}

.avds-title {
  max-width: 760px;
  color: hsl(24 18% 15%);
}

.avds-copy {
  max-width: 640px;
}

.avds-metric-strip {
  align-self: stretch;
  padding: 8px;
  background: color-mix(in srgb, var(--surface) 74%, var(--accent-light));
  border: 1px solid color-mix(in srgb, var(--border-light) 70%, var(--accent-light));
  border-radius: var(--radius);
}

.avds-metric {
  padding: 16px 18px;
  border-radius: calc(var(--radius-sm) - 1px);
}

.avds-metric:nth-child(even) {
  border-left-color: color-mix(in srgb, var(--border-light) 70%, var(--accent-light));
}

.avds-utility-card,
.tools-workflow-step,
.guide-req-card,
.guide-chip-card,
.guide-health-card,
.guide-event-card,
.shelter-card,
.lostfound-card,
.success-card,
.qr-instruction-card,
.photo-search-upload-panel,
.vet-chat-container,
.breed-upload-panel.avds-shell,
.breed-results-panel.avds-shell,
.breed-empty-panel.avds-shell {
  background: color-mix(in srgb, var(--surface) 94%, white);
  border: 1px solid color-mix(in srgb, var(--border-light) 84%, var(--accent-light));
  box-shadow: var(--shadow-sm);
}

.avds-utility-card {
  min-height: 158px;
  padding: 18px;
}

.avds-utility-card--soft,
.guide-chip-card--accent,
.lostfound-ai-banner {
  background: linear-gradient(180deg, color-mix(in srgb, var(--surface) 82%, var(--accent-light)), var(--surface));
}

.avds-utility-card h2,
.avds-utility-card h3,
.tools-workflow-step h3,
.guide-req-title,
.guide-chip-card-title,
.guide-health-title {
  color: hsl(24 18% 16%);
}

.guide-req-icon,
.guide-chip-card-icon,
.guide-health-icon,
.empty-state-icon,
.breed-empty-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  margin-bottom: 14px;
  color: var(--accent);
  background: var(--accent-light);
  border: 1px solid color-mix(in srgb, var(--accent-light) 72%, var(--accent));
  border-radius: 12px;
}

.guide-health-icon {
  margin-inline: auto;
}

.ui-icon {
  stroke-width: 2;
}

.btn {
  min-height: 38px;
  border-radius: 8px;
  box-shadow: none;
}

.btn--primary,
.btn--accent {
  background: linear-gradient(180deg, hsl(35 82% 43%), hsl(32 88% 34%));
  border-color: hsl(32 88% 34%);
}

.btn--primary:hover,
.btn--accent:hover {
  background: linear-gradient(180deg, hsl(34 84% 38%), hsl(31 88% 30%));
  border-color: hsl(31 88% 30%);
}

.btn--outline {
  background: color-mix(in srgb, var(--surface) 88%, white);
  border-color: color-mix(in srgb, var(--border) 65%, var(--accent));
  color: var(--accent);
}

.btn--ghost {
  background: color-mix(in srgb, var(--surface) 64%, var(--border-light));
  border-color: var(--border-light);
}

.chip,
.filter-select,
.photo-search-tab,
.vet-species-btn,
.breed-toggle-btn {
  background: color-mix(in srgb, var(--surface) 94%, white);
  border-color: color-mix(in srgb, var(--border-light) 78%, var(--accent-light));
}

.chip--active,
.breed-toggle-btn--active,
.vet-species-btn--active {
  background: linear-gradient(180deg, hsl(35 82% 43%), hsl(32 88% 34%));
  border-color: hsl(32 88% 34%);
  color: hsl(var(--primary-foreground));
  box-shadow: 0 4px 12px hsl(34 83% 30% / 0.12);
}

.chip--active .ui-icon,
.breed-toggle-btn--active .ui-icon,
.vet-species-btn--active .ui-icon {
  color: currentColor;
}

.chip--danger.chip--active {
  background: var(--danger);
  border-color: var(--danger);
}

.badge {
  border: 1px solid currentColor;
  border-color: color-mix(in srgb, currentColor 18%, transparent);
}

.badge--success {
  background: hsl(148 48% 94%);
  color: hsl(150 42% 30%);
}

.badge--info {
  background: hsl(211 92% 96%);
  color: hsl(214 72% 42%);
}

.filters-section {
  background: color-mix(in srgb, var(--bg) 86%, var(--surface));
  border-block: 1px solid color-mix(in srgb, var(--border-light) 82%, var(--accent-light));
}

.animal-card {
  border-color: color-mix(in srgb, var(--border-light) 82%, var(--accent-light));
  box-shadow: var(--shadow-sm);
}

.animal-card:hover {
  border-color: color-mix(in srgb, var(--accent) 38%, var(--border-light));
  box-shadow: var(--shadow-md);
}

.animal-photo,
.animal-photo-placeholder,
.gallery-main,
.swipe-card-placeholder,
.lostfound-photo-placeholder {
  background:
    radial-gradient(circle at 50% 44%, hsl(37 36% 88%) 0 11%, transparent 12%),
    linear-gradient(135deg, hsl(38 30% 93%), hsl(35 22% 89%));
}

.animal-photo-placeholder .ui-icon,
.gallery-placeholder .ui-icon,
.swipe-card-placeholder .ui-icon,
.lostfound-photo-placeholder .ui-icon {
  width: 46px;
  height: 46px;
  color: hsl(30 15% 56%);
  opacity: 0.72;
}

.animal-card-body {
  gap: 9px;
}

.animal-name,
.swipe-card-name,
.shelter-name,
.lostfound-title {
  color: hsl(24 18% 16%);
}

.animal-shelter,
.lostfound-location,
.shelter-city {
  color: hsl(27 9% 40%);
}

.animal-adopt-btn {
  border-radius: 8px;
}

.section-header {
  padding-top: 36px;
}

.section-subtitle--catalog,
.section-subtitle {
  color: hsl(27 9% 40%);
}

.tools-workflow {
  padding-top: 52px;
}

.tools-workflow-grid {
  gap: 18px;
}

.tools-workflow-step {
  padding: 20px;
  border-radius: var(--radius-sm);
}

.tools-workflow-num,
.guide-step-num--accent {
  background: var(--accent);
  box-shadow: 0 6px 16px hsl(34 83% 30% / 0.16);
}

.guide-section,
.guide-section--alt {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--bg) 92%, white), var(--bg));
}

.guide-cta-section {
  background: linear-gradient(135deg, hsl(24 20% 16%), hsl(31 34% 20%));
}

.nav-more-dropdown {
  padding: 8px;
  border-color: color-mix(in srgb, var(--border-light) 70%, var(--accent-light));
  box-shadow: var(--shadow-lg);
}

.nav-more-item {
  border-radius: 8px;
}

.nav-more-icon {
  color: var(--accent);
}

.bottom-nav {
  background: color-mix(in srgb, var(--surface) 94%, white);
  border-top-color: color-mix(in srgb, var(--border-light) 78%, var(--accent-light));
}

@media (max-width: 768px) {
  .avds-page-band {
    padding-top: 26px;
  }

  .avds-hero {
    padding-bottom: 22px;
  }

  .avds-title {
    font-size: 2.25rem;
    line-height: 1.04;
  }

  .avds-metric-strip {
    padding: 4px;
  }

  .avds-utility-grid {
    gap: 12px;
  }

  .avds-utility-card,
  .tools-workflow-step,
  .guide-req-card,
  .guide-chip-card,
  .guide-health-card,
  .guide-event-card {
    padding: 16px;
  }

  .guide-req-icon,
  .guide-chip-card-icon,
  .guide-health-icon,
  .empty-state-icon,
  .breed-empty-icon {
    width: 38px;
    height: 38px;
    margin-bottom: 10px;
    border-radius: 10px;
  }

  .filters-section {
    position: static;
    padding: 6px 0 10px;
  }

  .filters-body {
    padding: 4px 0 0;
  }

  .filter-group {
    gap: 5px;
  }

  .animal-card {
    border-radius: 10px;
  }

  .animal-photo {
    aspect-ratio: 16 / 11;
  }

  .animal-card-body {
    padding: 13px;
  }

  .animal-adopt-btn {
    margin: 0 13px 13px;
  }
}

/* ================================================================
   WORKBENCH POLISH PASS - 2026-07-12
   Focused refinements for operational forms and AI tool surfaces.
   ================================================================ */

.filter-chip--active {
  background: linear-gradient(180deg, hsl(35 82% 43%), hsl(32 88% 34%));
  border-color: hsl(32 88% 34%);
  color: #fff !important;
  box-shadow: 0 4px 12px hsl(34 83% 30% / 0.12);
}

.adopt-preview,
.adopt-form-wrap,
.report-form-section,
.qr-create-form-wrap,
.qr-instruction-card,
.qr-result-card,
.breed-upload-panel,
.breed-results-panel,
.breed-empty-panel,
.photo-search-upload-panel,
.similarity-card,
.vet-chat-container,
.request-status-card {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--surface) 96%, white), var(--surface));
  border: 1px solid color-mix(in srgb, var(--border-light) 72%, var(--accent-light));
  border-radius: 12px;
  box-shadow: var(--shadow-sm);
}

.adopt-form-wrap,
.report-form-section,
.qr-create-form-wrap,
.breed-upload-panel,
.breed-results-panel,
.breed-empty-panel,
.photo-search-upload-panel {
  padding: clamp(20px, 3vw, 30px);
}

.adopt-layout,
.qr-create-layout,
.breed-detect-layout,
.photo-search-layout {
  gap: clamp(18px, 3vw, 30px);
}

.adopt-preview,
.qr-create-preview-wrap,
.photo-search-upload-panel {
  top: calc(var(--header-h) + 16px);
}

.form-input,
.form-select,
.form-textarea,
.partner-lead-form input,
.partner-lead-form select,
.partner-lead-form textarea,
.alert-form-row .input,
.search-input,
.filter-select {
  border: 1px solid color-mix(in srgb, var(--border) 84%, var(--accent-light));
  border-radius: 9px;
  background: color-mix(in srgb, var(--surface) 96%, white);
  box-shadow: inset 0 1px 0 hsl(0 0% 100% / 0.55);
}

.form-input:focus,
.form-select:focus,
.form-textarea:focus,
.partner-lead-form input:focus,
.partner-lead-form select:focus,
.partner-lead-form textarea:focus,
.alert-form-row .input:focus,
.search-input:focus,
.filter-select:focus {
  border-color: color-mix(in srgb, var(--accent) 72%, var(--border));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-light) 70%, transparent);
}

.form-fieldset {
  border: 1px solid color-mix(in srgb, var(--border-light) 75%, var(--accent-light));
  border-radius: 10px;
  background: color-mix(in srgb, var(--bg) 74%, var(--surface));
}

.radio-card-inner,
.checkbox-label {
  border-radius: 10px;
  border-color: color-mix(in srgb, var(--border-light) 78%, var(--accent-light));
  background: color-mix(in srgb, var(--surface) 94%, white);
}

.radio-card:hover .radio-card-inner,
.checkbox-label:hover {
  border-color: color-mix(in srgb, var(--accent) 45%, var(--border-light));
  background: color-mix(in srgb, var(--accent-light) 24%, var(--surface));
}

.radio-card input:checked + .radio-card-inner,
.checkbox-label:has(input:checked) {
  border-color: color-mix(in srgb, var(--accent) 72%, var(--border-light));
  background: linear-gradient(180deg, color-mix(in srgb, var(--accent-light) 55%, white), var(--surface));
}

.checkbox-custom {
  border-radius: 6px;
  border-color: color-mix(in srgb, var(--border) 80%, var(--accent-light));
}

.drop-zone {
  border: 1.5px dashed color-mix(in srgb, var(--accent) 38%, var(--border));
  border-radius: 12px;
  background:
    radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--accent-light) 46%, transparent), transparent 54%),
    color-mix(in srgb, var(--bg) 82%, var(--surface));
}

.drop-zone:hover,
.drop-zone:focus-visible,
.drop-zone.dragover {
  border-color: color-mix(in srgb, var(--accent) 75%, var(--border));
  background:
    radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--accent-light) 72%, transparent), transparent 58%),
    color-mix(in srgb, var(--surface) 90%, white);
}

.drop-zone-title,
.qr-instruction-card h3,
.breed-empty-text,
.photo-search-results-title {
  letter-spacing: 0;
}

.qr-instruction-card,
.qr-result-card,
.breed-empty-panel,
.photo-search-empty,
.photo-search-no-results {
  text-align: left;
}

.qr-instruction-icon,
.breed-empty-icon,
.empty-state-icon {
  width: 44px;
  height: 44px;
  display: inline-grid;
  place-items: center;
  margin-bottom: 14px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--accent-light) 70%, white);
  color: var(--accent);
  font-size: 1.35rem;
}

.qr-instruction-badges,
.qr-result-actions {
  justify-content: flex-start;
}

.chat-disclaimer {
  background: color-mix(in srgb, var(--warning-light) 58%, var(--surface));
  border-color: color-mix(in srgb, var(--warning) 36%, var(--border-light));
  color: color-mix(in srgb, var(--text-secondary) 88%, var(--warning));
}

.chat-messages {
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--bg) 88%, var(--surface)), var(--surface));
}

.chat-bubble--assistant .chat-bubble-content {
  border-color: color-mix(in srgb, var(--border-light) 82%, var(--accent-light));
  background: color-mix(in srgb, var(--surface) 96%, white);
}

.chat-bubble--user .chat-bubble-content {
  background: linear-gradient(180deg, hsl(35 82% 43%), hsl(32 88% 34%));
  color: #fff;
}

.vet-quick-prompts,
.vet-severity-legend {
  margin-top: 12px;
  padding: 14px;
  border: 1px solid color-mix(in srgb, var(--border-light) 78%, var(--accent-light));
  border-radius: 12px;
  background: color-mix(in srgb, var(--bg) 76%, var(--surface));
}

.breed-top-result {
  border-color: color-mix(in srgb, var(--accent) 48%, var(--border-light));
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--accent-light) 62%, white), color-mix(in srgb, var(--surface) 94%, white));
}

.confidence-bar,
.breed-top5-bar,
.similarity-bar {
  background: color-mix(in srgb, var(--border-light) 88%, var(--surface));
  border-radius: 999px;
  overflow: hidden;
}

.confidence-fill,
.breed-top5-fill,
.similarity-bar-fill {
  background: linear-gradient(90deg, hsl(35 82% 43%), hsl(145 38% 35%));
  border-radius: inherit;
}

.similarity-results {
  gap: 14px;
}

.similarity-card {
  overflow: hidden;
}

.similarity-card-body {
  padding: 13px;
}

.partner-lead-form {
  padding: clamp(18px, 3vw, 26px);
  border: 1px solid color-mix(in srgb, var(--border-light) 75%, var(--accent-light));
  border-radius: 12px;
  background: color-mix(in srgb, var(--surface) 94%, white);
  box-shadow: var(--shadow-sm);
}

.admin-shell,
.admin-main,
.admin-card,
.status-card,
.analytics-metric,
.admin-table-wrap {
  border-color: color-mix(in srgb, var(--border-light) 78%, var(--accent-light));
}

.admin-card,
.status-card,
.analytics-metric {
  border-radius: 12px;
  background: color-mix(in srgb, var(--surface) 95%, white);
}

@media (max-width: 900px) {
  .adopt-layout,
  .qr-create-layout,
  .breed-detect-layout,
  .photo-search-layout {
    grid-template-columns: 1fr;
  }

  .adopt-preview,
  .qr-create-preview-wrap,
  .photo-search-upload-panel {
    position: static;
  }
}

@media (max-width: 768px) {
  .adopt-form-wrap,
  .report-form-section,
  .qr-create-form-wrap,
  .breed-upload-panel,
  .breed-results-panel,
  .breed-empty-panel,
  .photo-search-upload-panel,
  .partner-lead-form {
    padding: 16px;
  }

  .form-row,
  .partner-lead-form {
    grid-template-columns: 1fr;
  }

  .drop-zone {
    min-height: 132px;
  }

  .chat-messages {
    min-height: 300px;
    max-height: 430px;
    padding: 16px 12px;
  }

  .chat-bubble {
    max-width: 92%;
  }

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

@media (max-width: 420px) {
  .similarity-results {
    grid-template-columns: 1fr;
  }
}

/* Операционное рабочее место: плотная очередь без декоративных карточек. */
.operations-page {
  padding: 32px 0 64px;
}

.operations-header,
.operations-section-head,
.operation-row,
.operation-task {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
}

.operations-header {
  margin-bottom: 28px;
}

.operations-header h1,
.operations-section h2,
.operation-row h3 {
  margin: 0;
}

.operations-header p,
.operations-section-head p,
.operation-row p,
.operation-task p {
  margin: 4px 0 0;
  color: var(--text-muted);
}

.operations-section {
  padding: 20px 0;
  border-top: 1px solid var(--border-light);
}

.operation-row {
  padding: 18px 0;
  border-bottom: 1px solid var(--border-light);
}

.operation-row-main {
  flex: 1 1 280px;
  min-width: 0;
}

.operation-row-main h3 {
  margin-top: 8px;
  font-size: 1rem;
}

.operation-actions {
  display: grid;
  flex: 1 1 620px;
  grid-template-columns: repeat(4, minmax(130px, 1fr));
  gap: 10px;
}

.operation-actions label span {
  display: block;
  margin-bottom: 4px;
  color: var(--text-muted);
  font-size: 0.75rem;
  font-weight: 600;
}

.operation-actions input,
.operation-actions select {
  width: 100%;
}

.operation-note {
  grid-column: span 3;
}

.operations-columns {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 32px;
}

.operation-task {
  padding: 12px 0;
  border-bottom: 1px solid var(--border-light);
}

.operation-task.is-overdue {
  border-left: 3px solid var(--danger);
  padding-left: 12px;
}

.operation-stale-list a {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 0;
  border-bottom: 1px solid var(--border-light);
  color: var(--text);
}

.operation-stale-list span {
  color: var(--text-muted);
  font-size: 0.82rem;
  text-align: right;
}

@media (max-width: 980px) {
  .operation-row,
  .operations-header {
    flex-direction: column;
  }

  .operation-actions {
    width: 100%;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .operation-note {
    grid-column: span 2;
  }
}

@media (max-width: 720px) {
  .operations-columns {
    grid-template-columns: 1fr;
    gap: 8px;
  }

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

  .operation-note {
    grid-column: auto;
  }

  .operation-stale-list a {
    flex-direction: column;
    gap: 3px;
  }

  .operation-stale-list span {
    text-align: left;
  }
}

/* ================================================================
   PUBLIC PRODUCT DENSITY PASS - 2026-07-14
   Публичные страницы остаются честными при неполных данных и не
   растягивают пустые состояния до размеров полноценной галереи.
   ================================================================ */

.catalog-page .avds-kicker,
.lostfound-page .avds-kicker,
.shelters-page .avds-kicker,
.guide-page .avds-kicker,
.partners-page .avds-kicker,
.tools-page .avds-kicker {
  color: var(--accent);
  font-size: 0.78rem;
  letter-spacing: 0;
  text-transform: none;
}

.catalog-page .avds-page-band,
.lostfound-page .avds-page-band,
.shelters-page .avds-page-band,
.guide-page .avds-page-band,
.partners-page .avds-page-band,
.tools-page .avds-page-band {
  padding-top: 28px;
}

.catalog-page .avds-hero,
.lostfound-page .avds-hero,
.shelters-page .avds-hero,
.guide-page .avds-hero,
.partners-page .avds-hero,
.tools-page .avds-hero {
  gap: 28px;
  padding: 8px 0 24px;
}

.catalog-page .avds-title,
.lostfound-page .avds-title,
.shelters-page .avds-title,
.guide-page .avds-title,
.partners-page .avds-title,
.tools-page .avds-title {
  font-size: 2.35rem;
  line-height: 1.08;
}

.catalog-page .avds-metric-strip,
.lostfound-page .avds-metric-strip,
.shelters-page .avds-metric-strip,
.guide-page .avds-metric-strip,
.partners-page .avds-metric-strip,
.tools-page .avds-metric-strip {
  align-self: start;
  padding: 0;
}

.catalog-page .avds-metric,
.lostfound-page .avds-metric,
.shelters-page .avds-metric,
.guide-page .avds-metric,
.partners-page .avds-metric,
.tools-page .avds-metric {
  min-height: 76px;
  padding: 13px 15px;
}

.catalog-page .avds-metric-strip--odd > .avds-metric:last-child {
  grid-column: 1 / -1;
  border-top: 1px solid var(--border-light);
  border-left: 0;
}

.catalog-page .avds-utility-grid {
  gap: 12px;
  margin-top: 14px;
  border-block: 1px solid var(--border-light);
}

.catalog-page .avds-utility-card {
  display: grid;
  min-height: 0;
  padding: 16px 18px;
  border: 0;
  border-right: 1px solid var(--border-light);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.catalog-page .avds-utility-card:last-child {
  border-right: 0;
}

.catalog-page .avds-utility-card p {
  margin-bottom: 12px;
  font-size: 0.86rem;
  line-height: 1.48;
}

.catalog-page .avds-utility-card .btn {
  align-self: end;
  justify-self: start;
}

.catalog-page .filters-section {
  padding: 8px 0;
}

.catalog-page .filters-form {
  gap: 10px 22px;
}

.catalog-page .section-header {
  margin-bottom: 8px;
  padding-top: 24px;
}

.catalog-page .section-subtitle--catalog {
  max-width: 720px;
  margin: 0 0 18px;
  font-size: 0.88rem;
}

.catalog-readiness-note {
  display: flex;
  align-items: center;
  gap: 14px;
  max-width: 900px;
  margin: 0 0 24px;
  padding: 14px 16px;
  border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--border));
  border-radius: 10px;
  background: color-mix(in srgb, var(--surface) 86%, var(--accent-soft));
  color: var(--text);
}

.catalog-readiness-note__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  background: var(--accent-soft);
  color: var(--accent);
}

.catalog-readiness-note__copy {
  display: grid;
  gap: 3px;
  min-width: 0;
  flex: 1 1 auto;
}

.catalog-readiness-note__copy strong {
  font-size: 0.95rem;
  line-height: 1.25;
}

.catalog-readiness-note__copy span {
  font-size: 0.9rem;
  line-height: 1.45;
  color: var(--text-secondary);
}

.catalog-page .animals-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.catalog-page .animal-card {
  border-radius: 8px;
}

.catalog-page .animal-card--no-photo .animal-photo {
  width: 112px;
  height: 100%;
  min-height: 164px;
  aspect-ratio: auto;
  border-right: 1px solid var(--border-light);
  border-bottom: 0;
}

.catalog-page .animal-card--no-photo .animal-card-link {
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr);
}

.catalog-page .animal-card--no-photo .animal-card-body {
  min-width: 0;
  padding-right: 70px;
}

.catalog-page .animal-card--no-photo .animal-species-badge {
  display: none;
}

.catalog-page .animal-photo-placeholder {
  flex-direction: column;
  gap: 8px;
  padding: 16px;
  background: color-mix(in srgb, var(--bg) 82%, var(--accent-light));
  text-align: center;
}

.catalog-page .animal-photo-placeholder-icon {
  display: grid;
  width: 40px;
  height: 40px;
  place-items: center;
  border: 1px solid color-mix(in srgb, var(--accent) 18%, var(--border-light));
  border-radius: 50%;
  background: var(--surface);
  color: var(--accent);
}

.catalog-page .animal-photo-placeholder-icon .ui-icon {
  width: 24px;
  height: 24px;
  opacity: 1;
}

.catalog-page .animal-photo-placeholder-label {
  color: var(--text-muted);
  font-size: 0.75rem;
  font-weight: 600;
}

.catalog-page .animal-card-body {
  gap: 7px;
  padding: 13px 14px;
}

.catalog-page .animal-name {
  font-size: 1rem;
}

.catalog-page .verification-note {
  margin-top: 1px;
  font-size: 0.72rem;
}

.catalog-page .animal-adopt-btn {
  margin: 0 14px 14px;
}

.catalog-page .animal-card--no-photo .fav-btn,
.catalog-page .animal-card--no-photo .share-mini-btn {
  top: 10px;
}

.catalog-page .pagination {
  margin-top: 22px;
}

.lostfound-page .avds-section-shell {
  padding: 10px 0;
}

.lostfound-workbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 12px 0;
  border-bottom: 1px solid var(--border-light);
}

.lostfound-workbar p {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--text-secondary);
  font-size: 0.88rem;
}

.lostfound-workbar .ui-icon {
  color: var(--accent);
}

.lostfound-page .tabs {
  margin-top: 2px;
}

.lostfound-page .lostfound-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
  gap: 14px;
  padding: 18px 0 8px;
}

.lostfound-page .lostfound-card {
  border-radius: 8px;
}

.lostfound-page .lostfound-photo-placeholder {
  height: 96px;
}

.lostfound-page .lostfound-photo {
  height: 156px;
}

.lostfound-page .lostfound-body {
  padding: 14px;
}

.lostfound-empty-workflow {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr) minmax(280px, 0.9fr);
  align-items: start;
  gap: 14px 20px;
  margin: 22px 0 0;
  padding: 22px 0;
  border-block: 1px solid var(--border-light);
}

.lostfound-page--empty .lostfound-empty-workflow {
  margin-top: 10px;
}

.lostfound-page--empty .report-form-disclosure {
  margin-top: 18px;
}

.lostfound-empty-icon {
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  border-radius: 8px;
  background: var(--accent-light);
  color: var(--accent);
}

.lostfound-empty-copy h2 {
  margin: 0 0 6px;
  font-size: 1.15rem;
}

.lostfound-empty-copy p,
.lostfound-empty-data {
  color: var(--text-secondary);
  font-size: 0.86rem;
  line-height: 1.55;
}

.lostfound-empty-data {
  display: grid;
  gap: 6px;
  margin: 0;
}

.lostfound-empty-data strong {
  color: var(--text);
  font-weight: 800;
}

.lostfound-empty-data a {
  color: var(--accent);
  font-weight: 800;
  text-decoration: none;
}

.lostfound-first-steps {
  margin: 22px 0 0;
  padding: 20px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: color-mix(in srgb, var(--surface) 92%, var(--accent-light));
}

.lostfound-first-steps .section-heading {
  margin-bottom: 14px;
}

.lostfound-step-grid,
.shelter-trust-grid,
.adopt-process-steps {
  display: grid;
  gap: 10px;
}

.lostfound-step-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.lostfound-step-card,
.shelter-trust-item {
  display: grid;
  gap: 8px;
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: var(--surface);
}

.lostfound-step-icon,
.shelter-trust-icon {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 8px;
  background: var(--accent-light);
  color: var(--accent);
}

.lostfound-step-card p,
.shelter-trust-item p {
  margin: 0;
  color: var(--text-secondary);
  font-size: 0.83rem;
  line-height: 1.5;
}

.report-form-disclosure {
  margin: 28px 0 48px;
  /* Якорные CTA не должны прятать начало формы под липкой шапкой. */
  scroll-margin-top: calc(var(--header-h) + 16px);
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--border) 82%, var(--accent-light));
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}

.report-form-disclosure > summary {
  list-style: none;
}

.report-form-disclosure > summary::-webkit-details-marker {
  display: none;
}

.report-form-summary {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr) auto;
  align-items: center;
  gap: 13px;
  min-height: 82px;
  padding: 14px 18px;
  cursor: pointer;
}

.report-form-summary:hover {
  background: color-mix(in srgb, var(--accent-light) 28%, var(--surface));
}

.report-form-summary-icon {
  display: grid;
  width: 40px;
  height: 40px;
  place-items: center;
  border-radius: 8px;
  background: var(--accent-light);
  color: var(--accent);
}

.report-form-summary strong,
.report-form-summary small {
  display: block;
}

.report-form-summary strong {
  margin-bottom: 3px;
  font-size: 1rem;
}

.report-form-summary small {
  max-width: 620px;
  color: var(--text-secondary);
  font-size: 0.82rem;
  line-height: 1.45;
}

.report-form-summary-action {
  color: var(--accent);
  font-size: 0.82rem;
  font-weight: 700;
}

.report-form-disclosure[open] .report-form-summary {
  border-bottom: 1px solid var(--border-light);
}

.report-form-disclosure .report-form-section {
  margin: 0;
  padding: 22px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.report-form-disclosure .report-form-section > .avds-shell {
  padding: 0;
}

.shelters-page .shelters-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
  gap: 14px;
  padding-bottom: 42px;
}

.shelters-page .shelter-card {
  gap: 10px;
  height: 100%;
  min-height: 0;
  padding: 16px;
  border-radius: 8px;
}

.shelters-page .shelter-card-header {
  gap: 10px;
}

.shelters-page .shelter-icon svg {
  width: 28px;
  height: 28px;
}

.shelters-page .shelter-name {
  align-items: flex-start;
  font-size: 1rem;
  line-height: 1.3;
}

.shelters-page .shelter-city {
  flex-wrap: wrap;
}

.shelters-page .capacity-bar {
  height: 5px;
}

.shelters-page .shelter-contacts {
  gap: 4px;
}

.shelters-page .shelter-address,
.shelters-page .shelter-contact-link,
.shelters-page .capacity-label {
  font-size: 0.78rem;
}

.shelters-page .shelter-animals-btn {
  margin-top: 2px;
}

.shelter-trust-strip {
  margin-bottom: 20px;
  padding: 20px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: color-mix(in srgb, var(--surface) 94%, var(--accent-light));
}

.shelter-trust-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.shelter-trust-item h3 {
  margin: 0;
  color: var(--text);
  font-size: 0.96rem;
  line-height: 1.3;
}

.shelter-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: auto;
}

.guide-page .guide-hero {
  padding: 28px 0 18px;
}

.guide-page .guide-hero-highlights {
  gap: 12px;
  margin-top: 16px;
}

.guide-page .guide-hero-highlight {
  padding: 13px 14px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: var(--surface);
}

.guide-page .guide-hero-nav {
  gap: 14px;
  padding-top: 14px;
}

.guide-page .guide-section,
.partners-page .guide-section {
  padding: 36px 0;
}

.guide-page .guide-section .section-header,
.partners-page .guide-section .section-header {
  margin-bottom: 20px;
}

.guide-page .guide-steps--adoption {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 28px;
  max-width: none;
}

.guide-page .guide-step {
  min-width: 0;
  padding: 16px 0;
}

.guide-page .guide-req-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.guide-page .guide-req-card,
.guide-page .guide-chip-card,
.guide-page .guide-health-card,
.guide-page .guide-chip-cost,
.guide-page .guide-chip-fines,
.guide-page .guide-park-city,
.guide-page .guide-bite-card {
  padding: 17px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: none;
  text-align: left;
}

.guide-page .guide-req-card--wide {
  grid-column: 1 / -1;
}

@media (min-width: 701px) {
  .guide-page .guide-req-card--wide {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    column-gap: 14px;
    align-items: start;
  }

  .guide-page .guide-req-card--wide .guide-req-icon {
    grid-row: 1 / span 2;
    margin: 0;
  }

  .guide-page .guide-req-card--wide .guide-req-title {
    margin-top: 0;
  }

  .guide-page .guide-req-card--wide .guide-req-text {
    grid-column: 2;
    max-width: 820px;
  }
}

.guide-page .guide-chip-grid,
.guide-page .guide-health-grid,
.guide-page .guide-parks-grid {
  gap: 12px;
}

.guide-page .guide-chip-grid {
  margin-bottom: 14px;
}

@media (min-width: 901px) {
  .guide-page .guide-chip-grid,
  .guide-page .guide-health-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.guide-page .guide-chip-bottom {
  gap: 12px;
}

.guide-page .guide-req-icon,
.guide-page .guide-chip-card-icon,
.guide-page .guide-health-icon {
  width: 38px;
  height: 38px;
  margin: 0 0 11px;
  border-radius: 8px;
}

.guide-page .guide-cta-section {
  padding: 38px 0;
}

.guide-page .guide-cta-text {
  margin-bottom: 18px;
}

.partners-page .partners-program-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.partners-page .guide-req-card {
  min-height: 0;
  padding: 17px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: none;
}

.partners-process-steps {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  max-width: none;
}

.partners-process-steps .guide-step {
  display: block;
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: var(--surface);
}

.partners-process-steps .guide-step-num {
  width: 34px;
  height: 34px;
  margin: 0 0 14px;
  border-radius: 8px;
}

.partners-lead-section .avds-section-shell {
  max-width: 900px;
  margin-inline: auto;
  padding: 24px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}

.tools-page .tools-grid {
  margin-top: 18px;
}

.tools-page .tools-grid .avds-utility-card {
  display: flex;
  min-height: 218px;
  flex-direction: column;
  align-items: flex-start;
  padding: 18px;
}

.tools-page .tools-grid .avds-utility-card p {
  flex: 1;
}

.tools-page .tools-workflow {
  margin-top: 22px;
  padding-top: 28px;
  border-top: 1px solid var(--border-light);
}

@media (min-width: 1100px) {
  .tools-page .tools-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

.partners-lead-section .partner-lead-form {
  max-width: none;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.partners-organizations-section {
  border-top: 1px solid var(--border-light);
}

.partners-organizations-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-block: 1px solid var(--border-light);
}

.partner-organization {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 7px 14px;
  padding: 16px 18px;
  border-right: 1px solid var(--border-light);
  border-bottom: 1px solid var(--border-light);
}

.partner-organization:nth-child(3n) {
  border-right: 0;
}

.partner-organization:nth-last-child(-n + 3) {
  border-bottom: 0;
}

.partner-organization h3 {
  margin: 0 0 4px;
  font-size: 0.95rem;
}

.partner-organization p,
.partner-organization-count,
.partner-organization a,
.partners-organizations-link {
  font-size: 0.78rem;
}

.partner-organization p,
.partner-organization-count {
  color: var(--text-secondary);
}

.partner-organization-count {
  align-self: start;
  white-space: nowrap;
}

.partner-organization a,
.partners-organizations-link {
  color: var(--accent);
  font-weight: 700;
}

.partners-organizations-link {
  display: inline-block;
  margin-top: 14px;
}

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

  .shelters-page .shelters-grid,
  .guide-page .guide-req-grid,
  .partners-page .partners-program-grid,
  .partners-process-steps,
  .lostfound-step-grid,
  .shelter-trust-grid,
  .adopt-process-steps {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

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

  .partner-organization:nth-child(3n) {
    border-right: 1px solid var(--border-light);
  }

  .partner-organization:nth-child(2n) {
    border-right: 0;
  }

  .partner-organization:nth-last-child(-n + 3) {
    border-bottom: 1px solid var(--border-light);
  }

  .partner-organization:nth-last-child(-n + 2) {
    border-bottom: 0;
  }
}

@media (max-width: 900px) {
  .catalog-page .animals-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .guide-page .guide-hero-highlights {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 700px) {
  .chat-input {
    min-height: 46px;
  }

  .catalog-page .avds-title,
  .lostfound-page .avds-title,
  .shelters-page .avds-title,
  .guide-page .avds-title,
  .partners-page .avds-title,
  .tools-page .avds-title {
    font-size: 1.85rem;
  }

  .catalog-page .avds-hero,
  .lostfound-page .avds-hero,
  .shelters-page .avds-hero,
  .guide-page .avds-hero,
  .partners-page .avds-hero,
  .tools-page .avds-hero {
    padding: 4px 0 20px;
  }

  .catalog-page .animals-grid,
  .shelters-page .shelters-grid,
  .guide-page .guide-steps--adoption,
  .guide-page .guide-req-grid,
  .partners-page .partners-program-grid,
  .partners-process-steps,
  .lostfound-step-grid,
  .shelter-trust-grid,
  .adopt-process-steps {
    grid-template-columns: 1fr;
  }

  .catalog-readiness-note {
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 10px 12px;
    padding: 13px;
  }

  .catalog-readiness-note .btn {
    width: 100%;
    justify-content: center;
  }

  .lostfound-first-steps,
  .shelter-trust-strip,
  .adopt-process-panel {
    padding: 14px;
  }

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

  .partner-organization,
  .partner-organization:nth-child(2n),
  .partner-organization:nth-child(3n) {
    border-right: 0;
    border-bottom: 1px solid var(--border-light);
  }

  .partner-organization:last-child {
    border-bottom: 0;
  }

  .catalog-page .avds-utility-grid {
    gap: 7px;
  }

  .catalog-page .avds-utility-card {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    padding: 11px 12px;
    border-right: 0;
    border-bottom: 1px solid var(--border-light);
  }

  .catalog-page .avds-utility-card:last-child {
    border-bottom: 0;
  }

  .catalog-page .avds-utility-card h2 {
    margin: 0;
    font-size: 0.92rem;
  }

  .catalog-page .avds-utility-card p {
    display: none;
  }

  .catalog-page .avds-utility-card .btn {
    grid-column: 2;
    grid-row: 1;
  }

  .guide-page .guide-req-card--wide {
    grid-column: auto;
    display: block;
  }

  .lostfound-workbar {
    align-items: flex-start;
    flex-direction: column;
  }

  .lostfound-empty-workflow {
    grid-template-columns: 42px minmax(0, 1fr);
  }

  .lostfound-empty-data {
    grid-column: 1 / -1;
  }

  .report-form-summary {
    grid-template-columns: 36px minmax(0, 1fr);
    padding: 13px 14px;
  }

  .report-form-summary-icon {
    width: 36px;
    height: 36px;
  }

  .report-form-summary-action {
    display: none;
  }

  .report-form-disclosure .report-form-section,
  .partners-lead-section .avds-section-shell {
    padding: 16px;
  }
}

/* -------------------------------------------------------------------------
   MOBILE APP SHELL – 2026-07-16
   Телефон и планшет используют одну прикладную навигацию: нижние вкладки на
   телефоне и rail на планшете. Десктопные маршруты и контентные шаблоны не
   меняются, поэтому интерфейс остаётся единым при переходе между экранами.
   ------------------------------------------------------------------------- */
body[data-display-mode="standalone"] {
  overscroll-behavior-y: none;
}

@media (max-width: 719px) {
  :root {
    --header-h: calc(54px + env(safe-area-inset-top, 0px));
    --bottom-nav-h: 64px;
  }

  .site-header {
    height: var(--header-h);
    padding-top: env(safe-area-inset-top, 0px);
    background: color-mix(in srgb, var(--surface) 92%, transparent);
  }

  .header-inner {
    height: 54px;
    gap: 8px;
  }

  .header-actions {
    gap: 3px;
  }

  .logo svg {
    width: 30px;
    height: 30px;
  }

  .logo-text {
    font-size: 1.03rem;
  }

  .site-footer {
    display: none;
  }

  .bottom-nav {
    height: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom, 0px));
    padding: 0 env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
    border-top-color: color-mix(in srgb, var(--border-light) 72%, var(--accent-light));
    background: color-mix(in srgb, var(--surface) 92%, transparent);
    box-shadow: 0 -8px 24px hsl(24 16% 16% / 0.08);
    backdrop-filter: blur(16px);
  }

  .bottom-nav-inner {
    max-width: 560px;
    height: var(--bottom-nav-h);
    padding: 4px 4px 3px;
  }

  .bottom-nav-item {
    min-width: 0;
    min-height: 56px;
    gap: 2px;
    padding: 5px 2px 3px;
    font-size: 0.64rem;
    line-height: 1.1;
  }

  .bottom-nav-item > * {
    position: relative;
    z-index: 1;
  }

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

  .bottom-nav-item.active::before {
    position: absolute;
    inset: 4px 8px 23px;
    z-index: 0;
    border-radius: 10px;
    background: color-mix(in srgb, var(--accent-light) 64%, transparent);
    content: '';
  }

  .bottom-nav-item.active::after {
    display: none;
  }

  body {
    padding-bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom, 0px));
  }

  body.mobile-nav-open {
    overflow: hidden;
  }

  .mobile-nav {
    right: 8px;
    bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom, 0px) + 8px);
    left: 8px;
    display: none !important;
    max-height: min(74svh, 520px);
    padding: 12px;
    border: 1px solid color-mix(in srgb, var(--border-light) 78%, var(--accent-light));
    border-radius: 18px;
    background: var(--surface);
    box-shadow: 0 18px 42px hsl(24 16% 16% / 0.18);
  }

  .mobile-nav.is-open {
    display: flex !important;
    flex-direction: column;
    gap: 10px;
  }

  .mobile-nav-sheet-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 36px;
    padding: 0 2px 2px 6px;
  }

  .mobile-nav-title {
    font-size: 0.9rem;
    line-height: 1.25;
  }

  .mobile-nav-close {
    display: inline-flex;
    width: 40px;
    height: 40px;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border-light);
    border-radius: 10px;
    color: var(--text-secondary);
  }

  .mobile-nav-links {
    display: grid;
    gap: 6px;
  }

  .mobile-nav-link {
    min-height: 48px;
    padding: 12px 14px;
    border-radius: 10px;
    background: color-mix(in srgb, var(--surface) 84%, var(--accent-light));
    color: var(--text);
    font-size: 0.94rem;
  }

  .mobile-nav-link .ui-icon {
    width: 20px;
    height: 20px;
    color: var(--accent);
  }

  .mobile-nav-backdrop {
    background: hsl(24 16% 16% / 0.32);
    backdrop-filter: blur(2px);
  }

  .pwa-banner {
    right: 8px;
    bottom: calc(var(--bottom-nav-h) + env(safe-area-inset-bottom, 0px) + 10px);
    left: 8px;
    border: 1px solid color-mix(in srgb, var(--border-light) 78%, var(--accent-light));
    border-radius: 16px;
    box-shadow: 0 16px 36px hsl(24 16% 16% / 0.16);
  }
}

@media (min-width: 720px) and (max-width: 1100px) {
  body {
    padding-left: var(--tablet-rail-w);
  }

  /* На планшете быстрые сценарии остаются рядом: это рабочая панель, а не
     растянутый мобильный список с пустым пространством. */
  .avds-utility-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 20px;
  }

  .avds-utility-card,
  .avds-utility-card--soft {
    min-height: 100%;
    padding: 14px;
    border: 1px solid var(--border-light);
    border-radius: var(--radius);
    background: var(--surface);
  }

  .avds-utility-card p {
    margin-bottom: 12px;
    font-size: 0.84rem;
    line-height: 1.45;
  }

  .swipe-stack {
    width: min(380px, calc(100vw - var(--tablet-rail-w) - 40px));
  }

  body.mobile-nav-open {
    overflow: hidden;
  }

  .main-nav,
  .site-footer {
    display: none;
  }

  .site-header {
    height: 64px;
    background: color-mix(in srgb, var(--surface) 94%, transparent);
  }

  .header-inner {
    gap: 16px;
  }

  .bottom-nav {
    position: fixed;
    top: 0;
    right: auto;
    bottom: 0;
    left: 0;
    z-index: 200;
    display: block;
    width: var(--tablet-rail-w);
    height: 100dvh;
    padding: env(safe-area-inset-top, 0px) 8px env(safe-area-inset-bottom, 0px);
    border-top: 0;
    border-right: 1px solid color-mix(in srgb, var(--border-light) 72%, var(--accent-light));
    background: color-mix(in srgb, var(--surface) 94%, transparent);
    box-shadow: 8px 0 24px hsl(24 16% 16% / 0.05);
    backdrop-filter: blur(16px);
  }

  .bottom-nav-inner {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: 6px;
    width: 100%;
    max-width: none;
    height: auto;
    padding-top: 72px;
  }

  .bottom-nav-item {
    display: flex;
    flex: 0 0 auto;
    min-height: 64px;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 8px 4px;
    border-radius: 12px;
    color: var(--text-muted);
    font-size: 0.66rem;
    font-weight: 600;
    line-height: 1.15;
    text-align: center;
  }

  .bottom-nav-item:hover,
  .bottom-nav-item.active {
    background: color-mix(in srgb, var(--accent-light) 64%, transparent);
    color: var(--accent);
  }

  .bottom-nav-item.active::after {
    display: none;
  }

  .bottom-nav-item svg {
    width: 22px;
    height: 22px;
  }

  .mobile-nav {
    top: 78px;
    right: auto;
    bottom: auto;
    left: calc(var(--tablet-rail-w) + 10px);
    display: none !important;
    width: min(330px, calc(100vw - var(--tablet-rail-w) - 20px));
    max-height: calc(100dvh - 96px);
    padding: 12px;
    border: 1px solid color-mix(in srgb, var(--border-light) 78%, var(--accent-light));
    border-radius: 16px;
    background: var(--surface);
    box-shadow: 0 18px 42px hsl(24 16% 16% / 0.18);
  }

  .mobile-nav.is-open {
    display: flex !important;
    flex-direction: column;
    gap: 10px;
  }

  .mobile-nav-sheet-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 38px;
    padding: 0 2px 2px 6px;
  }

  .mobile-nav-title {
    font-size: 0.92rem;
  }

  .mobile-nav-close {
    display: inline-flex;
    width: 40px;
    height: 40px;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border-light);
    border-radius: 10px;
    color: var(--text-secondary);
  }

  .mobile-nav-links {
    display: grid;
    gap: 6px;
  }

  .mobile-nav-link {
    min-height: 48px;
    padding: 12px 14px;
    border-radius: 10px;
    background: color-mix(in srgb, var(--surface) 84%, var(--accent-light));
    color: var(--text);
  }

  .mobile-nav-link .ui-icon {
    width: 20px;
    height: 20px;
    color: var(--accent);
  }

  .mobile-nav-backdrop {
    left: var(--tablet-rail-w);
    background: hsl(24 16% 16% / 0.18);
    backdrop-filter: blur(2px);
  }

  .pwa-banner {
    right: 20px;
    bottom: 20px;
    left: calc(var(--tablet-rail-w) + 20px);
    border: 1px solid color-mix(in srgb, var(--border-light) 78%, var(--accent-light));
    border-radius: 16px;
    box-shadow: 0 16px 36px hsl(24 16% 16% / 0.16);
  }
}

/* -------------------------------------------------------------------------
   AV DS 4.3.3 SSR component anatomy
   React-компоненты не импортируются в Jinja: Qaz.pet сохраняет серверный рендер,
   но использует те же роли, состояния и плотность интерактивных примитивов.
   ------------------------------------------------------------------------- */
.avds-filter-chip-row {
  align-items: center;
  gap: 8px;
}

.avds-filter-chip-row .chip {
  min-height: 36px;
  padding: 7px 12px;
  border-width: 1px;
  box-shadow: 0 1px 2px color-mix(in srgb, var(--text) 4%, transparent);
  transition-property: background-color, border-color, color, box-shadow;
}

.avds-filter-chip-row .chip:focus-visible,
.avds-pill-tabs .tab:focus-visible {
  outline: 2px solid var(--ring-color, var(--accent));
  outline-offset: 2px;
}

.avds-pill-tabs {
  gap: 8px;
  padding-bottom: 8px;
}

.avds-pill-tabs .tab {
  min-height: 38px;
  margin-bottom: 0;
  padding: 8px 14px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
}

.avds-pill-tabs .tab--active {
  border-color: color-mix(in srgb, var(--accent) 40%, var(--border));
  background: var(--accent-light);
}

.avds-state-panel {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  align-items: start;
  gap: 4px 14px;
  width: 100%;
  max-width: 760px;
  margin-inline: auto;
  padding: 20px;
  border-inline-start: 3px solid var(--border);
  border-radius: var(--radius);
  background: color-mix(in srgb, var(--surface) 88%, var(--border-light));
  color: var(--text-secondary);
  text-align: start;
}

.avds-state-panel > :not(.empty-state-icon) {
  grid-column: 2;
}

.avds-state-panel .empty-state-icon {
  grid-column: 1;
  grid-row: 1 / span 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  margin: 0;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--text-muted);
}

.avds-state-panel :is(h2, h3, p) {
  margin: 0;
}

.avds-state-panel .btn {
  width: fit-content;
  margin-top: 10px;
}

.avds-service-status-grid .status-card {
  border-inline-start: 3px solid var(--border);
  box-shadow: 0 1px 2px color-mix(in srgb, var(--text) 4%, transparent);
}

.avds-skeleton {
  position: relative;
  overflow: hidden;
}

.avds-skeleton::after {
  position: absolute;
  inset: 0;
  content: "";
  background: linear-gradient(
    90deg,
    transparent,
    color-mix(in srgb, var(--surface) 65%, transparent),
    transparent
  );
  transform: translateX(-100%);
  animation: avds-skeleton-sweep 1.4s ease-in-out infinite;
  pointer-events: none;
}

@keyframes avds-skeleton-sweep {
  to { transform: translateX(100%); }
}

@media (max-width: 640px) {
  .avds-state-panel {
    grid-template-columns: 36px minmax(0, 1fr);
    gap: 4px 12px;
    padding: 16px;
  }

  .avds-state-panel .empty-state-icon {
    width: 36px;
    height: 36px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .avds-skeleton::after {
    animation: none;
  }
}

/* -------------------------------------------------------------------------
   LOCATION SEARCH + COMPATIBILITY PROFILE - 2026-07-16
   Показываем только уже заполненные данные и раскрываем геопоиск по запросу.
   ------------------------------------------------------------------------- */
.filter-group--nearby {
  min-width: max-content;
}

.nearby-search-button {
  display: inline-flex;
  min-height: 34px;
  align-items: center;
  justify-content: center;
  gap: 6px;
  color: var(--accent-dark);
  background: var(--surface);
  cursor: pointer;
}

.nearby-search-button:hover,
.nearby-search-button:focus-visible,
.nearby-search-button[aria-expanded="true"] {
  border-color: var(--accent);
  background: var(--accent-light);
}

.nearby-search-button:disabled {
  cursor: wait;
  opacity: 0.72;
}

.nearby-search-button.is-loading .ui-icon {
  animation: nearby-pulse 1.2s ease-in-out infinite;
}

.nearby-results {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--border-light);
}

.nearby-results-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
}

.nearby-results-title {
  margin: 0;
  font-size: 1rem;
  line-height: 1.3;
}

.nearby-results-note,
.nearby-results-status {
  margin: 4px 0 0;
  color: var(--text-muted);
  font-size: 0.78rem;
  line-height: 1.45;
}

.nearby-results-close {
  flex: 0 0 auto;
}

.nearby-results-status--error {
  color: var(--danger);
}

.nearby-results-status--empty {
  color: var(--text-secondary);
}

.nearby-results-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 12px;
}

.nearby-result-card {
  display: grid;
  min-width: 0;
  gap: 3px;
  padding: 12px 13px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  text-decoration: none;
}

.nearby-result-card:hover,
.nearby-result-card:focus-visible {
  border-color: var(--accent);
  background: var(--accent-light);
}

.nearby-result-name,
.nearby-result-meta,
.nearby-result-distance,
.nearby-result-action {
  overflow-wrap: anywhere;
}

.nearby-result-name {
  font-size: 0.92rem;
  line-height: 1.3;
}

.nearby-result-meta,
.nearby-result-distance {
  color: var(--text-secondary);
  font-size: 0.75rem;
  line-height: 1.4;
}

.nearby-result-action {
  margin-top: 5px;
  color: var(--accent-dark);
  font-size: 0.76rem;
  font-weight: 700;
}

.animal-section-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 10px;
}

.animal-section-heading .animal-section-title {
  flex: 0 0 auto;
  margin-bottom: 0;
}

.animal-section-heading p {
  max-width: 430px;
  margin: 0;
  color: var(--text-muted);
  font-size: 0.74rem;
  line-height: 1.45;
  text-align: right;
}

.animal-fit-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
}

.animal-fit-item {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  grid-template-rows: auto auto;
  column-gap: 8px;
  min-width: 0;
  padding: 10px;
  border: 1px solid var(--border-light);
  border-radius: 8px;
  background: color-mix(in srgb, var(--surface) 84%, var(--accent-light));
}

.animal-fit-icon {
  display: inline-flex;
  grid-row: 1 / 3;
  width: 28px;
  height: 28px;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  background: var(--accent-light);
  color: var(--accent-dark);
}

.animal-fit-item dt,
.animal-fit-item dd {
  min-width: 0;
  margin: 0;
}

.animal-fit-item dt {
  color: var(--text-muted);
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1.3;
}

.animal-fit-item dd {
  color: var(--text);
  font-size: 0.8rem;
  font-weight: 700;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.animal-fit-link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 10px;
  color: var(--accent-dark);
  font-size: 0.78rem;
  font-weight: 700;
  text-decoration: none;
}

.animal-fit-link:hover {
  text-decoration: underline;
}

@keyframes nearby-pulse {
  50% { opacity: 0.35; }
}

@media (max-width: 900px) {
  .nearby-results-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 700px) {
  .filter-group--nearby {
    min-width: 0;
  }

  .nearby-search-button {
    align-self: start;
  }

  .nearby-results {
    margin-inline: 14px;
  }

  .nearby-results-list {
    grid-template-columns: 1fr;
  }

  .animal-section-heading {
    display: block;
  }

  .animal-section-heading p {
    margin-top: 4px;
    text-align: left;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nearby-search-button.is-loading .ui-icon {
    animation: none;
  }
}

/* ==========================================================================
   FINAL FRONTEND CONTROL PASS – 2026-07-16
   Поздняя бренд-палитра не должна перекрывать тёмные токены. Интерактивные
   элементы на телефоне получают устойчивую область касания без раздувания UI.
   ========================================================================== */

:root[data-theme="dark"] {
  --background: 28 14% 8%;
  --foreground: 32 18% 91%;
  --card: 28 11% 12%;
  --card-foreground: 32 18% 91%;
  --border-token: 28 10% 20%;
  --muted: 28 9% 16%;
  --muted-foreground: 30 10% 68%;
  --primary: 39 82% 61%;
  --primary-foreground: 28 25% 10%;
  --secondary: 28 9% 18%;
  --secondary-foreground: 32 18% 91%;
  --destructive: 0 75% 64%;
  --destructive-foreground: 28 25% 8%;
  --ring: 39 82% 61%;
  --text-muted: hsl(30 9% 58%);
  --accent-hover: hsl(39 80% 56%);
  --accent-light: hsl(39 46% 16%);
  --danger-light: hsl(0 42% 15%);
  --warning: hsl(36 88% 60%);
  --warning-light: hsl(35 44% 13%);
  --success: hsl(148 48% 58%);
  --success-light: hsl(148 45% 12%);
  --border-light: hsl(28 9% 16%);
  --shadow-sm: 0 1px 3px hsl(0 0% 0% / 0.24);
  --shadow-md: 0 8px 24px hsl(0 0% 0% / 0.28);
  --shadow-lg: 0 18px 44px hsl(0 0% 0% / 0.34);
}

:root[data-theme="dark"] body {
  background:
    linear-gradient(180deg, hsl(28 13% 10%) 0, hsl(var(--background)) 320px),
    hsl(var(--background));
}

:root[data-theme="dark"] .avds-title,
:root[data-theme="dark"] .avds-utility-card h2,
:root[data-theme="dark"] .avds-utility-card h3,
:root[data-theme="dark"] .tools-workflow-step h3,
:root[data-theme="dark"] .guide-req-title,
:root[data-theme="dark"] .guide-chip-card-title,
:root[data-theme="dark"] .guide-health-title,
:root[data-theme="dark"] .animal-name,
:root[data-theme="dark"] .swipe-card-name,
:root[data-theme="dark"] .shelter-name,
:root[data-theme="dark"] .lostfound-title {
  color: var(--text);
}

:root[data-theme="dark"] .animal-shelter,
:root[data-theme="dark"] .lostfound-location,
:root[data-theme="dark"] .shelter-city,
:root[data-theme="dark"] .section-subtitle,
:root[data-theme="dark"] .section-subtitle--catalog {
  color: var(--text-secondary);
}

:root[data-theme="dark"] .animal-photo,
:root[data-theme="dark"] .animal-photo-placeholder,
:root[data-theme="dark"] .gallery-main,
:root[data-theme="dark"] .swipe-card-placeholder,
:root[data-theme="dark"] .lostfound-photo-placeholder {
  background:
    radial-gradient(circle at 50% 44%, hsl(32 12% 23%) 0 11%, transparent 12%),
    linear-gradient(135deg, hsl(28 10% 17%), hsl(28 9% 13%));
}

:root[data-theme="dark"] .animal-photo-placeholder .ui-icon,
:root[data-theme="dark"] .gallery-placeholder .ui-icon,
:root[data-theme="dark"] .swipe-card-placeholder .ui-icon,
:root[data-theme="dark"] .lostfound-photo-placeholder .ui-icon {
  color: var(--text-secondary);
}

:root[data-theme="dark"] .badge--success {
  background: var(--success-light);
  color: var(--success);
}

:root[data-theme="dark"] .badge--info {
  background: hsl(211 38% 16%);
  color: hsl(211 78% 72%);
}

:root[data-theme="dark"] .verification-note {
  color: var(--warning);
}

:root[data-theme="dark"] .guide-chip-law-badge {
  color: hsl(var(--primary-foreground));
}

:root[data-theme="dark"] .severity-badge--medium {
  background: var(--warning-light);
  color: var(--warning);
}

:root[data-theme="dark"] .media-disclosure {
  border-color: hsl(32 18% 96% / 0.24);
  background: hsl(28 18% 8% / 0.88);
  color: hsl(32 18% 96%);
}

.partner-lead-field {
  display: grid;
  min-width: 0;
  gap: 6px;
}

.partner-lead-field > label {
  grid-column: auto;
  color: var(--text-secondary);
  font-size: 0.78rem;
  font-weight: 700;
  line-height: 1.35;
}

.partner-lead-field--wide {
  grid-column: 1 / -1;
}

.card-share-btn,
.chat-send-btn {
  min-width: 40px;
  min-height: 40px;
}

@media (max-width: 768px) {
  .lang-btn {
    display: inline-flex;
    min-width: 34px;
    min-height: 34px;
    align-items: center;
    justify-content: center;
    padding: 4px 6px;
    font-size: 11px;
  }

  .theme-toggle {
    width: 34px;
    height: 34px;
  }

  .nav-login-btn {
    min-height: 36px;
  }

  .avds-actions .btn,
  .animal-adopt-btn,
  .report-form-summary,
  .partner-lead-form .btn {
    min-height: 42px;
  }

  .fav-btn,
  .share-mini-btn {
    width: 38px;
    height: 38px;
    top: 6px;
  }

  .fav-btn {
    right: 6px;
  }

  .share-mini-btn {
    right: 48px;
  }

  .fav-btn svg {
    width: 17px;
    height: 17px;
  }

  .share-mini-btn svg {
    width: 16px;
    height: 16px;
  }

  .guide-hero-nav-link,
  .photo-search-tab,
  .vet-quick-buttons .chip {
    min-height: 38px;
  }

  .vet-quick-buttons .chip {
    padding: 7px 12px;
  }

  .bottom-nav-item {
    font-size: 0.625rem;
  }
}

/* -------------------------------------------------------------------------
   MEDIA DISCLOSURE + FINAL MOBILE DENSITY PASS – 2026-07-14
   Иллюстрации помогают читать каталог, но не маскируются под документальные
   фотографии. На узком экране карточки остаются короткими и сканируемыми.
   ------------------------------------------------------------------------- */
.animal-photo,
.gallery-main,
.passport-photo-wrap,
.swipe-card-photo{
  position: relative;
}

.animal-media-image--illustration,
.gallery-main-img--illustration {
  object-position: 68% 70%;
  filter: saturate(0.88) contrast(0.97);
}

.media-disclosure {
  position: absolute;
  right: 9px;
  bottom: 9px;
  z-index: 2;
  max-width: calc(100% - 18px);
  padding: 4px 7px;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--surface) 76%, transparent);
  border-radius: 999px;
  background: color-mix(in srgb, var(--text) 76%, transparent);
  color: var(--surface);
  font-size: 0.66rem;
  font-weight: 700;
  line-height: 1.15;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.catalog-page .animal-card--illustrated .animal-photo,
.urgent-page .animal-card--illustrated .animal-photo {
  aspect-ratio: 4 / 3;
}

.catalog-page .animal-card--illustrated .animal-card-body {
  padding-right: 14px;
}

.catalog-page .animal-card--illustrated .animal-photo img,
.urgent-page .animal-card--illustrated .animal-photo img,
.swipe-card-photo .animal-media-image--illustration,
.passport-main-photo.animal-media-image--illustration{
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.catalog-page .animal-card--illustrated .animal-photo img {
  display: block;
}

@media (min-width: 701px) {
  .catalog-page .animal-card--illustrated .animal-card-link {
    display: grid;
    grid-template-columns: 112px minmax(0, 1fr);
  }

  .catalog-page .animal-card--illustrated .animal-photo {
    width: 112px;
    height: 100%;
    min-height: 164px;
    aspect-ratio: auto;
    border-right: 1px solid var(--border-light);
  }

  .catalog-page .animal-card--illustrated .animal-card-body {
    min-width: 0;
    padding-right: 70px;
  }

  .catalog-page .animal-card--illustrated .media-disclosure {
    right: 8px;
    bottom: 8px;
    max-width: calc(100% - 16px);
    font-size: 0.58rem;
    text-align: center;
    text-overflow: clip;
    white-space: normal;
  }
}

.gallery-main .media-disclosure,
.passport-photo-wrap .media-disclosure,
.swipe-card-photo .media-disclosure {
  bottom: 12px;
  left: 12px;
  right: auto;
}

@media (max-width: 700px) {
  .catalog-page .animal-card--illustrated .animal-photo {
    aspect-ratio: 16 / 10;
  }

  .catalog-page .animal-card-body,
  .urgent-page .animal-card-body {
    padding: 12px;
  }

  .catalog-page .animal-adopt-btn {
    margin: 0 12px 12px;
  }

  .media-disclosure {
    right: 7px;
    bottom: 7px;
    font-size: 0.62rem;
  }

  .gallery-main .media-disclosure,
  .passport-photo-wrap .media-disclosure,
  .swipe-card-photo .media-disclosure {
    left: 8px;
    right: auto;
    bottom: 8px;
  }
}

/* -------------------------------------------------------------------------
   PUBLIC SIGNAL STATES – 2026-07-23
   Счётчики остаются фактическими, но различают норму, очередь проверки и
   пустой публичный контур. Это помогает читать состояние сервиса без
   декоративного дублирования данных в отдельных баннерах.
   ------------------------------------------------------------------------- */
.avds-metric {
  overflow-wrap: anywhere;
}

.avds-metric--attention {
  background: color-mix(in srgb, var(--warning-light) 62%, var(--surface));
}

.avds-metric--attention .avds-metric-value {
  color: var(--warning);
}

.avds-metric--verified {
  background: color-mix(in srgb, var(--success-light) 58%, var(--surface));
}

.avds-metric--verified .avds-metric-value {
  color: var(--success);
}

.avds-metric--empty {
  background: color-mix(in srgb, var(--bg) 80%, var(--surface));
}

.avds-metric--empty .avds-metric-value,
.avds-metric--empty .avds-metric-label {
  color: var(--text-muted);
}

.avds-metric-value--label {
  font-size: 1.08rem;
  font-weight: 750;
  letter-spacing: .03em;
}

.lostfound-page--empty .lostfound-empty-data .btn {
  justify-self: start;
  margin-top: 2px;
}

@media (max-width: 700px) {
  .avds-metric--attention,
  .avds-metric--verified,
  .avds-metric--empty {
    min-height: 72px;
  }

  .lostfound-page--empty .lostfound-empty-data .btn {
    width: 100%;
    justify-content: center;
  }
}
