html{
  font-weight: 300;
}
:root {
  counter-reset: num;

  /* colors 見本*/
  --black: #000;
  --blue: #007bff;
  --indigo: #6610f2;
  --purple: #6f42c1;
  --pink: #e83e8c;
  --red: #eb0000;
  --orange: #fd7e14;
  --yellow: #ffc107;
  --orange-light: #f68d2e;
  --green: #28a745;
  --teal: #20c997;
  --cyan: #17a2b8;
  --white: #fff;
  --gray: #6c757d;
  --gray-dark: #343a40;
  --primary: #6E6964;
  --aboreto-font-family:"Aboreto", system-ui;
  /*transform*/
  --transform-50-Y:translateY(-50%);
  --transform-50-X:translateX(-50%);
}
/**********statement__************/
:is(.statement__copy,.statement__txt) div span {
    overflow: hidden;
    display: inline-block;
}
:is(.statement__copy,.statement__txt) div em {
	-webkit-transform: translate3d(0, 100%, 0);
	transform: translate3d(0, 100%, 0)
}

.statement__copy.active > div em,.statement__txt span.active em{
	-webkit-transition: -webkit-transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
	transition: -webkit-transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
	transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
	transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
	-webkit-transform: translate3d(0, 0, 0);
	transform: translate3d(0, 0, 0)
}

.statement__copy.active > div span:nth-of-type(1) em,.statement__txt .active em {
	-webkit-transition-delay: .2s;
	transition-delay: .2s
}

.statement__copy.active > div span:nth-of-type(2) em {
	-webkit-transition-delay: .45s;
	transition-delay: .45s
}

.statement__copy.active > div span:nth-of-type(3) em {
	-webkit-transition-delay: .7s;
	transition-delay: .7s
}
.statement {
	width: calc(100% - 80px);
	max-width: 1600px;
	padding-top:120px;
	margin: 0 auto 120px;
	position: relative
}

@media (max-width: 767px) {
	.statement {
		width: 89.33333vw;
		padding-top: 6.93333vw;
		margin-bottom: 23.46667vw
	}
}

.statement__border {
	width: 100%;
	height: 1px;
	background-color: #D2CEC7;
	position: absolute;
	top: 0;
	left: 0;
	-webkit-transform: scaleX(0);
	transform: scaleX(0);
	-webkit-transition: -webkit-transform 2s cubic-bezier(0.16, 1, 0.3, 1);
	transition: -webkit-transform 2s cubic-bezier(0.16, 1, 0.3, 1);
	transition: transform 2s cubic-bezier(0.16, 1, 0.3, 1);
	transition: transform 2s cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 2s cubic-bezier(0.16, 1, 0.3, 1)
}

.statement__border.active {
	-webkit-transform: scaleX(1);
	transform: scaleX(1)
}

