@charset "UTF-8";

@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100..900&display=swap');
@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@300;400;500;600;700&display=swap');

/* =========================================================
   GRANDTREE MUSASHI-KOSUGI / SUMMER FESTA 2026
   Design: EDITORIAL — 大胆なタイポグラフィ × 余白 × 写真組み
   ========================================================= */

:root{
  --ink:#0c3d98;
  --ink-soft:#445a8a;
  --ink-dark:#162c66;
  --ink-mute:#666;
  --price:#0e9ff2;
  --paper:#f4fbff;
  --paper-2:rgba(255,255,255,.5);
  --card:rgba(255,255,255,.78);
  --line:#bad5e4;
  --line-d:#509ed8;
  --accent:#f6081f;
  --accent-d:#8a3a23;
  --accent-soft:#c8714f;
  --ocean:#2f6276;
  --ocean-d:#244c5b;
  --ocean-light:#7fb1c2;
  --sun:#dca23a;
  --white:#fff;
  --maxw:1400px;
  --header-h:112px;
  --pale-blue:#ceedfc;
  --page-bg-top:#f4fbff;
  --page-bg-mid:#e7f5fd;
  --page-bg-bottom:#dcf0fb;
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{
  box-sizing:border-box;
}
html{
  scroll-behavior:smooth;
  scroll-padding-top:var(--header-h);
  overflow-x:clip;
}
body{
  margin:0;
  font-family:"Noto Sans JP",sans-serif;
  color:var(--ink);
  line-height:1.95;
  letter-spacing:.02em;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  background:
    linear-gradient(rgba(255,255,255,.45), rgba(255,255,255,.45)),
    url(../images/bg/bg.jpg) center center / cover no-repeat fixed;
  overflow-x:hidden;
}
.visually-hidden{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0 0 0 0)!important;
  clip-path:inset(50%)!important;
  white-space:nowrap!important;
  border:0!important;
}
h1,h2,h3,h4,h5,h6{
  font-family:"Noto Serif JP",serif;
}
img{
  max-width:100%;
  height:auto;
  display:block;
}
a{
  color:inherit;
  text-decoration:none;
  transition:color .3s var(--ease);
}
ul{
  list-style:none;
  margin:0;
  padding:0;
}
h1,h2,h3,h4,p,dl,dd{
  margin:0;
}
em{
  font-style:normal;
}
::selection{
  background:var(--accent);
  color:#fff;
}
.container{
  width:88%;
  max-width:var(--maxw);
  margin:0 auto;
}
/* placeholder boxes */
.ph{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  height:100%;
  min-height:120px;
  background:var(--paper-2);
  color:var(--ink-mute);
  font-size:.72rem;
  letter-spacing:.28em;
  text-transform:uppercase;
}
.ph--map{
  min-height:280px;
  box-shadow: 0 0 1px #80d7fc;
}
.ph--cover{
  min-height:100%;
  letter-spacing:.4em;
}
/* =========================================================
   HEADER
   ========================================================= */
.site-header{
  position:fixed;
  top:0;
  left:0;
  width:100%;
  z-index:100;
  height:var(--header-h);
  background:rgba(255,255,255,.82);
  border-bottom:1px solid transparent;
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  transition:transform .45s var(--ease),background .45s var(--ease),border-color .45s var(--ease),box-shadow .45s var(--ease);
}
.site-header.is-solid{
  background:rgba(255,255,255,.95);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  border-bottom:1px solid var(--line);
  box-shadow:0 8px 22px rgba(134,190,220,.16);
}
.site-header__inner{
  height:100%;
  width:92%;
  margin:0 auto;
  display:flex;
  align-items:center;
}
.site-header__logo{
  margin-right:24px;
}
.site-header__logo img{
  height:70px;
  width:auto;
  mix-blend-mode:multiply;
}
.gnav{
  display:flex;
  align-items:center;
  margin-left:auto;
}
.gnav a{
  display:inline-flex;
  align-items:center;
  font-weight:500;
  font-size:1rem;
  letter-spacing:.08em;
  color:var(--ink-dark);
  padding:10px 14px;
  position:relative;
  margin-left:4px;
}
.gnav a:first-child{
  margin-left:0;
}
.gnav a:not(.gnav__cta)::after{
  content:"";
  position:absolute;
  left:14px;
  right:14px;
  bottom:6px;
  height:1px;
  background:var(--accent);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .35s var(--ease);
}
.gnav a:not(.gnav__cta):hover::after{
  transform:scaleX(1);
}
.gnav a:hover{
  color:var(--accent);
}
.gnav__cta{
  border:1px solid var(--ink);
  border-radius:0;
  padding:2px 15px!important;
  margin-left:8px;
  text-transform:uppercase;
  letter-spacing:.16em;
  font-size:.72rem;
  transition:background .3s var(--ease),color .3s var(--ease);
}
.gnav__cta:hover{
  background:var(--ink);
  color:var(--paper)!important;
}
.hamburger{
  display:none;
  width:46px;
  height:46px;
  border:0;
  background:transparent;
  cursor:pointer;
  padding:11px;
  margin-left:auto;
}
.hamburger span{
  display:block;
  height:1.5px;
  background:var(--ink);
  margin:6px 0;
  transition:.35s var(--ease);
}
.hamburger[aria-expanded="true"] span:nth-child(1){
  transform:translateY(7.5px) rotate(45deg);
}
.hamburger[aria-expanded="true"] span:nth-child(2){
  opacity:0;
}
.hamburger[aria-expanded="true"] span:nth-child(3){
  transform:translateY(-7.5px) rotate(-45deg);
}
/* =========================================================
   01 HERO / KV（フルブリードのキービジュアル）
   ========================================================= */
