:root {
  --navy: #0d1b3d;
  --navy-deep: #07152f;
  --blue: #143d7a;
  --gold: #c8a86a;
  --gray: #f2f4f7;
  --line: #d8dde8;
  --text: #17233c;
  --white: #ffffff;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--text);
  background: #fff;
  font-family: "Noto Sans JP", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
button { font: inherit; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255,255,255,.96);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(13,27,61,.08);
}
.header-inner {
  width: min(1180px, calc(100% - 40px));
  height: 86px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.brand { display: inline-flex; align-items: center; gap: 14px; }
.brand-mark { width: 42px; height: 34px; position: relative; display: inline-block; }
.brand-mark i { position: absolute; top: 3px; width: 12px; height: 28px; transform: skew(-31deg); }
.brand-mark i:first-child { left: 7px; background: linear-gradient(145deg,#0a2d67,var(--navy)); }
.brand-mark i:last-child { left: 22px; background: linear-gradient(145deg,#e0c077,#b48836); }
.brand-copy { display: flex; flex-direction: column; line-height: 1.15; }
.brand-copy strong { font-family: Georgia, "Times New Roman", serif; font-size: 20px; letter-spacing: .11em; font-weight: 500; color: var(--navy); }
.brand-copy small { margin-top: 7px; color: #a47d33; font-size: 10px; letter-spacing: .08em; }

.global-nav { display: flex; align-items: center; gap: 34px; font-size: 13px; font-weight: 600; color: var(--navy); }
.global-nav a:not(.nav-contact) { position: relative; }
.global-nav a:not(.nav-contact)::after { content:""; position:absolute; left:0; bottom:-8px; width:100%; height:1px; background:var(--gold); transform:scaleX(0); transform-origin:left; transition:.25s; }
.global-nav a:hover::after { transform:scaleX(1); }
.nav-contact { padding: 14px 22px; background: var(--navy); color: #fff; border-radius: 2px; }
.menu-button { display:none; width:42px; height:42px; border:0; background:transparent; padding:8px; }
.menu-button span:not(.sr-only) { display:block; height:2px; margin:6px 0; background:var(--navy); }

.hero { position: relative; min-height: 690px; overflow: hidden; background: #fff; }
.hero-image { position:absolute; inset:0 0 0 38%; background-image:linear-gradient(90deg,#fff 0%,rgba(255,255,255,.9) 13%,rgba(255,255,255,.2) 46%,rgba(255,255,255,0) 70%), url('assets/hero-bg.png'); background-size:cover; background-position:center top; opacity:.9; }
.hero-inner { position:relative; z-index:3; width:min(1180px,calc(100% - 40px)); min-height:690px; margin:0 auto; display:flex; align-items:center; }
.hero-copy { width: 58%; padding: 70px 0 125px; }
.hero h1 { margin:0 0 28px; font-family:"Noto Serif JP", serif; font-weight:600; font-size:clamp(42px,5vw,66px); line-height:1.45; letter-spacing:.08em; color:var(--navy); }
.hero p { margin:0; font-size:15px; line-height:2.05; font-weight:600; color:#29354b; }
.hero-tagline { margin-top:34px; display:flex; align-items:center; gap:14px; color:#a27c35; font-family:"Noto Serif JP",serif; font-size:14px; letter-spacing:.08em; }
.hero-tagline span { width:34px; height:1px; background:var(--gold); }
.hero-actions { display:flex; gap:18px; margin-top:42px; }
.button { min-height:54px; padding:0 28px; display:inline-flex; align-items:center; justify-content:center; gap:32px; border:1px solid var(--navy); font-size:14px; font-weight:600; letter-spacing:.05em; transition:.2s; }
.button b { font-size:24px; line-height:1; font-weight:300; }
.button-primary { background:var(--navy); color:#fff; }
.button-primary:hover { background:#142a58; transform:translateY(-1px); }
.button-outline { background:rgba(255,255,255,.84); color:var(--navy); }
.button-outline:hover { background:#fff; transform:translateY(-1px); }
.hero-ribbons { position:absolute; left:-8%; right:-8%; bottom:-26px; height:180px; z-index:2; pointer-events:none; }
.hero-ribbons i { position:absolute; left:0; right:0; bottom:0; height:120px; border-radius:50% 50% 0 0 / 100% 100% 0 0; transform:rotate(-5deg); transform-origin:center bottom; }
.hero-ribbons i:nth-child(1) { background:rgba(190,207,230,.5); bottom:35px; }
.hero-ribbons i:nth-child(2) { background:linear-gradient(90deg,#0b2e67,#112f66); bottom:0; height:92px; }
.hero-ribbons i:nth-child(3) { height:8px; background:linear-gradient(90deg,#c08e34,#e5c770,#c69a49); bottom:77px; }

.section { padding: 105px 0; }
.container { width:min(1180px,calc(100% - 40px)); margin:0 auto; }
.container.narrow { width:min(940px,calc(100% - 40px)); }
.container.compact { width:min(920px,calc(100% - 40px)); }
.eyebrow { margin:0 0 12px; color:var(--gold); font-size:12px; font-weight:700; letter-spacing:.16em; }
.centered { text-align:center; }
h2 { margin:0 0 42px; color:var(--navy); font-family:"Noto Serif JP",serif; font-weight:600; font-size:34px; letter-spacing:.08em; }
.about { padding-top:135px; }
.about .lead-text { max-width:780px; }
.about .lead-text p { margin:0 0 28px; font-size:16px; line-height:2.05; }

.service { border-top:1px solid #efe6d5; }
.service-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:0; margin-top:55px; }
.service-item { text-align:center; padding:0 48px; min-height:270px; }
.service-item + .service-item { border-left:1px solid #e7d9bc; }
.service-item h3 { margin:25px 0 16px; color:var(--navy); font-size:18px; }
.service-item p { margin:0; font-size:13px; line-height:1.95; color:#4a566b; }
.line-icon { width:82px; height:82px; margin:0 auto; position:relative; color:#1a3c76; }
.line-icon::before,.line-icon::after,.line-icon span::before,.line-icon span::after { content:""; position:absolute; border:2px solid currentColor; }
.person::before { width:28px; height:28px; border-radius:50%; left:26px; top:3px; }
.person::after { width:46px; height:38px; border-radius:25px 25px 6px 6px; left:17px; bottom:6px; border-top-width:2px; }
.person span::before { width:16px; height:26px; border-width:0 2px 2px; transform:rotate(20deg); left:20px; top:40px; }
.doctor::before { width:28px; height:28px; border-radius:50%; left:26px; top:3px; }
.doctor::after { width:48px; height:38px; border-radius:25px 25px 6px 6px; left:16px; bottom:6px; }
.doctor span::before { width:22px; height:22px; border-radius:50%; left:8px; top:43px; }
.doctor span::after { width:18px; height:18px; border-radius:50%; right:8px; top:43px; }
.handshake::before { width:34px; height:22px; transform:rotate(25deg); left:9px; top:26px; border-radius:4px; }
.handshake::after { width:34px; height:22px; transform:rotate(-25deg); right:9px; top:26px; border-radius:4px; }
.handshake span::before { width:24px; height:14px; left:29px; top:35px; border-radius:4px; }

.company { background:linear-gradient(180deg,#f7f9fc,#fff); }
.company-table { margin:50px 0 0; }
.company-table div { display:grid; grid-template-columns:150px 1fr; gap:0; border-bottom:1px solid #d7dce6; padding:17px 0; font-size:14px; }
.company-table dt { font-weight:700; color:#1f2c43; }
.company-table dd { margin:0; color:#3b4658; }
.company-table a { text-decoration:underline; text-underline-offset:3px; }
.company-action { margin-top:38px; display:flex; justify-content:center; }
.wide { min-width:320px; }

.site-footer { background:linear-gradient(135deg,#0c2c66,var(--navy-deep)); color:#fff; padding:36px 0; }
.footer-inner { width:min(1180px,calc(100% - 40px)); margin:0 auto; display:flex; align-items:center; justify-content:space-between; gap:30px; }
.brand-footer .brand-copy strong { color:#fff; font-size:16px; }
.brand-footer .brand-copy small { color:#d8bf84; }
.footer-meta { text-align:right; font-size:11px; color:rgba(255,255,255,.8); }
.footer-meta small { display:block; margin-top:13px; }
.footer-meta a:hover { color:#fff; }

@media (max-width: 900px) {
  .header-inner { height:72px; }
  .brand-copy strong { font-size:16px; }
  .brand-copy small { font-size:9px; }
  .menu-button { display:block; position:relative; z-index:3; }
  .global-nav { position:fixed; inset:72px 0 auto; background:#fff; display:none; flex-direction:column; align-items:stretch; gap:0; border-top:1px solid #e5e8ef; box-shadow:0 12px 30px rgba(0,0,0,.08); }
  .global-nav.open { display:flex; }
  .global-nav a { padding:18px 24px; border-bottom:1px solid #edf0f5; }
  .nav-contact { border-radius:0; text-align:center; }
  .hero { min-height:760px; }
  .hero-image { inset:0; background-position:63% center; opacity:.43; }
  .hero-inner { min-height:760px; align-items:flex-start; }
  .hero-copy { width:100%; padding-top:90px; }
  .hero h1 { font-size:clamp(38px,9vw,56px); }
  .hero p { font-size:14px; }
  .hero-actions { flex-direction:column; width:min(420px,100%); }
  .button { width:100%; justify-content:space-between; }
  .pc-only { display:none; }
  .service-grid { grid-template-columns:1fr; gap:40px; }
  .service-item { min-height:0; padding:0 20px 40px; }
  .service-item + .service-item { border-left:0; border-top:1px solid #e7d9bc; padding-top:40px; }
  .footer-inner { flex-direction:column; align-items:flex-start; }
  .footer-meta { text-align:left; }
}

@media (max-width: 560px) {
  .header-inner,.container,.container.narrow,.container.compact,.hero-inner,.footer-inner { width:calc(100% - 28px); }
  .brand-mark { width:34px; height:28px; }
  .brand-mark i { width:10px; height:24px; }
  .brand-mark i:first-child { left:5px; }
  .brand-mark i:last-child { left:17px; }
  .brand-copy strong { font-size:13px; letter-spacing:.08em; }
  .brand-copy small { display:none; }
  .hero { min-height:700px; }
  .hero-inner { min-height:700px; }
  .hero-copy { padding-top:80px; }
  .hero h1 { font-size:36px; line-height:1.55; letter-spacing:.04em; }
  .hero p { line-height:1.9; }
  .hero-tagline { font-size:12px; }
  .hero-ribbons { height:130px; }
  .section { padding:80px 0; }
  .about { padding-top:100px; }
  h2 { font-size:29px; margin-bottom:34px; }
  .about .lead-text p { font-size:14px; }
  .company-table div { grid-template-columns:1fr; gap:8px; }
  .wide { min-width:0; width:100%; }
}