/**********statement__************/
.link01{
  background:rgba(186, 184, 157, 0.9);
  padding: 0px 30px 15px 71px;
  color: #fff;
  border-radius: 30px;
  box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.5);
}
.link02 {
    padding-bottom: 5px;
    background-image: linear-gradient(rgb(89, 87, 87), rgb(89, 87, 87));
    background-repeat: no-repeat;
    background-position: bottom right;
    background-size: 100% 1px;
    transition: background-size 0.3s;
}
.link02.ty02 {
    background-image: linear-gradient(#fff, #fff);
}
a:hover .link02,.link02:hover {
    background-position: bottom left;
    background-size: 0% 1px;
}
.link02 span{
    transition: filter 0.5s;
}
a:hover .link02 span,.link02 span:hover {
    filter: blur(1px);
}
.dl01 {
  display: flex;
  flex-flow: wrap;
  justify-content: flex-start;
  width: 100%;
}
.dl01 > dt {
  width: 15%;
  padding-right: 5px;
}
.dl01 > dt:after {
  content: "：";
}
.dl01 > dd {
  width: 85%;
  margin-left: 0px;
  margin-bottom: 20px;
}
.top-copy h2{
    font-size: 60px;
}
.loading {
  position: fixed;
  inset: 0;
  z-index: 1000000;
  height: 100svh;
background: linear-gradient(180deg, #DFDBD3 0%, #AA9E8A 100%);
}

.loading__inner {
  width: 100%;
  height: inherit;
  display: grid;
  place-content: center;
  row-gap: 10px;
}
.loading__text{

}
.loading__text {
  font-size: clamp(1.75rem, 1.568rem + 0.91vw, 2.25rem);
  letter-spacing: 0.2em;
  line-height: 1;
  text-align: center;
  color: #fff;
  font-family:var(--aboreto-font-family); 
  font-weight: 400;
}
.loading__text .large{
    font-size:clamp(2.5rem, 2.136rem + 1.82vw, 3.5rem);
    display: block;
}
.loading__logo {
  margin: 0 auto;
  width: min(250px, 100%);
}
h2:not(.h2_nost){
  font-family:var(--aboreto-font-family); 
  font-weight: 400;
  color: #F3F3F3;
  font-size:clamp(50px, 28.873px + 5.634vw, 110px);
  line-height: 1.5em;
}
h2:not(.h2_nost) em{
  display: block;
}
h2:not(.h2_nost) em:nth-of-type(2){
  margin-left: 5%;
}

.about-clinic .photo-grid{
    display: flex;
    flex-wrap: wrap;
    justify-content: space-around;
}
.about-clinic .photo-grid a{
    width: calc((100% / 4 ) - 30px);
}
.about-clinic .photo-grid a.hover-box {
  position: relative;
  overflow: hidden;
}

/* 画像の表示設定 */
.about-clinic .photo-grid a .hover-box img {
  width: 100%;
  height: auto;
  display: block;
  
}

/* ホバー時に表示する文字のベース設定（最初は透明・中央配置） */
.about-clinic .photo-grid a .hover-text {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.8); /* 半透明の黒背景 */
  color: #fff; /* 文字色：白 */
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 0;
  transition: opacity 0.4s ease; /* ふわっと表示させるアニメーション */

}

/* マウスを重ねた時の処理 */
.about-clinic .photo-grid a.hover-box:hover .hover-text {
  opacity: 1; /* ホバー時に不透明にして文字を表示 */
  font-size: 18px;
  background-color: rgba(0, 0, 0, 0.6); /* 半透明の黒背景 */
}
@media (max-width: 767px) {
.about-clinic .photo-grid a{
    width: calc((100% / 2 ));
}
}
.about-clinic .photo-grid picture img{
    width: 100%;
}
.about-clinic .about-clinic__text{

}
@media (min-width: 768px) {
.about-clinic .about-clinic__text{
  margin: 20px auto 0;
}
/*.about-clinic .about-clinic__text .inner {
  max-width: 780px;
  width: 85%;
  margin:15px auto 0;
    }*/
  
}
@media (max-width: 767px) {
.about-clinic .about-clinic__text .inner p{
  margin-top: 30px;
}
}
.footer-info-wrap{
  background:linear-gradient(rgba(0, 0, 0, 0.8), rgba(58, 50, 45, 0.8)),url(../img/back_timetable.jpg) ;
  background-size: cover;
  width: 100%;
}
.footer-info-wrap > .inner{
max-width: 1600px;
padding: 10% 0;
margin: auto;
display: flex;
flex-wrap: wrap;
justify-content: stretch;
}
.footer-info-wrap .footer-news,.footer-info-wrap .footer-timetable{
padding: 0 2%;
}
@media (min-width: 980px) {
.footer-info-wrap .footer-news,.footer-info-wrap .footer-timetable{
width: 50%;
}

.footer-info-wrap :is(.footer-news,.footer-timetable) h2{
  margin-bottom: 15px;
  line-height: 1em;
  font-size: 40px;
}
.footer-info-wrap .footer-news{
padding-right: 30px;
}
.footer-info-wrap .footer-timetable{
  padding-left: 30px;
}
.footer-info-wrap .footer-news dl{
margin-bottom: 30px;
}
}
@media (max-width: 979px){
  .footer-info-wrap .footer-news{
    margin-bottom: 45px;
  }
}
.footer-info-wrap .footer-news dl{
display: flex;
flex-wrap: wrap;
justify-content: stretch;
align-items: flex-end;
color: #fff;
margin-bottom: 15px;
}
.footer-info-wrap .footer-news :is(dl dt,dl dd){
  border-bottom: solid 1px rgb(229, 228, 227);
  padding: 15px;
}
.footer-info-wrap .footer-news dl dt{
width: 100px;
font-size: 12px;
}
.footer-info-wrap .footer-news dl dd{
  width: calc(100% - 100px);
}

.footer-info-wrap .footer-timetable .dl01{
  color: #fff;
}



/*.top-view{
    opacity: 0; visibility: hidden;
}*/
@scope (.top_view) {
.scroll-container {
  position: relative;
  width: 100%;
  height: 100vh; /* スクロール開始時は画面ぴったりに */
  overflow: hidden;
}

.bg-visual {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
}
.bg-visual video {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    object-position: center;
}
.content-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

.slide-con {
  position: absolute;
  color: #fff;
  line-height: clamp(1.80, 1.5535 + 0.065728vw, 2.50);
  opacity: 0; /* 初期状態は非表示 */
  visibility: hidden;  font-weight: 300;
  transform: translateY(20px); /* 少し下からフワッと出すため */
}

/* 最初のテキストだけ最初から見せておく */
.slide-con.active {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.slide-con h2{
  font-family:var(--aboreto-font-family);
  font-size: clamp(18px, 16.59px + 0.3756vw, 22px);
  font-weight: 300;
}
.slide-con.chapter01{
    text-align: center;
}
.slide-con .inner{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  max-width: 800px;
  margin: auto;
}
.slide-con .inner .im_chapter{
  width: 45%;
  margin-right: 5%;
}
.slide-con .inner .div_con{
  width: 50%;
}
.slide-con:not(.chapter01) .div_con > *:not(a) {
  margin-bottom: 5%;
}
.next-section {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}
}
@scope (.sec_concept) {
.collage-container {
  display: grid;
  /* 横に12等分、縦に10等分（高さは600px）のマス目を作る */
  grid-template-columns: repeat(12, 1fr);
  grid-template-rows: repeat(10, 60px);
  gap: 20px; /* 写真同士の基本の隙間 */
  max-width: 1400px;
  width: 100%;
  margin: 0 auto;
}
/* 画像が枠線にぴったり収まるように設定 */
.photo-item img {
  width: 100%;
  height: 100%;
  object-fit: cover; /* 縦横比を崩さずトリミング */
  box-shadow: 0 4px 15px rgba(0,0,0,0.1); /* 軽い影で立体感を出す */
}
.center-text-block {
  grid-column: 4 / 10; /* 12マスの中央付近（4〜9マス目）を占有 */
  grid-row: 3 / 8;     /* 縦方向でも中央付近を占有 */
  z-index: 10;         /* 写真より確実に前面に出す */
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  padding: 30px;
}

/* 周りの写真は、この中央エリア（4〜10）を避けるように左右に配置する */
.pic-left-top01     {grid-column: 1 / 3;grid-row: 1 / 4; }
.pic-left-top02  { grid-column: 2 / 4;grid-row: 3 / 6;}
.pic-left-bottom01 { grid-column: 1 / 3; grid-row: 9 / 11; }
.pic-right-top01    { grid-column: 11 / 13; grid-row: 1 / 3; }
.pic-right-bottom01 { grid-column: 10 / 12; grid-row: 7 / 11; }

.center-text-block :is(h2,p){
  margin-bottom: 5%;
}
.center-text-block .statement__txt{
  line-height: 2em;
}
}
.sec_medical-hours{
  position: relative;
}
@scope (.sec_medical-hours) {
.headline-medical-hours > .jp{
  text-align: center;
  font-size: clamp(18px, 17.30px + 0.1878vw, 20px);
  margin-bottom: 5%;
}
h2{
  text-align: center;
  margin-bottom: 10%;
}
.link02{
  width: 100px;
  display: block;
  margin: auto;
}
.step-medical-hours{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items:center;
  max-width: 460px;
  margin: 0 auto 5%;
  width: 100%;
      .im_time{
        width: 200px;
        margin-right: 5%;
      }
      .im_time svg{
        width: 100%;
      }
      .dl_time-plan{
        width: calc((100% - 200px) - 5%);
    
      }
      .dl_time-plan .line{
        color: #fff;
        font-size: 12px;
        display: block;
        font-family:var(--aboreto-font-family); 
      }
      .dl_time-plan .txt_plan{
        display: block;        
      }
      
      .dl_time-plan dd{
       font-family:var(--aboreto-font-family);
       font-size: 30px;
      }
      .st0 {
        isolation: isolate;
      }

      .time-pie {
        fill: #bab89d;
        mix-blend-mode: soft-light;
      }

      .st2 {
        fill: #595857;
      }
    }
}
.sec_doctordate{
display: grid;
  /* 横に12等分、縦に6等分（高さは600px）のマス目を作る */
  grid-template-columns: repeat(12, 1fr);
  grid-template-rows: repeat(10, .5fr);
    max-width: 1400px;
  width: 100%;
  margin: auto;
}
@scope (.sec_doctordate) {
  img{
  width: 100%;
  height: 100% !important;
  object-fit: cover;
  }
.top-doctordate__photo {grid-column: 1 / 5;grid-row: 1 / 10; }
.top-doctor_photos  { grid-column: 6 / 10; grid-row: 2 / 4;}
.top-treatment__title { grid-column: 11 / 13; grid-row: 2 / 3;margin-bottom: 0; }
.name { grid-column: 11 / 13; grid-row:  3 / 4; font-size: 30px;}
.name .prof{
  font-size: 18px;
  display: block;
}
.top-doctordate__copy    { grid-column: 6 / 13; grid-row: 5 / 8; }
.top-doctordate__copy .top-arrow{
  margin-top: 5%;
}
}
@scope (.footer-timetable) {
.table-time {
 width: 100%;
margin-bottom: 15px;
 text-align: center;
 border-collapse: collapse;
 border-spacing: 0;
}
.table-time th,.table-time td{
  padding: 15px;
}
.table-time th {
 border-bottom: solid 4px rgb(229, 228, 227);
 color: #fff;
}
.table-time td {
 color: #fff;
 border-bottom: solid 1px rgb(229, 228, 227);
}
.clock-container { text-align: center;width: 100%;display: flex;flex-wrap: wrap;justify-items: center; align-items: center;}
        
.div_clock h3{
color: #fff;
text-align: center;
}

@media (min-width: 768px) {
  .clock-container .div_clock{
width: 350px;
}
.clock-container .div_timedate{
width: calc((100% - 350px) - 15px);
}
.clock-container .div_clock{
  margin-right: 15px;
}
}
@media (max-width: 767px) {
  .clock-container :is(.div_clock,.div_timedate){
width: 100%;
}
.clock-container .div_clock{
  margin-bottom: 30px;
}
}
        /* アナログ時計のベースデザイン */
        .clock { 
            position: relative; width: 240px; height: 240px; 
            /*border: 10px solid #333;*/ border-radius: 50%; margin: 20px auto; 
            background: #fff; box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
            overflow: hidden;
        }

        /* 診察時間帯のカラーマーク */
        .zone { position: absolute; width: 100%; height: 100%; border-radius: 50%; top: 0px; left: 0px; }

        /* 【平日通常】午前診察（11:00〜13:30） */
        .am-normal-zone {
            background: conic-gradient(from 0deg, rgba(186, 184, 157, 0.25) 0deg, rgba(186, 184, 157, 0.25) 75deg, transparent 75deg);
            transform: rotate(330deg);
        }
        /* 【平日通常】午後診察（15:00〜21:00） */
        .pm-normal-zone {
            background: conic-gradient(from 0deg, rgba(186, 184, 157, 0.8) 0deg, rgba(186, 184, 157, 0.8) 180deg, transparent 180deg);
            transform: rotate(90deg);
        }

        /* 【土曜限定】診察時間（10:00〜13:00） */
        .sat-zone {
            background: conic-gradient(from 0deg, rgba(186, 184, 157, 0.9) 0deg, rgba(186, 184, 157, 0.9) 90deg, transparent 90deg);
            transform: rotate(210deg);
        }

        /* 時計の針 */
        .needle { position: absolute; background: #333; bottom: 50%; left: 50%; transform-origin: bottom; border-radius: 4px; transition: transform 0.5s cubic-bezier(0.4, 2.08, 0.55, 1); }
        .hour { width: 6px; height: 60px; margin-left: -3px; z-index: 3; }
        .minute { width: 4px; height: 85px; margin-left: -2px; background: #666; z-index: 2; }
        .center-dot { position: absolute; width: 12px; height: 12px; background: #333; border-radius: 50%; top: 50%; left: 50%; margin: -6px 0 0 -6px; z-index: 4; }

        /* 文字盤の目盛り */
        .number { position: absolute; font-weight: bold; z-index: 1; }
        .n12 { top: 5px; left: 50%; transform: translateX(-50%); }
        .n3  { right: 10px; top: 50%; transform: translateY(-50%); }
        .n6  { bottom: 5px; left: 50%; transform: translateX(-50%); }
        .n9  { left: 10px; top: 50%; transform: translateY(-50%); }

        /* ステータス表示 */
        .status-badge { display: inline-block; padding: 6px 16px; border-radius: 20px; font-weight: bold; font-size: 1.1rem; margin-top: 10px; }
        .open { background-color: #fff; color: #544624;         border: 2px solid #fff;
        border-radius: 1rem;
        box-shadow: 0 0 1px #fff,
            inset 0 0 1px #fff,
            0 0 10px #c4a965,
            inset 0 0 10px #c4a965,
            0 0 20px #c4a965,
            inset 0 0 10px #c4a965;}
        .close { background-color: #cdcdcd; color: #846d6a; }
        
        .notice-text { font-size: 1rem; margin-top: 12px; font-weight: bold;background: #E5E4E3; padding: 8px; border-radius: 6px; display: inline-block; }
      .dl_timelist{
        border-bottom: solid 1px #fff;
        margin-bottom:30px ;
      }
        .dl_timelist,.dl01{
        text-align: left;
      }
        .dl_timelist > dt{
        background: rgba(255,255,255,.3);
        color: #fff;

        padding: 5px 15px;
        margin-bottom: 15px;
      }  
      .dl01 dt{
        width: 90px;
      }
      .dl01 dd{
        width: calc(100% - 90px);      }
      }

.dynamic-contentc{
  display: none;
}
      /* モーダル背景（ブラー効果でおしゃれに） */
.modal-overlay {
  position: fixed;
  top: 0; left: 0; width: 100%; height: 100%;
  background: rgba(40, 50, 60, 0.4);
  backdrop-filter: blur(8px); /* 背景をぼかすトレンドデザイン */
  z-index: 9999;
  display: flex; justify-content: center; align-items: center;
}

/* カード本体 */
.modal-card {
   position: fixed;
   left: 50%;
   z-index: 100000;
  transform:var(--transform-50-Y);
  transform:var(--transform-50-X);
  padding: 40px 30px;
  width: 90%; 
  border-radius: 20px;

  box-sizing: border-box;
  animation: modalFadeUp 0.4s ease;
}

/* タイトル */
.modal-title {
  font-size: 1.25rem;
  color: #fff;
  text-align: center;
  line-height: 1.6;
  margin-bottom: 30px;
}

/* 選択ボタンのグリッド */
.choice-grid {
  display: flex; flex-direction: column; gap: 12px;
  margin-bottom: 24px;
  max-width: 460px;
  margin: 0 auto 30px;
}
/* 通常の選択ボタン */
.card-btn {
  background: #fff;
  box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  border: 1px solid #DFDBD3;
  text-align: center;
  padding: 20px;
  font-size: 1rem;
  color: rgb(89, 87, 87);
  cursor: pointer;
  display: flex; 
  align-items: center; 
  justify-items: center;
  gap: 15px;
  transition: all 0.25s ease;
}
.card-btn:hover {
  opacity: .5s;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(255,201,201,0.3);
}

/* 緊急ボタン（目立たせるが恐怖感を与えない淡い赤） */
.emergency-card{
  background: #E5E4E3;
  max-width: 780px;
}
.card-btn-emergency {
  background: #fff5f5;
  border-color: #ffa8a8;
  color: #c92a2a;
}
.card-btn-emergency small {
  display: block; font-size: 0.8rem; color: #fa5252; margin-top: 2px;
}

/* スキップ・閉じるリンク */
.btn-skip {
  background: none; border: none;
  display: block; margin: 0 auto;
  color: #868e96; font-size: 0.9rem;
  text-decoration: underline; cursor: pointer;
}

/* --- 緊急モーダル専用スタイル --- */
.emergency-card {
  border: 3px solid #ffdeeb; /* 優しいピンク赤の枠線 */
  text-align: center;
}
.emergency-icon { font-size: 3rem; margin-bottom: 10px; }
.emergency-title { color: #E5A56C; font-size: 1.4rem; margin-bottom: 15px; }
.emergency-text { color: #495057; line-height: 1.6; margin-bottom: 25px; }
.emergency-note { font-size: 0.85rem; color: #868e96; margin-bottom: 25px; line-height: 1.5; }

/* アクションボタン（電話・WEB） */
.action-buttons { display: flex; flex-direction: column; gap: 15px; margin-bottom: 25px; }
.action-btn {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 15px; border-radius: 12px; text-decoration: none; font-weight: bold;
  transition: transform 0.2s;
}
.action-btn:hover { transform: scale(1.02); }
.btn-tel { background: #E2C2BF; color:  } /* 電話はアクティブなオレンジ */
.btn-tel small { font-size: 0.8rem; opacity: 0.9; font-weight: normal; }
.btn-web { background: #96745a; color: white; font-weight: normal; } /* WEBは信頼感のあるシアン・ネイビー系 */

/* アニメーション */
@keyframes modalFadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

.wrap_movie {
  position: fixed;
  inset: 0;

  z-index: 100;
  height: 100vh;
background: linear-gradient(180deg, #DFDBD3 0%, #AA9E8A 100%);
}
.movie{
  padding: 0;
  margin: 0;
}
.movie video {
  height: 100%;
  width: 100%;
  mix-blend-mode: overlay;
}
.note {
  display: none !important;
}