:root {
  --thcs-ink: #171717;
  --thcs-paper: #fff;
  --thcs-access-bg: #1f6aa5;
  --thcs-calendar-bg: #fff;
  --thcs-instagram-bg: #202020;
}

html { scroll-behavior: smooth; }
body.thcs-page { margin: 0; background: var(--thcs-paper); color: var(--thcs-ink); font-family: 'Hiragino Kaku Gothic ProN', 'Yu Gothic', sans-serif; }
.thcs-site, .thcs-site * { box-sizing: border-box; }
.thcs-site { overflow: hidden; background: var(--thcs-paper); }
.thcs-site img { display: block; width: 100%; height: 100%; object-fit: cover; }
.thcs-site h1, .thcs-site h2, .thcs-site h3, .thcs-site p, .thcs-site figure { margin-top: 0; }
.thcs-image { min-height: 180px; background: linear-gradient(135deg, rgba(0,0,0,.055), rgba(0,0,0,.015)); }

/* トップは文字を重ねないメイン画像1枚 */
.thcs-hero { height: min(88vw, 92vh); min-height: 520px; padding: 14px; background: var(--thcs-paper); }
.thcs-hero-image { width: 100%; height: 100%; min-height: 0; background: linear-gradient(135deg, #d8d8d5, #efefec); overflow: hidden; }
.thcs-hero-image img { animation: thcs-hero-in 1.25s cubic-bezier(.22,.61,.36,1) both; }
@keyframes thcs-hero-in { from { opacity: 0; transform: scale(1.035); } to { opacity: 1; transform: scale(1); } }

.thcs-photo-band { position: relative; display: grid; grid-template-columns: 2fr 1fr; height: clamp(430px, 63vw, 820px); overflow: hidden; }
.thcs-photo-band > div { height: 100%; min-width: 0; overflow: hidden; }
.thcs-band-main, .thcs-band-sub { height: 100%; }

.thcs-about { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(230px, 28%) 1fr; gap: clamp(50px, 9vw, 150px); margin: 0; padding: clamp(110px, 13vw, 190px) clamp(28px, 6vw, 96px); background: var(--thcs-paper); clear: both; }
.thcs-about > h2, .thcs-access h2, .thcs-section-head h2, .thcs-price h2 { font-size: clamp(2.8rem, 6vw, 6.5rem); font-weight: 900; letter-spacing: .08em; }
.thcs-about-text { max-width: 760px; }
.thcs-about-text h3 { margin-bottom: 40px; font-size: clamp(1.35rem, 2.6vw, 2.45rem); line-height: 1.7; letter-spacing: .12em; }
.thcs-about-text p { margin-bottom: 0; font-size: clamp(.95rem, 1.5vw, 1.2rem); font-weight: 600; line-height: 2.35; letter-spacing: .1em; }
.thcs-about-subhead { margin-top: 75px; }

.thcs-access { background: var(--thcs-access-bg); color: #fff; }
.thcs-access-visual { position: relative; min-height: clamp(440px, 62vw, 780px); }
.thcs-access-map { position: absolute; inset: 0; background: rgba(255,255,255,.18); }
.thcs-access-map iframe { display: block; width: 100% !important; height: 100% !important; border: 0 !important; }
.thcs-map-placeholder { width: 100%; height: 100%; background: linear-gradient(145deg, rgba(255,255,255,.16), rgba(0,0,0,.14)); }
.thcs-access-visual h2 { position: absolute; top: clamp(36px, 6vw, 80px); left: clamp(28px, 6vw, 96px); z-index: 1; }
.thcs-access-info { display: grid; grid-template-columns: .8fr 1.2fr auto; gap: clamp(28px, 5vw, 80px); align-items: center; padding: 45px clamp(28px, 6vw, 96px) 52px; }
.thcs-access-info p { margin-bottom: 0; font-size: .9rem; font-weight: 600; line-height: 2; letter-spacing: .08em; }
.thcs-address { font-size: 1rem !important; }
.thcs-access-info a, .thcs-disabled-link { color: #fff; font-size: .78rem; font-weight: 700; letter-spacing: .12em; text-decoration: none; white-space: nowrap; }
.thcs-disabled-link { opacity: .55; }

.thcs-calendar { padding: clamp(100px, 12vw, 180px) clamp(16px, 5vw, 80px); background: var(--thcs-calendar-bg); }
.thcs-section-head { display: grid; grid-template-columns: .8fr 1.2fr; gap: 50px; align-items: end; max-width: 1180px; margin: 0 auto 85px; }
.thcs-section-head h2 { margin-bottom: 0; white-space: nowrap; font-size: clamp(2.5rem, 5.4vw, 5.8rem); letter-spacing: .05em; }
.thcs-section-head p { margin-bottom: 10px; font-weight: 600; line-height: 2; letter-spacing: .08em; }
.thcs-calendar-shell { display: grid; grid-template-columns: 52px minmax(0, 1080px) 52px; align-items: center; justify-content: center; gap: 18px; }
.thcs-calendar-viewport { overflow: hidden; }
.thcs-calendar-track { display: flex; gap: 34px; align-items: flex-start; transition: transform .45s ease; }
.thcs-calendar-card { flex: 0 0 calc((100% - 34px) / 2); min-width: 0; }
.thcs-calendar-card h3 { min-height: 1.5em; margin-bottom: 24px; font-size: clamp(1.1rem, 2vw, 1.55rem); line-height: 1.5; letter-spacing: .16em; text-align: center; }
.thcs-calendar-card img, .thcs-calendar-sample { border: 2px solid rgba(0,0,0,.1); background: rgba(255,255,255,.62); }
.thcs-calendar-card img { width: 100%; height: auto; aspect-ratio: auto; object-fit: contain; }
.thcs-calendar-sample { aspect-ratio: 4 / 3; }
.thcs-calendar-arrow { display: grid; place-items: center; width: 52px; height: 52px; padding: 0; border: 2px solid currentColor; border-radius: 50%; background: transparent; color: var(--thcs-ink); font-size: 1.2rem; cursor: pointer; transform: translateY(40px); }
.thcs-calendar-arrow:disabled { opacity: .2; cursor: default; }
.thcs-calendar-position { margin: 28px 0 0; font-size: .72rem; font-weight: 700; letter-spacing: .18em; text-align: center; }

.thcs-price-photo { height: clamp(420px, 65vw, 820px); }
.thcs-price-image { height: 100%; background: linear-gradient(135deg, #7daa68, #d9d9d5 50%, #f1df31); }
.thcs-price { display: grid; grid-template-columns: minmax(250px, 35%) 1fr; gap: clamp(45px, 9vw, 150px); padding: clamp(90px, 11vw, 160px) clamp(28px, 6vw, 96px); }
.thcs-price-list { font-size: clamp(1rem, 1.6vw, 1.25rem); font-weight: 600; line-height: 2.25; letter-spacing: .1em; }

.thcs-instagram { padding: clamp(100px, 12vw, 170px) 24px; background: var(--thcs-instagram-bg); color: #fff; text-align: center; }
.thcs-instagram-mark { position: relative; width: 48px; height: 48px; margin: 0 auto 34px; border: 3px solid currentColor; border-radius: 14px; }
.thcs-instagram-mark::before { content: ''; position: absolute; inset: 10px; border: 3px solid currentColor; border-radius: 50%; }
.thcs-instagram-mark::after { content: ''; position: absolute; top: 7px; right: 7px; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.thcs-instagram h2 { margin-bottom: 44px; font-size: clamp(2rem, 5vw, 4.8rem); line-height: 1.45; letter-spacing: .08em; }
.thcs-instagram-link { display: inline-flex; gap: 15px; align-items: center; justify-content: center; min-width: min(380px, 90vw); padding: 20px 28px; border: 2px solid currentColor; border-radius: 999px; color: #fff; font-size: .82rem; font-weight: 700; letter-spacing: .14em; text-decoration: none; }
.thcs-instagram-link.is-disabled { opacity: .5; }

.thcs-footer { display: flex; align-items: end; justify-content: space-between; gap: 30px; padding: 75px clamp(28px, 6vw, 96px) 45px; background: #111; color: #fff; }
.thcs-footer-image { display: block; width: min(320px, 56vw); color: #fff; text-decoration: none; }
.thcs-footer-image img { width: 100%; max-height: 180px; object-fit: contain; object-position: left bottom; }
.thcs-footer small { font-size: .62rem; letter-spacing: .12em; opacity: .6; }

/* スクロールに合わせた登場エフェクト */
.thcs-site [data-reveal] { opacity: 0; transition-property: opacity, transform; transition-duration: .85s; transition-timing-function: cubic-bezier(.22,.61,.36,1); transition-delay: var(--thcs-reveal-delay, 0ms); will-change: opacity, transform; }
.thcs-site [data-reveal="up"] { transform: translateY(46px); }
.thcs-site [data-reveal="left"] { transform: translateX(-54px); }
.thcs-site [data-reveal="right"] { transform: translateX(54px); }
.thcs-site [data-reveal="zoom"] { transform: scale(.94); }
.thcs-site [data-reveal="fade"] { transform: none; }
.thcs-site [data-reveal].is-visible { opacity: 1; transform: none; }

@media (max-width: 782px) {
  /* メイン写真は元画像の縦横比を保ち、見切れないように全体表示 */
  .thcs-hero { height: auto; min-height: 0; padding: 8px; }
  .thcs-hero-image { height: auto; min-height: 0; aspect-ratio: 4 / 3; }
  .thcs-hero-image.has-image { aspect-ratio: auto; }
  .thcs-hero-image.has-image img { width: 100%; height: auto; object-fit: contain; }
  .thcs-photo-band { grid-template-columns: 2fr 1fr; height: 63vw; }
  .thcs-band-main, .thcs-band-sub { display: block; height: 100%; }
  .thcs-about { display: block; padding: 18vw 7vw; text-align: center; }
  .thcs-about > h2, .thcs-access h2, .thcs-section-head h2, .thcs-price h2 { font-size: 7vw; }
  .thcs-about > h2 { margin-bottom: 9vw; }
  .thcs-about-text { max-width: 34rem; margin-inline: auto; }
  .thcs-about-text h3 { margin-bottom: 4vw; font-size: clamp(1rem, 3.6vw, 1.45rem); line-height: 1.65; letter-spacing: .07em; }
  .thcs-about-text p { font-size: clamp(.78rem, 2.5vw, .95rem); line-height: 2.15; letter-spacing: .055em; }
  .thcs-about-subhead { margin-top: 8vw !important; }
  .thcs-access-visual { min-height: 62vw; }
  .thcs-access-visual h2 { right: 7vw; left: 7vw; width: auto; text-align: center; }
  .thcs-access-info { display: flex; flex-direction: column; gap: 4vw; padding: 9vw 7vw 10vw; text-align: center; }
  .thcs-access-info p { font-size: clamp(.68rem, 2vw, .85rem); line-height: 1.8; letter-spacing: .04em; }
  .thcs-address { font-size: clamp(.72rem, 2.2vw, .9rem) !important; }
  .thcs-access-info a, .thcs-disabled-link { font-size: clamp(.64rem, 1.7vw, .78rem); white-space: normal; }
  .thcs-section-head { display: block; margin-bottom: 12vw; padding-inline: 7vw; text-align: center; }
  .thcs-section-head h2 { margin-bottom: 7vw; }
  .thcs-section-head p { margin-bottom: 0; font-size: clamp(.72rem, 2.4vw, .9rem); line-height: 1.8; }
  .thcs-calendar { padding-inline: 8px; }
  .thcs-calendar-shell { grid-template-columns: 36px minmax(0, 1fr) 36px; gap: 5px; }
  .thcs-calendar-track { gap: 8px; }
  .thcs-calendar-card { flex-basis: 100%; }
  .thcs-calendar-card h3 { margin-bottom: 16px; font-size: 1rem; letter-spacing: .06em; }
  .thcs-calendar-arrow { width: 36px; height: 36px; border-width: 1px; transform: translateY(22px); }
  .thcs-price-photo { height: 72vw; }
  .thcs-price { display: block; padding: 18vw 7vw; text-align: center; }
  .thcs-price h2 { margin-bottom: 9vw; }
  .thcs-price-list { max-width: 34rem; margin-inline: auto; font-size: clamp(.78rem, 2.7vw, 1rem); line-height: 2; letter-spacing: .055em; }
  .thcs-footer { display: flex; padding: 9vw 5vw 5vw; }
  .thcs-footer-image { width: 30vw; }
  .thcs-footer small { margin-top: 0; font-size: clamp(.55rem, 1.5vw, .65rem); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .thcs-calendar-track { transition: none; }
  .thcs-hero-image img { animation: none; }
  .thcs-site [data-reveal] { opacity: 1; transform: none; transition: none; }
}
