/* Shared design system: load after the page stylesheet. */
:root {
  --radius-sm: 8px;
  --radius-card: 16px;
  --radius-pill: 999px;
  --space-section: clamp(3.5rem, 7vw, 6.5rem);
  --text-body: 1rem;
  --text-small: .875rem;
  --header-height: 120px;
  --muted: #54624f;
}
html { scroll-padding-top: var(--header-height); }
body { font-size: var(--text-body); line-height: 1.65; }
.button,
.shop-header .contact-link {
  border-radius: var(--radius-pill);
  font-size: .9rem;
  font-weight: 600;
  min-height: 48px;
  padding: .9rem 1.4rem;
  letter-spacing: .02em;
  text-decoration: none;
  cursor: pointer;
  transition: background .2s ease, color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.button:hover { transform: translateY(-2px); box-shadow: 0 8px 22px #172a1f20; }
.button--light:hover { background: #e3c395; }
.button--dark:hover, .button--green:hover { background: #405846; color: white; }
button, a, input, select { -webkit-tap-highlight-color: transparent; }
input, select { border-radius: var(--radius-sm); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, summary:focus-visible { outline: 3px solid #b58d58; outline-offset: 4px; }
.section { padding-block: var(--space-section); }
/* More compact spacing for Casa de Campo. */
body#top { --space-section: clamp(2rem, 4vw, 3.5rem); }
body#top .intro { padding-bottom: 2rem; }
body#top .amenities { padding-top: 1rem; }
body#top .testimonials__grid { margin-top: 1.5rem; }
body#top .faq__items { margin-top: 1.25rem; }
body#top footer { padding-block: 2rem 4.5rem; }
.eyebrow { font-size: .8rem; }
.intro>div>p:not(.eyebrow), .amenities article p, .location p,
.location address, .reception p:not(.eyebrow), .slide__content>p:not(.eyebrow),
.catalog-intro>div>p:last-child, .product-description { font-size: 1rem; }
.wordmark span, .capacity span, .amenities article span, .phone, .source,
cite, .socials, .reception__details, footer, .catalog-count, .catalog-note,
.animal-card__code, .animal-card dl, .animal-card__bottom, .detail-link,
.specs>div, .cta-note, .individual-note, .reference-note, .media-caption,
.breadcrumb, .care-card .care-source, .status-badge { font-size: var(--text-small); }
.wordmark span { font-size: .7rem; letter-spacing: .12em; }
.source, cite, .catalog-count, .catalog-note, .animal-card__code { color: #54624f; }
.catalog-intro__aside, .product-extra p, .how-it-works p { font-size: .95rem; }
.filter-row label, .filter-row input, .filter-row select, .category-filters button, .tabs button { font-size: .95rem; }
.filter-row input, .filter-row select { min-height: 48px; font-size: 1rem; }
.filter-row { gap: 1.25rem; }
.animal-card, .care-card, blockquote { border-radius: var(--radius-card); }
.animal-card__body { padding: 1.35rem; }
.animal-card__media { aspect-ratio: 4 / 3; }
.animal-card__media img, .animal-card__media video { object-position: center; }
.animal-card__bottom { flex-wrap: wrap; }
.animal-card__category, .reference-badge { font-size: .8rem; }
.animal-card__code { line-height: 1.7; }
.animal-card .button { width: 100%; }
.gallery img, .intro-photo img, .reception-frame img { object-position: center; }
.gallery figure, .location iframe { border-radius: var(--radius-card); }
.gallery figcaption, .reception-frame figcaption { font-size: .9rem; }
.gallery__zoom { border-radius: inherit; }
.slideshow__controls button { min-width: 44px; min-height: 44px; font-size: .85rem; border-radius: var(--radius-pill); }
.slideshow__controls .slide-dot {
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  padding: .85rem 1.25rem;
  border: 1px solid #ffffff70;
  background: #172a1f55;
  letter-spacing: .06em;
  line-height: 1.5;
  opacity: 1;
}
.slideshow__controls .slide-dot span { margin-left: 0; }
.slideshow__controls .slide-dot:hover { background: #ffffff20; }
.slideshow__controls .slide-dot[aria-pressed="true"] { border-color: var(--gold); background: #d3b58920; color: var(--gold); }
.developer-credit { font-size: .875rem; text-decoration: none; text-underline-offset: 4px; padding-block: .5rem; }
.developer-credit:hover { color: #405846; text-decoration: underline; }
.topbar nav > a, .shop-header nav { font-size: .95rem; }
.topbar nav > a, .shop-header nav > a { padding-block: .6rem; }
.topbar, .shop-header { gap: 1.5rem; }
.menu-toggle { display: none; }
.faq { background: #ecefe7; }
.faq__intro { max-width: 650px; }
.faq__items { max-width: 950px; margin-top: 2rem; }
.faq details { border-top: 1px solid #253b3026; }
.faq details:last-child { border-bottom: 1px solid #253b3026; }
.faq summary { display: flex; justify-content: space-between; align-items: center; gap: 1rem; min-height: 64px; padding: 1rem 0; cursor: pointer; list-style: none; font-weight: 600; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; font-size: 1.6rem; color: #405846; }
.faq details[open] summary::after { content: '−'; }
.faq details p { max-width: 760px; margin: 0; padding: 0 0 1.5rem; color: #54624f; }
.booking-query { max-width: 900px; margin: 2rem auto; padding: 2rem; background: #ffffff12; border: 1px solid #ffffff35; border-radius: var(--radius-card); text-align: left; }
.booking-query__fields { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1rem; }
.booking-query label { display: flex; flex-direction: column; gap: .4rem; font-size: .9rem; }
.booking-query input, .booking-query select { width: 100%; min-width: 0; min-height: 48px; padding: .75rem; border: 1px solid #ffffff66; font: inherit; background: #f7f5ef; color: #253b30; }
.booking-query .button { margin-top: 1.5rem; border: 0; }
.booking-query__note { font-size: .875rem; color: #e4ebdf; margin-bottom: 0; }
.quick-facts { display: flex; gap: 1rem; flex-wrap: wrap; margin: 1.5rem 0 2rem; }
.quick-facts span { padding: .5rem 1rem; border: 1px solid #253b3026; border-radius: var(--radius-pill); font-size: .9rem; }
.catalog-faq { padding-inline: 2rem; border-radius: var(--radius-card); margin-top: 3rem; }
.social-text { display: inline-block; }
.socials .social-text[aria-disabled] { font-size: .875rem; }
.nav-social[aria-disabled] { opacity: .65; }

/* Shared Casa de Campo / Criadouro navigation and footer. */
.topbar {
  position: fixed; inset: 0 0 auto; z-index: 50;
  display: flex; justify-content: space-between; align-items: center;
  padding: 1.2rem 6vw; color: #fff;
  background: rgba(23, 42, 31, .7);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  box-shadow: 0 2px 16px #0002;
}
.topbar nav { display: flex; align-items: center; gap: 2rem; }
.topbar nav a { text-decoration: none; }
.topbar nav > a:hover { color: #d3b589; }
.topbar .wordmark, .site-footer .wordmark { font: 600 1.7rem 'Playfair Display', serif; text-decoration: none; }
.topbar .wordmark span, .site-footer .wordmark span { display: block; margin-top: .4rem; font: 500 .7rem 'DM Sans', sans-serif; letter-spacing: .12em; text-transform: uppercase; }
.site-footer { display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding: 2rem 8vw 4.5rem; color: #253b30; background: #f7f5ef; font-size: .875rem; }
.catalog-page:has(> .topbar) .shop-main { padding-top: calc(var(--header-height) + 1rem); }

@media (max-width: 1100px) {
  .topbar nav, .shop-header nav { gap: 1rem; }
  .animal-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 900px) {
  .topbar, .shop-header { padding: 1rem 5vw; flex-wrap: wrap; align-items: center; }
  .nav-ready .menu-toggle { display: inline-flex; align-items: center; gap: .6rem; min-height: 44px; padding: .6rem 1rem; border: 1px solid #ffffff70; border-radius: var(--radius-pill); background: transparent; color: white; font: inherit; margin-left: auto; }
  .topbar nav, .shop-header nav { width: 100%; max-width: none; flex-direction: column; align-items: stretch; gap: .25rem; padding-top: .75rem; max-height: 65svh; overflow-y: auto; }
  .topbar nav > a, .shop-header nav > a { font-size: 1rem; padding: .75rem 1rem; border-radius: var(--radius-sm); }
  .topbar nav > a:hover, .shop-header nav > a:hover { background: #ffffff15; }
  .shop-header .contact-link { display: inline-flex; justify-content: center; margin-top: .5rem; }
  .topbar .nav-socials { justify-content: flex-start; }
  .topbar .nav-socials, .shop-header .nav-socials { padding: .75rem 1rem; border: 0; }
  .intro, .reception, .location { grid-template-columns: 1fr; }
  .slide__content { top: 53%; }
  .slideshow { min-height: 640px; }
  .booking-query { padding: 1.25rem; }
}
@media (max-width: 600px) {
  .slideshow__controls .slide-dot { padding: .75rem .9rem; }
  .booking-query__fields { grid-template-columns: 1fr; }
  .booking-query .button { width: 100%; }
  .catalog-faq { padding-inline: 1.25rem; }
  .animal-grid, .related .animal-grid { grid-template-columns: 1fr; }
  .capacity { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .capacity span { font-size: .85rem; }
  .intro-photo { height: 360px; border-radius: 110px 110px 16px 16px; }
  .reception-carousel { height: 380px; }
}
@media (max-width: 800px) {
  .topbar .wordmark, .site-footer .wordmark { font-size: 1.4rem; }
  .site-footer { flex-direction: column; align-items: flex-start; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
  .button:hover { transform: none; }
}
