@charset "UTF-8";
/* =========================================================
   ラーテルイベント トップ（v2）
   参考: nasu-outback.net の型（丸角ウィンドウ動画ヒーロー・
   カラフルな有機ブロブ・波形シールCTA・丸ゴシック）を踏襲。
   配色はラーテル（グリーン主役）に置換、文章/写真/動画は自前。
   ========================================================= */

:root{
  --ink:#2b3a1a;         /* 緑みの黒 */
  --ink-soft:#5f6c4f;
  --green:#7FB53F;       /* ラーテルグリーン（主役） */
  --green-d:#5F9E2E;
  --coral:#FF6B5B;       /* シール・強調 */
  --coral-d:#E85544;
  --orange:#FFA630;
  --blue:#4EC5E0;
  --blue-l:#DDF0F7;
  --lime:#C7E06B;
  --pink:#FFC2D1;
  --cream:#FFF6E4;
  --paper:#F6FBEE;
  --white:#fff;
  --wrap:1180px;
  --e-back:cubic-bezier(.175,.885,.32,1.275);
  --e-quart:cubic-bezier(.165,.84,.44,1);
  --shadow:0 10px 30px rgba(43,58,26,.14);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--white);color:var(--ink);
  font-family:"Zen Maru Gothic","Hiragino Kaku Gothic ProN",sans-serif;
  font-weight:500;line-height:1.9;-webkit-font-smoothing:antialiased;overflow-x:clip;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3{margin:0;line-height:1.4}
p{margin:0 0 1em}p:last-child{margin:0}
ul{margin:0;padding:0;list-style:none}
.wrap{width:min(100% - 40px,var(--wrap));margin-inline:auto}
.en{font-family:"Nunito",sans-serif;font-weight:800}

/* ---------- blobs ---------- */
.blob{position:absolute;z-index:0;border-radius:46% 54% 62% 38%/47% 39% 61% 53%;animation:blobFloat 9s ease-in-out infinite;pointer-events:none}
@keyframes blobFloat{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-16px) rotate(8deg)}}