.cover{
  position:relative;
  padding-top:var(--header-h);
  background:transparent;
  overflow:hidden;
}
.cover__kv{display:block;}
.cover__kv img{
  display:block;
  width:100%;
  height:auto;
}
/* KV上のスクロール導線 */
.cover__scroll{
  position:absolute;
  left:50%;
  bottom:18px;
  transform:translateX(-50%);
  display:inline-flex;
  align-items:center;
  padding:11px 22px;
  background:rgba(25,23,18,.78);
  color:var(--paper);
  font-size:.74rem;
  letter-spacing:.14em;
  border-radius:999px;
  backdrop-filter:blur(4px);
  transition:background .3s var(--ease),transform .3s var(--ease);
}
.cover__scroll span{
  margin-right:10px;
}
.cover__scroll::after{content:"↓";}
.cover__scroll:hover{
  background:var(--accent);
  transform:translateX(-50%) translateY(-3px);
}
/* index.php フォールバックリンク用に残置 */
.cover__cta{
  display:inline-flex;
  align-items:center;
  font-size:.8rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--ink);
  padding-bottom:6px;
  border-bottom:1px solid var(--ink);
}
.cover__cta > * + *{
  margin-left:14px;
}
.cover__cta i{transition:transform .35s var(--ease);}
.cover__cta:hover{color:var(--accent);border-color:var(--accent);}
.cover__cta:hover i{transform:translateX(8px);}
/* =========================================================
   02 CONTENTS (sticky index)
   ========================================================= */
