:root {
  --navy: #0c2f66;
  --blue: #159ad7;
  --green: #4db85d;
  --lime: #a9c928;
  --ink: #1d2733;
  --muted: #6f7c88;
  --line: #dfe8ee;
  --soft: #f4f9f6;
  --white: #fff;
  --shadow: 0 18px 50px rgba(16, 51, 89, .10);
  --radius: 28px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background: #fff;
  font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
.container { width: min(1120px, calc(100% - 48px)); margin-inline: auto; }
.section { padding: 110px 0; }
.section--soft { background: linear-gradient(180deg, #fbfdfc 0%, #f0f8f3 100%); }

.intro {
  position: fixed;
  inset: 0;
  background: rgba(255,255,255,.98);
  display: grid;
  place-items: center;
  z-index: 9999;
  transition: opacity .55s ease, visibility .55s ease;
}
.intro.is-hidden { opacity: 0; visibility: hidden; }
.intro__logo { width: min(420px, 72vw); animation: introLogo 1.2s cubic-bezier(.2,.8,.2,1) both; }
@keyframes introLogo { from { opacity: 0; transform: translateY(8px) scale(.97); } to { opacity: 1; transform: none; } }

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(255,255,255,.9);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(10,54,99,.08);
  transition: box-shadow .3s ease;
}
.site-header.is-scrolled { box-shadow: 0 10px 30px rgba(12,47,102,.08); }
.site-header__inner { width: min(1180px, calc(100% - 40px)); margin: auto; height: 82px; display: flex; align-items: center; justify-content: space-between; }
.brand img { width: 265px; }
.pc-nav { display: flex; gap: 34px; align-items: center; }
.pc-nav a { font-size: 14px; font-weight: 700; color: #33475b; position: relative; }
.pc-nav a::after { content:""; position:absolute; left:0; bottom:-10px; width:100%; height:2px; background:linear-gradient(90deg,var(--blue),var(--green)); transform:scaleX(0); transform-origin:left; transition:.25s; }
.pc-nav a:hover::after { transform:scaleX(1); }
.menu-btn { display:none; border:0; background:var(--navy); width:48px; height:48px; border-radius:50%; padding:13px; cursor:pointer; }
.menu-btn span { display:block; height:2px; background:#fff; margin:5px 0; transition:.3s; }
.sp-nav { display:none; }

.hero {
  position: relative;
  overflow: hidden;
  min-height: 610px;
  background:
    radial-gradient(circle at 16% 18%, rgba(79,184,92,.10), transparent 32%),
    linear-gradient(105deg,#ffffff 0%,#fbfdff 52%,#eef8ff 100%);
}
.hero::before {
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(90deg, rgba(255,255,255,.98) 0%, rgba(255,255,255,.91) 39%, rgba(255,255,255,.18) 66%, rgba(255,255,255,0) 100%),
    radial-gradient(circle at 12% 28%, rgba(66,175,92,.08) 0 1px, transparent 1px);
  background-size:auto,22px 22px;
  pointer-events:none;
}
.hero__inner {
  position:relative;
  z-index:2;
  min-height:610px;
  display:grid;
  grid-template-columns: 1.12fr .88fr;
  align-items:center;
  gap:42px;
  padding-top:26px;
  padding-bottom:66px;
}
.eyebrow, .section-kicker { color: var(--blue); text-transform: uppercase; letter-spacing: .12em; font-size: 13px; font-weight: 800; }
.hero__copy { position:relative; z-index:3; padding:26px 0 12px; }
.hero h1 {
  margin: 18px 0 22px;
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: clamp(46px,5vw,66px);
  line-height:1.28;
  letter-spacing:.025em;
  color:var(--navy);
  font-weight:700;
  max-width:690px;
}
.hero h1 span { display:block; white-space:nowrap; }
.hero h1 strong { color:#229348; font-weight:700; }
.hero__lead { max-width: 600px; font-size: 16px; line-height:1.95; color:#526273; }
.hero__name { margin-top:28px; display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; }
.hero__name span { color:#647485; font-size:14px; }
.hero__name b { font-family:"Yu Mincho",serif; font-size:32px; color:#111f34; letter-spacing:.08em; }
.hero__name small { letter-spacing:.18em; color:#7b8994; }
.hero__visual {
  position:relative;
  align-self:stretch;
  display:flex;
  align-items:center;
  margin-right:-5vw;
}
.hero__visual::before {
  content:"";
  position:absolute;
  left:-10%; top:10%; bottom:10%; width:42%;
  background:linear-gradient(90deg,rgba(255,255,255,.96),rgba(255,255,255,0));
  z-index:2;
  pointer-events:none;
}
.hero-photo-wrap {
  position:relative;
  width:100%;
  overflow:hidden;
  border-radius:28px 0 0 28px;
  box-shadow:0 26px 65px rgba(12,47,102,.14);
  background:#eef4f8;
}
.hero-photo {
  width:100%;
  height:470px;
  object-fit:cover;
  object-position:center 18%;
  transform:scale(1.02);
  filter:saturate(.94) contrast(1.02);
}
.hero-photo-wrap::after {
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(255,255,255,.20),transparent 24%,rgba(8,56,94,.06));
  pointer-events:none;
}
.hero-badge {
  position:absolute;
  z-index:4;
  right:34px;
  top:52px;
  background:rgba(255,255,255,.90);
  backdrop-filter:blur(10px);
  border:1px solid rgba(21,154,215,.16);
  border-radius:18px;
  padding:16px 20px;
  color:var(--navy);
  font-weight:800;
  line-height:1.8;
  text-align:center;
  box-shadow:0 14px 34px rgba(20,58,94,.12);
}
.hero-wave { position:absolute; left:-4%; right:-4%; height:54px; border-radius:55% 45% 0 0 / 90% 90% 0 0; }
.hero-wave--blue { bottom:-20px; background:linear-gradient(90deg,#2eb6d3,#58d8dc); opacity:.90; transform:rotate(-1.2deg); }
.hero-wave--green { bottom:-34px; background:linear-gradient(90deg,#51bf5d,#9bd223); opacity:.96; transform:rotate(1.2deg); }

.stats { position:relative; z-index:4; background:#fff; padding:44px 0 48px; }
.stats__grid { display:grid; grid-template-columns:repeat(3,1fr); }
.stat { text-align:center; padding:18px 28px; position:relative; }
.stat + .stat::before { content:""; position:absolute; left:0; top:20%; bottom:20%; width:1px; background:var(--line); }
.stat__number { color:var(--navy); font-size:24px; font-weight:800; }
.stat__number span { font-size:54px; color:#37a65a; line-height:1; margin:0 4px; }
.stat p { margin:4px 0 0; color:#667483; font-size:14px; }

.section-head { max-width:760px; margin:0 auto 52px; text-align:center; }
.section-head h2, .split__content h2, .books__content h2, .seminar-band h2, .closing h2 { margin:8px 0 20px; font-family:"Yu Mincho",serif; color:var(--navy); font-size:clamp(34px,4vw,52px); line-height:1.35; }
.section-head p:last-child { color:var(--muted); }
.split { display:grid; grid-template-columns:1.08fr .92fr; gap:80px; align-items:center; }
.split--reverse { grid-template-columns:.92fr 1.08fr; }
.split__content p { color:#556575; }
.portrait-card { position:relative; min-height:460px; border-radius:var(--radius); overflow:hidden; background: radial-gradient(circle at 78% 14%, rgba(21,154,215,.22), transparent 28%), linear-gradient(140deg,#f6fbff,#f2faef); box-shadow:var(--shadow); }
.portrait-card::before { content:""; position:absolute; inset:auto -8% -18% 18%; height:260px; border-radius:50%; background:rgba(77,184,93,.12); }
.portrait-card img { position:absolute; bottom:-12px; right:6%; width:58%; z-index:2; }
.portrait-card__note { position:absolute; left:34px; top:48px; width:42%; font-family:"Yu Mincho",serif; color:var(--navy); font-size:25px; line-height:1.55; }

.service-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
.service-card { background:rgba(255,255,255,.9); border:1px solid rgba(12,47,102,.07); border-radius:22px; padding:34px 28px 32px; box-shadow:0 14px 36px rgba(19,56,89,.07); transition:.3s; }
.service-card:hover { transform:translateY(-5px); box-shadow:0 20px 44px rgba(19,56,89,.12); }
.service-card__icon { display:inline-grid; place-items:center; width:46px; height:46px; border-radius:14px; background:linear-gradient(135deg,#eef8f0,#e7f6fc); color:#31a258; font-weight:900; margin-bottom:18px; }
.service-card h3 { color:var(--navy); margin:0 0 12px; font-size:20px; }
.service-card p { margin:0; color:#667483; font-size:14px; }

.seminar-band { position:relative; min-height:500px; display:flex; align-items:center; overflow:hidden; }
.seminar-band__photo { position:absolute; inset:0; background:url('../image/semi.jpg') center/cover no-repeat; transform:scale(1.03); }
.seminar-band__overlay { position:absolute; inset:0; background:linear-gradient(90deg,rgba(4,35,68,.83) 0%,rgba(4,35,68,.62) 44%,rgba(4,35,68,.14) 100%); }
.seminar-band__content { position:relative; z-index:2; max-width:650px; color:white; }
.section-kicker--light { color:#a9e3ff; }
.seminar-band h2 { color:white; }
.seminar-band p { font-size:17px; color:rgba(255,255,255,.88); max-width:620px; }

.photo-stack { position:relative; min-height:510px; }
.photo-stack__main { width:78%; border-radius:28px; box-shadow:var(--shadow); }
.photo-stack__accent { position:absolute; right:0; bottom:0; width:42%; filter:drop-shadow(0 16px 24px rgba(18,49,76,.18)); }
.profile-role { color:#2e9e57 !important; font-weight:800; }
.text-link { display:inline-flex; gap:10px; align-items:center; margin-top:16px; color:var(--blue); font-weight:800; border-bottom:1px solid currentColor; padding-bottom:4px; }
.text-link.is-disabled { opacity:.48; pointer-events:none; }

.books__inner { display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:center; }
.books__visual { position:relative; min-height:520px; }
.books__cover { position:absolute; left:7%; top:0; width:44%; box-shadow:0 18px 38px rgba(22,44,67,.18); transform:rotate(-2deg); }
.books__sub { position:absolute; right:0; bottom:16px; width:58%; filter:drop-shadow(0 20px 30px rgba(22,44,67,.12)); }
.books__content h3 { font-family:"Yu Mincho",serif; font-size:28px; line-height:1.55; color:#1e3454; margin:0 0 18px; }
.books__content p { color:#647383; }

.closing { padding:90px 0; background:linear-gradient(110deg,#f3fbf6,#ecf8ff); text-align:center; position:relative; overflow:hidden; }
.closing::before, .closing::after { content:""; position:absolute; width:240px; height:240px; border-radius:50%; filter:blur(10px); opacity:.32; }
.closing::before { left:-70px; top:-110px; background:#6ecb75; }
.closing::after { right:-70px; bottom:-110px; background:#67bfe6; }
.closing__inner { position:relative; z-index:2; }
.closing__small { color:#48985d; font-weight:800; letter-spacing:.08em; }

.site-footer { background:#11283f; color:#dce5ec; }
.site-footer__inner { padding:48px 0; display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:center; }
.footer-brand img { width:270px; filter:brightness(0) invert(1); opacity:.92; }
.footer-brand p { margin:10px 0 0; color:#98adbd; }
.footer-info { justify-self:end; text-align:right; font-size:14px; color:#c5d2dc; }
.footer-info p { margin:4px 0; }
.footer-bottom { text-align:center; padding:14px; border-top:1px solid rgba(255,255,255,.08); font-size:12px; color:#89a0b1; }
.to-top { position:fixed; right:22px; bottom:22px; width:48px; height:48px; border:0; border-radius:50%; background:var(--navy); color:white; box-shadow:0 8px 22px rgba(12,47,102,.25); cursor:pointer; opacity:0; visibility:hidden; transition:.3s; z-index:40; }
.to-top.is-visible { opacity:1; visibility:visible; }

.reveal { opacity:0; transform:translateY(26px); transition:opacity .75s ease, transform .75s ease; }
.reveal.is-visible { opacity:1; transform:none; }
.reveal--delay { transition-delay:.12s; }
.reveal--delay-sm { transition-delay:.08s; }
.reveal--delay-md { transition-delay:.16s; }
.reveal--delay-lg { transition-delay:.24s; }

@media (max-width: 960px) {
  .pc-nav { display:none; }
  .menu-btn { display:block; }
  .brand img { width:220px; }
  .sp-nav { display:flex; position:absolute; left:0; right:0; top:100%; background:rgba(255,255,255,.98); flex-direction:column; padding:18px 24px 24px; border-bottom:1px solid var(--line); transform:translateY(-10px); opacity:0; visibility:hidden; transition:.25s; }
  .sp-nav.is-open { opacity:1; visibility:visible; transform:none; }
  .sp-nav a { padding:13px 0; border-bottom:1px solid #edf2f5; font-weight:700; }
  .hero__inner, .split, .split--reverse, .books__inner { grid-template-columns:1fr; }
  .hero { min-height:auto; }
  .hero::before { background:linear-gradient(180deg,#fff 0%,rgba(255,255,255,.94) 52%,rgba(255,255,255,.10) 78%,rgba(255,255,255,0) 100%); }
  .hero__inner { min-height:auto; padding-top:58px; padding-bottom:104px; gap:28px; }
  .hero__visual { max-width:none; margin:0 -20px; width:auto; }
  .hero__visual::before { display:none; }
  .hero-photo-wrap { border-radius:24px; }
  .hero-photo { height:420px; }
  .hero h1 span { white-space:normal; }
  .service-grid { grid-template-columns:repeat(2,1fr); }
  .split { gap:48px; }
  .split--reverse .split__visual { order:2; }
  .split--reverse .split__content { order:1; }
  .portrait-card { min-height:400px; }
  .books__visual { min-height:440px; }
}

@media (max-width: 680px) {
  .container { width:min(100% - 30px, 1120px); }
  .site-header__inner { width:calc(100% - 26px); height:70px; }
  .brand img { width:185px; }
  .menu-btn { width:44px; height:44px; }
  .section { padding:78px 0; }
  .hero__inner { padding-top:36px; gap:26px; }
  .hero h1 { font-size:40px; line-height:1.35; }
  .hero__lead { font-size:15px; line-height:1.85; }
  .hero__name { margin-top:22px; }
  .hero__name b { font-size:27px; }
  .hero-photo { height:320px; }
  .hero-badge { right:14px; top:18px; padding:10px 13px; font-size:11px; border-radius:14px; }
  .stats { padding:24px 0 28px; }
  .stats__grid { grid-template-columns:1fr; }
  .stat { padding:22px 10px; }
  .stat + .stat::before { left:20%; right:20%; top:0; bottom:auto; width:auto; height:1px; }
  .stat__number span { font-size:44px; }
  .service-grid { grid-template-columns:1fr; }
  .service-card { padding:28px 24px; }
  .portrait-card { min-height:340px; }
  .portrait-card img { width:60%; right:3%; }
  .portrait-card__note { left:22px; top:32px; font-size:21px; width:44%; }
  .seminar-band { min-height:470px; }
  .seminar-band__overlay { background:linear-gradient(180deg,rgba(4,35,68,.44),rgba(4,35,68,.86)); }
  .seminar-band__content { align-self:flex-end; padding-bottom:54px; }
  .photo-stack { min-height:420px; }
  .photo-stack__main { width:86%; }
  .photo-stack__accent { width:46%; }
  .books__visual { min-height:390px; }
  .books__cover { left:2%; width:46%; }
  .books__sub { width:66%; }
  .site-footer__inner { grid-template-columns:1fr; text-align:left; }
  .footer-info { justify-self:start; text-align:left; }
  .footer-brand img { width:240px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior:auto !important; animation:none !important; transition:none !important; }
  .reveal { opacity:1 !important; transform:none !important; }
  .intro { display:none; }
}

/* ===== Requested motion override (delivery v4) =====
   The client explicitly requested splash + scroll animations.
   Keep them active even when the device has reduced-motion enabled. */
@media (prefers-reduced-motion: reduce) {
  .intro {
    display: grid !important;
    opacity: 1;
    visibility: visible;
    transition: opacity .5s ease, visibility .5s ease !important;
  }
  .intro.is-hidden {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }
  .intro__logo {
    opacity: 0;
    transform: translateY(8px) scale(.965);
    animation: splashLogo .78s cubic-bezier(.2,.8,.2,1) .05s forwards !important;
  }
  .reveal {
    opacity: 0 !important;
    transform: translateY(32px) !important;
    transition: opacity .78s ease, transform .78s cubic-bezier(.2,.7,.2,1) !important;
  }
  .reveal.is-visible {
    opacity: 1 !important;
    transform: none !important;
  }
}
