*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:"Noto Sans JP","Yu Gothic",Meiryo,sans-serif;color:#184c78;background:#eef9ff}
a{text-decoration:none;color:inherit}
.site-header{height:95px;background:#fff;position:relative;z-index:20;border-bottom:1px solid #e8f2f8}
.header-inner{max-width:1240px;height:95px;margin:0 auto;padding:0 20px;display:flex;align-items:center;gap:32px}
.brand{width:390px;display:flex;align-items:center;flex:none}
.header-logo{width:229px;height:113px;display:block;object-fit:contain;transform:translate(15px,2px)}
.global-nav{height:100%;display:flex;align-items:center;gap:42px;flex:1}
.global-nav a{height:100%;display:flex;align-items:center;position:relative;font-size:16px;font-weight:600;white-space:nowrap;color:#075b9f}
.global-nav .active{color:#0878c8}.global-nav .active:after{content:"";position:absolute;left:0;right:0;bottom:16px;height:3px;border-radius:3px;background:#0878c8}
.header-tools{display:flex;gap:24px;white-space:nowrap;font-size:15px;font-weight:600;color:#0569b6}
.sub-nav{height:64px;background:linear-gradient(90deg,#effbff,#e0f5ff);border-bottom:1px solid #cdebf8;position:relative;z-index:15}
.sub-nav-inner{max-width:1240px;height:64px;margin:0 auto;padding:0 20px;display:grid;grid-template-columns:repeat(4,1fr)}
.sub-nav a{position:relative;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;color:#5a7890;border-right:1px solid #c9e7f4}
.sub-nav a:first-child{border-left:1px solid #c9e7f4}.sub-nav a.current{color:#0878c8}
.hero{height:330px;position:relative;overflow:hidden;background:#eefaff}
.hero-image{position:absolute;top:50%;right:max(calc((100% - 1240px)/2 + 20px),20px);width:55%;height:auto;display:block;transform:translateY(-50%)}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,#eefaff 0%,#eefaff 28%,rgba(238,250,255,.96) 38%,rgba(238,250,255,.62) 50%,rgba(238,250,255,.14) 66%,rgba(238,250,255,0) 82%)}
.hero-copy{position:absolute;z-index:3;left:max(calc((100% - 1240px)/2 + 55px),7%);top:75px}
.hero-copy h1{margin:0;color:#075b9f;font-family:"Yu Mincho","Hiragino Mincho ProN",serif;font-size:48px;line-height:1.2;letter-spacing:.06em;font-weight:600}
.hero-copy p{margin:22px 0 0;color:#184c78;font-size:17px;line-height:1.8;font-weight:600}
.hero-wave{position:absolute;z-index:4;left:-3%;bottom:-28px;width:106%;height:70px;background:#eef9ff;border-radius:50% 50% 0 0/62% 62% 0 0}
.breadcrumb{max-width:1240px;margin:0 auto;padding:10px 20px 22px;color:#49718d;font-size:13px}
.content{max-width:1240px;margin:0 auto;padding:0 20px 56px}

.access-content{padding-top:22px}
.access-heading{display:grid;grid-template-columns:260px 1fr;gap:36px;align-items:end;margin-bottom:22px}
.access-heading h1{margin:0;color:#0871ba;font-size:36px;line-height:1.2;padding-bottom:9px;border-bottom:4px solid #f8c694}
.access-section{margin-top:28px}
.access-section>h2{margin:0 0 15px;padding:11px 18px;background:#e5f5fd;border-left:5px solid #f8c694;border-radius:8px;color:#0871ba;font-size:23px}
.location-grid{display:grid;grid-template-columns:38% 62%;background:#fff;border:1px solid #d8ebf6;border-radius:14px;overflow:hidden;box-shadow:0 3px 12px rgba(22,112,168,.06)}
.location-card{padding:30px;display:flex;flex-direction:column;justify-content:center}
.access-label{font-size:13px;font-weight:700;color:#6a8798}.address,.tel{margin:5px 0 22px;color:#184c78;font-size:18px;font-weight:700;line-height:1.8}.tel{margin-bottom:0}.tel a{color:#0871ba;font-size:22px}
.map-wrap{min-height:360px}.map-wrap iframe{display:block;width:100%;height:100%;min-height:360px;border:0}
.parking-summary{display:flex;align-items:baseline;gap:13px;margin-bottom:12px;padding:14px 20px;background:#fff;border:1px solid #d8ebf6;border-radius:10px}.parking-summary strong{font-size:34px;color:#0871ba}.parking-summary span{font-weight:700}
.parking-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.parking-card{display:grid;grid-template-columns:68px 1fr;gap:17px;padding:22px;background:#fff;border:1px solid #d8ebf6;border-radius:12px}.parking-count{width:62px;height:62px;display:grid;place-items:center;border-radius:50%;background:#0878c8;color:#fff;font-size:18px;font-weight:800;box-shadow:inset 0 -5px 0 #f8c694}.parking-card h3{margin:1px 0 6px;color:#0871ba;font-size:19px}.parking-card p{margin:0;color:#426b87;font-size:14px;line-height:1.75}
.section-lead{margin:0 0 14px;color:#426b87}.train-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.route-card,.bus-card{padding:22px;background:#fff;border:1px solid #d8ebf6;border-radius:12px}.route-tag{display:inline-block;padding:3px 11px;background:#e5f5fd;border-radius:18px;color:#0871ba;font-size:13px;font-weight:700}.route-card h3,.bus-card h3{margin:10px 0 14px;color:#0871ba;font-size:19px}.route-line,.bus-flow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:13px;background:#f5fbfe;border-radius:8px}.route-line span,.bus-flow span{padding:7px 10px;background:#fff;border:1px solid #d8ebf6;border-radius:7px;font-size:13px;font-weight:700}.route-line b,.bus-flow b{color:#e9974d}.route-card p,.bus-card p{margin:13px 0 0;color:#426b87;font-size:13px}.bus-card{margin-top:14px}
.car-head{padding:17px 22px;background:linear-gradient(90deg,#e9f8ff,#fff7ee);border:1px solid #d8ebf6;border-radius:12px 12px 0 0;color:#0871ba;font-size:19px}
.car-route{list-style:none;margin:0;padding:0;background:#fff;border:1px solid #d8ebf6;border-top:0;border-radius:0 0 12px 12px;overflow:hidden}.car-route li{display:grid;grid-template-columns:54px 1fr;gap:15px;align-items:center;padding:17px 22px;border-top:1px solid #e4f0f7}.car-route li:first-child{border-top:0}.step-no{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:#0878c8;color:#fff;font-weight:800;box-shadow:inset 0 -4px 0 #f8c694}.car-route strong{color:#184c78;font-size:16px}.car-route p{margin:3px 0 0;color:#5a7890;font-size:14px}
.access-note{margin-top:22px;padding:15px 18px;background:#fff7ee;border-left:5px solid #f8c694;border-radius:8px;color:#6b5b4b;font-size:13px}
.footer-visual{height:145px;position:relative;overflow:hidden}.footer-visual:before{content:"";position:absolute;left:-4%;right:-4%;bottom:-42px;height:110px;background:#cceeff;border-radius:50% 50% 0 0/70% 70% 0 0}.footer-mountain{position:absolute;bottom:24px;left:32%;width:40%;height:70px;clip-path:polygon(0 100%,14% 58%,25% 83%,41% 36%,53% 74%,65% 43%,78% 82%,91% 56%,100% 100%);background:rgba(115,201,237,.24)}
.site-footer{background:#fff;border-top:1px solid #e0eef6}.footer-inner{max-width:1240px;margin:auto;padding:26px 20px 30px;display:grid;grid-template-columns:370px 1fr;gap:42px}.footer-info{padding-right:38px;border-right:1px solid #bdd0dc}.footer-info p{margin:0 0 8px;color:#3a617d;font-size:13px}.footer-info a{color:#0871ba;font-weight:700;font-size:18px}.footer-right{display:flex;flex-direction:column}.footer-nav{display:flex;flex-wrap:wrap;gap:8px 0;margin-top:17px}.footer-nav a{font-size:12px;color:#496b83;padding:0 14px;border-right:1px solid #adc1cf;transition:.2s}.footer-nav a:hover{color:#0878c8}.copyright{margin:auto 0 0;text-align:right;color:#496b83;font-size:12px}

@media(max-width:800px){
 .header-inner{padding:0 14px}.brand{width:auto}.header-logo{width:190px;height:94px;transform:none}.global-nav{display:none}.header-tools{margin-left:auto;font-size:13px;gap:10px}
 .sub-nav{height:auto}.sub-nav-inner{height:auto;padding:0;grid-template-columns:1fr 1fr}.sub-nav a{min-height:50px;font-size:13px;border-bottom:1px solid #c9e7f4}
 .hero{height:250px}.hero-image{right:0;width:78%}.hero-copy{left:28px;top:60px}.hero-copy h1{font-size:36px}.hero-copy p{font-size:14px}.breadcrumb{padding-left:14px;padding-right:14px}.content{padding-left:14px;padding-right:14px}
 .access-heading h1{font-size:30px}.location-grid,.parking-grid,.train-grid{grid-template-columns:1fr}.map-wrap,.map-wrap iframe{min-height:300px}.parking-card{grid-template-columns:58px 1fr}.parking-count{width:54px;height:54px}.bus-flow{display:grid;grid-template-columns:1fr}.bus-flow b{display:none}.car-route li{grid-template-columns:46px 1fr;padding:15px 14px}.step-no{width:38px;height:38px}
 .footer-inner{grid-template-columns:1fr}.footer-info{border-right:0;border-bottom:1px solid #d6e4ed;padding-bottom:20px}
}


/* 公共交通：患者さんが乗り場・所要時間を一目で確認できる表示 */
.nearest-station{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 22px;margin-bottom:18px;background:#fff;border:1px solid #d8ebf6;border-radius:12px}
.nearest-station div{display:flex;align-items:center;gap:13px}.nearest-station span{padding:4px 10px;border-radius:18px;background:#e5f5fd;color:#0871ba;font-size:13px;font-weight:700}.nearest-station strong{color:#075b9f;font-size:20px}.nearest-station p{margin:0;color:#5a7890;font-size:13px}
.access-subtitle{margin:22px 0 12px;color:#184c78;font-size:19px}.bus-subtitle{margin-top:28px}
.time-badge{margin-top:13px;padding:9px 12px;border-radius:7px;background:#fff7ee;color:#6a5a49;font-size:13px}.time-badge strong{margin-left:7px;color:#d77c2d;font-size:16px}
.bus-guide{padding:22px;background:#fff;border:1px solid #d8ebf6;border-radius:14px;box-shadow:0 3px 12px rgba(22,112,168,.05)}
.bus-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px}.bus-summary>div{display:flex;align-items:baseline;justify-content:space-between;padding:13px 16px;border-radius:9px;background:#eaf8ff}.bus-summary span{color:#426b87;font-size:13px;font-weight:700}.bus-summary strong{color:#0871ba;font-size:22px}
.bus-steps{max-width:850px;margin:0 auto}.bus-step{display:grid;grid-template-columns:48px 1fr;gap:14px;align-items:center;padding:14px 18px;border:1px solid #d8ebf6;border-radius:10px;background:#f9fdff}.bus-step.important{border:2px solid #8fd0ee;background:#eefaff}.bus-no{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:#0878c8;color:#fff;font-weight:800;box-shadow:inset 0 -4px 0 #f8c694}.bus-step small{display:block;margin-bottom:2px;color:#68859a;font-size:12px}.bus-step strong{display:block;color:#075b9f;font-size:17px}.bus-step p{margin:3px 0 0;color:#426b87;font-size:13px}.bus-arrow{text-align:center;color:#e9974d;font-size:23px;font-weight:800;line-height:1.3}
.bus-total{display:flex;align-items:baseline;justify-content:center;gap:12px;margin-top:18px;padding:14px;border-radius:9px;background:#fff7ee}.bus-total span{font-weight:700;color:#5d7080}.bus-total strong{color:#d77c2d;font-size:21px}.bus-total small{color:#7c7c7c}
.bus-caution{margin:15px 0 10px;color:#68859a;font-size:12px}.timetable-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 17px;border:1px solid #0878c8;border-radius:7px;color:#0871ba;background:#fff;font-size:13px;font-weight:700}.timetable-link:hover,.timetable-link:focus-visible{background:#eef9ff;box-shadow:inset 0 -4px 0 #f8c694}
@media(max-width:800px){.nearest-station{display:block}.nearest-station div{align-items:flex-start;flex-direction:column;gap:6px}.nearest-station p{margin-top:9px}.bus-summary{grid-template-columns:1fr}.bus-total{display:block;text-align:center}.bus-total span,.bus-total strong,.bus-total small{display:block}.bus-step{grid-template-columns:42px 1fr;padding:13px 12px}.bus-no{width:36px;height:36px}.timetable-link{width:100%;justify-content:center}}


/* 電車経路：大阪・神戸カードの高さを統一 */
.train-grid{align-items:stretch}
.train-card{display:flex;flex-direction:column;height:100%}
.train-card h3{min-height:34px}
.station-route{
  min-height:92px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:15px 10px 11px;
  background:#f5fbfe;
  border-radius:8px;
}
.station{
  min-height:42px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:7px 10px;
  background:#fff;
  border:1px solid #d8ebf6;
  border-radius:7px;
  color:#184c78;
  font-size:13px;
  font-weight:700;
  text-align:center;
  white-space:nowrap;
}
.rail-arrow{
  position:relative;
  min-width:58px;
  padding-top:18px;
  text-align:center;
  flex:none;
}
.rail-arrow small{
  position:absolute;
  left:50%;
  top:-4px;
  transform:translateX(-50%);
  color:#0871ba;
  font-size:11px;
  font-weight:700;
  white-space:nowrap;
}
.rail-arrow b{
  display:block;
  color:#e9974d;
  font-size:21px;
  line-height:1;
}
.transfer-arrow{min-width:82px}
.train-card .time-badge{margin-top:13px}
.train-card>p{margin-top:13px;min-height:46px}

/* 2枚のカード内で所要時間・説明文の縦位置を揃える */
.train-card .time-badge{margin-top:auto}

@media(max-width:800px){
 .train-card h3,.train-card>p{min-height:0}
 .station-route{min-height:0;flex-wrap:wrap}
 .rail-arrow{min-width:56px}
 .transfer-arrow{min-width:78px}
}

/* バス所要時間：サイト共通アクセントカラー */
.bus-summary .bus-time-orange{color:#d77c2d;}

@media(max-width:800px){
  .access-heading{grid-template-columns:1fr}
  .access-heading h1{width:260px;max-width:100%}
}


/* 上部4項目：既存ページ共通のロールオーバー */
.sub-nav a:not(.current){transition:color .18s,box-shadow .18s,background-color .18s}
.sub-nav a:not(.current):hover,
.sub-nav a:not(.current):focus-visible{
  color:#0878c8;
  box-shadow:inset 0 -5px 0 #f8c694;
  background:rgba(255,255,255,.24);
}
