:root {
  --gs-navy: #071a3c;
  --gs-deep: #092554;
  --gs-blue: #0b50d8;
  --gs-cyan: #28d7e5;
  --gs-lime: #d8ff45;
  --gs-pink: #ff4fc3;
  --gs-paper: #f7f9fc;
  --gs-ink: #101828;
  --gs-muted: #607089;
  --gs-line: #d7e0ed;
  --gs-serif: "Noto Serif JP", serif;
  --gs-sans: "Noto Sans JP", sans-serif;
  --gs-max: 1280px;
  --gs-gutter: clamp(20px, 4vw, 56px);
}

body { overflow-x: hidden; }
.gs-eyebrow { margin: 0 0 16px; color: var(--gs-blue); font: 700 .68rem/1.4 var(--gs-sans); letter-spacing: .17em; }
.gs-label { display: inline-flex; margin: 0 0 23px; padding: 7px 11px; background: var(--gs-lime); color: var(--gs-navy); font-size: .72rem; font-weight: 700; letter-spacing: .08em; }
.gs-section-head { max-width: 720px; }
.gs-section-head h2, .gs-thesis h2, .gs-faq h2, .gs-cta h2 { margin: 0; font: 600 clamp(2rem, 3.5vw, 3.2rem)/1.5 var(--gs-serif); letter-spacing: .02em; text-wrap: balance; }
.gs-section-head > p:last-child { margin: 22px 0 0; max-width: 650px; color: var(--gs-muted); font-size: .92rem; line-height: 2; }
.gs-section-head--light h2, .gs-section-head--light > p:last-child { color: #fff; }
.gs-section-head--light > p:last-child { color: #d7e5ff; }
.gs-button { display: inline-flex; align-items: center; justify-content: space-between; gap: 28px; min-height: 52px; padding: 14px 19px; font-size: .8rem; font-weight: 700; transition: transform .2s, background .2s, box-shadow .2s; }
.gs-button:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(4, 19, 49, .2); }
.gs-button--primary { color: #fff; background: var(--gs-blue); }
.gs-button--light { color: var(--gs-navy); background: #fff; }
.gs-text-link { display: inline-flex; align-items: center; min-height: 48px; color: #b9d1ff; font-size: .78rem; font-weight: 700; }

.gs-hero { max-width: var(--gs-max); min-height: 670px; margin: auto; padding: 76px var(--gs-gutter) 84px; display: grid; grid-template-columns: minmax(0, 1.02fr) minmax(430px, .98fr); gap: clamp(45px, 7vw, 90px); align-items: center; background: linear-gradient(110deg, #fff 0 48%, #eef4ff 48%); }
.gs-hero__copy { min-width: 0; }
.gs-hero h1 { margin: 0; color: var(--gs-navy); font: 600 clamp(2.8rem, 5.2vw, 4.8rem)/1.35 var(--gs-serif); letter-spacing: .035em; text-wrap: balance; }
.gs-hero h1 em { position: relative; z-index: 0; color: inherit; font-style: normal; }
.gs-hero h1 em::after { content: "" / ""; position: absolute; z-index: -1; left: -.08em; right: -.08em; bottom: .04em; height: .24em; background: var(--gs-lime); transform: rotate(-1deg); }
.gs-hero__lead { max-width: 670px; margin: 27px 0 30px; color: #34445d; font-size: .98rem; line-height: 2.1; text-wrap: pretty; }
.gs-actions { display: flex; align-items: center; gap: 25px; flex-wrap: wrap; }
.gs-caution { margin: 17px 0 0; color: var(--gs-muted); font-size: .7rem; }
.gs-hero__map { margin: 0; color: #fff; background: var(--gs-navy); border: 1px solid #1e3d70; box-shadow: 22px 22px 0 #dce8ff; }
.gs-window__bar { min-height: 46px; padding: 0 15px; display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; color: #afc7ea; background: #04132c; border-bottom: 1px solid #294572; font-size: .58rem; letter-spacing: .08em; }
.gs-window__bar > span { display: flex; gap: 5px; }
.gs-window__bar i { width: 7px; aspect-ratio: 1; display: block; border-radius: 50%; background: #55739d; }
.gs-window__bar i:nth-child(1) { background: var(--gs-pink); }.gs-window__bar i:nth-child(2) { background: var(--gs-lime); }.gs-window__bar i:nth-child(3) { background: var(--gs-cyan); }
.gs-window__bar small { color: var(--gs-lime); }
.gs-hero__map ol { list-style: none; margin: 0; padding: 28px; display: grid; gap: 11px; counter-reset: step; }
.gs-hero__map li { min-height: 83px; padding: 15px 18px; display: grid; grid-template-columns: 42px 1fr; grid-template-rows: auto auto; column-gap: 10px; align-items: center; border: 1px solid #34517d; background: #0c2855; }
.gs-hero__map li small { grid-row: 1 / 3; color: var(--gs-cyan); font-weight: 700; }
.gs-hero__map li strong { font: 600 1.15rem var(--gs-serif); }
.gs-hero__map li span { color: #b8c9e2; font-size: .7rem; }
.gs-hero__map li:nth-child(3) { border-color: var(--gs-pink); box-shadow: inset 4px 0 var(--gs-pink); }
.gs-hero__map li:nth-child(4) { border-color: var(--gs-lime); box-shadow: inset 4px 0 var(--gs-lime); }
.gs-hero__map figcaption { padding: 21px 28px 25px; display: flex; align-items: center; justify-content: space-between; gap: 20px; color: var(--gs-navy); background: var(--gs-lime); }
.gs-hero__map figcaption small { font-weight: 800; letter-spacing: .14em; }.gs-hero__map figcaption strong { font: 600 1rem var(--gs-serif); }

.gs-thesis { padding: 90px max(var(--gs-gutter), calc((100vw - var(--gs-max)) / 2 + var(--gs-gutter))); display: grid; grid-template-columns: 1fr .9fr; gap: clamp(50px, 8vw, 105px); color: #fff; background: var(--gs-navy); }
.gs-thesis .gs-eyebrow { color: var(--gs-cyan); }.gs-thesis__copy { align-self: end; }
.gs-thesis__copy > p { margin: 0 0 24px; color: #d7e5ff; font-size: .92rem; line-height: 2.1; }
.gs-thesis .gs-marker { display: inline; color: var(--gs-navy); font-weight: 700; background: linear-gradient(transparent 10%, var(--gs-lime) 10% 94%, transparent 94%); box-decoration-break: clone; -webkit-box-decoration-break: clone; }

.gs-signals, .gs-compare, .gs-fit, .gs-flow, .gs-faq { max-width: var(--gs-max); margin: auto; padding: 100px var(--gs-gutter); }
.gs-signals ul { list-style: none; margin: 55px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--gs-line); border-left: 1px solid var(--gs-line); }
.gs-signals li { min-height: 170px; padding: 25px; display: flex; flex-direction: column; justify-content: space-between; border-right: 1px solid var(--gs-line); border-bottom: 1px solid var(--gs-line); }
.gs-signals li span { color: var(--gs-blue); font: 700 .72rem var(--gs-serif); }.gs-signals li strong { font: 600 1rem/1.8 var(--gs-serif); }

.gs-about { padding: 105px max(var(--gs-gutter), calc((100vw - var(--gs-max)) / 2 + var(--gs-gutter))); color: #fff; background: linear-gradient(145deg, var(--gs-deep), #061630 70%); }
.gs-filter { margin-top: 60px; display: grid; grid-template-columns: 1fr 210px 1fr; gap: 35px; align-items: stretch; }
.gs-filter__source, .gs-filter__result { padding: 30px; border: 1px solid #38527d; background: rgba(255, 255, 255, .035); }
.gs-filter p { margin: 0 0 18px; color: #8eacd5; font-size: .68rem; font-weight: 700; letter-spacing: .12em; }
.gs-filter ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.gs-filter li { padding: 11px 12px; color: #dce8fa; background: #102e5e; font-size: .72rem; }
.gs-filter__core { padding: 25px 18px; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; color: var(--gs-navy); background: var(--gs-cyan); clip-path: polygon(0 13%, 82% 13%, 82% 0, 100% 50%, 82% 100%, 82% 87%, 0 87%, 10% 50%); }
.gs-filter__core small { font-size: .62rem; font-weight: 800; letter-spacing: .14em; }.gs-filter__core strong { margin: 12px 0; font: 700 1.25rem/1.5 var(--gs-serif); }.gs-filter__core span { font-size: .61rem; font-weight: 700; }
.gs-evidence { margin-top: 52px; padding-top: 30px; display: grid; grid-template-columns: 1fr auto; gap: 35px; align-items: start; border-top: 1px solid #38527d; }
.gs-evidence p { margin: 0; color: #bdcde5; font-size: .76rem; line-height: 2; }.gs-evidence p strong { color: #fff; }
.gs-evidence div { display: flex; gap: 10px; flex-wrap: wrap; }.gs-evidence a { min-height: 44px; padding: 10px 13px; display: inline-flex; align-items: center; gap: 8px; border: 1px solid #55739e; color: #d9e8ff; font-size: .68rem; }

.gs-compare__grid { margin-top: 55px; display: grid; grid-template-columns: 1fr 1fr; gap: 25px; }
.gs-compare__grid article { padding: 26px; background: #eef2f7; border-top: 5px solid #8795a9; }
.gs-compare__grid article > p { margin: 0 0 20px; color: #657287; font-size: .75rem; font-weight: 700; }
.gs-compare__grid .is-clear { background: #effaf7; border-color: #16a878; }.gs-compare__grid .is-clear > p { color: #087554; }
.gs-phone { min-height: 340px; padding: 32px; background: #fff; border: 1px solid #ccd5e2; border-radius: 25px; box-shadow: inset 0 9px #fff, inset 0 10px #d7e0ed; }
.gs-phone strong { display: block; min-height: 125px; font: 600 1rem/1.9 var(--gs-serif); }.gs-phone ul { list-style: none; margin: 25px 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.gs-phone li { padding: 10px; background: #f3f5f8; color: #59677b; font-size: .68rem; font-weight: 700; }.is-clear .gs-phone li { color: #075a42; background: #daf5eb; }

.gs-support { padding: 105px max(var(--gs-gutter), calc((100vw - var(--gs-max)) / 2 + var(--gs-gutter))); color: #fff; background: var(--gs-navy); }
.gs-support > ol { list-style: none; margin: 62px 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid #35517d; border-left: 1px solid #35517d; }
.gs-support > ol li { min-height: 190px; padding: 29px; display: grid; grid-template-columns: 50px 1fr; gap: 14px; border-right: 1px solid #35517d; border-bottom: 1px solid #35517d; }
.gs-support > ol li:last-child { grid-column: 1 / -1; min-height: 150px; }
.gs-support li > span { color: var(--gs-cyan); font: 700 .72rem var(--gs-serif); }.gs-support h3 { margin: 0 0 12px; font: 600 1.1rem var(--gs-serif); }.gs-support li p { margin: 0; color: #b9cbe4; font-size: .76rem; line-height: 1.9; }

.gs-fit ul { list-style: none; margin: 55px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.gs-fit li { min-height: 145px; padding: 25px; display: flex; flex-direction: column; justify-content: space-between; background: var(--gs-paper); border: 1px solid var(--gs-line); border-top: 4px solid var(--gs-blue); }
.gs-fit li:nth-child(2), .gs-fit li:nth-child(5) { border-top-color: var(--gs-pink); }.gs-fit li:nth-child(3), .gs-fit li:nth-child(6) { border-top-color: #19b886; }
.gs-fit strong { font: 600 1.15rem var(--gs-serif); }.gs-fit span { color: var(--gs-muted); font-size: .7rem; }

.gs-flow { padding-top: 25px; }
.gs-flow > ol { list-style: none; margin: 55px 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); border-top: 1px solid var(--gs-line); }
.gs-flow li { position: relative; min-width: 0; padding: 28px 25px 20px 0; }
.gs-flow li:not(:last-child)::after { content: "" / ""; position: absolute; top: 42px; right: 16px; width: 14px; height: 14px; border-top: 1px solid #7890b1; border-right: 1px solid #7890b1; transform: rotate(45deg); }
.gs-flow li span { color: var(--gs-blue); font: 700 .72rem var(--gs-serif); }.gs-flow li strong { display: block; margin: 25px 0 9px; font: 600 1rem var(--gs-serif); }.gs-flow li p { margin: 0; max-width: 170px; color: var(--gs-muted); font-size: .7rem; }

.gs-faq { padding-top: 60px; display: grid; grid-template-columns: 280px 1fr; gap: 60px; }
.gs-faq__list { border-top: 1px solid var(--gs-line); }.gs-faq details p { max-width: 760px; }

.gs-cta { padding: 95px max(var(--gs-gutter), calc((100vw - var(--gs-max)) / 2 + var(--gs-gutter))); display: grid; grid-template-columns: 1fr auto; gap: 70px; align-items: end; color: #fff; background: linear-gradient(105deg, #08275b, var(--gs-blue)); }
.gs-cta .gs-eyebrow { color: var(--gs-lime); }.gs-cta p:not(.gs-eyebrow) { max-width: 670px; color: #d7e5ff; font-size: .85rem; }
.gs-cta > div:last-child { display: grid; gap: 10px; min-width: 270px; }.gs-cta > div:last-child > a:last-child { min-height: 44px; display: inline-flex; align-items: center; justify-content: space-between; color: #dbe8ff; font-size: .72rem; font-weight: 700; }

@media (max-width: 1000px) {
  .gs-hero { grid-template-columns: 1fr; background: linear-gradient(#fff 0 58%, #eef4ff 58%); }
  .gs-hero__map { max-width: 660px; }
  .gs-signals ul, .gs-fit ul { grid-template-columns: repeat(2, 1fr); }
  .gs-flow > ol { grid-template-columns: repeat(3, 1fr); }
  .gs-flow li:nth-child(3)::after { display: none; }
  .gs-evidence, .gs-cta { grid-template-columns: 1fr; }
}

@media (max-width: 720px) {
  .gs-hero { min-height: auto; padding-top: 52px; grid-template-columns: minmax(0, 1fr); }
  .gs-hero h1 { font-size: clamp(2.45rem, 12vw, 3.6rem); }
  .gs-hero__lead { font-size: .87rem; }
  .gs-actions { align-items: stretch; flex-direction: column; }
  .gs-button, .gs-text-link { width: 100%; }
  .gs-hero__map { box-shadow: 10px 10px 0 #dce8ff; }
  .gs-window__bar b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gs-thesis { grid-template-columns: 1fr; padding-top: 72px; padding-bottom: 72px; }
  .gs-signals, .gs-compare, .gs-fit, .gs-flow, .gs-faq { padding-top: 76px; padding-bottom: 76px; }
  .gs-signals ul, .gs-fit ul, .gs-compare__grid, .gs-support > ol, .gs-faq { grid-template-columns: 1fr; }
  .gs-signals li { min-height: 135px; }
  .gs-filter { grid-template-columns: 1fr; }
  .gs-filter__core { min-height: 180px; clip-path: polygon(8% 0, 92% 0, 92% 78%, 100% 78%, 50% 100%, 0 78%, 8% 78%); }
  .gs-evidence { gap: 25px; }
  .gs-evidence div { flex-direction: column; }
  .gs-phone { min-height: 0; padding: 25px 20px; }
  .gs-support > ol li:last-child { grid-column: auto; }
  .gs-flow > ol { grid-template-columns: 1fr; }
  .gs-flow li { min-height: 120px; padding-right: 42px; border-bottom: 1px solid var(--gs-line); }
  .gs-flow li:not(:last-child)::after, .gs-flow li:nth-child(3)::after { display: block; top: 50px; right: 12px; transform: rotate(135deg); }
  .gs-faq { gap: 25px; }
  .gs-cta { padding-top: 75px; padding-bottom: 75px; }
  .gs-cta > div:last-child { min-width: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .gs-button { transition: none; }
}
