/* ━━━ RESET & BASE ━━━ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --g:#7DC221; --gd:#4f8c0e; --gl:#a8d84a; --gp:#d6f090; --gbg:#f4fae2;
  --ink:#1a1a1a; --ink2:#444; --ink3:#888; --line:#e4e4e4;
  --white:#fff; --off:#faf9f6;
  --r:20px; --r-sm:12px;
  --sp:clamp(16px,5vw,24px);
  --max:480px;
}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:hidden;}
body{
  font-family:'Noto Sans JP',sans-serif;
  background:var(--off);color:var(--ink);
  overflow-x:hidden;
  line-height:1.85;
  font-feature-settings:"palt";
}
img{display:block;max-width:100%;}
a{text-decoration:none;color:inherit;}

/* ━━━ TYPOGRAPHY ━━━ */
.t-display{
  font-family:'Noto Serif JP',serif;
  font-size:clamp(2rem,8vw,2.8rem);
  font-weight:700;line-height:1.2;
  letter-spacing:-0.01em;
}
.t-heading{
  font-family:'Noto Serif JP',serif;
  font-size:clamp(1.35rem,4.5vw,1.8rem);
  font-weight:700;line-height:1.35;
}
.t-label{
  font-family:'Bebas Neue',sans-serif;
  font-size:.72rem;letter-spacing:.28em;
  color:var(--gd);
}
.t-body{font-size:1rem;line-height:1.85;color:var(--ink2);}
.t-small{font-size:.78rem;color:var(--ink3);line-height:1.7;}

/* ━━━ LAYOUT ━━━ */
.container{
  width:100%;max-width:var(--max);
  margin-inline:auto;
  padding-inline:var(--sp);
}

/* ━━━ NAV ━━━ */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  height:52px;
  background:var(--g);
  display:flex;align-items:center;justify-content:space-between;
  padding-inline:16px;
  box-shadow:0 1px 0 rgba(0,0,0,.08);
}
.nav-logo img{height:30px;width:auto;}
.nav-menu{
  display:flex;gap:0;list-style:none;
  overflow-x:auto;scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
}
.nav-menu::-webkit-scrollbar{display:none;}
.nav-menu a{
  display:block;padding:6px 10px;
  font-size:.72rem;font-weight:700;
  color:rgba(255,255,255,.9);letter-spacing:.04em;
  white-space:nowrap;
}
.nav-menu a:hover{color:#fff;}

@media(max-width:360px){
  .nav-menu a{padding:6px 8px;font-size:.68rem;}
}

/* ━━━ HERO ━━━ */
.hero{
  min-height:100svh;
  background:var(--g);
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  padding:72px var(--sp) 48px;
  text-align:center;
  position:relative;overflow:hidden;
}
/* 背景装飾 */
.hero::before{
  content:'';position:absolute;
  width:120vw;height:120vw;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.06) 0%,transparent 65%);
  top:-20vw;left:-10vw;
  pointer-events:none;
}
.hero::after{
  content:'';position:absolute;
  width:80vw;height:80vw;
  border-radius:50%;
  background:radial-gradient(circle,rgba(0,0,0,.06) 0%,transparent 65%);
  bottom:-20vw;right:-10vw;
  pointer-events:none;
}

.hero-logo{
  width:min(220px,55vw);
  margin:0 auto 20px;
  position:relative;z-index:1;
  animation:float 4s ease-in-out infinite;
}
@keyframes float{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-8px);}
}

.hero-img{
  width:min(300px,78vw);
  aspect-ratio:4/3;
  border-radius:var(--r);
  overflow:hidden;
  margin:0 auto 24px;
  position:relative;z-index:1;
  box-shadow:0 20px 60px rgba(0,0,0,.22);
  background:rgba(255,255,255,.12);
}
.hero-img img{width:100%;height:100%;object-fit:cover;}
.hero-img-ph{
  width:100%;height:100%;
  display:flex;align-items:center;justify-content:center;
  color:rgba(255,255,255,.5);font-size:.78rem;letter-spacing:.1em;
}

