.haneda-page { background:#fff; color:var(--text-primary); }
.haneda-page .shell { width:min(1180px,calc(100% - 40px)); margin-inline:auto; }
.haneda-content-hero { padding:72px 0 64px; background:linear-gradient(180deg,#fff 0%,#f5faf9 100%); }
.haneda-content-hero .hero-copy { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(320px,.75fr); gap:64px; align-items:end; }
.haneda-content-hero h1 { margin:10px 0 0; max-width:760px; font-size:clamp(48px,5.4vw,76px); line-height:.98; letter-spacing:-.055em; }
.haneda-content-hero .hero-summary { padding-bottom:4px; }
.haneda-content-hero .lede { margin:0 0 18px; font-size:20px; line-height:1.58; color:var(--text-secondary); }
.hero-boundary { margin:0 0 24px; padding-left:14px; border-left:3px solid #14b8a6; color:#40556b; line-height:1.6; }
.haneda-content-hero .hero-media { width:min(1180px,calc(100% - 40px)); height:500px; margin:48px auto 0; overflow:hidden; border-radius:24px; }
.haneda-content-hero .hero-media img { width:100%; height:100%; object-fit:cover; object-position:50% 50%; display:block; }

.haneda-tool-section { padding:88px 0; background:#fff; }
.haneda-tool-layout { display:grid; grid-template-columns:minmax(250px,.68fr) minmax(0,1.32fr); gap:72px; align-items:start; }
.haneda-tool-intro { position:sticky; top:96px; }
.haneda-tool-intro h2,.checks-layout h2,.faq-section h2,.result-shell h2 { margin:8px 0 16px; font-size:clamp(34px,4vw,52px); line-height:1.05; letter-spacing:-.04em; }
.haneda-tool-intro>p:last-child { color:var(--text-secondary); font-size:17px; line-height:1.65; }
.haneda-form { border-top:1px solid #bdd9d6; }
.field-block,.choice-fieldset { display:block; margin:0; padding:28px 0; border:0; border-bottom:1px solid #c8dcd9; }
.field-block>span,.choice-fieldset legend { margin-bottom:14px; font-size:16px; font-weight:750; color:#10243f; }
.field-block select { width:100%; min-height:52px; padding:0 44px 0 14px; border:1px solid #9ebfbb; border-radius:8px; background:#fff; color:#10243f; font:inherit; }
.stepper { display:grid; grid-template-columns:48px 72px 48px; width:max-content; align-items:center; border:1px solid #9ebfbb; border-radius:999px; overflow:hidden; }
.stepper button { width:48px; height:46px; border:0; background:#f2f8f7; color:#006d66; font-size:24px; cursor:pointer; }
.stepper output { text-align:center; font-weight:750; }
.choice-list { display:grid; gap:0; border-top:1px solid #d7e5e3; }
.choice-list label { display:grid; grid-template-columns:22px 1fr; gap:12px; align-items:start; padding:16px 4px; border-bottom:1px solid #d7e5e3; cursor:pointer; }
.choice-list input { margin:4px 0 0; accent-color:#008d83; width:18px; height:18px; }
.choice-list strong,.choice-list small { display:block; }
.choice-list strong { font-size:16px; color:#10243f; }
.choice-list small { margin-top:4px; font-size:14px; line-height:1.5; color:#52677c; }
.choice-list label:has(input:checked) { background:#eef9f7; }
.form-error { margin:20px 0 0; color:#a13a32; font-weight:650; }
.haneda-submit { margin-top:26px; width:100%; min-height:54px; }

.haneda-result-section { padding:80px 0; background:#edf8f6; scroll-margin-top:72px; }
.result-shell { outline:none; }
.result-summary { max-width:800px; margin:0 0 32px; font-size:18px; line-height:1.65; color:#40556b; }
.haneda-paths { border-top:1px solid #a9cfca; }
.haneda-path { display:grid; grid-template-columns:minmax(230px,.64fr) minmax(0,1.36fr); gap:42px; padding:30px 0; border-bottom:1px solid #a9cfca; }
.path-heading h3 { margin:0 0 9px; font-size:24px; letter-spacing:-.02em; }
.path-heading span { display:inline-block; color:#007d74; font-size:13px; font-weight:750; text-transform:uppercase; letter-spacing:.06em; }
.haneda-path>p { margin:0; color:#40556b; line-height:1.62; }
.haneda-path ul { grid-column:2; margin:-22px 0 0; padding-left:20px; color:#40556b; line-height:1.55; }
.haneda-path li+li { margin-top:7px; }
.result-actions { display:flex; align-items:center; gap:22px; flex-wrap:wrap; margin-top:32px; }
.text-button { border:0; background:transparent; color:#007d74; font:inherit; font-weight:700; text-decoration:underline; cursor:pointer; }

.haneda-checks-section { padding:88px 0; background:#fff; }
.checks-layout { display:grid; grid-template-columns:minmax(260px,.72fr) minmax(0,1.28fr); gap:72px; }
.check-rows { border-top:1px solid #c8dcd9; }
.check-rows>div { padding:25px 0; border-bottom:1px solid #c8dcd9; }
.check-rows h3 { margin:0 0 8px; font-size:21px; }
.check-rows p { margin:0 0 10px; color:#52677c; line-height:1.6; }
.check-rows a { color:#007d74; font-weight:700; }
.source-note { grid-column:2; margin:0; color:#6a7b8e; font-size:14px; line-height:1.55; }
.haneda-page .faq-section { padding-top:74px; padding-bottom:84px; }

@media (min-width:761px) {
  .haneda-tool-layout,.result-shell,.checks-layout,.haneda-page .faq-section { padding-right:190px; box-sizing:border-box; }
}

@media (max-width:760px) {
  .haneda-page .shell { width:min(100% - 30px,620px); }
  .haneda-content-hero { padding:44px 0 48px; }
  .haneda-content-hero .hero-copy,.haneda-tool-layout,.checks-layout { grid-template-columns:1fr; gap:28px; }
  .haneda-content-hero h1 { font-size:clamp(42px,11.7vw,54px); }
  .haneda-content-hero .lede { font-size:18px; }
  .haneda-content-hero .hero-media { width:calc(100% - 30px); height:280px; margin-top:34px; border-radius:16px; }
  .haneda-content-hero .hero-media img { object-position:50% 50%; }
  .haneda-tool-section,.haneda-result-section,.haneda-checks-section { padding:62px 0; }
  .haneda-tool-intro { position:static; }
  .haneda-tool-intro h2,.checks-layout h2,.faq-section h2,.result-shell h2 { font-size:34px; }
  .field-block,.choice-fieldset { padding:24px 0; }
  .haneda-path { grid-template-columns:1fr; gap:12px; padding-right:72px; }
  .haneda-path ul { grid-column:1; margin:0; }
  .result-summary,.result-actions { padding-right:72px; }
  .haneda-form,.check-rows,.faq-section [data-accordion],.source-note { padding-right:72px; box-sizing:border-box; }
  .result-actions .primary { width:100%; }
  .source-note { grid-column:1; }
  .haneda-page .faq-section { padding-top:58px; padding-bottom:72px; }
}