.index-bar{
  position:sticky;
  top:var(--header-h);
  z-index:50;
  background:linear-gradient(180deg, #eaf7fd, #d4edfb);
  color:var(--ink-dark);
  box-shadow:0 10px 24px rgba(111,176,212,.16);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}
.index-bar__label{
  display:none;
}
.index-bar__list{
  display:flex;
  justify-content:center;
  flex-wrap:wrap;
  width:92%;
  max-width:var(--maxw);
  margin:0 auto;
  background:rgba(255,255,255,.5);
}
.index-bar__list li{
  flex:0 0 auto;
}
.index-bar__list a{
  display:inline-flex;
  align-items:center;
  font-weight:400;
  font-size:.8rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:rgba(22,44,102,.7);
  padding: 13px 18px 10px;
  position:relative;
}
.index-bar__list a::after{
  content:"";
  position:absolute;
  left:18px;
  right:18px;
  bottom:9px;
  height:1px;
  background:var(--ocean-light);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .35s var(--ease);
}
.index-bar__list a:hover,.index-bar__list a.is-active{
  color:var(--ink-dark);
}
.index-bar__list a:hover::after,.index-bar__list a.is-active::after{
  transform:scaleX(1);
}
/* =========================================================
   SECTIONS / HEADINGS
   ========================================================= */
.section{
  padding:clamp(72px,11vh,140px) 0;
  position:relative;
}
.section--sale{
  background: rgba(255, 255, 255, .28);
}

.wave-menu + .section--festa{
  margin-top:-100px;
  padding-top:clamp(24px,4vh,56px);
}
.section--present{
  background:transparent;
}
.section--event{
  background:rgba(255,255,255,.28);
}
.section--campaign{
  background:transparent;
}
.sec-head{
  margin-bottom:clamp(44px,6vw,72px);
  padding-bottom:10px;
  border-bottom:1px solid var(--ink);
}
.sec-head__main{
  display:flex;
  align-items:baseline;
  flex-wrap:wrap;
}

.sec-head__en{
  font-weight:700;
  letter-spacing:.005em;
  font-size:clamp(2rem,5.5vw,3.8rem);
  line-height:1.5;
  background: linear-gradient(145deg, #162c66 0%, #1246a9 45%, #1246a9 70%, #042862 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  margin-right:20px;
}

.sec-head__ja{
  font-weight:500;
  color:var(--ink-soft);
  font-size:.95rem;
  letter-spacing:.1em;
}
.sec-head__catch{
  font-size:clamp(.96rem,1.6vw,1.15rem);
  color:var(--ink-soft);
  margin-top:10px;
  line-height:1.9;
}
.sec-head__catch em{
  color:var(--accent);
  font-weight:500;
  border-bottom:1px solid var(--accent);
  padding-bottom:1px;
}
.heading-reveal .sec-head__en{
  perspective:900px;
}
.heading-reveal__char{
  display:inline-block;
  vertical-align:baseline;
}
.heading-reveal__char-inner{
  display:inline-block;
  background:linear-gradient(145deg, #162c66 0%, #1246a9 45%, #1246a9 70%, #042862 100%);
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:transparent;
  will-change:transform,opacity;
  backface-visibility:hidden;
}
.no-js .heading-reveal__char,
.heading-reveal--done .heading-reveal__char{
  overflow:visible;
}
.sec-foot-note{
  text-align:right;
  color:var(--ink-mute);
  font-size:.72rem;
  letter-spacing:.08em;
  margin-top:40px;
}
/* =========================================================
   CARD GRIDS — flex + margin（負マージン手法）
   ========================================================= */
.card-grid{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-start;
}
.card-grid > *{
  width:24%;
  margin-bottom:40px;
  min-width:0;
}
/* 4カラム：右マージンで間隔をとり、行末（4n）は0 */
.card-grid:not(.card-grid--2) > *{
  margin-right:calc(4% / 3);
}
.card-grid:not(.card-grid--2) > *:nth-child(4n){
  margin-right:0;
}
.card-grid--2{
  margin-left:calc(-1 * clamp(28px,3vw,48px));
  margin-bottom:calc(-1 * clamp(28px,3vw,48px));
}
.card-grid--2 > *{
  width:calc(50% - clamp(28px,3vw,48px));
  margin-left:clamp(28px,3vw,48px);
  margin-bottom:clamp(28px,3vw,48px);
}
/* 03 SALE card — editorial feature */
.scard{
  display:flex;
  flex-direction:column;
  background:rgba(255,255,255,.72);
  border:1px solid rgba(186,213,228,.72);
  box-shadow:3px 3px 7px rgba(206,237,252,.45);
}
.scard__img{
  position:relative;
  aspect-ratio:4/5;
  overflow:hidden;
  background:rgba(255,255,255,.85);
  border:1px solid var(--line);
}
.scard__img img{
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform 1.1s var(--ease);
}
.scard:hover .scard__img img{
  transform:scale(1.05);
}
.scard__badge{
  position:absolute;
  top:0;
  left:0;
  background:var(--accent);
  color:#fff;
  font-size:.64rem;
  font-weight:500;
  letter-spacing:.1em;
  padding:6px 13px;
}
.scard__body{
  padding:16px;
  display:flex;
  flex-direction:column;
  flex:1;
}
.scard__floor{
  font-size:.66rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--ink-mute);
  margin-bottom:9px;
}
.scard__name{
  font-size:1.06rem;
  font-weight:500;
  line-height:1.6;
  margin-bottom:9px;
  letter-spacing:.02em;
}
.scard__desc{
  font-size:.8rem;
  color:var(--ink-soft);
  line-height:1.85;
  flex:1;
}
.scard__note{
  display:block;
  font-size:.72rem;
  color:var(--accent);
  margin-top:7px;
}
.scard__price{
  margin-top:14px;
  padding-top:12px;
  border-top:1px solid var(--line);
  font-weight:500;
  color:var(--ink);
}
.scard__price b{
  font-weight:500;
  font-size:1.4rem;
  color:var(--accent);
  margin-right:3px;
}
.scard__price small{
  font-size:.72rem;
  color:var(--ink-mute);
  font-weight:400;
}
/* 04 FESTA category */
.cat-block{
  margin-bottom:clamp(56px,7vw,96px);
}
.cat-block:last-child{
  margin-bottom:0;
}
.cat-title{
  display:flex;
  align-items:baseline;
  margin-bottom:36px;
  border-bottom:1px solid var(--line-d);
}
.cat-title__en{
  font-weight:500;
  font-size:clamp(1.5rem,3vw,2.2rem);
  color:var(--ink);
  letter-spacing:.01em;
  margin-right:18px;
}
.cat-title__ja{
  font-weight:500;
  color:var(--ink-soft);
  font-size:.9rem;
  letter-spacing:.08em;
}
.pcard{
  display:flex;
  flex-direction:column;
  background:rgba(255,255,255,.76);
  border:1px solid rgba(186,213,228,.72);
  box-shadow:3px 3px 7px rgba(206,237,252,.42);
  padding:14px;
  min-width:0;
}
.pcard__img{
  position:relative;
  aspect-ratio:1/1;
  margin:-14px -14px 14px;
  overflow:hidden;
  background:rgba(255,255,255,.85);
}
.pcard__img img{
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform 1.1s var(--ease);
}
.pcard:hover .pcard__img img{
  transform:scale(1.05);
}
.pcard__bubble{
  position:absolute;
  right:8px;
  bottom:8px;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:center;
  width:54px;
  height:54px;
  border-radius:50%;
  background:#27a9e0;
  color:#fff;
  font-weight:700;
  font-size:.86rem;
  line-height:1.15;
  letter-spacing:.02em;
  text-align:center;
}
.pcard__img.is-zoomable{cursor:zoom-in;position:relative;}
.pcard__img.is-zoomable::after{
  content:"＋";
  position:absolute;
  right:8px;
  bottom:8px;
  width:26px;
  height:26px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:.9rem;
  color:var(--ink);
  background:rgba(255,255,255,.9);
  border-radius:50%;
  opacity:0;
  transition:opacity .3s var(--ease);
}
.pcard__img.is-zoomable:hover::after,
.pcard__img.is-zoomable:focus-visible::after{opacity:1;}
.pcard__img.is-zoomable:focus-visible{outline:2px solid var(--ocean);outline-offset:2px;}

/* 商品フル写真モーダル */
.gt-modal{
  position:fixed;
  inset:0;
  z-index:1000;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:14px;
  padding:clamp(20px,5vw,64px);
  background:rgba(20,18,14,.88);
  backdrop-filter:blur(3px);
  opacity:0;
  visibility:hidden;
  transition:opacity .3s var(--ease),visibility .3s var(--ease);
}
.gt-modal.is-open{opacity:1;visibility:visible;}
.gt-modal__fig{
  margin:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  max-width:100%;
  transform:scale(.97);
  transition:transform .3s var(--ease);
}
.gt-modal.is-open .gt-modal__fig{transform:scale(1);}
.gt-modal__img{
  max-width:min(92vw,920px);
  max-height:80vh;
  width:auto;
  height:auto;
  object-fit:contain;
  background:#fff;
  box-shadow:0 20px 60px rgba(0,0,0,.4);
}
.gt-modal__cap{
  color:var(--paper);
  font-size:.84rem;
  letter-spacing:.04em;
  text-align:center;
  max-width:90vw;
}
.gt-modal__close{
  position:absolute;
  top:clamp(14px,3vw,28px);
  right:clamp(16px,3vw,32px);
  width:46px;
  height:46px;
  border:1px solid rgba(244,239,230,.5);
  background:transparent;
  color:var(--paper);
  font-size:1.5rem;
  line-height:1;
  cursor:pointer;
  border-radius:50%;
  transition:background .3s var(--ease),color .3s var(--ease);
}
.gt-modal__close:hover{background:var(--paper);color:var(--ink);}
.pcard__floor{
  font-size:.6rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:#fff;
  background:var(--ink-dark);
  padding:3px 9px;
  align-self:flex-start;
  margin-bottom:9px;
}
/* Recommend Item : ロゴ枠（左）＋ 1F/2F（右）を下合わせで横並び。ロゴ枠は .sale-row__logo と同一 */
.pcard__meta{
  display:flex;
  align-items:flex-end;
  margin-bottom:9px;
  min-width:0;
}
.pcard__logo{
  order:1;
  width:90px;
  height:50px;
  max-width:70%;
  object-fit:contain;
  background:#fff;
  border:1px solid var(--line);
  padding:7px;
  box-sizing:border-box;
  display:block;
}
.pcard__meta .pcard__floor{
  margin-bottom: 2px;
  order:2;
  margin-left: 5px;
  align-self: flex-end;
}
.pcard__shop{
  font-size:.94rem;
  line-height: 1.4;
  font-weight:600;
  letter-spacing:.06em;
  color:var(--ink-soft);
  margin-bottom:6px;
  overflow-wrap:anywhere;
}
.pcard__name{
  font-size:1rem;
  font-weight:700;
  line-height:1.6;
  margin-bottom:8px;
  overflow-wrap:anywhere;
}
.pcard__desc{
  font-size:.78rem;
  color:var(--ink-soft);
  line-height:1.85;
  flex:1;
  overflow-wrap:anywhere;
}
.pcard__limit{
  margin-top:7px;
  font-size:.72rem;
  line-height:1.7;
  color:var(--ink-soft);
}
.pcard__limit span{
  display:inline-block;
  margin-right:6px;
  padding:1px 5px 2px;
  border:1px solid var(--accent);
  color:var(--accent);
  font-weight:700;
  line-height:1.35;
}
.pcard__limit small{
  font-size:.7rem;
  color:var(--ink-soft);
}
.pcard__price{
  margin-top:12px;
  padding-top:10px;
  border-top:1px solid var(--line);
  font-weight:500;
  overflow-wrap:anywhere;
}
.pcard__price b{
  font-weight:500;
  font-size:clamp(1.05rem,1.6vw,1.25rem);
  margin-right:3px;
  line-height:1.35;
}
.pcard__price small{
  font-size:.7rem;
  color:var(--ink-mute);
  font-weight:400;
}
/* =========================================================
   05 PRESENT
   ========================================================= */
.present-card{
  display:flex;
  align-items:center;
  background:rgba(255,255,255,.85);
  border:1px solid var(--line);
  box-shadow:3px 3px 7px rgba(206,237,252,.48);
  margin: 0 auto 50px;
  width: 80%;
  padding: 2em;
}
.present-card__icon{
  flex:0 0 auto;
  font-size:clamp(3rem,7vw,5rem);
  line-height:1;
  margin-right:clamp(28px,5vw,68px);
}
.present-card__photo{
  flex:0 0 clamp(190px,26vw,300px);
  margin-right:clamp(28px,5vw,68px);
}
.present-card__photo img{
  width:80%;
  aspect-ratio:4/5;
  object-fit:cover;
  border:1px solid var(--line);
  border-radius:46% 54% 56% 44% / 39% 49% 51% 61%  ;
}
.present-card__body{
  flex:1;
}
.present-card__meta{
  display:flex;
  align-items:center;
  gap:14px;
  margin-bottom:14px;
}
.present-card__logo{
  width:72px;
  height:72px;
  object-fit:contain;
  flex:0 0 auto;
}
.present-card__shop{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  font-size:.92rem;
  letter-spacing:.08em;
  color:var(--ink-soft);
  margin-bottom:0;
  font-weight: 600;
}
.present-card__floor{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  background:var(--ink-dark);
  padding:3px 9px;
  font-size:.68rem;
  line-height:1.2;
  letter-spacing:.12em;
}
.present-card__title{
  font-size:clamp(1.6rem,3.5vw,2.2rem);
  font-weight:700;
  color:var(--ink);
  margin-bottom:18px;
  line-height:1.2;
}
.present-card__lead{
  font-size:1rem;
  line-height:2.05;
  color:var(--ink-soft);
}
.present-card__lead b{
  color:var(--accent);
  font-weight:500;
}
.present-card__note{
  font-size:.78rem;
  color:var(--ink-mute);
  margin-top:14px;
}
/* =========================================================
   06 EVENT
   ========================================================= */
.event-list{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(18px,2vw,28px);
}
.event-item{
  display:flex;
  flex-direction:column;
  color:var(--ink);
  background-color: rgba(255,255,255,.82);
  border-radius: 10px;
  box-shadow: 3px 3px 7px rgba(206, 237, 252, .6);
  overflow: hidden;
  min-width:0;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease);
}
.event-item:hover{
  transform: translateY(-3px);
  box-shadow: 3px 3px 8px rgba(185, 224, 245, .7);
}
.event-item--ended{
  cursor:default;
}
.event-item--ended:hover{
  transform:none;
  box-shadow:3px 3px 7px rgba(206, 237, 252, .6);
}
.event-item__date{
  display:flex;
  align-items:baseline;
  gap:8px;
  order:2;
  padding:16px 16px 0;
  width:auto;
  margin-right:0;
}
.event-item__md{
  font-weight:500;
  font-size:1rem;
  line-height:1;
  color:var(--ink);
}
.event-item__dow{
  font-size:.7rem;
  letter-spacing:1px;
  text-transform:uppercase;
  color:var(--ocean);
  margin-top:0;
}
.event-item__thumb{
  position:relative;
  order:1;
  aspect-ratio:550/500;
  overflow:hidden;
  background:rgba(255,255,255,.85);
  border:0;
}
.event-item__thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.event-item__ended-badge{
  position:absolute;
  left:50%;
  top:50%;
  z-index:2;
  transform:translate(-50%,-50%) rotate(-15deg);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:min(82%, 260px);
  min-height:48px;
  padding:10px 16px;
  border:3px solid #fff;
  border-radius:999px;
  background:#e84f3f;
  color:#fff;
  font-size:clamp(.9rem,1.4vw,1.08rem);
  font-weight:700;
  line-height:1.25;
  text-align:center;
  box-shadow:0 8px 18px rgba(34, 45, 60, .22);
}
.event-item__body{
  order:3;
  margin-right:0;
  padding:8px 16px 18px;
}
.event-item__title{
  font-size:clamp(1rem,1.35vw,1.18rem);
  font-weight:700;
  line-height:1.55;
  margin-bottom:8px;
}
.event-item__meta{
  font-size:.76rem;
  color:var(--ink-soft);
  line-height:1.7;
}
.event-item__arrow{
  flex:0 0 auto;
}
.event-item__desc{
  display:none;
}



.event-detail .section{
  padding-top:clamp(72px,10vw,120px);
}

.event-detail__img{
  display:block;
  width:min(100%,720px);
  aspect-ratio:4/3;
  object-fit:cover;
  margin:32px 0;
  border:1px solid var(--line);
}
.event-detail p{
  line-height:2;
  color:var(--ink-soft);
}
.event-detail__meta{
  border-top:1px solid var(--line-d);
  margin: 50px 0 30px;
}
.event-detail__meta div{
  display:grid;
  grid-template-columns:120px 1fr;
  gap:18px;
  padding:14px 0;
  border-bottom:1px solid var(--line);
}
.event-detail__meta dt{
  color:var(--ink);
  font-size:.78rem;
  letter-spacing:.08em;
  font-weight: bold;
}
.event-detail__meta dd{
  color:var(--ink-soft);
  font-size: 0.9rem;
  line-height:1.8;
  overflow-wrap: anywhere
}

.event-detail__meta dd a:hover{
	text-decoration: underline;
}

.no_bottomline {
	padding: 0 !important;
    border-bottom: none !important;
	margin-top: 10px;
}

.event-detail__heading{
  font-size:1.25rem;
  font-weight:500;
  margin:34px 0 12px;
}
.event-detail__list,
.event-detail__notice{
  margin:14px 0 28px;
  color:var(--ink-soft);
  line-height:1.9;
}
.event-detail__list li,
.event-detail__notice li{
  position:relative;
  padding-left:1.2em;
  margin:6px 0;
}
.event-detail__list li::before{
  content:"";
  position:absolute;
  left:0;
  top:.85em;
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--accent);
}
.event-detail__notice li::before{
  content:"※";
  position:absolute;
  left:0;
  color:var(--accent);
}

