/* ============================================================
   JAPAN SAUNA FESTIVAL 2026 — Poster-style design system
   ポスターのテイスト：黄色フレーム／ピンク→水色の空／提灯／
   クリーム紙の垂れ幕／手描き動物イラスト
   ============================================================ */

:root{
  --yellow:#f4e259;
  --yellow-deep:#eed63a;
  --paper:#f7efdd;
  --paper-deep:#efe3c6;
  --ink:#2a2520;
  --ink-soft:#5a5248;
  --red:#d64530;
  --orange:#e2903b;
  --hotpink:#e05a92;
  --pink:#f6cdd9;
  --aqua:#8ed1cd;
  --teal:#2f9e8f;
  --blue:#39619f;
  --green:#57a05c;
  --white:#fffdf6;
  /* 小さい文字用の濃色（クリーム背景とのコントラスト確保 WCAG AA） */
  --red-text:#b83621;
  --teal-text:#1f7268;
  --red-bg:#c23a26;
  --sky:linear-gradient(180deg,#f9dbe3 0%,#f4c9d7 34%,#d9e4dd 62%,#9fd6d2 100%);
  --font-en:"Baloo 2","Zen Maru Gothic",sans-serif;
  --font-jp:"Zen Maru Gothic","Hiragino Maru Gothic ProN",sans-serif;
  --radius:20px;
  --shadow:0 10px 28px rgba(42,37,32,.14);
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:90px}

/* キーボード操作時のフォーカス表示 */
:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:4px}
.btn:focus-visible{outline-offset:5px}

/* スキップリンク（キーボードユーザー用・フォーカス時のみ表示） */
.skip-link{
  position:fixed;top:-100px;left:16px;z-index:200;
  background:var(--ink);color:var(--paper);font-weight:900;
  padding:10px 20px;border-radius:0 0 12px 12px;transition:top .2s;
}
.skip-link:focus{top:0}
body{
  font-family:var(--font-jp);
  color:var(--ink);
  background:var(--yellow);
  line-height:1.85;
  font-size:16px;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul{list-style:none}

/* ============ 黄色いポスターフレーム ============ */
.frame{
  border:clamp(8px,1.4vw,18px) solid var(--yellow);
  border-radius:26px;
  overflow:clip;
  background:var(--paper);
  min-height:100vh;
}

.container{width:min(1120px,92%);margin-inline:auto}
.section{padding:clamp(56px,8vw,104px) 0;position:relative}

/* ============ 見出し ============ */
.sec-eyebrow{
  font-family:var(--font-en);
  font-weight:800;
  letter-spacing:.22em;
  color:var(--red-text);
  font-size:.85rem;
  margin-bottom:6px;
  text-transform:uppercase;
}
.sec-title{
  font-family:var(--font-jp);
  font-weight:900;
  font-size:clamp(1.55rem,3.6vw,2.5rem);
  line-height:1.35;
  letter-spacing:.04em;
}
.sec-desc{color:var(--ink-soft);margin-top:10px}
.sec-head{margin-bottom:clamp(28px,4vw,48px)}
.sec-head.center{text-align:center}
.sec-head.center .sec-title::after{
  content:"";display:block;width:64px;height:6px;border-radius:3px;
  background:var(--orange);margin:14px auto 0;transform:rotate(-1.5deg);
}

/* ============ ボタン ============ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  font-family:var(--font-jp);font-weight:900;letter-spacing:.06em;
  padding:.85em 1.9em;border-radius:999px;border:3px solid var(--ink);
  transition:transform .18s ease, box-shadow .18s ease;
  box-shadow:0 4px 0 var(--ink);
  background:var(--white);color:var(--ink);
}
.btn:hover{transform:translateY(-3px);box-shadow:0 7px 0 var(--ink)}
.btn:active{transform:translateY(1px);box-shadow:0 2px 0 var(--ink)}
.btn-ticket{background:var(--red-bg);color:#fff}
.btn-ghost{background:transparent;box-shadow:none;border-color:var(--ink)}
.btn-lg{font-size:1.06rem;padding:1em 2.3em}
.btn-block{width:100%}
.btn .en{font-family:var(--font-en);font-weight:700;font-size:.78em;opacity:.85}
.link-arrow{
  font-weight:900;color:var(--red-text);border-bottom:2px dashed var(--red-text);
  padding-bottom:2px;transition:opacity .2s;
}
.link-arrow:hover{opacity:.65}

/* ============ ヘッダー ============ */
.site-header{
  position:sticky;top:0;z-index:100;
  background:var(--paper);
  border-bottom:3px solid var(--ink);
}
.header-inner{
  width:min(1240px,94%);margin-inline:auto;
  display:flex;align-items:center;justify-content:space-between;
  height:70px;gap:16px;
}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-en)}
.brand svg{width:36px;height:36px;flex:none}
.brand-logo{height:48px;width:auto;display:block}
.brand-text{font-weight:800;font-size:.95rem;letter-spacing:.03em;line-height:1.2}
.brand-text b{color:var(--red)}
.nav{display:flex;align-items:center;gap:clamp(10px,1.4vw,22px)}
.nav a{font-weight:700;font-size:.92rem;position:relative;white-space:nowrap}
.nav a:not(.btn)::after{
  content:"";position:absolute;left:0;right:0;bottom:-6px;height:3px;border-radius:2px;
  background:var(--orange);transform:scaleX(0);transition:transform .2s;transform-origin:left;
}
.nav a:not(.btn):hover::after,.nav a.current::after{transform:scaleX(1)}
.nav .btn{padding:.5em 1.3em;font-size:.88rem;box-shadow:0 3px 0 var(--ink)}
.nav-toggle{
  display:none;background:none;border:none;cursor:pointer;width:44px;height:44px;
  flex-direction:column;justify-content:center;align-items:center;gap:6px;
}
.nav-toggle span{display:block;width:26px;height:3px;background:var(--ink);border-radius:2px;transition:.25s}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(9px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-9px) rotate(-45deg)}

