:root {
  --ink: #111111;
  --navy: #082f72;
  --yellow: #ffe600;
  --paper: #efefed;
  --white: #ffffff;
  --muted: #7f8aa0;
  --line: #cfd2d5;
  --max: 1320px;
  --side: clamp(22px, 5vw, 78px);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: "Noto Sans JP", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  line-height: 1.75;
  overflow-x: hidden;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
.skip-link { position: fixed; top: 8px; left: 8px; z-index: 999; transform: translateY(-160%); background: var(--ink); color: #fff; padding: 10px 16px; }
.skip-link:focus { transform: translateY(0); }

.site-header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 50;
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 32px;
  height: 90px;
  padding: 0 var(--side);
  border-bottom: 1px solid rgba(17,17,17,.12);
  background: rgba(239,239,237,.86);
  backdrop-filter: blur(14px);
}
.brand { display: inline-flex; flex-direction: column; width: max-content; font-family: Inter, sans-serif; font-weight: 900; letter-spacing: .18em; line-height: 1.05; }
.brand span { font-size: 11px; }
.brand strong { font-size: 19px; }
.desktop-nav { display: flex; gap: 28px; font: 700 12px/1 Inter, sans-serif; letter-spacing: .14em; }
.desktop-nav a { position: relative; padding: 10px 0; }
.desktop-nav a::after { content:""; position:absolute; left:0; bottom:2px; width:100%; height:2px; background:var(--yellow); transform:scaleX(0); transform-origin:left; transition:.25s; }
.desktop-nav a:hover::after { transform:scaleX(1); }
.header-cta { background: var(--yellow); font-weight: 800; padding: 13px 24px; border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink); transition: .2s; }
.header-cta:hover { transform: translate(2px,2px); box-shadow: 2px 2px 0 var(--ink); }
.menu-button { display:none; width:44px; height:44px; border:0; background:transparent; position:relative; }
.menu-button span { position:absolute; left:8px; right:8px; height:2px; background:var(--ink); transition:.25s; }
.menu-button span:first-child { top:16px; }.menu-button span:last-child { top:26px; }
.menu-button[aria-expanded="true"] span:first-child { top:21px; transform:rotate(45deg); }.menu-button[aria-expanded="true"] span:last-child { top:21px; transform:rotate(-45deg); }
.mobile-menu { position:fixed; inset:90px 0 0; z-index:45; background:var(--yellow); padding:36px var(--side); transform:translateY(-120%); transition:.35s ease; }
.mobile-menu.is-open { transform:translateY(0); }
.mobile-menu nav { display:grid; gap:8px; }
.mobile-menu a { font:900 clamp(30px,9vw,58px)/1.08 Inter, sans-serif; letter-spacing:-.04em; padding:7px 0; }
.mobile-menu-cta { margin-top:18px; font-size:18px!important; border:2px solid var(--ink); background:#fff; padding:18px!important; text-align:center; box-shadow:5px 5px 0 var(--ink); }

.section-shell { width: min(var(--max), calc(100% - (var(--side) * 2))); margin-inline: auto; position: relative; }
.hero { min-height: 100svh; padding-top: 150px; padding-bottom: 110px; display:grid; grid-template-columns: .95fr 1.05fr; align-items:center; gap: clamp(20px, 4vw, 70px); }
.eyebrow { margin:0 0 28px; font:800 12px/1.3 Inter, sans-serif; letter-spacing:.18em; }
.hero h1 { margin:0; }
.hero-title-en { display:block; font:900 clamp(54px,8vw,116px)/.82 Inter, sans-serif; letter-spacing:-.065em; }
.hero-title-ja { display:block; margin-top:36px; font-size:clamp(24px,3vw,44px); line-height:1.45; color:var(--navy); letter-spacing:.02em; }
.hero-lead { margin:28px 0 0; max-width:720px; font-size:clamp(15px,1.4vw,19px); font-weight:600; }
.hero-meta { display:flex; flex-wrap:wrap; gap:10px; margin-top:28px; }
.hero-meta span { display:inline-flex; align-items:center; min-height:42px; padding:7px 14px; border:1.5px solid var(--ink); background:#fff; font-size:13px; font-weight:700; }
.hero-visual { position:relative; }
.hero-visual::before { content:""; position:absolute; inset:10% 0 5% 12%; background:var(--yellow); border-radius:50%; filter:blur(1px); }
.hero-visual svg { position:relative; width:100%; }
.scroll-indicator { position:absolute; right:4px; bottom:28px; display:flex; flex-direction:column; align-items:center; gap:10px; font:700 9px/1 Inter,sans-serif; letter-spacing:.18em; writing-mode:vertical-rl; }
.scroll-indicator i { display:block; width:1px; height:72px; background:var(--ink); animation:scrollLine 1.8s infinite ease-in-out; transform-origin:top; }
@keyframes scrollLine { 0%,100%{transform:scaleY(.25)} 50%{transform:scaleY(1)} }

section { padding-block: clamp(90px, 12vw, 180px); }
.section-giant-word { position:absolute; top:30px; left:-2vw; z-index:-1; color:#c1c9d6; opacity:.78; font:900 clamp(70px,13vw,190px)/.8 Inter,sans-serif; letter-spacing:-.08em; white-space:nowrap; }
.section-giant-word.right { left:auto; right:-5vw; }
.section-heading { display:grid; grid-template-columns:minmax(260px,.62fr) 1fr; align-items:end; gap:80px; margin-bottom:70px; }
.section-heading.split { grid-template-columns:1fr 1fr; }
.section-heading h2 { margin:0; font:900 clamp(54px,7vw,104px)/.88 Inter,sans-serif; letter-spacing:-.07em; }
.section-heading > p:last-child { margin:0; color:var(--navy); font-size:clamp(20px,2.1vw,34px); font-weight:800; line-height:1.55; }
.section-index { margin:0 0 20px; width:max-content; padding-bottom:7px; border-bottom:2px solid var(--ink); font:900 16px/1 Inter,sans-serif; }
.section-index.dark { border-color:var(--ink); }

.about { padding-top:200px; }
.about-card { position:relative; width:min(960px,92%); margin-left:auto; display:grid; grid-template-columns:.75fr 1.25fr; gap:40px; background:#fff; padding:clamp(30px,6vw,78px); box-shadow:0 18px 40px rgba(17,17,17,.06); }
.about-card::before { content:""; position:absolute; width:70px; height:70px; left:-35px; top:-35px; background:var(--yellow); border:2px solid var(--ink); border-radius:50%; }
.about-card-copy h3 { margin:0 0 24px; color:var(--navy); font-size:clamp(24px,2.8vw,42px); line-height:1.45; }
.about-card-copy p { font-size:17px; font-weight:500; }
.about-card-illustration { align-self:center; }

.experience-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.experience-card { position:relative; min-height:490px; padding:34px; background:#fff; border:2px solid var(--ink); box-shadow:8px 8px 0 var(--yellow); }
.card-number { font:900 18px/1 Inter,sans-serif; border-bottom:2px solid var(--ink); padding-bottom:8px; }
.doodle-icon { margin:40px auto 20px; width:160px; }
.experience-card h3 { margin:20px 0 14px; font-size:34px; color:var(--navy); }
.experience-card p { font-weight:500; }

.program { padding-top:220px; }
.program-list { display:grid; gap:120px; }
.program-item { display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(34px,7vw,110px); align-items:center; }
.program-item.reverse { grid-template-columns:.85fr 1.15fr; }
.program-item.reverse .program-image { order:2; }
.program-item.reverse .program-copy { order:1; }
.program-image { min-height:480px; position:relative; background:#fff; overflow:hidden; }
.program-image::after { content:""; position:absolute; inset:auto 0 0; height:33%; background:linear-gradient(transparent,var(--paper)); }
.program-image svg { width:100%; height:100%; min-height:480px; }
.program-image.photo img { width:100%; height:540px; object-fit:cover; image-rendering:auto; }
.program-copy { position:relative; }
.program-number { position:absolute; right:0; top:-90px; font:900 clamp(88px,11vw,170px)/1 Inter,sans-serif; color:#fff; text-shadow:-2px -2px 0 var(--ink),2px -2px 0 var(--ink),-2px 2px 0 var(--ink),2px 2px 0 var(--ink); opacity:.85; }
.program-label { margin:0 0 14px; font:800 12px/1 Inter,sans-serif; letter-spacing:.18em; color:var(--navy); }
.program-copy h3 { margin:0 0 24px; font-size:clamp(28px,3vw,48px); line-height:1.4; }
.program-copy > p { font-size:17px; font-weight:500; }
.program-copy ul { display:flex; flex-wrap:wrap; gap:8px; padding:0; list-style:none; margin-top:30px; }
.program-copy li { background:var(--yellow); border:1.5px solid var(--ink); padding:7px 12px; font-size:13px; font-weight:700; }

.timeline-list { border-top:2px solid var(--ink); }
.timeline-item { display:grid; grid-template-columns:110px 72px 1fr; gap:25px; align-items:start; padding:30px 0; border-bottom:1px solid #a8abad; }
.timeline-item time { font:900 18px/1 Inter,sans-serif; color:var(--navy); padding-top:8px; }
.timeline-item > span { display:grid; place-items:center; width:52px; height:52px; background:var(--yellow); border:2px solid var(--ink); font:900 17px/1 Inter,sans-serif; transform:rotate(-3deg); }
.timeline-item h3 { margin:0 0 7px; font-size:25px; }
.timeline-item p { margin:0; }

.research-set { background:var(--yellow); padding-block:clamp(95px,10vw,150px); border-block:2px solid var(--ink); }
.research-set-heading { display:grid; grid-template-columns:.7fr 1.3fr; align-items:end; gap:80px; margin-bottom:55px; }
.research-set-heading h2 { margin:0; font:900 clamp(56px,9vw,130px)/.85 Inter,sans-serif; letter-spacing:-.07em; }
.research-set-heading > p:last-child { margin:0; font-size:clamp(22px,2.3vw,36px); font-weight:800; color:var(--navy); }
.number-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.number-card { min-height:230px; padding:30px; background:#fff; border:2px solid var(--ink); box-shadow:7px 7px 0 var(--ink); display:flex; flex-direction:column; justify-content:space-between; clip-path:polygon(0 0, 94% 0, 100% 12%, 100% 100%, 0 100%); }
.number-card strong { font:900 clamp(42px,5vw,76px)/.9 Inter,sans-serif; letter-spacing:-.06em; }
.number-card span { color:var(--navy); font-weight:800; }
.illustration-card { justify-content:center; }
.illustration-card svg { width:100%; }

.stats-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.stat { min-height:210px; background:var(--yellow); border:2px solid var(--ink); padding:25px; display:flex; flex-direction:column; justify-content:space-between; clip-path:polygon(0 0, 88% 0, 100% 16%, 100% 100%, 0 100%); }
.stat strong { font:900 clamp(44px,5vw,80px)/.88 Inter,sans-serif; letter-spacing:-.07em; }
.stat span { font-weight:800; color:var(--navy); }

.lecturers { padding-top:210px; }
.lecturer-list { display:grid; gap:65px; max-width:1080px; margin-inline:auto; }
.lecturer-card { position:relative; display:grid; grid-template-columns:.9fr 1.1fr; background:#fff; border:1px solid #d5d5d5; box-shadow:0 12px 35px rgba(17,17,17,.08); }
.lecturer-card.offset { transform:translateX(7%); }
.lecturer-photo img { width:100%; height:340px; object-fit:cover; }
.lecturer-copy { padding:36px 42px; align-self:center; }
.tag { display:inline-block; background:var(--yellow); padding:6px 11px; font-size:12px; font-weight:800; border:1px solid var(--ink); }
.interview-number { margin:18px 0 10px; font:700 11px/1 Inter,sans-serif; letter-spacing:.12em; }
.lecturer-copy h3 { margin:0 0 15px; font-size:clamp(22px,2.5vw,36px); line-height:1.45; }
.lecturer-copy p:last-child { margin:0; }
.large-number { position:absolute; right:-45px; top:-36px; font:900 72px/1 Inter,sans-serif; }
.center-cta { text-align:center; margin-top:65px; }
.button { display:inline-flex; align-items:center; justify-content:center; min-height:58px; padding:14px 28px; border:2px solid var(--ink); font-weight:800; transition:.2s; }
.button-outline { background:transparent; box-shadow:6px 6px 0 var(--yellow); }
.button-outline:hover { background:var(--yellow); transform:translate(2px,2px); box-shadow:3px 3px 0 var(--ink); }
.button-dark { width:100%; background:var(--ink); color:#fff; box-shadow:6px 6px 0 var(--yellow); }
.button-dark:hover { transform:translate(2px,2px); box-shadow:3px 3px 0 var(--yellow); }
.button-dark span { margin-left:auto; }

.studio { padding-top:220px; }
.studio-grid { display:grid; grid-template-columns:1.05fr .95fr; gap:28px; align-items:start; }
.studio-photo { position:relative; margin:0; overflow:hidden; background:#ddd; }
.studio-photo:first-child { grid-row:span 2; }
.studio-photo img { width:100%; height:100%; min-height:620px; object-fit:cover; }
.studio-photo.dark img { min-height:360px; }
.studio-photo figcaption { position:absolute; left:0; bottom:0; padding:15px 22px; color:#fff; font:800 clamp(22px,3vw,40px)/1 Inter,sans-serif; letter-spacing:.02em; text-shadow:0 2px 12px rgba(0,0,0,.4); }
.studio-photo figcaption span { color:var(--yellow); }
.studio-copy { padding:45px; background:#fff; border:2px solid var(--ink); box-shadow:8px 8px 0 var(--yellow); }
.studio-copy h3 { margin:0 0 20px; font-size:34px; color:var(--navy); }
.studio-copy ul { padding-left:1.2em; font-weight:700; }

.process-track { position:relative; display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.process-step { min-height:230px; padding:27px; border:2px solid var(--ink); background:#fff; }
.process-step.active { background:var(--yellow); }
.process-step span { font:900 16px/1 Inter,sans-serif; border-bottom:2px solid var(--ink); }
.process-step h3 { margin:38px 0 10px; font-size:24px; }
.process-step p { margin:0; }
.social-links { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:55px; }
.social-links a { position:relative; padding:25px; background:var(--navy); color:#fff; transition:.2s; }
.social-links a::after { content:"→"; position:absolute; right:20px; top:20px; font-size:24px; color:var(--yellow); }
.social-links a:hover { transform:translateY(-5px); }
.social-links span { display:block; font:800 18px/1.2 Inter,sans-serif; }
.social-links small { display:block; margin-top:10px; opacity:.8; }

.message-card { position:relative; min-height:560px; padding:clamp(34px,7vw,90px); background:#fff; border:2px solid var(--ink); overflow:hidden; }
.message-copy { max-width:760px; position:relative; z-index:2; }
.message-copy p { font-size:clamp(17px,1.6vw,21px); font-weight:600; margin:0 0 25px; }
.message-signatures { position:relative; z-index:2; display:flex; gap:55px; margin-top:55px; }
.message-signatures div { display:flex; flex-direction:column; }
.message-signatures strong { font:900 16px/1 Inter,sans-serif; letter-spacing:.12em; }
.message-signatures span { margin-top:9px; font-weight:700; }
.message-doodle { position:absolute; right:-20px; bottom:-15px; width:min(360px,38%); }

.info-grid { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.info-grid dl { margin:0; background:#fff; border-top:5px solid var(--yellow); }
.info-grid dl div { display:grid; grid-template-columns:150px 1fr; border-bottom:1px solid #d9d9d9; }
.info-grid dt,.info-grid dd { margin:0; padding:20px 24px; }
.info-grid dt { font-weight:800; color:var(--navy); background:#f8f8f7; }
.info-grid dd { font-weight:600; }

.faq-list { border-top:2px solid var(--ink); }
details { border-bottom:1px solid #9ea1a3; }
summary { position:relative; cursor:pointer; list-style:none; padding:28px 70px 28px 0; font-size:20px; font-weight:800; }
summary::-webkit-details-marker { display:none; }
summary::after { content:"＋"; position:absolute; right:15px; top:22px; font:500 34px/1 Inter,sans-serif; transition:.2s; }
details[open] summary::after { transform:rotate(45deg); }
details p { margin:0; padding:0 70px 28px 0; max-width:900px; }

.entry { background:var(--yellow); border-block:2px solid var(--ink); }
.entry-inner { display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(40px,7vw,100px); align-items:start; }
.entry-copy h2 { margin:0 0 28px; font-size:clamp(40px,5vw,76px); line-height:1.3; letter-spacing:-.04em; }
.entry-copy p:last-child { font-size:18px; font-weight:600; }
.entry-form { padding:clamp(25px,4vw,45px); background:#fff; border:2px solid var(--ink); box-shadow:9px 9px 0 var(--ink); }
.form-field { margin-bottom:20px; }
.form-field label { display:block; margin-bottom:7px; font-weight:800; }
.form-field label span { font-size:11px; background:var(--navy); color:#fff; padding:3px 7px; margin-left:7px; }
input,select,textarea { width:100%; border:1.5px solid var(--ink); background:#fafafa; padding:13px 14px; border-radius:0; }
input:focus,select:focus,textarea:focus { outline:3px solid rgba(255,230,0,.65); outline-offset:1px; }
.form-consent { display:flex; gap:10px; align-items:center; margin:12px 0 22px; font-size:13px; font-weight:600; }
.form-consent input { width:18px; height:18px; }
.form-note { margin:18px 0 0; color:#666; font-size:11px; }
.form-message { margin:12px 0 0; min-height:1.5em; font-weight:800; color:var(--navy); }

.partner-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.partner-card { min-height:300px; position:relative; padding:30px; background:#fff; border:2px solid var(--ink); transition:.25s; }
.partner-card:hover { background:var(--yellow); transform:translateY(-6px); }
.partner-card > span { font:900 16px/1 Inter,sans-serif; border-bottom:2px solid var(--ink); }
.partner-card h3 { margin:50px 0 14px; font-size:26px; color:var(--navy); }
.partner-card i { position:absolute; right:25px; bottom:20px; font:900 32px/1 Inter,sans-serif; font-style:normal; }

.site-footer { position:relative; padding:70px var(--side) 120px; background:var(--ink); color:#fff; }
.footer-top { display:flex; justify-content:space-between; gap:40px; padding-bottom:45px; border-bottom:1px solid rgba(255,255,255,.25); }
.footer-brand { display:flex; flex-direction:column; font-family:Inter,sans-serif; font-weight:900; letter-spacing:.15em; }
.footer-brand span { font-size:14px; }.footer-brand strong { font-size:32px; }.footer-brand small { margin-top:10px; color:var(--yellow); font-size:9px; }
.footer-top nav { display:flex; flex-wrap:wrap; gap:22px; align-items:flex-start; font:700 12px/1 Inter,sans-serif; letter-spacing:.12em; }
.footer-bottom { display:grid; grid-template-columns:1fr auto; gap:15px; align-items:end; padding-top:30px; font-size:12px; color:#bbb; }
.footer-bottom p { margin:0; }.footer-bottom div { display:flex; gap:18px; }.footer-bottom small { grid-column:1/-1; }
.back-to-top { position:absolute; right:25px; bottom:25px; width:46px; height:46px; background:#fff; color:#111; display:grid; place-items:center; font-size:24px; }
.sticky-entry { position:fixed; z-index:40; right:22px; bottom:22px; display:flex; align-items:center; gap:28px; background:var(--yellow); border:2px solid var(--ink); box-shadow:6px 6px 0 var(--ink); padding:15px 18px; font-weight:900; transition:.2s; }
.sticky-entry:hover { transform:translate(2px,2px); box-shadow:3px 3px 0 var(--ink); }
.sticky-entry i { font-style:normal; font-size:22px; }

.reveal { opacity:0; transform:translateY(28px); transition:opacity .7s ease, transform .7s ease; }
.reveal.is-visible { opacity:1; transform:none; }

@media (max-width: 980px) {
  .site-header { height:76px; grid-template-columns:1fr auto; }
  .desktop-nav,.header-cta { display:none; }
  .menu-button { display:block; }
  .mobile-menu { inset:76px 0 0; }
  .hero { min-height:auto; padding-top:130px; grid-template-columns:1fr; }
  .hero-visual { max-width:720px; margin-inline:auto; }
  .scroll-indicator { display:none; }
  .section-heading,.section-heading.split,.research-set-heading { grid-template-columns:1fr; gap:28px; }
  .section-heading > p:last-child { max-width:700px; }
  .experience-grid,.number-grid,.stats-grid,.partner-grid { grid-template-columns:repeat(2,1fr); }
  .program-item,.program-item.reverse { grid-template-columns:1fr; gap:45px; }
  .program-item.reverse .program-image,.program-item.reverse .program-copy { order:initial; }
  .program-image,.program-image svg { min-height:390px; }
  .program-image.photo img { height:440px; }
  .program-number { top:-55px; }
  .studio-grid { grid-template-columns:1fr; }
  .studio-photo:first-child { grid-row:auto; }
  .studio-photo img { min-height:460px; }
  .process-track { grid-template-columns:repeat(2,1fr); }
  .social-links { grid-template-columns:1fr; }
  .entry-inner { grid-template-columns:1fr; }
  .info-grid { grid-template-columns:1fr; }
}

@media (max-width: 680px) {
  :root { --side: 20px; }
  .site-header { padding-inline:20px; }
  .brand strong { font-size:16px; }
  section { padding-block:90px; }
  .hero { padding-top:120px; padding-bottom:75px; }
  .hero-title-en { font-size:clamp(49px,16vw,74px); }
  .hero-title-ja { margin-top:28px; font-size:24px; }
  .hero-lead br { display:none; }
  .hero-meta { display:grid; grid-template-columns:1fr 1fr; }
  .hero-meta span:last-child { grid-column:1/-1; }
  .section-giant-word { top:10px; font-size:74px; max-width:100vw; overflow:hidden; }
  .section-heading { margin-bottom:45px; }
  .section-heading h2 { font-size:56px; }
  .section-heading > p:last-child { font-size:22px; }
  .about { padding-top:130px; }
  .about-card { width:100%; grid-template-columns:1fr; padding:28px 23px; }
  .about-card::before { width:42px; height:42px; left:-12px; top:-20px; }
  .about-card-illustration { max-width:260px; margin:auto; }
  .experience-grid,.number-grid,.stats-grid,.partner-grid { grid-template-columns:1fr; }
  .experience-card { min-height:auto; }
  .program { padding-top:150px; }
  .program-list { gap:90px; }
  .program-image,.program-image svg { min-height:330px; }
  .program-image.photo img { height:360px; }
  .program-number { right:6px; top:-48px; font-size:92px; }
  .timeline-item { grid-template-columns:70px 50px 1fr; gap:12px; }
  .timeline-item time { font-size:13px; }
  .timeline-item > span { width:42px; height:42px; }
  .timeline-item h3 { font-size:19px; }
  .number-card { min-height:190px; }
  .stats-grid { grid-template-columns:1fr 1fr; }
  .stat { min-height:160px; padding:20px; }
  .stat strong { font-size:40px; }
  .lecturer-card,.lecturer-card.offset { grid-template-columns:1fr; transform:none; }
  .lecturer-photo img { height:260px; }
  .lecturer-copy { padding:25px; }
  .large-number { right:10px; top:-40px; }
  .studio { padding-top:150px; }
  .studio-photo img { min-height:330px; }
  .studio-copy { padding:28px 24px; }
  .process-track { grid-template-columns:1fr; }
  .message-card { padding:30px 22px 210px; }
  .message-doodle { width:250px; right:-15px; }
  .message-signatures { flex-direction:column; gap:20px; }
  .info-grid dl div { grid-template-columns:105px 1fr; }
  .info-grid dt,.info-grid dd { padding:16px 13px; font-size:13px; }
  summary { font-size:17px; padding-right:55px; }
  .entry { padding-block:80px; }
  .entry-copy h2 { font-size:38px; }
  .footer-top,.footer-bottom { display:grid; grid-template-columns:1fr; }
  .footer-top nav { display:grid; grid-template-columns:repeat(2,1fr); }
  .footer-bottom div { flex-direction:column; gap:8px; }
  .sticky-entry { left:12px; right:12px; bottom:12px; justify-content:space-between; }
}

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

/* ===== HERO FINAL OVERRIDE ===== */
.hero.hero-inspired {
  position: relative;
  display: block;
  min-height: calc(100svh - 90px);
  padding: 90px 0 0;
  background: var(--paper);
  overflow: hidden;
}
.hero.hero-inspired .hero-main-frame {
  position: relative;
  width: 100%;
  min-height: calc(100svh - 90px);
  overflow: hidden;
  border-radius: 0 0 28px 28px;
  isolation: isolate;
}
.hero.hero-inspired .hero-main-frame::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -3;
  background-image: url('assets/academy-day-session.jpg');
  background-size: cover;
  background-position: center 42%;
  background-repeat: no-repeat;
  transform: scale(1.01);
}
.hero.hero-inspired .hero-main-frame::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -2;
  background:
    linear-gradient(90deg, rgba(239,239,237,.82) 0%, rgba(239,239,237,.58) 26%, rgba(239,239,237,.16) 49%, rgba(239,239,237,.05) 73%),
    linear-gradient(0deg, rgba(239,239,237,.48) 0%, rgba(239,239,237,.08) 30%, transparent 55%);
}
.hero.hero-inspired .hero-copy {
  position: relative;
  z-index: 3;
  width: min(720px, 52vw);
  padding: clamp(90px, 13vh, 150px) 0 250px clamp(36px, 7vw, 118px);
  max-width: none;
}
.hero-kicker {
  margin: 0 0 30px;
  color: #fff;
  font: 800 12px/1.3 Inter, "Noto Sans JP", sans-serif;
  letter-spacing: .18em;
}
.hero-main-title {
  margin: 0;
  color: #fff;
  font-family: "Noto Sans JP", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-weight: 900;
  letter-spacing: -.035em;
  line-height: 1.24;
  text-wrap: balance;
}
.hero-main-title span {
  display: block;
  width: max-content;
  max-width: 100%;
  font-size: clamp(42px, 4.5vw, 76px);
  white-space: nowrap;
}
.hero-description-block {
  margin-top: 34px;
  color: #fff;
}
.hero-description-block p {
  margin: 0;
  font-family: "Noto Sans JP", system-ui, sans-serif;
  font-size: clamp(15px, 1.35vw, 20px);
  line-height: 1.9;
  font-weight: 800;
  letter-spacing: .01em;
}
.hero-word-wrap {
  position: absolute;
  z-index: 2;
  left: clamp(28px, 5vw, 84px);
  right: 94px;
  bottom: 20px;
  color: var(--navy);
  pointer-events: none;
  text-transform: uppercase;
  overflow: hidden;
}
.hero-word-top {
  display: block;
  margin: 0 0 -3px 3px;
  font: 900 clamp(28px, 3.5vw, 58px)/1 Inter, sans-serif;
  letter-spacing: .42em;
}
.hero-word-bottom {
  display: block;
  font: 900 clamp(112px, 17.2vw, 280px)/.77 Inter, sans-serif;
  letter-spacing: -.015em;
  white-space: nowrap;
}
.hero-side-rail {
  position: absolute;
  z-index: 4;
  inset: 0 0 0 auto;
  width: 82px;
  padding: 30px 0 56px;
  background: rgba(239,239,237,.82);
  backdrop-filter: blur(5px);
  display: flex;
  flex-direction: column;
  align-items: center;
  color: var(--navy);
}
.hero-rail-item {
  writing-mode: vertical-rl;
  font: 900 14px/1 Inter, sans-serif;
  letter-spacing: .15em;
}
.hero-rail-item::before {
  content: "◎";
  display: block;
  margin-bottom: 15px;
  font-size: 29px;
  letter-spacing: 0;
}
.hero-rail-scroll {
  margin-top: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
}
.hero-rail-scroll span {
  writing-mode: vertical-rl;
  font: 800 11px/1 Inter, sans-serif;
  letter-spacing: .18em;
}
.hero-rail-scroll i {
  position: relative;
  display: block;
  width: 1px;
  height: 56px;
  background: var(--navy);
}
.hero-rail-scroll i::after {
  content: "";
  position: absolute;
  left: -4px;
  bottom: 0;
  width: 8px;
  height: 8px;
  border-right: 1px solid var(--navy);
  border-bottom: 1px solid var(--navy);
  transform: rotate(45deg);
}

@media (max-width: 980px) {
  .hero.hero-inspired {
    padding-top: 76px;
    min-height: auto;
  }
  .hero.hero-inspired .hero-main-frame {
    min-height: calc(100svh - 76px);
    border-radius: 0 0 22px 22px;
  }
  .hero.hero-inspired .hero-main-frame::before {
    background-position: 60% center;
  }
  .hero.hero-inspired .hero-main-frame::after {
    background:
      linear-gradient(90deg, rgba(239,239,237,.80) 0%, rgba(239,239,237,.47) 42%, rgba(239,239,237,.10) 72%),
      linear-gradient(0deg, rgba(239,239,237,.62) 0%, rgba(239,239,237,.06) 44%, transparent 70%);
  }
  .hero.hero-inspired .hero-copy {
    width: min(640px, 76vw);
    padding: clamp(76px, 10vh, 118px) 0 220px 34px;
  }
  .hero-main-title span { font-size: clamp(36px, 6.3vw, 58px); }
  .hero-word-wrap { right: 68px; left: 28px; }
  .hero-word-bottom { font-size: clamp(88px, 17vw, 170px); }
  .hero-side-rail { width: 60px; }
}

@media (max-width: 680px) {
  .hero.hero-inspired {
    padding-top: 76px;
  }
  .hero.hero-inspired .hero-main-frame {
    min-height: 82svh;
    border-radius: 0 0 18px 18px;
  }
  .hero.hero-inspired .hero-main-frame::before {
    background-position: 59% top;
  }
  .hero.hero-inspired .hero-main-frame::after {
    background:
      linear-gradient(180deg, rgba(239,239,237,.08) 0%, rgba(239,239,237,.08) 28%, rgba(239,239,237,.58) 55%, rgba(239,239,237,.92) 78%, rgba(239,239,237,.96) 100%);
  }
  .hero.hero-inspired .hero-copy {
    width: calc(100% - 22px);
    padding: 46vh 18px 132px;
  }
  .hero-kicker {
    margin-bottom: 15px;
    font-size: 9px;
  }
  .hero-main-title {
    line-height: 1.18;
  }
  .hero-main-title span {
    font-size: clamp(27px, 8.6vw, 42px);
    white-space: nowrap;
  }
  .hero-description-block {
    margin-top: 20px;
  }
  .hero-description-block p {
    font-size: 13px;
    line-height: 1.8;
  }
  .hero-side-rail { display: none; }
  .hero-word-wrap {
    left: 18px;
    right: 8px;
    bottom: 14px;
  }
  .hero-word-top {
    font-size: 17px;
    letter-spacing: .26em;
  }
  .hero-word-bottom {
    font-size: clamp(52px, 18.5vw, 88px);
    line-height: .82;
  }
}

@media (max-width: 390px) {
  .hero-main-title span { font-size: 26px; }
  .hero.hero-inspired .hero-copy { padding-top: 44vh; }
  .hero-word-bottom { font-size: 50px; }
}

/* ===== DESIGN / QA AUDIT PATCH 2026-08-12 ===== */
/* Prevent decorative typography from creating hidden horizontal overflow. */
html,
body {
  max-width: 100%;
  overflow-x: clip;
}
.section-giant-word {
  left: 0;
  max-width: 100%;
  overflow: hidden;
  pointer-events: none;
}
.section-giant-word.right {
  right: 0;
  left: auto;
}
.program { overflow-x: clip; }

/* Header brand hierarchy: keep the partner credit intentionally secondary. */
.brand small {
  margin-top: 5px;
  color: var(--navy);
  font-size: 8px;
  font-weight: 800;
  letter-spacing: .09em;
  line-height: 1.2;
}

/* Improve hero text contrast without changing the visual composition. */
.hero.hero-inspired .hero-main-frame::after {
  background:
    linear-gradient(90deg, rgba(4,27,67,.55) 0%, rgba(4,27,67,.28) 35%, rgba(4,27,67,.06) 58%, rgba(4,27,67,0) 72%),
    linear-gradient(0deg, rgba(239,239,237,.48) 0%, rgba(239,239,237,.08) 27%, transparent 48%);
}
.hero-kicker,
.hero-main-title,
.hero-description-block {
  text-shadow: 0 2px 14px rgba(0,0,0,.24);
}

/* About Us was introduced after the original stylesheet; give it the same editorial system. */
.about-partners {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 28px;
  align-items: stretch;
}
.about-partner {
  position: relative;
  min-width: 0;
  overflow: hidden;
  background: #fff;
  border-top: 5px solid var(--yellow);
  box-shadow: 0 14px 34px rgba(17,17,17,.065);
}
.about-partner-media {
  margin: 0;
  width: 100%;
  height: clamp(280px, 31vw, 430px);
  overflow: hidden;
  background: #ddd;
}
.about-partner-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.about-partner-media.portrait img { object-position: center 38%; }
.about-partner > :not(.about-partner-media) {
  margin-left: clamp(26px, 3vw, 42px);
  margin-right: clamp(26px, 3vw, 42px);
}
.about-label {
  margin-top: 32px;
  margin-bottom: 10px;
  color: var(--navy);
  font: 900 12px/1 Inter, "Noto Sans JP", sans-serif;
  letter-spacing: .16em;
}
.about-person {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 7px 12px;
  margin-top: 0;
  margin-bottom: 28px;
  font-weight: 800;
}
.about-person span {
  color: #555;
  font-size: .86em;
  font-weight: 700;
}
.minadein-person {
  align-items: center;
  gap: 8px 14px;
}
.minadein-person span {
  padding: 5px 8px;
  border: 1px solid var(--ink);
  color: var(--ink);
  font-size: 11px;
}
.minadein-person strong { font-size: 18px; }
.about-partner h3 {
  margin-top: 0;
  margin-bottom: 22px;
  color: var(--navy);
  font-size: clamp(25px, 2.5vw, 38px);
  line-height: 1.45;
}
.about-partner p:not(.about-label):not(.about-person) {
  font-size: 16px;
  line-height: 1.9;
}
.about-role {
  margin-top: 28px !important;
  margin-bottom: 36px !important;
  padding-top: 24px;
  border-top: 1px solid var(--line);
  font-weight: 700;
}
.collab-statement {
  margin-top: 28px;
  padding: clamp(34px, 5vw, 62px);
  background: var(--navy);
  color: #fff;
}
.collab-statement > span {
  display: block;
  margin-bottom: 22px;
  color: var(--yellow);
  font: 900 12px/1.3 Inter, "Noto Sans JP", sans-serif;
  letter-spacing: .14em;
}
.collab-statement h3 {
  margin: 0 0 24px;
  font-size: clamp(28px, 3vw, 46px);
  line-height: 1.45;
}
.collab-statement p {
  max-width: 940px;
  margin: 0 0 12px;
  line-height: 1.9;
}
.powered-navy {
  display: inline-block;
  margin-left: 8px;
  color: var(--navy);
  font-size: 11px;
  font-weight: 800;
}

/* Keyboard focus: visible, consistent and on-brand. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
  outline: 3px solid var(--navy);
  outline-offset: 3px;
}

/* Hide persistent CTA while the actual signup area is in view. */
.sticky-entry.is-hidden {
  opacity: 0;
  pointer-events: none;
  transform: translateY(14px);
  box-shadow: none;
}

@media (max-width: 980px) {
  .lecturer-card.offset { transform: none; }
  .large-number { right: 10px; }
  .about-partners { grid-template-columns: 1fr; }
  .about-partner-media { height: clamp(300px, 56vw, 500px); }
}

@media (max-width: 680px) {
  .section-giant-word { max-width: 100%; }
  .about-partners { gap: 22px; }
  .about-partner-media { height: 260px; }
  .about-partner > :not(.about-partner-media) {
    margin-left: 22px;
    margin-right: 22px;
  }
  .about-label { margin-top: 24px; }
  .about-person { margin-bottom: 22px; }
  .about-partner h3 { font-size: 27px; }
  .about-partner p:not(.about-label):not(.about-person) { font-size: 15px; }
  .collab-statement { margin-top: 22px; padding: 30px 22px; }
  .collab-statement h3 { font-size: 28px; }
  .powered-navy { display: block; margin: 5px 0 0; }
  .sticky-entry {
    min-height: 58px;
    padding: 11px 16px;
    gap: 16px;
    font-size: 14px;
    box-shadow: 4px 4px 0 var(--ink);
  }
  .hero.hero-inspired .hero-main-frame::after {
    background:
      linear-gradient(180deg,
        rgba(4,27,67,.02) 0%,
        rgba(4,27,67,.04) 34%,
        rgba(4,27,67,.48) 52%,
        rgba(4,27,67,.58) 68%,
        rgba(239,239,237,.78) 82%,
        rgba(239,239,237,.96) 100%);
  }
}

@media (max-width: 1100px) {
  .lecturer-card.offset { transform: none; }
  .large-number { right: 10px; }
}

/* Keep the research-card visual treatment intentional and consistent. */
.about-card-visual {
  position: relative;
  align-self: center;
  min-width: 0;
  overflow: hidden;
}
.about-card-visual img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}
.about-card-visual span {
  position: absolute;
  left: 14px;
  bottom: 14px;
  display: inline-block;
  padding: 7px 10px;
  border: 1px solid var(--ink);
  background: var(--yellow);
  color: var(--ink);
  font: 800 10px/1.2 Inter, "Noto Sans JP", sans-serif;
  letter-spacing: .08em;
}

.method-marker {
  margin-top: 34px;
  color: #6d6d6d;
  font: 800 12px/1 Inter, "Noto Sans JP", sans-serif;
  letter-spacing: .06em;
}
.method-marker span {
  display: inline-block;
  padding-top: 7px;
  border-top: 2px solid var(--ink);
}

/* Hero hierarchy: keep the action phrase prominent and make the explanatory line quieter. */
.hero-description-block p:nth-child(2) {
  margin-top: 4px;
  font-size: clamp(12px, 1.05vw, 16px);
  line-height: 1.8;
  font-weight: 700;
  letter-spacing: .015em;
}

@media (max-width: 900px) {
  .hero-description-block p:nth-child(2) {
    margin-top: 3px;
    font-size: 11px;
    line-height: 1.75;
  }
}


/* clearer hero wordmark */
.hero-word-wrap {
  color: var(--navy);
}
.hero-word-top {
  letter-spacing: .22em;
  font-size: clamp(24px, 2.2vw, 38px);
  margin-bottom: 2px;
}
.hero-word-bottom {
  font-size: clamp(92px, 13vw, 180px);
  line-height: .88;
  letter-spacing: .03em;
}
.hero-word-bottom-2 {
  margin-top: -0.06em;
}
@media (max-width: 900px) {
  .hero-word-top {
    font-size: 16px;
    letter-spacing: .16em;
    margin-bottom: 4px;
  }
  .hero-word-bottom {
    font-size: clamp(52px, 14vw, 76px);
    line-height: .9;
  }
  .hero-word-bottom-2 {
    margin-top: -0.1em;
  }
}

/* Final production QA: fixed-header anchors, reduced motion, placeholder legal links. */
section[id] { scroll-margin-top: 110px; }
a[aria-disabled="true"] { cursor: default; opacity: .62; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .reveal { opacity: 1 !important; transform: none !important; }
}

/* Hero updated to match isometric illustration direction */
.hero.hero-illustrated-landing {
  min-height: calc(100svh - 88px);
  padding: clamp(48px, 6vw, 88px) clamp(24px, 4vw, 48px) clamp(36px, 5vw, 64px);
  background: #f5efdf;
  display: block;
}
.hero.hero-illustrated-landing .hero-layout {
  max-width: 1360px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(340px, 1fr) minmax(420px, 640px);
  align-items: center;
  gap: clamp(24px, 5vw, 72px);
}
.hero.hero-illustrated-landing .hero-copy-block {
  padding-left: clamp(6px, 1vw, 18px);
}
.hero.hero-illustrated-landing .hero-kicker {
  margin: 0 0 18px;
  font: 800 clamp(12px, 1vw, 15px)/1.4 Inter, sans-serif;
  letter-spacing: .16em;
  color: var(--navy);
}
.hero.hero-illustrated-landing .hero-main-title {
  margin: 0;
  font-size: clamp(40px, 5.4vw, 78px);
  line-height: 1.15;
  letter-spacing: -.03em;
  color: var(--ink);
}
.hero.hero-illustrated-landing .hero-sublead {
  margin: 26px 0 0;
  font-size: clamp(22px, 2vw, 32px);
  line-height: 1.5;
  font-weight: 800;
  color: var(--navy);
}
.hero.hero-illustrated-landing .hero-description {
  margin: 14px 0 0;
  max-width: 32ch;
  font-size: clamp(16px, 1.25vw, 20px);
  line-height: 1.8;
  font-weight: 700;
  color: var(--ink);
}
.hero.hero-illustrated-landing .hero-meta-soft {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 28px;
}
.hero.hero-illustrated-landing .hero-meta-soft span {
  display: inline-flex;
  align-items: center;
  min-height: 38px;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid rgba(14, 62, 138, .18);
  background: rgba(255,255,255,.66);
  color: var(--navy);
  font: 800 12px/1.2 Inter, sans-serif;
  letter-spacing: .08em;
}
.hero.hero-illustrated-landing .hero-illustration-block {
  position: relative;
  display: flex;
  justify-content: flex-end;
  align-items: center;
}
.hero.hero-illustrated-landing .hero-illustration-block::before {
  content: "";
  position: absolute;
  inset: auto 10% 5% 8%;
  height: 24px;
  background: rgba(0,0,0,.08);
  filter: blur(18px);
  border-radius: 999px;
  z-index: 0;
}
.hero.hero-illustrated-landing .hero-illustration-block img {
  position: relative;
  z-index: 1;
  width: min(100%, 640px);
  height: auto;
  display: block;
}

@media (max-width: 1080px) {
  .hero.hero-illustrated-landing .hero-layout {
    grid-template-columns: 1fr 1fr;
    gap: 24px;
  }
  .hero.hero-illustrated-landing .hero-main-title {
    font-size: clamp(34px, 4.4vw, 58px);
  }
}

@media (max-width: 820px) {
  .hero.hero-illustrated-landing {
    min-height: auto;
    padding-top: 42px;
  }
  .hero.hero-illustrated-landing .hero-layout {
    grid-template-columns: 1fr;
    gap: 18px;
  }
  .hero.hero-illustrated-landing .hero-copy-block {
    order: 2;
    padding-left: 0;
  }
  .hero.hero-illustrated-landing .hero-illustration-block {
    order: 1;
    justify-content: center;
  }
  .hero.hero-illustrated-landing .hero-illustration-block img {
    width: min(100%, 560px);
  }
  .hero.hero-illustrated-landing .hero-main-title {
    font-size: clamp(32px, 8.8vw, 52px);
  }
  .hero.hero-illustrated-landing .hero-sublead {
    font-size: clamp(18px, 5vw, 26px);
    margin-top: 18px;
  }
  .hero.hero-illustrated-landing .hero-description {
    font-size: 15px;
    line-height: 1.75;
    max-width: none;
  }
  .hero.hero-illustrated-landing .hero-meta-soft {
    gap: 8px;
  }
  .hero.hero-illustrated-landing .hero-meta-soft span {
    font-size: 11px;
    min-height: 34px;
    padding: 7px 11px;
  }
}

@media (max-width: 480px) {
  .hero.hero-illustrated-landing {
    padding-inline: 18px;
    padding-bottom: 28px;
    background: #f7f1e2;
  }
  .hero.hero-illustrated-landing .hero-kicker {
    margin-bottom: 12px;
    font-size: 11px;
    letter-spacing: .14em;
  }
  .hero.hero-illustrated-landing .hero-main-title {
    font-size: 30px;
    line-height: 1.2;
  }
  .hero.hero-illustrated-landing .hero-sublead {
    font-size: 17px;
    line-height: 1.6;
  }
}

/* Final simple hero: aligned with the existing site language */
.hero.hero-simple {
  min-height: 100svh;
  padding: 150px 0 90px;
  display: block;
  background: var(--paper);
}
.hero-simple-inner {
  width: min(var(--max), calc(100% - (var(--side) * 2)));
  margin-inline: auto;
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(420px, 1.1fr);
  gap: clamp(48px, 7vw, 110px);
  align-items: center;
}
.hero-simple-copy {
  max-width: 620px;
}
.hero-simple-kicker {
  margin: 0 0 24px;
  font: 800 12px/1.3 Inter, sans-serif;
  letter-spacing: .18em;
  color: var(--navy);
}
.hero-simple h1 {
  margin: 0;
  font-size: clamp(42px, 5vw, 76px);
  line-height: 1.22;
  letter-spacing: -.035em;
  color: var(--ink);
}
.hero-simple-lead {
  margin: 34px 0 0;
  max-width: 38em;
  font-size: clamp(16px, 1.3vw, 19px);
  line-height: 1.9;
  font-weight: 600;
}
.hero-simple-info {
  margin: 30px 0 0;
  padding-top: 18px;
  border-top: 1px solid rgba(17,17,17,.3);
  font-size: 13px;
  line-height: 1.7;
  font-weight: 800;
  color: var(--navy);
}
.hero-simple-visual {
  margin: 0;
  align-self: center;
}
.hero-simple-visual img {
  width: 100%;
  height: auto;
  object-fit: contain;
}

@media (max-width: 980px) {
  .hero.hero-simple {
    min-height: auto;
    padding-top: 130px;
    padding-bottom: 80px;
  }
  .hero-simple-inner {
    grid-template-columns: 1fr;
    gap: 42px;
  }
  .hero-simple-copy {
    max-width: 760px;
  }
  .hero-simple-visual {
    width: min(760px, 100%);
    margin-inline: auto;
  }
}

@media (max-width: 640px) {
  .hero.hero-simple {
    padding-top: 118px;
    padding-bottom: 64px;
  }
  .hero-simple-inner {
    width: min(100% - 36px, var(--max));
    gap: 28px;
  }
  .hero-simple-kicker {
    margin-bottom: 16px;
    font-size: 10px;
    letter-spacing: .14em;
  }
  .hero-simple h1 {
    font-size: clamp(32px, 9.4vw, 44px);
    line-height: 1.25;
  }
  .hero-simple-lead {
    margin-top: 22px;
    font-size: 15px;
    line-height: 1.85;
  }
  .hero-simple-lead br {
    display: none;
  }
  .hero-simple-info {
    margin-top: 22px;
    padding-top: 14px;
    font-size: 12px;
  }
}

/* Hero balance refinement — layout only, no design change */
@media (min-width: 981px) {
  .hero.hero-simple {
    min-height: 92svh;
    padding-top: 132px;
    padding-bottom: 64px;
  }
  .hero-simple-inner {
    grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
    gap: clamp(44px, 5vw, 72px);
    align-items: center;
  }
  .hero-simple-copy {
    max-width: 650px;
    transform: translateY(-4px);
  }
  .hero-simple-kicker {
    margin-bottom: 22px;
  }
  .hero-simple h1 {
    font-size: clamp(44px, 4.25vw, 62px);
    line-height: 1.2;
    letter-spacing: -.03em;
    white-space: nowrap;
  }
  .hero-simple-lead {
    margin-top: 28px;
    max-width: 41em;
    font-size: clamp(15px, 1.15vw, 17px);
    line-height: 1.82;
    font-weight: 650;
  }
  .hero-simple-info {
    margin-top: 24px;
    padding-top: 15px;
    font-size: 12px;
  }
  .hero-simple-visual {
    width: 106%;
    margin-left: -3%;
  }
  .hero-simple-visual img {
    width: 100%;
  }
}

@media (min-width: 1320px) {
  .hero-simple h1 {
    font-size: 60px;
  }
  .hero-simple-visual {
    width: 110%;
    margin-left: -5%;
  }
}


/* Hero integration refinement */
.hero.hero-simple {
  position: relative;
  overflow: hidden;
  background: #f7f1e2;
}
.hero-simple-inner {
  position: relative;
}
.hero-simple-copy {
  position: relative;
  z-index: 2;
}
.hero-simple-visual {
  position: relative;
  z-index: 1;
}
.hero-simple-visual img {
  display: block;
}

@media (min-width: 981px) {
  .hero.hero-simple {
    padding-top: 124px;
    padding-bottom: 56px;
  }
  .hero-simple-inner {
    grid-template-columns: minmax(0, .86fr) minmax(0, 1.14fr);
    gap: clamp(36px, 4.5vw, 64px);
    align-items: center;
  }
  .hero-simple-copy {
    max-width: 600px;
  }
  .hero-simple-visual {
    width: 118%;
    margin-left: -10%;
    margin-right: -4%;
  }
}

@media (min-width: 1320px) {
  .hero-simple-visual {
    width: 122%;
    margin-left: -12%;
    margin-right: -6%;
  }
}

@media (max-width: 980px) {
  .hero.hero-simple {
    background: #f7f1e2;
    padding-top: 118px;
    padding-bottom: 56px;
  }
  .hero-simple-inner {
    gap: 22px;
  }
  .hero-simple-visual {
    width: min(100%, 700px);
  }
}

/* Program section refinement: cleaner text, fuller images, no overlaps */
.program .section-heading p:last-child {
  max-width: 24ch;
}
.program-list {
  gap: 96px;
}
.program-item,
.program-item.reverse {
  grid-template-columns: minmax(0, 1.32fr) minmax(340px, 0.68fr);
  gap: clamp(28px, 4.5vw, 72px);
  align-items: stretch;
}
.program-image {
  min-height: 560px;
  background: transparent;
}
.program-image::after {
  display: none;
}
.program-image.photo img {
  width: 100%;
  height: 100%;
  min-height: 560px;
  object-fit: cover;
}
.program-copy {
  position: relative;
  padding-top: 18px;
  padding-right: clamp(74px, 8vw, 118px);
  align-self: center;
}
.program-number {
  right: 0;
  top: -4px;
  font: 900 clamp(72px, 8vw, 144px)/0.92 Inter,sans-serif;
  color: transparent;
  -webkit-text-stroke: 2px rgba(17,17,17,.76);
  text-shadow: none;
  opacity: .55;
  pointer-events: none;
  z-index: 0;
}
.program-label,
.program-copy h3,
.program-copy > p,
.program-copy ul {
  position: relative;
  z-index: 1;
}
.program-label {
  margin: 0 0 12px;
}
.program-copy h3 {
  margin: 0 0 18px;
  max-width: 9ch;
  font-size: clamp(26px, 2.6vw, 44px);
  line-height: 1.26;
}
.program-copy > p {
  max-width: 28ch;
  margin: 0;
  font-size: 16px;
  line-height: 1.85;
  font-weight: 500;
}
.program-copy ul {
  gap: 8px;
  margin-top: 22px;
}
.program-copy li {
  padding: 6px 11px;
  font-size: 12px;
}

@media (max-width: 1100px) {
  .program-item,
  .program-item.reverse {
    grid-template-columns: minmax(0, 1.12fr) minmax(300px, 0.88fr);
    gap: 28px;
  }
  .program-image,
  .program-image.photo img {
    min-height: 480px;
  }
  .program-copy {
    padding-right: 80px;
  }
  .program-number {
    font-size: clamp(66px, 7vw, 108px);
  }
}

@media (max-width: 820px) {
  .program-list {
    gap: 72px;
  }
  .program-item,
  .program-item.reverse {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .program-image,
  .program-image.photo img {
    min-height: 320px;
    height: 320px;
  }
  .program-copy {
    padding-top: 0;
    padding-right: 0;
  }
  .program-number {
    top: -34px;
    right: 0;
    font-size: 88px;
    opacity: .38;
  }
  .program-copy h3,
  .program-copy > p {
    max-width: none;
  }
}

@media (max-width: 640px) {
  .program .section-heading p:last-child {
    max-width: none;
  }
  .program-image,
  .program-image.photo img {
    min-height: 280px;
    height: 280px;
  }
  .program-number {
    top: -24px;
    font-size: 72px;
    -webkit-text-stroke: 1.5px rgba(17,17,17,.66);
  }
  .program-copy h3 {
    font-size: 34px;
    line-height: 1.22;
  }
  .program-copy > p {
    font-size: 15px;
    line-height: 1.8;
  }
}

/* Mobile hero redesign: full-screen background with overlaid copy */
@media (max-width: 820px) {
  .hero.hero-simple {
    min-height: 100svh;
    padding: 0;
    background: #f7f1e2;
  }
  .hero.hero-simple::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(17,17,17,.08) 0%, rgba(17,17,17,.02) 22%, rgba(17,17,17,.18) 48%, rgba(17,17,17,.58) 100%);
    z-index: 1;
    pointer-events: none;
  }
  .hero-simple-inner {
    width: 100%;
    min-height: 100svh;
    display: block;
  }
  .hero-simple-visual {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    z-index: 0;
  }
  .hero-simple-visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 62% center;
  }
  .hero-simple-copy {
    max-width: none;
    min-height: 100svh;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 116px 24px 42px;
    color: #fff;
    z-index: 2;
  }
  .hero-simple-kicker,
  .hero-simple h1,
  .hero-simple-lead,
  .hero-simple-info {
    color: #fff;
  }
  .hero-simple-kicker {
    margin: 0 0 14px;
    font-size: 11px;
    letter-spacing: .16em;
    opacity: .95;
  }
  .hero-simple h1 {
    font-size: clamp(34px, 9.2vw, 52px);
    line-height: 1.18;
    letter-spacing: -.02em;
    white-space: normal;
    text-wrap: balance;
    max-width: 9ch;
  }
  .hero-simple-lead {
    margin-top: 18px;
    max-width: 24em;
    font-size: 15px;
    line-height: 1.75;
    font-weight: 600;
    text-shadow: 0 1px 1px rgba(0,0,0,.18);
  }
  .hero-simple-info {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid rgba(255,255,255,.35);
    font-size: 12px;
    line-height: 1.8;
    opacity: .95;
  }
}

@media (max-width: 480px) {
  .hero-simple-copy {
    padding: 108px 20px 34px;
  }
  .hero-simple h1 {
    font-size: clamp(32px, 10vw, 42px);
    max-width: 8ch;
  }
  .hero-simple-lead {
    font-size: 14px;
    line-height: 1.72;
  }
  .hero-simple-info {
    font-size: 11px;
  }
}

/* Desktop hero redesign: match mobile full-bleed overlay style */
@media (min-width: 821px) {
  .hero.hero-simple {
    position: relative;
    min-height: 100svh;
    padding: 0;
    overflow: hidden;
    background: #f7f1e2;
  }
  .hero.hero-simple::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg,
      rgba(17,17,17,.62) 0%,
      rgba(17,17,17,.52) 22%,
      rgba(17,17,17,.24) 48%,
      rgba(17,17,17,.10) 72%,
      rgba(17,17,17,.06) 100%);
    z-index: 1;
    pointer-events: none;
  }
  .hero-simple-inner {
    width: 100%;
    min-height: 100svh;
    display: block;
  }
  .hero-simple-visual {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    z-index: 0;
  }
  .hero-simple-visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    display: block;
  }
  .hero-simple-copy {
    position: relative;
    z-index: 2;
    min-height: 100svh;
    max-width: min(720px, calc(100% - 180px));
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 158px 80px 72px;
    color: #fff;
    transform: none;
  }
  .hero-simple-kicker,
  .hero-simple h1,
  .hero-simple-lead,
  .hero-simple-info {
    color: #fff;
  }
  .hero-simple-kicker {
    margin: 0 0 20px;
    font-size: 13px;
    letter-spacing: .18em;
    opacity: .96;
  }
  .hero-simple h1 {
    font-size: clamp(52px, 5.2vw, 84px);
    line-height: 1.12;
    letter-spacing: -.03em;
    white-space: normal;
    text-wrap: balance;
    max-width: 8.2ch;
  }
  .hero-simple-lead {
    margin-top: 22px;
    max-width: 30em;
    font-size: clamp(17px, 1.35vw, 21px);
    line-height: 1.82;
    font-weight: 600;
  }
  .hero-simple-info {
    margin-top: 22px;
    padding-top: 16px;
    border-top: 1px solid rgba(255,255,255,.36);
    font-size: 13px;
    line-height: 1.8;
    opacity: .96;
  }
}

@media (min-width: 1440px) {
  .hero-simple-copy {
    padding-left: 96px;
    padding-bottom: 80px;
  }
}

/* Loading screen */
body.is-loading { overflow: hidden; }
.page-loader {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: grid;
  place-items: center;
  background: var(--paper);
  opacity: 1;
  visibility: visible;
  transition: opacity .45s ease, visibility .45s ease;
}
.page-loader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.page-loader-inner {
  width: min(280px, calc(100vw - 64px));
  text-align: center;
}
.page-loader-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  color: var(--navy);
  font-family: Inter, "Noto Sans JP", sans-serif;
  line-height: 1;
}
.page-loader-brand span {
  font-size: 13px;
  font-weight: 900;
  letter-spacing: .2em;
}
.page-loader-brand strong {
  margin-top: 3px;
  font-size: 28px;
  font-weight: 900;
  letter-spacing: .045em;
}
.page-loader-brand small {
  margin-top: 12px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .08em;
}
.page-loader-line {
  position: relative;
  height: 2px;
  margin-top: 28px;
  overflow: hidden;
  background: rgba(8,47,114,.14);
}
.page-loader-line i {
  position: absolute;
  inset: 0 auto 0 0;
  width: 42%;
  background: var(--yellow);
  animation: loaderLine 1.05s ease-in-out infinite;
}
@keyframes loaderLine {
  0% { transform: translateX(-110%); }
  55% { transform: translateX(120%); }
  100% { transform: translateX(260%); }
}

/* Hero final scale refinement: keep overlay style, reduce image zoom and type size */
@media (min-width: 821px) {
  .hero-simple-visual {
    background: #f7f1e2;
  }
  .hero-simple-visual img {
    transform: scale(.90);
    transform-origin: 61% center;
  }
  .hero-simple-copy {
    max-width: min(640px, calc(100% - 180px));
    padding: 150px 72px 64px;
  }
  .hero-simple-kicker {
    margin-bottom: 16px;
    font-size: 11px;
  }
  .hero-simple h1 {
    font-size: clamp(44px, 4.35vw, 68px);
    line-height: 1.14;
    max-width: 8.4ch;
  }
  .hero-simple-lead {
    margin-top: 18px;
    max-width: 29em;
    font-size: clamp(15px, 1.15vw, 18px);
    line-height: 1.78;
  }
  .hero-simple-info {
    margin-top: 18px;
    padding-top: 13px;
    font-size: 11px;
  }
}

@media (max-width: 820px) {
  .hero-simple-visual {
    background: #f7f1e2;
  }
  .hero-simple-visual img {
    transform: scale(.91);
    transform-origin: 62% 42%;
  }
  .hero-simple-copy {
    padding: 110px 22px 38px;
  }
  .hero-simple-kicker {
    font-size: 9px;
    margin-bottom: 11px;
  }
  .hero-simple h1 {
    font-size: clamp(28px, 8.2vw, 40px);
    line-height: 1.2;
    max-width: 9ch;
  }
  .hero-simple-lead {
    margin-top: 14px;
    font-size: 13px;
    line-height: 1.7;
    max-width: 24em;
  }
  .hero-simple-info {
    margin-top: 14px;
    padding-top: 11px;
    font-size: 10px;
  }
}

@media (max-width: 480px) {
  .hero-simple-copy {
    padding: 104px 18px 30px;
  }
  .hero-simple h1 {
    font-size: clamp(28px, 8.8vw, 36px);
  }
  .hero-simple-lead { font-size: 12.5px; }
}

@media (prefers-reduced-motion: reduce) {
  .page-loader-line i { animation: none; width: 100%; }
}


/* Desktop hero title: lock the headline to exactly two lines */
.hero-simple h1 span { display: block; }
@media (min-width: 821px) {
  .hero-simple h1 {
    max-width: none;
    width: max-content;
  }
  .hero-simple h1 span {
    white-space: nowrap;
  }
}

/* Hero background slightly reduced on both desktop and mobile */
@media (min-width: 821px) {
  .hero-simple-visual img {
    transform: scale(.84);
    transform-origin: 60% center;
  }
}

@media (max-width: 820px) {
  .hero-simple-visual img {
    transform: scale(.87);
    transform-origin: 62% 40%;
  }
}