/* =========================================================
   07 CAMPAIGN
   ========================================================= */
.campaign-card{
  background-color: rgba(255,255,255,.82);
  border-radius: 20px;
  box-shadow: 3px 3px 7px rgba(206, 237, 252, .6);
  padding: 2em;
  transition: transform .35s var(--ease), box-shadow .35s var(--ease);
}
.campaign-card:hover{
  transform: translateY(-3px);
  box-shadow: 3px 3px 8px rgba(185, 224, 245, .7);
}
.campaign-card--ended{
  cursor:default;
}
.campaign-card--ended:hover{
  transform:none;
  box-shadow:3px 3px 7px rgba(206, 237, 252, .6);
}
.campaign-card__img{
  position:relative;
  display:block;
  overflow:hidden;
  background:rgba(255,255,255,.85);
  border:0;
  margin-bottom:22px;
}
.campaign-card__ended-badge{
  position:absolute;
  left:50%;
  top:50%;
  z-index:2;
  transform:translate(-50%,-50%) rotate(-15deg);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:min(82%, 300px);
  min-height:48px;
  padding:10px 16px;
  border:3px solid #fff;
  border-radius:999px;
  background:#e84f3f;
  color:#fff;
  font-size:clamp(.9rem,1.35vw,1.08rem);
  font-weight:700;
  line-height:1.25;
  text-align:center;
  box-shadow:0 8px 18px rgba(34, 45, 60, .22);
}
.campaign-card__icon{
  display:block;
  font-size:2.2rem;
  margin-bottom:18px;
}
.campaign-card__title{
  font-size: clamp(1rem, 1.35vw, 1.18rem);
    font-weight: 700;
    line-height: 1.55;
    margin-bottom: 8px;
}
.campaign-card__meta{
  display:block;
  font-size:.8rem;
  letter-spacing:1px;
  color:var(--accent);
  margin-bottom:14px;
  line-height: 1.6;
}
.campaign-card__meta span{
  display:block;
  white-space:nowrap;
}
.campaign-card__desc{
  font-size:.88rem;
  color:var(--ink-soft);
  line-height:1.95;
}
/* =========================================================
   NOTICE
   ========================================================= */
