:root{
  --bg: #ffffff;
  --ink: #101828;
  --muted: #475467;
  --line: #e6e8ec;
  --soft: #f7f8fa;
  --primary: #175cd3;
  --radius: 18px;
}

* { box-sizing: border-box; }
html, body { height: 100%; }
body.site{
  font-family: "Assistant", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  color: var(--ink);
  background: var(--bg);
}

.mono{ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }

.skip-link{
  position: absolute;
  top: -999px;
  right: 12px;
  background: #000;
  color: #fff;
  padding: 10px 12px;
  border-radius: 10px;
  z-index: 9999;
}
.skip-link:focus{ top: 12px; }

.section{ padding: 64px 0; }
.section-alt{ background: var(--soft); }
.section__title{ font-weight: 800; letter-spacing: -0.2px; }
.section__subtitle{ color: var(--muted); }

.card-soft{
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: 0 10px 30px rgba(16, 24, 40, 0.06);
}

.mini{
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 14px 16px;
  background: #fff;
}
.mini__title{ font-weight: 800; }
.mini__text{ color: var(--muted); }

.hero{
  position: relative;
  min-height: 64vh;
  display: grid;
  place-items: center;
  color: #fff;
  background: url("../img/hero.jpg") center/cover no-repeat;
}
.hero__overlay{
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, rgba(0,0,0,0.65), rgba(0,0,0,0.25));
}
.hero__content{
  position: relative;
  padding: 64px 12px;
}
.hero__kicker{
  margin: 0 0 10px 0;
  opacity: 0.9;
  font-weight: 700;
  letter-spacing: 0.2px;
}

.map-wrap{
  border-radius: var(--radius);
  border: 1px solid var(--line);
  overflow: hidden;
  background: #fff;
}
.map{ height: 460px; }

.gallery-img{
  width: 100%;
  height: 220px;
  object-fit: cover;
  border-radius: 16px;
  border: 1px solid var(--line);
  box-shadow: 0 10px 25px rgba(16, 24, 40, 0.05);
  background: #f0f0f0;
  /* visual loading cue */
  transition: filter 300ms ease, opacity 300ms ease;
}
.gallery-img.lazy{ filter: blur(6px); opacity: .9 }
.gallery-img.loaded{ filter: none; opacity: 1 }

/* Carousel-specific image sizes */
.carousel .gallery-img{ height: 420px; }
@media (max-width: 992px){
  .carousel .gallery-img{ height: 320px; }
}
@media (max-width: 576px){
  .gallery-img{ height: 160px; }
  .carousel .gallery-img{ height: 220px; }
  .map{ height: 380px; }
}

.footer{
  border-top: 1px solid var(--line);
  padding: 18px 0;
  background: #fff;
}

/* Floating buttons */
.fab-whatsapp{
  position: fixed;
  left: 18px;
  bottom: 18px;
  z-index: 9998;
  padding: 12px 14px;
  border-radius: 999px;
  background: #0ea85a;
  color: #fff;
  text-decoration: none;
  font-weight: 800;
  box-shadow: 0 14px 40px rgba(16,24,40,0.18);
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.fab-whatsapp:hover{ color: #fff; filter: brightness(0.95); }
.fab-whatsapp__dot{
  width: 10px;
  height: 10px;
  border-radius: 99px;
  background: rgba(255,255,255,0.9);
  display: inline-block;
}

.fab-a11y{
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 9999;
  padding: 12px 14px;
  border-radius: 999px;
  background: #111827;
  color: #fff;
  border: 0;
  font-weight: 800;
  box-shadow: 0 14px 40px rgba(16,24,40,0.18);
}

/* Accessibility menu */
.a11y-menu{
  position: fixed;
  right: 18px;
  bottom: 78px;
  width: min(360px, calc(100vw - 36px));
  max-height: calc(100vh - 120px);
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: 0 18px 50px rgba(16,24,40,0.20);
  z-index: 10000;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}
.a11y-menu__header{
  padding: 12px 12px;
  border-bottom: 1px solid var(--line);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.a11y-menu__body{ padding: 12px; }
.a11y-toggle{
  width: 100%;
  text-align: right;
  padding: 10px 12px;
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 12px;
  margin-bottom: 8px;
  font-weight: 700;
}
.a11y-toggle.is-on{
  border-color: rgba(23, 92, 211, 0.35);
  background: rgba(23, 92, 211, 0.06);
}

/* A11y feature classes */
body.a11y-font-level-1{ font-size: 110%; }
body.a11y-font-level-2{ font-size: 120%; }
body.a11y-font-level-3{ font-size: 130%; }
body.a11y-font-level-4{ font-size: 140%; }
body.a11y-font-level-5{ font-size: 150%; }
body.a11y-font-level-6{ font-size: 160%; }
body.a11y-font-level-7{ font-size: 170%; }
body.a11y-font-level-8{ font-size: 180%; }
body.a11y-font-level-9{ font-size: 190%; }

/* Font size buttons */
.a11y-font-controls{
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
  margin-bottom: 12px;
}
.a11y-font-btn{
  padding: 8px 6px;
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 8px;
  font-weight: 600;
  font-size: 0.85rem;
  cursor: pointer;
  transition: all 0.2s;
}
.a11y-font-btn:hover{
  border-color: var(--primary);
  background: rgba(23, 92, 211, 0.08);
}
.a11y-font-btn.is-active{
  border-color: var(--primary);
  background: var(--primary);
  color: #fff;
}

body.a11y-contrast{
  background: #000;
  color: #fff;
}
body.a11y-contrast .navbar,
body.a11y-contrast .footer,
body.a11y-contrast .card,
body.a11y-contrast .card-soft,
body.a11y-contrast .mini,
body.a11y-contrast .map-wrap{
  background: #000 !important;
  color: #fff !important;
  border-color: #2b2b2b !important;
}
body.a11y-contrast a{ color: #93c5fd; }

body.a11y-underline a{ text-decoration: underline !important; }
body.a11y-spacing{ letter-spacing: 0.4px; line-height: 1.7; }
body.a11y-grayscale{ filter: grayscale(1); }
body.a11y-reduce-motion *{
  animation: none !important;
  transition: none !important;
  scroll-behavior: auto !important;
}
