/* ============================================================
   素敵会 縁日 ｜ styles.css
   色：朱・赤・提灯の黄・生成り・墨
   ============================================================ */

:root{
  --shu:      #C8402C;   /* 朱 */
  --shu-dark: #9E2C1D;   /* 深朱 */
  --aka:      #E15A3C;   /* 赤 */
  --ki:       #E8A32C;   /* 提灯の黄 */
  --ki-pale:  #F2D08A;   /* 淡い黄 */
  --kinari:   #FBF5EA;   /* 生成り */
  --kinari-d: #F3E9D7;   /* 濃い生成り */
  --sumi:     #2C2620;   /* 墨 */
  --sumi-sub: #6B6053;   /* 薄墨 */
  --yoru:     #1B1A22;   /* 夜 */
  --yoru-2:   #2A2833;
  --line:     rgba(44,38,32,.14);

  --mincho: "Shippori Mincho", "Yu Mincho", "Hiragino Mincho ProN", serif;
  --maru:   "Zen Maru Gothic", "Hiragino Maru Gothic ProN", "Yu Gothic", sans-serif;
  --latin:  "EB Garamond", serif;

  --ease: cubic-bezier(.22,.9,.28,1);
}

*{ margin:0; padding:0; box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
html,body{ max-width:100%; overflow-x:hidden; }

body{
  background:var(--kinari);
  color:var(--sumi);
  font-family:var(--maru);
  font-size:16px;
  line-height:2;
  letter-spacing:.03em;
  font-feature-settings:"palt";
  -webkit-font-smoothing:antialiased;
  /* 和紙のテクスチャ（極薄のノイズ＋ムラ） */
  background-image:
    radial-gradient(900px 480px at 88% 4%,  rgba(232,163,44,.07), transparent 62%),
    radial-gradient(760px 420px at 6% 96%,  rgba(200,64,44,.05),  transparent 62%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.035'/%3E%3C/svg%3E");
  background-attachment:fixed, fixed, scroll;
}

img{ max-width:100%; display:block; height:auto; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:none; cursor:pointer; }

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--sumi); color:#fff; padding:.6rem 1rem;
}
.skip-link:focus{ left:0; }

:focus-visible{ outline:2px solid var(--shu); outline-offset:3px; }

/* ---------- レイアウト ---------- */
.wrap  { width:100%; max-width:1080px; margin:0 auto; padding:0 clamp(1.15rem,5vw,2rem); }
.wrap-n{ width:100%; max-width:660px;  margin:0 auto; padding:0 clamp(1.15rem,5vw,2rem); }

.sec{ padding:clamp(4.2rem,11vw,7rem) 0; position:relative; }

.eyebrow{
  font-family:var(--latin);
  font-size:.7rem; letter-spacing:.42em; text-indent:.42em;
  color:var(--shu); text-transform:uppercase;
  margin-bottom:1rem;
}
.sec-title{
  font-family:var(--mincho);
  font-size:clamp(1.55rem,6.2vw,2.35rem);
  font-weight:700; line-height:1.65; letter-spacing:.06em;
  margin-bottom:1.5rem;
}
.sec-lead{
  font-size:.9rem; color:var(--sumi-sub); line-height:2.1;
  margin-bottom:2.4rem;
}

/* ---------- ボタン ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5em;
  font-family:var(--maru); font-weight:700;
  font-size:1rem; letter-spacing:.08em;
  padding:1.05rem 2.2rem;
  border-radius:999px;
  position:relative; overflow:hidden;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), background .3s;
  will-change:transform;
}
.btn-primary{
  background:linear-gradient(135deg, var(--aka), var(--shu) 55%, var(--shu-dark));
  color:#fff;
  box-shadow:0 10px 26px -12px rgba(158,44,29,.75);
  animation:btnPulse 3.4s ease-in-out infinite;
}
@keyframes btnPulse{
  0%,100%{ box-shadow:0 10px 26px -12px rgba(158,44,29,.75); }
  50%    { box-shadow:0 14px 34px -12px rgba(200,64,44,.9); }
}
.btn-primary::after{
  content:""; position:absolute; top:0; left:-130%;
  width:55%; height:100%;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent);
  transform:skewX(-20deg);
}
.btn-primary:hover, .btn-primary:focus-visible{ transform:translateY(-2px); }
.btn-primary:hover::after{ animation:shine .85s ease forwards; }
.btn-primary:active{ transform:translateY(1px) scale(.985); }
@keyframes shine{ to{ left:140%; } }

.btn-lg{ font-size:1.08rem; padding:1.2rem 2.6rem; }

.btn-ghost{
  border:1.5px solid var(--shu);
  color:var(--shu-dark);
  background:transparent;
}
.btn-ghost:hover, .btn-ghost:focus-visible{
  background:var(--shu); color:#fff; transform:translateY(-2px);
}
.btn-ghost.small{ font-size:.88rem; padding:.85rem 1.6rem; }

.btn-ig{
  background:linear-gradient(120deg,#F09433,#DC2743 45%,#BC1888);
  color:#fff;
  box-shadow:0 10px 24px -14px rgba(188,24,136,.9);
}
.btn-ig:hover{ transform:translateY(-2px); }
.ig-ico{ width:1.15em; height:1.15em; display:inline-block; }
.ig-ico svg{ width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:2; }

.btn-mini{
  font-size:.82rem; font-weight:700;
  padding:.5rem 1.1rem; border-radius:999px;
  background:var(--shu); color:#fff;
  transition:transform .25s var(--ease), background .25s;
}
.btn-mini:hover{ background:var(--shu-dark); transform:translateY(-1px); }

/* ============================================================
   ローディング
   ============================================================ */