.notice-list{
  margin-top:0;
}
.notice-list li{
  position:relative;
  padding: 0 0 5px 1.25em;
  font-size:.78rem;
  color:var(--ink-mute);
  line-height:1.8;
}
.notice-list li::before{
  content:"※";
  position:absolute;
  left:0;
  top:0;
  color:var(--accent);
}
/* =========================================================
   09 FOOTER / ACCESS
   ========================================================= */
.site-footer{
  background: url(../images/bg/footer_bg.jpg);
  color:var(--ink);
  padding:clamp(72px,10vh,120px) 0 48px;
  position:relative;
}
.sec-head--footer{
  margin-bottom:clamp(40px,5vw,64px);
}
.footer-grid{
  display:flex;
  align-items:flex-start;
}
.footer-info{
  flex:0.9 1 0;
  margin-right:clamp(32px,5vw,64px);
}
.footer-map{
	text-align: center;
}

.footer-map img {
	box-shadow: 2px 2px 5px rgba(206, 237, 252, .8);
	width: 100%;
	max-width: 420px;
	margin-bottom: 10px;
}

.footer-info a:has(> .footer-info__logo){
  display:inline-block;
  line-height:0;
}
.footer-info__logo{
  display:block;
  width:360px;
  max-width:100%;
  margin-bottom:30px;
}
.outline div{
  display:flex;
  padding: 0 0 16px;
}
.outline dt{
  flex-shrink:0;
  width:84px;
  font-weight:500;
  color:var(--ink);
  font-size:.9rem;
  letter-spacing:.14em;
  margin-right:24px;
}
.outline dd{
  font-size:.92rem;
  line-height:1.85;
  color:var(--ink-soft);
}
.outline__note{
  color:var(--ink-mute);
  font-size:.78rem;
}
.footer-map .ph--map{
  border:1px solid var(--line-d);
}
.footer-colophon{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  margin-top:clamp(48px,6vw,80px);
  padding-top:28px;
  border-top:1px solid var(--ink);
}
.footer-colophon__title{
  font-size:1.3rem;
  color:var(--ink);
  margin-right:16px;
}
.footer-copy{
  color:var(--ink-mute);
  letter-spacing:.14em;
  font-size:.72rem;
  text-transform:uppercase;
}
.to-top{
  position:absolute;
  right:6%;
  top:-22px;
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  font-size:.62rem;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--ink);
}

