:root {
  --forest: #1e2a21;
  --forest-deep: #101712;
  --forest-soft: #2c3a2e;
  --paper: #f7f6f2;
  --paper-deep: #eeece5;
  --stone: #d9d6ce;
  --stone-dark: #aaa79f;
  --ink: #141614;
  --charcoal: #2e3230;
  --red: #c8241c;
  --orange: #e8641c;
  --header-height: 72px;
  --font-ja: "Hiragino Sans", "Yu Gothic", "YuGothic", "Noto Sans JP", sans-serif;
  --font-latin: "Helvetica Neue", Arial, sans-serif;
}

*, *::before, *::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  overflow-x: hidden;
  background: var(--forest);
  color: var(--ink);
  font-family: var(--font-ja);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.85;
  -webkit-font-smoothing: antialiased;
}

body.menu-open {
  overflow: hidden;
}

img {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-underline-offset: 0.25em;
}

button, a {
  -webkit-tap-highlight-color: transparent;
}

a:focus-visible,
button:focus-visible {
  outline: 3px solid var(--orange);
  outline-offset: 4px;
}

.skip-link {
  position: fixed;
  top: 8px;
  left: 8px;
  z-index: 1000;
  padding: 8px 14px;
  background: #fff;
  color: var(--ink);
  text-decoration: none;
  transform: translateY(-150%);
}

.skip-link:focus {
  transform: translateY(0);
}

.site-shell {
  width: min(100%, 1440px);
  min-height: 100vh;
  margin-inline: auto;
  background: var(--paper);
}

.key-visual {
  position: relative;
  display: grid;
  min-height: 70svh;
  place-items: center;
  overflow: hidden;
  background-image: url("assets/venue_1.jpeg");
  background-position: 54% center;
  background-size: cover;
  color: var(--paper);
  isolation: isolate;
}

.key-visual__shade {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: rgba(13, 19, 14, 0.56);
}

.key-visual__shade::after {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(7, 10, 8, 0.12), rgba(7, 10, 8, 0.58));
  content: "";
}

.key-visual__content {
  width: min(82%, 510px);
  padding: 36px 0 28px;
  text-align: center;
}

.key-visual__title {
  margin: 0 auto 18px;
}

.key-visual__title img {
  width: 100%;
  height: auto;
}

.key-visual__title span {
  display: block;
  margin: -8px 5% 0 0;
  font-family: var(--font-latin);
  font-size: 0.78rem;
  font-style: italic;
  letter-spacing: 0.08em;
  text-align: right;
}

.key-visual__date {
  margin: 0;
  font-family: var(--font-latin);
  font-size: clamp(2rem, 9vw, 3.1rem);
  font-style: italic;
  font-weight: 400;
  letter-spacing: -0.045em;
  line-height: 1;
}

.key-visual__place {
  margin: 16px 0 0;
  font-size: 0.84rem;
  letter-spacing: 0.08em;
}

.key-visual__scroll {
  position: absolute;
  right: 18px;
  bottom: 15px;
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-latin);
  font-size: 0.58rem;
  letter-spacing: 0.18em;
  text-decoration: none;
  writing-mode: vertical-rl;
}

.key-visual__scroll svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
}

.content-column {
  min-width: 0;
  background: var(--paper);
}

.mobile-header {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 200;
  display: grid;
  width: 100%;
  height: var(--header-height);
  overflow: hidden;
  align-items: center;
  background: var(--paper);
  border-bottom: 1px solid rgba(20, 22, 20, 0.12);
  grid-auto-rows: var(--header-height);
  grid-template-columns: 126px minmax(0, 1fr) 48px;
}

.header-ticket {
  display: flex;
  width: 126px;
  height: var(--header-height);
  padding: 8px 9px;
  align-items: center;
  justify-content: center;
  background: var(--forest);
  color: var(--paper);
  flex-direction: column;
  text-decoration: none;
}

.header-ticket span {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  line-height: 1.25;
}

.header-ticket small {
  margin-top: 2px;
  font-size: 0.53rem;
  line-height: 1.25;
  text-align: center;
}

.header-logo {
  width: min(100%, 120px);
  padding-inline: 8px;
  justify-self: center;
}

.header-logo img {
  display: block;
  width: 100%;
  height: auto;
}

.menu-toggle {
  position: relative;
  z-index: 320;
  display: flex;
  width: 48px;
  min-width: 48px;
  height: 48px;
  min-height: 44px;
  justify-self: end;
  padding: 0;
  align-items: center;
  justify-content: center;
  border: 0;
  background: transparent;
  cursor: pointer;
  flex-direction: column;
  gap: 6px;
  pointer-events: auto;
}

.menu-toggle span {
  width: 26px;
  height: 1px;
  background: var(--ink);
  transition: transform 0.25s ease, opacity 0.2s ease;
}

.menu-toggle[aria-expanded="true"] span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.menu-toggle[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
}

.menu-toggle[aria-expanded="true"] span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

.section {
  scroll-margin-top: var(--header-height);
}

.section-inner {
  width: min(100% - 44px, 420px);
  margin-inline: auto;
}

.section-kicker {
  margin: 0 0 22px;
  color: var(--red);
  font-family: var(--font-latin);
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.24em;
  line-height: 1;
}

.section--about {
  position: relative;
  min-height: 650px;
  padding: 96px 0 110px;
  overflow: hidden;
  background: var(--paper);
}

.about-title {
  margin: 0;
  font-size: clamp(2.25rem, 11vw, 3.65rem);
  font-weight: 400;
  letter-spacing: -0.07em;
  line-height: 1.32;
}

.about-copy {
  position: relative;
  z-index: 1;
  margin-top: 52px;
  padding-left: 7%;
  font-size: 0.91rem;
  line-height: 2.25;
}

.about-copy p {
  margin: 0 0 12px;
}

.section--dark,
.section--access {
  padding: 92px 0 100px;
  background: var(--forest);
  color: var(--paper);
}

.slash-heading {
  width: calc(100% - 22px);
  margin: 0 0 58px;
  padding: 16px 36px 17px 25px;
  background: var(--charcoal);
  clip-path: polygon(0 0, 100% 0, calc(100% - 38px) 100%, 0 100%);
  color: var(--paper);
}

.slash-heading p,
.slash-heading h2 {
  margin: 0;
}

.slash-heading p {
  font-family: var(--font-latin);
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  line-height: 1.3;
}

.slash-heading h2 {
  font-size: 1.65rem;
  font-weight: 400;
  letter-spacing: 0.02em;
  line-height: 1.4;
}

.event-list {
  margin: 0;
}

.event-list > div {
  display: grid;
  padding: 20px 0;
  border-top: 1px solid rgba(247, 246, 242, 0.2);
  gap: 12px;
  grid-template-columns: 70px 1fr;
}

.event-list > div:last-child {
  border-bottom: 1px solid rgba(247, 246, 242, 0.2);
}

.event-list dt {
  color: var(--stone);
  font-size: 0.78rem;
  letter-spacing: 0.1em;
}

.event-list dd {
  margin: 0;
  font-size: 0.93rem;
  line-height: 1.8;
}

.event-list strong {
  font-size: 1.01rem;
  font-weight: 500;
}

.event-list small {
  color: var(--stone);
  font-size: 0.76rem;
}

.event-list__pricing {
  grid-template-columns: 1fr !important;
}

.price-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: 0.78rem;
  line-height: 1.55;
}

.price-table th,
.price-table td {
  padding: 9px 7px;
  border-bottom: 1px solid rgba(247, 246, 242, 0.16);
  overflow-wrap: anywhere;
  text-align: left;
  vertical-align: top;
}

.price-table th {
  color: var(--stone);
  font-size: 0.68rem;
  font-weight: 400;
  letter-spacing: 0.08em;
}

.price-table th:last-child,
.price-table td:last-child {
  width: 74px;
  text-align: right;
  white-space: nowrap;
}

.price-note {
  display: block;
  margin-top: 12px;
}

.ticket-banner {
  display: flex;
  margin-top: 38px;
  padding: 18px 28px 19px;
  align-items: flex-start;
  background: var(--paper);
  clip-path: polygon(7% 0, 100% 0, 93% 100%, 0 100%);
  color: var(--ink);
  flex-direction: column;
  text-decoration: none;
  transition: background-color 0.2s ease;
}

.ticket-banner:hover {
  background: var(--stone);
}

.ticket-banner__label {
  color: var(--red);
  font-family: var(--font-latin);
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.24em;
}

.ticket-banner > span:nth-child(2) {
  font-size: 0.98rem;
  letter-spacing: 0.05em;
}

.ticket-banner strong {
  font-size: 1.16rem;
  font-weight: 500;
}

.ticket-banner small {
  color: #545751;
  font-size: 0.68rem;
}

.section--lineup {
  padding: 102px 0 112px;
  background: var(--paper);
}

.lineup-intro {
  margin-bottom: 42px;
}

.lineup-intro h2 {
  margin: 0;
  font-family: var(--font-latin);
  font-size: clamp(2rem, 10vw, 3.2rem);
  font-style: italic;
  font-weight: 300;
  letter-spacing: -0.055em;
  line-height: 1.1;
}

.lineup-intro > p:last-child {
  margin: 16px 0 0;
  font-size: 0.82rem;
  letter-spacing: 0.06em;
}