/* ============ 提灯（ちょうちん） ============ */
.lantern-zone{position:absolute;top:0;left:0;right:0;height:120px;pointer-events:none;z-index:5}
.lantern-string{
  position:absolute;top:-30px;left:-4%;right:-4%;height:70px;
  border-bottom:3px solid var(--ink);
  border-radius:0 0 100% 100%/0 0 100% 100%;
}
.lanterns{
  display:flex;justify-content:space-around;align-items:flex-start;
  position:absolute;top:0;left:0;right:0;
}
.lantern{
  --c:var(--red);
  width:34px;height:44px;background:var(--c);border-radius:50%/46%;
  position:relative;margin-top:26px;
  box-shadow:inset -5px -4px 0 rgba(0,0,0,.08);
}
.lantern::before,.lantern::after{
  content:"";position:absolute;left:50%;transform:translateX(-50%);
  width:16px;height:6px;background:var(--ink);border-radius:2px;
}
.lantern::before{top:-4px}
.lantern::after{bottom:-4px}
.lantern.white{--c:#f4efe2}
.lantern:nth-child(2n){margin-top:44px;width:28px;height:37px}
.lantern:nth-child(3n){margin-top:16px}
.lantern:nth-child(5n){margin-top:52px}

/* ============ HERO（トップ） ============ */
.hero{
  position:relative;background:var(--sky);
  padding:clamp(90px,10vw,130px) 0 0;
  overflow:hidden;
}
.hero-inner{
  display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(24px,4vw,56px);
  align-items:center;padding-bottom:clamp(70px,9vw,120px);
}
/* 垂れ幕（のれん）風タイトル */
.noren{
  background:var(--paper);
  padding:clamp(26px,4vw,48px) clamp(24px,3.6vw,44px) clamp(34px,4.4vw,52px);
  border-radius:6px 6px 14px 14px;
  transform:rotate(-1.6deg);
  box-shadow:var(--shadow);
  position:relative;
  clip-path:polygon(0 0,100% 0,100% 94%,86% 98%,70% 95%,52% 99%,34% 95%,16% 99%,0 95%);
}
.noren::before{
  content:"";position:absolute;top:-14px;left:6%;right:6%;height:3px;background:var(--ink);
  border-radius:2px;
}
.hero-eyebrow{
  font-family:var(--font-en);font-weight:800;font-size:clamp(.72rem,1.2vw,.9rem);
  letter-spacing:.2em;color:var(--teal-text);margin-bottom:8px;
}
.hero-title{
  font-family:var(--font-en);font-weight:800;line-height:1.02;
  font-size:clamp(2.6rem,6.2vw,4.6rem);letter-spacing:.01em;
}
.hero-title span{display:block}
.hero-title .ht-year{
  color:var(--red);display:inline-block;transform:rotate(-2deg);
}
/* 公式縦ロゴ（のれん内） */
.hero-logo{margin:4px 0;display:flex;justify-content:center}
.hero-logo img{width:min(380px,82%);height:auto}
/* ポスターのリボン風ストローク */
.ribbon-line{position:relative;z-index:1}
.ribbon-line::after{
  content:"";position:absolute;left:-2%;width:70%;bottom:.06em;height:.3em;z-index:-1;
  border-radius:999px;transform:rotate(-1.2deg);
  background:var(--rb,var(--aqua));opacity:.75;
}
.rb-green{--rb:#8fc79a}
.rb-blue{--rb:#9dc0e8}
.rb-red{--rb:#f0a08e}
.hero-sub{margin-top:16px;font-weight:700;font-size:clamp(.95rem,1.6vw,1.12rem)}
.hero-meta{
  display:flex;flex-wrap:wrap;gap:12px 26px;margin-top:18px;
}
.meta-block{display:flex;flex-direction:column}
.meta-label{
  font-family:var(--font-en);font-weight:800;font-size:.7rem;letter-spacing:.24em;color:var(--red-text);
}
.meta-value{font-weight:900;font-size:clamp(1.02rem,1.9vw,1.28rem)}
.meta-value small{font-weight:700;font-size:.72em;color:var(--ink-soft)}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:26px}
/* ポスターカード */
.poster-card{
  transform:rotate(2.4deg);
  border:10px solid #fff;border-radius:10px;
  box-shadow:var(--shadow);
  background:#fff;
  max-width:400px;justify-self:center;
  transition:transform .3s ease;
  margin:0;
}
.poster-card:hover{transform:rotate(.6deg) scale(1.015)}
.poster-card img{border-radius:4px}
.poster-card figcaption{
  font-family:var(--font-en);font-weight:700;font-size:.72rem;text-align:center;
  padding:8px 4px 2px;color:var(--ink-soft);letter-spacing:.12em;
}
/* ポスターなし・のれん主役の1カラムヒーロー */
.hero-solo .hero-inner{grid-template-columns:1fr;justify-items:center}
.hero-solo .noren{width:min(660px,100%);text-align:center}
.hero-solo .hero-meta{justify-content:center}
.hero-solo .hero-cta{justify-content:center}
/* ヒーローの動物たち */
.hero-animal{position:absolute;pointer-events:none;z-index:4}
.ha-peek{right:-14px;top:30%;width:clamp(80px,10vw,150px);transform:scaleX(-1)}
.ha-wave{left:2%;top:32%;width:clamp(70px,8vw,120px)}
.ha-seal{left:4%;bottom:-10px;width:clamp(90px,11vw,160px)}
.ha-duo{right:17%;bottom:-10px;width:clamp(100px,12vw,180px)}
.ha-frog{right:3%;bottom:-8px;width:clamp(80px,9vw,140px);transform:rotate(3deg)}

/* ============ マーキー ============ */
.marquee{
  background:var(--ink);color:var(--paper);overflow:hidden;
  padding:12px 0;
}
.marquee-track{
  display:flex;gap:2.2em;white-space:nowrap;width:max-content;
  animation:marquee 26s linear infinite;
  font-family:var(--font-en);font-weight:800;font-size:1.05rem;letter-spacing:.14em;
  align-items:center;
}
.marquee-track i{color:var(--orange);font-style:normal}
@keyframes marquee{to{transform:translateX(-50%)}}

/* ============ CONCEPT ============ */
.concept{background:var(--paper)}
.concept-grid{
  display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,5vw,64px);align-items:center;
}
.concept .lead{font-weight:900;font-size:1.2rem;margin-bottom:14px;color:var(--teal-text)}
.concept p+p{margin-top:12px}
.concept-text .link-arrow{display:inline-block;margin-top:18px}
.concept-media{position:relative}
.concept-media img{
  border-radius:var(--radius);box-shadow:var(--shadow);transform:rotate(1.6deg);
  border:8px solid #fff;
}
.media-tag{
  position:absolute;left:-10px;bottom:18px;background:var(--ink);color:var(--paper);
  font-family:var(--font-en);font-weight:700;font-size:.72rem;letter-spacing:.14em;
  padding:6px 14px;border-radius:999px;transform:rotate(-3deg);
}
.concept-animal{
  position:absolute;right:-8px;top:-64px;width:clamp(90px,9vw,130px);transform:rotate(4deg);
}

/* ============ コンテンツガイド（詳細ページへのカード） ============ */
.contents-guide{background:var(--sky);overflow:hidden}
.cg-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2.4vw,28px);
}
.cg-card{
  background:var(--white);border-radius:var(--radius);overflow:hidden;
  border:3px solid var(--ink);box-shadow:0 6px 0 rgba(42,37,32,.9);
  transition:transform .2s ease,box-shadow .2s ease;
  display:flex;flex-direction:column;position:relative;
}
.cg-card:hover{transform:translateY(-6px) rotate(-.5deg);box-shadow:0 12px 0 rgba(42,37,32,.9)}
.cg-media{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--paper-deep)}
.cg-media img{width:100%;height:100%;object-fit:cover}
.cg-num{
  position:absolute;top:10px;left:10px;background:var(--yellow);border:3px solid var(--ink);
  font-family:var(--font-en);font-weight:800;font-size:.72rem;letter-spacing:.12em;
  padding:2px 12px;border-radius:999px;
}
.cg-body{
  padding:18px 84px 22px 20px;flex:1;display:flex;flex-direction:column;gap:6px;
  position:relative;
}
.cg-body img.cg-animal{
  position:absolute;right:12px;bottom:14px;width:60px;height:auto;object-fit:contain;
}
.cg-body h3{font-weight:900;font-size:1.12rem}
.cg-body p{font-size:.9rem;color:var(--ink-soft);flex:1}
.cg-more{
  font-family:var(--font-en);font-weight:800;font-size:.8rem;letter-spacing:.14em;color:var(--red-text);
}

