@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}

.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%);
}

.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;
}

.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{
  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{
  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{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;
  width: 100%;
  max-width: 100%; 
  font-size: clamp(15px, 1.6vw, 16.5px); 
  line-height: 1.9;
  letter-spacing: .04em;
  text-wrap: unset !important;
}

/* ★イベント終了表記・補足注記のオレンジ強調スタイル★ */
.sec-lead .u-orange,
.sec-lead em.u-orange,
.sec-lead span.u-orange,
.text-orange {
  color: var(--orange) !important;
  font-weight: 700;
  font-style: normal;
}

.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}

.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{
  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;
}

.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)}

/* ★開催日時バッジ（PC・SP対応）★ */
.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-date .date-ended {
  color: var(--orange);
  margin-left: 6px;
}

.hero-date-sub-text {
  color: var(--orange) !important;
  font-weight: 700;
  margin-top: 10px;
  display: block;
}

.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;
}

.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;
}

@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}

  /* ★SP版：開催終了日付バッジの改行・最適化★ */
  .hero-date{
    font-size:clamp(12px, 3.4vw, 15px);
    padding: 10px 14px;
    box-shadow:4px 4px 0 var(--orange);
    flex-wrap: wrap;
    line-height: 1.4;
  }

  .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{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{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}
}

.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;
  aspect-ratio: 1 / 1;
  overflow:hidden;
}

.step-card__thumb {
  width:100%;
  flex: 1;
  border-bottom:2.5px solid var(--ink);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px 20px 16px;
  background:#fff;
  position:relative;
  min-height: 0;
}

.step-card__thumb img {
  width:100%;
  height:100%;
  object-fit:contain;
}

.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__content { 
  padding:18px 20px 20px; 
  display:flex; 
  flex-direction:column; 
  justify-content:center;
  background:#fff;
  flex-shrink:0;
}

.step-card__title-row { 
  display:flex; 
  align-items:center; 
  gap:8px; 
  margin-bottom:8px; 
}

.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.65;
  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;
}

.rally-qr-banner {
  margin-top: 36px;
  background: var(--ink);
  border: 2.5px solid var(--ink);
  padding: 28px 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  position: relative;
  overflow: hidden;
  box-shadow: 8px 8px 0 rgba(10,10,10,.1);
}

.rally-qr-banner::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 21%;
  background: var(--orange);
  clip-path: polygon(36px 0, 100% 0, 100% 100%, 0 100%);
  pointer-events: none;
  z-index: 1;
}

.rally-qr-banner__content {
  color: #ffffff;
  position: relative;
  z-index: 2;
  max-width: 640px;
}

.rally-qr-banner__title {
  font-size: clamp(20px, 2.6vw, 30px);
  font-weight: 900;
  line-height: 1.3;
  letter-spacing: 0.04em;
  margin-bottom: 8px;
  white-space: nowrap;
}

.rally-qr-banner__desc {
  font-size: clamp(12.5px, 1.3vw, 14.5px);
  font-weight: 700;
  line-height: 1.6;
  opacity: 0.95;
  letter-spacing: 0.02em;
}

.rally-qr-banner__qr-wrap {
  background: #ffffff;
  padding: 8px;
  border-radius: 4px;
  border: 2px solid #ffffff;
  flex-shrink: 0;
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}

.rally-qr-banner__qr-img {
  width: 110px;
  height: 110px;
  object-fit: contain;
}

