/* ===============================
   Aikido Kobe Sanda — Custom Theme
   =============================== */

:root{
  --bg:#F7F9FB;
  --fg:#121417;
  --muted:#6b7280;
  --line:#d4d4d4;
  --card:#ffffff;
  --soft:#f0f4f8;
  --brand:#37353E;
  --navbg:#ffffff;
  --herobg:#e9f1f7;
  --radius:14px;
  --shadow-sm:0 1px 2px rgba(0,0,0,.08);
  --shadow-md:0 10px 30px rgba(0,0,0,.08);
}

*{box-sizing:border-box}
html,body{
  margin:0;padding:0;background:var(--bg);color:var(--fg);
  font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI",
               "Noto Sans JP", Roboto, Helvetica, Arial;
  line-height:1.7;
  -webkit-text-size-adjust:100%;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
a:hover{text-decoration:underline}

.container{width:min(1100px,92%);margin-inline:auto}
.section{padding:88px 0}
.section.alt{background:var(--soft)}
.section-title{
  font-family: ui-serif, "Noto Serif JP", serif;
  font-weight:700; letter-spacing:.02em;
  font-size:clamp(26px,3vw,38px);
  margin:0 0 32px; text-align:center;
}

/* ===== Header ===== */
.site-header{
  position:sticky; top:0; z-index:50;
  background:var(--navbg);
  backdrop-filter:saturate(1.1) blur(10px);
  border-bottom:1px solid var(--line);
}
.site-header.scrolled{ box-shadow: var(--shadow-sm); }
.site-header{ position: sticky; top:0 }

/* brand */
.brand{ display:flex;align-items:center;gap:10px;padding:18px 24px; position:relative; z-index:61 }
.brand-logo{ height:36px; width:auto; display:block; }
.brand-title{font-weight:700;font-size:19px}

/* ===== Navigation (PC) ===== */
.site-nav{
  display:flex;align-items:center;justify-content:flex-end;
  gap:8px;padding-right:24px;margin-left:auto;
}
.site-nav a,.lang-btn{
  padding:16px 18px;
  font-size:18px;font-weight:600;
  border-radius:10px;
}
.lang-btn{
  border:1px solid var(--line);background:#fff;cursor:pointer;
}
.lang-btn:hover{background:#f9fafb;box-shadow:var(--shadow-sm)}

/* ===== Hamburger ===== */
.nav-toggle{
  display:none;margin-left:auto;background:var(--brand);
  border:none;padding:12px;border-radius:10px;cursor:pointer;color:#fff;
}
.nav-toggle .bar{
  display:block;width:26px;height:3.5px;background:#fff;
  margin:4px 0;border-radius:2px;
}

/* ===== Mobile language mini button (next to hamburger) ===== */
.lang-mini{
  position:absolute;
  right:60px;        /* ハンバーガーの左側に寄せる */
  top:12px;
  border:1px solid var(--line);
  background:#fff;
  padding:8px 12px;
  border-radius:10px;
  font-weight:700;
  cursor:pointer;
  z-index:62;
}
.lang-mini:hover{ background:#f9fafb; }

/* ===== Responsive Header ===== */
@media (max-width:840px){
  .site-header{display:flex;align-items:center;justify-content:space-between}
  .brand-title{display:none}
  .brand{padding:12px 16px}
  .brand-logo{height:30px}
  .nav-toggle{display:block !important;position:relative;z-index:60}
  .site-nav{
    display:none !important;position:absolute;left:0;right:0;top:100%;
    background:var(--navbg);border-top:1px solid var(--line);
    flex-direction:column;gap:8px;padding:10px 16px;margin-left:0;z-index:55;
  }
  .site-nav.open{display:flex !important}
  .site-nav a,.lang-btn{padding:14px 16px;font-size:16px}
  .section{padding:64px 0}
  .section-title{font-size:clamp(24px,5.5vw,32px)}
}
@media (min-width:841px){
  #lang-mini{ display:none !important; } /* PCではミニENを隠す（重複防止） */
}

/* ===== Hero ===== */
.hero{
  position:relative;isolation:isolate;min-height:50svh;
  display:grid;place-items:center;border-bottom:1px solid var(--line);
  background: url("") center/cover no-repeat;
}
.hero-inner{text-align:center;padding:48px 16px}
.hero-title{
  font-family: ui-serif, "Noto Serif JP", serif;
  font-size:clamp(28px,6vw,56px);margin:0;color:#0b0b0b;text-shadow:0 1px 2px rgba(255,255,255,.4);
}

/* ===== News (カード風) ===== */
.news-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}
.news-item{
  background:#fff;border:1px solid var(--line);border-radius:12px;
  padding:14px 20px;box-shadow:var(--shadow-sm);display:flex;align-items:flex-start;gap:16px;
}
.news-item time{font-size:16px;font-weight:700;color:var(--brand);flex-shrink:0;min-width:120px}
.news-content{font-size:15px;line-height:1.6;color:var(--fg)}

/* ===== About: 左写真 / 右テキスト ===== */
.about-split{
  display:grid;
  grid-template-columns: 0.95fr 1.05fr;
  gap: 24px;
  align-items: start;
}
.sensei-figure{
  margin:0;background:#fff;border:1px solid var(--line);border-radius:14px;
  overflow:hidden;box-shadow:var(--shadow-sm)
}
.sensei-figure img{
  width:100%;height:100%;aspect-ratio:4/5;object-fit:cover;display:block
}
.sensei-name{
  margin:0 0 8px;
  font-family: ui-serif, "Noto Serif JP", serif;
  font-weight:800;font-size:clamp(26px,3vw,34px);letter-spacing:.02em;
  display:flex;align-items:baseline;gap:12px
}
.sensei-main,.sensei-rank{font:inherit}
.sensei-meta{margin:0 0 16px;color:var(--muted);font-weight:600;font-size:16px;line-height:1.6}
.about-content .about-text{max-width:100%;margin:10px 0 0;text-align:left}
.about-content .about-lead{margin:0 0 1.05em;line-height:1.9}
.about-content .about-highlight{font-size:1.05em;font-weight:700}

/* モバイルでは「堀井悦二 七段」「肩書き」「ボタン」を中央寄せ */
@media (max-width:900px){
  .about-split{grid-template-columns:1fr}
  .sensei-name{justify-content:center; text-align:center}
  .sensei-meta{ text-align:center }

  /* ←ここを強化（中央寄せ）*/
  .about-content .about-text{ text-align:center } /* これで中のインライン要素が中央基準に */
  .about-content .about-text .cta-btn{
    display:block;           /* ブロックにして */
    margin:16px auto 0;      /* 左右オートでど真ん中 */
  }
}

/* ===== Grid / Card ===== */
.grid{display:grid;gap:24px}
.grid.two{grid-template-columns:1.2fr .8fr}
@media (max-width:900px){.grid.two{grid-template-columns:1fr}}

/* ===== Tabs / Table ===== */
.tabs{display:flex;gap:10px;margin-bottom:12px}
.tab{background:#fff;border:1px solid var(--line);padding:8px 14px;border-radius:10px;cursor:pointer;font-weight:600}
.tab.is-active{background:#f3f4f6;border-color:#cfd6e0}

.table-wrap{
  overflow-x:hidden; /* 横スクロール禁止（スマホ修正） */
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:#fff;
  box-shadow: var(--shadow-sm);
}
table{
  width:100%;
  border-collapse:collapse;
  min-width:0;            /* ←固定幅撤廃でフィット */
  table-layout:fixed;
}
thead th{
  background:#fafafa;font-weight:700;text-align:center;
  padding:12px 14px;font-size:16px;line-height:1.6
}
td{
  padding:12px 14px;border-bottom:1px solid var(--line);
  text-align:center;font-size:16px;white-space:nowrap
}
tbody tr:nth-child(even) td{background:#fcfcfc}
@media (max-width:520px){
  thead th, td{padding:10px 10px;font-size:15px}
}

/* ===== Fees ===== */
.card{background:var(--card);padding:18px;border-radius:var(--radius);border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.fee-title{text-align:center;background:#fafafa;padding:10px;margin:-18px -18px 12px;border-bottom:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0}
.price-list{list-style:none;padding:0;margin:0}
.price-list li{display:grid;grid-template-columns:1fr auto auto;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.price-list span:first-child{font-weight:600}
.fee-note{text-align:center;color:#999;margin-top:10px;font-size:14px}

/* ===== Access ===== */
.map-wrap{border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.map-wrap iframe{width:100%;height:360px;border:0}
.access-info{
  display:grid;
  grid-template-columns:70px 1fr;
  column-gap:20px;row-gap:8px;font-size:16px;align-items:baseline;
}
.access-info dt{font-weight:600;margin:0;text-align:right}
.access-info dd{margin:0}

@media (max-width:600px){
  .map-wrap iframe{height:260px}

  /* ←ここを修正してスマホ時に dt と dd を横並びにする */
  .access-info{
    display:block;      /* 一旦 block に戻す */
    font-size:15px;
  }
  .access-info dt,
  .access-info dd{
    display:inline;     /* 横並び */
    text-align:left;
  }
  .access-info dt::after{
    content:"：";       /* コロン追加 */
    margin-right:4px;
  }
  .access-info dd::after{
    content:"";
    display:block;      /* 各ペアで改行 */
  }
}

/* ===== Gallery (Slider) ===== */
.slider{
  position:relative;background:#fff;border:1px solid var(--line);border-radius:12px;
  box-shadow:var(--shadow-sm);overflow:hidden;aspect-ratio:16/9;
  max-width:1000px;margin:0 auto;   /* PCでも大きめに */
}
@media (max-width:640px){
  .slider{ max-width:100%; }        /* スマホは幅いっぱい */
}
.slides{position:relative;z-index:1;display:flex;gap:0;height:100%;will-change:transform;backface-visibility:hidden;transform:translateZ(0);transition:transform .35s ease}
.slide{margin:0;padding:0;min-width:100%;flex:0 0 100%;height:100%;display:flex;align-items:center;justify-content:center;background:#f6f7fb}
.slide img{max-width:100%;max-height:100%;object-fit:contain;object-position:center;display:block}
.slider-btn{position:absolute;z-index:2;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.95);border:1px solid var(--line);width:36px;height:36px;border-radius:50%;display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow-sm)}
.slider-btn:hover{background:#fff}
.slider-btn.prev{left:10px}
.slider-btn.next{right:10px}
.slider-dots{position:absolute;left:0;right:0;bottom:8px;z-index:3;display:flex;gap:6px;justify-content:center}
.slider-dots button{width:8px;height:8px;border-radius:50%;border:1px solid var(--line);background:#fff;cursor:pointer}
.slider-dots button.active{background:#333;border-color:#333}

/* ===== Gallery Videos ===== */
.video-grid{margin-top:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.video-grid .yt{width:100%;aspect-ratio:16/9;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-sm)}
@media (max-width:640px){
  .video-grid{grid-template-columns:1fr}
}

/* ===== Places ===== */
.tabs.center{justify-content:center}
.link-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;max-width:980px;margin:10px auto 0}
.link-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 12px;text-align:center;box-shadow:var(--shadow-sm);display:flex;align-items:center;justify-content:center;min-height:54px}
.link-card a,.link-card .name-only{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:var(--fg);overflow-wrap:anywhere;word-break:normal}

/* ===== Footer（薄く・コピーのみ） ===== */
.site-footer{border-top:1px solid var(--line);padding:14px 0;background:var(--navbg)}
.site-footer .ftr{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
.site-footer .small{font-size:13px}

/* ===== CTA ボタン ===== */
.cta-btn{display:inline-block;margin-top:18px;padding:12px 22px;background:var(--brand);color:#fff;font-size:17px;font-weight:600;border-radius:var(--radius);text-decoration:none;box-shadow:var(--shadow-sm);transition:background .2s}
.cta-btn:hover{background:#2a292f}

/* ===== Sticky CTA（PC/モバイル両対応） ===== */
.sticky-cta{
  position: fixed;
  left: 12px;
  right: 12px;
  bottom: 12px;
  padding: 12px 18px;
  border-radius: 999px;
  text-align: center;
  z-index: 70;
  background: var(--brand);
  color: #fff;
  padding-bottom: calc(12px + env(safe-area-inset-bottom));
  box-shadow: var(--shadow-sm);
  /* 位置は固定、アニメは不透明度のみ */
  transition: opacity .25s ease;
  opacity: 1;
}
@media (min-width: 841px){
  .sticky-cta{
    left: 50%;
    right: auto;
    transform: translateX(-50%); /* ←センタリング用途だけで使う */
    min-width: 320px;
    max-width: 480px;
  }
}
/* フッターが見えている間は、完全に消さずに薄くするだけ */
.sticky-cta.is-dim{
  opacity: .45;          /* 0 にしない＝見える＆押せる */
  pointer-events: auto;  /* クリック可のまま */
}

/* Sticky分の逃げ：PC/モバイル両方に余白を確保 */
body.has-sticky-cta{ padding-bottom:96px }

@media (max-width: 600px){
  .hero-title {
    font-size: clamp(22px, 5.5vw, 36px);
  }
  .brand-title {
    font-size: 16px;
  }
}

/* ===== Hide nav language button on mobile ===== */
@media (max-width: 840px){
  #site-nav .lang-btn {
    display: none !important;
  }
}