/* ============ LINEUP teaser ============ */
.lineup{background:var(--paper)}
.lineup-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,48px)}
.lineup-col{
  background:var(--white);border:3px solid var(--ink);border-radius:var(--radius);
  padding:26px 28px;box-shadow:0 6px 0 rgba(42,37,32,.9);
}
.lineup-h{font-weight:900;font-size:1.1rem;display:flex;align-items:center;gap:10px;margin-bottom:14px}
.lineup-h .dot{width:14px;height:14px;border-radius:50%;background:var(--red);flex:none}
.lineup-h .dot.blue{background:var(--blue)}
.day-list li{
  display:flex;gap:14px;padding:12px 0;border-bottom:2px dashed var(--paper-deep);align-items:baseline;
}
.day-list .day{
  font-family:var(--font-en);font-weight:800;color:var(--red-text);flex:none;width:88px;font-size:.9rem;
}
.day-list .acts{font-weight:700}
.chip-list{display:flex;flex-wrap:wrap;gap:8px}
.chip-list li{
  background:var(--paper);border:2px solid var(--ink);border-radius:999px;
  padding:4px 14px;font-weight:700;font-size:.85rem;
}
.chip-list.sm li{font-size:.78rem;padding:3px 11px}
.theme-song{
  margin-top:clamp(28px,4vw,44px);
  display:flex;gap:24px;align-items:center;
  background:var(--ink);color:var(--paper);border-radius:var(--radius);
  padding:24px 30px;position:relative;overflow:hidden;
}
.theme-song .ts-animal-wrap{
  flex:none;background:var(--paper);border:3px solid var(--orange);
  border-radius:22px;padding:10px 14px 4px;display:grid;place-items:center;
  box-shadow:0 6px 0 rgba(0,0,0,.25);
}
.theme-song img.ts-animal{width:100px;display:block}
.theme-song .ts-label{
  font-family:var(--font-en);font-weight:800;letter-spacing:.2em;font-size:.72rem;color:var(--orange);
}
.theme-song h3{font-weight:900;font-size:1.3rem;margin:4px 0 2px}
.theme-song p{font-size:.88rem;opacity:.85}
.lineup-more{text-align:center;margin-top:30px}

/* ============ EVENT INFO ============ */
.info{background:var(--paper-deep)}
.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2.4vw,26px)}
.info-card{
  background:var(--white);border:3px solid var(--ink);border-radius:var(--radius);
  padding:24px 26px;box-shadow:0 6px 0 rgba(42,37,32,.9);position:relative;
}
.info-h{font-weight:900;font-size:1.08rem;margin-bottom:12px}
.info-date{font-weight:900;font-size:1.3rem}
.info-date small{font-size:.7em;color:var(--ink-soft)}
.info-note{font-size:.85rem;color:var(--ink-soft);margin:6px 0 10px}
.part-table{width:100%;border-collapse:collapse;font-size:.92rem}
.part-table th{
  background:var(--yellow);border:2px solid var(--ink);font-family:var(--font-en);
  font-weight:800;padding:6px 10px;width:64px;
}
.part-table td{border:2px solid var(--ink);padding:6px 12px;font-weight:700}
.ticket-list li{
  display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  padding:10px 0;border-bottom:2px dashed var(--paper-deep);
}
.t-name{font-weight:700;font-size:.92rem}
.t-name small{display:block;font-size:.75em;color:var(--ink-soft)}
.t-price{font-family:var(--font-en);font-weight:800;font-size:1.25rem;color:var(--red);white-space:nowrap}
.t-price small{font-size:.65em}
.info-card .btn{margin-top:14px}
.info-fine{font-size:.72rem;color:var(--ink-soft);margin-top:10px}
.info-place{font-weight:900;font-size:1.15rem}
.info-addr{font-size:.88rem;color:var(--ink-soft);margin:6px 0 14px}
.venue-map-wrap{margin:0}
.venue-map-wrap img{border-radius:12px;border:2px solid var(--ink)}
.map-cap{font-size:.72rem;color:var(--ink-soft);margin-top:8px}
.info-animal{position:absolute;right:12px;top:-62px;width:86px}
.notes-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,2.4vw,26px);margin-top:clamp(18px,2.6vw,28px)}
.note-box{
  background:var(--white);border:3px dashed var(--ink);border-radius:var(--radius);padding:20px 24px;
}
.note-box h4{font-weight:900;margin-bottom:6px}
.note-box p{font-size:.9rem;color:var(--ink-soft)}
.access{margin-top:clamp(26px,4vw,40px)}
.access-h{font-weight:900;font-size:1.2rem;margin-bottom:16px}
.access-grid{
  display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(18px,3vw,32px);
  background:var(--white);border:3px solid var(--ink);border-radius:var(--radius);
  overflow:hidden;box-shadow:0 6px 0 rgba(42,37,32,.9);
}
.access-map iframe{width:100%;height:100%;min-height:300px;border:0;display:block}
.access-info{padding:26px 28px 26px 0}
.access-place{font-weight:900;font-size:1.12rem}
.access-addr{font-size:.88rem;color:var(--ink-soft);margin:4px 0 14px}
.access-list li{
  display:flex;justify-content:space-between;padding:9px 0;border-bottom:2px dashed var(--paper-deep);
  font-size:.92rem;
}
.ac-station{font-weight:700}
.ac-walk{font-family:var(--font-en);font-weight:700;color:var(--teal-text)}
.access-note{font-size:.84rem;color:var(--ink-soft);margin:12px 0}

/* ============ GALLERY teaser ============ */
.gallery{background:var(--paper)}
.gallery-grid{
  display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:150px;gap:14px;
}
.g-item{border-radius:14px;overflow:hidden;border:3px solid var(--ink);position:relative;margin:0}
.g-item img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.g-item:hover img{transform:scale(1.06)}
.g-tall{grid-row:span 2}
.g-wide{grid-column:span 2}
.gallery-more{text-align:center;margin-top:32px}
.gallery-animal{position:absolute;right:4%;top:-26px;width:clamp(80px,8vw,120px);transform:rotate(6deg)}

/* ============ FAQ ============ */
.faq{background:var(--sky)}
.faq-wrap{max-width:820px;position:relative}
.faq-item{
  background:var(--white);border:3px solid var(--ink);border-radius:16px;
  margin-bottom:12px;overflow:hidden;
}
.faq-item summary{
  cursor:pointer;font-weight:900;padding:16px 48px 16px 22px;position:relative;list-style:none;
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::before{content:"Q.";color:var(--red-text);font-family:var(--font-en);font-weight:800;margin-right:8px}
.faq-item summary::after{
  content:"+";position:absolute;right:18px;top:50%;transform:translateY(-50%);
  font-family:var(--font-en);font-weight:800;font-size:1.3rem;color:var(--orange);transition:transform .2s;
}
.faq-item[open] summary::after{transform:translateY(-50%) rotate(45deg)}
.faq-a{padding:0 22px 18px;color:var(--ink-soft);font-size:.94rem}
.faq-a::before{content:"A.";color:var(--teal-text);font-family:var(--font-en);font-weight:800;margin-right:8px}
.faq-animal{position:absolute;right:-150px;bottom:0;width:150px}

/* ============ SPONSORS ============ */
.sponsors{background:var(--paper)}
.sp-grid{
  display:flex;flex-wrap:wrap;justify-content:center;gap:14px;
}
.sp-card{
  background:var(--white);border:2px solid var(--ink);border-radius:14px;
  min-height:86px;display:flex;align-items:center;justify-content:center;
  padding:12px 22px;flex:0 1 215px;
}
.sp-card img{max-height:62px;max-width:172px;object-fit:contain}
.sp-lg .sp-card{flex-basis:272px;min-height:110px}
.sp-lg .sp-card img{max-height:76px;max-width:220px}
.sp-name{font-weight:900;font-size:1.02rem;text-align:center;line-height:1.4}
.sp-card small{display:block;font-size:.68rem;color:var(--ink-soft);text-align:center}
.sponsor-tier{margin-bottom:clamp(22px,3vw,34px)}
.tier-label{
  text-align:center;font-family:var(--font-en);font-weight:800;font-size:.78rem;letter-spacing:.2em;
  color:var(--ink-soft);margin-bottom:14px;position:relative;
}
.tier-label span{background:inherit;padding:0 16px;position:relative;z-index:1}
.sponsors .tier-label span{background:var(--paper)}
.tier-label::before{
  content:"";position:absolute;left:12%;right:12%;top:50%;height:2px;background:rgba(42,37,32,.12);
}
.tier-jp{display:block;font-family:var(--font-jp);font-weight:900;font-size:1.05rem;color:var(--ink);letter-spacing:.1em}
.sponsors-more{text-align:center;margin-top:8px}
.kawasaki-stmt{text-align:center;margin-top:22px}
.kawasaki-stmt img{max-width:min(360px,80%);height:auto;margin:0 auto;opacity:.92}

/* 協賛企業のご紹介（仮掲載）リスト */
.intro-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.intro-item{
  background:var(--white);border:2px solid var(--ink);border-radius:14px;padding:14px 18px;
  display:flex;gap:14px;align-items:flex-start;scroll-margin-top:100px;
}
.intro-item:target{border-color:var(--red-text);box-shadow:0 0 0 3px rgba(184,54,33,.22)}
.intro-item > div{flex:1}
.intro-logo{
  width:96px;height:70px;object-fit:contain;flex:none;
  background:#fff;border:1px solid var(--paper-deep);border-radius:8px;padding:5px;
}
.intro-noimg{
  width:96px;height:70px;flex:none;display:flex;align-items:center;justify-content:center;
  background:var(--paper);border:1px solid var(--paper-deep);border-radius:8px;font-size:1.6rem;
}
a.sp-card{transition:transform .15s ease,border-color .15s ease}
a.sp-card:hover{transform:translateY(-3px);border-color:var(--red-text)}
/* 出演者のSNSリンク */
.p-sns{margin-top:6px;font-size:.78rem;font-weight:700}
.p-sns a{
  color:var(--teal-text);border-bottom:1px dashed var(--teal-text);margin-right:12px;
  display:inline-flex;align-items:center;gap:4px;vertical-align:middle;
}
.p-sns a:hover{opacity:.65}
.sns-ico{width:13px;height:13px;flex:none}
.p-sns.sns-lg{font-size:.95rem}
.p-sns.sns-lg a{margin-bottom:10px}
.p-sns.sns-lg .sns-ico{width:17px;height:17px}
.foot-sns a{display:inline-flex;align-items:center;gap:6px}
.foot-sns .sns-ico{width:15px;height:15px}
.intro-item h4{font-weight:900;font-size:1.05rem;line-height:1.5}
.intro-item h4 a{color:var(--red-text);border-bottom:2px dashed var(--red-text)}
.intro-item h4 a:hover{opacity:.65}
.intro-item p{font-size:.9rem;color:var(--ink-soft);margin-top:2px}
/* ポスター掲示協力店舗一覧 */
.poster-note{font-size:.8rem;color:var(--ink-soft);margin:0 0 16px}
.poster-list{columns:3;column-gap:32px;list-style:none;margin-top:4px}
.poster-list li{break-inside:avoid;font-size:.86rem;line-height:1.55;padding:4px 0;color:var(--ink);border-bottom:1px dashed var(--paper-deep)}
@media (max-width:760px){.poster-list{columns:2;column-gap:22px}}
@media (max-width:440px){.poster-list{columns:1}}
@media (max-width:640px){
  .intro-grid{grid-template-columns:1fr}
  .sp-grid{gap:10px}
  .sp-card{flex:0 1 calc(50% - 5px);min-width:0;min-height:76px;padding:10px 12px}
  .sp-card img{max-width:100%;max-height:56px}
}

/* ============ CLOSING ============ */
.closing{
  background:var(--sky);text-align:center;
  padding:clamp(70px,9vw,120px) 0 0;position:relative;overflow:hidden;
}
.closing .eyebrow{
  font-family:var(--font-en);font-weight:800;letter-spacing:.22em;color:var(--teal-text);font-size:.85rem;
}
.closing h2{font-weight:900;font-size:clamp(1.8rem,4.4vw,3rem);margin:10px 0 8px}
.closing-sub{font-weight:700;color:var(--ink-soft)}
.closing .btn{margin-top:26px}
.closing-animals{
  margin-top:clamp(36px,5vw,60px);display:flex;justify-content:center;align-items:flex-end;
  gap:clamp(4px,2vw,30px);padding:0 4%;
}
.closing-animals img{width:clamp(70px,10vw,150px);height:auto}

/* ============ FOOTER ============ */
.site-footer{background:var(--ink);color:var(--paper);padding:clamp(44px,6vw,70px) 0 0}
.footer-inner{
  display:grid;grid-template-columns:1.2fr 2fr;gap:clamp(26px,5vw,60px);
  padding-bottom:clamp(30px,4vw,50px);
}
.footer-brand{display:flex;gap:14px;align-items:flex-start}
.footer-brand svg{width:42px;height:42px;flex:none}
.footer-name b{font-family:var(--font-en);font-size:1.05rem;letter-spacing:.04em}
.footer-name span{font-size:.82rem;opacity:.75}
.footer-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.footer-col h5{
  font-family:var(--font-en);font-weight:800;letter-spacing:.18em;font-size:.72rem;
  color:var(--orange);margin-bottom:10px;
}
.footer-col p,.footer-col a{font-size:.86rem;opacity:.9;line-height:2}
.footer-col a:hover{color:var(--yellow)}
.footer-bottom{border-top:1px solid rgba(247,239,221,.2);padding:16px 0}
.footer-bottom .container{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font-size:.75rem;opacity:.7}

/* ============ 下層ページ共通 ============ */
.page-hero{
  background:var(--sky);position:relative;overflow:hidden;
  padding:clamp(80px,9vw,110px) 0 clamp(46px,6vw,70px);
}
.ph-eyebrow{
  font-family:var(--font-en);font-weight:800;letter-spacing:.24em;color:var(--red-text);font-size:.85rem;
}
.page-hero h1{
  font-weight:900;font-size:clamp(1.9rem,4.6vw,3.1rem);line-height:1.3;margin:6px 0 10px;
}
.ph-lead{max-width:640px;font-weight:700;color:var(--ink-soft)}
.ph-animal{
  position:absolute;right:4%;bottom:-10px;width:clamp(110px,14vw,190px);pointer-events:none;
}
.breadcrumb{font-size:.78rem;color:var(--ink-soft);margin-bottom:14px}
.breadcrumb a{color:var(--red-text);font-weight:700}

/* 詳細カード（サウナ紹介） */
.detail-list{display:flex;flex-direction:column;gap:clamp(30px,5vw,56px)}
.d-row{
  display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3.6vw,48px);align-items:center;
}
.d-row.reverse .d-media{order:2}
.d-media{position:relative}
.d-media img{
  border-radius:var(--radius);border:4px solid var(--ink);box-shadow:var(--shadow);
  aspect-ratio:4/3;object-fit:cover;width:100%;transform:rotate(-1deg);
}
.d-row.reverse .d-media img{transform:rotate(1deg)}
.d-media.duo .duo-imgs{display:flex;gap:12px}
.d-media.duo .duo-imgs img{width:50%;aspect-ratio:3/4}
.d-media.duo .duo-imgs img:first-child{transform:rotate(-1.5deg)}
.d-media.duo .duo-imgs img:last-child{transform:rotate(1.5deg)}
.p-sns .who{font-weight:900;color:var(--ink-soft);margin-right:8px}
.d-tag{
  position:absolute;top:-14px;left:-8px;background:var(--yellow);border:3px solid var(--ink);
  border-radius:999px;font-family:var(--font-en);font-weight:800;font-size:.72rem;
  letter-spacing:.14em;padding:4px 16px;transform:rotate(-4deg);z-index:2;
}
.d-body h3{font-weight:900;font-size:clamp(1.2rem,2.4vw,1.6rem);margin-bottom:8px}
.d-body .d-sub{
  font-family:var(--font-en);font-weight:800;letter-spacing:.14em;font-size:.75rem;color:var(--teal-text);
  display:block;margin-bottom:4px;text-transform:uppercase;
}
.d-body p{color:var(--ink-soft);font-size:.95rem}
.d-body .chip-list{margin-top:14px}

/* グリッド型カード（出演者など） */
.people-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,24px);
}
.person{
  background:var(--white);border:3px solid var(--ink);border-radius:var(--radius);
  overflow:visible;position:relative;box-shadow:0 5px 0 rgba(42,37,32,.9);
  transition:transform .2s;
}
.person:hover{transform:translateY(-4px)}
.person-photo{
  aspect-ratio:1/1;overflow:hidden;background:var(--paper-deep);position:relative;
  border-radius:calc(var(--radius) - 4px) calc(var(--radius) - 4px) 0 0;
}
.day-badge{
  position:absolute;top:-13px;left:-13px;z-index:3;
  background:var(--red);color:#fff;font-family:var(--font-en);font-weight:800;
  font-size:.85rem;letter-spacing:.06em;padding:4px 14px;border-radius:16px;
  border:2px solid var(--paper);box-shadow:0 2px 4px rgba(0,0,0,.18);
}
.day-badge.sun{background:var(--teal)}
.person-photo img{width:100%;height:100%;object-fit:cover}
.person-body{padding:14px 16px 16px}
.person-body h4{font-weight:900;font-size:1rem;line-height:1.4}
.person-body .p-role,.d-body .p-role{
  font-family:var(--font-en);font-weight:700;font-size:.68rem;letter-spacing:.14em;
  color:var(--red-text);display:block;
}
.d-body .p-role{font-family:var(--font-jp);letter-spacing:.06em;margin-top:2px}
.person-body p{font-size:.8rem;color:var(--ink-soft);margin-top:4px}
.person-body .p-msg,.d-body .p-msg{
  margin-top:8px;padding:8px 10px;border-radius:8px;
  background:var(--paper-deep);color:var(--ink);font-size:.76rem;line-height:1.55;
  border-left:3px solid var(--red-text);
}
.d-body .p-msg{font-size:.85rem}
.person-body .p-msg::before,.d-body .p-msg::before{
  content:"MESSAGE";display:block;font-family:var(--font-en);font-weight:700;
  font-size:.6rem;letter-spacing:.14em;color:var(--red-text);margin-bottom:3px;
}
/* COMING SOON プレースホルダ */
.placeholder{
  border-style:dashed;background:var(--paper);display:flex;align-items:center;justify-content:center;
  min-height:220px;flex-direction:column;gap:8px;color:var(--ink-soft);box-shadow:none;
}
.placeholder .ph-mark{font-size:2rem;line-height:1}
.placeholder b{font-family:var(--font-en);letter-spacing:.18em;font-size:.85rem}
.placeholder small{font-size:.72rem}

/* ギャラリーページ */
.masonry{columns:3;column-gap:16px}
.masonry figure{
  margin:0 0 16px;border-radius:14px;overflow:hidden;border:3px solid var(--ink);
  break-inside:avoid;cursor:zoom-in;
}
.masonry img{width:100%;transition:transform .3s}
.masonry figure:hover img{transform:scale(1.04)}
.lightbox{
  border:none;padding:0;background:transparent;max-width:min(92vw,1100px);margin:auto;
}
.lightbox::backdrop{background:rgba(26,22,18,.86)}
.lightbox img{border-radius:12px;max-height:86vh;width:auto;max-width:100%;margin-inline:auto;cursor:zoom-out}
.lb-close{
  position:fixed;top:14px;right:16px;z-index:2;
  width:44px;height:44px;border-radius:50%;border:3px solid var(--paper);
  background:var(--ink);color:var(--paper);font-size:1.2rem;font-weight:900;cursor:pointer;
}
.masonry figure:focus-visible{outline:3px solid var(--blue);outline-offset:3px}

/* 前後ページナビ */
.page-nav{
  display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:clamp(40px,6vw,70px);
}
.page-nav a{
  border:3px solid var(--ink);border-radius:var(--radius);background:var(--white);
  padding:18px 22px;font-weight:900;display:flex;flex-direction:column;gap:2px;
  box-shadow:0 5px 0 rgba(42,37,32,.9);transition:transform .2s;
}
.page-nav a:hover{transform:translateY(-4px)}
.page-nav .pn-label{
  font-family:var(--font-en);font-weight:800;font-size:.68rem;letter-spacing:.2em;color:var(--red-text);
}
.page-nav .next{text-align:right;align-items:flex-end}

/* CTAバンド（下層ページ用） */
.cta-band{
  background:var(--red-bg);color:#fff;text-align:center;
  padding:clamp(44px,6vw,70px) 0;position:relative;overflow:hidden;
}
.cta-band h2{font-weight:900;font-size:clamp(1.4rem,3vw,2rem);margin-bottom:6px}
.cta-band p{opacity:.92;font-size:.92rem}
.cta-band .btn{margin-top:20px;background:var(--yellow);color:var(--ink)}
.cta-animal{position:absolute;left:4%;bottom:-10px;width:clamp(80px,9vw,130px)}

/* ============ グリッド列数ユーティリティ ============ */
.info-grid.cols-3{grid-template-columns:repeat(3,1fr)}
.info-grid.cols-2,.people-grid.cols-2{grid-template-columns:repeat(2,1fr)}
.people-grid.cols-3{grid-template-columns:repeat(3,1fr)}

/* ============ Reveal（JS有効時のみアニメーション＝JS無効でも白紙にならない） ============ */
.js .reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s ease}
.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .js .reveal{opacity:1;transform:none;transition:none}
  .marquee-track{animation:none}
}