.to-top{
  display:none;
}


.to-top__line{
  width:1px;
  height:34px;
  background:var(--ink);
  margin-bottom:10px;
  transition:height .4s var(--ease);
}
.to-top:hover{
  color:var(--accent);
}
.to-top:hover .to-top__line{
  height:46px;
  background:var(--accent);
}
/* =========================================================
   ANIMATION
   ========================================================= */
.fadein{
  opacity:0;
  transform:translateY(30px);
  transition:opacity .9s var(--ease),transform .9s var(--ease);
}
.fadein.scrollin{
  opacity:1;
  transform:none;
}
.is-scroll-restore .pcard.fadein{
  opacity:1!important;
  transform:none!important;
  transition:none!important;
}
.js #sale .sale-row.fadein{
  opacity:1;
  transform:none;
}
.js #access .footer-info.fadein,
.js #access .footer-map.fadein{
  opacity:1;
  transform:none;
}
.no-js .fadein{
  opacity:1;
  transform:none;
}
@media(prefers-reduced-motion:reduce){
  .fadein{
    opacity:1!important;
    transform:none!important;
    transition:none;
  }
  html{
    scroll-behavior:auto;
  }
}
/* =========================================================
   03 SALE — 割引率モデル（店舗一覧 ／ 割引率の高い順）
   ========================================================= */
.sale-group{margin-bottom:clamp(38px,5vw,60px);}
.sale-group:last-of-type{margin-bottom:0;}

.sale-group__head{
	display:flex;
	align-items:baseline;
	gap:14px;
	margin-bottom:30px;
	border-bottom:1px solid var(--line-d);
}

.sale-group__en{font-family:var(--serif);font-weight:600;font-size:clamp(1.25rem,2.6vw,1.9rem);color:var(--ink);letter-spacing:.01em;}
.sale-group__ja{font-family:var(--mincho);font-size:.8rem;color:var(--ink-soft);}
.sale-group__count{margin-left:auto;font-family:var(--sans);font-size:.85rem;letter-spacing:.1em;color:var(--ink-mute);}
.sale-row{display:grid;grid-template-columns:104px 1fr auto;gap:20px;align-items:center;padding:16px;border:1px solid rgba(186,213,228,.72);background:rgba(255,255,255,.72);box-shadow:3px 3px 7px rgba(206,237,252,.38);margin-bottom:10px;}
.sale-row__logo{width:104px;height:58px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--line);padding:7px;}
.sale-row__logo img{max-width:100%;max-height:100%;object-fit:contain;}
.sale-row__logo span{font-family:var(--mincho);font-weight:600;font-size:.62rem;color:var(--ink-soft);text-align:center;line-height:1.25;letter-spacing:.01em;}
.sale-row__name{font-family:var(--mincho);font-size:clamp(1rem,1.7vw,1.18rem);font-weight:600;color:var(--ink);line-height:1.4;}
.sale-row__meta{font-family:var(--sans);font-size:.74rem;color:var(--ink-soft);margin-top:6px;display:flex;flex-wrap:wrap;gap:5px 10px;align-items:center;}
.sale-row__floor{color:var(--paper);background:var(--ink-dark);font-size:.62rem;letter-spacing:.06em;padding:2px 8px;}
.sale-row__period{color:var(--ocean);border:1px solid var(--ocean);font-size:.62rem;padding:1px 7px;}
.sale-row__excl{color:var(--ink-mute);font-size:.7rem;}
.sale-row__off{font-family:var(--serif);font-weight:600;color:var(--accent);font-size:clamp(1.2rem,2.5vw,1.75rem);text-align:right;white-space:nowrap;line-height:1.05;}
.sale-row__off small{display:block;font-family:var(--sans);font-size:.58rem;letter-spacing:.1em;color:var(--ink-mute);font-weight:400;margin-top:3px;}


