:root {
  --bg: #f7f4ec;
  --surface: rgba(255, 255, 255, .58);
  --surface-solid: #fbfaf6;
  --ink: #24372b;
  --muted: #6c756e;
  --line: rgba(54, 72, 57, .16);
  --line-strong: rgba(54, 72, 57, .25);
  --olive: #8c9471;
  --olive-soft: #ececdf;
  --shadow: 0 18px 60px rgba(58, 65, 53, .06);
  --radius: 26px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  min-width: 320px;
  color: var(--ink);
  background:
    radial-gradient(circle at 50% -10%, rgba(255, 255, 255, .94), transparent 31rem),
    linear-gradient(180deg, #faf8f2 0%, var(--bg) 100%);
  font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

a { color: inherit; text-decoration: none; }
svg { display: block; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; }

.page-shell {
  width: min(100%, 1080px);
  margin: 0 auto;
  padding: max(30px, env(safe-area-inset-top)) 16px max(38px, env(safe-area-inset-bottom));
}

.site-header {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 10px 4px 28px;
  text-align: center;
}

.site-header::before,
.site-header::after {
  content: "";
  position: absolute;
  width: 120px;
  height: 190px;
  top: 90px;
  opacity: .32;
  pointer-events: none;
  background-repeat: no-repeat;
  background-size: contain;
}

.site-header::before {
  left: -34px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 190'%3E%3Cg fill='none' stroke='%238c9471' stroke-width='1.2'%3E%3Cpath d='M15 180C21 122 39 80 80 18'/%3E%3Cpath d='M32 132C19 126 12 116 11 102c14 1 25 8 29 22M48 96c-8-12-8-24-2-35 12 8 17 20 13 32M66 65c-2-14 3-25 14-33 7 12 4 24-7 34'/%3E%3C/g%3E%3C/svg%3E");
}

.site-header::after {
  right: -34px;
  transform: scaleX(-1);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 190'%3E%3Cg fill='none' stroke='%238c9471' stroke-width='1.2'%3E%3Cpath d='M15 180C21 122 39 80 80 18'/%3E%3Cpath d='M32 132C19 126 12 116 11 102c14 1 25 8 29 22M48 96c-8-12-8-24-2-35 12 8 17 20 13 32M66 65c-2-14 3-25 14-33 7 12 4 24-7 34'/%3E%3C/g%3E%3C/svg%3E");
}

.brand {
  display: block;
  width: min(270px, 72vw);
  margin-bottom: 20px;
}

.brand img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  filter: sepia(.2) saturate(.72) hue-rotate(70deg) brightness(.74);
}

.title-divider {
  width: min(540px, 88vw);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 14px;
  margin: 2px auto 12px;
}

.title-divider span { height: 1px; background: var(--line-strong); }
.title-divider i {
  display: block;
  width: 24px;
  height: 14px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 14'%3E%3Cg fill='none' stroke='%238c9471' stroke-width='1.1'%3E%3Cpath d='M12 13V5M12 8C7 8 5 5 4 1c5 0 8 2 8 7M12 8c5 0 7-3 8-7-5 0-8 2-8 7'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;
}

.eyebrow,
.card-kicker {
  margin: 0;
  color: var(--olive);
  font-size: .69rem;
  font-weight: 700;
  letter-spacing: .23em;
}

.site-header h1 {
  max-width: 590px;
  margin: 11px 0 22px;
  font-size: clamp(1rem, 3.6vw, 1.2rem);
  line-height: 1.55;
  font-weight: 400;
  letter-spacing: .01em;
  color: var(--muted);
}

.location-pill {
  display: inline-grid;
  grid-template-columns: 20px 1fr auto;
  align-items: center;
  gap: 11px;
  min-height: 46px;
  padding: 10px 15px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255,255,255,.35);
  font-size: .84rem;
  font-weight: 600;
  transition: border-color .2s ease, background .2s ease, transform .2s ease;
}
.location-pill svg { width: 19px; }
.location-pill b { font-size: .92rem; font-weight: 500; color: var(--olive); }
.location-pill:hover { border-color: var(--line-strong); background: rgba(255,255,255,.7); transform: translateY(-1px); }

.content-grid {
  display: grid;
  gap: 14px;
}

.guide-card {
  position: relative;
  overflow: hidden;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow);
  backdrop-filter: blur(12px);
}

.guide-card::after {
  content: "";
  position: absolute;
  right: -16px;
  top: 12px;
  width: 92px;
  height: 130px;
  opacity: .24;
  pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 92 130'%3E%3Cg fill='none' stroke='%238c9471' stroke-width='1.15'%3E%3Cpath d='M10 122C15 83 29 52 67 10'/%3E%3Cpath d='M26 87C15 84 8 76 7 65c13 1 22 7 27 17M40 59c-6-10-5-20 1-29 10 7 14 17 10 27M57 34c0-10 5-18 14-23 5 10 1 19-9 25'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;
}

.card-heading {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 13px;
  margin-bottom: 18px;
  padding-right: 54px;
}

.heading-icon,
.row-icon {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 50%;
  background: rgba(236,236,223,.62);
}

.heading-icon { width: 43px; height: 43px; }
.heading-icon svg { width: 21px; }

.card-heading h2 {
  margin: 3px 0 0;
  font-size: 1.1rem;
  line-height: 1.25;
  font-weight: 500;
  letter-spacing: .04em;
}