/* ============ Responsive ============ */
@media (max-width:1280px){
  .nav{gap:12px}
  .nav a{font-size:.85rem}
}
@media (max-width:900px){
  .ph-animal{
    position:static;display:block;margin:6px 8px -14px auto;width:clamp(90px,15vw,130px);
  }
}
@media (max-width:1020px){
  /* 控えめなドロップダウンメニュー（右上から） */
  .nav{
    position:absolute;top:calc(100% + 10px);right:14px;left:auto;
    flex-direction:column;align-items:flex-end;
    background:var(--white);border:3px solid var(--ink);border-radius:18px;
    box-shadow:0 6px 0 rgba(42,37,32,.9);
    padding:20px 26px;gap:14px;
    opacity:0;visibility:hidden;transform:translateY(-8px);
    transition:opacity .2s ease,transform .2s ease,visibility .2s;
    z-index:99;
  }
  .nav.open{opacity:1;visibility:visible;transform:none}
  .nav a{font-size:1rem}
  .nav .btn{margin-top:4px}
  .nav-toggle{display:flex}
  .hero-inner{grid-template-columns:1fr}
  .poster-card{max-width:320px}
  .cg-grid{grid-template-columns:repeat(2,1fr)}
  .people-grid{grid-template-columns:repeat(3,1fr)}
  .info-grid{grid-template-columns:1fr 1fr}
  .info-grid.cols-3{grid-template-columns:1fr 1fr}
  .footer-inner{grid-template-columns:1fr}
  .faq-animal{display:none}
}
@media (max-width:640px){
  body{font-size:15px}
  .hero{padding-top:76px}
  .noren{transform:rotate(-1deg)}
  .hero-title{font-size:2.4rem}
  .ha-peek{width:64px}
  .ha-seal,.ha-frog{width:80px}
  .ha-wave,.ha-duo{display:none}
  .cg-grid{grid-template-columns:1fr}
  .concept-grid,.lineup-grid,.d-row,.notes-grid,.access-grid,.page-nav{grid-template-columns:1fr}
  .d-row.reverse .d-media{order:0}
  .access-info{padding:22px}
  .info-grid{grid-template-columns:1fr}
  .gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:120px}
  .people-grid{grid-template-columns:1fr}
  .info-grid.cols-3,.info-grid.cols-2,.people-grid.cols-2{grid-template-columns:1fr}
  .people-grid.cols-3{grid-template-columns:1fr}
  .brand-logo{height:40px}
  .masonry{columns:2;column-gap:10px}
  .theme-song{flex-direction:column;text-align:center}
  .footer-cols{grid-template-columns:1fr}
  .closing-animals img{width:64px}
  .closing-animals img:nth-child(n+5){display:none}
  .concept-animal{top:-70px;width:80px}
  .info-animal{display:none}
}

/* ============ 会場マップ（大） ============ */
.bigmap{margin:0;max-width:960px;margin:0 auto}
.bigmap img{width:100%;border-radius:var(--radius);border:3px solid var(--ink);box-shadow:0 8px 0 rgba(42,37,32,.9)}

/* 部ごとの受付・着替え時刻 */
.part-table-detail td{padding:8px 12px}
.pt-main{display:block;font-weight:800}
.pt-sub{display:block;font-size:.78rem;font-weight:500;color:#6b6257;margin-top:1px}

/* ============ フード：準備中ボックス ============ */
.soon-box{
  max-width:640px;margin:0 auto;text-align:center;background:var(--white);
  border:3px solid var(--ink);border-radius:var(--radius);box-shadow:0 6px 0 rgba(42,37,32,.9);
  padding:clamp(40px,6vw,64px) clamp(24px,4vw,48px);
}
.soon-eyebrow{font-family:var(--font-en);font-weight:800;font-size:.8rem;letter-spacing:.24em;color:var(--red-text);margin-bottom:12px}
.soon-title{font-size:clamp(1.4rem,3vw,1.9rem);font-weight:900;line-height:1.5;margin-bottom:16px}
.soon-text{font-size:.95rem;line-height:2;color:#57503f}
.soon-sns{margin-top:22px;font-weight:700}
.soon-sns a{border-bottom:2px dashed var(--ink);padding-bottom:2px}
@media(max-width:720px){.pc-only{display:none}}

/* フッターのロゴチップ */
.footer-brand{flex-direction:column;gap:10px}
.footer-logo-chip{display:inline-block;background:#fdf8ec;border-radius:14px;padding:12px 20px;width:fit-content}
.footer-logo-chip img{width:210px;height:auto;display:block}

/* ---- アフタームービー埋め込み ---- */
.movie-wrap{max-width:880px;margin:0 auto}
.movie-frame{
  position:relative;border:3px solid var(--ink);border-radius:var(--radius);
  overflow:hidden;background:#000;box-shadow:0 6px 0 rgba(42,37,32,.85);
  aspect-ratio:16/9;
}
.movie-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.movie-frame[role="button"]{cursor:pointer}
.movie-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.movie-play{position:absolute;inset:0;margin:auto;width:84px;height:84px;border-radius:50%;
  background:rgba(214,69,48,.94);box-shadow:0 6px 18px rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;transition:transform .15s ease,background .15s ease}
.movie-frame:hover .movie-play,.movie-frame:focus-visible .movie-play{transform:scale(1.09);background:var(--red)}
.movie-play i{width:0;height:0;border-style:solid;border-width:15px 0 15px 25px;border-color:transparent transparent transparent #fff;margin-left:6px}
.movie-note{text-align:center;font-size:.82rem;color:var(--ink-soft);margin-top:12px}