/* =========================================================
   イベント詳細
   ========================================================= */

.container--narrow{
  max-width:900px;
  margin-top: 100px;
  background-color: #f9fbfe;
  padding: 2rem 3rem;
  border-radius: 20px;
  box-shadow: 5px 5px 10px #ceedfc;
}

.event-detail__date{
  color:var(--ocean);
  font-size:.9rem;
  letter-spacing:.12em;
  margin-bottom:18px;
  background-color: var(--pale-blue);
  border-radius: 6px;
  padding: 5px 10px;
  font-weight: 500;
}

.sec-head_detail_en{
  font-weight:700;
  letter-spacing:.005em;
  font-size:2.2rem;
  line-height:1.3;
  color:var(--ink);
  margin: 40px 0 20px;
}

.event-detail-photo {
	text-align: center;
	margin: 40px auto auto;
	width: 100%;
	max-width: 550px;
}

.event-detail-photo img {
	width: 100%;
	margin-bottom: 25px;
}

.event_leadtxt {
	font-size: 1rem !important;
	text-align: left;
	font-weight: 600;
	margin: 40px 0 30px;
	padding: 0;
}

.event_leadtxt .span_01 {
	font-size: 0.85rem;
	display: inline-block;
	color: #fff;
	font-weight: 700;
	background-color: var(--accent);
	padding-right: 7px;
	padding-left: 10px;
	margin-right: 10px;
	border-radius: 6px;
}


.event-detail_h2 {
  font-size:1.25rem;
  font-weight:700;
  margin:50px 0 15px;
  position: relative;
  isolation: isolate;
}

.event-detail_h2:before {
  content: "";
  position: absolute;
  background: var(--pale-blue);
  width: 50px;
  height: 50px;
  border-radius: 50%;
  top: 50%;
  /* border: dashed 1px white; */
  left: -15px;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  z-index: -1;
}

.event-detail p {
	font-size:0.95rem;
    line-height: 2;
    color: var(--ink-soft);
}

.event-detail__list,
.event-detail__notice {
	margin: 30px 0 0;
}

