.visit-page .hero{
  padding-bottom:56px;
}

.visit-copy{
  padding:0 0 120px;
}

.visit-copy .section-label{
  font-family:var(--mono);
  font-size:var(--fs-small);
  letter-spacing:.18em;
  text-transform:uppercase;
  font-weight:500;
  color:var(--muted);
  margin:0 0 28px;
}

.visit-copy p{
  font-family:var(--serif);
  font-weight:300;
  font-size:var(--fs-serif-md);
  line-height:1.5;
  letter-spacing:0;
  color:var(--ink-2);
  max-width:none;
}

.visit-copy strong{
  font-weight:400;
  color:var(--ink);
}

.visit-copy em{
  font-style:italic;
}

.visit-copy .photo-placeholder{
  margin:48px 0;
  aspect-ratio:16 / 9;
  background:var(--bg-2);
  border:1px solid var(--hair);
  display:grid;
  place-items:center;
}

.visit-copy .photo-placeholder span{
  font-family:var(--mono);
  font-size:var(--fs-small);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--muted);
}

.visit-anchor{
  scroll-margin-top:96px;
}

.visit-places{
  display:flex;
  flex-direction:column;
  gap:160px;
  padding:0 0 120px;
}

.place-block{
  display:block;
}

.place-block h2{
  margin:0 0 24px;
  font-family:var(--serif);
  font-size:var(--fs-list-title);
  font-weight:300;
  line-height:1;
  letter-spacing:0;
  color:var(--ink);
  text-wrap:pretty;
}

.place-block figure{
  margin:0 0 30px;
  width:100%;
  background:var(--bg-2);
  overflow:hidden;
}

.place-block img{
  display:block;
  width:100%;
  height:auto;
  object-fit:cover;
  filter:saturate(var(--media-saturation));
}

.place-block p{
  margin:0;
  font-family:var(--serif);
  font-weight:300;
  font-size:var(--fs-serif-md);
  line-height:1.5;
  letter-spacing:0;
  color:var(--ink-2);
  max-width:none;
  text-wrap:pretty;
}

.place-block strong{
  font-weight:400;
  color:var(--ink);
}

.place-block em{
  font-style:italic;
}

.place-links{
  display:flex;
  flex-wrap:wrap;
  gap:10px 18px;
  margin-top:18px;
  font-family:var(--mono);
  font-size:var(--fs-small);
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--muted);
}

.place-links a{
  position:relative;
  display:inline-flex;
  align-items:center;
  padding-bottom:4px;
}

.place-links a::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:1px;
  background:currentColor;
  transform-origin:left;
  transform:scaleX(.32);
  transition:transform .35s var(--ease), color .2s;
}

.place-links a:hover{
  color:var(--ink);
}

.place-links a:hover::after{
  transform:scaleX(1);
}

.place-links a + a::before{
  content:"·";
  margin-right:18px;
  color:var(--muted);
}

.back-top{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:56px;
  height:56px;
  margin:0 auto;
  border:1px solid var(--ink);
  font-family:var(--mono);
  font-size:var(--fs-subtitle);
  line-height:1;
  transition:background .25s, color .25s, transform .35s var(--ease);
}

.back-top:hover{
  background:var(--ink);
  color:var(--bg);
  transform:translateY(-4px);
}

.visit-events{
  margin-top:0;
}

.events-head{
  display:grid;
  grid-template-columns:minmax(260px,.9fr) minmax(260px,1.1fr);
  gap:clamp(40px,5vw,88px);
  align-items:end;
  padding:56px 0 40px;
  border-bottom:1px solid var(--ink);
}

.events-head h2{
  margin:0;
  font-family:var(--serif);
  font-size:var(--fs-headline);
  font-weight:300;
  line-height:1;
  letter-spacing:0;
  max-width:14ch;
  color:var(--ink);
}

.events-head h2 em{
  font-style:italic;
  color:var(--accent);
}

.events-head p{
  margin:0;
  font-family:var(--mono);
  font-size:var(--fs-small);
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--muted);
}

.events-list{
  list-style:none;
  margin:0 0 56px;
  padding:0;
  border-bottom:1px solid var(--ink);
}

.events-list li{
  list-style:none;
}

.event{
  display:block;
  border-top:1px solid var(--ink);
}

.events-list > li:first-child .event{
  border-top:0;
}

.event > summary{
  list-style:none;
  cursor:pointer;
  display:grid;
  grid-template-columns:160px 1fr 56px;
  align-items:center;
  gap:clamp(20px,4vw,56px);
  padding:28px 0;
  transition:padding 320ms var(--ease);
}

.event > summary::-webkit-details-marker{
  display:none;
}

.event > summary:focus-visible{
  outline:1px solid var(--ink);
  outline-offset:6px;
}

.event-date{
  display:flex;
  flex-direction:column;
  gap:6px;
  font-family:var(--mono);
  font-size:var(--fs-small);
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--ink);
}

.event-date .stamp-day{
  display:flex;
  align-items:baseline;
  gap:10px;
}

.event-date .day{
  font-family:var(--serif);
  font-size:var(--fs-headline);
  font-weight:300;
  line-height:1;
  letter-spacing:0;
  color:var(--ink);
  text-transform:none;
  white-space:nowrap;
}

.event-date .month{
  font-family:var(--mono);
  font-size:var(--fs-small);
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--ink);
}

.event-date .stamp{
  color:var(--muted);
}

.event-title-wrap{
  display:flex;
  flex-direction:column;
  gap:8px;
  min-width:0;
}

