@charset "utf-8";

:root{
  --ink:#0A0A0A;
  --paper:#FFFFFF;
  --paper-warm:#f4f4f4; 
  --gray-100:#F1F1EE;
  --gray-200:#E3E3DF;
  --gray-400:#B9B9B4;
  --gray-500:#75756F;
  --orange:#ff731f; 
  --orange-ink:#E84B12;
  --max:1200px;
  --gut:clamp(20px,5vw,72px);
  --sec-y:clamp(84px,11vw,140px);
  --ease:cubic-bezier(.16,1,.3,1);
  --ease-snap:cubic-bezier(.7,0,.2,1);
  --en:"Anton",Impact,"Arial Narrow",sans-serif;
  --jp:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--jp);
  font-weight:500;
  color:var(--ink);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  line-height:1.8;
}
body.is-menu-open{overflow:hidden}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
img{max-width:100%;display:block}
ul{list-style:none}
::selection{background:var(--orange);color:#fff}
.msr{
  font-family:'Material Symbols Rounded';
  font-weight:normal;
  font-style:normal;
  display:inline-block;
  line-height:1;
  letter-spacing:normal;
  text-transform:none;
  white-space:nowrap;
  direction:ltr;
  -webkit-font-feature-settings:'liga';
  font-feature-settings:'liga';
  -webkit-font-smoothing:antialiased;
  font-variation-settings:'FILL' 0,'wght' 500,'GRAD' 0,'opsz' 32;
}
.msr--fill{font-variation-settings:'FILL' 1,'wght' 500,'GRAD' 0,'opsz' 32}

/* ---- Screentone ---- */
.tone{position:relative}
.tone::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:0;
  background:radial-gradient(circle at 1px 1px,rgba(10,10,10,.09) 1px,transparent 1.6px);
  background-size:9px 9px;
  -webkit-mask-image:radial-gradient(closest-side at var(--tone-x,88%) var(--tone-y,12%),#000 0%,transparent 100%);
          mask-image:radial-gradient(closest-side at var(--tone-x,88%) var(--tone-y,12%),#000 0%,transparent 100%);
  -webkit-mask-size:var(--tone-size,760px) var(--tone-size,760px);
          mask-size:var(--tone-size,760px) var(--tone-size,760px);
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:var(--tone-x,88%) var(--tone-y,12%);
          mask-position:var(--tone-x,88%) var(--tone-y,12%);
}

/* ============ HEADER ============ */
.site-header{
  position:relative;
  z-index:60;
  height:80px;
  background:rgba(255,255,255,.93);
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--ink);
}
.header-inner{
  width:min(100%,var(--max));
  height:100%;
  margin:auto;
  padding:0 var(--gut);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
}
.logo{
  display:grid;
  font-weight:900;
  font-size:16px;
  line-height:1.02;
  letter-spacing:-.03em;
}
.logo em{font-style:normal;color:var(--orange)}
.header-date{
  display:none;
  font-family:var(--en);
  font-size:13px;
  letter-spacing:.08em;
  padding:6px 14px;
  border:1.5px solid var(--ink);
}
@media(min-width:900px){.header-date{display:block}}

.menu-button{display:grid;place-items:center;width:60px;height:60px}
.menu-lines{width:38px;display:grid;gap:8px}
.menu-lines span{height:3.5px;background:var(--ink);transition:.32s var(--ease)}
.menu-label{font-weight:900;font-size:9px;letter-spacing:.16em;margin-top:6px}
.menu-button[aria-expanded=true] .menu-lines span:nth-child(1){transform:translateY(11.5px) rotate(45deg)}
.menu-button[aria-expanded=true] .menu-lines span:nth-child(2){opacity:0}
.menu-button[aria-expanded=true] .menu-lines span:nth-child(3){transform:translateY(-11.5px) rotate(-45deg)}
.progress{
  position:absolute;left:0;bottom:-1px;
  height:2px;width:100%;
  transform-origin:0 0;transform:scaleX(0);
  background:var(--orange);z-index:61;
}

/* ============ SIDE DOT NAV ============ */
.dot-nav{
  position:fixed;
  right:22px;top:50%;
  transform:translateY(-50%);
  z-index:50;
  display:none;
  flex-direction:column;
  gap:14px;
}
@media(min-width:1100px){.dot-nav{display:flex}}
.dot-nav a{
  position:relative;
  width:10px;height:10px;
  border:2px solid var(--ink);
  border-radius:50%;
  background:#fff;
  transition:.25s var(--ease);
}
.dot-nav a::after{
  content:attr(data-label);
  position:absolute;
  right:calc(100% + 12px);
  top:50%;
  transform:translateY(-50%) translateX(6px);
  padding:4px 10px;
  background:var(--ink);
  color:#fff;
  font-family:var(--en);
  font-size:10px;
  letter-spacing:.1em;
  white-space:nowrap;
  opacity:0;
  pointer-events:none;
  transition:.22s var(--ease);
}
.dot-nav a:hover::after{opacity:1;transform:translateY(-50%)}
.dot-nav a.is-active{background:var(--orange);border-color:var(--orange);transform:scale(1.35)}

/* ============ FULL MENU ============ */
.full-menu{
  position:fixed;inset:0;z-index:65;
  visibility:hidden;opacity:0;
  background:var(--orange); 
  overflow:auto;
  transition:opacity .34s var(--ease),visibility .34s;
}
.full-menu::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background: radial-gradient(circle at 1px 1px, rgba(10,10,10,.11) 1px, transparent 1.6px);
  background-size: 10px 10px;
}
.full-menu.is-open{visibility:visible;opacity:1}
.menu-inner{
  position:relative;
  z-index:1;
  width:min(100%,var(--max));
  margin:auto;
  padding:120px var(--gut) 80px;
  display:grid;
  grid-template-columns:.44fr .56fr;
  gap:80px;
}
.menu-header-block { display: block; }
.menu-brand{
  font-family:var(--en);
  font-size:clamp(38px,4.4vw,58px);
  line-height:.98;
  text-transform:uppercase;
  color:var(--ink);
}
.menu-brand em{font-style:normal;color:#fff}
.menu-close-btn {
  position: fixed;
  top: 10px;
  right: var(--gut);
  z-index: 70;
  height: 60px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0 16px;
  border: 2px solid var(--ink);
  background: #fff;
  font-family: var(--en);
  font-size: 13px;
  letter-spacing: .1em;
  color: var(--ink);
  transition: background .24s, color .24s;
}
.menu-close-btn:hover { background: var(--ink); color: #fff; }
.menu-close-btn .msr { font-size: 18px; }
.menu-list li{border-bottom:2px solid var(--ink)}
.menu-list li:first-child{border-top:2px solid var(--ink)}
.menu-list a{
  display:grid;
  grid-template-columns:60px 1fr auto;
  align-items:center;
  min-height:68px;
  padding:18px 0;
  font-weight:900;
  font-size:clamp(20px,2.4vw,28px);
  color:var(--ink);
  transition:padding-left .28s var(--ease), color .28s var(--ease);
}
.menu-list a:hover{padding-left:14px;color:#fff}
.menu-list a span:first-child{font-family:var(--en);font-size:14px;color:#fff;letter-spacing:.08em}
.menu-list a .msr{font-size:22px;opacity:0;transform:translateX(-8px);transition:.28s var(--ease)}
.menu-list a:hover .msr{opacity:1;transform:none}
@media(max-width:768px){
  .menu-inner{grid-template-columns:1fr;gap:20px;padding:80px 24px 60px}
  .menu-list a{min-height:48px;font-size:16px;grid-template-columns:46px 1fr auto}
  .menu-close-btn { right: 24px; }
}

/* ============ MARQUEE ============ */
.marquee{
  overflow:hidden;
  border-top:1px solid var(--ink);
  border-bottom:1px solid var(--ink);
  background:var(--paper);
  padding:13px 0;
}
.marquee--orange{background:var(--orange);border-color:var(--orange-ink)}
.marquee--orange .marquee__track{color:#fff}
.marquee__track{
  display:flex;width:max-content;
  animation:mq 28s linear infinite;
  font-family:var(--en);
  font-size:clamp(17px,2vw,24px);
  letter-spacing:.05em;
  text-transform:uppercase;
  white-space:nowrap;
}
.marquee__track span{padding:0 26px;display:flex;align-items:center;gap:26px}
.marquee__track span::after{content:"◆";font-size:.45em;color:var(--orange)}
.marquee--orange .marquee__track span::after{color:#fff}
@keyframes mq{to{transform:translateX(-50%)}}

/* ============ SECTION SYSTEM ============ */
.section{position:relative;padding:var(--sec-y) var(--gut);border-bottom:1px solid var(--ink);}
.section-inner{width:min(100%,var(--max));margin:auto;position:relative;z-index:2}
.sec-head{margin-bottom:clamp(40px,6vw,72px)}
.sec-head__row{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap}
.sec-head__num{font-family:var(--en);font-size:clamp(14px,1.5vw,19px);color:var(--orange);letter-spacing:.08em}
.sec-head__title{
  font-family:var(--en);
  font-size:clamp(52px,8.6vw,118px);
  line-height:.92;
  text-transform:uppercase;
  font-weight:400;
}
.sec-head__jp{
  margin-top:16px;
  font-weight:600;
  font-size:clamp(13px,1.5vw,16px);
  letter-spacing:.32em;
  color:var(--gray-500);
  display:flex;
  align-items:center;
  gap:16px;
}
.sec-head__jp::before{content:"";width:44px;height:1px;background:var(--orange)}
.sec-lead{
  margin-top:26px;
  max-width:640px;
  font-size:clamp(15px,1.6vw,16.5px); 
  line-height:2.15;
  letter-spacing:.04em;
}

/* ============ REVEAL ============ */
.rv{opacity:0;transform:translateY(26px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.rv.is-in{opacity:1;transform:none}
.rv-d1{transition-delay:.08s}.rv-d2{transition-delay:.16s}.rv-d3{transition-delay:.24s}

/* ============ BUTTON SYSTEM ============ */
.c-btn{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  min-height:58px;
  padding:0 30px;
  border:2.5px solid var(--ink);
  font-weight:900;
  font-size:14px;
  letter-spacing:.04em;
  background:var(--paper);
  color:var(--ink);
  overflow:hidden;
  isolation:isolate;
  transition:color .24s var(--ease-snap), border-color .24s var(--ease-snap);
}
.c-btn::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:var(--ink);
  transform:translateX(-101%);
  transition:transform .24s var(--ease-snap);
}
.c-btn:hover{color:#fff}
.c-btn:hover::before{transform:none}
.c-btn .msr{font-size:20px;transition:transform .24s var(--ease-snap)}
.c-btn:hover .msr{transform:translateX(4px)}

.c-btn--primary{
  background:var(--orange);
  border-color:var(--orange);
  color:#fff;
}
.c-btn--primary:hover{border-color:var(--ink)}

/* ============ HERO ============ */
/* KV・hero-copy レイアウトは style_hero.css を見本に全面再調整 */
.hero{
  position:relative;
  padding:0 var(--gut);
  background:var(--paper);
  isolation:isolate;
  overflow:hidden;
  border-bottom:1px solid var(--ink);
}

.hero::before{
  content:"";
  position:absolute;inset:0;z-index:0;
  background:url("../img/main_bg.png") right top/cover no-repeat;
  opacity:1;
}

.hero::after{
  content:"";
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(90deg,rgba(255,255,255,.85) 0%,rgba(255,255,255,.6) 40%,rgba(255,255,255,.1) 100%),
    linear-gradient(180deg,rgba(255,255,255,0) 60%,rgba(255,255,255,.6) 100%);
}

.hero-stage{
  position:relative;
  z-index:2;
  width:min(100%,var(--max));
  margin:auto;
  min-height:clamp(540px,54vw,700px);
  display:grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items:center;
  gap:10px;
}

.hero-visual{
  position:relative;
  z-index:1;
  height:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  max-width:720px;
  margin:0 auto;
}

/* 角丸削除（border-radius:0）、ボケたドロップシャドウ削除（box-shadow:none） */
.hero-character{
  width:100%;
  height:auto;
  max-height:1000px;
  object-fit:contain;
  border-radius:0 !important;
  box-shadow:none !important;
  filter:none !important;
}

.hero-copy{
  position:relative;
  z-index:3;
  padding:34px 0 54px;
  max-width:100%;
}

.hero-title{
  font-weight:900;
  font-size:clamp(30px,6.2vw,83px);
  line-height:1.24;
  letter-spacing:.005em;
  text-shadow:
    3px 3px 0 #fff, -3px 3px 0 #fff, 3px -3px 0 #fff, -3px -3px 0 #fff,
    2px 3px 0 #fff, -2px 3px 0 #fff, 0 0 14px rgba(255,255,255,.95);
}
.hero-title .ht-line{
  display:block;
  overflow:hidden;
  white-space:nowrap !important;
}
.hero-title .ht-line>span{
  display:inline-block;
  white-space:nowrap !important;
  transform:translateY(112%);
  animation:ht-up .95s var(--ease) forwards;
}
.hero-title .ht-line:nth-child(2)>span{animation-delay:.12s}
.hero-title .ht-line:nth-child(3)>span{animation-delay:.24s}
@keyframes ht-up{to{transform:none}}
.hero-title .t-orange{color:var(--orange)}

.hero-date{
  display:inline-flex;
  align-items:center;
  gap:12px;
  margin-top:24px;
  padding:14px 22px;
  background:var(--ink);
  color:#fff;
  font-weight:900;
  font-size:clamp(16px,1.9vw,26px);
  letter-spacing:.05em;
  box-shadow:7px 7px 0 var(--orange);
  text-shadow:none;
}
.hero-lead{
  max-width:420px;
  margin-top:24px;
  font-size:clamp(15px,1.4vw,15px);
  font-weight:700;
  line-height:2.1;
  color:#333;
  text-shadow:none;
}

.hero-actions{
  display:flex;
  flex-direction:column;
  gap:12px;
  width:100%;
  max-width:480px;
  margin-top:1.5rem;
  position:relative;
  z-index:2;
}

.hero-actions .c-btn {
  width:100%;
  box-sizing:border-box;
  justify-content:center;
  text-align:center;
  padding:1rem 1.5rem;
  font-size:0.95rem;
  font-weight:700;
  line-height:1.4;
}

/* コラボバッジ（SP版 110%拡大＆上余白15pxカット） */
.hero-collab-full {
  width: 100%;
  background: transparent;
  padding: 16px 0 24px;
  border-top: none;
  position: relative;
  z-index: 2;
}
.hero-collab-inner {
  width: min(100%, var(--max));
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(6px, 1.5vw, 20px);
  padding: 0 var(--gut);
  white-space: nowrap;
}
.hero-collab-text {
  font-family: var(--jp);
  font-size: clamp(13px, 2.6vw, 36px);
  font-weight: 900;
  letter-spacing: -0.01em;
  color: var(--ink);
  line-height: 1;
}
.hero-collab-cross {
  font-family: var(--jp);
  font-size: clamp(16px, 3.8vw, 52px);
  font-weight: 900;
  color: var(--orange);
  line-height: 1;
  display: inline-block;
  transform: translateY(-1px);
}
.hero-collab-logo {
  height: clamp(22px, 4.8vw, 62px);
  width: auto;
  object-fit: contain;
}

/* SP（スマホ）表示時の最適化 */
@media(max-width:860px){
  .hero-stage{
    min-height:auto;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:0;
  }
  .hero-visual{
    width:100% !important;
    max-width:100% !important;
    height:auto;
    padding:0 !important;
    margin:12px auto 0;
    order:-1;
    justify-content:center;
  }
  .hero-character{
    width:100%;
    height:auto;
    max-height:720px;
    border-radius:0 !important;
    box-shadow:none !important;
  }
  .hero-copy{
    padding:4px 0 64px;
    max-width:100%;
  }
  .hero-title{
    font-size:clamp(30px,9.0vw,46px) !important;
    line-height:1.3;
    margin-top:10px;
  }
  .hero-title .ht-line{white-space:nowrap !important}
  .hero-date{font-size:15px;box-shadow:5px 5px 0 var(--orange)}

  .hero-collab-full {
    padding: 0px 0 16px;
    margin-top: -15px;
  }
  .hero-collab-inner { gap: 6px; }
  .hero-collab-text { font-size: clamp(14px, 3.8vw, 22px); }
  .hero-collab-cross { font-size: clamp(17px, 5.0vw, 30px); }
  .hero-collab-logo { height: clamp(24px, 6.2vw, 40px); }
  .btn-br-sp { display: block !important; }
}

@media(min-width:861px){
  .btn-br-sp { display: none !important; }
}

/* ============ CONCEPT ============ */
.concept{background:var(--paper-warm);--tone-x:92%;--tone-y:8%}
.concept-grid{
  display:grid;
  grid-template-columns:.88fr 1fr;
  gap:clamp(48px,7vw,110px);
  align-items:center;
}
.concept-statement{
  position:relative;
  padding-left:clamp(28px,4vw,54px);
  border-left:3px solid var(--ink);
  font-family:"Shippori Mincho","Hiragino Mincho ProN","Yu Gothic",serif;
  font-weight:700;
  font-size:clamp(21px,2.3vw,29px); 
  line-height:2.2;
  letter-spacing:.08em;
}
.concept-statement em{font-style:normal;background:linear-gradient(transparent 62%, #fcebe5 62%)}
@media(max-width:900px){.concept-grid{grid-template-columns:1fr;gap:40px}}

/* ============ ABOUT ============ */
.about{background:var(--paper)}
.about-layout{
  display:grid;
  grid-template-columns:.42fr 1fr;
  gap:clamp(40px,5vw,72px);
  align-items:start;
}
.about-main-content { display: flex; flex-direction: column; gap: 40px; }
.about-statement { border-left: 3px solid var(--orange); padding-left: 24px; }
.about-statement__catch {
  font-weight: 900;
  font-size: clamp(18px, 2.2vw, 24px);
  line-height: 1.6;
  margin-bottom: 18px;
  color: var(--ink);
}
.about-statement__text p {
  font-size: clamp(14px, 1.5vw, 15.5px);
  line-height: 1.9;
  color: #333;
  margin-bottom: 12px;
}
.about-statement__highlight {
  font-weight: 700;
  color: var(--ink) !important;
  margin-top: 18px;
}
.about-table{
  width:100%;
  border:2.5px solid var(--ink);
  border-collapse:collapse;
  background:#fff;
  box-shadow:14px 14px 0 rgba(255,90,31,.13);
}
.about-table tr+tr{border-top:2.5px solid var(--ink)}
.about-table th{
  width:180px;
  background:var(--ink);color:#fff;
  padding:22px 26px;
  font-family:var(--en);
  font-size:20px;
  letter-spacing:.06em;
  vertical-align:middle;
}
.about-table th .msr{font-size:19px;margin-right:10px;vertical-align:-3px;color:var(--orange)}
.about-table td{
  border-left:2.5px solid var(--ink);
  padding:22px 30px;
  font-weight:900;
  font-size:clamp(16px,1.9vw,24px);
  line-height:1.5;
}
@media(max-width:900px){
  .about-layout{grid-template-columns:1fr}
  .about-table,.about-table tbody,.about-table tr,.about-table th,.about-table td{display:block;width:100%}
  .about-table th{padding:13px 20px;font-size:16px}
  .about-table td{border-left:0;padding:16px 20px;font-size:16px}
}

/* ============ STAMP RALLY ============ */
.rally{background:var(--paper-warm);--tone-x:6%;--tone-y:90%}
.rally-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,32px)}
.step-card{
  position:relative;
  background:#fff;
  border:2.5px solid var(--ink);
  display:flex;
  flex-direction:column;
}
.step-card__thumb {
  width:100%;aspect-ratio:1 / 1; 
  border-bottom:2.5px solid var(--ink);
  display:flex;align-items:center;justify-content:center;
  padding:16px;
}
.step-card__thumb img { width:80%; height:80%; object-fit:contain; }
.step-card__content { padding:30px 24px 28px; display:flex; flex-direction:column; flex:1; }
.step-card__num{
  position:absolute;top:12px;left:12px;z-index:4;
  display:grid;place-items:center;min-width:48px;height:30px;padding:0 8px;
  background:var(--orange);color:#fff;border:2px solid var(--ink);
  font-family:var(--en);font-size:14px;
}
.step-card__title-row { display:flex; align-items:center; gap:8px; margin-bottom:12px; }
.step-card__icon{ display:inline-flex; align-items:center; justify-content:center; color:var(--orange); }
.step-card__icon .msr{font-size:22px}
.step-card h3{font-weight:900;font-size:18px;line-height:1.3}
.step-card p{font-size:13px;line-height:1.8;color:#333}
.step-card__arrow{position:absolute;top:50%;right:-27px;z-index:3;transform:translateY(-50%);display:none;color:var(--orange)}
.step-card__arrow .msr{font-size:30px}
@media(min-width:769px){.step-card:not(:last-child) .step-card__arrow{display:block}}
.rally-cta{margin-top:52px;display:flex;justify-content:center}
.rally-cta--map{margin-top:-12px;margin-bottom:44px;}
@media(max-width:768px){.rally-grid{grid-template-columns:1fr;gap:34px}}

/* ============ PRIZES ============ */
.prizes{ background: url("../img/section_bg.png") center top / cover no-repeat; }
.prize-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,32px);align-items:stretch}
.prize-card{
  position:relative;
  display:flex;flex-direction:column;
  background:#fff;
  border:2px solid var(--ink);
  padding-bottom:26px;
}
.prize-card--top{border-color:var(--orange)}
.prize-card__badge{
  align-self:flex-start;
  display:inline-flex;align-items:center;gap:8px;
  margin:-2.5px 0 0 -2.5px;
  padding:10px 16px;
  background:var(--ink);color:#fff;
  font-family:var(--en);font-size:16px;letter-spacing:.08em;
}
.prize-card__badge .msr{font-size:18px;color:var(--orange)}
.prize-card--top .prize-card__badge{background:var(--orange)}
.prize-card--top .prize-card__badge .msr{color:#fff}

.prize-card__visual{
  height:168px;margin:22px 24px;
  display:grid;place-items:center;
  border:2px dashed var(--gray-200);background:var(--paper-warm);
}
.prize-card__visual .msr{font-size:52px;color:var(--gray-400)}

/* 3枚並列画像レイアウト */
.prize-card__visual-group {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin: 20px 18px 12px;
}
.prize-card__visual-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: var(--paper-warm);
  border: 1.5px solid var(--gray-200);
  border-radius: 6px;
  padding: 8px 4px 6px;
  height: 136px;
  justify-content: space-between;
}
.prize-card__visual-item img {
  width: 100%;
  height: 80px;
  object-fit: contain;
}
.prize-card__visual-fallback {
  width: 100%;
  height: 80px;
  place-items: center;
  background: #eee;
}
.prize-card__visual-fallback .msr {
  font-size: 32px;
  color: var(--gray-500);
}
.prize-card__visual-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--ink);
  text-align: center;
  line-height: 1.2;
}

.prize-card--text .prize-card__body { padding-top: 36px; }
.prize-card__body{padding:0 24px;display:flex;flex-direction:column;flex:1}
.prize-card h3{font-weight:900;font-size:19px;line-height:1.4;margin-bottom:6px}
.prize-card__meta{color:var(--orange);font-weight:900;font-size:13.5px;margin-bottom:12px}
.prize-card__desc{font-size:13px;line-height:1.9;color:#333}
@media(max-width:900px){.prize-grid{grid-template-columns:1fr;gap:24px}}

/* 景品カード：注意書き（ピンク枠） */
.prize-card__notice{
  margin-top:14px;
  padding:14px 16px;
  background:#fdecec;
  border:1px solid #f3bcbc;
  border-radius:4px;
  font-size:12px;
  line-height:1.8;
  color:#c0392b;
  font-weight:700;
}

/* 景品カード：全スポット制覇 賞品内訳リスト */
.prize-award-list{margin-top:18px;padding-bottom:2px}
.prize-award-item{padding:14px 0;border-top:1px dashed var(--gray-400)}
.prize-award-item:first-child{border-top:0;padding-top:0}
.prize-award-item__title{color:var(--orange);font-weight:900;font-size:13.5px;margin-bottom:6px}
.prize-award-item__desc{font-size:12.5px;line-height:1.8;color:#333}

/* ============ SPOTS / MAP ============ */
.spots{background:var(--paper-warm);--tone-x:94%;--tone-y:92%}
.spot-filter{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}
.spot-filter__btn{
  display:inline-flex;align-items:center;gap:8px;
  min-height:46px;padding:0 18px;
  border:2px solid var(--ink);background:#fff;
  font-weight:900;font-size:13px;
  position:relative;isolation:isolate;overflow:hidden;
  transition:color .22s var(--ease-snap);
}
.spot-filter__btn .msr{font-size:19px;color:var(--orange);transition:color .22s var(--ease-snap)}
.spot-filter__btn.is-active{background:var(--orange);border-color:var(--orange);color:#fff}
.spot-filter__btn.is-active .msr{color:#fff}

.map-block{
  display:grid;
  grid-template-columns:1fr 340px;
  border:2.5px solid var(--ink);background:#fff;
  box-shadow:14px 14px 0 rgba(10,10,10,.06);
  margin-bottom:44px;overflow:hidden;
}
.map-wrapper{position:relative;height:clamp(400px,44vw,560px);overflow:hidden}

/* 3つのGoogleマップ（全体／池袋／トキワ荘）をフィルタで排他的に切り替え */
.map-view{position:absolute;inset:0;display:none}
.map-view.is-active{display:block}

.map-iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
  /* マップの不要な動き（ドラッグ・スクロールズーム）を止め、画面内で固定表示にする */
  pointer-events: none;
}

.map-open-btn{
  position:absolute;right:14px;bottom:14px;z-index:7;
  display:inline-flex;align-items:center;gap:8px;padding:12px 18px;
  background:var(--ink);color:#fff;font-weight:900;font-size:12.5px;
  box-shadow:4px 4px 0 var(--orange);transition:.2s var(--ease);
}
.map-open-btn .msr{font-size:18px;color:var(--orange)}
.map-open-btn:hover{background:var(--orange);box-shadow:4px 4px 0 var(--ink)}
.map-open-btn:hover .msr{color:#fff}

.map-pin{
  position:absolute;z-index:6;width:42px;height:42px;
  display:flex;align-items:center;justify-content:center;
  border:2.5px solid var(--ink);border-radius:55% 45% 52% 48% / 48% 52% 45% 55%;
  background:var(--orange);color:#fff;font-family:var(--en);font-size:13px;
  transform:translate(-50%,-50%);box-shadow:4px 4px 0 rgba(10,10,10,.2);
  cursor:pointer;transition:.2s var(--ease);
}
.map-pin::before{content:attr(data-letter)}
.map-pin::after{
  content:attr(data-name);
  position:absolute;bottom:calc(100% + 10px);left:50%;
  transform:translateX(-50%) translateY(4px);
  padding:6px 12px;background:var(--ink);color:#fff;
  font-family:var(--jp);font-weight:700;font-size:11px;
  white-space:nowrap;opacity:0;pointer-events:none;
  transition:.2s var(--ease);
}
.map-pin:hover,.map-pin.is-focus{background:var(--ink);transform:translate(-50%,-56%) scale(1.08)}
.map-pin:hover::after,.map-pin.is-focus::after{opacity:1;transform:translateX(-50%)}

.map-list{border-left:2.5px solid var(--ink);display:flex;flex-direction:column;max-height:clamp(400px,44vw,560px)}
.map-list__head{
  display:flex;align-items:center;gap:10px;padding:16px 18px;
  border-bottom:2px solid var(--ink);font-family:var(--en);font-size:14px;
  letter-spacing:.14em;background:var(--paper-warm);
}
.map-list__head .msr{font-size:18px;color:var(--orange)}
.map-list__scroll{overflow-y:auto;flex:1;overscroll-behavior:contain}
.map-list__item{
  display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:12px;
  width:100%;padding:13px 18px;border-bottom:1px solid var(--gray-200);
  text-align:left;transition:background .18s;
}
.map-list__item:hover{background:var(--paper-warm)}
.map-list__item.is-hidden{display:none}
.map-list__letter{
  display:grid;place-items:center;width:30px;height:30px;
  border:2px solid var(--ink);border-radius:50%;
  background:var(--orange);color:#fff;font-family:var(--en);font-size:12px;
}
.map-list__name{font-weight:900;font-size:13.5px;line-height:1.4}
.map-list__area{font-size:10.5px;color:var(--gray-500);font-weight:700}
.map-list__item .msr{font-size:18px;color:var(--gray-400)}
@media(max-width:900px){
  .map-block{grid-template-columns:1fr}
  .map-wrapper{height:min(58vw,380px)}
  .map-list{border-left:0;border-top:2.5px solid var(--ink);max-height:264px}
}

.spot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.spot-card{
  position:relative;display:flex;flex-direction:column;
  background:#fff;border:2px solid var(--ink);
  overflow:hidden;transition:transform .3s var(--ease),box-shadow .3s var(--ease);
}
.spot-card:hover{transform:translate(-3px,-3px);box-shadow:7px 7px 0 var(--ink)}
.spot-card__thumb{
  width:100%;aspect-ratio:16/10;
  display:flex;align-items:center;justify-content:center;
  border-bottom:1px solid #f0f0f0;position:relative;
  background-color:#ffffff;overflow:hidden;
}
.spot-card__thumb img {
  width:90%;height:90%;
  object-fit:contain;
  transform:scale(0.9);
  transform-origin:center center;
}
.spot-card__text-logo {
  font-family:'Shippori Mincho', serif;
  font-weight:700;
  font-size:1.1rem;
  color:#2b2d42;
  text-align:center;
  padding:0 1rem;
  line-height:1.4;
}
.spot-card__text-logo-sub { font-size:0.9em; font-weight:500; }
.spot-card__body{display:flex;flex-direction:column;flex:1;padding:16px}
.spot-card__name{font-weight:900;font-size:15.5px;line-height:1.4;margin-bottom:10px}
.spot-card__meta{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:16px}
.spot-card__tag{
  display:inline-flex;align-items:center;gap:5px;padding:4px 10px;
  border:1.5px solid var(--ink);font-size:10.5px;font-weight:700;
}
.spot-card__tag .msr{font-size:13px;color:var(--orange)}
.spot-card__pts{color:var(--orange);font-family:var(--en);font-size:13px}
.spot-card__desc {
  font-size:0.85rem;
  line-height:1.6;
  color:#4a5568;
  margin:0.6rem 0 1rem 0;
  display:-webkit-box;
  -webkit-line-clamp:4;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.spot-card .c-btn {margin-top: auto; width: 100%; min-height: 44px; padding: 0 16px; font-size: 13px;}

@media(max-width:1050px){.spot-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){
  .spot-grid{
    display:flex;gap:14px;margin:0 calc(var(--gut) * -1);
    padding:4px var(--gut) 14px;overflow-x:auto;
    scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;
  }
  .spot-card{flex:0 0 74%;scroll-snap-align:start}
}

/* ============ STORES ============ */
.stores{background:var(--paper-warm);--tone-x:8%;--tone-y:6%}
.store-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
.store-card{
  position:relative;background:#fff;border:2px solid var(--ink);
  padding:22px 14px 14px;min-height:auto;
  display:flex;flex-direction:column;
  transition:transform .28s var(--ease), box-shadow .28s var(--ease);
}
.store-card:hover {
  transform: translateY(-4px);
  box-shadow: 6px 6px 0 var(--ink);
}
.store-card__index{
  position:absolute;top:-13px;left:12px;z-index:4;
  display:grid;place-items:center;min-width:36px;height:26px;
  background:var(--orange);color:#fff;border:2px solid var(--ink);
  font-family:var(--en);font-size:12.5px;
}
.store-card h3{font-weight:900;font-size:15px;line-height:1.4;margin-bottom:8px}
.store-card p{font-size:12px;line-height:1.75;color:#444;flex:1}
.store-card .c-btn {margin-top: 12px; width: 100%; min-height: 42px; padding: 0 14px; font-size: 12px;}

@media(max-width:1100px){.store-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.store-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:430px){.store-grid{grid-template-columns:1fr}}

/* ============ PARTNERS ============ */
.partners{background:var(--paper)}
.partners-group--organizer { margin-bottom: 4rem; }
.partners-group__title {
  font-size: 1.25rem; font-weight: 700; margin-bottom: 1.5rem;
  border-left: 4px solid var(--orange); padding-left: 0.5rem; color: var(--gray-900);
}
.partners-committee-headline {
  display: flex; align-items: center; gap: 1.5rem; margin-bottom: 1.5rem; flex-wrap: wrap;
}
.partners-committee-logo { max-height: 76px; width: auto; object-fit: contain; }
.partners-committee-name { font-size: 1.4rem; font-weight: 900; color: var(--ink); margin: 0; }
.partners-divider { border: none; border-top: 2px solid #e2e8f0; margin-bottom: 2.5rem; margin-top: 1rem; }

.partner-grid{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(160px, 1fr));
  gap:16px; align-items:center; justify-items:center;
}
.partner-card{
  width:100%; aspect-ratio:2 / 1; display:flex; align-items:center; justify-content:center;
  background:transparent; border:0; padding:0; pointer-events:none; user-select:none;
  transform:scale(0.8); transform-origin:center center;
}
.partner-card__logo-space{ width:100%; height:100%; display:flex; align-items:center; justify-content:center; }
.partner-card__logo-space img { width:100%; height:100%; object-fit:contain; }

@media(min-width:768px){
  .partner-grid--4col { grid-template-columns: repeat(4, 1fr) !important; }
  .partner-card{transform:scale(0.72)}
  .partners-committee-logo{max-height:68px}
}

/* ============ FAQ ============ */
.faq{background:var(--paper-warm);--tone-x:10%;--tone-y:90%}
.faq-list{display:grid;gap:14px}
.faq-item{background:#fff;border:2px solid var(--ink)}
.faq-item summary{
  list-style:none;display:flex;align-items:center;gap:16px;
  min-height:70px;padding:18px 24px;cursor:pointer;
  font-weight:900;font-size:clamp(14.5px,1.8vw,16.5px);
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary .faq-q{
  display:grid;place-items:center;width:38px;height:38px;flex-shrink:0;
  border:2px solid var(--ink);border-radius:50%;background:var(--orange);
}
.faq-item summary .faq-q .msr{font-size:19px;color:#fff}
.faq-item summary .faq-toggle{margin-left:auto}
.faq-item summary .faq-toggle .msr{font-size:26px;color:var(--orange);transition:transform .28s var(--ease)}
.faq-item[open] summary .faq-toggle .msr{transform:rotate(45deg)}
.faq-item .faq-a{padding:2px 24px 24px 78px;font-size:14px;line-height:2;color:#333}
@media(max-width:640px){.faq-item .faq-a{padding-left:24px}}

/* ============ FOOTER ============ */
.footer{position:relative;overflow:hidden;background:var(--ink);color:#fff}
.footer-inner{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 160px;align-items:stretch;min-height:136px;}
.footer-meta{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:30px clamp(20px,5vw,48px);}
.footer-copyright{max-width:100%;font-weight:800;font-size:13.5px;line-height:1.55;}
.footer-notes{max-width:100%;font-size:13px;line-height:1.7;opacity:.72;}

.page-top{
  position:fixed;right:clamp(16px,3vw,32px);bottom:clamp(16px,3vw,32px);z-index:100;
  width:56px;height:56px;padding:0 !important;border:3px solid var(--ink);border-radius:50%;
  background:var(--orange);color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:0 !important;opacity:0;pointer-events:none;transform:translateY(20px);
  transition:opacity .3s ease, transform .24s var(--ease-snap);
}
.page-top.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}
.page-top span{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;}
.page-top .msr{order:-1;margin:0;font-size:28px;}

.page-top.is-docked{
  position:absolute;top:0;right:0;bottom:0;width:160px;height:100%;
  padding:0 24px 0 36px !important;border-width:0 !important;border-radius:0 !important;
  clip-path:polygon(32px 0,100% 0,100% 100%,0 100%);background:var(--orange);color:#fff !important;
  font-family:var(--en) !important;font-size:13px !important;font-weight:900 !important;
}

.c-btn--large {
  font-size: clamp(15px, 2.5vw, 20px); min-height: 80px; padding: 0 40px;
  width: 100%; max-width: 100%; border: 4px double var(--ink);
  position: relative; font-weight: 900; overflow: hidden;
}
@media (min-width: 768px) {
  .c-btn--nowrap-pc { white-space: nowrap !important; max-width: max-content !important; width: auto !important; }
}

/* CTA AUTOMATION STYLES */
.c-btn--primary{transition:background-color .3s ease,border-color .3s ease,color .3s ease,filter .3s ease;position:relative;overflow:hidden}
.c-btn__label{display:inline-block;text-align:center;line-height:1.45}

.status-locked{
  background-color:var(--ink) !important;border-color:var(--ink) !important;
  color:#fff !important;cursor:not-allowed
}
.status-locked::before{display:none}
.status-locked:hover{color:#fff !important;animation:shake .4s ease}
.status-locked:hover .msr{transform:none}

.status-active{animation:pulse 2s infinite}

.status-archived{filter:sepia(.8) grayscale(.5);opacity:.8;cursor:default}
.status-archived::before{display:none}
.status-archived:hover .msr{transform:none}

.c-btn[aria-disabled="true"]:focus-visible{outline:3px dashed var(--orange);outline-offset:3px}

@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
@keyframes pulse{
  0%{box-shadow:0 0 0 0 rgba(249,115,22,.7)}
  70%{box-shadow:0 0 0 15px rgba(249,115,22,0)}
  100%{box-shadow:0 0 0 0 rgba(249,115,22,0)}
}

.spot-card.is-hidden, .map-pin.is-hidden{display:none !important}

/* ---- 地図ビューポート（スクロールなし・全画面フィット構造） ---- */
.map-static-viewport {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #e0e0e0;
  overflow: hidden;
  border-radius: 8px;
}

/* 静止画マップ（グレースケール加工） */
.map-bg-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: grayscale(100%) opacity(0.9);
}

/* 非表示制御 */
.map-pin.is-hidden,
.map-list__item.is-hidden,
.spot-card.is-hidden {
  display: none !important;
}

/* ---- ピンの選択表示・吹き出しスタイル ---- */
.map-pin {
  position: absolute;
  width: 32px;
  height: 32px;
  background: var(--orange, #ff5500);
  border: 2px solid #fff;
  border-radius: 50%;
  color: #fff;
  font-family: var(--font-anton, sans-serif);
  font-weight: 700;
  font-size: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transform: translate(-50%, -50%);
  transition: background-color 0.25s ease, transform 0.25s ease, z-index 0.25s ease;
  box-shadow: 0 3px 8px rgba(0,0,0,0.3);
  z-index: 2;
}

/* 選択時のピン（黒色 ＆ 拡大） */
.map-pin.is-active {
  background: var(--ink, #111111) !important;
  transform: translate(-50%, -50%) scale(1.25) !important;
  z-index: 10 !important;
  border-color: #fff !important;
}

/* 黒い吹き出しタグ */
.map-pin::after {
  content: attr(data-name);
  position: absolute;
  bottom: calc(100% + 10px);
  left: 50%;
  transform: translateX(-50%) translateY(4px);
  padding: 6px 12px;
  background: var(--ink, #111111);
  color: #fff;
  font-family: var(--jp, sans-serif);
  font-weight: 700;
  font-size: 12px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
  box-shadow: 0 4px 12px rgba(0,0,0,0.25);
  border-radius: 4px;
}

.map-pin::before {
  content: attr(data-letter);
}

.map-pin.is-active::after,
.map-pin:hover::after {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* リスト側の選択状態ハイライト */
.map-list__item.is-selected {
  background-color: rgba(255, 85, 0, 0.08);
  border-left: 4px solid var(--orange, #ff5500);
}

/* スマホ版（SP）表示調整 */
@media (max-width: 768px) {
  .map-pin {
    width: 26px;
    height: 26px;
    font-size: 12px;
  }
  .map-pin::after {
    font-size: 10px;
    padding: 4px 8px;
    bottom: calc(100% + 6px);
  }
}

/* ============ NOTES ============ */
.notes{background:var(--paper)}
.notes-content {
  background: #fff;
  border: 2.5px solid var(--ink);
  padding: clamp(24px, 4vw, 40px);
  box-shadow: 10px 10px 0 rgba(10,10,10,.05);
}
.notes-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.notes-list li {
  position: relative;
  padding-left: 24px;
  font-size: clamp(14px, 1.6vw, 15.5px);
  line-height: 1.9;
  color: #333;
  font-weight: 700;
}
.notes-list li::before {
  content: "・";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--orange);
  font-weight: 900;
  font-size: 1.2em;
}