.hero-badge{
  display:inline-block;
  background:rgba(255,255,255,.95);
  color:var(--gd);
  font-size:.65rem;font-weight:700;
  letter-spacing:.1em;padding:4px 14px;
  border-radius:20px;margin-bottom:10px;
  position:relative;z-index:1;
  box-shadow:0 2px 8px rgba(0,0,0,.1);
}
.hero-copy{
  color:#fff;margin-bottom:6px;
  position:relative;z-index:1;
}
.hero-sub{
  font-size:.72rem;color:rgba(255,255,255,.6);
  letter-spacing:.18em;margin-bottom:32px;
  position:relative;z-index:1;
}
.hero-btn{
  display:block;width:min(300px,84vw);
  margin-inline:auto;
  background:#fff;color:var(--gd);
  font-family:'Noto Sans JP',sans-serif;
  font-weight:700;font-size:.95rem;
  padding:16px 24px;border-radius:50px;
  letter-spacing:.04em;
  box-shadow:0 4px 16px rgba(0,0,0,.14);
  transition:transform .2s,box-shadow .2s;
  position:relative;z-index:1;min-height:44px;
}
.hero-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.18);}
.hero-scroll{
  position:absolute;bottom:20px;left:50%;
  transform:translateX(-50%);
  font-size:.62rem;color:rgba(255,255,255,.4);
  letter-spacing:.2em;
  animation:bounce 2s infinite;
}
@keyframes bounce{
  0%,100%{transform:translateX(-50%) translateY(0);}
  50%{transform:translateX(-50%) translateY(5px);}
}

/* ━━━ SECTION BASE ━━━ */
.section{padding:56px var(--sp);}
.section-header{margin-bottom:28px;}
.section-header .t-label{display:block;margin-bottom:6px;}

/* ━━━ ABOUT ━━━ */
.about{background:var(--gbg);}
.about-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:24px;
}
.about-photo-wrap{position:relative;}
.about-photo{
  width:min(200px,52vw);
  aspect-ratio:3/4;
  object-fit:cover;object-position:top center;
  border-radius:80px 80px 20px 20px;
  display:block;margin:0 auto;
  box-shadow:6px 6px 0 var(--g);
}
.about-text .t-body{margin-bottom:14px;}
.about-name{
  margin-top:16px;padding-top:14px;
  border-top:1px solid #d6eaa8;
}
.about-name-role{
  font-size:.65rem;font-weight:700;
  letter-spacing:.14em;color:var(--gd);
  display:block;margin-bottom:3px;
}
.about-name-main{
  font-family:'Noto Serif JP',serif;
  font-size:1rem;font-weight:700;
}