#opening{
  position:fixed; inset:0; z-index:300;
  background:var(--yoru);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1.6rem;
  animation:opOut .9s ease 2.3s forwards;
}
.op-lanterns{ display:flex; gap:1.1rem; }
.op-l{
  width:26px; height:34px; border-radius:46% 46% 42% 42%;
  background:radial-gradient(circle at 50% 35%, #FFD98A, var(--ki) 62%, #C2761B);
  opacity:0; transform:translateY(-10px);
  animation:opLantern .7s var(--ease) forwards;
  box-shadow:0 0 22px rgba(232,163,44,.6);
}
.op-l.l2{ animation-delay:.22s; } .op-l.l3{ animation-delay:.44s; }
@keyframes opLantern{ to{ opacity:1; transform:none; } }
.op-text{
  font-family:var(--mincho); font-weight:700;
  color:#F6EAD2; letter-spacing:.42em; text-indent:.42em;
  font-size:1.05rem; opacity:0;
  animation:opFade .9s ease .85s forwards;
}
@keyframes opFade{ to{ opacity:1; } }
@keyframes opOut{ to{ opacity:0; visibility:hidden; } }
body.op-lock{ overflow:hidden; }

/* ============================================================
   ヘッダー
   ============================================================ */
.site-header{
  position:fixed; top:0; left:0; right:0; z-index:90;
  display:flex; align-items:center; justify-content:space-between;
  padding:.65rem clamp(.9rem,4vw,1.6rem);
  background:rgba(251,245,234,0);
  backdrop-filter:blur(0px);
  transform:translateY(-110%);
  transition:transform .45s var(--ease), background .45s, backdrop-filter .45s, box-shadow .45s;
}
.site-header.show{
  transform:none;
  background:rgba(251,245,234,.92);
  backdrop-filter:blur(8px);
  box-shadow:0 1px 0 var(--line);
}
.brand{ display:flex; align-items:center; gap:.5rem; }
.brand-mark{ width:28px; height:28px; transition:transform 1.1s var(--ease); }
.brand:hover .brand-mark{ transform:rotate(360deg); }
.brand-name{ font-family:var(--mincho); font-weight:700; font-size:.95rem; letter-spacing:.12em; }

/* ============================================================
   SECTION 1 ヒーロー
   ============================================================ */
.hero{
  position:relative;
  min-height:100svh;
  display:flex; align-items:center; justify-content:center;
  padding:6.5rem 1.2rem 5.5rem;
  background:
    radial-gradient(120% 70% at 50% 108%, rgba(200,64,44,.38), transparent 62%),
    radial-gradient(90% 55% at 50% -8%,  rgba(232,163,44,.22), transparent 60%),
    linear-gradient(180deg, #14131A 0%, var(--yoru) 38%, var(--yoru-2) 100%);
  overflow:hidden;
  color:#F7F0E2;
}

/* 星 */
.hero-sky{ position:absolute; inset:0; pointer-events:none; }
.star{
  position:absolute; width:3px; height:3px; border-radius:50%;
  background:#FFF3D6; opacity:.7;
  animation:twinkle 4s ease-in-out infinite;
}
.star.s1{ top:12%; left:16%; } .star.s2{ top:22%; left:78%; animation-delay:.7s; }
.star.s3{ top:34%; left:34%; animation-delay:1.4s; } .star.s4{ top:16%; left:58%; animation-delay:2.1s; }
.star.s5{ top:46%; left:88%; animation-delay:.3s; } .star.s6{ top:28%; left:8%;  animation-delay:1.8s; }
@keyframes twinkle{ 0%,100%{ opacity:.25; } 50%{ opacity:.9; } }

/* 花火（ごく控えめ） */
.firework{
  position:absolute; width:3px; height:3px; border-radius:50%;
  background:transparent;
  box-shadow:
     0 -26px 0 -1px rgba(242,208,138,.85),  0 26px 0 -1px rgba(242,208,138,.85),
    -26px 0 0 -1px rgba(242,208,138,.85),  26px 0 0 -1px rgba(242,208,138,.85),
    -18px -18px 0 -1px rgba(232,163,44,.7), 18px -18px 0 -1px rgba(232,163,44,.7),
    -18px  18px 0 -1px rgba(232,163,44,.7), 18px  18px 0 -1px rgba(232,163,44,.7);
  opacity:0;
  animation:fw 7s ease-out infinite;
}
.firework.f1{ top:20%; left:24%; }
.firework.f2{ top:14%; left:74%; animation-delay:3.5s; }
@keyframes fw{
  0%{ opacity:0; transform:scale(.25); }
  8%{ opacity:1; transform:scale(1); }
  26%{ opacity:0; transform:scale(1.5); }
  100%{ opacity:0; transform:scale(1.5); }
}

/* 提灯 */
.lantern-row{
  position:absolute; top:0; left:0; right:0;
  display:flex; justify-content:space-around; align-items:flex-start;
  padding:0 .4rem; pointer-events:none;
}
.lantern-row::before{
  content:""; position:absolute; top:14px; left:0; right:0; height:1px;
  background:rgba(242,208,138,.4);
}
.lantern{
  position:relative; width:26px; height:36px; margin-top:14px;
  border-radius:46% 46% 40% 40%;
  background:linear-gradient(180deg,#F0B24A,#C8402C 78%);
  box-shadow:0 0 24px rgba(232,163,44,.55), inset 0 -6px 10px rgba(0,0,0,.18);
  transform-origin:top center;
  animation:sway 5.5s ease-in-out infinite;
  opacity:0; animation-fill-mode:both;
}
.lantern::before, .lantern::after{
  content:""; position:absolute; left:50%; transform:translateX(-50%);
  width:16px; height:3px; background:#4A2A18; border-radius:1px;
}
.lantern::before{ top:-2px; } .lantern::after{ bottom:-2px; }
.lantern:nth-child(2n){ animation-duration:6.4s; height:31px; width:23px; }
.lantern:nth-child(3n){ animation-duration:7.1s; margin-top:20px; }
@keyframes sway{
  0%,100%{ transform:rotate(-3.5deg); opacity:1; }
  50%    { transform:rotate(3.5deg);  opacity:1; }
}
.lantern-row.small .lantern{ width:20px; height:27px; }

/* ヒーロー本体 */
.hero-inner{ position:relative; text-align:center; max-width:640px; }
.hero-logo{
  width:60px; height:60px; margin:0 auto 1.3rem;
  filter:drop-shadow(0 0 18px rgba(232,163,44,.55));
  opacity:0; animation:hIn 1s var(--ease) 2.5s forwards;
}
.hero-kicker{
  font-family:var(--mincho); font-weight:700;
  font-size:clamp(1rem,4vw,1.2rem);
  letter-spacing:.5em; text-indent:.5em;
  color:var(--ki-pale);
  margin-bottom:.4rem;
}
.hero-kicker span{ display:inline-block; opacity:0; animation:hIn .8s var(--ease) forwards; }
.hero-kicker span:nth-child(1){ animation-delay:2.7s; }
.hero-kicker span:nth-child(2){ animation-delay:2.85s; }
.hero-kicker span:nth-child(3){ animation-delay:3.0s; }

.hero-title{
  font-family:var(--mincho); font-weight:700;
  font-size:clamp(4rem,19vw,7rem);
  line-height:1.05; letter-spacing:.08em;
  color:#FFF6E3;
  text-shadow:0 0 42px rgba(232,163,44,.5), 0 0 90px rgba(200,64,44,.35);
  margin-bottom:1.3rem;
  opacity:0; animation:hTitle 1.3s var(--ease) 3.15s forwards;
}
@keyframes hTitle{ from{ opacity:0; transform:translateY(18px) scale(.94); } to{ opacity:1; transform:none; } }

.hero-meta{
  font-family:var(--latin);
  font-size:clamp(.95rem,3.6vw,1.1rem);
  letter-spacing:.14em; color:#F2D08A;
  display:flex; flex-wrap:wrap; justify-content:center; gap:.2rem .55rem;
  margin-bottom:.4rem;
  opacity:0; animation:hIn .9s var(--ease) 3.6s forwards;
}
.hero-meta em{ font-style:normal; font-size:.82em; letter-spacing:.2em; }
.hm-sep{ opacity:.5; }
.hero-place{
  font-size:.86rem; color:rgba(247,240,226,.8); letter-spacing:.08em;
  margin-bottom:2rem;
  opacity:0; animation:hIn .9s var(--ease) 3.75s forwards;
}
.hero-map{
  border-bottom:1px solid rgba(242,208,138,.5);
  padding-bottom:.12rem;
  transition:border-color .3s, color .3s;
}
.hero-map:hover, .hero-map:focus-visible{ border-color:var(--ki-pale); color:#FFF3D9; }
.hm-pin{ margin-left:.3em; font-size:.85em; }
.hero-free{
  display:inline-block; margin-left:.4rem;
  border:1px solid rgba(242,208,138,.6); border-radius:999px;
  padding:.05rem .7rem; font-size:.78rem; color:#F2D08A;
}

.hero-copy{
  font-family:var(--mincho); font-weight:700;
  font-size:clamp(1.35rem,6vw,1.9rem);
  line-height:1.8; letter-spacing:.06em;
  margin-bottom:1.1rem;
  opacity:0; animation:hIn 1.1s var(--ease) 3.95s forwards;
}
.hero-sub{
  font-size:clamp(.84rem,3.4vw,.95rem);
  line-height:2; color:rgba(247,240,226,.82);
  margin-bottom:2.3rem;
  opacity:0; animation:hIn 1.1s var(--ease) 4.2s forwards;
}
.hero-inner .btn{ opacity:0; animation:hIn 1s var(--ease) 4.45s forwards; }
.hero-note{
  margin-top:.9rem; font-size:.75rem; letter-spacing:.1em;
  color:rgba(247,240,226,.62);
  opacity:0; animation:hIn 1s var(--ease) 4.6s forwards;
}
@keyframes hIn{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }

.scroll-cue{
  position:absolute; bottom:1.4rem; left:0; right:0; text-align:center;
  font-family:var(--latin); font-size:.6rem; letter-spacing:.44em; text-indent:.44em;
  color:rgba(242,208,138,.75);
  opacity:0; animation:hIn 1s ease 5s forwards;
}
.scroll-cue::after{
  content:""; display:block; width:1px; height:34px; margin:.5rem auto 0;
  background:linear-gradient(rgba(242,208,138,.8), transparent);
  animation:cue 2.4s ease-in-out infinite;
}
@keyframes cue{
  0%{ transform:scaleY(0); transform-origin:top; }
  55%{ transform:scaleY(1); transform-origin:top; }
  56%{ transform-origin:bottom; }
  100%{ transform:scaleY(0); transform-origin:bottom; }
}

/* 波型の境目 */
.wave-top{
  height:46px; margin-top:-46px; position:relative; z-index:2;
  background:var(--kinari);
  -webkit-mask:radial-gradient(22px 24px at 22px -6px, transparent 98%, #000) repeat-x;
          mask:radial-gradient(22px 24px at 22px -6px, transparent 98%, #000) repeat-x;
  -webkit-mask-size:44px 46px; mask-size:44px 46px;
}

/* ============================================================
   SECTION 2 INTRODUCTION
   ============================================================ */
.intro{ text-align:center; }
.intro-body p{
  font-size:clamp(.92rem,3.7vw,1.02rem);
  line-height:2.35;
  margin-bottom:1.9rem;
  color:var(--sumi-sub);
}
.intro-body p.strong{
  color:var(--sumi); font-family:var(--mincho); font-weight:500;
  font-size:clamp(1rem,4.1vw,1.15rem);
}
/* --- 提灯と花火のイラスト --- */
.intro-scene{
  position:relative;
  margin:2.8rem auto 0;
  width:100%;
  max-width:560px;
  aspect-ratio:16/9;
  border-radius:18px;
  overflow:hidden;
  background:
    radial-gradient(120% 80% at 50% 118%, rgba(200,64,44,.34), transparent 60%),
    linear-gradient(180deg, #14131B 0%, #1E1D27 62%, #2A2631 100%);
  box-shadow:0 18px 40px -26px rgba(44,38,32,.55);
}

/* 星 */
.sc-star{
  position:absolute; width:2.5px; height:2.5px; border-radius:50%;
  background:#FFF3D6; opacity:.6;
  animation:scTwinkle 4.2s ease-in-out infinite;
}
.sc-star.a{ top:16%; left:12%; }
.sc-star.b{ top:26%; left:86%; animation-delay:.9s; }
.sc-star.c{ top:40%; left:30%; animation-delay:1.7s; }
.sc-star.d{ top:14%; left:62%; animation-delay:2.4s; }
.sc-star.e{ top:34%; left:74%; animation-delay:3.1s; }
@keyframes scTwinkle{ 0%,100%{ opacity:.2; } 50%{ opacity:.85; } }

/* 花火 */
.sc-fw{
  position:absolute; width:3px; height:3px; border-radius:50%;
  opacity:0;
  animation:scFw 6.5s ease-out infinite;
}
.sc-fw::before{
  content:""; position:absolute; inset:-1px;
  border-radius:50%;
  filter:drop-shadow(0 0 6px rgba(255,205,120,.85));
  box-shadow:
     0 -42px 0 0 #FFF0CC,    0 42px 0 0 #FFF0CC,
    -42px 0 0 0 #FFF0CC,    42px 0 0 0 #FFF0CC,
    -30px -30px 0 0 #F8C25A, 30px -30px 0 0 #F8C25A,
    -30px  30px 0 0 #F8C25A, 30px  30px 0 0 #F8C25A,
     0 -24px 0 -.5px #FFD98F, 0 24px 0 -.5px #FFD98F,
    -24px 0 0 -.5px #FFD98F, 24px 0 0 -.5px #FFD98F,
    -17px -17px 0 -.8px #E8A32C, 17px -17px 0 -.8px #E8A32C,
    -17px  17px 0 -.8px #E8A32C, 17px  17px 0 -.8px #E8A32C;
}
.sc-fw::after{
  content:""; position:absolute; left:50%; top:50%;
  width:6px; height:6px; margin:-3px 0 0 -3px;
  border-radius:50%;
  border:1.5px solid rgba(255,214,150,.6);
  animation:scRing 6.5s ease-out infinite;
}
.sc-fw.f1{ top:30%; left:23%; transform:scale(1.15); }
.sc-fw.f2{ top:22%; left:72%; animation-delay:2.2s; transform:scale(1.3); }
.sc-fw.f2::after{ animation-delay:2.2s; }
.sc-fw.f3{ top:41%; left:49%; animation-delay:4.3s; transform:scale(.85); }
.sc-fw.f3::after{ animation-delay:4.3s; }
@keyframes scFw{
  0%   { opacity:0; }
  6%   { opacity:1; }
  10%  { opacity:1; }
  26%  { opacity:0; }
  100% { opacity:0; }
}
.sc-fw::before{ animation:scBurst 6.5s ease-out infinite; }
.sc-fw.f2::before{ animation-delay:2.2s; }
.sc-fw.f3::before{ animation-delay:4.3s; }
@keyframes scBurst{
  0%   { transform:scale(.25); }
  8%   { transform:scale(1); }
  26%  { transform:scale(1.4); }
  100% { transform:scale(1.4); }
}
@keyframes scRing{
  0%   { opacity:0; width:6px; height:6px; margin:-3px 0 0 -3px; }
  6%   { opacity:.7; }
  26%  { opacity:0; width:130px; height:130px; margin:-65px 0 0 -65px; }
  100% { opacity:0; width:130px; height:130px; margin:-65px 0 0 -65px; }
}

/* 提灯の列 */
.sc-wire{
  position:absolute; top:0; left:-4%; right:-4%;
  display:flex; justify-content:space-around; align-items:flex-start;
}
.sc-wire::before{
  content:""; position:absolute; top:9px; left:0; right:0; height:1px;
  background:rgba(242,208,138,.38);
}
.sc-lantern{
  position:relative;
  width:15px; height:21px; margin-top:9px;
  border-radius:46% 46% 40% 40%;
  background:linear-gradient(180deg,#F5BC55,#C8402C 78%);
  box-shadow:0 0 14px rgba(232,163,44,.55), inset 0 -4px 7px rgba(0,0,0,.2);
  transform-origin:top center;
  animation:scSway 5.2s ease-in-out infinite;
}
.sc-lantern::before, .sc-lantern::after{
  content:""; position:absolute; left:50%; transform:translateX(-50%);
  width:9px; height:2px; background:#4A2A18; border-radius:1px;
}
.sc-lantern::before{ top:-1px; } .sc-lantern::after{ bottom:-1px; }
.sc-lantern:nth-child(2n){ animation-duration:6.1s; height:18px; width:13px; }
.sc-lantern:nth-child(3n){ animation-duration:6.8s; margin-top:15px; }
@keyframes scSway{
  0%,100%{ transform:rotate(-4deg); }
  50%    { transform:rotate(4deg); }
}

/* 人のシルエット */
.sc-people{
  position:absolute; left:0; right:0; bottom:0;
  width:100%; height:50%;
  opacity:.94;
}

@media (max-width:420px){
  .intro-scene{ aspect-ratio:3/2; }
  .sc-wire .sc-lantern:nth-child(n+6){ display:none; }
}

/* ============================================================
   SECTION 4 EXPERIENCE
   ============================================================ */
.exp-grid{
  list-style:none;
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(min(100%,150px), 1fr));
  gap:.8rem;
}
.exp-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:16px;
  padding:1.4rem 1rem 1.3rem;
  text-align:center;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s;
  cursor:default;
}
.exp-card:hover, .exp-card:focus-visible{
  transform:translateY(-5px);
  box-shadow:0 14px 30px -18px rgba(158,44,29,.45);
  border-color:rgba(200,64,44,.4);
}
.exp-card:active{ transform:translateY(-1px) scale(.99); }
.exp-ico{
  display:block; width:46px; height:46px; margin:0 auto .8rem;
  border-radius:50%;
  background:linear-gradient(135deg, var(--ki-pale), rgba(232,163,44,.35));
  display:grid; place-items:center;
}
.exp-ico svg{
  width:26px; height:26px;
  fill:none; stroke:var(--shu-dark); stroke-width:2;
  stroke-linecap:round; stroke-linejoin:round;
}
.exp-card h3{
  font-family:var(--mincho); font-size:1.05rem; font-weight:700;
  letter-spacing:.08em; margin-bottom:.4rem;
}
.exp-card p{ font-size:.78rem; line-height:1.9; color:var(--sumi-sub); letter-spacing:0; }

/* 中盤CTA */
.cta-mid{
  text-align:center;
  padding:clamp(3rem,9vw,4.5rem) 0;
  background:
    radial-gradient(70% 100% at 50% 0%, rgba(232,163,44,.16), transparent 70%),
    var(--kinari-d);
}
.cta-mid-copy{
  font-family:var(--mincho); font-weight:700;
  font-size:clamp(1.05rem,4.4vw,1.3rem);
  margin-bottom:1.5rem;
}
.cta-mid .hero-note{ color:var(--sumi-sub); opacity:1; animation:none; }

/* ============================================================
   SECTION 5 出展者
   ============================================================ */
.ex-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(min(100%,270px), 1fr));
  gap:1.1rem;
}
.ex-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:18px;
  overflow:hidden;
  display:flex; flex-direction:column;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease);
}
.ex-card:hover{ transform:translateY(-6px); box-shadow:0 18px 38px -22px rgba(158,44,29,.5); }
.ex-photo{
  aspect-ratio:4/3;
  background:
    repeating-linear-gradient(45deg, rgba(232,163,44,.10) 0 10px, transparent 10px 20px),
    var(--kinari-d);
  display:grid; place-items:center;
  border-bottom:1px solid var(--line);
  overflow:hidden;
}
.ex-photo img{ width:100%; height:100%; object-fit:cover; }
/* ロゴ画像は切らずに全体を見せる */
.ex-photo.is-logo{ background:none; }
.ex-photo.is-logo img{ object-fit:contain; }
/* ロゴを押すと公式サイトへ */
a.ex-photo{ display:grid; place-items:center; position:relative; cursor:pointer; }
a.ex-photo img{ transition:transform .5s var(--ease); }
a.ex-photo::after{
  content:""; position:absolute; inset:0;
  background:rgba(200,64,44,0);
  transition:background .35s;
}
a.ex-photo:hover img, a.ex-photo:focus-visible img{ transform:scale(1.04); }
a.ex-photo:hover::after{ background:rgba(200,64,44,.05); }
.ex-ph{
  font-family:var(--latin);
  font-size:.7rem; letter-spacing:.24em;
  color:rgba(107,96,83,.55);
  text-align:center; line-height:1.9;
}
.ex-body{ padding:1.2rem 1.15rem 1.4rem; flex:1; display:flex; flex-direction:column; }
.ex-role{
  display:inline-block; align-self:flex-start;
  font-size:.7rem; letter-spacing:.06em; font-weight:700;
  color:var(--shu-dark); background:rgba(200,64,44,.1);
  padding:.2rem .7rem; border-radius:999px;
  margin-bottom:.7rem;
}
.ex-name{
  font-family:var(--mincho); font-size:1.12rem; font-weight:700;
  line-height:1.6; letter-spacing:.04em; margin-bottom:.15rem;
}
/* 見出しを押すと公式サイトへ */
.ex-name a{
  display:inline-flex; align-items:center; gap:.3em;
  transition:color .3s;
}
.ex-name a::after{
  content:"↗";
  font-family:var(--maru); font-size:.62em; font-weight:400;
  color:var(--shu); opacity:.55;
  transition:transform .35s var(--ease), opacity .3s;
}
.ex-name a:hover, .ex-name a:focus-visible{ color:var(--shu-dark); }
.ex-name a:hover::after{ transform:translate(2px,-2px); opacity:1; }

/* キャッチコピー */
.ex-catch{
  font-family:var(--mincho); font-weight:700;
  font-size:1rem; line-height:1.75; letter-spacing:.04em;
  color:var(--shu-dark);
  margin:.9rem 0 .7rem;
  padding-left:.85rem;
  position:relative;
}
.ex-catch::before{
  content:""; position:absolute; left:0; top:.35em; bottom:.35em;
  width:2px; border-radius:1px;
  background:linear-gradient(var(--ki), var(--shu));
}
.ex-person{ font-size:.78rem; color:var(--sumi-sub); margin-bottom:.8rem; }
/* 顔写真つきの名前 */
.ex-person-face{ display:flex; align-items:center; gap:.5rem; }
.ex-face + .ex-face{ margin-left:-10px; }
.ex-face.is-mark{ background:#fff; object-fit:contain; padding:2px; }
.ex-face{
  width:34px; height:34px; border-radius:50%;
  object-fit:cover; object-position:center 22%;
  border:1.5px solid var(--kinari-d);
  box-shadow:0 2px 8px -4px rgba(44,38,32,.4);
  flex:0 0 auto;
}
/* 当日の内容メモ */
.ex-note{
  margin-top:.8rem;
  font-size:.76rem; line-height:1.85;
  color:var(--shu-dark);
  background:rgba(200,64,44,.07);
  border-radius:8px;
  padding:.55rem .75rem;
}
.ex-desc{ font-size:.82rem; line-height:1.95; color:var(--sumi-sub); flex:1; }
.ex-todo{
  margin-top:.9rem; font-size:.7rem; letter-spacing:.08em;
  color:rgba(107,96,83,.7);
  border-top:1px dashed var(--line); padding-top:.7rem;
}
.ex-links{
  margin-top:1rem; padding-top:.8rem;
  border-top:1px dashed var(--line);
  display:flex; flex-wrap:wrap; gap:.4rem 1.1rem;
}
.ex-links a{
  font-size:.78rem; font-weight:700; color:var(--shu-dark);
  border-bottom:1px solid rgba(200,64,44,.3);
  padding-bottom:.08rem;
  transition:border-color .3s, color .3s;
}
.ex-links a:hover{ border-color:var(--shu); color:var(--shu); }
.ex-link{ margin-top:.7rem; font-size:.78rem; font-weight:700; color:var(--shu-dark); }
.ex-link:hover{ text-decoration:underline; }

/* ============================================================
   TIME SCHEDULE
   ============================================================ */
.schedule{ padding-top:clamp(3rem,8vw,5rem); }
.ts-wrap{
  border:1px solid var(--line);
  border-radius:16px;
  background:#fff;
  overflow:hidden;
  box-shadow:0 14px 34px -26px rgba(44,38,32,.45);
}
.ts-toggle{
  width:100%;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1.25rem 1.3rem;
  font-family:var(--mincho); font-weight:700;
  font-size:1rem; letter-spacing:.06em;
  color:var(--sumi);
  transition:background .3s, color .3s;
}
.ts-toggle:hover{ background:var(--kinari); color:var(--shu-dark); }
.ts-mark{ position:relative; flex:0 0 18px; width:18px; height:18px; }
.ts-mark::before, .ts-mark::after{
  content:""; position:absolute; top:50%; left:0;
  width:18px; height:2px; background:var(--shu);
  transform:translateY(-50%);
  transition:transform .35s var(--ease);
}
.ts-mark::after{ transform:translateY(-50%) rotate(90deg); }
.ts-toggle[aria-expanded="true"] .ts-mark::after{ transform:translateY(-50%) rotate(0deg); }

.ts-panel{ overflow:hidden; max-height:0; transition:max-height .5s var(--ease); }
.ts-inner{ padding:.2rem 1.3rem 1.6rem; }

.ts-block{ position:relative; padding:.9rem 0 .2rem 3.6rem; }
.ts-block::before{
  content:""; position:absolute; left:1.05rem; top:0; bottom:0;
  width:1px; background:var(--line);
}
.ts-block:last-of-type::before{ height:1.5rem; }
.ts-hour{
  position:absolute; left:0; top:.75rem;
  font-family:var(--latin); font-size:.82rem; font-weight:500;
  letter-spacing:.06em; color:var(--shu-dark);
  background:#fff; padding:.15rem 0;
  z-index:1;
}
.ts-block::after{
  content:""; position:absolute; left:.78rem; top:1.05rem;
  width:9px; height:9px; border-radius:50%;
  background:var(--ki); border:2px solid #fff;
  box-shadow:0 0 0 1px var(--line);
}
.ts-list{ list-style:none; }
.ts-row{
  display:flex; flex-wrap:wrap; gap:.1rem .8rem;
  padding:.55rem 0;
  border-bottom:1px dashed var(--line);
}
.ts-row:last-child{ border-bottom:none; }
.ts-time{
  font-family:var(--latin); font-size:.8rem; letter-spacing:.04em;
  color:var(--sumi-sub); flex:0 0 auto; min-width:6.2em;
}
.ts-act{ font-size:.88rem; line-height:1.75; color:var(--sumi); flex:1 1 60%; }
.ts-row.ts-open .ts-act,
.ts-row.ts-close .ts-act{ font-family:var(--mincho); font-weight:700; }
.ts-row.ts-hl{
  background:rgba(232,163,44,.12);
  border-radius:8px;
  padding:.6rem .7rem;
  margin:.2rem -.7rem;
  border-bottom:none;
}
.ts-row.ts-hl .ts-act{ font-family:var(--mincho); font-weight:700; color:var(--shu-dark); }
.ts-note{
  margin-top:1.4rem;
  font-size:.76rem; line-height:1.85; color:var(--sumi-sub);
}

@media (max-width:400px){
  .ts-block{ padding-left:3.2rem; }
  .ts-time{ min-width:100%; color:var(--shu-dark); font-weight:500; }
  .ts-act{ flex:1 1 100%; }
}

/* ============================================================
   SECTION 6 FOOD
   ============================================================ */
.food{
  background:
    radial-gradient(80% 60% at 100% 0%, rgba(200,64,44,.08), transparent 65%),
    var(--kinari-d);
  text-align:center;
}
.food-list{
  list-style:none; display:flex; flex-wrap:wrap; justify-content:center;
  gap:.7rem; margin-bottom:2.4rem;
}
.food-list li{
  display:flex; align-items:center; gap:.45rem;
  background:#fff; border:1px solid var(--line);
  border-radius:999px; padding:.6rem 1.25rem;
  font-family:var(--mincho); font-weight:500; font-size:.95rem;
  transition:transform .3s var(--ease);
}
.food-list li:hover{ transform:translateY(-3px) rotate(-1.2deg); }
.food-em{ font-size:1.15rem; line-height:1; }
.food-caution{
  font-size:.74rem; line-height:1.9; color:var(--sumi-sub);
  max-width:520px; margin:-1.4rem auto 2rem;
  opacity:.9;
}
.food-note{
  font-size:.88rem; line-height:2.1; color:var(--sumi-sub);
  background:#fff; border:1px solid var(--line);
  border-radius:14px; padding:1.4rem 1.2rem;
  max-width:560px; margin:0 auto;
}
.food-note strong{ color:var(--shu-dark); }
.food-small{ display:inline-block; margin-top:.5rem; font-size:.78rem; opacity:.85; }

/* ============================================================
   SECTION 8 開催概要
   ============================================================ */
.outline-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(min(100%,230px), 1fr));
  gap:.8rem;
}
.ol-card{
  background:#fff; border:1px solid var(--line);
  border-left:3px solid var(--shu);
  border-radius:12px;
  padding:1.1rem 1.15rem;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease);
}
.ol-card:hover{ transform:translateY(-3px); box-shadow:0 12px 26px -20px rgba(158,44,29,.5); }
.ol-card dt{
  font-size:.72rem; letter-spacing:.16em; font-weight:700;
  color:var(--shu-dark); margin-bottom:.35rem;
}
.ol-card dd{
  font-family:var(--mincho); font-weight:700;
  font-size:1.08rem; line-height:1.6;
}
.ol-venue{ border-left-color:var(--aka); }
.ol-map{
  display:inline-block; margin-top:.6rem;
  font-family:var(--maru); font-size:.78rem; font-weight:700;
  color:var(--shu-dark);
  border-bottom:1px solid rgba(200,64,44,.35);
  padding-bottom:.1rem;
  transition:border-color .3s;
}
.ol-map:hover{ border-color:var(--shu); }
.ol-sub{
  display:block; margin-top:.35rem;
  font-family:var(--maru); font-weight:400;
  font-size:.74rem; line-height:1.8; color:var(--sumi-sub);
}

