/* Canopy owns layout and components for both the listing and intake pages (detail-page
   carousel rules live in animal-detail.css). Brand values
   come only from the tokens below: a customer palette (css/themes/<Name>.css, linked with
   customer-theme.css) sets --customer-*; without one, each token's fallback is the
   original Canopy palette. Rules read --canopy-* only, so every color has one fallback. */
html { font-size: 14px; }
@media (min-width:768px) { html { font-size: 16px; } }
.canopy-app {
    color-scheme: light;
    --canopy-accent: var(--customer-primary, #176f73);
    --canopy-accent-rgb: var(--customer-primary-rgb, 23, 111, 115);
    --canopy-accent-hover: var(--customer-primary-hover, #10585e);
    --canopy-ink: var(--customer-ink, #173e4b);
    --canopy-heading: var(--customer-heading, var(--canopy-ink));
    --canopy-heading-font: var(--customer-heading-font, inherit);
    --canopy-muted: var(--customer-muted, #526b73);
    --canopy-line: var(--customer-border, #d7e4e1);
    --canopy-input-line: color-mix(in srgb, var(--canopy-muted) 80%, #fff);
    --canopy-pale: var(--customer-tint, #edf7f4);
    --canopy-page: var(--customer-page-bg, #fff);
    --canopy-rule: var(--customer-accent, #e1ebe6);
    --canopy-rule-width: var(--customer-rule-width, 1px);
    --canopy-nav-hover: var(--customer-tint, transparent);
    --canopy-nav-bg: var(--customer-nav-bg, #fff);
    --canopy-nav-text: var(--customer-nav-text, #244650);
    --canopy-secondary: var(--customer-secondary, #eef4f2);
    --canopy-secondary-line: var(--customer-secondary, #adcbc4);
    --canopy-on-secondary: var(--customer-on-secondary, #254e54);
    --canopy-secondary-hover: var(--customer-secondary-hover, #dceae5);
    --canopy-secondary-hover-line: var(--customer-secondary-hover, #8bb3aa);
    --canopy-secondary-tint: var(--customer-secondary-tint, #eff8fc);
    --canopy-secondary-soft: var(--customer-secondary-soft, #ceeaf2);
    --canopy-footer-bg: var(--customer-footer-bg, #f4f8f4);
    --canopy-footer-text: var(--customer-footer-text, #365c5b);
    --canopy-footer-hover: var(--customer-footer-hover, #104d54);
    --canopy-radius: var(--customer-radius, 8px);
    --canopy-radius-lg: calc(var(--canopy-radius) + 4px);
    --canopy-focus: var(--canopy-accent);
    /* Status colors stay the same for every customer. */
    --canopy-warn-bg: #fff0d6;
    --canopy-warn-ink: #7d5010;
    --canopy-danger: #a32538;
    --bs-primary: var(--canopy-accent);
    --bs-primary-rgb: var(--canopy-accent-rgb);
    --bs-link-color: var(--canopy-accent);
    --bs-link-color-rgb: var(--canopy-accent-rgb);
    --bs-link-hover-color: var(--canopy-accent-hover);
    --bs-body-color: var(--canopy-ink);
    --bs-body-bg: var(--canopy-page);
    --bs-body-font-family: "Segoe UI", Arial, sans-serif;
    --bs-border-color: var(--canopy-line);
    --bs-border-radius: var(--canopy-radius);
    margin: 0; padding: 0; background: var(--canopy-page); color: var(--canopy-ink);
    font-family: var(--bs-body-font-family); font-size: 1rem; line-height: 1.6;
}
.canopy-app [hidden] { display: none !important; }
.canopy-app *, .canopy-app *::before, .canopy-app *::after { box-sizing: border-box; }
.canopy-app h1, .canopy-app h2, .canopy-app h3, .canopy-app h4, .canopy-app h5, .canopy-app h6 { font-family: var(--canopy-heading-font); color: var(--canopy-heading); letter-spacing: -.025em; }
.canopy-app h1 { font-weight: 720; line-height: 1.15; }
.canopy-app a { color: var(--canopy-accent); }
.canopy-app a:hover { color: var(--canopy-accent-hover); }
.canopy-app :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: 3px solid var(--canopy-focus) !important; outline-offset: 3px; box-shadow: 0 0 0 2px #fff !important; }
/* The outline above is the only focus indicator; drop Bootstrap's blue focus glow. */
.canopy-app :is(.btn, .form-control, .form-select, .form-check-input, .page-link):focus,
.canopy-app .btn-check:focus-visible + .btn { box-shadow: none; }
.canopy-app .btn-check:focus-visible + .btn { border-color: var(--canopy-accent-hover); }
.canopy-app .text-muted { color: var(--canopy-muted) !important; }
.canopy-app .text-primary { color: var(--canopy-accent) !important; }
.canopy-app .btn { min-height: 44px; padding: .65rem 1rem; border-radius: var(--canopy-radius); font-size: .92rem; font-weight: 650; line-height: 1.4; display: inline-flex; align-items: center; justify-content: center; gap: .5rem; white-space: normal; }
.canopy-app .btn-primary { color: #fff; background: var(--canopy-accent); border-color: var(--canopy-accent); }
.canopy-app .btn-primary:hover, .canopy-app .btn-primary:active, .canopy-app .btn-primary.active,
.canopy-app .btn-check:checked + .btn-primary { background: var(--canopy-accent-hover); border-color: var(--canopy-accent-hover); color: #fff; }
.canopy-app .btn-outline-primary { color: var(--canopy-accent); border-color: var(--canopy-accent); background: #fff; }
.canopy-app .btn-outline-primary:hover, .canopy-app .btn-outline-primary:active,
.canopy-app .btn-outline-primary.active, .canopy-app .btn-check:checked + .btn-outline-primary,
.canopy-app .btn-primary[aria-pressed="true"], .canopy-app .btn-outline-primary[aria-pressed="true"] { color: #fff; background: var(--canopy-accent-hover); border-color: var(--canopy-accent-hover); }
.canopy-app .btn-primary:disabled, .canopy-app .btn-primary.disabled { color: #fff; background: var(--canopy-accent); border-color: var(--canopy-accent); }
.canopy-app .btn-outline-primary:disabled, .canopy-app .btn-outline-primary.disabled { color: var(--canopy-accent); background: #fff; border-color: var(--canopy-accent); }
.canopy-app .btn-check:focus-visible + label { outline: 3px solid var(--canopy-focus); outline-offset: 3px; }
.canopy-app .btn-secondary { background: var(--canopy-secondary); color: var(--canopy-on-secondary); border-color: var(--canopy-secondary-line); }
.canopy-app .btn-secondary:hover, .canopy-app .btn-secondary:active, .canopy-app .btn-secondary.active,
.canopy-app .btn-secondary[aria-pressed="true"], .canopy-app .btn-check:checked + .btn-secondary { color: var(--canopy-on-secondary); background: var(--canopy-secondary-hover); border-color: var(--canopy-secondary-hover-line); }
.canopy-app .btn-secondary:disabled, .canopy-app .btn-secondary.disabled { color: var(--canopy-on-secondary); background: var(--canopy-secondary); border-color: var(--canopy-secondary-line); }
.canopy-app .btn-close { min-width: 44px; min-height: 44px; padding: 10px; box-sizing: border-box; }
.canopy-app .form-control, .canopy-app .form-select { min-height: 46px; border-color: var(--canopy-input-line); border-radius: var(--canopy-radius); color: var(--canopy-ink); background-color: #fff; font-size: 1rem; }
.canopy-app .form-control::placeholder { color: var(--canopy-muted); opacity: 1; }
.canopy-app .form-control:focus, .canopy-app .form-select:focus, .canopy-app .form-check-input:focus { border-color: var(--canopy-accent); }
.canopy-app .form-control:disabled, .canopy-app .form-select:disabled { background-color: #e9ecef; color: #59636e; }
.canopy-app .form-check-input { border-color: var(--canopy-input-line); }
.canopy-app .form-check-input:checked { background-color: var(--canopy-accent); border-color: var(--canopy-accent); }
.canopy-app .form-label { color: var(--canopy-ink); }
.canopy-app .canopy-filters .dynamic-filters-grid { grid-template-columns: minmax(0, 1fr); }
.canopy-app .form-text { color: var(--canopy-muted); }
.canopy-app .text-danger, .canopy-app .field-validation-error { color: var(--canopy-danger) !important; }
.canopy-app .card { --bs-card-inner-border-radius: calc(var(--canopy-radius-lg) - 1px); border-radius: var(--canopy-radius-lg); border-color: var(--canopy-line); background: #fff; overflow-wrap: anywhere; }
.canopy-app .card-header { border-color: var(--canopy-line); }
.canopy-app .table { --bs-table-bg: transparent; --bs-table-color: var(--canopy-ink); color: var(--canopy-ink); }
.canopy-app .table td, .canopy-app .table th { white-space: normal !important; overflow-wrap: anywhere; }
.canopy-app .modal-content { border-radius: var(--canopy-radius-lg); border-color: var(--canopy-line); color: var(--canopy-ink); }
.canopy-app .badge.text-bg-success { background-color: #146c43 !important; color: #fff !important; }
.canopy-app .canopy-icon { fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; vertical-align: middle; }
.canopy-container { width: 100%; max-width: 1400px; padding-inline: 36px; margin-inline: auto; }
.canopy-main { flex: 1 0 auto; min-width: 0; padding-block: 0 42px; }
.canopy-main > .container { max-width: 100%; }
.canopy-skip-link { position: fixed; top: -90px; left: 18px; z-index: 2000; background: #fff; padding: 12px 18px; border: 2px solid var(--canopy-accent); border-radius: var(--canopy-radius); }
.canopy-skip-link:focus { top: 10px; }
.canopy-app .loading { opacity: .8; }

/* Shared header for both page families. */
.canopy-app .site-navigation { background: var(--canopy-nav-bg); border: 0; border-bottom: var(--canopy-rule-width) solid var(--canopy-rule); margin: 0; padding-block: 14px; box-shadow: none; text-align: left; }
.canopy-app .site-navigation > .container-fluid { max-width: 1400px; padding-inline: 36px; gap: 22px; justify-content: flex-start; }
.canopy-app .site-navigation .navbar-brand { display: flex; align-items: center; flex: 0 0 auto; min-height: 56px; max-width: min(calc(100% - 76px), var(--logo-max-width, 200px)); margin: 0; padding: 0; color: var(--canopy-ink); white-space: normal; overflow-wrap: anywhere; }
.canopy-app .site-navigation .navbar-brand > span { min-width: 0; }
.canopy-app .site-navigation .navbar-brand img { width: auto; height: auto; max-width: min(100%, var(--logo-max-width, 200px)); max-height: 56px; object-fit: contain; object-position: left center; }
.canopy-app .site-navigation .canopy-tagline { flex: 0 1 15rem; min-width: 0; margin: 0; padding-left: 22px; border-left: 1px solid var(--canopy-line); color: var(--canopy-nav-text); font-size: .875rem; line-height: 1.35; }
.canopy-app .site-navigation .navbar-toggler { margin-left: auto; flex-shrink: 0; min-width: 46px; min-height: 46px; border-color: var(--canopy-input-line); border-radius: var(--canopy-radius); }
.canopy-app .site-navigation .navbar-collapse { min-width: 0; column-gap: 1rem; }
.canopy-app .site-navigation-links { flex: 1 1 auto; min-width: 0; margin: 0; padding: 0; justify-content: flex-start; align-items: stretch; }
.canopy-app .site-navigation .nav-link { color: var(--canopy-nav-text); padding: .5rem; font-size: .92rem; font-weight: 550; line-height: 1.5; min-height: 44px; display: inline-flex; align-items: center; }
.canopy-app .site-navigation .nav-link:hover, .canopy-app .site-navigation .nav-link:focus-visible,
.canopy-app .site-navigation .nav-link[aria-current="page"], .canopy-app .site-navigation .nav-link.active { color: var(--canopy-accent-hover); background-color: var(--canopy-nav-hover); border-radius: var(--canopy-radius); text-decoration: underline; text-underline-offset: 7px; }
.canopy-app .site-navigation-languages { display: flex; flex: 0 0 auto; align-items: center; gap: .25rem; margin: 0; padding: 0; }
.canopy-app .site-navigation-languages .nav-link { min-width: 44px; justify-content: center; padding: 0; }
.canopy-app .site-navigation-languages img { display: block; width: 26px; height: 26px; object-fit: contain; border-radius: 4px; }
.canopy-report-nav { position: relative; }
.canopy-report-nav summary { cursor: pointer; list-style: none; gap: 9px; }
.canopy-report-nav summary::-webkit-details-marker { display: none; }
.canopy-report-nav summary::after { content: ""; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; width: 6px; height: 6px; transform: rotate(45deg); margin-top: -3px; }
.canopy-report-menu { position: absolute; z-index: 50; background: #fff; min-width: 230px; padding: 8px; margin: 3px 0 0; list-style: none; border: 1px solid var(--canopy-line); border-radius: var(--canopy-radius-lg); box-shadow: 0 8px 30px rgb(0 0 0 / .1); }
.canopy-report-menu a { display: block; min-height: 44px; padding: 10px 12px; border-radius: var(--canopy-radius); font-size: .9rem; text-decoration: none; }
.canopy-report-menu a:hover { background: var(--canopy-pale); }

/* Welcome page. */
.canopy-hero { background: var(--canopy-page); }
.canopy-hero-content { position: relative; padding-top: 64px; padding-bottom: 110px; min-height: 460px; }
.canopy-hero-copy { position: relative; z-index: 1; max-width: 52%; }
.canopy-hero-art { position: absolute; right: 0; top: 0; width: 64%; height: 100%; }
.canopy-hero-art img { display: block; width: auto; max-width: 100%; height: 100%; margin-left: auto; object-fit: contain; object-position: right center; mask-image: linear-gradient(90deg,transparent,#000 25%); }
.canopy-eyebrow { font-size: .75rem; letter-spacing: .16em; font-weight: 700; color: var(--canopy-accent); margin-bottom: 18px; }
.canopy-hero h1 { font-size: clamp(2.7rem,4.3vw,3.7rem); max-width: 600px; margin: 0 0 22px; letter-spacing: -.035em; }
.canopy-hero-summary { max-width: 565px; font-size: 1.2rem; color: var(--canopy-muted); line-height: 1.65; margin: 0; }
.canopy-services { display: grid; grid-template-columns: repeat(auto-fit,minmax(260px,1fr)); gap: 22px; margin-top: -57px; position: relative; }
.canopy-service { border: 1px solid var(--canopy-line); border-radius: var(--canopy-radius-lg); background: #fff; box-shadow: 0 5px 23px rgb(0 0 0 / .06); overflow: hidden; display: flex; flex-direction: column; }
.canopy-service-heading { display: flex; align-items: flex-start; gap: 16px; padding: 25px 24px; background: linear-gradient(115deg,var(--canopy-pale),var(--canopy-page)); }
.canopy-service-heading h2 { font-size: 1.38rem; font-weight: 700; margin: 0 0 10px; }
.canopy-service-heading p { font-size: .92rem; color: var(--canopy-muted); margin: 0; }
.canopy-medallion { width: 52px; height: 52px; flex-shrink: 0; display: grid; place-items: center; border-radius: 50%; color: var(--canopy-accent); background: var(--canopy-pale); }
.canopy-medallion .canopy-icon { width: 29px; height: 29px; }
.canopy-service-gold .canopy-service-heading { background: var(--canopy-warn-bg); }
.canopy-service-gold .canopy-medallion { background: #f9e9bb; color: var(--canopy-warn-ink); }
.canopy-service-blue .canopy-service-heading { background: var(--canopy-secondary-tint); }
.canopy-service-blue .canopy-medallion { background: var(--canopy-secondary-soft); color: var(--canopy-ink); }
.canopy-service-guide { list-style: none; padding: 20px 24px 0; margin: 0; display: grid; align-content: start; gap: 17px; flex: 1; }
.canopy-service-guide li { display: flex; align-items: flex-start; gap: 12px; }
.canopy-service-guide .canopy-icon { color: var(--canopy-accent); margin-top: 3px; width: 22px; height: 22px; }
.canopy-service-guide strong { display: block; font-size: .92rem; font-weight: 650; }
.canopy-service-guide p { margin: 3px 0 0; font-size: .86rem; color: var(--canopy-muted); }
.canopy-service-actions { padding: 22px 24px; display: flex; flex-direction: column; gap: 12px; margin-top: auto; }
.canopy-action-pair { display: flex; flex-wrap: wrap; gap: 10px; }
.canopy-action-pair > * { flex: 1; min-width: 130px; }
.canopy-service-actions .canopy-text-link { justify-content: space-between; }
.canopy-text-link { display: inline-flex; align-items: center; gap: 8px; border: 0; background: transparent; padding: 9px 0; min-height: 44px; color: var(--canopy-accent); font-size: .9rem; font-weight: 650; text-decoration: none; }
.canopy-text-link:hover { color: var(--canopy-accent-hover); text-decoration: underline; text-underline-offset: 4px; }
.canopy-featured { padding-top: 40px; }
.canopy-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 22px; margin-bottom: 22px; }
.canopy-section-heading h2 { font-size: 1.85rem; font-weight: 700; margin: 0; }
.canopy-pet-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 20px; }
.canopy-pet-card { border: 1px solid var(--canopy-line); border-radius: var(--canopy-radius-lg); overflow: hidden; background: #fff; min-width: 0; }
.canopy-pet-image { display: block; background: var(--canopy-pale); }
.canopy-pet-image img { display: block; width: 100%; height: 235px; object-fit: cover; }
.canopy-pet-body { padding: 20px; }
.canopy-pet-body :is(h2,h3) { font-size: 1.45rem; margin: 0 0 10px; font-weight: 700; }
.canopy-pet-body :is(h2,h3) a { color: var(--canopy-heading); text-decoration: none; }
.canopy-pet-body p { font-size: .92rem; margin: 0 0 8px; color: var(--canopy-muted); }
.canopy-pet-body .table { font-size: .8rem; margin-bottom: 9px; }
.canopy-pet-body .table td { padding: 5px 0; border-color: var(--canopy-line); }
.canopy-pet-body .table td + td { padding-left: 8px; }
.canopy-help { margin-top: 35px; border-radius: var(--canopy-radius-lg); background: var(--canopy-pale); padding: 27px 30px; display: flex; gap: 25px; justify-content: space-between; align-items: center; }
.canopy-help h2 { font-size: 1.6rem; margin: 0 0 7px; }
.canopy-help p { margin: 0; color: var(--canopy-muted); }
.canopy-help-links { display: flex; gap: 18px; flex-wrap: wrap; align-items: center; font-size: .9rem; }

/* Listings, details and maps. */
.canopy-page-heading { background: linear-gradient(110deg,var(--canopy-pale),var(--canopy-page)); border: 1px solid var(--canopy-line); padding: 29px 31px; border-radius: var(--canopy-radius-lg); margin: 26px 0; display: flex; align-items: center; justify-content: space-between; gap: 25px; }
.canopy-page-heading h1 { font-size: 2.4rem; margin: 0 0 12px; }
.canopy-page-heading p { color: var(--canopy-muted); margin: 0; }
.canopy-heading-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.canopy-heading-actions .btn { font-size: .82rem; }
.canopy-search-layout { display: grid; grid-template-columns: 320px minmax(0,1fr); gap: 28px; align-items: start; }
.canopy-filters { background: var(--canopy-page); border: 1px solid var(--canopy-line); border-radius: var(--canopy-radius-lg); min-width: 0; }
.canopy-filters > summary { min-height: 48px; padding: 18px 22px; cursor: pointer; font-weight: 700; }
#searchFiltersDiv { padding: 0 22px 22px; }
.canopy-app #searchFiltersDiv > .mb-2 { margin-bottom: 16px !important; }
.canopy-app #searchFiltersDiv .lead, .canopy-filter-label { color: var(--canopy-ink); font-size: .95rem; font-weight: 650; line-height: 1.4; margin-bottom: 10px; display: block; letter-spacing: normal; }
.canopy-app #searchFiltersDiv .btn { font-size: .9rem; min-height: 46px; padding: 10px 12px; box-shadow: none; }
.canopy-app #searchFiltersDiv .btn-group { display: flex; flex-wrap: wrap; gap: 8px; }
.canopy-app #searchFiltersDiv .btn-group > .btn { flex: 1 1 auto; margin: 0; border-radius: var(--canopy-radius); }
.species-filter-container { margin-bottom: 1rem; }
.dynamic-filters-container { margin-block: 1rem; }
.dynamic-filters-grid { display: grid; gap: .75rem; }
.filter-item { background: #fff; border: 1px solid var(--canopy-line); border-radius: var(--canopy-radius); padding: .75rem; }
.canopy-listing-types { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.canopy-listing-types > label:last-child:nth-of-type(odd) { grid-column: 1 / -1; }
.canopy-app #searchFiltersDiv .form-select, .canopy-app #searchFiltersDiv .form-control { font-size: 1rem; }
.canopy-results { min-width: 0; }
.canopy-search-results > .alert { background: transparent; border: 0; padding: 0; font-size: .88rem; color: var(--canopy-muted); }
.canopy-search-results > .alert strong { font-weight: 500; }
.canopy-app .pagination { flex-wrap: wrap; gap: 5px; margin-block: 17px; }
.canopy-app .page-link { min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; border-radius: var(--canopy-radius) !important; border-color: var(--canopy-line); color: var(--canopy-accent); }
.canopy-app .page-item.active .page-link { background: var(--canopy-accent); border-color: var(--canopy-accent); color: #fff; }
.canopy-app .page-link:hover { background: var(--canopy-pale); color: var(--canopy-accent-hover); }
.canopy-app .page-item.disabled .page-link { background: #fff; color: var(--canopy-muted); border-color: var(--canopy-line); }
.canopy-empty { text-align: center; padding: 60px 24px; background: var(--canopy-pale); border: 1px dashed var(--canopy-line); border-radius: var(--canopy-radius-lg); }
.canopy-empty h2 { font-size: 1.4rem; margin: 0; }
.canopy-status { width: 100%; max-width: 1328px; margin-inline: auto; font-size: .88rem; padding-inline: 24px; min-height: 1px; color: var(--canopy-ink); }
.canopy-status:empty { display: none; }
.canopy-map-toolbar { display: flex; gap: 18px; align-items: center; justify-content: space-between; margin-bottom: 18px; }
.canopy-map-toolbar p { font-size: .8rem; max-width: 390px; color: var(--canopy-muted); margin: 0; }
.canopy-view-switch { display: flex; flex-shrink: 0; gap: 5px; }
.canopy-app .canopy-view-switch .btn { font-size: .8rem; }
.canopy-lost-list { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 18px; }
.canopy-lost-badge { display: inline-flex; font-size: .72rem; font-weight: 650; background: var(--canopy-warn-bg); color: var(--canopy-warn-ink); border-radius: 5px; padding: 3px 9px; }
.canopy-pet-body > .canopy-lost-badge { margin-bottom: 10px; }
.canopy-card-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: space-between; }
.canopy-card-actions .canopy-text-link { font-size: .78rem; }
.canopy-card-actions .canopy-icon { width: 16px; height: 16px; }
.canopy-atlas.is-map { display: grid; grid-template-columns: minmax(255px,.85fr) minmax(300px,1.15fr); gap: 18px; align-items: start; }
.is-map .canopy-lost-list { grid-template-columns: 1fr; }
.is-map .canopy-lost-card { display: grid; grid-template-columns: 100px minmax(0,1fr); }
.is-map .canopy-pet-image img { height: 100%; min-height: 210px; max-height: 300px; }
.is-map .canopy-pet-body { padding: 14px; }
.is-map .canopy-pet-body h2 { font-size: 1.25rem; }
.canopy-lost-card.is-selected { outline: 2px solid var(--canopy-accent); outline-offset: 1px; }
.canopy-map-panel { position: sticky; top: 18px; min-width: 0; border: 1px solid var(--canopy-line); border-radius: var(--canopy-radius-lg); overflow: hidden; background: var(--canopy-page); }
.canopy-map-panel h2 { padding: 16px 18px; font-size: 1rem; font-weight: 650; margin: 0; background: #fff; }
.canopy-map { width: 100%; height: 520px; background: var(--canopy-pale); }
.canopy-map-panel [data-map-status] { font-size: .82rem; margin: 0; padding: 13px 17px; }
.canopy-map-panel .is-error { color: var(--canopy-warn-ink); background: var(--canopy-warn-bg); }
.canopy-map-info { color: var(--canopy-ink); max-width: 230px; }
.canopy-map-info img { width: 65px; height: 65px; object-fit: cover; border-radius: 6px; margin-bottom: 8px; }
.canopy-map-info h3 { font-size: 1rem; margin: 0 0 5px; }
.canopy-map-info a { min-height: 44px; display: inline-flex; align-items: center; font-weight: 650; }
.canopy-map-info strong { display: block; }
.canopy-detail-map { width: 100%; height: 300px; cursor: pointer; border: 1px solid var(--canopy-line); border-radius: var(--canopy-radius-lg); overflow: hidden; background: var(--canopy-pale); }

/* Happy Endings archive. */
.canopy-app .canopy-archive .card-header { background: var(--canopy-pale); color: var(--canopy-ink); padding: 16px 18px; }
.canopy-app .canopy-archive .archive-link { min-height: 48px; padding: 12px 18px; gap: 12px; background: #fff; color: var(--canopy-ink); border-color: var(--canopy-line); text-decoration: none; font-weight: 600; }
.canopy-app .canopy-archive .archive-link:hover { background: var(--canopy-pale); color: var(--canopy-accent-hover); }
.canopy-app .canopy-archive .archive-link.active { background: var(--canopy-accent); color: #fff; border-color: var(--canopy-accent); }
.canopy-app .canopy-archive .archive-link.active:hover { background: var(--canopy-accent-hover); border-color: var(--canopy-accent-hover); }
.canopy-app .canopy-archive .archive-link:focus-visible { outline-offset: -4px; }
.canopy-app .canopy-archive .archive-link.active:focus-visible { outline-color: #fff !important; }
.canopy-app .canopy-archive-count { min-width: 2.25rem; flex-shrink: 0; background: var(--canopy-pale); color: var(--canopy-accent); font-size: .8rem; line-height: 1.4; }
.canopy-app .canopy-archive .active .canopy-archive-count { background: #fff; color: var(--canopy-accent); }

/* Intake forms. French labels run longer, so labels wrap and inputs align at the bottom. */
.canopy-intake { padding-top: 30px; }
.canopy-intake > .row > .col-lg-9 { flex: 0 0 100%; width: 100%; max-width: 1040px; }
.canopy-intake h1 { font-size: 2.3rem; }
.canopy-intake form .row > [class*="col-"] { display: flex; flex-direction: column; }
.canopy-intake form .row > [class*="col-"] > .form-label { word-break: break-word; }
.canopy-intake form .row > [class*="col-"] > :is(.form-control, .form-select) { margin-top: auto; }
.canopy-intake .card { border: 1px solid var(--canopy-line) !important; box-shadow: 0 4px 17px rgb(0 0 0 / .03) !important; }
.canopy-intake .card-header { background: var(--canopy-pale); padding: 20px 24px; }
.canopy-intake .card-header :is(h2,h5) { font-size: 1.15rem; color: var(--canopy-heading); }
.canopy-intake .card-body { padding: 26px !important; }
.canopy-intake .alert { border-radius: var(--canopy-radius-lg); }

/* Shared footer (Views/Shared/_SiteFooter.cshtml) for both page families. */
.canopy-footer { --canopy-focus: var(--canopy-footer-hover); background: var(--canopy-footer-bg); color: var(--canopy-footer-text); border-top: var(--canopy-rule-width) solid var(--canopy-rule); line-height: 1.6; margin-top: 20px; padding-block: 44px 24px; overflow-wrap: anywhere; }
.canopy-app .canopy-footer :is(h1, h2, h3, h4, h5, h6) { color: inherit; }
.canopy-app .canopy-footer a { color: inherit; text-decoration: underline; text-decoration-color: color-mix(in srgb, currentColor 45%, transparent); text-underline-offset: .2em; }
.canopy-app .canopy-footer a:hover, .canopy-app .canopy-footer a:focus-visible { color: var(--canopy-footer-hover); text-decoration-color: currentColor; }
.canopy-footer-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) repeat(2, minmax(0, 1fr)); gap: 32px 56px; }
.canopy-footer-name { margin: 0 0 8px; font-size: 1.2rem; font-weight: 700; line-height: 1.3; }
.canopy-footer-about { margin: 0; max-width: 62ch; font-size: .875rem; white-space: pre-line; opacity: .88; }
.canopy-app .canopy-footer-heading { margin: 0 0 14px; font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.canopy-footer-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; font-size: .95rem; }
.canopy-footer-list li { display: flex; gap: 10px; align-items: flex-start; }
.canopy-footer-list .canopy-icon { width: 18px; height: 18px; margin-top: .2em; opacity: .8; }
.canopy-footer-brand .canopy-social { margin: 14px 0 0 -11px; }
.canopy-footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 24px; margin-top: 36px; padding-top: 18px; border-top: 1px solid color-mix(in srgb, currentColor 22%, transparent); font-size: .825rem; opacity: .9; }
@media (max-width:767.98px) {
    .canopy-footer { padding-block: 32px 20px; }
    .canopy-footer-grid { grid-template-columns: minmax(0, 1fr); gap: 28px; }
}
.canopy-social { display: flex; gap: .25rem; align-items: center; }
.canopy-social a { display: inline-flex; padding: 11px; }
.canopy-social svg { display: block; width: 22px; height: 22px; fill: currentColor; }
@media (max-width:1199.98px) {
    .canopy-container { padding-inline: 24px; }
    .canopy-app .site-navigation > .container-fluid { padding-inline: 24px; }
    .canopy-app .site-navigation .navbar-collapse { padding-top: .5rem; }
    .canopy-app .site-navigation .canopy-tagline { order: 1; flex-basis: 100%; margin-top: -12px; padding-left: 0; border-left: 0; }
    .canopy-app .site-navigation .navbar-collapse { order: 2; }
    .canopy-app .site-navigation .nav-link { width: 100%; padding: .625rem 0; }
    .canopy-app .site-navigation-languages { gap: 1rem; padding-block: .75rem .25rem; }
    .canopy-app .site-navigation-languages .nav-link { width: auto; }
    .canopy-report-menu { position: static; box-shadow: none; min-width: 0; margin-bottom: 10px; }
    .canopy-search-layout { grid-template-columns: 290px minmax(0,1fr); gap: 22px; }
    .canopy-pet-grid, .canopy-lost-list { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .canopy-home .canopy-pet-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .canopy-atlas.is-map { grid-template-columns: 1fr; }
    .canopy-map-panel { grid-row: 1; position: relative; top: 0; }
    .canopy-map { height: 440px; }
    .canopy-map-toolbar { align-items: flex-start; flex-wrap: wrap; }
    .canopy-service-heading { padding: 22px 18px; gap: 12px; }
    .canopy-medallion { width: 44px; height: 44px; }
    .canopy-service-actions { padding: 18px; }
    .canopy-service-guide { padding-inline: 18px; }
}
@media (min-width:1200px) {
    .canopy-app .site-navigation-links { flex-wrap: wrap; }
}
@media (max-width:991.98px) {
    .canopy-search-layout { grid-template-columns: minmax(0,1fr); }
}
@media (max-width:767.98px) {
    .canopy-container { padding-inline: 18px; }
    .canopy-app .site-navigation > .container-fluid { padding-inline: 18px; }
    .canopy-app .site-navigation { padding-block: 10px; }
    .canopy-hero-content { min-height: 0; padding-top: 32px; padding-bottom: 35px; }
    .canopy-hero-copy { max-width: none; }
    .canopy-hero-art { position: relative; width: calc(100% + 36px); height: clamp(300px,80vw,460px); margin: 12px -18px -35px; }
    .canopy-hero-art img { width: 100%; object-fit: cover; mask-image: linear-gradient(180deg,transparent,#000 18%); }
    .canopy-hero h1 { font-size: 2.65rem; max-width: 410px; }
    .canopy-eyebrow { font-size: .65rem; letter-spacing: .14em; }
    .canopy-hero-summary { font-size: 1.02rem; max-width: 440px; }
    .canopy-services { grid-template-columns: 1fr; margin-top: -35px; gap: 17px; }
    .canopy-service-heading { padding: 23px; }
    .canopy-service-actions { padding: 20px 23px; }
    .canopy-service-guide { padding-inline: 23px; }
    .canopy-service-heading h2 { font-size: 1.4rem; }
    .canopy-service-actions .canopy-text-link { justify-content: flex-start; }
    .canopy-section-heading { align-items: flex-start; gap: 12px; }
    .canopy-section-heading h2 { font-size: 1.5rem; }
    .canopy-section-heading > a { font-size: .8rem; white-space: nowrap; }
    .canopy-home .canopy-pet-grid { grid-template-columns: 1fr; }
    .canopy-home .canopy-pet-card { display: grid; grid-template-columns: 40% minmax(0,1fr); }
    .canopy-home .canopy-pet-image img { height: 100%; min-height: 180px; }
    .canopy-pet-body { padding: 16px; }
    .canopy-help { display: block; padding: 25px; }
    .canopy-help-links { margin-top: 19px; }
    .canopy-page-heading { padding: 24px 20px; display: block; margin: 20px 0; }
    .canopy-page-heading h1 { font-size: 2rem; }
    .canopy-page-heading p { font-size: .95rem; }
    .canopy-heading-actions { margin-top: 18px; }
    .canopy-search-layout { grid-template-columns: 1fr; gap: 20px; }
    .canopy-pet-image img { height: 215px; }
    .canopy-pet-body .table { font-size: .82rem; }
    .canopy-intake h1 { font-size: 2rem; }
    .canopy-intake .card-body { padding: 19px !important; }
    .canopy-intake .card-header { padding: 18px 19px; }
    .canopy-intake .row { --bs-gutter-x: 1rem; }
    .canopy-intake form > .d-flex { flex-wrap: wrap; gap: 18px; }
    .canopy-map { height: 380px; }
}
@media (max-width:479.98px) {
    .canopy-pet-grid, .canopy-lost-list { grid-template-columns: 1fr; }
    .canopy-app .canopy-pet-image img { height: 240px; }
    .canopy-home .canopy-pet-image img { height: 100%; }
    .is-map .canopy-lost-card { grid-template-columns: 95px minmax(0,1fr); }
    .is-map .canopy-pet-image img { height: 100%; min-height: 210px; }
    .canopy-app .btn { padding-inline: 13px; }
    .canopy-heading-actions .btn { flex: 1; }
    .canopy-card-actions { gap: 0; }
    .canopy-card-actions .canopy-text-link { font-size: .78rem; }
}
@media (prefers-reduced-motion:reduce) { .canopy-app *, .canopy-app *::before, .canopy-app *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }
