/* Gymnos as a living club: class energy, a human face, and a bold training rhythm. */
:root {
  --ink: #192118;
  --ink-2: #202b1e;
  --olive: #8c9d41;
  --olive-dark: #3c4c2c;
  --cream: #f4f1e8;
  --paper: #f8f6ef;
  --signal: #b8c98f;
  --signal-soft: #e4e9d4;
}
.icon { display: inline-block; width: 1.25em; height: 1.25em; flex: none; vertical-align: -.2em; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: square; stroke-linejoin: miter; }
.included li:before { content: none; }
.included li > .icon { position: absolute; left: 0; top: 15px; color: #718650; width: 16px; height: 16px; }
.schedule-close { display: inline-flex; align-items: center; justify-content: center; }
.schedule-close .icon { width: 20px; height: 20px; }
.gallery-arrows button { display: inline-flex; align-items: center; justify-content: center; }
.gallery-arrows .icon { width: 22px; height: 22px; }
.gallery-autoplay .icon { width: 13px; height: 13px; margin-right: 5px; }

.concept-strip { background: #35452b; }
.site-header { background: var(--ink); border-bottom-color: #42513c; }
.nav-cta { background: var(--signal); color: var(--ink); border-radius: 0; }
.nav-cta:hover { background: #d3dfb2; }
.site-nav > a:not(.nav-cta):hover { color: var(--signal); }
.site-nav .nav-cta:is(:hover, :focus-visible, :active) { color: var(--ink); background: #d3dfb2; }
.site-nav a:focus-visible { outline: 2px solid var(--signal); outline-offset: 4px; }

.hero { background: var(--ink); color: #fff; }
.hero-grid { grid-template-columns: minmax(0, 54%) minmax(0, 46%); min-height: 715px; }
.hero-copy { padding: 58px 32px 38px 0; display: flex; flex-direction: column; align-items: flex-start; }
.eyebrow { color: #cbd6bb; }
.eyebrow .line { background: var(--signal); width: 53px; }
.hero h1 { font-size: clamp(78px, 7.1vw, 112px); line-height: .87; letter-spacing: -.067em; margin: 80px 0 30px; }
.hero h1 em { color: var(--signal); }
.hero-period { color: var(--signal); }
.hero-sub { color: #d6dfd0; font-size: 18px; max-width: 490px; line-height: 1.45; }
.hero-actions { margin: 28px 0 45px; }
.hero .button-dark { background: var(--signal); color: var(--ink); border-radius: 0; }
.hero .button-dark:hover { background: #d3dfb2; }
.hero .text-link { color: #fff; border-color: #b8c4ae; }
.hero .text-link:hover { color: var(--signal); }
.hero-locator { color: #b9c6af; margin-top: auto; }
.locator-dot { background: var(--signal); }

.hero-visual { min-height: 715px; background: #829669; color: var(--ink); padding: 28px 27px; }
.hero-visual:before {
  content: ''; z-index: 0;
  background: repeating-linear-gradient(0deg, transparent 0 65px, #19211826 65px 66px),
              repeating-linear-gradient(90deg, transparent 0 65px, #19211826 65px 66px);
  opacity: .65;
}
.hero-visual-top { z-index: 5; font-size: 10px; }
.hero-visual-main {
  inset: 80px 18px auto;
  width: auto; height: 540px;
  border: 6px solid var(--ink); background: var(--ink);
  box-shadow: 10px 10px 0 #5e754e;
  z-index: 1;
}
.hero-visual-main img { filter: saturate(.95) contrast(1.08); object-position: center 42%; }
.hero-visual-main:after { display: none; }
.hero-photo-tag {
  position: absolute; z-index: 3; left: 31px; top: 102px;
  width: 160px; height: 160px; border-radius: 50%;
  background: var(--ink); color: var(--signal);
  display: flex; flex-direction: column; justify-content: center; align-items: center;
  transform: rotate(-12deg); text-align: center; border: 3px solid var(--signal);
  box-shadow: 0 0 0 5px var(--ink);
}
.hero-photo-tag b { font-family: var(--display); font-size: 82px; line-height: .78; letter-spacing: -.07em; }
.hero-photo-tag span { font-size: 10px; line-height: 1.15; font-weight: 900; letter-spacing: .05em; margin-top: 9px; }
.hero-team {
  position: absolute; z-index: 2; left: 24px; bottom: 104px;
  width: 230px; background: var(--ink); padding: 8px;
  transform: rotate(-3deg);
}
.hero-team img { display: block; width: 100%; height: 150px; object-fit: cover; object-position: center 35%; }
.hero-team span { display: block; color: var(--signal); font-size: 10px; line-height: 1.2; font-weight: 900; letter-spacing: .08em; padding: 9px 4px 3px; }
.hero-visual-bottom { position: relative; z-index: 4; display: block; align-self: stretch; height: 104px; }
.hero-visual-bottom span { position: absolute; right: 0; bottom: 28px; font-size: 42px; line-height: .82; text-align: right; color: var(--ink); }
.hero-visual-bottom a { position: absolute; right: 0; bottom: 0; max-width: none; font-size: 9px; color: var(--ink); }
.promise-band { background: var(--ink); border-bottom: 1px solid #405139; }
.promise-intro { display: flex; justify-content: space-between; align-items: baseline; gap: 30px; border-bottom: 1px solid #52624b; padding: 26px 0 4px; }
.promise-intro span { color: var(--signal); font-size: 10px; font-weight: 800; letter-spacing: .14em; }
.promise-intro strong { font-family: var(--display); font-size: clamp(23px, 2.6vw, 37px); letter-spacing: -.02em; }
.promise-grid b { color: var(--signal); font-size: 49px; }
.promise-grid>div { border-color: #52624b; }
.promise-grid span { font-size: 15px; }

.routes-section { background: #263323; }
.routes-section .section-topline { color: #d4e1c4; }
.routes-section .section-title em { color: var(--signal); }
.routes-grid { gap: 18px; }
.route { height: 510px; padding: 33px; }
.route-large { background: #a0b184; color: var(--ink); }
.route-small { background: #d3dbba; color: var(--ink); }
.route-overlay { z-index: 3; }
.route-overlay h3 { font-size: clamp(57px, 5vw, 80px); }
.route-overlay p { color: #1e2e1c; max-width: 300px; font-weight: 600; }
.route-overlay a { border-color: currentColor; }
.route-graphic span { font-size: 145px; color: var(--ink); opacity: .09; }
.route-graphic-sala i { border-color: #1b2d1b; opacity: .4; }
.route-photo { position: absolute; top: 43px; right: 38px; width: 48%; height: 190px; overflow: hidden; border: 7px solid var(--ink); transform: rotate(5deg); background: #273329; box-shadow: 9px 9px 0 #617556; z-index: 2; }
.route-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center top; filter: saturate(.7) contrast(1.06); }
.route-graphic-group i { border-width: 3px; border-color: #324c25; opacity: .6; }
.route-class-mark { position: absolute; right: 40px; top: 50px; z-index: 2; display: flex; align-items: end; gap: 9px; transform: rotate(8deg); }
.route-class-mark { font-family: var(--display); font-size: 109px; font-weight: 900; letter-spacing: -.07em; line-height: .75; }
.route-class-mark span { font-family: var(--sans); font-size: 10px; letter-spacing: .03em; line-height: 1.15; margin-bottom: 7px; }
.services-row { border-color: #71806a; }
.services-row>a { border-color: #71806a; }
.services-row>a span,.services-row>a b { color: var(--signal); }

.activities-section { background: #f5f2e9; }
.activities-section .section-title em { color: #718650; }
.filter.active,.filter:hover { background: var(--ink); border-color: var(--ink); }
.activity-feature { box-shadow: 12px 12px 0 #202b1f; }
.activity-feature-art { height: 266px; padding: 0; border-top: 5px solid var(--feature-ink); background: var(--feature-color); isolation: isolate; }
.activity-feature-art img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center 47%; filter: grayscale(1) contrast(1.2); mix-blend-mode: multiply; opacity: .84; }
.activity-feature-art:after { content: ''; position: absolute; inset: 0; background: var(--feature-color); mix-blend-mode: color; opacity: .42; pointer-events: none; }
.activity-feature-art > span { position: absolute; left: 20px; bottom: 18px; z-index: 2; background: var(--feature-ink); color: #fff; padding: 8px 10px; font-size: 9px; letter-spacing: .08em; }

.hours-section { background: #a8b75f; color: var(--ink); overflow: visible; position: relative; z-index: 2; }
.hours-section h2 span { color: #3b562c; }
.hours-section p { color: #253321; }
.hours-art { background: var(--ink); color: var(--signal); }
.hours-art-number { font-size: clamp(75px, 7.2vw, 117px); }
.hours-art-foot { border-color: #9caf83; }
.hours-art-foot small { color: #d6dfc8; }
.hours-section .button-light { background: var(--ink); color: #fff; }
html.schedule-is-open { overflow: hidden; }
.hours-section.has-schedule-open { z-index: 40; }
.schedule-control { display: inline-block; position: relative; z-index: 5; }
.schedule-toggle { cursor: pointer; border: 0; }
.schedule-panel:not([open]) { display: none !important; }
.schedule-panel [hidden] { display: none !important; }
.schedule-panel::backdrop { background: #09120bc9; }
.schedule-panel {
  position: fixed; top: 50%; bottom: auto; left: 50%;
  width: min(1120px, calc(100vw - 64px)); height: auto; max-width: none; max-height: calc(100dvh - 48px); margin: 0;
  display: grid; grid-template-rows: auto auto auto minmax(0, 1fr) auto;
  transform: translate(-50%, -50%); overflow: hidden;
  padding: 26px 30px;
  background: #172219; color: #f8f6ef;
  border: 1px solid #6f8166; box-shadow: 0 20px 60px #09120ba8;
}
.schedule-panel[open] { animation: schedule-reveal .26s cubic-bezier(.2,.8,.2,1) both; }
@keyframes schedule-reveal {
  from { opacity: 0; transform: translate(-50%, calc(-50% + 12px)) scale(.99); }
  to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
.schedule-panel-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; padding-bottom: 16px; border-bottom: 1px solid #61715b; }
.schedule-panel-head > div:first-child > span { color: #b9cda2; font-size: 10px; font-weight: 800; letter-spacing: .16em; }
.schedule-panel-head h3 { margin: 8px 0 0; font-family: var(--display); font-size: clamp(42px, 3.5vw, 55px); line-height: .88; letter-spacing: -.05em; }
.schedule-panel-head h3 span { color: #a8b75f; }
.schedule-panel-meta { display: flex; gap: 32px; align-items: flex-start; }
.schedule-panel-meta > span { color: #aebda7; font-size: 10px; letter-spacing: .12em; font-weight: 800; padding-top: 12px; }
.schedule-close { flex: none; border: 1px solid #7d9075; background: transparent; color: #fff; width: 42px; height: 42px; font-size: 28px; line-height: 1; cursor: pointer; }
.schedule-close:hover,.schedule-close:focus-visible { background: #a8b75f; color: #1b251a; }
.schedule-context { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 16px; padding-top: 12px; }
.schedule-context p { color: #dce7d2; font-size: 13px; line-height: 1.5; margin: 0; }
.schedule-reset { background: transparent; border: 0; padding: 10px 0; min-height: 44px; color: #d5e6ba; font-size: 12px; text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.schedule-panel :focus-visible { outline: 2px solid #d5e6ba; outline-offset: -3px; }
.schedule-day-nav { display: none; }
.schedule-days { display: grid; grid-template-columns: repeat(var(--schedule-columns, 6), minmax(0, 1fr)); gap: 0; margin: 18px 0 15px; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-color: #b8c98f #172219; }
.schedule-day { min-width: 0; padding: 0 clamp(9px, 1.1vw, 16px); border-left: 1px solid #465946; }
.schedule-day:first-of-type { border-left: 0; padding-left: 0; }
.schedule-day:last-child { padding-right: 0; }
.schedule-day h4 { display: flex; justify-content: space-between; align-items: baseline; gap: 5px; margin: 0 0 10px; font-family: var(--display); font-size: clamp(18px, 1.55vw, 23px); letter-spacing: -.025em; }
.schedule-day h4 span { color: #99ac91; font: 800 10px var(--sans); letter-spacing: .06em; }
.schedule-day ol { list-style: none; margin: 0; padding: 0; }
.schedule-day li { position: relative; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 2px; min-height: clamp(42px, 5.4vh, 54px); padding: 6px 5px 6px 17px; border-top: 1px solid #4a5b49; background: transparent; }
.schedule-day li::before { content: ''; position: absolute; left: 0; top: 14px; width: 7px; height: 7px; background: var(--class-color); }
.schedule-day time { font-size: 11px; color: #bbcbb7; letter-spacing: .1em; }
.schedule-day li strong { font-family: var(--display); font-size: clamp(17px, 1.42vw, 20px); line-height: 1; letter-spacing: -.025em; }
.schedule-day li small { font-size: 10px; color: #bbcbb7; }
.schedule-day p { margin: 15px 0 0; font-size: 11px; line-height: 1.4; color: #bbcbb7; }
.schedule-panel-foot { display: flex; justify-content: space-between; align-items: center; gap: 12px; border-top: 1px solid #61715b; padding-top: 12px; font-size: 11px; color: #bbcbb7; }
.schedule-panel-foot a { color: #d5e6ba; text-decoration: underline; text-underline-offset: 3px; font-weight: 800; }

.price-feature { background: #283c24; border-left: 12px solid var(--signal); }
.included li:before { color: #718650; }
.place-section { background: #1d281c; overflow: hidden; }
.place-grid { display: block; min-height: 0; }
.place-copy { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 380px); align-items: end; gap: 30px; margin-bottom: 36px; }
.place-copy > div:first-child > span { font-size: 11px; letter-spacing: .17em; font-weight: 800; color: var(--signal); }
.place-copy h2 { font-size: clamp(68px, 7.2vw, 112px); margin: 27px 0 0; line-height: .84; }
.place-copy h2 em { color: var(--signal); }
.place-intro { padding-bottom: 4px; }
.place-intro p { font-size: 16px; line-height: 1.55; margin: 0 0 17px; color: #d0dacb; }
.place-gallery { display: block; min-width: 0; outline: none; }
.place-gallery:focus-visible { outline: 2px solid var(--signal); outline-offset: 7px; }
.gallery-stage { position: relative; isolation: isolate; width: 100%; aspect-ratio: 16 / 9; background: #35422f; overflow: hidden; border: 8px solid #34452e; }
.gallery-main-image,.gallery-wipe-image { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: contain; filter: none; }
.gallery-main-image { z-index: 0; }
.gallery-wipe-image { z-index: 1; clip-path: inset(0 calc(100% - var(--gallery-reveal, 0%)) 0 0); visibility: hidden; pointer-events: none; }
.gallery-wipe-line { position: absolute; z-index: 2; top: 0; bottom: 0; left: var(--gallery-reveal, 0%); width: 4px; transform: translateX(-50%); background: var(--signal); visibility: hidden; pointer-events: none; }
.gallery-stage[data-wipe-direction="right-to-left"] .gallery-wipe-image { clip-path: inset(0 0 0 calc(100% - var(--gallery-reveal, 0%))); }
.gallery-stage[data-wipe-direction="right-to-left"] .gallery-wipe-line { left: calc(100% - var(--gallery-reveal, 0%)); }
.gallery-stage.is-wiping .gallery-wipe-image,.gallery-stage.is-wiping .gallery-wipe-line { visibility: visible; }
.gallery-stage::after { content: ''; position: absolute; z-index: 1; inset: 0; pointer-events: none; background: linear-gradient(180deg, #0c170e77, transparent 20%, transparent 75%, #0c170eaa); }
.gallery-stage-label,.gallery-stage-bottom { position: absolute; z-index: 3; color: #fff; }
.gallery-stage-label { left: 20px; top: 18px; padding: 9px 11px; background: #172319d9; font-size: 10px; font-weight: 800; letter-spacing: .16em; }
.gallery-stage-bottom { left: 20px; right: 20px; bottom: 15px; display: flex; align-items: end; justify-content: space-between; gap: 20px; }
.gallery-current { font: 900 clamp(48px, 6vw, 82px)/.8 var(--display); letter-spacing: -.05em; }
.gallery-current small { font: 800 13px var(--sans); letter-spacing: .1em; color: var(--signal); }
.gallery-stage-note { font-size: 11px; font-weight: 800; letter-spacing: .16em; }
.gallery-tools { display: flex; align-items: center; gap: 22px; min-height: 58px; }
.gallery-tools > span { color: #b9c7b2; font-size: 10px; font-weight: 800; letter-spacing: .13em; white-space: nowrap; }
.gallery-progress { flex: 1; height: 3px; background: #56664e; }
.gallery-progress span { display: block; width: 100%; height: 100%; transform: scaleX(.0454545); transform-origin: left; background: var(--signal); transition: transform .25s ease; }
.gallery-autoplay { flex: none; padding: 8px 0 8px 10px; border: 0; background: transparent; color: var(--signal); font-size: 10px; font-weight: 800; letter-spacing: .1em; cursor: pointer; }
.gallery-autoplay span { font-size: 13px; margin-right: 5px; }
.gallery-autoplay:hover,.gallery-autoplay:focus-visible { color: #fff; text-decoration: underline; text-underline-offset: 4px; }
.gallery-arrows { position: absolute; z-index: 3; left: 18px; right: 18px; top: 50%; transform: translateY(-50%); display: flex; justify-content: space-between; pointer-events: none; }
.gallery-arrows button { width: 52px; height: 52px; background: #172319cb; border: 1px solid #b9c9b4; color: #fff; font-size: 24px; cursor: pointer; pointer-events: auto; transition: background .2s, color .2s; }
.gallery-arrows button:hover,.gallery-arrows button:focus-visible { background: var(--signal); border-color: var(--signal); color: var(--ink); }
.gallery-thumbs { display: grid; grid-auto-flow: column; grid-auto-columns: 112px; gap: 8px; overflow-x: auto; padding: 4px 0 18px; scrollbar-color: #8b9d80 #35432f; scrollbar-width: thin; }
.gallery-thumb { position: relative; display: block; width: 112px; height: 80px; padding: 0; border: 2px solid transparent; background: #34452e; cursor: pointer; opacity: .55; transition: opacity .2s, border-color .2s, transform .2s; }
.gallery-thumb img { width: 100%; height: 100%; object-fit: cover; }
.gallery-thumb:hover,.gallery-thumb:focus-visible,.gallery-thumb.is-active { opacity: 1; border-color: var(--signal); }
.gallery-thumb.is-active { transform: translateY(-3px); }
.gallery-thumb:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.contact-section { background: #d4dfbf; }
.contact-section h2 em { color: #4a5d2d; }
.contact-section .button-dark { background: var(--ink); }
.contact-card { background: var(--ink); color: #fff; }
.contact-card>span { color: var(--signal); }
.contact-card-line { background: #5f6d58; }
.site-footer { background: #111a10; }

@media (max-width: 1100px) {
  .schedule-day h4 span { display: none; }
  .schedule-day li strong { font-size: 17px; }
  .hero h1 { font-size: clamp(68px, 7.3vw, 87px); }
  .hero-visual-main { inset: 83px 16px auto; width: auto; height: 500px; }
  .hero-photo-tag { width: 128px; height: 128px; left: 16px; top: 98px; }
  .hero-photo-tag b { font-size: 64px; }
  .hero-team { width: 205px; left: 15px; }
  .hero-team img { height: 135px; }
  .route-photo { width: 43%; }
}
@media (max-width: 900px) {
  .schedule-panel { display: grid; inset: 0; width: 100%; height: 100dvh; max-height: 100dvh; transform: none; overflow: hidden; padding: 22px; border: 0; box-shadow: none; grid-template-rows: auto auto auto minmax(0, 1fr) auto; }
  .schedule-panel[open] { animation: schedule-reveal-mobile .25s ease-out both; }
  @keyframes schedule-reveal-mobile { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
  .schedule-panel-head { padding-bottom: 18px; }
  .schedule-panel-head h3 { font-size: clamp(35px, 7vw, 52px); }
  .schedule-panel-meta > span { display: none; }
  .schedule-day-nav { display: grid; grid-template-columns: repeat(var(--schedule-columns, 6), minmax(0, 1fr)); gap: 5px; padding: 18px 0 8px; }
  .schedule-day-nav button { border: 1px solid #74856e; background: transparent; color: #dce7d2; min-height: 44px; font: 900 14px var(--display); cursor: pointer; }
  .schedule-day-nav button.is-selected { background: #b8c98f; color: #192118; border-color: #b8c98f; }
  .schedule-days { display: block; margin: 7px 0 12px; }
  .schedule-day { display: none; padding: 0; border: 0; }
  .schedule-day.is-selected { display: block; }
  .schedule-day h4 { font-size: 25px; margin: 0 0 7px; }
  .schedule-day h4 span { display: inline; }
  .schedule-day li { display: grid; grid-template-columns: 67px minmax(0, 1fr) auto; align-items: center; min-height: clamp(40px, 6.4vh, 57px); padding: 5px 5px 5px 20px; }
  .schedule-day li strong { font-size: clamp(18px, 3.3vw, 22px); }
  .schedule-day li::before { top: 50%; transform: translateY(-50%); }
  .schedule-day p { margin: 8px 0; }
  .schedule-panel-foot { padding-top: 11px; font-size: 10px; }
}
@media (max-width: 760px) {
  .place-copy { display: block; margin-bottom: 28px; }
  .place-copy h2 { font-size: clamp(65px, 11vw, 88px); margin: 24px 0 26px; }
  .place-intro { max-width: 500px; }
  .gallery-stage { border-width: 5px; }
  .gallery-tools { min-height: 55px; gap: 15px; }
  .gallery-tools > span { display: none; }
  .gallery-thumb { width: 96px; height: 70px; }
  .gallery-thumbs { grid-auto-columns: 96px; }
  .schedule-control { position: static; }
  .hero-grid { min-height: 0; }
  .hero-copy { padding: 48px 0 36px; }
  .hero h1 { font-size: clamp(66px, 12.4vw, 94px); margin: 45px 0 25px; }
  .hero-sub { font-size: 16px; }
  .hero-actions { margin: 23px 0 36px; }
  .hero-visual { min-height: 0; height: 670px; margin: 0 -18px; padding: 23px 20px; }
  .hero-visual-main { inset: 65px 15px auto; width: auto; height: 445px; border-width: 5px; box-shadow: 8px 8px 0 #5e754e; }
  .hero-photo-tag { top: 70px; left: 20px; }
  .hero-team { width: 174px; left: 22px; bottom: 90px; }
  .hero-team img { height: 125px; }
  .hero-team span { font-size: 9px; }
  .hero-visual-bottom { height: auto; width: 48%; align-self: flex-end; display: flex; flex-direction: column; align-items: flex-end; gap: 12px; }
  .hero-visual-bottom span { position: static; font-size: clamp(22px, 6.2vw, 34px); }
  .hero-visual-bottom a { position: static; max-width: 100%; display: block; min-height: 44px; font-size: 10px; line-height: 1.4; }
  .route { height: auto; min-height: 410px; padding: 24px; }
  .route-overlay { margin-top: 170px; }
  .route-small .route-overlay { margin-top: 145px; }
  .route-overlay h3 { font-size: clamp(34px, 10.8vw, 50px); }
  .promise-intro { display: block; padding: 26px 0 12px; }
  .promise-intro strong { display: block; margin-top: 8px; font-size: 28px; }
  .route-photo { width: 44%; height: 160px; top: 30px; right: 30px; }
  .route-class-mark { right: 32px; top: 42px; font-size: 90px; }
  .route-overlay { left: auto; right: auto; bottom: auto; }
  .hours-art-number { font-size: clamp(78px, 14.5vw, 115px); }
}
@media (max-width: 430px) {
  .place-copy h2 { font-size: 68px; }
  .gallery-stage-label { top: 8px; left: 8px; font-size: 7px; padding: 6px 7px; }
  .gallery-stage-bottom { left: 8px; right: 8px; bottom: 8px; }
  .gallery-current { font-size: 38px; }
  .gallery-current small { font-size: 9px; }
  .gallery-stage-note { font-size: 7px; }
  .gallery-arrows button { width: 45px; height: 45px; }
  .gallery-arrows { left: 8px; right: 8px; }
  .schedule-panel-head h3 { font-size: 38px; }
  .schedule-day h4 { font-size: 24px; }
  .schedule-day li strong { font-size: 19px; }
  .hero h1 { font-size: clamp(53px, 12.6vw, 68px); }
  .hero-visual { height: 540px; }
  .hero-visual-main { inset: 60px 13px auto; width: auto; height: 340px; border-width: 5px; box-shadow: 7px 7px 0 #5e754e; }
  .hero-photo-tag { width: 91px; height: 91px; top: 64px; left: 16px; box-shadow: 0 0 0 3px var(--ink); }
  .hero-photo-tag b { font-size: 45px; }
  .hero-photo-tag span { font-size: 8px; margin-top: 5px; }
  .hero-team { width: 150px; bottom: 74px; left: 18px; padding: 5px; }
  .hero-team img { height: 105px; }
  .hero-team span { font-size: 9px; }
  .hero-visual-bottom span { font-size: clamp(22px, 6.2vw, 26px); }
  .hero-visual-bottom a { max-width: 100%; font-size: 10px; }
  .route-photo { width: 44%; height: 118px; top: 30px; right: 27px; }
  .route-class-mark { font-size: 74px; right: 30px; top: 35px; }
  .route-class-mark span { font-size: 7px; }
  .route-overlay h3 { font-size: clamp(34px, 10.8vw, 46px); }
}

@media (max-height: 680px) {
  .schedule-panel { top: 50%; bottom: auto; padding: 18px 24px; }
  .schedule-panel-head { padding-bottom: 10px; }
  .schedule-panel-head h3 { font-size: 42px; margin-top: 5px; }
  .schedule-days { margin-top: 10px; }
  .schedule-day li { min-height: 39px; padding-top: 4px; padding-bottom: 4px; }
  .schedule-panel-foot { padding-top: 8px; }
}
@media (max-width: 900px) and (max-height: 680px) {
  .schedule-panel { inset: 0; padding: 12px 18px; }
  .schedule-panel-head h3 { font-size: 35px; }
  .schedule-day-nav { padding: 9px 0 5px; }
  .schedule-day-nav button { min-height: 44px; }
  .schedule-day li { min-height: 35px; }
}
@media (prefers-reduced-motion: reduce) {
  .schedule-panel[open] { animation: none; }
}

@media (max-width: 360px) {
  .contact-section h2 em { font-size: 34px; }
  .hero-team { width: 132px; }
  .hero-team img { height: 93px; }
  .routes-section .section-title { font-size: 44px; }
  .place-copy h2 { font-size: 54px; }
  .services-row > a { grid-template-columns: minmax(0, 1fr) auto; }
  .services-row > a strong { font-size: 26px; }
  .filter-row { display: grid; grid-template-columns: 1fr 1.3fr 1fr; gap: 4px; }
  .filter { padding: 9px 4px; font-size: 9px; letter-spacing: 0; }
  .filter span { display: block; margin: 3px 0 0; }
}
@media (min-width: 761px) and (max-width: 980px) {
  .services-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .services-heading { grid-column: 1 / -1; padding-bottom: 24px; }
  .services-row > a { grid-template-columns: minmax(0, 1fr) auto; }
  .services-row > a strong { font-size: 28px; }
}