.artist-grid {
  display: grid;
  gap: 32px 14px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.artist-card {
  min-width: 0;
}

.artist-placeholder {
  position: relative;
  display: grid;
  aspect-ratio: 1;
  place-items: center;
  overflow: hidden;
  background: var(--stone);
  color: rgba(20, 22, 20, 0.46);
  font-family: var(--font-latin);
  font-size: clamp(2.2rem, 11vw, 4.1rem);
  font-weight: 200;
  letter-spacing: -0.08em;
}

.artist-placeholder::before,
.artist-placeholder::after {
  position: absolute;
  background: rgba(247, 246, 242, 0.62);
  content: "";
  transform: rotate(-28deg);
}

.artist-placeholder::before {
  width: 160%;
  height: 1px;
}

.artist-placeholder::after {
  width: 1px;
  height: 160%;
}

.artist-placeholder span {
  position: relative;
  z-index: 1;
}

.artist-card--dj .artist-placeholder {
  background: var(--forest-soft);
  color: rgba(247, 246, 242, 0.72);
}

.artist-card > p {
  margin: 11px 0 0;
  overflow: hidden;
  font-family: var(--font-latin);
  font-size: 0.75rem;
  letter-spacing: 0.02em;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.artist-card > p span {
  display: block;
  margin-bottom: 3px;
  color: #676a64;
  font-size: 0.54rem;
  font-weight: 700;
  letter-spacing: 0.18em;
}

.section--archive {
  padding: 92px 0 106px;
  background: var(--paper-deep);
}

.slash-heading--paper {
  background: var(--stone);
  color: var(--ink);
}

.archive-lead {
  max-width: 330px;
}

.archive-date {
  margin: 0 0 18px;
  font-family: var(--font-latin);
  font-size: 2rem;
  font-style: italic;
  font-weight: 300;
  letter-spacing: -0.04em;
  line-height: 1;
}

.archive-lead > p:last-child {
  margin: 0;
  font-size: 0.84rem;
}

.archive-stats {
  display: grid;
  margin: 38px 0 44px;
  padding: 0;
  border-top: 1px solid var(--stone-dark);
  border-bottom: 1px solid var(--stone-dark);
  list-style: none;
  grid-template-columns: repeat(4, 1fr);
}

.archive-stats li {
  display: flex;
  padding: 15px 4px 13px;
  align-items: center;
  border-right: 1px solid var(--stone-dark);
  flex-direction: column;
}

.archive-stats li:last-child {
  border-right: 0;
}

.archive-stats strong {
  font-family: var(--font-latin);
  font-size: 1.55rem;
  font-weight: 300;
  line-height: 1;
}

.archive-stats span {
  margin-top: 5px;
  color: #5b5d58;
  font-size: 0.64rem;
}

.archive-photo {
  margin: 0;
}

.archive-photo > div {
  position: relative;
  display: flex;
  aspect-ratio: 4 / 3;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: var(--charcoal);
  color: var(--paper);
  flex-direction: column;
}

.archive-photo > div::before {
  position: absolute;
  inset: 16% -12% auto;
  height: 65%;
  background: var(--forest-soft);
  clip-path: polygon(0 35%, 24% 13%, 46% 44%, 65% 0, 100% 28%, 100% 100%, 0 100%);
  content: "";
}

.archive-photo span,
.archive-photo small {
  position: relative;
  z-index: 1;
  font-family: var(--font-latin);
  letter-spacing: 0.18em;
}

.archive-photo span {
  font-size: 1.1rem;
}

.archive-photo small {
  margin-top: 4px;
  font-size: 0.56rem;
}

.archive-photo figcaption {
  margin-top: 7px;
  color: #6c6e68;
  font-family: var(--font-latin);
  font-size: 0.58rem;
  letter-spacing: 0.12em;
}

.article-link {
  display: grid;
  margin-top: 35px;
  padding: 17px 0;
  align-items: center;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  font-size: 0.82rem;
  gap: 0 10px;
  grid-template-columns: 1fr auto;
  text-decoration: none;
}

.article-link span {
  display: block;
  font-family: var(--font-latin);
  font-size: 0.63rem;
  letter-spacing: 0.1em;
}

.article-link svg,
.map-link svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.article-link svg {
  grid-column: 2;
  grid-row: 1 / 3;
}

.section--access {
  background: var(--forest-soft);
}

.venue-block {
  margin-bottom: 56px;
}

.venue-block p {
  margin: 0;
}

.venue-note,
.route-note {
  margin-top: 12px !important;
  color: var(--stone);
  font-size: 0.76rem;
  line-height: 1.7;
}

.route-note {
  color: var(--paper);
}

.venue-name {
  font-size: 1.48rem;
  font-weight: 500;
  letter-spacing: 0.03em;
}

.map-link {
  display: flex;
  width: 100%;
  margin-top: 28px;
  padding: 15px 20px;
  align-items: center;
  justify-content: space-between;
  border: 1px solid rgba(247, 246, 242, 0.78);
  font-size: 0.82rem;
  letter-spacing: 0.06em;
  text-decoration: none;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.map-link:hover {
  background: var(--paper);
  color: var(--forest);
}

.access-methods {
  margin-bottom: 54px;
  border-top: 1px solid rgba(247, 246, 242, 0.2);
}

.access-methods > div {
  padding: 18px 0;
  border-bottom: 1px solid rgba(247, 246, 242, 0.2);
}

.access-methods p {
  margin: 0;
  font-size: 0.79rem;
  line-height: 1.75;
}

.access-methods .access-methods__label {
  margin-bottom: 5px;
  color: var(--stone);
  font-size: 0.68rem;
  letter-spacing: 0.1em;
}

.access-notes > p {
  margin: 0 0 15px;
  color: var(--stone);
  font-size: 0.72rem;
  letter-spacing: 0.12em;
}

.access-notes ul {
  margin: 0;
  padding: 0;
  border-top: 1px solid rgba(247, 246, 242, 0.2);
  list-style: none;
}

.access-notes li {
  display: grid;
  padding: 17px 0;
  border-bottom: 1px solid rgba(247, 246, 242, 0.2);
  font-size: 0.78rem;
  gap: 14px;
  grid-template-columns: 24px 1fr;
}

.access-notes li span {
  color: var(--stone);
  font-family: var(--font-latin);
  font-size: 0.58rem;
}

.section--precautions {
  padding: 92px 0 100px;
  background: var(--paper-deep);
}

.precautions-details {
  border-top: 1px solid var(--stone-dark);
  border-bottom: 1px solid var(--stone-dark);
  font-size: 0.76rem;
  line-height: 1.8;
}

.precautions-details summary {
  padding: 18px 2px;
  cursor: pointer;
  font-size: 0.82rem;
  font-weight: 500;
  list-style-position: inside;
}

.precautions-details ul {
  margin: 0;
  padding: 0 4px 22px 1.45em;
}

.precautions-details li + li {
  margin-top: 9px;
}

.site-footer {
  padding: 76px 24px 30px;
  background: var(--ink);
  color: var(--paper);
}

.site-footer__logo {
  width: min(78%, 270px);
  margin: 0 auto 54px;
}

.site-footer__credits {
  margin-bottom: 42px;
}

.site-footer__credits p {
  margin: 0 0 16px;
  font-size: 0.72rem;
  line-height: 1.75;
}

.site-footer__credits span {
  display: block;
  color: var(--stone-dark);
  font-size: 0.58rem;
  letter-spacing: 0.12em;
}

.site-footer__credits a {
  text-decoration-thickness: 1px;
}

.site-footer__instagram {
  display: flex;
  padding: 16px 0;
  justify-content: space-between;
  border-top: 1px solid rgba(247, 246, 242, 0.3);
  border-bottom: 1px solid rgba(247, 246, 242, 0.3);
  font-family: var(--font-latin);
  font-size: 0.75rem;
  letter-spacing: 0.05em;
  text-decoration: none;
}

.site-footer__copyright {
  margin: 44px 0 0;
  color: var(--stone-dark);
  font-family: var(--font-latin);
  font-size: 0.56rem;
  letter-spacing: 0.08em;
  text-align: center;
}

.menu-column {
  position: fixed;
  inset: 0;
  z-index: 250;
  display: flex;
  padding: calc(var(--header-height) + 34px) 27px 34px;
  justify-content: space-between;
  visibility: hidden;
  background: var(--forest);
  color: var(--paper);
  opacity: 0;
  transform: translateX(100%);
  transition: transform 0.32s ease, opacity 0.25s ease, visibility 0.32s;
}

.menu-column.is-open {
  visibility: visible;
  opacity: 1;
  transform: translateX(0);
}

.menu-nav {
  width: min(100% - 52px, 330px);
  margin: auto 0;
}

.menu-nav a {
  display: grid;
  padding: 13px 0;
  align-items: center;
  border-bottom: 1px solid rgba(247, 246, 242, 0.22);
  gap: 14px;
  grid-template-columns: 28px 1fr;
  font-size: 1.08rem;
  font-weight: 500;
  text-decoration: none;
}

.menu-nav a:first-child {
  border-top: 1px solid rgba(247, 246, 242, 0.22);
}

.menu-nav svg,
.follow-link svg {
  width: 24px;
  height: 24px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5;
}

.menu-nav small {
  display: block;
  color: var(--stone);
  font-family: var(--font-latin);
  font-size: 0.5rem;
  font-weight: 500;
  letter-spacing: 0.17em;
  line-height: 1.3;
}

.follow-link {
  display: flex;
  width: 28px;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  font-family: var(--font-latin);
  font-size: 0.58rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-decoration: none;
}

.follow-link span {
  white-space: nowrap;
  writing-mode: vertical-rl;
}

.follow-link i {
  width: 1px;
  height: 50px;
  margin: 13px 0;
  background: var(--stone-dark);
}

.follow-link svg {
  width: 25px;
  height: 25px;
}

.js [data-reveal] {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}

.js [data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

@media (min-width: 1024px) {
  :root {
    --header-height: 76px;
  }

  body {
    font-size: clamp(12px, 0.98vw, 14px);
  }

  .site-shell {
    display: grid;
    grid-template-columns: minmax(0, 45fr) minmax(0, 32fr) minmax(0, 23fr);
  }

  .key-visual {
    position: sticky;
    top: 0;
    min-height: 100vh;
    height: 100vh;
    align-self: start;
    background-position: 52% center;
  }

  .key-visual__content {
    width: min(72%, 475px);
    padding-top: 0;
  }

  .key-visual__title {
    margin-bottom: 28px;
  }

  .key-visual__title span {
    margin-top: -13px;
    font-size: 0.88rem;
  }

  .key-visual__date {
    font-size: clamp(2.5rem, 3.2vw, 3.3rem);
  }

  .key-visual__place {
    margin-top: 18px;
    font-size: 0.9rem;
  }

  .key-visual__scroll {
    right: 22px;
    bottom: 24px;
  }

  .content-column {
    position: relative;
    z-index: 2;
    box-shadow: 0 0 18px rgba(0, 0, 0, 0.15);
  }

  .mobile-header {
    position: sticky;
    width: 100%;
    overflow: hidden;
    grid-auto-rows: var(--header-height);
    grid-template-columns: 126px minmax(0, 1fr) 126px;
  }

  .header-ticket {
    height: var(--header-height);
  }

  .menu-toggle {
    display: none;
  }

  .header-logo {
    width: min(31%, 132px);
    padding-inline: 0;
  }

  .header-logo img {
    display: block;
    width: 100%;
    height: auto;
  }

  .section-inner {
    width: min(100% - 64px, 410px);
  }

  .section--about {
    min-height: calc(100vh - var(--header-height));
    padding: clamp(86px, 8vw, 120px) 0;
  }

  .about-title {
    font-size: clamp(2.4rem, 3.25vw, 3.85rem);
  }

  .about-copy {
    margin-top: 62px;
    font-size: clamp(0.78rem, 0.9vw, 0.94rem);
  }

  .section--dark,
  .section--lineup,
  .section--archive,
  .section--access,
  .section--precautions {
    padding-top: clamp(82px, 6.7vw, 106px);
    padding-bottom: clamp(92px, 7.5vw, 118px);
  }

  .slash-heading {
    width: calc(100% - 28px);
    padding-left: 32px;
  }

  .artist-grid {
    gap: 35px 16px;
  }

  .artist-placeholder {
    font-size: clamp(2.5rem, 4vw, 4rem);
  }

  .site-footer {
    padding-right: 32px;
    padding-left: 32px;
  }

  .menu-column {
    position: sticky;
    top: 0;
    z-index: 1;
    display: flex;
    width: auto;
    height: 100vh;
    padding: clamp(30px, 5.5vw, 80px) clamp(18px, 2vw, 30px);
    align-self: start;
    visibility: visible;
    background: #fff;
    color: var(--ink);
    opacity: 1;
    transform: none;
    transition: none;
  }

  .menu-nav {
    width: calc(100% - 42px);
    margin: auto 0;
  }

  .menu-nav a {
    padding: clamp(8px, 1.05vw, 15px) 0;
    gap: clamp(8px, 1vw, 14px);
    grid-template-columns: 25px 1fr;
    font-size: clamp(0.69rem, 0.88vw, 0.9rem);
  }

  .menu-nav a,
  .menu-nav a:first-child {
    border-color: rgba(20, 22, 20, 0.13);
  }

  .menu-nav small {
    color: #71736e;
  }

  .menu-nav a span {
    transition: transform 0.2s ease;
  }

  .menu-nav a:hover span {
    transform: translateX(4px);
  }
}

@media (min-width: 1441px) {
  .site-shell {
    box-shadow: 0 0 42px rgba(9, 14, 10, 0.28);
  }
}

@media (min-width: 1024px) and (max-width: 1140px) {
  .mobile-header {
    grid-template-columns: 96px minmax(0, 1fr) 96px;
  }

  .section-inner {
    width: calc(100% - 44px);
  }

  .header-ticket {
    width: 96px;
  }

  .menu-nav a {
    grid-template-columns: 22px 1fr;
    font-size: 0.69rem;
  }

  .menu-nav svg {
    width: 21px;
    height: 21px;
  }
}

@media (max-width: 1023px) {
  .site-shell {
    padding-top: var(--header-height);
  }

  body.menu-open .mobile-header {
    z-index: 300;
    background: var(--forest);
    border-bottom-color: rgba(247, 246, 242, 0.18);
  }

  body.menu-open .header-ticket {
    background: var(--paper);
    color: var(--forest);
  }

  body.menu-open .header-logo img {
    filter: invert(1);
  }

  body.menu-open .menu-toggle span {
    background: var(--paper);
  }
}

@media (max-width: 374px) {
  .section-inner {
    width: calc(100% - 34px);
  }

  .header-logo {
    width: min(100%, 108px);
  }

  .header-ticket {
    width: 126px;
  }

  .artist-grid {
    gap-inline: 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *, *::before, *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }

  .js [data-reveal] {
    opacity: 1;
    transform: none;
  }
}

/* v3: compact festival information and mobile navigation */
:root{--paper:#fff;--paper-deep:#f4f5f1;--header-height:60px}
body{background:#fff;overflow-x:clip}
.site-shell{width:100%;box-shadow:none}
.key-visual__shade{background:rgba(13,19,14,.22)}
.key-visual__shade::after{background:linear-gradient(180deg,transparent 25%,rgba(7,10,8,.5))}
.key-visual__content{width:78%;text-shadow:0 2px 22px #14261980}
.key-visual__date{font-weight:600;font-style:normal;font-size:clamp(2rem,6vw,3rem);letter-spacing:-.045em}
.key-visual__place{font-size:13px}
.mobile-header{grid-template-columns:1fr 56px;background:var(--forest);color:white;height:60px;border:0;padding-left:22px}
.header-logo{grid-column:1;grid-row:1;justify-self:start;width:135px;padding:0}
.header-logo img{filter:invert(1)}
.header-ticket{display:none}
.menu-toggle{grid-column:2;grid-row:1;width:56px;height:60px}
.menu-toggle span{background:white;height:2px;width:23px}
.section-inner{width:calc(100% - 40px);max-width:560px}
.section--about{min-height:0;padding:38px 0 36px}
.section-kicker{font-size:11px;letter-spacing:.16em;margin-bottom:15px;color:var(--forest)}
.about-title{font-size:30px;line-height:1.45;font-weight:700;letter-spacing:.02em}
.about-copy{padding:0;margin-top:20px;font-size:14px;line-height:1.95}
.section--dark,.section--lineup,.section--archive,.section--access,.section--precautions{padding:36px 0 42px;background:white;color:var(--ink);border-top:1px solid #e1e5df}
.slash-heading,.slash-heading--paper{width:100%;padding:0 20px;margin:0 0 26px;background:none;color:var(--forest);clip-path:none;text-align:center}
.slash-heading p{font-size:22px;font-weight:800;letter-spacing:.02em;text-decoration:underline;text-underline-offset:5px;margin-bottom:9px}
.slash-heading h2{font-size:12px;font-weight:600}
.event-list>div,.event-list>div:last-child{border-color:#dce2da;padding:15px 0}
.event-list dt,.event-list small,.price-table th{color:#596357}
.event-list dd{font-size:14px}.event-list strong{font-weight:700;font-size:15px}
.price-table{font-size:13px}.price-table th,.price-table td{border-color:#e0e5dc;padding:12px 5px}
.ticket-banner{clip-path:none;border-radius:4px;background:var(--forest);color:white;padding:20px;margin-top:25px;align-items:center}
.ticket-banner__label,.ticket-banner small{color:#d3dfce}.ticket-banner:hover{background:#354d36}
.lineup-intro{margin:0;text-align:center}.lineup-intro h2{font-size:28px;font-weight:700;font-style:normal;letter-spacing:0}.lineup-intro>p:last-child{font-size:13px}
.artist-grid{display:none}
.archive-stats{margin:24px 0}.archive-photo{display:none}
.archive-date{font-size:24px}.article-link{margin-top:24px;min-height:56px}
.venue-block{margin-bottom:25px}.venue-name{font-size:22px}.venue-note,.route-note,.access-methods .access-methods__label,.access-notes>p,.access-notes li span{color:#596357}
.map-link{border-color:#7b8b76;margin-top:20px;min-height:52px}.map-link:hover{background:#edf1e9}
.access-methods{margin-bottom:28px}.access-methods,.access-methods>div,.access-notes ul,.access-notes li{border-color:#dce2da}
.access-methods p,.access-notes li{font-size:13px}.access-methods .access-methods__label{font-weight:700}
.precautions-details{font-size:13px}.precautions-details summary{min-height:56px}
.site-footer{padding:38px 20px 100px}.site-footer__logo{width:160px;margin-bottom:28px}
.menu-column{padding:84px 24px 100px;overflow-y:auto;align-items:flex-start}
.menu-nav{margin:0;width:calc(100% - 46px)}.menu-nav a{min-height:58px;font-size:16px;font-weight:700;padding:12px 0;gap:12px}.menu-nav small{font-size:9px}
.follow-link{margin-top:15px}.mobile-purchase{position:fixed;bottom:0;left:0;z-index:210;display:flex;width:100%;min-height:64px;padding:12px 20px calc(12px + env(safe-area-inset-bottom));background:var(--forest);color:white;align-items:center;justify-content:space-between;text-decoration:none;box-shadow:0 -2px 12px #0002}.mobile-purchase small{font-size:11px;display:block;color:#d3dfce}.mobile-purchase strong{font-size:16px}.mobile-purchase>span:last-child{font-size:22px}
body.menu-open .mobile-purchase{visibility:hidden}.section{scroll-margin-top:76px}
.js [data-reveal]{opacity:1;transform:none}
@media(max-width:1023px){.key-visual{min-height:0;height:calc(78svh - 60px);max-height:720px}.key-visual__content{max-width:450px}.key-visual__scroll{bottom:20px}.section--about .section-kicker{text-align:left}}
@media(min-width:640px) and (max-width:1023px){.key-visual{height:65svh}.section-inner{width:calc(100% - 64px)}}
@media(min-width:1024px){
.site-shell{grid-template-columns:minmax(0,48fr) minmax(360px,32fr) minmax(210px,20fr)}
.key-visual{height:100svh;min-height:100svh}.key-visual__content{width:76%;max-width:550px}.key-visual__date{font-size:clamp(30px,3vw,48px)}
.mobile-header{padding:0 18px 0 0;grid-template-columns:92px 1fr;height:60px}
.header-ticket{display:flex;grid-column:1;grid-row:1;width:92px;height:60px;background:#2d432e}.header-ticket span{font-size:11px}.header-ticket small{font-size:9px}
.header-logo{grid-column:2;justify-self:center;width:150px;max-width:90%}.menu-toggle{display:none}
.section-inner{width:calc(100% - 40px)}.section--about{min-height:0;padding:36px 0}.about-title{font-size:30px}.about-copy{margin-top:18px;font-size:13px}
.menu-column{height:100svh;padding:38px 18px;gap:10px;overflow-y:auto;background:white}.menu-nav{width:calc(100% - 30px);margin:0}.menu-nav a,.menu-nav a:first-child{min-height:48px;padding:10px 0;border:0;font-size:13px;grid-template-columns:18px 1fr;gap:8px}.menu-nav svg{width:18px;height:18px;stroke-width:2.2}.menu-nav small{display:none}.follow-link{width:20px;margin-top:0;font-size:9px}.follow-link svg{width:20px;height:20px}.mobile-purchase{display:none}.site-footer{padding-bottom:30px}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Festival art direction */
:root{--festival-lime:#d9e598;--festival-stone:#e8e5da}
.festival-announcement{position:relative;overflow:hidden;padding:28px 24px 24px;background:var(--forest);color:var(--festival-stone);isolation:isolate}
.festival-announcement:before{content:'';position:absolute;inset:-90px -95px auto auto;width:270px;height:270px;border:1px solid #d9e59830;border-radius:50%;box-shadow:0 0 0 25px #d9e5980a,0 0 0 50px #d9e5980a,0 0 0 75px #d9e5980a;z-index:-1}
.announcement-eyebrow{font:700 10px/1.5 Arial,sans-serif;letter-spacing:.12em;margin:0 0 22px;color:var(--festival-lime)}
.announcement-year{font:700 24px/1 Arial,sans-serif;letter-spacing:.05em;margin:0}
.announcement-date{font:800 clamp(66px,19vw,100px)/1 Arial,sans-serif;letter-spacing:-.07em;margin:0 0 18px;white-space:nowrap}
.announcement-date>span{display:inline-block;font-size:15px;letter-spacing:0;margin-left:12px;writing-mode:vertical-rl;transform:rotate(180deg)}
.announcement-detail{border-top:1px solid #e8e5da55;padding-top:12px;display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:11px;font-weight:600}
.announcement-ticket{display:flex;justify-content:space-between;align-items:center;background:var(--festival-lime);color:var(--forest);padding:14px 18px;margin-top:22px;text-decoration:none;font-size:18px;font-weight:800}
.announcement-ticket small{display:block;font:700 9px/1.6 Arial,sans-serif;letter-spacing:.12em}.announcement-ticket>span:last-child{font-size:30px}
.section--about{background:var(--festival-stone);padding:38px 0 34px;position:relative}.about-title{font-size:34px;font-weight:800;letter-spacing:-.025em}.about-copy{font-size:13px}.section-kicker{font-weight:800}
.section--dark{background:#f6f5ee;border:0}.slash-heading{text-align:left;padding:0 20px;display:flex;flex-direction:column;align-items:flex-start}.slash-heading p{text-decoration:none;font-size:25px;font-weight:900;letter-spacing:-.04em;background:var(--forest);color:var(--festival-lime);padding:7px 18px 7px 12px;transform:rotate(-2deg)}.slash-heading h2{margin:11px 0 0 2px;font-size:12px}
.ticket-banner{border-radius:0;border:1px solid var(--forest);align-items:flex-start;background:var(--festival-lime);color:var(--forest)}.ticket-banner small,.ticket-banner__label{color:var(--forest)}.ticket-banner:hover{background:#cbd77f}
.quarry-photo{margin:0;position:relative;height:300px;background:var(--forest);overflow:hidden}.quarry-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 40%}.quarry-photo:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent,#101712b0)}.quarry-photo figcaption{position:absolute;inset:auto 20px 20px;color:white;z-index:1}.quarry-photo figcaption span{display:block;font:800 34px/.95 Arial,sans-serif;letter-spacing:-.04em}.quarry-photo figcaption small{display:block;margin-top:14px;font-size:9px;letter-spacing:.12em}
.section--lineup{background:var(--forest);color:var(--festival-stone);padding:36px 0 42px;border:0}.lineup-intro{text-align:left}.lineup-intro .section-kicker{color:var(--festival-lime);font-size:28px;font-weight:900;letter-spacing:-.03em;border-bottom:1px solid #e8e5da55;padding-bottom:16px}.lineup-intro h2{font-size:32px}.lineup-intro>p:last-child{color:#d0d8c9}
.section--archive{background:var(--festival-stone);border:0}.section--access{background:#f6f5ee}.section--precautions{background:var(--festival-stone)}
.mobile-purchase{background:var(--festival-lime);color:var(--forest);border-top:1px solid #1e2a2130}.mobile-purchase small{color:#465438}
@media(min-width:1024px){.announcement-date{font-size:clamp(65px,6.9vw,120px)}.festival-announcement{padding:28px 22px 24px}.announcement-eyebrow{font-size:9px}.key-visual__title{margin-bottom:32px}.menu-column{background:#f6f5ee}.menu-nav a:hover{color:#567132}.about-title{font-size:34px}}
@media(max-width:1023px){.key-visual{height:calc(68svh - 60px);min-height:340px}.festival-announcement{padding-top:24px}.announcement-date{font-size:clamp(66px,22vw,110px)}.quarry-photo{height:320px}}

/* Quiet stone and forest */
:root{--festival-lime:#e3e3d9;--festival-stone:#eeede7}
.festival-announcement{padding:30px 24px;background:#253028;color:#eeede7}
.festival-announcement:before{display:none}
.announcement-eyebrow{font-weight:400;font-size:10px;letter-spacing:.2em;color:#bdc5ba;margin-bottom:23px}
.announcement-year{font-size:14px;font-weight:400;letter-spacing:.15em;margin-bottom:9px}
.announcement-date{font-size:58px;font-weight:400;letter-spacing:-.04em;margin-bottom:24px}
.announcement-date>span{writing-mode:horizontal-tb;transform:none;font-size:12px;letter-spacing:.08em;margin-left:14px;font-weight:400}
.announcement-detail{font-weight:400;font-size:11px;border-color:#eeede72b;padding-top:15px;color:#d2d7ce}
.announcement-ticket{background:transparent;color:#eeede7;border-top:1px solid #eeede72b;border-bottom:1px solid #eeede72b;margin-top:23px;padding:13px 0;font-size:13px;font-weight:400}
.announcement-ticket small{display:none}.announcement-ticket>span:last-child{font-size:20px}.announcement-ticket:hover{color:white}
.section--about{background:#eeede7;padding:38px 0}.about-title{font-size:30px;font-weight:400;letter-spacing:.025em;line-height:1.5}.about-copy{line-height:2.05;color:#444b42}
.section-kicker{font-weight:400;letter-spacing:.18em;color:#687361}
.slash-heading p{background:transparent;color:#253028;transform:none;padding:0;font-size:20px;font-weight:500;letter-spacing:.12em}
.slash-heading h2{margin:8px 0 0;font-size:11px;font-weight:400;color:#687361}
.slash-heading{padding-bottom:17px;position:relative}.slash-heading:after{content:'';position:absolute;bottom:0;left:20px;width:28px;border-bottom:1px solid #87917d}
.section--dark,.section--access{background:#f8f7f3}.section--archive,.section--precautions{background:#eeede7}
.ticket-banner{background:#253028;color:#eeede7;border:0;padding:19px 20px}.ticket-banner__label,.ticket-banner small{color:#bdc5ba}.ticket-banner strong{font-size:16px;font-weight:400}.ticket-banner:hover{background:#354036}
.section--lineup{background:#253028}.lineup-intro .section-kicker{font-size:20px;letter-spacing:.12em;font-weight:400;color:#d2d7ce;padding-bottom:17px;border-color:#eeede72b}.lineup-intro h2{font-size:27px;font-weight:300;letter-spacing:.02em}.lineup-intro>p:last-child{font-size:12px;color:#bdc5ba}
.quarry-photo{height:260px}.quarry-photo:after{background:linear-gradient(transparent 60%,#10171280)}.quarry-photo figcaption small{font-size:10px;font-weight:400;letter-spacing:.12em}
.mobile-purchase{background:#253028;color:#eeede7;border-top:1px solid #eeede72b}.mobile-purchase strong{font-size:14px;font-weight:400}.mobile-purchase small{color:#bdc5ba}
.menu-column{background:#253028}.menu-nav a{font-weight:500}.key-visual__date{font-weight:400;letter-spacing:.015em}
@media(min-width:1024px){.announcement-date{font-size:64px}.festival-announcement{padding:30px 24px}.about-title{font-size:30px}.menu-column{background:#f8f7f3}}
@media(max-width:1023px){.announcement-date{font-size:58px}.quarry-photo{height:280px}}

.key-visual__date{width:82%;max-width:370px;margin:0 auto;text-shadow:none}.key-visual__date img{width:100%;height:auto}.key-visual__title{margin-bottom:12px}.key-visual__place{margin-top:14px}@media(min-width:1024px){.key-visual__title{margin-bottom:18px}.key-visual__date{width:80%;max-width:390px}}

.section--sponsors{background:#f8f7f3;padding:42px 0;border-top:1px solid #e1e5df}.sponsor-logos{display:grid;grid-template-columns:1fr;gap:18px}.sponsor-logos a{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:122px;padding:25px 26px;text-decoration:none;background:#fff}.sponsor-logos img{width:100%;max-width:240px;height:55px;object-fit:contain}.sponsor-logos span{font-size:10px;letter-spacing:.06em;margin-top:15px;color:#687361}.sponsor-logos .sponsor-ev{background:#253028}.sponsor-ev span{color:#bdc5ba}.sponsor-logos a:hover{outline:1px solid #87917d;outline-offset:3px}

.quarry-inquiry{padding:36px 0 40px;background:#eeede7}.quarry-inquiry h2{font-size:27px;line-height:1.6;font-weight:400;margin:0 0 22px}.quarry-inquiry p:not(.section-kicker){font-size:13px;line-height:2;color:#444b42}

.sponsor-logos a{background:#253028}.sponsor-logos span{color:#bdc5ba}.venue-contact{margin-top:25px;padding-top:20px;border-top:1px solid #cbd0c6}.venue-contact>span{font-size:12px}.venue-contact p{font-size:18px!important;margin:10px 0}.venue-contact small{font-size:11px;color:#687361}

.sponsor-logos{gap:32px;padding-top:12px;padding-bottom:12px}.sponsor-logos a,.sponsor-logos .sponsor-ev{background:transparent;padding:0;min-height:65px}.sponsor-logos img{filter:brightness(0);max-width:230px;height:52px}.sponsor-logos a:hover{outline:none;opacity:.65}.venue-note-footer{margin-top:32px;padding-top:22px;border-top:1px solid #eeede725;font-size:11px;line-height:1.9;color:#b9bfb3}.venue-note-footer p{margin:0 0 8px;font-size:11px;color:#e2e4dd}.venue-note-footer>span,.venue-note-footer>small{display:block}.venue-note-footer .venue-email{margin-top:9px}.venue-note-footer small{font-size:10px;color:#9da594}

/* Floating stone ticket */
.mobile-purchase{display:flex;position:fixed;inset:auto 20px calc(20px + env(safe-area-inset-bottom)) auto;width:82px;height:80px;min-height:0;padding:13px 10px 11px;flex-direction:column;justify-content:center;gap:5px;border:1px solid #ffffff40;border-radius:47% 53% 43% 57% / 56% 43% 57% 44%;background:linear-gradient(145deg,#445046,#253028 62%,#1e2821);color:#f1f0e9;box-shadow:0 4px 13px #10171235,inset 2px 2px 3px #ffffff12;transition:transform .2s,background .2s;z-index:210}
.mobile-purchase svg{width:31px;height:26px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linejoin:round;stroke-linecap:round}.mobile-purchase>span:last-child{font:500 9px/1.2 Arial,sans-serif;letter-spacing:.12em}.mobile-purchase:hover{transform:translateY(-3px);background:#3c493d}.mobile-purchase:active{transform:translateY(0)}
@media(min-width:1024px){.mobile-purchase{right:24px;bottom:24px}.site-footer{padding-bottom:35px}}
@media(max-width:374px){.mobile-purchase{right:14px;bottom:calc(14px + env(safe-area-inset-bottom));width:74px;height:73px}}

.section--news{padding:38px 0 42px;background:#f8f7f3;border-top:1px solid #e1e5df}.news-demo-note{font-size:10px;color:#687361;margin:0 0 18px}.news-list details{border-top:1px solid #d6dbd1}.news-list details:last-child{border-bottom:1px solid #d6dbd1}.news-list summary{position:relative;list-style:none;cursor:pointer;padding:18px 25px 18px 0}.news-list summary::-webkit-details-marker{display:none}.news-list summary:after{content:'+';position:absolute;right:1px;top:32px;font-size:18px;color:#687361}.news-list details[open] summary:after{content:'−'}.news-meta{display:block;font-size:10px;letter-spacing:.08em;color:#687361;margin-bottom:7px}.news-meta>span{margin-left:10px;font-size:9px}.news-title{font-size:13px;line-height:1.8;display:block}.news-list details>p{font-size:12px;line-height:1.95;color:#444b42;margin:0 0 20px}.section--archive{min-height:155px}

.precautions-static h3{margin:0;padding:20px 2px 14px;font-size:14px;font-weight:600;line-height:1.7}.precautions-static+.precautions-static{margin-top:24px}.precautions-static ul{padding-bottom:22px}

/* Clear page title and ticket navigation */
.header-logo{width:auto;max-width:100%;margin:0;font-size:16px;line-height:1.4;font-weight:600;letter-spacing:0}
.header-logo a{color:inherit;text-decoration:none;display:block}
.section--tickets{padding:36px 0 42px;border-top:1px solid #e1e5df;background:#fff}
.venue-access-link{display:inline-block;margin-top:10px;text-underline-offset:4px}
.menu-nav a[href="#tickets"]{font-weight:700;text-decoration:underline;text-underline-offset:5px}
@media(min-width:1024px){.header-logo{font-size:14px;justify-self:center;text-align:center}.mobile-header{padding-right:10px}.menu-nav a,.menu-nav a:first-child{min-height:42px;padding:8px 0}}

.analytics-note{font-size:12px;line-height:1.8;color:inherit;opacity:.8;margin-top:24px}.analytics-note a{color:inherit;text-underline-offset:3px}