.link-list { position: relative; z-index: 1; }
.link-row {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-height: 74px;
  border-top: 1px solid var(--line);
  transition: background .2s ease, padding .2s ease;
}
.link-row:first-child { border-top: 0; }
.link-row:hover { background: rgba(255,255,255,.4); }
.row-icon { width: 38px; height: 38px; background: transparent; }
.row-icon svg { width: 19px; }
.row-copy { min-width: 0; }
.row-copy strong,
.row-copy small,
.row-copy em { display: block; }
.row-copy strong { font-size: .94rem; font-weight: 600; }
.row-copy small {
  margin-top: 3px;
  color: var(--muted);
  font-size: .79rem;
  overflow-wrap: anywhere;
}
.row-copy em { margin-top: 3px; color: var(--olive); font-size: .69rem; font-style: normal; }
.row-arrow { padding-left: 5px; color: var(--olive); font-size: 1.45rem; font-weight: 300; }

.number-list { position: relative; z-index: 1; }
.number-list a {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr) auto;
  align-items: center;
  min-height: 48px;
  border-top: 1px solid var(--line);
}
.number-list a:first-child { border-top: 0; }
.number-list strong { font-size: 1rem; font-weight: 650; letter-spacing: .05em; }
.number-list span { color: var(--muted); font-size: .88rem; }
.number-list i { color: var(--olive); font-size: 1.35rem; font-style: normal; }

.place-list { position: relative; z-index: 1; }
.place-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 16px 0;
  border-top: 1px solid var(--line);
}
.place-row:first-child { border-top: 0; }
.place-row h3 { margin: 0; font-size: .91rem; font-weight: 600; }
.place-row p { margin: 4px 0 0; color: var(--muted); font-size: .76rem; }
.place-actions { display: flex; gap: 7px; }
.place-actions a {
  min-width: 45px;
  padding: 7px 9px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255,255,255,.34);
  text-align: center;
  font-size: .7rem;
  font-weight: 650;
  transition: background .2s ease, border-color .2s ease;
}
.place-actions a:hover { background: var(--olive-soft); border-color: var(--line-strong); }

.text-link,
.feature-link {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border-top: 1px solid var(--line);
}
.text-link { padding-top: 17px; color: var(--ink); font-size: .81rem; font-weight: 600; }
.text-link b,
.feature-link b { color: var(--olive); font-weight: 500; }

.compact-card { min-height: 150px; }
.compact-heading { margin-bottom: 13px; }
.feature-link { min-height: 55px; }
.feature-link span strong,
.feature-link span small { display: block; }
.feature-link span strong { font-size: .92rem; font-weight: 600; }
.feature-link span small { margin-top: 4px; color: var(--muted); font-size: .76rem; }
.house-card { background: rgba(236,236,223,.45); }
.house-copy { position: relative; z-index: 1; max-width: 560px; margin: 0; color: var(--muted); font-size: .82rem; }

.site-footer { padding: 34px 8px 2px; text-align: center; }
.footer-ornament {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 13px;
  max-width: 420px;
  margin: 0 auto 13px;
  color: var(--olive);
}
.footer-ornament span { height: 1px; background: var(--line-strong); }
.footer-ornament i { font-size: .9rem; font-style: normal; }
.site-footer p { margin: 0; color: var(--muted); font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; }

@media (min-width: 760px) {
  .page-shell { padding-left: 28px; padding-right: 28px; }
  .site-header { padding-top: 18px; padding-bottom: 40px; }
  .brand { width: 300px; }
  .content-grid { grid-template-columns: 1fr 1fr; gap: 18px; }
  .contact-card,
  .emergency-card,
  .pharmacies-card { min-height: 100%; }
  .pharmacies-card { grid-column: 1 / -1; }
  .place-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
  .place-row {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: space-between;
    min-height: 150px;
    padding: 18px 0 4px;
    border-top: 0;
    border-left: 1px solid var(--line);
    padding-left: 18px;
  }
  .place-row:first-child { border-left: 0; padding-left: 0; }
  .text-link { margin-top: 18px; }
  .guide-card { padding: 28px; }
}

@media (max-width: 430px) {
  .page-shell { padding-left: 10px; padding-right: 10px; }
  .site-header::before,
  .site-header::after { opacity: .18; }
  .brand { width: min(235px, 72vw); }
  .guide-card { padding: 19px 17px; border-radius: 22px; }
  .card-heading { padding-right: 38px; }
  .link-row { grid-template-columns: 38px minmax(0,1fr) auto; gap: 10px; }
  .row-icon { width: 35px; height: 35px; }
  .place-row { grid-template-columns: 1fr; gap: 10px; }
  .place-actions { justify-content: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}

/* Local dining and Wi-Fi additions */
.dining-card { grid-column: 1 / -1; }
.restaurant-list .place-row p { max-width: 24rem; }
.restaurant-list .place-actions a { min-width: 62px; }

.wifi-card { background: rgba(236,236,223,.45); }
.wifi-details {
  position: relative;
  z-index: 1;
  display: grid;
  gap: 0;
  margin: 0;
}
.wifi-details > div {
  display: grid;
  grid-template-columns: 86px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
  min-height: 52px;
  border-top: 1px solid var(--line);
}
.wifi-details > div:first-child { border-top: 0; }
.wifi-details dt {
  color: var(--muted);
  font-size: .76rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.wifi-details dd {
  margin: 0;
  overflow-wrap: anywhere;
  font-size: .94rem;
  font-weight: 650;
  letter-spacing: .025em;
}

@media (min-width: 760px) {
  .dining-card { grid-column: 1 / -1; }
  .restaurant-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
}