.event-title{
  margin:0;
  font-family:var(--serif);
  font-size:var(--fs-serif-md);
  font-weight:300;
  line-height:1.18;
  letter-spacing:0;
  color:var(--ink);
  transition:color 320ms var(--ease);
}

.event-line{
  display:flex;
  flex-wrap:wrap;
  gap:6px 18px;
  font-family:var(--mono);
  font-size:var(--fs-micro);
  font-weight:500;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--muted);
}

.event-line .free{
  color:var(--accent);
}

.event-toggle{
  justify-self:end;
  align-self:center;
  width:28px;
  height:28px;
  position:relative;
  color:var(--ink);
  transition:color 320ms var(--ease), transform 420ms var(--ease);
}

.event-toggle::before,
.event-toggle::after{
  content:"";
  position:absolute;
  inset:50% 4px auto 4px;
  height:1px;
  background:currentColor;
  transition:transform 420ms var(--ease);
}

.event-toggle::after{
  transform:rotate(90deg);
}

.event > summary:hover .event-title,
.event > summary:hover .event-toggle,
.event > summary:focus-visible .event-title,
.event > summary:focus-visible .event-toggle{
  color:var(--accent);
}

.event[open] > summary{
  padding-bottom:18px;
}

.event[open] .event-toggle{
  color:var(--accent);
}

.event[open] .event-toggle::after{
  transform:rotate(0deg);
}

.reveal{
  display:grid;
  grid-template-rows:0fr;
  transition:grid-template-rows 480ms var(--ease);
}

.event[open] .reveal{
  grid-template-rows:1fr;
}

.reveal-inner{
  overflow:hidden;
  min-height:0;
}

.reveal-body{
  display:grid;
  grid-template-columns:160px 1fr 56px;
  gap:clamp(20px,4vw,56px);
  padding:4px 0 36px;
  opacity:0;
  transform:translateY(6px);
  transition:opacity 360ms var(--ease) 80ms, transform 480ms var(--ease) 80ms;
}

.event[open] .reveal-body{
  opacity:1;
  transform:none;
}

.reveal-side{
  display:flex;
  flex-direction:column;
  gap:16px;
  font-family:var(--mono);
  font-size:var(--fs-micro);
  font-weight:500;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--muted);
}

.reveal-side dt{
  color:var(--muted);
  margin-bottom:4px;
}

.reveal-side dd{
  margin:0;
  font-family:var(--serif);
  font-size:var(--fs-body);
  font-weight:300;
  letter-spacing:0;
  text-transform:none;
  color:var(--ink);
  line-height:1.35;
}

.reveal-side dd.mono,
.reveal-side .mono{
  font-family:var(--mono);
  font-size:var(--fs-micro);
  font-weight:500;
  letter-spacing:.18em;
  text-transform:uppercase;
}

.reveal-main p{
  margin:0 0 18px;
  font-family:var(--serif);
  font-size:var(--fs-serif-md);
  font-weight:300;
  line-height:1.5;
  letter-spacing:-0.005em;
  color:var(--ink-2);
  max-width:none;
}

.reveal-actions{
  margin-top:20px;
  display:flex;
  gap:22px 28px;
  flex-wrap:wrap;
}

.text-link{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:12px;
  font-family:var(--mono);
  font-size:var(--fs-small);
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--ink);
  padding:6px 0;
}

.text-link::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:1px;
  background:currentColor;
  transform:scaleX(1);
  transform-origin:left;
  transition:transform 420ms var(--ease);
}

.text-link:hover::after,
.text-link:focus-visible::after{
  transform:scaleX(.18);
}

.text-link span{
  display:inline-block;
  transition:transform 320ms var(--ease);
}

.text-link:hover span,
.text-link:focus-visible span{
  transform:translateX(6px);
}

.text-link:focus-visible{
  outline:1px solid var(--ink);
  outline-offset:8px;
}

@media (max-width:960px){
  .visit-page .hero{
    padding-bottom:40px;
  }

  .visit-copy{
    padding-bottom:80px;
  }

  .visit-copy .photo-placeholder{
    margin:36px 0;
  }

  .events-head{
    grid-template-columns:1fr;
    gap:28px;
    padding:44px 0 28px;
  }

  .events-head h2{
    max-width:none;
  }

  .event > summary,
  .reveal-body{
    grid-template-columns:110px 1fr 36px;
    gap:20px;
  }

  .event-date .day{
    font-size:var(--fs-headline);
  }
}

@media (max-width:960px){
  .visit-places{
    gap:120px;
  }
}

@media (max-width:760px){
  .visit-places{
    gap:88px;
  }
}

@media (max-width:640px){
  .visit-places{
    gap:56px;
    padding-bottom:80px;
  }

  .place-block h2{
    margin-bottom:18px;
  }

  .place-block figure{
    margin-bottom:22px;
  }

  .back-top{
    width:52px;
    height:52px;
  }

  .event > summary{
    grid-template-columns:1fr 28px;
    grid-template-areas:
      "date toggle"
      "title toggle";
    row-gap:14px;
    padding:22px 0;
  }

  .event-date{
    grid-area:date;
  }

  .event-date .day{
    font-size:var(--fs-subtitle);
  }

  .event-title-wrap{
    grid-area:title;
  }

  .event-toggle{
    grid-area:toggle;
    align-self:start;
    margin-top:6px;
  }

  .reveal-body{
    grid-template-columns:1fr;
    gap:18px;
    padding-bottom:28px;
  }

  .reveal-side{
    flex-direction:row;
    flex-wrap:wrap;
    gap:14px 28px;
  }
}
