@layer site {

.gs-hours-eyebrow { margin: 0 0 0.2em; font: 400 0.78rem/1.3 var(--ncss-font-family-heading); letter-spacing: 0.12em; text-transform: uppercase; color: var(--gs-accent-text); }
.gs-hours-grid {
  display: grid;
  gap: var(--ncss-space-md);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr));
}
.gs-hours-grid[data-count="1"] { max-width: 40rem; margin-inline: auto; }
.gs-hours-card { overflow: visible; }
.gs-hours-card .gs-panel-body { display: flex; flex-direction: column; height: 100%; }
.gs-hours-card-head h3 { margin: 0; font-size: var(--ncss-font-size-lg); font-weight: 400; line-height: 1.2; }
.gs-hours-season { margin: 0.3em 0 0; font-size: var(--ncss-font-size-sm); color: var(--ncss-color-text-muted); }
.gs-hours-now {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: baseline;
  column-gap: 0.6em;
  margin: var(--ncss-space-sm) 0;
  padding: 0.8em 1em;
  border-radius: var(--ncss-radius-md);
  background: var(--gs-hover);
}
.gs-hours-dot { width: 0.7em; height: 0.7em; border-radius: 50%; background: var(--gs-muted); translate: 0 -0.05em; }
.gs-hours-card.is-open .gs-hours-dot { background: #2e8b57; box-shadow: 0 0 0 0.3em rgb(46 139 87 / 18%); }
.gs-hours-now.is-soon .gs-hours-dot { background: #c98a00; box-shadow: 0 0 0 0.3em rgb(201 138 0 / 18%); }
.gs-hours-now-label { font: 400 var(--ncss-font-size-lg) / 1.2 var(--ncss-font-family-heading); }
.gs-hours-now-next { grid-column: 2; font-size: var(--ncss-font-size-sm); color: var(--ncss-color-text-muted); }
.gs-hours-card.is-open .gs-hours-now { background: light-dark(rgb(46 139 87 / 8%), rgb(46 139 87 / 16%)); }
.gs-week { margin: 0; padding: 0; list-style: none; font-variant-numeric: tabular-nums; }
.gs-week li {
  display: grid;
  grid-template-columns: 2.5em 1fr;
  gap: 0.75em;
  padding: 0.35em 0.6em;
  border-radius: calc(var(--ncss-radius-md) * 0.6);
}
.gs-week abbr { text-decoration: none; font-family: var(--ncss-font-family-heading); font-weight: 500; }
.gs-week li.is-closed { color: var(--ncss-color-text-muted); }
.gs-week li.is-closed abbr { font-weight: 400; }
.gs-week li.is-today { background: var(--ncss-color-brand-100); color: var(--gs-ink); }
.gs-week li.is-today abbr { color: var(--gs-accent-text); }
.gs-week em { font-size: 0.85em; color: var(--ncss-color-text-muted); }
.gs-hours-special,
.gs-hours-note { margin: 0.8em 0 0; font-size: var(--ncss-font-size-sm); }
.gs-hours-special { padding: 0.5em 0.8em; border-inline-start: 3px solid var(--gs-accent); background: var(--gs-hover); }
.gs-hours-card-foot { margin-top: auto; padding-top: var(--ncss-space-sm); }
.gs-hours-address { margin: 0 0 0.5em; font-size: var(--ncss-font-size-sm); }
.gs-hours-card-foot .gs-actions { margin: 0; }
.gs-hours-appointment { margin-block-start: var(--ncss-space-md); overflow: visible; }
.gs-hours-appointment .gs-panel-body { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem 1.5rem; padding-block: var(--ncss-space-sm); }
.gs-hours-appointment p { margin: 0; flex: 1 1 18rem; }
.gs-hours-appointment .gs-actions { margin: 0; }
.gs-contact .gs-panel-body { display: grid; gap: var(--ncss-space-md) var(--ncss-space-xl); }
@media (min-width: 52rem) {
  .gs-contact .gs-panel-body { grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); align-items: center; }
}
.gs-contact-who h2 { margin: 0; font-size: var(--ncss-font-size-xl); font-weight: 300; }
.gs-contact-owner { margin: 0.2em 0 0.8em; font: 300 var(--ncss-font-size-md) / 1.3 var(--ncss-font-family-heading); }
.gs-contact-who address { font-style: normal; margin: 0 0 0.9em; }
.gs-contact-ways { display: grid; gap: 0.6rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); grid-auto-flow: dense; margin: 0; padding: 0; list-style: none; container-type: inline-size; }
@container (min-width: 28.6rem) { .gs-contact-ways li.is-wide { grid-column: span 2; } }
.gs-contact-mail { hyphens: none; overflow-wrap: normal; word-break: normal; }
.gs-contact-ways a,
.gs-contact-ways li.is-plain {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  padding: 0.75rem 1rem;
  border-radius: var(--ncss-radius-md);
  border: 1px solid var(--gs-line);
  background: light-dark(rgb(255 255 255 / 0.55), rgb(255 255 255 / 0.04));
  color: var(--gs-ink);
  text-decoration: none;
  transition: border-color var(--ncss-motion-duration), translate var(--ncss-motion-duration) var(--ncss-motion-easing);
}
.gs-contact-ways a:hover { border-color: var(--gs-accent); translate: 0 -2px; }
.gs-contact-ways small { display: block; font: 400 0.75rem/1.3 var(--ncss-font-family-heading); letter-spacing: 0.08em; text-transform: uppercase; color: var(--ncss-color-text-muted); }
.gs-contact-ways span:last-child { overflow-wrap: anywhere; }
.gs-contact-icon { display: grid; place-items: center; flex: none; width: 2.5rem; height: 2.5rem; border-radius: 50%; background: var(--ncss-color-brand-100); color: var(--gs-accent-text); }
.gs-hours-strip .gs-panel-body { padding-block: var(--ncss-space-sm); }
.gs-hours-strip-list { margin: 0; padding: 0; list-style: none; }
.gs-hours-strip-item {
  display: grid;
  grid-template-columns: minmax(14rem, 1.1fr) minmax(0, 1.4fr) auto;
  align-items: center;
  gap: 0.4rem var(--ncss-space-md);
  padding-block: 0.7rem;
}
.gs-hours-strip-item + .gs-hours-strip-item { border-top: 1px solid var(--gs-line); }
.gs-hours-strip-place h3 { margin: 0; font-size: var(--ncss-font-size-md); font-weight: 400; line-height: 1.25; }
.gs-hours-strip-now { display: flex; flex-wrap: wrap; align-items: center; gap: 0 0.4em; margin: 0.15em 0 0; font-size: var(--ncss-font-size-sm); color: var(--ncss-color-text-muted); }
.gs-hours-strip-now strong { font-weight: 600; color: var(--gs-ink); }
.gs-hours-strip-now .gs-hours-dot { width: 0.55em; height: 0.55em; box-shadow: none; }
.gs-hours-strip-times { display: flex; flex-wrap: wrap; gap: 0.1rem 1.2rem; margin: 0; font-size: var(--ncss-font-size-sm); font-variant-numeric: tabular-nums; }
.gs-hours-strip-times abbr { font-family: var(--ncss-font-family-heading); font-weight: 500; text-decoration: none; margin-inline-end: 0.25em; }
.gs-hours-strip-route .btn { font-size: 0.85em; padding: 0.35em 1em; }
.gs-hours-strip .gs-hours-eyebrow { margin-bottom: 0.1rem; }
@media (max-width: 52rem) {
  .gs-hours-strip-item { grid-template-columns: minmax(0, 1fr) auto; }
  .gs-hours-strip-times { grid-column: 1 / -1; grid-row: 2; }
  .gs-hours-strip-route { grid-row: 1; grid-column: 2; align-self: start; }
}
.gs-hours-strip-now.is-open .gs-hours-dot { background: #2e8b57; }
.gs-hours-strip-now.is-soon .gs-hours-dot { background: #c98a00; }
.gs-hours-strip-route { display: flex; justify-content: flex-end; }
.gs-hours-more-contact { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.6rem var(--ncss-space-md); border-top: 1px solid var(--gs-line); }
.gs-hours-more-contact p { margin: 0; max-width: 34rem; font-size: var(--ncss-font-size-sm); }
.gs-hours-more-contact .gs-actions { margin: 0; }
.gs-hours-strip-contact { margin-top: 0.3rem; padding-top: 0.8rem; }
.gs-hours-strip-contact .btn { font-size: 0.85em; padding: 0.35em 1em; }
.gs-contact-note { margin: 0 0 0.7rem; font-size: var(--ncss-font-size-sm); color: var(--gs-text-soft); }
.gs-hours-rows { display: grid; gap: var(--ncss-space-md); }
.gs-hours-row { display: grid; gap: var(--ncss-space-md); }
@media (min-width: 52rem) {
  .gs-hours-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: stretch; }
}
.gs-hours-map { display: flex; flex-direction: column; min-height: 22rem; }
.gs-hours-map vectormap { display: block; flex: 1; min-height: 16rem; }
.gs-hours-map .gs-panel-body { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 1rem; }
.gs-hours-map .gs-hours-eyebrow { flex-basis: 100%; margin: 0; }
.gs-hours-map .gs-hours-address { margin: 0; }
.gs-hours-map > .gs-panel-body { flex: none; }
.gs-hours-map > vectormap { flex: 1 1 auto; height: auto !important; }

}
@layer site {

.gs-route { position: relative; display: inline-block; margin: 0; }
.gs-route > summary { list-style: none; cursor: pointer; }
.gs-route > summary::-webkit-details-marker { display: none; }
.gs-route-caret { width: 0.45em; height: 0.45em; margin-inline-start: 0.2em; border-inline-end: 1.5px solid currentColor; border-block-end: 1.5px solid currentColor; rotate: 45deg; translate: 0 -0.15em; transition: rotate var(--ncss-motion-duration); }
.gs-route[open] .gs-route-caret { rotate: -135deg; translate: 0 0.1em; }
.gs-route-menu {
  position: absolute;
  inset-block-start: calc(100% + 0.35rem);
  inset-inline-start: 0;
  z-index: 20;
  min-width: 13rem;
  margin: 0;
  padding: 0.35rem;
  list-style: none;
  border-radius: var(--ncss-radius-md);
  background: var(--ncss-color-surface);
  box-shadow: 0 12px 32px rgb(0 0 0 / 18%), 0 0 0 1px var(--gs-line);
}
.gs-route-menu a {
  display: block;
  padding: 0.5em 0.8em;
  border-radius: calc(var(--ncss-radius-md) * 0.6);
  color: var(--ncss-color-text);
  text-decoration: none;
  font-size: 0.95rem;
}
.gs-route-menu a:hover,
.gs-route-menu a:focus-visible { background: var(--ncss-color-bg-subtle); color: var(--gs-accent-text); }
@media (prefers-reduced-motion: no-preference) {
  .gs-route[open] .gs-route-menu { animation: gs-route-in 160ms var(--ncss-motion-easing); }
}
@keyframes gs-route-in { from { opacity: 0; translate: 0 -4px; } }
.gs-maps { display: grid; gap: var(--ncss-space-md); grid-template-columns: repeat(auto-fit, minmax(min(100%, 26rem), 1fr)); }
.gs-map-card { overflow: visible; }
.gs-map-card vectormap { display: block; border-radius: var(--ncss-radius-md) var(--ncss-radius-md) 0 0; overflow: hidden; }
.gs-map-card .gs-panel-body { padding-block: var(--ncss-space-sm) var(--ncss-space-md); }
.gs-map-card h3 { margin: 0; font-size: var(--ncss-font-size-lg); font-weight: 400; }
.gs-map-card p { margin: 0.2em 0 0.8em; }
.gs-map-title { display: table; margin: 0 auto var(--ncss-space-sm); padding: 0.15em 0.9em; border-radius: 999px; font-size: var(--ncss-font-size-xl); font-weight: 300; }
.gs-panel:has(.gs-route[open]) { overflow: visible; z-index: 5; }
.gs-panel.gs-panel--hours,
.gs-panel.gs-map-card,
.gs-panel:has(.gs-route) { overflow: visible; }
.gs-map-card vectormap { border-radius: var(--ncss-radius-md) var(--ncss-radius-md) 0 0; }

}
