/*
Theme Name: Hospital UI
Version: 1.0
*/

:root{
  --bg: #eef3f6;
  --card: #ffffff;
  --text: #0f2d40;
  --muted: #506577;
  --accent: #1e6ea5;
  --accent-dark: #0b4c7b;
  --accent-soft: #e9f2f7;
  --green: #A2D5CB;
  --heading: #2f6f4e;
  --border: #d1dbe3;
  --shadow: 0 8px 24px rgba(20, 40, 60, 0.08);
  --radius: 16px;
}

*{ box-sizing: border-box; }
body{
  margin:0;
  font-family: "BIZ UDPGothic", "Noto Sans JP", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
  color: var(--text);
  background: linear-gradient(180deg, #eef3f6 0%, #f7fafc 40%, #eef2f5 100%);
  line-height: 1.7;
  overflow-x: hidden;
}
html{ scroll-behavior: smooth; }

h1{
  font-size: 30px;
  line-height: 1.3;
}
h2{
  font-size: 24px;
  line-height: 1.35;
}
h3{
  font-size: 18px;
  line-height: 1.4;
}

a{ color: inherit; text-decoration: none; }
a:focus{ outline: 3px solid rgba(30,110,165,.35); outline-offset: 2px; }

.layout{
  display:flex;
  min-height:100vh;
  align-items: stretch;
}

/* Sidebar */
.sidebar{
  width: 240px;
  background: var(--green);
  border-right: 1px solid #8ac4b8;
  position: relative;
  top: auto;
  height: auto;
  min-height: 100%;
  padding: 18px 14px;
  display:flex;
  flex-direction: column;
  z-index: 20;
}
.brand{
  display:flex;
  flex-direction: column;
  align-items:center;
  gap:10px;
  padding: 6px 10px 14px;
}
.brand .logo{
  width: 100%;
  max-width: 220px;
  height: auto;
  mix-blend-mode: multiply;
}
.brand .title{
  font-weight: 800;
  font-size: 16px;
  text-align:center;
}
.sidebar nav{
  margin-top: 10px;
  overflow: visible;
}
.sidebar nav ul{
  list-style:none;
  padding:0;
  margin: 0;
  border-top: 1px solid rgba(15,45,64,.08);
}
.sidebar nav li{
  margin: 0;
  border-bottom: 1px solid rgba(15,45,64,.08);
  position: relative;
}
.sidebar nav a{
  display:flex;
  align-items:center;
  justify-content: space-between;
  padding: 14px 12px;
  color: #1a3b52;
  font-size: 13px;
  line-height: 1.4;
  font-weight: 700;
  white-space: nowrap;
  background: transparent;
  transition: color .2s ease, background-color .2s ease;
}
.sidebar nav a:hover{
  color: #0b4c7b;
  background: rgba(255,255,255,.45);
}
.sidebar nav .has-submenu > a::after{
  content: "▾";
  margin-left: 8px;
  color: #5f7a8c;
}
.submenu{
  list-style: none;
  margin: 0;
  padding: 6px 0;
  background: #ffffff;
  display: none;
  position: absolute;
  left: 100%;
  top: 0;
  min-width: 220px;
  max-height: none;
  overflow: visible;
  border: 1px solid rgba(15,45,64,.15);
  border-radius: 8px;
  box-shadow: 0 12px 24px rgba(20, 40, 60, 0.12);
  z-index: 5;
}
.submenu li{
  border: none;
}
.submenu a{
  font-weight: 600;
  font-size: 13px;
  padding: 10px 12px;
  color: #234456;
  background: transparent;
  justify-content: flex-start;
}
.submenu a::after{
  content: ">";
  margin-left: auto;
  color: #5f7a8c;
  transition: transform .2s ease;
}
.submenu a:hover::after{
  transform: translateX(4px);
}
.submenu a::after{
  content: none;
}
.has-submenu:hover .submenu,
.has-submenu:focus-within .submenu{
  display: block;
}
.sidebar nav a::after{
  content: "›";
  font-size: 18px;
  color: #5f7a8c;
  transition: transform .3s ease, font-size .3s ease;
}
.sidebar nav a:hover::after{
  transform: translateX(4px);
  font-size: 24px;
  color: #0b4c7b;
}
.sidebar .tel{
  margin-top: 16px;
  padding: 10px 12px;
  border-radius: 12px;
  background: #fff;
  font-weight: 800;
  color: #0b4c7b;
  display:flex;
  align-items:center;
  justify-content:center;
  gap: 8px;
}
.tel-icon{
  width: 18px;
  height: 18px;
  display:inline-block;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230b4c7b' stroke-width='1.8'%3E%3Cpath d='M7 4h10l1 2v12l-1 2H7l-1-2V6z'/%3E%3Cpath d='M9 7h6M9 17h6'/%3E%3Ccircle cx='12' cy='14' r='1'/%3E%3C/svg%3E");
}
.tel-number{
  letter-spacing: .02em;
}
.sidebar-actions{
  margin-top: 12px;
  display:flex;
  justify-content:center;
}
.side-contact{
  display:inline-block;
  padding: 10px 14px;
  border-radius: 8px;
  background: var(--accent-dark);
  color:#fff;
  font-weight: 800;
  letter-spacing: .02em;
}
.sidebar-social{
  margin-top: 10px;
  display: flex;
  justify-content: center;
}
.social-instagram{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 10px;
  background: linear-gradient(45deg, #f09433 0%, #e6683c 25%, #dc2743 50%, #cc2366 75%, #bc1888 100%);
  transition: opacity .2s ease, transform .2s ease;
}
.social-instagram:hover{
  opacity: .85;
  transform: scale(1.05);
}
.instagram-icon{
  fill: #ffffff;
  width: 22px;
  height: 22px;
}

/* Main */
.main{
  flex:1;
  min-width: 0;
  padding: 18px clamp(16px, 2vw, 36px) 32px;
  overflow-x: hidden;
}
.container{
  max-width: 1280px;
  margin: 0 auto;
  width: 100%;
}

.card{
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

/* Hero */
.hero{
  position: relative;
  border-radius: 0;
  overflow: hidden;
  z-index: 1;
  margin: 0 calc(-1 * clamp(16px, 2vw, 36px));
}
.hero-fv{
  display: flex;
  flex-direction: column;
  min-height: 560px;
  padding: 32px 36px 24px;
  background-color: #e8f2ee;
}
@keyframes kenburns{
  0%{ transform: scale(1) translate(0,0); }
  100%{ transform: scale(1.08) translate(-1%, -1%); }
}
.hero-fv::before{
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--hero-bg);
  background-size: cover;
  background-position: center;
  animation: kenburns 20s ease-in-out infinite alternate;
}
.hero-fv > *{
  position: relative;
  z-index: 1;
}

/* Catchcopy */
.hero-catchcopy{
  margin-bottom: auto;
}
.hero-main-copy{
  margin: 0 0 6px;
  font-size: 30px;
  font-weight: 900;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,.35), 0 1px 3px rgba(0,0,0,.25);
  letter-spacing: .06em;
  line-height: 1.4;
}
.hero-sub-copy{
  margin: 0;
  font-size: 15px;
  font-weight: 700;
  color: #fff;
  text-shadow: 0 1px 8px rgba(0,0,0,.3);
  letter-spacing: .03em;
}

/* Hero bottom: NEWS left + Schedule right */
.hero-bottom{
  display: flex;
  gap: clamp(16px, 2vw, 32px);
  align-items: flex-end;
  justify-content: space-between;
}

/* NEWS card */
.hero-news{
  flex: 0 1 420px;
  min-width: 0;
  background: rgba(255,255,255,.88);
  backdrop-filter: blur(4px);
  border-radius: 14px;
  padding: 16px 18px;
  box-shadow: 0 4px 16px rgba(0,0,0,.08);
}
.news-head{
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}
.news-head h3{
  margin: 0;
  font-size: 15px;
  color: var(--heading);
  letter-spacing: .08em;
}
.news-head h3 span{
  font-size: 12px;
  color: var(--muted);
  margin-left: 6px;
  letter-spacing: 0;
}
.news-more{
  font-size: 12px;
  padding: 6px 10px;
  border-radius: 999px;
  background: #e8f1f8;
  color: var(--heading);
  font-weight: 700;
}
.news-list{
  list-style:none;
  margin:0;
  padding:0;
}
.news-list li{
  display:flex;
  align-items:flex-start;
  gap: 8px;
  padding: 8px 0;
  border-bottom: 1px dashed var(--border);
}
.news-list li:last-child{ border-bottom:none; }
.news-tag{
  background: #d7edf4;
  color: var(--heading);
  font-size: 11px;
  font-weight: 800;
  padding: 2px 8px;
  border-radius: 4px;
  white-space: nowrap;
}
.news-meta{
  font-size: 12px;
  color: var(--muted);
  white-space: nowrap;
}
.news-title{
  font-size: 14px;
  font-weight: 700;
}

/* Schedule card */
.hero-schedule-wrap{
  flex: 0 1 480px;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.hero-schedule{
  background: rgba(255,255,255,.90);
  backdrop-filter: blur(4px);
  border-radius: 14px;
  padding: 18px 18px 14px;
  box-shadow: 0 4px 16px rgba(0,0,0,.08);
  overflow-x: auto;
}
.hero-schedule h2{
  margin: 0 0 12px;
  font-size: 17px;
  text-align: center;
  letter-spacing: .08em;
  color: var(--heading);
}
.table{
  width:100%;
  border-collapse: collapse;
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow:hidden;
  background: #fff;
}
.table th,.table td{
  padding: 6px 4px;
  border-bottom: 1px solid var(--border);
  text-align: center;
  font-size: clamp(12px, 1.2vw, 14px);
}
.table th{
  background: #f0f6fb;
  font-weight: 800;
  color: var(--heading);
}
.table th[scope="row"]{ white-space: nowrap; }
.table tr:last-child td{ border-bottom:none; }

.hours-meta{
  margin-top: 10px;
  font-size: 13px;
  color: var(--muted);
}
.hours-notice{
  list-style: none;
  padding: 0;
  margin: 0;
}
.hours-notice li{
  padding-left: 14px;
  position: relative;
  margin-bottom: 4px;
  font-size: 12px;
  line-height: 1.5;
}
.hours-notice li::before{
  content: "※";
  position:absolute;
  left:0;
  color: var(--heading);
}
.hours-notice .is-alert{
  color: #c0392b;
  font-weight: 700;
}
.hours-link{
  color: var(--accent);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.hours-link:hover{
  color: var(--accent-dark);
}
.link-icon{
  display: inline-block;
  width: 14px;
  height: 14px;
  margin-right: 2px;
  vertical-align: -2px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231e6ea5' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Hero banners (below schedule) */
.hero-banners{
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-radius: 14px;
  overflow: hidden;
  background: rgba(11, 76, 123, 0.95);
  box-shadow: 0 4px 16px rgba(0,0,0,.08);
}
.action{
  color: #fff;
  padding: 14px 8px;
  font-weight: 800;
  text-align:center;
  font-size: 12px;
  display:flex;
  flex-direction: column;
  align-items:center;
  justify-content:center;
  gap: 6px;
  border-right: 1px solid rgba(255,255,255,.2);
  transition: background .2s;
}
.action:last-child{ border-right: none; }
.action:hover{ background: rgba(7, 61, 99, 0.95); }
.icon{
  width: 26px; height: 26px;
  display:inline-block;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}
.icon-stetho{
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.8'%3E%3Cpath d='M6 3v5a6 6 0 1 0 12 0V3'/%3E%3Cpath d='M6 3H4m16 0h-2'/%3E%3Ccircle cx='18' cy='12' r='2.2'/%3E%3C/svg%3E");
}
.icon-calendar{
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.8'%3E%3Crect x='3' y='4' width='18' height='17' rx='2'/%3E%3Cpath d='M8 2v4M16 2v4M3 10h18'/%3E%3C/svg%3E");
}
.icon-map{
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.8'%3E%3Cpath d='M3 6l6-2 6 2 6-2v14l-6 2-6-2-6 2z'/%3E%3Cpath d='M9 4v14M15 6v14'/%3E%3C/svg%3E");
}
.icon-phone{
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.8'%3E%3Cpath d='M7 4h10l1 2v12l-1 2H7l-1-2V6z'/%3E%3Cpath d='M9 7h6M9 17h6'/%3E%3Ccircle cx='12' cy='14' r='1'/%3E%3C/svg%3E");
}

/* Banner slider */
.banner-slider{
  margin: 20px 0;
  overflow: hidden;
}
.banner-slide{
  display: block;
  text-decoration: none;
  border-radius: 10px;
  overflow: hidden;
  position: relative;
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  transition: box-shadow .2s;
}
.banner-slide:hover{
  box-shadow: 0 8px 28px rgba(20,40,60,.14);
}
.banner-slide img{
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
}
.banner-slide-title{
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 10px 14px;
  background: linear-gradient(transparent, rgba(0,0,0,.55));
  color: #fff;
  font-weight: 700;
  font-size: 14px;
  line-height: 1.3;
}

/* Departments */
.dept-section{
  margin-top: 8px;
  padding: 10px 0 0;
  overflow: hidden;
}
.section-head{
  margin-bottom: 20px;
  text-align: center;
}
@keyframes lineColorChange{
  0%{ background-position: 0% 0%; }
  50%{ background-position: 0% 100%; }
  100%{ background-position: 0% 0%; }
}
.section-head::before{
  content: "";
  display: block;
  width: 3px;
  height: 40px;
  margin: 0 auto 12px;
  background: linear-gradient(to bottom, #0f2d40, #3ec48c, #0f2d40);
  background-size: 100% 200%;
  border-radius: 2px;
  animation: lineColorChange 3s ease-in-out infinite;
}
.section-head h2{
  margin: 0 0 6px;
  font-family: 'Fot-TsukuARdGothic-Std', 'TsukuARdGothic-Std', sans-serif;
  font-weight: 700;
  font-size: 28px;
  line-height: 42px;
  letter-spacing: 1.4px;
  color: #0f2d40;
}
.section-head p{
  display: none;
}
.dept-grid{
  display:grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 12px;
}
.dept{
  border-radius: 12px;
  padding: 16px 16px 42px;
  background: #fff;
  font-weight: 800;
  display:flex;
  align-items:center;
  gap: 12px;
  border: 1px solid rgba(0,0,0,.04);
  min-height: 90px;
  position: relative;
  overflow: hidden;
  transition: transform .5s ease, box-shadow .5s ease;
}
.dept:hover{
  transform: translateY(-6px);
  box-shadow: 0 14px 28px rgba(20, 40, 60, 0.18);
}
.dept-icon{
  width: 60px; height: 60px;
  border-radius: 50%;
  background: rgba(255,255,255,.5);
  border: 1px solid rgba(0,0,0,.08);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 75%;
  transition: transform .5s ease, box-shadow .5s ease;
}
.dept:hover .dept-icon{
  transform: translateY(-4px) scale(1.15);
  box-shadow: 0 6px 16px rgba(0,0,0,.15);
}
.dept-title{
  font-size: 14px;
  color: #1b2d3b;
  transition: transform .5s ease, letter-spacing .5s ease;
}
.dept:hover .dept-title{
  transform: translateY(-3px);
  letter-spacing: .06em;
}
.dept-more{
  position: absolute;
  right: 16px;
  bottom: 12px;
  font-size: 12px;
  font-weight: 700;
  color: #0b4c7b;
  background: rgba(255,255,255,.9);
  border-radius: 999px;
  padding: 4px 10px;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .5s ease, transform .5s ease;
}
.dept:hover .dept-more{
  opacity: 1;
  transform: translateY(0);
}
/* 緑：小児科・産婦人科・眼科 */
.dept-pediatrics,
.dept-obstetrics,
.dept-ophthalmology{ background: #BEDEBA; }
/* 青：内科・耳鼻咽喉科 */
.dept-internal,
.dept-ent{ background: #B7DEEF; }
/* 紫：外科・整形外科・脳神経外科・皮膚科・泌尿器科 */
.dept-surgery,
.dept-orthopedics,
.dept-neurosurgery,
.dept-dermatology,
.dept-urology{ background: #B9B2D5; }
/* 赤：看護部・技術部 */
.dept-nursing,
.dept-technical{ background: #DEAAAE; }

/* Department icons — simple line icons, 48x48 viewBox, stroke #2f6f4e */
.dept-obstetrics .dept-icon{
  /* 母子：母親と赤ちゃん */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='12' r='5'/%3E%3Cpath d='M10 38v-8a8 8 0 0 1 16 0v8'/%3E%3Ccircle cx='34' cy='22' r='3.5'/%3E%3Cpath d='M28 38v-5a6 6 0 0 1 12 0v5'/%3E%3C/svg%3E");
}
.dept-pediatrics .dept-icon{
  /* 子供：小さい人物とクマのぬいぐるみ */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='20' cy='12' r='5'/%3E%3Cpath d='M12 38v-8a8 8 0 0 1 16 0v8'/%3E%3Ccircle cx='36' cy='28' r='5'/%3E%3Ccircle cx='33' cy='24' r='2'/%3E%3Ccircle cx='39' cy='24' r='2'/%3E%3Ccircle cx='34.5' cy='28' r='.8' fill='%232f6f4e'/%3E%3Ccircle cx='37.5' cy='28' r='.8' fill='%232f6f4e'/%3E%3C/svg%3E");
}
.dept-ophthalmology .dept-icon{
  /* 目 */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 24s8-12 20-12 20 12 20 12-8 12-20 12S4 24 4 24z'/%3E%3Ccircle cx='24' cy='24' r='6'/%3E%3Ccircle cx='24' cy='24' r='2.5' fill='%232f6f4e' stroke='none'/%3E%3C/svg%3E");
}
.dept-internal .dept-icon{
  /* 聴診器 */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 6v10a10 10 0 0 0 20 0V6'/%3E%3Cline x1='14' y1='6' x2='10' y2='6'/%3E%3Cline x1='34' y1='6' x2='38' y2='6'/%3E%3Ccircle cx='38' cy='22' r='3'/%3E%3Cpath d='M38 25v7a6 6 0 0 1-6 6h-4a6 6 0 0 1-6-6v-4'/%3E%3C/svg%3E");
}
.dept-ent .dept-icon{
  /* 耳 */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M30 8c5 3 8 8 8 14 0 8-4 14-8 18-2 2-5 2-7 0'/%3E%3Cpath d='M30 8c-4-3-10-3-14 2s-4 12 0 16'/%3E%3Cpath d='M20 22c0-3 2-5 5-5s5 3 4 6-3 5-5 8'/%3E%3C/svg%3E");
}
.dept-surgery .dept-icon{
  /* メス */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M32 6L16 30'/%3E%3Cpath d='M16 30c-4 5-8 8-6 10s7-1 12-5'/%3E%3Cpath d='M16 30l6 5'/%3E%3Cpath d='M32 6l4 3-14 18'/%3E%3C/svg%3E");
}
.dept-orthopedics .dept-icon{
  /* 骨 */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 10a4 4 0 0 1 4-4 4 4 0 0 1 4 4c0 2-1 3-2 4l-4 20c-1 1-2 2-2 4a4 4 0 0 0 4 4 4 4 0 0 0 4-4'/%3E%3Cpath d='M33 10a4 4 0 0 0-4-4 4 4 0 0 0-4 4c0 2 1 3 2 4l4 20c1 1 2 2 2 4a4 4 0 0 1-4 4 4 4 0 0 1-4-4'/%3E%3C/svg%3E");
}
.dept-neurosurgery .dept-icon{
  /* 脳 */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M24 38v-6'/%3E%3Cpath d='M14 20c0-6 4-12 10-12s10 6 10 12c0 5-3 9-6 11-1 1-1 2-1 3h-6c0-1 0-2-1-3-3-2-6-6-6-11z'/%3E%3Cpath d='M24 8v24'/%3E%3Cpath d='M18 14c2 2 4 4 6 4'/%3E%3Cpath d='M30 14c-2 2-4 4-6 4'/%3E%3Cpath d='M17 22c2 1 5 2 7 2'/%3E%3Cpath d='M31 22c-2 1-5 2-7 2'/%3E%3C/svg%3E");
}
.dept-dermatology .dept-icon{
  /* 手（肌） */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 28V14a3 3 0 0 1 6 0v10'/%3E%3Cpath d='M22 20v-8a3 3 0 0 1 6 0v8'/%3E%3Cpath d='M28 22v-6a3 3 0 0 1 6 0v10'/%3E%3Cpath d='M34 26v-2a3 3 0 0 1 4 0v6c0 6-5 12-12 12h-2c-5 0-10-4-10-10v-4'/%3E%3C/svg%3E");
}
.dept-urology .dept-icon{
  /* 腎臓 */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 8c-6 0-10 5-10 12 0 4 1 7 3 10 2 4 5 6 5 10h4c0-4 3-6 5-10 2-3 3-6 3-10 0-7-4-12-10-12z'/%3E%3Cpath d='M30 8c6 0 10 5 10 12 0 4-1 7-3 10-2 4-5 6-5 10h-4c0-4-3-6-5-10-2-3-3-6-3-10 0-7 4-12 10-12z'/%3E%3C/svg%3E");
}
.dept-nursing .dept-icon{
  /* ナースキャップ＋十字 */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='10' y='10' width='28' height='20' rx='3'/%3E%3Cpath d='M24 16v8m-4-4h8'/%3E%3Cpath d='M10 30l4 10h20l4-10'/%3E%3C/svg%3E");
}
.dept-technical .dept-icon{
  /* 顕微鏡 */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%232f6f4e' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='22' cy='12' r='5'/%3E%3Cpath d='M22 17v10'/%3E%3Cpath d='M22 27c0 4 3 7 7 7h5'/%3E%3Cpath d='M14 42h24'/%3E%3Cpath d='M26 34v8'/%3E%3Cpath d='M18 27h8'/%3E%3C/svg%3E");
}

/* Site nav */
.site-nav{
  margin-top: 22px;
  background: linear-gradient(120deg, #0f4c6a, #0b3f58);
  color: #fff;
  border-radius: 12px;
  padding: 18px;
}
.site-nav-inner{
  display:grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 16px;
}
.site-nav-col h3{
  margin: 0 0 10px;
  font-size: 14px;
  letter-spacing: .04em;
  border-left: 3px solid #fff;
  padding-left: 8px;
}
.site-nav-col a{
  display:block;
  color: #fff;
  padding: 6px 0;
  font-size: 13px;
  opacity: .9;
}
.site-nav-col a:hover{
  opacity: 1;
  text-decoration: underline;
}

/* Reveal */
.reveal{
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .7s ease, transform .7s ease;
  will-change: opacity, transform;
}
.reveal.is-visible{
  opacity: 1;
  transform: translateY(0);
}
.reveal-delay-1{ transition-delay: .1s; }
.reveal-delay-2{ transition-delay: .2s; }
.reveal-delay-3{ transition-delay: .3s; }


/* Page: Hospital */
.page-hero{
  margin: 12px 0 18px;
  padding: 28px 18px 24px;
}
.page-hero-inner h1{
  margin: 0;
  font-family: "Noto Serif JP", "Yu Mincho", "游明朝", serif;
  font-weight: 400;
  font-size: 28px;
  color: #0f2d40;
  text-align: center;
  padding-bottom: 18px;
  position: relative;
}
.page-hero-inner h1::after{
  content: "";
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 80px;
  height: 3px;
  border-radius: 2px;
  background: linear-gradient(to right, #8fd4a4, #2f6f4e);
  background-size: 200% 100%;
  animation: h1LineFlow 3s ease-in-out infinite;
}
@keyframes h1LineFlow{
  0%{ background-position: 0% 0%; }
  50%{ background-position: 100% 0%; }
  100%{ background-position: 0% 0%; }
}
.page-hero-inner p{
  display: none;
}
.page-anchor{
  margin-top: 24px;
  display:flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
}
.page-anchor a{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 200px;
  height: 40px;
  border-radius: 4px;
  background: #daeef8;
  color: #0f2d40;
  font-size: 13px;
  font-weight: 700;
  transition: background .25s ease, color .25s ease;
}
.page-anchor a:hover{
  background: #0b4c7b;
  color: #fff;
}
.page-section{
  margin: 40px 0 16px;
}
.page-section:first-of-type{
  margin-top: 16px;
}
.page-card{
  padding: 16px;
}
.page-card h2{
  margin: 0 0 10px;
  font-size: 18px;
  color: #0f2d40;
  border-left: 4px solid var(--heading);
  background: #f0f6fb;
  padding: 10px 12px;
}
.page-card h3{
  margin: 18px 0 8px;
  font-size: 15px;
  color: #0f2d40;
  font-weight: 800;
}
.page-card p{
  margin: 0 0 14px;
}
.page-lead{
  border-left: 4px solid var(--heading);
  padding: 8px 10px;
  font-weight: 700;
  color: var(--heading);
}
.page-list{
  list-style: none;
  padding: 0;
  margin: 0;
}
.page-list li{
  padding-left: 14px;
  position: relative;
  margin-bottom: 8px;
}
.page-list li::before{
  content: "・";
  position: absolute;
  left: 0;
  color: var(--heading);
}
/* Text + Image layout (text left, image right) */
.text-with-image{
  display: flex;
  gap: 24px;
  align-items: flex-start;
}
.text-with-image-body{
  flex: 1;
}
.text-with-image-photo{
  flex-shrink: 0;
  width: 220px;
  text-align: center;
}
.text-with-image-photo img{
  width: 100%;
  height: auto;
  border-radius: 8px;
  display: block;
}

/* Table + Image layout (table left, image right) */
.table-with-image{
  display: flex;
  gap: 24px;
  align-items: flex-start;
  margin: 12px 0;
}
.table-with-image .info-table{
  flex: 1;
  margin: 0;
}
.table-side-image{
  flex-shrink: 0;
  width: 240px;
  text-align: center;
}
.table-side-image img{
  width: 100%;
  height: auto;
  border-radius: 8px;
  display: block;
}

/* Device table (name / photo / description 3-column) */
.device-table{
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--border);
  margin: 12px 0;
}
.device-table th,
.device-table td{
  border: 1px solid var(--border);
  padding: 12px;
  vertical-align: middle;
  font-size: 14px;
}
.device-table thead th{
  background: var(--heading);
  color: #fff;
  font-weight: 700;
  text-align: center;
  white-space: nowrap;
}
.device-table tbody th{
  background: #f0f6fb;
  font-weight: 700;
  white-space: nowrap;
  text-align: center;
  width: 110px;
}
.device-td-img{
  width: 160px;
  text-align: center;
}
.device-td-img img{
  width: 100%;
  max-width: 150px;
  height: auto;
  border-radius: 6px;
  display: block;
  margin: 0 auto;
}

/* Placeholder image (full-width single image) */
.page-placeholder-img{
  margin: 16px 0;
  text-align: center;
}
.page-placeholder-img img{
  max-width: 480px;
  width: 100%;
  height: auto;
  border-radius: 8px;
  display: block;
  margin: 0 auto;
}

/* Placeholder label */
.placeholder-label{
  display: block;
  margin-top: 6px;
  font-size: 12px;
  color: #c00;
  font-weight: 700;
}

/* Image gallery */
.image-gallery{
  display: grid;
  gap: 16px;
  margin: 16px auto;
  max-width: 640px;
}
.image-gallery-2{
  grid-template-columns: repeat(2, 1fr);
}
.image-gallery-3{
  grid-template-columns: repeat(3, 1fr);
}
.gallery-item{
  text-align: center;
  overflow: hidden;
}
.gallery-item img{
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: 8px;
  display: block;
}

/* Staff profile */
.staff-profile{
  padding: 20px 0;
  border-bottom: 1px solid var(--border);
}
.staff-profile:last-child{
  border-bottom: none;
}

.page-note{
}
.privacy-notes{
  margin-top: 32px;
  padding: 20px 24px;
  background: #f7faf9;
  border: 1px solid #d1dbe3;
  border-radius: 8px;
}
.page-list-number{
  margin: 0;
  padding-left: 20px;
}
.page-list-number li{
  margin-bottom: 8px;
}
.info-table{
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--border);
  margin: 12px 0;
  background: #fff;
}
.info-table th,
.info-table td{
  border-bottom: 1px solid var(--border);
  padding: 10px 8px;
  text-align: left;
  font-size: 14px;
}
.info-table th{
  background: #f0f6fb;
  color: var(--heading);
  font-weight: 800;
}
.info-table tr:last-child td{
  border-bottom: none;
}

/* Fees layout */
.fees-layout{
  display: flex;
  gap: 24px;
  align-items: flex-start;
  margin: 12px 0;
}
.fees-layout .info-table{
  flex: 1;
  margin: 0;
}
.fees-image{
  flex-shrink: 0;
  width: 240px;
  border-radius: 8px;
  overflow: hidden;
}
.fees-image img{
  width: 100%;
  height: auto;
  display: block;
}

/* Visit info */
.visit-info-box{
  margin-bottom: 24px;
  padding: 20px 24px;
  background: #f7faf9;
  border: 1px solid var(--border);
  border-radius: 8px;
}
.visit-hours-table{
  border-collapse: collapse;
  margin-bottom: 16px;
}
.visit-hours-table caption{
  text-align: left;
  font-weight: 800;
  font-size: 15px;
  color: var(--text);
  margin-bottom: 8px;
}
.visit-hours-table th,
.visit-hours-table td{
  padding: 6px 16px 6px 0;
  font-size: 14px;
  vertical-align: top;
}
.visit-hours-table th{
  font-weight: 700;
  white-space: nowrap;
}
.visit-notice-list{
  list-style: none;
  padding: 0;
  margin: 0 0 12px;
}
.visit-notice-list li{
  margin-bottom: 6px;
  font-size: 14px;
  line-height: 1.7;
}
.text-red{
  color: #c00;
  font-weight: 700;
}
.text-underline-bold{
  font-weight: 800;
  text-decoration: underline;
}
.visit-sign{
  text-align: right;
  font-size: 13px;
  color: var(--muted);
  margin: 8px 0 0;
}

.page-media{
  margin: 12px 0;
  padding: 18px;
  border: 1px dashed var(--border);
  border-radius: 10px;
  background: #f7fafc;
  color: var(--muted);
  font-size: 13px;
  text-align:center;
}
.page-media img{
  max-width: 100%;
  height: auto;
}
.map-embed{
  width: 100%;
  overflow: hidden;
  border-radius: 10px;
}
.map-embed iframe{
  width: 100%;
  height: 400px;
  border: 0;
  display: block;
}
.map-link{
  margin-top: 8px;
  font-size: 13px;
}
.media-img{
  max-width: 100%;
  height: auto;
  display: block;
  margin: 0 auto;
}
.parking-image{
  margin: 12px 0;
  text-align: left;
}
.parking-img{
  width: 360px;
  height: 200px;
  object-fit: cover;
  display: block;
}
.doc-links{
  display:flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 10px 0 0;
}
.doc-links a{
  display:inline-block;
  padding: 6px 12px;
  border-radius: 8px;
  background: #e8f1f8;
  color: var(--heading);
  font-weight: 700;
  font-size: 13px;
}
.doc-links a:hover{
  background: #dfeaf1;
}
.contact-box .info-table th{
  width: 140px;
}
.flow-list{
  display:flex;
  flex-direction: column;
  gap: 10px;
  margin: 12px 0;
}
.flow-step{
  position: relative;
  padding: 14px 16px;
  border: 1px solid var(--border);
  background: #fff9c9;
  border-radius: 8px;
}
.flow-step h3{
  margin: 0 0 6px;
  font-size: 15px;
  color: var(--heading);
}
.flow-step + .flow-step::before{
  content: "";
  position: absolute;
  left: 50%;
  top: -10px;
  width: 0;
  height: 0;
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-top: 10px solid #f59bb0;
  transform: translateX(-50%);
}
.block-table-wrap{
  margin: 12px 0;
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow: hidden;
  background: #fff;
}
.block-table{
  width: 100%;
  border-collapse: collapse;
}
.block-table th{
  background: #76b82a;
  color: #fff;
  font-size: 16px;
  padding: 10px;
  text-align: center;
}
.block-table td{
  border-top: 1px solid var(--border);
  border-right: 1px solid var(--border);
  padding: 10px 12px;
  vertical-align: top;
  font-size: 14px;
}
.block-table td:last-child{
  border-right: none;
}
.block-table ul{
  margin: 0;
  padding-left: 18px;
}
.block-table li{
  margin: 4px 0;
  color: var(--heading);
  font-weight: 700;
}
.block-table-photo td{
  padding: 12px;
  text-align: center;
}
.block-table-photo img{
  max-width: 100%;
  height: auto;
  display: inline-block;
}
.close-dept{
  margin: 18px 0 8px;
  font-size: 16px;
  color: var(--heading);
  border-left: 4px solid var(--heading);
  padding-left: 10px;
}
.close-table{
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--border);
  background: #fff;
  margin-bottom: 16px;
}
.close-table th,
.close-table td{
  padding: 10px 8px;
  border-bottom: 1px solid var(--border);
  text-align: left;
  font-size: 14px;
}
.close-table th{
  background: #f0f6fb;
  color: var(--heading);
  font-weight: 800;
}
.close-table tr:last-child td{
  border-bottom: none;
}

/* Department Schedule */
.dept-schedule-wrap{
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.dept-schedule{
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--border);
  min-width: 500px;
}
.dept-schedule th,
.dept-schedule td{
  border: 1px solid var(--border);
  padding: 10px 8px;
  text-align: center;
  vertical-align: middle;
  font-size: 14px;
  line-height: 1.5;
}
.dept-schedule thead th{
  background: var(--heading);
  color: #fff;
  font-weight: 700;
  padding: 10px 6px;
}
.dept-schedule .dept-schedule-slot{
  background: #f0f6fb;
  font-weight: 700;
  width: 60px;
  color: var(--heading);
}
.dept-schedule thead .dept-schedule-slot{
  background: var(--heading);
  color: #fff;
}
.dept-schedule .row-am td{ background: #fafcfe; }
.dept-schedule .row-pm td{ background: #f9f9f6; }
.dept-schedule-empty{
  color: #bbb;
}

/* Department News */
.dept-news-list{
  list-style: none;
  padding: 0;
  margin: 0;
}
.dept-news-list li{
  display: flex;
  gap: 12px;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px solid #eee;
}
.dept-news-list li:last-child{ border-bottom: none; }
.dept-news-date{
  flex-shrink: 0;
  font-size: 13px;
  color: #888;
  min-width: 80px;
}
.dept-news-title{
  color: var(--heading);
  text-decoration: none;
  font-weight: 500;
}
.dept-news-title:hover{ text-decoration: underline; }

.greeting-layout{
  display:flex;
  gap: 18px;
  align-items:flex-start;
}
.greeting-text{
  flex: 1 1 auto;
}
.greeting-media{
  flex: 0 0 200px;
  text-align:center;
}
.director-photo{
  width: 100%;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid var(--border);
  background: #eef2f6;
}
.director-photo img{
  display:block;
  width: 100%;
  height: auto;
}
.director-name{
  margin: 0;
  font-weight: 800;
  color: var(--heading);
}

/* Facility Standards */
.facility-main-title{
  margin: 18px 0 12px;
}
.facility-main-title h4,
.facility-main-title-inline{
  font-size: 15px;
  color: var(--muted);
  border-left: 3px solid var(--muted);
  padding-left: 10px;
  margin: 18px 0 10px;
  font-weight: 600;
}
.facility-block{
  margin-bottom: 16px;
}
.facility-section-title{
  font-size: 18px;
  color: var(--heading);
  margin: 0 0 12px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--accent-soft);
  font-weight: 700;
}
.facility-pdf-list{
  list-style: none;
  margin: 0;
  padding: 0;
}
.facility-pdf-inline{
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
}
.facility-pdf-list li{
  margin: 0;
}
.facility-pdf-list a{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 8px;
  font-weight: 600;
  font-size: 14px;
  color: var(--accent-dark);
  transition: background .2s ease;
}
.facility-pdf-list a:hover{
  background: var(--accent-soft);
}
.pdf-icon{
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0392b' stroke-width='1.5'%3E%3Cpath d='M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='M10 13h4M10 17h4M8 9h2'/%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
}
.pdf-name{
  flex: 1;
}
.pdf-size{
  font-size: 12px;
  color: var(--muted);
  font-weight: 400;
}
.facility-archive-list{
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.facility-archive-item{
  display: flex;
  align-items: center;
  justify-content: space-between;
  transition: transform .2s ease, box-shadow .2s ease;
}
.facility-archive-item:hover{
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(20,40,60,.1);
}
.facility-archive-item h2{
  font-size: 16px;
  margin: 0;
  color: var(--text);
}
.facility-archive-arrow{
  font-size: 22px;
  color: var(--muted);
}

/* ── News (archive / single) ── */
.p-breadcrumb{
  font-size: 13px;
  color: var(--muted);
  margin: 0 0 16px;
}
.p-breadcrumb a{
  color: var(--heading);
  text-decoration: none;
}
.p-breadcrumb a:hover{
  text-decoration: underline;
}
/* Magazine */
.magazine-grid{
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 24px;
}
.magazine-card{
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
  transition: box-shadow .25s ease, transform .25s ease;
}
.magazine-card:hover{
  transform: translateY(-4px);
  box-shadow: 0 8px 20px rgba(20,40,60,.12);
}
.magazine-card a{
  text-decoration: none;
  color: inherit;
  display: block;
}
.magazine-thumb{
  width: 100%;
  aspect-ratio: 3 / 4;
  background: #f0f4f7;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.magazine-thumb img{
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.magazine-thumb-empty{
  color: #aab;
  font-size: 13px;
}
.magazine-info{
  padding: 12px 14px 16px;
}
.magazine-date{
  display: block;
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 4px;
}
.magazine-title{
  display: block;
  font-size: 14px;
  font-weight: 700;
  color: var(--text);
  line-height: 1.5;
}

.news-layout{
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 32px;
  margin: 16px 0;
}
.news-sidebar-title{
  margin: 0;
  padding: 12px 14px;
  background: var(--heading);
  color: #fff;
  font-size: 14px;
  font-weight: 800;
  line-height: 1.5;
  border-radius: 8px 8px 0 0;
}
.news-cat-list{
  list-style: none;
  margin: 0;
  padding: 0;
  border: 1px solid var(--border);
  border-top: none;
  border-radius: 0 0 8px 8px;
  overflow: hidden;
}
.news-cat-list li{
  border-bottom: 1px solid var(--border);
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 600;
  color: #5f7a8c;
  white-space: nowrap;
  transition: background .2s ease;
}
.news-cat-list li:last-child{
  border-bottom: none;
}
.news-cat-list li:hover{
  background: #f0f6fb;
}
.news-cat-list li a{
  color: #1a3b52;
  text-decoration: none;
  margin-right: 4px;
}
.news-cat-list .current-cat{
  background: #e7f2f7;
  border-left: 4px solid var(--heading);
  padding-left: 10px;
}
.news-cat-list .current-cat > a{
  color: var(--heading);
  font-weight: 800;
}
.news-content-title{
  margin: 0 0 20px;
  font-size: 22px;
  color: #0f2d40;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--heading);
}
.news-list{
  display: flex;
  flex-direction: column;
}
.news-item{
  display: block;
  padding: 16px 0;
  border-bottom: 1px solid var(--border);
  text-decoration: none;
  color: inherit;
  transition: background .2s ease;
}
.news-item:first-child{
  border-top: 1px solid var(--border);
}
.news-item:hover{
  background: #f8fbfd;
}
.news-item-meta{
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.news-date{
  font-size: 13px;
  color: var(--muted);
  font-weight: 600;
}
.news-cat{
  display: inline-block;
  padding: 2px 10px;
  font-size: 11px;
  font-weight: 700;
  color: #fff;
  background: var(--heading);
  border-radius: 3px;
}
.news-item-title{
  font-size: 15px;
  font-weight: 600;
  color: #1a3b52;
  line-height: 1.6;
}
.news-item:hover .news-item-title{
  color: var(--heading);
}
.news-pagination{
  margin-top: 24px;
}
.news-pagination .nav-links{
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
}
.news-pagination .page-numbers{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  height: 36px;
  padding: 0 8px;
  font-size: 14px;
  font-weight: 600;
  color: #1a3b52;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 6px;
  text-decoration: none;
  transition: background .2s ease, color .2s ease;
}
.news-pagination .page-numbers:hover{
  background: #f0f6fb;
  color: var(--heading);
}
.news-pagination .page-numbers.current{
  background: var(--heading);
  color: #fff;
  border-color: var(--heading);
}
.news-empty{
  padding: 40px 0;
  text-align: center;
  color: var(--muted);
}

/* Single article */
.news-article{
  margin-bottom: 32px;
}
.news-article-title{
  margin: 12px 0 24px;
  font-size: 24px;
  font-weight: 800;
  color: #0f2d40;
  line-height: 1.5;
  padding-bottom: 16px;
  border-bottom: 2px solid var(--heading);
}
.news-article-body{
  font-size: 15px;
  line-height: 1.8;
  color: var(--text);
}
.news-article-body p{
  margin: 0 0 16px;
}
.news-article-body img{
  max-width: 100%;
  height: auto;
  border-radius: 8px;
}
.news-nav{
  margin-top: 32px;
  padding-top: 20px;
  border-top: 1px solid var(--border);
}
.news-nav-links{
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.news-nav-links a{
  font-size: 14px;
  font-weight: 600;
  color: var(--heading);
  text-decoration: none;
  padding: 8px 16px;
  border: 1px solid var(--heading);
  border-radius: 6px;
  transition: background .2s ease, color .2s ease;
}
.news-nav-links a:hover{
  background: var(--heading);
  color: #fff;
}
.news-nav-links .is-disabled{
  font-size: 14px;
  color: var(--muted);
  padding: 8px 16px;
}
.news-nav-all{
  background: var(--heading);
  color: #fff !important;
  border-color: var(--heading) !important;
}

/* Footer */
.site-footer{
  margin-top: 28px;
  background: #f1f7f0;
  color: #0f2d40;
  border-radius: 12px;
  padding: 18px;
  border: 1px solid var(--border);
}
.footer-grid{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.footer-logo{
  display: block;
  max-width: 200px;
  height: auto;
  margin-bottom: 10px;
}
.site-footer h3{
  margin: 0 0 8px;
  font-size: 16px;
  color: var(--heading);
}
.site-footer p{
  margin: 0 0 6px;
}
.footer-banners{
  margin-top: 14px;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.footer-banners a{
  display: inline-block;
  transition: opacity .2s ease;
}
.footer-banners a:hover{
  opacity: .8;
}
.footer-banners img{
  height: 50px;
  width: auto;
  display: block;
}
.footer-notice{
  margin-top: 8px;
  font-size: 11px;
  line-height: 1.6;
  color: #aab;
}
.footer-notice a{
  color: #8fd4a4;
  text-decoration: underline;
}
.copyright{
  margin-top: 12px;
  text-align:center;
  color: var(--muted);
  font-size: 12px;
}

/* Page Top */
.pagetop{
  position: fixed;
  right: 24px;
  bottom: 24px;
  width: 44px;
  height: 44px;
  background: var(--accent-dark);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 12px rgba(0,0,0,.15);
  opacity: 0;
  visibility: hidden;
  transition: opacity .3s ease, visibility .3s ease, transform .2s ease;
  z-index: 100;
}
.pagetop.is-visible{
  opacity: 1;
  visibility: visible;
}
.pagetop:hover{
  transform: translateY(-3px);
}
.pagetop-arrow{
  display: block;
  width: 12px;
  height: 12px;
  border-top: 3px solid #fff;
  border-right: 3px solid #fff;
  transform: rotate(-45deg) translateY(3px);
}

/* Responsive */
/* ── Mobile header & burger (hidden on desktop) ── */
.mobile-header{
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  height: 56px;
  padding: 0 12px;
  background: #fff;
  border-bottom: 1px solid var(--border);
  align-items: center;
  justify-content: space-between;
}
.mobile-header-logo{
  flex-shrink: 1;
  min-width: 0;
}
.mobile-header-logo img{
  height: 28px;
  width: auto;
}
.mobile-header-right{
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.mobile-header-tel{
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
  color: #0f2d40;
  text-decoration: none;
}
.mobile-header-tel .tel-icon{
  width: 18px;
  height: 18px;
}
.burger{
  display: none;
  width: 40px;
  height: 40px;
  padding: 9px 8px;
  background: var(--green);
  border: 1px solid #8ac4b8;
  border-radius: 6px;
  cursor: pointer;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  align-items: center;
}
.burger-bar{
  display: block;
  width: 22px;
  height: 2.5px;
  background: #0f2d40;
  border-radius: 2px;
  transition: transform .25s ease, opacity .2s ease;
}
.burger.is-active .burger-bar:nth-child(1){ transform: translateY(7.5px) rotate(45deg); }
.burger.is-active .burger-bar:nth-child(2){ opacity: 0; }
.burger.is-active .burger-bar:nth-child(3){ transform: translateY(-7.5px) rotate(-45deg); }
.sidebar-overlay{
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.4);
  z-index: 18;
  opacity: 0;
  transition: opacity .25s ease;
}
.sidebar-overlay.is-visible{
  opacity: 1;
}
body.no-scroll{ overflow: hidden; }

/* ===== RECRUIT PAGE ===== */

/* FV */
.recruit-fv{
  position: relative;
  min-height: 460px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  margin: 0 -32px;
}
.recruit-fv-bg{
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, #e8f5ee 0%, #daeef8 50%, #f0e8f5 100%);
  z-index: 0;
}
.recruit-fv-bg::after{
  content: "";
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%232f6f4e' fill-opacity='0.04'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}
.recruit-fv-inner{
  position: relative;
  z-index: 1;
  text-align: center;
  padding: 60px 24px;
  color: #0f2d40;
}
.recruit-fv-en{
  font-size: 13px;
  letter-spacing: .25em;
  color: #2f6f4e;
  font-weight: 700;
  margin: 0 0 12px;
}
.recruit-fv-title{
  font-family: "Noto Serif JP", "Yu Mincho", serif;
  font-weight: 400;
  font-size: 32px;
  line-height: 1.6;
  margin: 0 0 16px;
  color: #0f2d40;
}
.recruit-fv-sub{
  font-size: 15px;
  line-height: 1.9;
  color: #506577;
  margin: 0 0 32px;
}
.recruit-fv-btn{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 32px;
  background: #3ec48c;
  color: #fff;
  font-weight: 700;
  font-size: 14px;
  border-radius: 4px;
  text-decoration: none;
  transition: background .25s ease;
}
.recruit-fv-btn::after{
  content: "↓";
}
.recruit-fv-btn:hover{
  background: #2f9a6e;
}

/* Section common */
.recruit-section{
  padding: 64px 0 48px;
}
.recruit-section-inner{
  max-width: 860px;
  margin: 0 auto;
}
.recruit-section-head{
  text-align: center;
  margin-bottom: 40px;
}
.recruit-sec-en{
  display: block;
  font-size: 11px;
  letter-spacing: .25em;
  color: var(--heading);
  font-weight: 700;
  margin-bottom: 6px;
}
.recruit-sec-title{
  font-family: "Noto Serif JP", serif;
  font-weight: 400;
  font-size: 24px;
  color: var(--text);
  margin: 0 0 8px;
  padding-bottom: 14px;
  position: relative;
}
.recruit-sec-title::after{
  content: "";
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 48px;
  height: 2px;
  background: var(--heading);
  border-radius: 2px;
}
.recruit-sec-sub{
  font-size: 13px;
  color: var(--muted);
  margin: 12px 0 0;
}

/* Message */
.recruit-message{
  background: #f7fafc;
}
.recruit-message-body{
  display: flex;
  gap: 36px;
  align-items: flex-start;
}
.recruit-message-img{
  flex-shrink: 0;
  width: 260px;
}
.recruit-message-img img{
  width: 100%;
  height: 200px;
  object-fit: cover;
  border-radius: 8px;
}
.recruit-message-text{
  flex: 1;
}
.recruit-message-catch{
  font-family: "Noto Serif JP", serif;
  font-size: 18px;
  font-weight: 400;
  color: var(--heading);
  line-height: 1.7;
  margin: 0 0 16px;
}
.recruit-message-sign{
  margin-top: 20px;
  font-weight: 700;
  font-size: 13px;
  color: var(--muted);
}

/* Voices */
.recruit-voices-list{
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.recruit-voice-card{
  display: flex;
  gap: 24px;
  align-items: flex-start;
  border-radius: 12px;
  padding: 24px;
  border: 1px solid rgba(0,0,0,.06);
}
.recruit-voice-img{
  flex-shrink: 0;
  width: 160px;
}
.recruit-voice-img img{
  width: 100%;
  aspect-ratio: 3/4;
  object-fit: cover;
  border-radius: 10px;
}
.recruit-voice-body{
  flex: 1;
}
.recruit-voice-dept{
  font-size: 12px;
  font-weight: 700;
  color: var(--heading);
  background: #e8f5ee;
  display: inline-block;
  padding: 2px 8px;
  border-radius: 3px;
  margin: 0 0 6px;
}
.recruit-voice-name{
  font-weight: 700;
  font-size: 14px;
  margin: 0 0 10px;
}
.recruit-voice-name span{
  font-size: 12px;
  font-weight: 400;
  color: var(--muted);
}
.recruit-voice-quote{
  margin: 0;
  padding: 0;
  border: none;
  font-size: 13px;
  line-height: 1.8;
  color: var(--text);
}

/* Features */
.recruit-features{
  background: linear-gradient(135deg, #f0f8ff 0%, #f5fffa 50%, #fff5f5 100%);
}
.recruit-features .recruit-sec-en{
  color: #2f6f4e;
}
.recruit-features .recruit-sec-title::after{
  background: linear-gradient(to right, #8fd4a4, #7bbde8);
}
.recruit-features-grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.recruit-feature-card{
  background: #fff;
  border: 1px solid rgba(0,0,0,.06);
  border-radius: 12px;
  padding: 24px 20px;
  color: var(--text);
  box-shadow: 0 2px 8px rgba(20,40,60,.04);
}
.recruit-feature-card:nth-child(4),
.recruit-feature-card:nth-child(5){
  grid-column: span 1;
}
.recruit-features-grid > .recruit-feature-card:nth-child(4){
  grid-column: 1 / 2;
}
.recruit-features-grid > .recruit-feature-card:nth-child(5){
  grid-column: 2 / 3;
}
.recruit-feature-num{
  display: block;
  font-family: "Noto Serif JP", serif;
  font-size: 28px;
  color: #3ec48c;
  line-height: 1;
  margin-bottom: 10px;
  font-weight: 400;
}
.recruit-feature-title{
  font-size: 15px;
  font-weight: 700;
  margin: 0 0 10px;
  color: var(--text);
}
.recruit-feature-card p{
  font-size: 13px;
  line-height: 1.8;
  color: var(--muted);
  margin: 0;
}

/* Jobs grid */
.recruit-jobs-grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.recruit-job-card{
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 32px 20px 24px;
  border-radius: 10px;
  text-decoration: none;
  color: #fff;
  transition: transform .25s ease, box-shadow .25s ease;
}
.recruit-job-card:hover{
  transform: translateY(-6px);
  box-shadow: 0 16px 32px rgba(20,40,60,.2);
}
/* バナーカラー */
.rjob-blue      { background: linear-gradient(135deg, #1a3a5c, #0f2d40); }
.rjob-green     { background: linear-gradient(135deg, #2f6f4e, #1d4a34); }
.rjob-lightblue { background: linear-gradient(135deg, #1a6080, #0f3d56); }
.rjob-teal      { background: linear-gradient(135deg, #1d6060, #0f3d3d); }
.rjob-purple    { background: linear-gradient(135deg, #4a3a7c, #2e2454); }
.rjob-coral     { background: linear-gradient(135deg, #7c3a4a, #52242f); }

.recruit-job-icon{
  width: 56px;
  height: 56px;
  background: rgba(255,255,255,.15);
  border-radius: 50%;
  margin-bottom: 16px;
}
.recruit-job-title{
  font-size: 15px;
  font-weight: 700;
  margin: 0 0 8px;
  line-height: 1.5;
  color: #fff;
}
.recruit-job-catch{
  font-size: 12px;
  line-height: 1.7;
  opacity: .85;
  margin: 0 0 16px;
  flex: 1;
}
.recruit-job-more{
  display: inline-block;
  font-size: 12px;
  font-weight: 700;
  border: 1px solid rgba(255,255,255,.5);
  border-radius: 3px;
  padding: 5px 14px;
  color: #fff;
  margin-top: auto;
}

/* Single recruit */
.recruit-single-hero{
  padding: 32px 20px 28px;
  border-radius: 10px;
  margin: 0 0 4px;
}
.recruit-single-hero h1{
  color: #fff;
  font-family: "Noto Serif JP", serif;
  font-weight: 400;
  font-size: 26px;
  text-align: center;
  margin: 0;
  padding: 0;
}
.recruit-single-hero h1::after{
  display: none;
}
.recruit-single-thumb{
  margin: 0 0 24px;
  border-radius: 8px;
  overflow: hidden;
}
.recruit-single-thumb img{
  width: 100%;
  height: auto;
}
.recruit-intro{
  margin-bottom: 32px;
  line-height: 1.8;
  font-size: 14px;
}
.recruit-intro h2{
  font-size: 18px;
  color: var(--heading);
  border-left: 4px solid var(--heading);
  background: #f0f6fb;
  padding: 10px 12px;
  margin: 24px 0 12px;
}
.recruit-intro h3{
  font-size: 15px;
  font-weight: 800;
  color: var(--text);
  margin: 18px 0 8px;
}
.recruit-intro img{
  max-width: 100%;
  height: auto;
  border-radius: 8px;
}
.recruit-req-heading{
  font-size: 18px;
  font-weight: 700;
  color: var(--heading);
  border-left: 4px solid var(--heading);
  background: #f0f6fb;
  padding: 10px 14px;
  margin: 0 0 16px;
}
.recruit-req-table{
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 24px;
}
.recruit-req-table th,
.recruit-req-table td{
  border: 1px solid var(--border);
  padding: 12px 14px;
  font-size: 14px;
  text-align: left;
  vertical-align: top;
  line-height: 1.7;
}
.recruit-req-table th{
  width: 28%;
  background: #f0f6fb;
  color: var(--heading);
  font-weight: 700;
  white-space: nowrap;
}
.recruit-pdf-wrap{
  margin: 24px 0;
}
.recruit-pdf-btn{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  background: var(--heading);
  color: #fff;
  font-weight: 700;
  font-size: 14px;
  border-radius: 4px;
  text-decoration: none;
  transition: background .2s ease;
}
.recruit-pdf-btn:hover{
  background: #1d4a34;
}
.recruit-apply-cta{
  margin-top: 32px;
  padding: 24px;
  background: #f0f6fb;
  border-radius: 8px;
}
.recruit-apply-note{
  font-size: 14px;
  margin: 0 0 16px;
}
.recruit-apply-btns{
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  align-items: center;
}
.recruit-apply-tel{
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 12px 24px;
  background: #0b4c7b;
  color: #fff;
  font-weight: 700;
  font-size: 16px;
  border-radius: 4px;
  text-decoration: none;
}
.recruit-apply-back{
  font-size: 13px;
  color: var(--accent);
  text-decoration: none;
}
.recruit-apply-back:hover{
  text-decoration: underline;
}

@media (max-width: 980px){
  .mobile-header{ display: flex; }
  .burger{ display: flex; }
  .sidebar-overlay{ display: block; pointer-events: none; }
  .sidebar-overlay.is-visible{ pointer-events: auto; }
  .sidebar{ position: fixed; top: 56px; left: -280px; height: calc(100vh - 56px); overflow-y: auto; transition: left .25s ease; }
  .sidebar.is-open{ left: 0; }
  .sidebar .brand, .sidebar .tel{ display: none; }
  .main{ padding: 72px 18px 18px; }
  .hero{ margin: 0 -18px; }
  .hero-fv{ min-height: 480px; padding: 24px 20px 20px; }
  .hero-bottom{ flex-direction: column; gap: 16px; }
  .hero-news, .hero-schedule-wrap{ max-width: none; width: 100%; flex: none; }
  .hero-schedule-wrap{ order: -1; }
  .hero-banners{ grid-template-columns: repeat(2, 1fr); }
  .dept-grid{ grid-template-columns: repeat(2, 1fr); }
  .site-nav-inner{ grid-template-columns: repeat(2, 1fr); }
  .greeting-layout{ flex-direction: column; }
  .greeting-media{ width: 220px; }
  .news-layout{ grid-template-columns: 1fr; gap: 20px; }
  .fees-layout{ flex-direction: column; }
  .fees-image{ width: 100%; max-width: 300px; }
  .text-with-image{ flex-direction: column; }
  .text-with-image-photo{ width: 100%; max-width: 220px; }
  .table-with-image{ flex-direction: column; }
  .table-side-image{ width: 100%; max-width: 300px; }
  .device-table thead{ display: none; }
  .device-table, .device-table tbody, .device-table tr, .device-table th, .device-table td{ display: block; width: 100%; }
  .device-table tr{ margin-bottom: 16px; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
  .device-table tbody th{ text-align: left; }
  .device-td-img{ width: 100%; padding: 8px; }
  .device-td-img img{ max-width: 200px; margin: 0 auto; }
  .image-gallery-3{ grid-template-columns: repeat(2, 1fr); }
  .recruit-fv{ margin: 0 -18px; }
  .recruit-fv-title{ font-size: 24px; }
  .recruit-message-body{ flex-direction: column; gap: 20px; }
  .recruit-message-img{ width: 100%; }
  .recruit-message-img img{ height: 180px; }
  .recruit-voice-card{ flex-direction: column; }
  .recruit-voice-img{ width: 100%; max-width: 200px; }
  .recruit-features-grid{ grid-template-columns: repeat(2, 1fr); }
  .recruit-features-grid > .recruit-feature-card:nth-child(4),
  .recruit-features-grid > .recruit-feature-card:nth-child(5){ grid-column: auto; }
  .recruit-jobs-grid{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px){
  .hero-fv{ min-height: auto; padding: 20px 16px 16px; }
  .hero-banners{ grid-template-columns: 1fr; }
  .dept-grid{ grid-template-columns: 1fr; }
  .footer-grid{ grid-template-columns: 1fr; }
  .site-nav-inner{ grid-template-columns: 1fr; }
  .recruit-voices-grid{ grid-template-columns: 1fr; }
  .recruit-features-grid{ grid-template-columns: 1fr; }
  .recruit-jobs-grid{ grid-template-columns: 1fr; }
  .recruit-req-table th{ width: 36%; white-space: normal; }
}