/* ━━━ ACCESS ━━━ */
.access{background:var(--ink);}
.access .t-label{color:var(--gl);}
.access .t-heading{color:#fff;}
.store-cards{display:flex;flex-direction:column;gap:12px;}
.store-card{
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.1);
  border-radius:var(--r-sm);overflow:hidden;
}
.store-card-head{
  background:var(--g);
  padding:10px 16px;
  font-weight:700;font-size:.88rem;color:#fff;
  letter-spacing:.04em;
}
.store-card-body{padding:14px 16px;}
.store-hours{margin-bottom:12px;}
.store-hours-row{
  display:flex;justify-content:space-between;
  font-size:.8rem;padding:5px 0;
  border-bottom:1px solid rgba(255,255,255,.06);
  color:rgba(255,255,255,.7);
}
.store-hours-row:last-child{border:none;}
.store-hours-row .day{color:rgba(255,255,255,.45);font-weight:700;}
.store-hours-row.closed .time{color:#ff7675;font-weight:700;}
.store-map-btn{
  display:block;
  background:var(--g);color:#fff;
  text-align:center;font-weight:700;
  font-size:.82rem;padding:10px;
  border-radius:8px;letter-spacing:.04em;
  transition:background .2s;
}
.store-map-btn:hover{background:var(--gd);}

/* ━━━ KITCHENCAR ━━━ */
.kitchencar{background:var(--gbg);}
.cal-placeholder{
  background:#fff;border:1.5px solid #d6eaa8;
  border-radius:var(--r-sm);
  padding:36px 20px;text-align:center;
  margin-bottom:20px;
}
.cal-placeholder p{font-size:.82rem;color:var(--ink3);line-height:1.85;}
.kc-cta{
  background:var(--ink);border-radius:var(--r-sm);
  padding:24px 20px;text-align:center;color:#fff;
}
.kc-cta-label{
  font-family:'Bebas Neue',sans-serif;
  font-size:.68rem;letter-spacing:.24em;
  color:var(--gl);display:block;margin-bottom:6px;
}
.kc-cta h3{
  font-family:'Noto Serif JP',serif;
  font-size:1.1rem;font-weight:700;margin-bottom:6px;
}
.kc-cta p{font-size:.82rem;color:rgba(255,255,255,.55);line-height:1.85;margin-bottom:18px;}

/* ━━━ GACHA CTA ━━━ */
.gacha-cta{background:var(--g);padding:56px var(--sp);text-align:center;}
.gacha-cta .t-label{color:rgba(255,255,255,.7);display:block;margin-bottom:8px;}
.gacha-cta .t-heading{color:#fff;margin-bottom:10px;}
.gacha-cta .t-body{color:rgba(255,255,255,.82);margin-bottom:20px;}
.gacha-prizes{
  display:flex;flex-direction:column;gap:6px;
  max-width:280px;margin:0 auto 28px;text-align:left;
}
.prize-row{
  display:flex;align-items:center;justify-content:space-between;
  background:rgba(255,255,255,.12);
  border-radius:8px;padding:8px 12px;
  border:1px solid rgba(255,255,255,.15);
}
.prize-row.gold{background:rgba(255,215,0,.18);border-color:rgba(255,215,0,.25);}
.prize-name{font-size:.82rem;font-weight:700;color:#fff;}
.prize-pct{
  font-family:'Bebas Neue',sans-serif;
  font-size:.8rem;color:rgba(255,255,255,.5);
  letter-spacing:.06em;
}
.gacha-note{font-size:.68rem;color:rgba(255,255,255,.4);margin-bottom:24px;}
.btn-white{
  display:block;
  background:#fff;color:var(--gd);
  font-weight:700;font-size:.95rem;
  padding:15px 24px;border-radius:50px;
  letter-spacing:.04em;
  box-shadow:0 4px 14px rgba(0,0,0,.12);
  transition:transform .2s,box-shadow .2s;
  text-align:center;
}
.btn-white:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.18);}
.btn-outline-w{
  display:block;margin-top:10px;
  background:transparent;color:#fff;
  font-weight:700;font-size:.92rem;
  padding:14px 24px;border-radius:50px;
  border:2px solid rgba(255,255,255,.55);
  letter-spacing:.04em;transition:all .2s;
  text-align:center;
}
.btn-outline-w:hover{background:rgba(255,255,255,.1);}
.btn-group{width:min(300px,84vw);margin-inline:auto;}

/* ━━━ CONTACT ━━━ */
.contact{background:#fff;}
.form-group{margin-bottom:16px;}
.form-label{
  display:block;font-size:.78rem;font-weight:700;
  color:var(--ink2);margin-bottom:6px;letter-spacing:.04em;
}
.form-input,.form-textarea,.form-select{
  width:100%;padding:12px 14px;
  border:1.5px solid var(--line);border-radius:10px;
  font-family:'Noto Sans JP',sans-serif;
  font-size:.9rem;color:var(--ink);
  background:var(--gbg);outline:none;
  transition:border-color .2s;
}
.form-input:focus,.form-textarea:focus,.form-select:focus{border-color:var(--g);}
.form-textarea{height:120px;resize:vertical;line-height:1.7;}
.form-select{
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%237DC221' stroke-width='2' fill='none'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;
  padding-right:36px;
}
.btn-submit{
  display:block;width:100%;
  background:var(--g);color:#fff;
  font-family:'Noto Sans JP',sans-serif;
  font-weight:700;font-size:.95rem;
  padding:15px;border-radius:50px;border:none;cursor:pointer;
  letter-spacing:.04em;
  box-shadow:0 4px 14px rgba(90,154,16,.3);
  transition:all .2s;
}
.btn-submit:hover{background:var(--gd);transform:translateY(-2px);}
.form-note{font-size:.7rem;color:var(--ink3);margin-top:10px;text-align:center;}

/* ━━━ FOOTER ━━━ */
.footer{
  background:var(--g);
  padding:36px var(--sp) 24px;
  text-align:center;
}
.footer-logo{
  height:36px;width:auto;
  margin:0 auto 16px;
}
.footer-links{
  display:flex;flex-wrap:wrap;gap:12px 18px;
  justify-content:center;margin-bottom:14px;
}
.footer-links a{
  font-size:.72rem;color:rgba(255,255,255,.75);
  font-weight:500;letter-spacing:.04em;
  transition:color .2s;
}
.footer-links a:hover{color:#fff;}
.footer-copy{font-size:.65rem;color:rgba(255,255,255,.4);letter-spacing:.06em;}

/* ━━━ FADE IN ━━━ */
.fade-in{
  opacity:0;transform:translateY(18px);
  transition:opacity .65s ease,transform .65s ease;
}
.fade-in.visible{opacity:1;transform:none;}

/* ━━━ PC LAYOUT (641px+) ━━━ */
@media(min-width:641px){
  :root{--max:760px;--sp:clamp(24px,4vw,48px);}

  .nav{justify-content:space-between;}
  .nav-menu a{font-size:.78rem;padding:6px 12px;}

  .hero-logo{width:200px;}
  .hero-img{width:340px;}
  .t-display{font-size:2.6rem;}

  .about-grid{
    grid-template-columns:200px 1fr;
    gap:40px;align-items:start;
  }
  .about-photo{width:100%;margin:0;}

  .store-cards{flex-direction:row;}
  .store-card{flex:1;}
}

/* ━━━ WIDE PC (1024px+) ━━━ */
@media(min-width:1024px){
  :root{--max:min(960px,90vw);--sp:48px;}

  .hero{min-height:100svh;}
  .hero-logo{width:220px;}
  .hero-img{width:360px;}

  .about-grid{
    grid-template-columns:240px 1fr;
    gap:56px;
  }

  .section{padding:72px var(--sp);}
  .gacha-cta{padding:72px var(--sp);}
}

/* ━━━ FIXED BOTTOM CTA ━━━ */
.fixed-cta{
  display:none;
  position:fixed;bottom:0;left:0;right:0;z-index:90;
  padding:10px 16px 16px;
  background:linear-gradient(to top,rgba(255,255,255,1) 60%,rgba(255,255,255,0));
  pointer-events:none;
}
.fixed-cta-btn{
  display:block;
  background:var(--g);color:#fff;
  font-family:'Noto Sans JP',sans-serif;
  font-weight:700;font-size:.95rem;
  text-align:center;
  padding:15px 24px;border-radius:50px;
  letter-spacing:.04em;
  box-shadow:0 4px 20px rgba(90,154,16,.4);
  pointer-events:all;
  transition:background .2s;
}
.fixed-cta-btn:hover{background:var(--gd);}

@media(max-width:640px){
  .fixed-cta{display:block;}
  /* フッターの上に余白を追加してCTAと被らないように */
  .footer{padding-bottom:80px;}
  body{padding-bottom:0;}
}


/* ━━━ 日本語タイポグラフィ改善 ━━━ */
/* 行間：本文1.8、見出し1.4に統一 */
/* 文字間：日本語は0でOK、英字ラベルのみ調整 */
/* 禁則処理：文頭・文末の約物を整える */
/* 1行の適切な文字数：スマホ20〜24文字 */

html {
  /* 禁則処理を有効化 */
  word-break: normal;
  overflow-wrap: break-word;
  -webkit-locale: "ja";
}

/* 本文の行間・文字間を最適化 */
p, .t-body, li, td, th {
  line-height: 1.85;
  word-break: normal;
  overflow-wrap: break-word;
  /* 和文の文字詰め */
  font-feature-settings: "palt" 1, "kern" 1;
  -webkit-font-smoothing: antialiased;
}

/* 見出しの行間 */
h1, h2, h3, .t-display, .t-heading {
  line-height: 1.3;
  word-break: keep-all;
  overflow-wrap: break-word;
  font-feature-settings: "palt" 1;
  -webkit-font-smoothing: antialiased;
}

/* 本文最大幅（1行が長くなりすぎないように） */
.t-body {
  max-width: 40em; /* 約40文字 */
}

/* 見出しと本文のサイズ差を明確に */
.section .t-label {
  font-size: .72rem;
  letter-spacing: .24em;
  margin-bottom: 6px;
}
.section .t-heading {
  font-size: clamp(1.4rem, 4.5vw, 1.9rem);
  margin-bottom: 20px;
}

/* ナビの文字は折り返さない */
.nav-menu a {
  white-space: nowrap;
}

/* ボタンテキストは折り返さない */
.hero-btn, .btn-white, .btn-outline-w, .fixed-cta-btn,
.store-map-btn, .btn-submit {
  white-space: nowrap;
  word-break: keep-all;
}

/* フッターリンクは折り返さない */
.footer-links a {
  white-space: nowrap;
}