@media(max-width:768px){
  .rally-grid {
    grid-template-columns: 1fr;
    gap: 24px;
    max-width: 380px;
    margin: 0 auto;
  }

  .step-card {
    aspect-ratio: 1 / 1;
  }

  .step-card__thumb {
    padding: 20px 16px 10px;
  }

  .step-card__num {
    top: 10px;
    left: 10px;
    min-width: 40px;
    height: 26px;
    font-size: 13px;
    border-width: 1.8px;
  }

  .step-card__content {
    padding: 14px 16px 16px;
  }

  .step-card__title-row {
    margin-bottom: 6px;
    gap: 6px;
  }

  .step-card__icon .msr {
    font-size: 19px;
  }

  .step-card h3 {
    font-size: 15.5px;
  }

  .step-card p {
    font-size: 12px;
    line-height: 1.55;
  }

  .rally-cta {
    margin-top: 32px;
  }

  .rally-qr-banner {
    flex-direction: column;
    text-align: center;
    padding: 28px 20px;
    gap: 18px;
    margin-top: 24px;
    max-width: 380px;
    margin-left: auto;
    margin-right: auto;
    width: 100%;
  }

  .rally-qr-banner__title {
    white-space: normal;
  }

  .rally-qr-banner::before {
    width: 100%;
    height: 32%;
    top: auto;
    bottom: 0;
    clip-path: polygon(0 24px, 100% 0, 100% 100%, 0 100%);
  }

  .rally-qr-banner__qr-img {
    width: 96px;
    height: 96px;
  }
}

.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:2.5px solid var(--ink);
  padding-bottom:24px;
  height: 100%;
}
.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: 220px;
  margin: 20px 16px 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent !important;
  border: none !important;
}
.prize-card__visual--large {
  height: 280px;
  margin: 16px;
}
.prize-card__visual--large img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.prize-card__body {
  padding: 16px 24px 0;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.prize-card--text .prize-card__body,
.prize-card--top .prize-card__body {
  padding-top: 24px;
}

.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.8;color:#333}

.prize-category-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-top: 16px;
}
.prize-category-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.prize-category-tag {
  align-self: flex-start;
  font-size: 11px;
  font-weight: 900;
  color: #fff;
  background: var(--ink);
  padding: 3px 10px;
  border-radius: 2px;
  letter-spacing: 0.05em;
}
.prize-category-items {
  list-style: none;
  font-size: 12.5px;
  font-weight: 700;
  color: #333;
}
.prize-category-items li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding: 6px 0;
  border-bottom: 1px dashed var(--gray-200);
}
.prize-category-items li span {
  flex: 1;
  padding-right: 12px;
}
.prize-category-items li strong {
  color: var(--orange-ink);
  font-weight: 900;
  white-space: nowrap;
}

.prize-award-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 16px;
}
.prize-award-item {
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: 16px;
  align-items: center;
  padding: 10px 0;
  background: transparent !important;
  border: none !important;
  border-bottom: 1px dashed var(--gray-200) !important;
  border-radius: 0 !important;
}
.prize-award-item:last-child {
  border-bottom: none !important;
}
.prize-award-item__visual {
  width: 80px;
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  border: 1px solid var(--gray-200);
  border-radius: 4px;
  padding: 6px;
  overflow: visible;
}
.prize-award-item__visual img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  transform: scale(1.5);
  transform-origin: center center;
}
.prize-award-item__body {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.prize-award-item__title {
  color: var(--orange-ink);
  font-weight: 900;
  font-size: 13.5px;
  margin-bottom: 2px;
  line-height: 1.3;
}
.prize-award-item__desc {
  font-size: 11.5px;
  line-height: 1.5;
  color: #444;
  font-weight: 500;
}

@media(max-width:900px){
  .prize-grid{grid-template-columns:1fr;gap:28px}
  .prize-card{height:auto}
  .prize-award-item{grid-template-columns:70px 1fr;gap:14px}
  .prize-award-item__visual{width:70px;height:70px}
}

.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}

.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{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;}

.store-card__highlight {
  display: block;
  font-style: normal;
  font-weight: 900;
  color: #ffffff;
  background: var(--orange);
  padding: 3px 8px;
  border-radius: 3px;
  margin-bottom: 6px;
  font-size: 11.5px;
  line-height: 1.4;
  letter-spacing: 0.02em;
  width: fit-content;
}

@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}}

.stores .map-static-viewport {
  position: relative;
  margin-bottom: 32px;
  border: 2.5px solid var(--ink);
  box-shadow: 10px 10px 0 rgba(10,10,10,.05);
}

.stores .map-bg-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: none !important;
}