/* Eventへ戻る 丸ボタン */
.event-detail__back-wrap {
	text-align: center;
	margin: 60px 0 20px;
}
.event-detail__back {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 80px;
	height: 80px;
	border-radius: 50%;
	background: linear-gradient(135deg, #b5dcf2 0%, #87bfe5 40%, #5fa9de 75%, #4099d9 100%);
	color: #fff;
	font-family: "Roboto", sans-serif;
	font-size: 0.95rem;
	font-weight: 600;
	letter-spacing: .08em;
	text-decoration: none;
	text-shadow: 0 1px 1px rgba(20, 80, 120, .25);
	box-shadow: 0 2px 5px rgba(30, 140, 195, .25);
	filter: saturate(1.15) brightness(1.05);
	transition: transform .3s var(--ease), box-shadow .3s var(--ease), filter .3s var(--ease);
}
.event-detail__back:hover {
	color: #fff;
	transform: translateY(-3px);
	box-shadow: 0 4px 8px rgba(30, 140, 195, .3);
	filter: saturate(1.25) brightness(1.08);
}
.event-detail__back span {
	display: inline-block;
}


.event-detail__list li {
    position: relative;
	font-size:0.95rem;
    line-height: 1.8;
    padding-left: 1.2em;
    margin: 5px 0;
}

.event-detail__notice li {
    position: relative;
	font-size:0.85rem;
    line-height: 1.7;
    padding-left: 1.2em;
    margin: 5px 0;
}

/* キャンペーン */
.card-grid--2 {
	width: 80%;
	margin: auto;
}

.campaign-card__img img {
    width: 100%;
    height: auto;
    object-fit: cover;
}

/*hidden*/
.hidden_pc {
	display: none;
}
.hidden_sp {
	display: block;
}



/* =========================================================
   RESPONSIVE-1024
   ========================================================= */
@media(max-width:1024px){
  .section {
    padding: 100px 0;
}
  
  .section--sale {
    margin-top: 0;
  }
  .wave-menu + .section--festa {
    margin-top: -50px;
  }
  
  /* 3カラム：行末（3n）は右マージン0、4n は基準値へ戻す */
  .card-grid:not(.card-grid--2) > *{
    width:calc((100% - 2 * clamp(16px,1.6vw,24px)) / 3);
    margin-right:clamp(16px,1.6vw,24px);
  }
  .card-grid:not(.card-grid--2) > *:nth-child(4n){
    margin-right:clamp(16px,1.6vw,24px);
  }
  .card-grid:not(.card-grid--2) > *:nth-child(3n){
    margin-right:0;
  }
  .event-list{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  
  .present-card {
    margin: 0 auto;
    width: 100%;
    padding: 2em;
}

.card-grid--2 {
    width: 100%;
}
}



/* =========================================================
   RESPONSIVE-768
   ========================================================= */
@media(max-width:768px){
  :root{
    --header-h:82px;
  }
  .site-header__tag{
    display:none;
  }
  .site-header__logo img{
    height:64px;
  }
  .gnav{
    position:fixed;
    top:0;
    right:0;
    width:100dvw;
    max-width:100dvw;
    height:100svh;
    flex-direction:column;
    align-items:stretch;
    justify-content:center;
    background:rgba(255,255,255,.95);
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
    transform:translateX(100%);
    transition:transform .5s var(--ease);
    padding:30px;
    overflow-x:hidden;
  }
  .gnav.is-open{
    transform:translateX(0);
  }
  .gnav a{
    padding:18px 6px;
    font-size:1.18rem;
    letter-spacing:.12em;
    margin-left:0;
  }
  .gnav a:not(.gnav__cta)::after{
    display:none;
  }
  .gnav__cta{
    border:1px solid var(--ink);
    text-align:center;
    margin-top:20px;
    margin-left:0;
    padding:16px!important;
  }
  .hamburger{
    display:block;
  }
  .footer-info{
    overflow-x:hidden;
  }
  .index-bar__list{
    flex-wrap:nowrap;
    overflow-x:auto;
    justify-content:flex-start;
    -webkit-overflow-scrolling:touch;
  }
  .index-bar__list a{
    flex-shrink:0;
  }
  .section--sale{
    margin-top:0;
    padding-top:clamp(56px,10vh,88px);
  }
  .wave-menu + .section--festa{
    margin-top:0;
    padding-top:clamp(56px,10vh,88px);
  }
  .sec-head__en{
    margin-right:12px;
  }
  
 
  /* 2カラム：行末（2n）は右マージン0、3n・4n は基準値へ戻す */
  .card-grid:not(.card-grid--2) > *{
    width:calc(50% - 9px);
    margin-left:0;
    margin-right:18px;
    margin-bottom:24px;
  }
  .card-grid:not(.card-grid--2) > *:nth-child(3n),
  .card-grid:not(.card-grid--2) > *:nth-child(4n){
    margin-right:18px;
  }
  .card-grid:not(.card-grid--2) > *:nth-child(2n){
    margin-right:0;
  }
  .present-card{
    display:block;
    text-align:center;
  }
  .present-card__icon{
    display:block;
    margin-right:0;
    margin-bottom:clamp(20px,5vw,40px);
  }
  .present-card__photo{
    margin:0 auto clamp(20px,5vw,36px);
    max-width:280px;
  }
  .footer-grid{
    display:block;
  }
  .footer-info{
    margin-right:0;
    margin-bottom:32px;
  }
  .cat-title{
    flex-wrap:wrap;
  }
  .cat-title__en{
    margin-right:10px;
  }
  .cat-title__ja{
    margin-left:0;
    width:100%;
    margin-top:10px;
  }
}




/* =========================================================
   RESPONSIVE-640
   ========================================================= */
@media(max-width:640px){
  .index-bar{
  	display: none;
	}

    .section--sale {
        margin-top: 0;
    }
	
  /* SALE */
  .sale-row {
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:10px;
  }
  .sale-row__logo{
    width:100px;
    height:56px;
  }
  .sale-row__off{
    text-align:left;
    font-size:1.25rem;
    margin-top:2px;
  }

  /* CARD GRID */
  .card-grid,.card-grid--2 {
    margin-left:0;
    margin-bottom:0;
  }
  .card-grid > *,.card-grid--2 > *{
    width:100%;
    margin-left:0;
    margin-bottom:50px;
  }
  /* 1カラム：右マージンは全て0 */
  .card-grid:not(.card-grid--2) > *{
    width:100%;
    margin-right:0;
  }
  .card-grid:not(.card-grid--2) > *:nth-child(2n),
  .card-grid:not(.card-grid--2) > *:nth-child(3n),
  .card-grid:not(.card-grid--2) > *:nth-child(4n){
    margin-right:0;
  }
  .scard__img{
    aspect-ratio:4/3;
  }

  /* EVENT LIST */
  .event-list{
    grid-template-columns:1fr;
  }
  .event-item__date{
    width:auto;
    flex-direction:row;
    align-items:baseline;
    margin-right:0;
    margin-bottom:10px;
  }
  .event-item__md{
    margin-right:10px;
  }
  .event-item__body{
    margin-right:0;
  }
  
  .present-card {
    margin: 0 auto 50px;
    width: 100%;
    padding: 1.2em;
	}

	.present-card__lead {
    font-size: 1rem;
    line-height: 1.8;
	text-align: left;
	}
	
	.present-card__note {
		padding-left: 0 !important;
		margin-left: 0 !important;
		text-align: left;
	}

  /* イベント詳細 */
  .event-detail__meta div{
    grid-template-columns:1fr;
    gap:4px;
  }
  .container--narrow {
    margin-top: 50px;
    padding: 1rem;
  }
  .event-detail p {
    font-size: 0.95rem;
    line-height: 1.8;
  }
  .sec-head_detail_en {
    letter-spacing: 0;
    font-size: 1.5rem;
    line-height: 1.6;
    color: var(--ink);
    margin: 20px 0;
  }
  .event-detail__back-wrap {
    margin: 40px 0 10px;
  }
  .event-detail__back {
    width: 64px;
    height: 64px;
    font-size: 0.8rem;
  }
 
  .card-grid--2 {
    width: 100%;
	margin-bottom: -60px;
  }
  
  /*hidden-sp*/
.hidden_pc {
	display: block;
}
.hidden_sp {
	display: none;
}
}
