:root{
  --blue:#2c7ad6;
  --blue-2:#5aa3f0;
  --blue-3:#e8f2ff;
  --green:#43a556;
  --text:#0f1720;
  --muted:#5b6b77;
  --bg:#f7fafc;
  --panel:#ffffff;
  --radius-xl:22px;
  --radius:14px;
  --shadow:0 12px 30px rgba(21, 61, 120, .08);
  --maxw:1100px;
}

*{box-sizing:border-box}

html,body{margin:0;padding:0}

body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Hiragino Kaku Gothic ProN","Noto Sans JP","Yu Gothic","Meiryo",sans-serif;
  color:var(--text);
  background:var(--bg);
  line-height:1.8;
}

a{
  color:var(--blue);
  text-decoration:none;
}
a:hover{text-decoration:underline}

img{
  max-width:100%;
  display:block;
}

.container{
  max-width:var(--maxw);
  margin:0 auto;
  padding:0 20px;
}

/* header / nav */
.header{
  position:sticky;
  top:0;
  z-index:40;
  background:#fff;
  box-shadow:0 2px 12px rgba(0,0,0,.04);
}
.header .inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:12px 0;
}
.brand{
  display:flex;
  align-items:center;
  gap:12px;
}
.logo{
  width:42px;
  height:42px;
  border-radius:12px;
  background:linear-gradient(135deg, var(--blue), var(--blue-2));
  display:grid;
  place-items:center;
  color:#fff;
  font-weight:800;
  box-shadow:var(--shadow);
}
.name{
  font-weight:900;
  color:var(--blue);
}

/* デスクトップナビ */
.nav-desktop{
  display:flex;
  gap:16px;
}
.nav-desktop a{
  padding:8px 12px;
  border-radius:999px;
  font-weight:700;
  color:var(--blue);
  text-decoration:none;
}
.nav-desktop a.cta{
  background:var(--blue);
  color:#fff;
}
.nav-desktop a.cta:hover{
  opacity:.9;
}

/* ハンバーガーボタン（スマホ用） */
.nav-toggle{
  appearance:none;
  background:#fff;
  border:2px solid #dfe9f8;
  border-radius:10px;
  box-shadow:var(--shadow);
  padding:8px 10px;
  display:none;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:4px;
}
.nav-toggle-bar{
  display:block;
  width:24px;
  height:3px;
  border-radius:2px;
  background:var(--blue);
}

/* モバイルメニュー本体 */
.nav-mobile{
  display:none;
  flex-direction:column;
  background:#fff;
  border-top:1px solid #dbe9ff;
  border-bottom:1px solid #dbe9ff;
  box-shadow:0 20px 30px rgba(21,61,120,.12);
}
.nav-mobile.open{
  display:flex;
}
.mobile-link{
  display:block;
  padding:16px 20px;
  font-size:16px;
  font-weight:700;
  color:var(--blue);
  text-decoration:none;
  border-bottom:1px solid #eef4ff;
  background:#fff;
}
.mobile-link:last-child{
  border-bottom:0;
}
.reserve-link{
  background:var(--blue);
  color:#fff;
  border-bottom:0;
  text-align:center;
  border-radius:0;
}

/* generic sections / cards */
.section{
  padding:24px 0;
}

.block{
  background:#fff;
  border-radius:18px;
  border:2px solid #dfe9f8;
  box-shadow:var(--shadow);
  padding:18px;
  margin-bottom:24px;
}
.block h2{
  margin:0 0 8px;
  color:var(--blue);
}
.block .note{
  font-size:13px;
  color:var(--muted);
}

/* gallery (トップの院内スライド) */
.gallery-card{
  background:#fff;
  border-radius:22px;
  border:3px solid #e6f0ff;
  box-shadow:var(--shadow);
  padding:18px;
}
.gallery-frame{
  position:relative;
  border-radius:16px;
  overflow:hidden;
  height:500px;
  background:#eef4ff;
  border:2px dashed #c8d8ee;
}
.gallery-slide{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:0;
  transition:opacity .6s ease;
}
.gallery-slide.is-active{
  opacity:1;
}
.gallery-caption{
  margin-top:12px;
  font-size:14px;
  font-weight:600;
  color:var(--muted);
}