.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: 96px; 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(2, 1fr);
  gap:34px 16px !important; align-items:start; justify-items:center;
}
.partner-card{
  width:100%; display:flex; flex-direction:column; align-items:center; justify-content:flex-start;
  background:transparent; border:0; padding:0; user-select:none;
}
.partner-card__logo-space{ 
  width:100%; 
  height:76px; 
  display:flex; 
  align-items:center; 
  justify-content:center; 
}
.partner-card__logo-space img { 
  max-width:100%; 
  max-height:100%; 
  object-fit:contain; 
  transform: scale(1.1);
  transform-origin: center center;
}
.partner-card__name {
  font-size: 11px;
  font-weight: 700;
  color: var(--gray-500);
  text-align: center;
  line-height: 1.35;
  margin-top: 18px;
  word-break: break-all;
  white-space: normal;
}

.partner-grid .partner-card:nth-child(3) .partner-card__name {
  margin-top: 18px;
}

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

.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}}

.notes{background:var(--paper-warm);--tone-x:88%;--tone-y:12%}
.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;
  list-style: none;
}
.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;
  font-family: var(--jp);
}
.notes-list li::before {
  content: "・";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--orange);
  font-weight: 900;
  font-size: 1.2em;
}

.contact-box {
  margin-top: 40px;
  background: var(--paper-warm);
  border: 1.5px solid var(--gray-200);
  padding: clamp(20px, 3vw, 28px);
  border-radius: 4px;
  font-family: var(--jp);
}
.contact-box__inner {
  background: #ffffff;
  border: 1px solid var(--gray-200);
  padding: 20px 16px;
  text-align: center;
  color: var(--ink);
  font-family: var(--jp);
}
.contact-box__title {
  font-family: var(--jp) !important;
  font-size: clamp(16px, 2vw, 20px);
  font-weight: 900;
  letter-spacing: 0.03em;
  margin-bottom: 6px;
  color: var(--ink);
}
.contact-box__mail-wrap {
  border-top: 1px solid var(--gray-200);
  border-bottom: 1px solid var(--gray-200);
  padding: 10px 0;
  margin: 10px 0;
}
.contact-box__mail {
  font-size: clamp(14px, 1.8vw, 17px);
  font-weight: 700;
  word-break: break-all;
  font-family: var(--jp);
  color: var(--ink);
}
.contact-box__mail a {
  color: var(--ink);
  text-decoration: underline;
  transition: color 0.2s ease;
}
.contact-box__mail a:hover {
  color: var(--orange);
}
.contact-box__period {
  font-size: 13px;
  font-weight: 700;
  color: var(--gray-500);
  font-family: var(--jp);
}
.contact-notes {
  margin-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  line-height: 1.6;
  color: var(--gray-500);
  font-weight: 500;
  font-family: var(--jp);
}

.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:12px;padding:30px clamp(20px,5vw,48px);}
.footer-copyright{
  max-width:100%;
  font-weight:500;
  font-size:13.5px;
  line-height:1.55;
  color:#fff;
}
.footer-links {
  display: flex;
  gap: 20px;
  list-style: none;
}
.footer-links a {
  font-size: 13.5px;
  font-weight: 500 !important;
  color: rgba(255, 255, 255, 0.9);
  text-decoration: underline !important;
  text-underline-offset: 4px;
  transition: color 0.2s ease;
}
.footer-links a:hover {
  color: var(--orange);
}

.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;
  display:flex;align-items:center;justify-content:center;
}

@media (max-width: 768px) {
  .footer-inner {
    grid-template-columns: minmax(0, 1fr) 110px;
  }
  .page-top.is-docked {
    width: 110px !important;
    padding: 0 10px !important;
    font-size: 11px !important;
  }
  .footer-links {
    gap: 12px;
    flex-wrap: nowrap;
  }
  .footer-links a {
    font-size: 12px;
    white-space: nowrap;
  }
}

.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 & STYLING */
.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;
}

.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);
}

@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);
  }
}

.legal-hero {
  padding: calc(10px + clamp(48px, 6vw, 72px)) var(--gut) clamp(40px, 5vw, 30px);
  background: var(--paper-warm);
  border-bottom: 1px solid var(--ink);
  --tone-x: 90%;
  --tone-y: 10%;
}