/* ============================================================
   SECTION 10 こよりび
   ============================================================ */
.koyoribi{
  text-align:center;
  background:
    radial-gradient(70% 100% at 50% 100%, rgba(232,163,44,.14), transparent 70%),
    var(--kinari-d);
}
.ko-logo{ width:clamp(150px,38vw,190px); height:auto; margin:0 auto 1.3rem; }
.ko-body{ font-size:.92rem; line-height:2.2; color:var(--sumi-sub); margin-bottom:2rem; }

/* ============================================================
   SECTION 11 Instagram
   ============================================================ */
.insta{ text-align:center; }
.insta-body{ font-size:.92rem; line-height:2.2; color:var(--sumi-sub); margin-bottom:2rem; }
.insta-tag{
  margin-top:1.8rem; font-size:.8rem; line-height:2;
  color:var(--sumi-sub);
  background:var(--kinari-d); border:1px dashed var(--line);
  border-radius:14px; padding:1.1rem 1rem;
}
.insta-tag strong{ color:var(--shu-dark); }

/* ============================================================
   SECTION 12 FAQ
   ============================================================ */
.faq{ background:var(--kinari-d); }
/* FAQ全体の開閉 */
.faq-wrap{
  border:1px solid var(--line);
  border-radius:16px;
  background:#fff;
  overflow:hidden;
  box-shadow:0 14px 34px -26px rgba(44,38,32,.45);
}
.faq-toggle{
  width:100%;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1.25rem 1.3rem;
  font-family:var(--mincho); font-weight:700;
  font-size:1rem; letter-spacing:.06em;
  color:var(--sumi);
  transition:background .3s, color .3s;
}
.faq-toggle:hover{ background:var(--kinari); color:var(--shu-dark); }
.faq-toggle[aria-expanded="true"] .ts-mark::after{ transform:translateY(-50%) rotate(0deg); }
.faq-panel{ overflow:hidden; max-height:0; transition:max-height .5s var(--ease); }
.faq-panel .faq-list{ padding:0 1.3rem 1.3rem; border-top:1px solid var(--line); }
.faq-panel .faq-item:last-child{ border-bottom:none; }
.faq-list{ display:flex; flex-direction:column; gap:.6rem; }
.faq-item{
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  transition:box-shadow .3s, border-color .3s;
}
.faq-item:has(.faq-q[aria-expanded="true"]){
  border-color:rgba(200,64,44,.32);
  box-shadow:0 10px 26px -20px rgba(158,44,29,.55);
}
.faq-q{
  width:100%; text-align:left;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1.1rem 1.1rem;
  font-family:var(--mincho); font-weight:500;
  font-size:.95rem; line-height:1.7;
  transition:color .25s;
}
.faq-q:hover{ color:var(--shu-dark); background:var(--kinari); }
.faq-q:active{ background:var(--kinari-d); }
.faq-mark{
  position:relative; flex:0 0 18px; width:18px; height:18px;
}
.faq-mark::before, .faq-mark::after{
  content:""; position:absolute; top:50%; left:0;
  width:18px; height:2px; background:var(--shu);
  transform:translateY(-50%);
  transition:transform .35s var(--ease);
}
.faq-mark::after{ transform:translateY(-50%) rotate(90deg); }
.faq-q[aria-expanded="true"] .faq-mark::after{ transform:translateY(-50%) rotate(0deg); }
.faq-a{
  overflow:hidden; max-height:0;
  transition:max-height .42s var(--ease);
}
.faq-a p{
  padding:0 1.1rem 1.2rem;
  font-size:.86rem; line-height:2.05; color:var(--sumi-sub);
}
.faq-a a{ color:var(--shu-dark); text-decoration:underline; }