/* hero / greeting */
.hero{
  background:linear-gradient(180deg, #fff, var(--blue-3));
  border-bottom:1px solid #dbe9ff;
  padding:36px 0;
}
.panel{
  background:var(--panel);
  border-radius:var(--radius-xl);
  padding:22px;
  border:3px solid #e6f0ff;
  box-shadow:var(--shadow);
  margin-bottom:24px;
}
.panel.gray{
  background:#f1f5fb;
  border:3px dashed #cfe3ff;
}
.badge{
  display:inline-block;
  padding:6px 12px;
  background:#e7f0ff;
  color:var(--blue);
  border-radius:999px;
  font-weight:800;
  letter-spacing:.02em;
  font-size:12px;
}
.greeting-wrap{
  display:grid;
  grid-template-columns:1fr 200px;
  gap:16px;
  align-items:start;
}
.greeting-wrap img{
  width:100%;
  border-radius:16px;
  box-shadow:var(--shadow);
}
.heading-strong{
  font-size:28px;
  line-height:1.35;
  color:var(--blue);
  font-weight:900;
}
.lead{
  color:var(--muted);
}

/* 院長プロフィール */
.director-card{
  background:#fff;
  border:2px solid #d6e6ff;
  border-radius:16px;
  box-shadow:var(--shadow);
  padding:16px;
  margin-top:16px;
}
.director-card-title{
  font-size:12px;
  font-weight:800;
  color:#7c92a8;
  letter-spacing:.02em;
  margin-bottom:4px;
}
.director-name{
  font-size:18px;
  font-weight:800;
  color:var(--blue);
  line-height:1.4;
}
.director-role{
  font-size:13px;
  font-weight:600;
  color:#7c92a8;
}
.director-quals{
  list-style:none;
  padding:8px 0 0 0;
  margin:0;
  font-size:14px;
  line-height:1.6;
  color:var(--text);
}
.director-quals li{
  display:flex;
  align-items:flex-start;
  gap:6px;
  position:relative;
}
.director-quals li::before{
  content:"✓";
  color:var(--blue);
  font-size:12px;
  line-height:1.4;
  font-weight:700;
  flex-shrink:0;
  margin-top:2px;
}

/* 診療時間テーブル */
.hours{
  width:100%;
  border-collapse:collapse;
  overflow:hidden;
  border-radius:14px;
}
.hours th,
.hours td{
  padding:12px 14px;
  border-bottom:1px solid #e3ecf8;
  text-align:left;
}
.hours th{
  color:var(--muted);
  font-weight:700;
}

.reserve-btn{
  display:inline-block;
  background:var(--blue);
  color:#fff;
  font-weight:800;
  text-decoration:none;
  padding:12px 20px;
  border-radius:999px;
  box-shadow:var(--shadow);
  font-size:16px;
}
.reserve-btn:active,
.reserve-btn:focus,
.reserve-btn:hover{
  opacity:.9;
}

/* 施術紹介ページの左右レイアウト */
.feature{
  padding:32px 0;
  border-top:1px solid #dbe9ff;
  border-bottom:1px solid #dbe9ff;
  background:linear-gradient(180deg,#fff, var(--blue-3));
  margin-top:24px;
}
.feature-inner{
  display:grid;
  grid-template-columns:1fr 320px;
  gap:24px;
  align-items:start;
}
.feature-text h2{
  margin:0 0 8px;
  font-size:22px;
  line-height:1.4;
  color:var(--blue);
  font-weight:800;
}
.feature-text p{
  margin:0;
  color:var(--text);
}
.feature-photo{
  border-radius:16px;
  background:#eef4ff;
  border:2px dashed #c8d8ee;
  box-shadow:var(--shadow);
  overflow:hidden;
}
.feature-photo img{
  width:100%;
  height:auto;
  display:block;
}

/* footer */
.footer{
  background:#0b2a4a;
  color:#e0efff;
  margin-top:40px;
}
.footer a{
  color:#e0efff;
}
.footer .grid{
  display:grid;
  grid-template-columns:1.2fr 1fr 1fr;
  gap:20px;
  padding:26px 0;
}
.copy{
  border-top:1px solid rgba(255,255,255,.12);
  padding:12px 0;
  font-size:12px;
  color:#c6defa;
}

/* responsive */
@media (max-width:900px){
  .header .inner{
    justify-content:space-between;
  }

  .nav-desktop{
    display:none;
  }

  .nav-toggle{
    display:flex;
  }

  .greeting-wrap{
    grid-template-columns:1fr;
  }

  .feature-inner{
    grid-template-columns:1fr;
  }

  .gallery-frame{
    height:200px;
  }

  .director-name{
    font-size:16px;
  }

  .director-quals{
    font-size:13px;
  }

  .footer .grid{
    grid-template-columns:1fr;
  }
}


.video-card{
  background:#fff;
  border-radius:22px;
  border:3px solid #e6f0ff;
  box-shadow:var(--shadow);
  padding:16px;
  margin:24px 0;
}
.video-title{
  margin:0 0 10px;
  color:var(--blue);
  font-weight:900;
  font-size:20px;
}
.video-frame{
  position:relative;
  width:100%;
  aspect-ratio:16/9;
  border-radius:16px;
  overflow:hidden;
  background:#000;
  box-shadow:var(--shadow);
}
.video-frame video{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* 自然な比率で余白優先で見せたい場合（トリミングなし） */
.video-frame.contain video{
  object-fit:contain;
  background:#000;
}

/* 大画面での最大幅を抑えたい時（任意） */
@media (min-width:900px){
  .video-card.narrow{
    max-width:900px;
    margin-left:auto;
    margin-right:auto;
  }
}