/* ---------- header ---------- */
.hd{position:fixed;top:0;left:0;right:0;z-index:60;display:flex;align-items:flex-start;justify-content:flex-end;padding:16px 18px;pointer-events:none}
.hd__card{pointer-events:auto;background:var(--white);border-radius:20px;box-shadow:var(--shadow);display:flex;align-items:center;gap:14px;padding:10px 14px}
.hd__logo{display:flex;align-items:center;gap:9px}
.hd__logo .paw{width:34px;height:34px;background:var(--green);border-radius:50%;display:grid;place-items:center;flex-shrink:0}
.hd__logo .paw svg{width:19px;height:19px;fill:#fff}
.hd__logo b{font-family:"Nunito";font-weight:900;font-size:18px;letter-spacing:.02em;color:var(--ink)}
.hd__logo small{display:block;font-size:9px;font-weight:700;color:var(--green-d);letter-spacing:.12em}
.burger{width:44px;height:44px;border-radius:12px;background:var(--coral);border:none;cursor:pointer;display:grid;place-items:center;gap:4px;box-shadow:0 4px 0 var(--coral-d)}
.burger span{display:block;width:20px;height:2.4px;background:#fff;border-radius:2px}

/* ---------- hero ---------- */
.hero{position:relative;padding:96px 16px 40px;background:var(--white);overflow:hidden}
.hero__frame{position:relative;max-width:1340px;margin:0 auto;border-radius:34px;overflow:hidden;
  aspect-ratio:16/9;min-height:520px;box-shadow:var(--shadow);z-index:2;background:#2b3a1a}
.hero__media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
/* video placeholder fallback (差し替え前提) */
.hero__ph{position:absolute;inset:0;z-index:0;
  background:linear-gradient(120deg,#6fae3a 0%,#4EC5E0 55%,#3f7d3a 100%);
  background-size:200% 200%;animation:phShift 12s ease infinite}
@keyframes phShift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
.hero__scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(20,30,12,.15),rgba(20,30,12,.5))}
.hero__vidmark{position:absolute;left:18px;top:16px;z-index:4;display:flex;align-items:center;gap:7px;
  background:rgba(255,255,255,.9);border-radius:999px;padding:5px 13px;font-size:11px;font-weight:700;color:var(--ink)}
.hero__vidmark .pl{width:16px;height:16px;border-radius:50%;background:var(--coral);display:grid;place-items:center}
.hero__vidmark .pl svg{width:8px;height:8px;fill:#fff}
/* white line-path overlay */
.hero__path{position:absolute;inset:0;z-index:2;width:100%;height:100%;pointer-events:none}
.hero__path path{fill:none;stroke:#fff;stroke-width:6;stroke-linecap:round;stroke-dasharray:0.1 26;opacity:.85}
/* hero copy */
.hero__in{position:absolute;z-index:3;left:0;right:0;bottom:0;top:0;display:flex;flex-direction:column;justify-content:center;padding:0 clamp(24px,6vw,80px);color:#fff}
.hero__ttl{font-weight:900;font-size:clamp(32px,6.4vw,84px);line-height:1.12;letter-spacing:.03em;text-shadow:0 4px 20px rgba(0,0,0,.28)}
.hero__ttl .em{color:var(--cream)}
.hero__sub{font-weight:700;font-size:clamp(15px,2.2vw,24px);margin-top:16px;letter-spacing:.06em;text-shadow:0 2px 12px rgba(0,0,0,.3)}
.hero__sns{position:absolute;left:18px;bottom:16px;z-index:4;display:flex;gap:10px}
.hero__sns a{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.92);display:grid;place-items:center}
.hero__sns svg{width:19px;height:19px;fill:var(--ink)}
/* wavy seal CTA */
.seal{position:absolute;right:clamp(16px,3vw,40px);bottom:clamp(16px,3vw,40px);z-index:5;
  width:clamp(104px,13vw,150px);aspect-ratio:1;background:var(--coral);color:#fff;
  display:grid;place-items:center;text-align:center;border-radius:46% 54% 54% 46%/54% 46% 54% 46%;
  box-shadow:0 8px 20px rgba(232,85,68,.4);animation:sealSpin 16s linear infinite;transition:transform .3s var(--e-back)}
.seal:hover{transform:scale(1.06)}
@keyframes sealSpin{0%,100%{border-radius:46% 54% 54% 46%/54% 46% 54% 46%}50%{border-radius:54% 46% 46% 54%/46% 54% 46% 54%}}
.seal b{font-weight:900;font-size:clamp(15px,1.7vw,20px);line-height:1.3}
.seal small{display:block;font-size:10px;font-weight:700;opacity:.92;margin-top:2px}
/* hero blobs */
.hero .b1{width:180px;height:180px;background:var(--lime);top:40px;left:-40px}
.hero .b2{width:130px;height:130px;background:var(--orange);bottom:-30px;left:18%;animation-delay:-3s}
.hero .b3{width:150px;height:150px;background:var(--blue);top:60px;right:-30px;animation-delay:-5s}
.hero .b4{width:110px;height:110px;background:var(--pink);bottom:20px;right:22%;animation-delay:-1.5s}
.scroll-cue{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);z-index:6;color:var(--green);animation:cue 1.8s ease-in-out infinite}
.scroll-cue svg{width:26px;height:26px}
@keyframes cue{0%,100%{transform:translateX(-50%) translateY(0);opacity:.5}50%{transform:translateX(-50%) translateY(7px);opacity:1}}

/* ---------- photo marquee ---------- */
.marquee{overflow:hidden;background:var(--green-d);padding:14px 0;border-block:4px solid var(--ink);display:flex}
.mq-track{display:flex;gap:14px;align-items:center;flex:none;animation:mq 40s linear infinite}
.mq-track img{height:118px;width:200px;object-fit:cover;border-radius:12px;flex:none}
.mq-word{font-family:"Nunito";font-weight:900;font-size:56px;color:#fff;white-space:nowrap;line-height:118px;letter-spacing:.02em;flex:none}
.mq-word .o{color:var(--cream)}
@keyframes mq{to{transform:translateX(calc(-50% - 7px))}}
@media(max-width:600px){.mq-track img{height:88px;width:150px}.mq-word{font-size:40px;line-height:88px}}

/* ---------- wavy divider ---------- */
.wave{display:block;width:100%;height:44px;margin-bottom:-1px}
.wave--up{margin-top:-1px;margin-bottom:0}
.wave path{fill:currentColor}

/* ---------- section base ---------- */
.section{position:relative;padding:92px 0;z-index:1}
.section.paper{background:var(--paper)}
.sec-head{text-align:center;margin-bottom:48px;position:relative;z-index:2}
.sec-ttl{display:inline-flex;flex-direction:column;align-items:center;gap:2px}
.sec-ttl .jp{font-weight:900;font-size:clamp(24px,4vw,38px);color:var(--green-d)}
.sec-ttl .en{font-family:"Nunito";font-weight:900;font-size:13px;letter-spacing:.22em;color:var(--coral);text-transform:uppercase}
.sec-lead{color:var(--ink-soft);font-size:15px;margin-top:12px}

/* ---------- news ---------- */
.news-list{max-width:820px;margin:0 auto;display:flex;flex-direction:column;gap:0;border-top:2px dashed var(--lime)}
.news-item{display:flex;align-items:center;gap:20px;padding:20px 8px;border-bottom:2px dashed var(--lime);transition:background .2s}
.news-item:hover{background:var(--paper)}
.news-thumb{width:96px;height:70px;border-radius:14px;flex-shrink:0;overflow:hidden;display:grid;place-items:center;font-size:30px}
.news-item:nth-child(3n+1) .news-thumb{background:var(--blue-l)}
.news-item:nth-child(3n+2) .news-thumb{background:#fde9c2}
.news-item:nth-child(3n) .news-thumb{background:var(--pink)}
.news-thumb img{width:100%;height:100%;object-fit:cover}
.news-meta{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.news-date{font-family:"Nunito";font-weight:800;font-size:13px;color:var(--ink-soft)}
.news-tag{font-size:11px;font-weight:700;color:#fff;background:var(--green);padding:3px 12px;border-radius:999px}
.news-title{font-weight:700;font-size:15.5px;color:var(--ink)}
.more-wrap{text-align:center;margin-top:40px}
.btn{display:inline-flex;align-items:center;gap:10px;font-weight:800;font-size:15px;color:#fff;background:var(--green);
  padding:15px 34px;border-radius:999px;box-shadow:0 6px 0 var(--green-d);transition:transform .2s var(--e-back),box-shadow .2s var(--e-back)}
.btn:hover{transform:translateY(-2px);box-shadow:0 8px 0 var(--green-d)}
.btn:active{transform:translateY(3px);box-shadow:0 3px 0 var(--green-d)}
.btn .dot{width:22px;height:22px;border-radius:50%;background:#fff;display:grid;place-items:center}
.btn .dot svg{width:12px;height:12px;fill:var(--green)}
.btn--soon{background:#c9cfc0;box-shadow:0 5px 0 #aab29d;cursor:default}
.btn--soon:hover{transform:none;box-shadow:0 5px 0 #aab29d}
.btn--coral{background:var(--coral);box-shadow:0 6px 0 var(--coral-d)}
.btn--coral:hover{box-shadow:0 8px 0 var(--coral-d)}
.btn--coral .dot svg{fill:var(--coral)}

/* ---------- events ---------- */
.ev-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
@media(max-width:1100px){.ev-grid{grid-template-columns:repeat(2,1fr)}}
.ev{background:#fff;border-radius:24px;overflow:hidden;box-shadow:var(--shadow);position:relative;transition:transform .25s var(--e-back)}
.ev:hover{transform:translateY(-6px)}
.ev__ph{aspect-ratio:16/11;display:grid;place-items:center;font-size:56px;position:relative;overflow:hidden}
.ev__ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .5s var(--e-quart)}
.ev:hover .ev__ph img{transform:scale(1.06)}
.ev:nth-child(1) .ev__ph{background:linear-gradient(135deg,var(--lime),var(--green))}
.ev:nth-child(2) .ev__ph{background:linear-gradient(135deg,#ffd98a,var(--orange))}
.ev:nth-child(3) .ev__ph{background:linear-gradient(135deg,var(--blue),#7fd4e8)}
.ev__date{position:absolute;top:14px;left:14px;background:#fff;color:var(--ink);font-family:"Nunito";font-weight:900;font-size:14px;padding:5px 14px;border-radius:999px}
.ev__live{position:absolute;top:14px;right:14px;background:var(--coral);color:#fff;font-weight:900;font-size:11px;padding:5px 12px;border-radius:999px;box-shadow:0 3px 0 var(--coral-d)}
a.ev{display:block}
.ev__body{padding:22px}
.ev__name{font-weight:900;font-size:20px;margin-bottom:6px}
.ev__place{font-size:13.5px;color:var(--ink-soft);font-weight:700}
.ev__more{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-weight:900;font-size:13.5px;
  color:#fff;background:var(--green);padding:10px 20px;border-radius:999px;box-shadow:0 4px 0 var(--green-d);
  transition:transform .2s var(--e-back),box-shadow .2s var(--e-back)}
.ev:hover .ev__more{transform:translateY(-2px);box-shadow:0 6px 0 var(--green-d)}
.ev__more .arw{transition:transform .2s}
.ev:hover .ev__more .arw{transform:translateX(4px)}
.ev__more--soon{background:#c9cfc0;box-shadow:0 4px 0 #aab29d;color:#fff}
.ev:hover .ev__more--soon{transform:none;box-shadow:0 4px 0 #aab29d}
/* 劇画イラスト用（RatelRun） */
.ev__ph--gekiga{background:linear-gradient(135deg,#FF7A2F,#D8230B)!important}
.ev__ph--gekiga img{object-fit:contain!important;padding:14px;filter:drop-shadow(0 6px 10px rgba(0,0,0,.3))}
/* スマホは2列。1枚が半分の幅になるので文字と余白も落とす（既定より後ろに置くこと） */
@media(max-width:620px){
  .ev-grid{grid-template-columns:1fr 1fr;gap:12px}
  .ev{border-radius:18px}
  .ev__body{padding:13px 12px 16px}
  .ev__name{font-size:14.5px;line-height:1.35;margin-bottom:3px}
  .ev__place{font-size:11px;line-height:1.65}
  .ev__date{font-size:11px;padding:4px 9px;top:9px;left:9px}
  .ev__live{font-size:9.5px;padding:4px 8px;top:9px;right:9px}
  .ev__more{margin-top:10px;padding:8px 13px;gap:5px;font-size:11.5px;white-space:nowrap}
}

/* ---------- contents (できること) ---------- */
.play-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
@media(max-width:900px){.play-grid{grid-template-columns:1fr 1fr}}
.play{background:#fff;border-radius:24px;overflow:hidden;box-shadow:var(--shadow);text-align:center;transition:transform .25s var(--e-back)}
.play:hover{transform:translateY(-6px) rotate(-1deg)}
.play__ph{aspect-ratio:1;display:grid;place-items:center;font-size:54px;overflow:hidden;position:relative}
.play__ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .5s var(--e-quart)}
.play:hover .play__ph img{transform:scale(1.07)}
.play:nth-child(4n+1) .play__ph{background:var(--blue-l)}
.play:nth-child(4n+2) .play__ph{background:#fdeed0}
.play:nth-child(4n+3) .play__ph{background:#e8f4cf}
.play:nth-child(4n) .play__ph{background:var(--pink)}
.play__body{padding:18px 16px 24px}
.play__en{font-family:"Nunito";font-weight:900;font-size:11px;letter-spacing:.1em;color:var(--coral)}
.play__ttl{font-weight:900;font-size:17px;margin:2px 0 6px}
.play__tx{font-size:12.5px;color:var(--ink-soft)}
/* スマホでも2列を保つ（既定より後ろに置くこと） */
@media(max-width:520px){
  .play-grid{gap:12px}
  .play{border-radius:18px}
  .play__body{padding:12px 10px 16px}
  .play__en{font-size:10px}
  .play__ttl{font-size:14px;margin:2px 0 4px}
  .play__tx{font-size:11px;line-height:1.65}
}

/* ---------- about ---------- */
.about{background:var(--green-d);color:#fff;position:relative;overflow:hidden}
.about .sec-ttl .jp{color:#fff}
.about .sec-ttl .en{color:var(--cream)}
.about__box{max-width:820px;margin:0 auto;background:rgba(255,255,255,.08);border-radius:26px;padding:44px 38px;text-align:center;position:relative;z-index:2}
.about__photo{width:100%;aspect-ratio:16/8;object-fit:cover;border-radius:18px;margin-bottom:26px;border:3px solid rgba(255,255,255,.22)}
.about__lead{font-weight:900;font-size:clamp(20px,3vw,28px);line-height:1.7;margin-bottom:16px}
.about__tx{color:rgba(255,255,255,.85);font-size:15px}
.about .b1{width:150px;height:150px;background:rgba(199,224,107,.4);top:-30px;left:-30px}
.about .b2{width:120px;height:120px;background:rgba(255,166,48,.4);bottom:-20px;right:-20px;animation-delay:-4s}

/* ---------- footer ---------- */
.ft{background:var(--ink);color:#e7eede;padding:56px 0 30px;text-align:center}
.ft__logo{display:inline-flex;align-items:center;gap:10px;margin-bottom:18px}
.ft__logo .paw{width:36px;height:36px;background:var(--green);border-radius:50%;display:grid;place-items:center}
.ft__logo .paw svg{width:20px;height:20px;fill:#fff}
.ft__logo b{font-family:"Nunito";font-weight:900;font-size:22px;color:#fff}
.ft__tel{font-family:"Nunito";font-weight:900;font-size:28px;color:var(--cream);letter-spacing:.02em}
.ft__sns{display:flex;gap:12px;justify-content:center;margin:20px 0}
.ft__sns a{width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.1);display:grid;place-items:center}
.ft__sns svg{width:20px;height:20px;fill:#e7eede}
.ft__cp{margin-top:26px;font-size:12px;color:rgba(231,238,222,.5)}

/* ============ GALLERY（横スクロール2段）============ */
.gallery{background:var(--paper);overflow:hidden}
.gal-rows{display:flex;flex-direction:column;gap:14px}
.gal-row{display:flex;gap:14px;width:max-content}
/* 軽量化: GPU合成のみ・hover演出なし・常時流しっぱなし */
.gal-row--a{animation:galFlow 70s linear infinite}
.gal-row--b{animation:galFlow 85s linear infinite reverse}
@keyframes galFlow{to{transform:translate3d(calc(-50% - 7px),0,0)}}
.gal-item{width:230px;height:160px;flex:none;border-radius:16px;overflow:hidden;
  box-shadow:var(--shadow);will-change:transform}
.gal-item img{width:100%;height:100%;object-fit:cover}
@media(max-width:600px){.gal-item{width:150px;height:110px}}

/* ============ ACCESS（マップ）============ */
.access{background:var(--white)}
.map-wrap{position:relative;border-radius:26px;overflow:hidden;box-shadow:var(--shadow);background:var(--blue-l)}
.map-svg{display:block;width:100%;height:auto}
/* ピン本体はgroupのtranslateを保持し、中の要素だけ動かす（座標飛び防止） */
.map-pin{cursor:pointer}
.map-pin .pin-inner{transition:transform .25s var(--e-back);transform-origin:center;transform-box:fill-box}
.map-pin:hover .pin-inner,.map-pin.active .pin-inner{transform:scale(1.18)}
.map-pin circle.pulse{animation:pinPulse 2.2s ease-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes pinPulse{0%{transform:scale(.7);opacity:.55}100%{transform:scale(2.4);opacity:0}}
.map-pin text{pointer-events:none}
.map-pin .pin-label{font-weight:900;paint-order:stroke fill;stroke:#fff;stroke-width:4px;stroke-linejoin:round}
.map-card{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:22px}
@media(max-width:900px){.map-card{grid-template-columns:repeat(2,1fr)}}
.mc{background:#fff;border:2px solid var(--blue-l);border-radius:16px;padding:16px 18px;transition:.25s var(--e-back);cursor:pointer}
.mc:hover,.mc.active{border-color:var(--green);transform:translateY(-4px);box-shadow:var(--shadow)}
.mc__no{font-family:"Nunito";font-weight:900;font-size:12px;color:var(--coral)}
.mc__ttl{font-weight:900;font-size:15.5px;margin:2px 0 4px}
.mc__pl{font-size:12.5px;color:var(--ink-soft);font-weight:700}
/* スマホでも2列を保つ（既定より後ろに置くこと） */
@media(max-width:520px){
  .map-card{grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
  .mc{padding:12px 13px;border-radius:14px}
  .mc__no{font-size:11px}
  .mc__ttl{font-size:13px;line-height:1.45;margin:1px 0 3px}
  .mc__pl{font-size:11px;line-height:1.6}
}

/* ============ JOIN（出店・協賛募集）============ */
.join{background:var(--cream);position:relative;overflow:hidden}
.join-grid{display:grid;gap:22px;max-width:440px;margin-inline:auto}
.jc{background:#fff;border-radius:24px;padding:32px 26px;text-align:center;box-shadow:var(--shadow);
  transition:transform .25s var(--e-back);position:relative;overflow:hidden}
.jc:hover{transform:translateY(-8px)}
.jc__ico{width:78px;height:78px;margin:0 auto 16px;border-radius:50%;display:grid;place-items:center;font-size:36px}
.jc:nth-child(1) .jc__ico{background:var(--lime)}
.jc:nth-child(2) .jc__ico{background:#ffd98a}
.jc:nth-child(3) .jc__ico{background:var(--blue-l)}
.jc__en{font-family:"Nunito";font-weight:900;font-size:11px;letter-spacing:.14em;color:var(--coral)}
.jc__ttl{font-weight:900;font-size:19px;margin:4px 0 8px}
.jc__tx{font-size:13.5px;color:var(--ink-soft);margin-bottom:18px;line-height:1.85}
button.btn{border:none;cursor:pointer;font-family:inherit}
button.btn:disabled{opacity:.6;cursor:default}

/* 出店パートナー登録の入口 */
.join-lead{background:#fff;border-radius:26px;box-shadow:var(--shadow);padding:36px 34px;margin-bottom:26px;text-align:center;position:relative;z-index:2}
.join-lead__en{font-family:"Nunito";font-weight:900;font-size:11px;letter-spacing:.16em;color:var(--coral)}
.join-lead__ttl{font-weight:900;font-size:clamp(21px,3.2vw,27px);margin:5px 0 10px;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}
.join-lead__ttl span{font-size:12px;font-weight:900;color:#fff;background:var(--green);padding:4px 13px;border-radius:999px;letter-spacing:.04em}
.join-lead__tx{font-size:14.5px;color:var(--ink-soft);max-width:620px;margin:0 auto 22px}
.join-merit{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:26px;text-align:left}
@media(max-width:760px){.join-merit{grid-template-columns:1fr;max-width:400px;margin-inline:auto}}
.join-merit li{background:var(--paper);border-radius:16px;padding:15px 18px;font-size:12.5px;color:var(--ink-soft);line-height:1.75}
.join-merit b{display:block;font-size:14px;color:var(--green-d);margin-bottom:2px}
.join-note{font-size:11.5px;color:var(--ink-soft);margin-top:14px}

/* ---------- 登録モーダル ---------- */
.modal__box.modal__box--form{max-width:560px;padding:0 0 28px}
.reg-hd{padding:34px 30px 18px;border-bottom:2px dashed var(--lime);text-align:center}
.reg-hd__en{font-family:"Nunito";font-weight:900;font-size:11px;letter-spacing:.16em;color:var(--coral)}
.reg-hd__ttl{font-weight:900;font-size:22px;margin:5px 0 9px;color:var(--ink)}
.reg-hd__tx{font-size:13px;color:var(--ink-soft);line-height:1.8}
.reg-form{padding:24px 30px 0}
.cm-field label em{font-style:normal;font-size:10.5px;font-weight:900;color:#fff;background:var(--coral);padding:2px 8px;border-radius:999px;margin-left:8px;vertical-align:2px}
.cm-field label .cm-sub{font-size:11px;font-weight:700;color:var(--ink-soft);margin-left:8px}
.cm-hint{font-size:11.5px;color:var(--ink-soft);margin:6px 0 0}
.reg-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.reg-agree{margin-top:4px}
.reg-agree em{font-style:normal;font-size:10.5px;font-weight:900;color:#fff;background:var(--coral);padding:2px 8px;border-radius:999px;margin-left:8px}
.reg-err{background:#ffecea;border:2px solid var(--coral);border-radius:12px;padding:11px 14px;margin:16px 0 0;font-size:12.5px;font-weight:700;color:var(--coral-d);line-height:1.7}
.reg-actions{margin-top:20px;text-align:center}
.reg-note{font-size:11px;color:var(--ink-soft);line-height:1.8;margin-top:16px;text-align:center}
.reg-done{padding:44px 34px 10px;text-align:center}
.reg-done__ico{font-size:46px;margin-bottom:10px}
.reg-done__ttl{font-weight:900;font-size:20px;margin-bottom:12px;color:var(--green-d)}
.reg-done__tx{font-size:13.5px;color:var(--ink-soft);line-height:1.9;margin-bottom:14px}
.reg-done__tx a{color:var(--green-d);font-weight:700;text-decoration:underline}
.reg-done .btn{margin-top:8px}
.reg-next{margin:22px 0 4px;padding:22px 18px;background:var(--paper);border-radius:18px;border:2px dashed var(--lime)}
.reg-next__ttl{font-weight:900;font-size:15.5px;color:var(--green-d);margin-bottom:8px}
.reg-next__tx{font-size:12.5px;color:var(--ink-soft);line-height:1.85;margin-bottom:16px}
.reg-next__note{font-size:11px;color:var(--ink-soft);margin-top:12px}
@media(max-width:600px){
  .join-lead{padding:28px 20px}
  .reg-hd{padding:28px 20px 16px}
  .reg-form{padding:20px 20px 0}
  .reg-done{padding:36px 22px 10px}
}

/* ============ INSTAGRAM ============ */
.insta{background:var(--paper)}
.ig-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;max-width:840px;margin-inline:auto}
@media(max-width:700px){.ig-grid{grid-template-columns:repeat(2,1fr);gap:10px}}
.ig-item{position:relative;aspect-ratio:1;border-radius:14px;overflow:hidden;display:block;background:var(--blue-l)}
.ig-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--e-quart)}
.ig-item:hover img{transform:scale(1.1)}
.ig-item::after{content:"";position:absolute;inset:0;background:rgba(43,58,26,0);transition:background .3s}
.ig-item:hover::after{background:rgba(43,58,26,.28)}
.ig-item .ig-ico{position:absolute;inset:0;margin:auto;width:30px;height:30px;fill:#fff;opacity:0;transition:opacity .3s;z-index:2}
.ig-item:hover .ig-ico{opacity:1}

/* ============ 応援隊カードメーカー ============ */
/* overflow:clip はスクロールコンテナを作らないので、中の sticky が生きる */
.card-maker{background:linear-gradient(160deg,#5F9E2E,#2f6b1f);color:#fff;position:relative;overflow:hidden;overflow:clip}
.card-maker .sec-ttl .jp{color:#fff}
.card-maker .sec-ttl .en{color:var(--cream)}
.card-maker .sec-lead{color:rgba(255,255,255,.85)}
.cm-wrap{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:30px;align-items:start;
  max-width:900px;margin:0 auto;position:relative;z-index:2}
.cm-form{background:#fff;border-radius:22px;padding:24px;color:var(--ink);box-shadow:var(--shadow)}
.cm-field{margin-bottom:16px}
.cm-field label{display:block;font-weight:900;font-size:13px;margin-bottom:6px}
.cm-field input[type=text],.cm-field input[type=email],.cm-field input[type=date],.cm-field select{
  width:100%;border:2px solid var(--blue-l);border-radius:12px;padding:11px 13px;
  font-family:inherit;font-size:15px;background:var(--paper);color:var(--ink);-webkit-appearance:none;appearance:none}
.cm-field input:focus,.cm-field select:focus{outline:none;border-color:var(--green)}
.cm-row{display:grid;grid-template-columns:1fr 96px;gap:12px}
.cm-field--no input{text-align:center;font-family:"Nunito";font-weight:900}
.cm-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}
.chip{border:2px solid var(--blue-l);background:var(--paper);color:var(--ink);border-radius:999px;
  padding:6px 13px;font-family:inherit;font-size:12.5px;font-weight:800;cursor:pointer;transition:.15s}
.chip:hover{border-color:var(--green);background:#eef7e2}
.chip.on{background:var(--green);border-color:var(--green);color:#fff}
.cm-checks{display:flex;flex-direction:column;gap:8px}
.cm-check{display:flex;align-items:center;gap:9px;background:var(--paper);border:2px solid var(--blue-l);
  border-radius:12px;padding:9px 12px;cursor:pointer;transition:.2s}
.cm-check:has(input:checked){border-color:var(--green);background:#eef7e2}
.cm-check input{width:19px;height:19px;accent-color:var(--green);flex-shrink:0;margin:0;cursor:pointer}
.cm-check span{font-size:13px;font-weight:700}
.cm-file{display:flex;align-items:center;gap:10px}
.cm-file label.fake{background:var(--green);color:#fff;border-radius:999px;padding:10px 18px;font-weight:900;
  font-size:13px;cursor:pointer;box-shadow:0 4px 0 var(--green-d);white-space:nowrap}
.cm-file input[type=file]{display:none}
.cm-file span{font-size:12px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cm-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.cm-preview{display:flex;flex-direction:column;align-items:center;gap:14px}
#cardCanvas{width:100%;max-width:330px;height:auto;border-radius:18px;box-shadow:0 20px 40px rgba(0,0,0,.3);background:#fff}
.cm-note{font-size:11.5px;color:rgba(255,255,255,.75);text-align:center;line-height:1.8;
  max-width:900px;margin:16px auto 0;position:relative;z-index:2}
.card-maker .blob{opacity:.25}
/* スマホではプレビューを入力欄の「上」に置く（追従はさせない）。
   sticky で貼り付けると常に画面の4割を占めて入力の邪魔になるため、位置だけ入れ替える。
   #cardCanvas の既定値を上書きするので、この指定は必ず既定より後ろに置くこと */
@media(max-width:820px){
  .cm-wrap{display:flex;flex-direction:column;align-items:stretch;gap:18px}
  .cm-preview{order:-1}
  #cardCanvas{width:auto;max-width:100%;height:min(46vh,400px);aspect-ratio:1080/1920;
    border-radius:14px;box-shadow:0 12px 26px rgba(0,0,0,.3)}
  .cm-form{padding:18px 16px}
  .cm-field{margin-bottom:13px}
  .cm-checks{gap:6px}
  .cm-check{padding:8px 11px}
}

/* ============ 足あと（セクション間の演出）============ */
.paws{position:relative;height:78px;pointer-events:none;overflow:hidden}
.paws svg{position:absolute;width:30px;height:30px;fill:var(--green);opacity:0}
.paws.in svg{animation:pawStep .5s ease forwards}
.paws.in svg:nth-child(1){animation-delay:.05s}
.paws.in svg:nth-child(2){animation-delay:.2s}
.paws.in svg:nth-child(3){animation-delay:.35s}
.paws.in svg:nth-child(4){animation-delay:.5s}
.paws.in svg:nth-child(5){animation-delay:.65s}
.paws.in svg:nth-child(6){animation-delay:.8s}
@keyframes pawStep{0%{opacity:0;transform:scale(.5)}60%{opacity:.55;transform:scale(1.1)}100%{opacity:.42;transform:scale(1)}}

/* ============ 次回イベント カウントダウンバッジ ============ */
.cdbadge{position:fixed;left:16px;bottom:16px;z-index:55;background:#fff;border-radius:18px;
  box-shadow:0 8px 24px rgba(43,58,26,.22);padding:11px 16px;display:flex;align-items:center;gap:11px;
  transform:translateY(140%);transition:transform .5s var(--e-back);max-width:calc(100vw - 32px)}
.cdbadge.show{transform:none}
.cdbadge__paw{width:38px;height:38px;border-radius:50%;background:var(--coral);display:grid;place-items:center;flex-shrink:0;
  animation:cdWiggle 2.6s ease-in-out infinite}
.cdbadge__paw svg{width:20px;height:20px;fill:#fff}
@keyframes cdWiggle{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}
.cdbadge__lb{font-size:10.5px;font-weight:900;color:var(--ink-soft);letter-spacing:.04em}
.cdbadge__ev{font-size:13px;font-weight:900;color:var(--ink);line-height:1.3}
.cdbadge__num{font-family:"Nunito";font-weight:900;color:var(--coral)}
.cdbadge__close{border:none;background:none;cursor:pointer;color:var(--ink-soft);font-size:17px;line-height:1;padding:2px 2px 2px 4px;flex-shrink:0}
@media(max-width:600px){.cdbadge{left:10px;right:10px;bottom:10px;padding:9px 12px}.cdbadge__ev{font-size:12px}}

/* ---------- menu overlay ---------- */
.menu{position:fixed;inset:0;z-index:200;background:var(--green-d);color:#fff;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:40px;
  opacity:0;visibility:hidden;transform:scale(1.04);transition:opacity .35s var(--e-quart),transform .35s var(--e-quart),visibility .35s}
.menu.open{opacity:1;visibility:visible;transform:none}
.menu__close{position:absolute;top:20px;right:20px;width:52px;height:52px;border-radius:16px;background:var(--coral);
  border:none;cursor:pointer;color:#fff;box-shadow:0 5px 0 var(--coral-d);display:grid;place-items:center;z-index:2}
.menu__close svg{width:22px;height:22px;stroke:#fff;stroke-width:2.6;fill:none}
.menu a.mlink{position:relative;z-index:2;font-weight:900;font-size:clamp(24px,4.6vw,40px);color:#fff;text-align:center;line-height:1.1;transition:transform .2s var(--e-back)}
.menu a.mlink:hover{transform:translateY(-2px);color:var(--cream)}
.menu a.mlink small{display:block;font-family:"Nunito";font-weight:800;font-size:11px;color:var(--cream);letter-spacing:.22em;margin-top:2px}
.menu__sns{display:flex;gap:14px;margin-top:14px;z-index:2}
.menu__sns a{width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.14);display:grid;place-items:center}
.menu__sns svg{width:22px;height:22px;fill:#fff}
.menu .blob{opacity:.35}
.menu .mb1{width:200px;height:200px;background:var(--lime);top:-50px;left:-50px}
.menu .mb2{width:150px;height:150px;background:var(--orange);bottom:-40px;right:-30px;animation-delay:-3s}
body.locked{overflow:hidden}

/* ---------- news modal ---------- */
.news-item{cursor:pointer}
.modal{position:fixed;inset:0;z-index:210;display:none;align-items:center;justify-content:center;padding:20px}
.modal.open{display:flex}
.modal__ov{position:absolute;inset:0;background:rgba(37,48,26,.6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.modal__box{position:relative;z-index:1;background:#fff;border-radius:24px;max-width:640px;width:100%;max-height:86vh;overflow:auto;box-shadow:0 30px 60px rgba(0,0,0,.35)}
.modal__thumb{width:100%;aspect-ratio:16/7;object-fit:cover}
.modal__close{position:absolute;top:14px;right:14px;width:40px;height:40px;border-radius:50%;background:var(--coral);color:#fff;border:none;cursor:pointer;z-index:3;box-shadow:0 4px 0 var(--coral-d);display:grid;place-items:center}
.modal__close svg{width:18px;height:18px;stroke:#fff;stroke-width:2.8;fill:none}
.modal__hd{padding:24px 28px 14px;border-bottom:2px dashed var(--lime)}
.modal__date{font-family:"Nunito";font-weight:800;font-size:13px;color:var(--ink-soft)}
.modal__ttl{font-weight:900;font-size:20px;margin-top:6px;line-height:1.5;color:var(--ink)}
.modal__body{padding:22px 28px 10px;font-size:14.5px;line-height:1.95;color:var(--ink)}
.modal__body h2{font-size:17px;font-weight:900;color:var(--green-d);margin:22px 0 8px}
.modal__body p{margin:0 0 1em}
.modal__body .wp-block-buttons,.modal__body .wp-block-button{display:none}
.modal__foot{padding:6px 28px 26px}

/* ---------- reveal ---------- */
/* 中身は常に見える状態が既定。`.in` が付いたときだけフワッと出す演出を足す
   （JSやIntersectionObserverが動かない環境でもコンテンツが消えない） */
/* コンテンツは常に表示。演出よりも確実に見えることを優先する
   （プレビュー環境やJS不調でも中身が消えない） */
.reveal{opacity:1 !important;transform:none !important;animation:none !important}

@media(prefers-reduced-motion:reduce){*{animation:none!important}.reveal,.js .reveal.in{opacity:1!important;transform:none!important}}
@media(max-width:600px){
  .section{padding:64px 0}
  .hero__frame{aspect-ratio:3/4;min-height:0}
  .hero__in{padding:0 24px}
  .hero__ttl{font-size:clamp(26px,7.4vw,40px)}
  .hero__sub{font-size:12.5px;letter-spacing:.02em}
  .seal{width:92px}
  .hd{padding:12px 12px}
  .hd__card{padding:8px 10px;gap:8px}
  .hd__logo b{font-size:16px}
  .hd__logo small{font-size:8px}
  .burger{width:38px;height:38px}
}