/* ============================================================
   最終CTA
   ============================================================ */
.final-cta{
  position:relative; text-align:center;
  padding:clamp(4.2rem,11vw,6rem) 0 clamp(3.6rem,9vw,5rem);
  background:
    radial-gradient(110% 70% at 50% 110%, rgba(200,64,44,.45), transparent 62%),
    linear-gradient(180deg, var(--yoru) 0%, #221F2B 100%);
  color:#F7F0E2;
  overflow:hidden;
}
.fc-copy{
  font-family:var(--mincho); font-weight:700;
  font-size:clamp(1.5rem,6.4vw,2.2rem);
  line-height:1.8; letter-spacing:.05em;
  margin-bottom:2.2rem;
}
.final-cta .hero-note{ color:rgba(247,240,226,.65); opacity:1; animation:none; }

/* ============================================================
   協賛
   ============================================================ */
.partner{ text-align:center; padding:clamp(3.2rem,9vw,4.6rem) 0; }
.partner-lead{
  font-family:var(--mincho); font-weight:700;
  font-size:1.02rem; line-height:1.9; margin-bottom:1rem;
}
.partner-body{ font-size:.85rem; line-height:2.1; color:var(--sumi-sub); margin-bottom:1.8rem; }
.partner-h{ font-size:.8rem; letter-spacing:.16em; color:var(--shu-dark); margin-bottom:.6rem; }
.partner-list{ list-style:none; font-size:.88rem; color:var(--sumi-sub); margin-bottom:1.6rem; }

/* ============================================================
   フッター
   ============================================================ */
.site-footer{
  background:var(--sumi); color:#E8E0D2;
  text-align:center; padding:3.2rem 0 2.6rem;
}
.foot-logo{ width:clamp(105px,28vw,130px); height:auto; margin:0 auto 1.1rem; opacity:.95; }
.foot-title{ font-family:var(--mincho); font-weight:700; font-size:1.15rem; letter-spacing:.18em; }
.foot-date{ font-family:var(--latin); font-size:.78rem; letter-spacing:.2em; color:#C0B49F; margin-top:.4rem; }
.foot-org{ margin-top:1.6rem; font-size:.78rem; line-height:2.1; color:#BFB4A2; }
.foot-mail{ margin-top:1rem; font-size:.8rem; }
.foot-mail a{ color:var(--ki-pale); text-decoration:underline; }
.foot-copy{ margin-top:1.6rem; font-size:.7rem; color:#8D8475; }

/* ============================================================
   スマホ固定CTA
   ============================================================ */
.sticky-cta{
  position:fixed; left:.6rem; right:.6rem; bottom:.6rem; z-index:80;
  display:flex; align-items:center; justify-content:space-between; gap:.7rem;
  background:rgba(28,26,34,.94);
  backdrop-filter:blur(8px);
  border-radius:999px;
  padding:.5rem .55rem .5rem 1.1rem;
  box-shadow:0 10px 30px -12px rgba(0,0,0,.6);
  transform:translateY(160%);
  transition:transform .45s var(--ease);
}
.sticky-cta.show{ transform:none; }
.sc-text{ font-size:.72rem; color:#E9E0D0; line-height:1.5; letter-spacing:.02em; }
.sc-text strong{ color:var(--ki-pale); }
.sc-btn{
  flex:0 0 auto;
  background:linear-gradient(135deg, var(--aka), var(--shu));
  color:#fff; font-weight:700; font-size:.82rem;
  padding:.62rem 1.25rem; border-radius:999px;
  transition:transform .25s var(--ease);
}
.sc-btn:active{ transform:scale(.96); }
@media (min-width:860px){ .sticky-cta{ display:none; } }

/* ============================================================
   スクロール出現
   ============================================================ */
.reveal{
  opacity:0; transform:translateY(22px);
  transition:opacity .85s var(--ease), transform .85s var(--ease);
}
.reveal.in{ opacity:1; transform:none; }
.exp-grid .reveal.in, .ex-grid .reveal.in,
.outline-grid .reveal.in, .past-grid .reveal.in,
.faq-list .reveal.in, .food-list .reveal.in{ transition-delay:var(--d, 0s); }

/* ============================================================
   レスポンシブ
   ============================================================ */
@media (min-width:760px){
  body{ font-size:16.5px; }
  .hero{ padding-top:7.5rem; }
  .lantern{ width:30px; height:42px; }
}
@media (max-width:400px){
  .lantern-row .lantern:nth-child(n+7){ display:none; }
  .exp-grid{ grid-template-columns:repeat(2,1fr); }
  .exp-card{ padding:1.3rem .7rem 1.2rem; }
  .exp-card p{ font-size:.73rem; }
  .past-grid{ grid-template-columns:repeat(2,1fr); }
}

/* ============================================================
   モーション軽減
   ============================================================ */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *, *::before, *::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  .reveal{ opacity:1 !important; transform:none !important; }
  .hero-logo,.hero-kicker span,.hero-title,.hero-meta,.hero-place,
  .hero-copy,.hero-sub,.hero-inner .btn,.hero-note,.scroll-cue,.lantern,
  .sc-lantern,.sc-star{ opacity:1 !important; }
  .sc-fw{ opacity:0 !important; }
  #opening{ display:none !important; }
}