.legal-hero .section-inner {
  width: min(100%, var(--max));
  margin: auto;
  padding-top: 0;
}

.legal-hero .sec-head {
  margin-bottom: 0;
}

.legal-hero .sec-head__title {
  white-space: nowrap !important;
  font-size: clamp(32px, 6.5vw, 88px);
  word-break: break-word;
}

.legal-hero__meta {
  margin-top: 22px;
  display: flex;
  flex-wrap: wrap;
  gap: 10px 28px;
  font-size: 13px;
  color: var(--gray-500);
  font-weight: 700;
}

.legal-body {
  padding: clamp(48px, 7vw, 80px) var(--gut);
  background: var(--paper);
}

.legal-body .section-inner {
  width: min(100%, var(--max));
  margin: auto;
}

.legal-content {
  background: #fff;
  border: 2.5px solid var(--ink);
  padding: clamp(28px, 5vw, 56px);
  box-shadow: 10px 10px 0 rgba(10, 10, 10, .05);
}

.legal-article {
  margin-top: 40px;
}

.legal-article:first-of-type {
  margin-top: 24px;
}

.legal-article__title {
  display: flex;
  align-items: baseline;
  gap: 12px;
  font-weight: 900;
  font-size: clamp(16px, 2vw, 20px);
  padding-bottom: 12px;
  margin-bottom: 18px;
  border-bottom: 2px solid var(--ink);
  color: var(--ink);
}

.legal-article__title .legal-article__num {
  font-family: var(--en);
  color: var(--orange);
  font-size: 1.1em;
  letter-spacing: .06em;
}

.legal-article p {
  font-size: 14.5px;
  line-height: 2;
  color: #333;
}

.legal-article p + p {
  margin-top: 10px;
}

.legal-list {
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  list-style: none;
}

.legal-list li {
  position: relative;
  padding-left: 20px;
  font-size: 14.5px;
  line-height: 1.9;
  color: #333;
}

.legal-list li::before {
  content: "・";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--orange);
  font-weight: 900;
}

.legal-list--plain li {
  padding-left: 0 !important;
}

.legal-list--plain li::before {
  content: none !important;
}

.legal-effective {
  margin-top: 40px;
  padding-top: 20px;
  border-top: 1px dashed var(--gray-400);
  font-size: 13.5px;
  font-weight: 700;
  color: #333;
}

@media (max-width: 768px) {
  .legal-hero {
    padding-top: calc(80px + 24px);
  }

  .legal-content {
    padding: 24px 16px;
  }

  .legal-article {
    margin-top: 32px;
  }

  .legal-article__title {
    font-size: 16px;
    padding-bottom: 8px;
    margin-bottom: 12px;
  }

  .legal-article p,
  .legal-list li,
  .legal-service-item__detail {
    font-size: 13.5px;
    line-height: 1.8;
  }

  .legal-service-item {
    padding: 14px 14px;
  }
}

/* ★SP（スマートフォン）画面横揺れ・ぐらつき防止策★ */
html, body {
  overflow-x: hidden !important;
  width: 100%;
}

main {
  overflow-x: hidden;
  width: 100%;
}

.spot-grid {
  max-width: 100vw;
}

.map-wrapper,
.map-static-viewport,
.map-iframe {
  max-width: 100%;
}

.hero-title,
.sec-head__title {
  max-width: 100%;
  word-break: break-word;
}

.btn-br-sp {
  display: none;
}

@media (max-width: 768px) {
  .btn-br-sp {
    display: block !important;
  }

  .c-btn--large {
    padding: 0 16px !important;
    min-height: 72px !important;
  }

  .c-btn__label {
    font-size: 13.5px !important; 
    line-height: 1.4 !important;
    white-space: nowrap;
  }

  .c-btn__label .btn-br-sp {
    display: block !important;
  }
}

/* ★SP版（860px以下）：リード文の横幅100%統一＆勝手な折り返し完全無効化★ */
@media screen and (max-width: 860px) {

  .sec-head {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  .sec-lead {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    box-sizing: border-box !important;
    text-wrap: unset !important;
    text-align: left !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
  }

}