:root {
  --blue: #2381c0;
  --cyan: #31c5dc;
  --ink: #333;
  --pale: #f4f7f8;
  --line: #dce7ed;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 96px; }
body { margin: 0; color: var(--ink); font-family: 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', Meiryo, sans-serif; font-size: 1.0rem; line-height: 1.85; letter-spacing: .04em; }
h1, h2, h3, p { margin: 0; }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; height: auto; }
button, a, summary { -webkit-tap-highlight-color: transparent; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 3px solid #ffbd37; outline-offset: 5px; }
a:hover { opacity: .8; }
/*h2 { font-family: Arial, sans-serif; color: var(--blue); font-size: 2.75rem; line-height: 1.2; font-weight: 750; letter-spacing: -.025em; }
*/
h2 { font-family: "Josefin Sans", sans-serif; color: var(--blue); font-size: 2.75rem; line-height: 1.2; font-weight: 700; letter-spacing: -.025em; }
h3 { font-size: 1.5625rem; line-height: 1.65; letter-spacing: .06em; }
.wrap { width: min(1200px, calc(100% - 64px)); margin-inline: auto; }
.narrow { max-width: 1000px; }
.pale { background: var(--pale); }
.section { padding: 78px 0; }
.eyebrow { font-size: 1.0rem; margin-top: 15px; font-weight: 700; }
.eyebrow::before { content: ''; display: block; height: 1px; width: 24px; background: currentColor; margin: 0 0 11px; }
.section-heading { text-align: center; margin-bottom: 55px; }
.section-heading > p { font-size: 1.0rem; margin-top: 16px; }
.section-heading > p:first-of-type { font-weight: 700; }
.section-heading > p:first-of-type::before { content: ''; display: block; width: 24px; height: 1px; background: currentColor; margin: 0 auto 12px; }
.section-heading > h3 { margin-top: 30px; font-size: 1.75rem; }
.section-heading > h3 + p { margin-top: 14px; font-size: 1.0rem; font-weight: 400; }
.section-heading strong { color: var(--blue); }
.header { min-height: 96px; display: flex; align-items: center; justify-content: space-between; padding: 20px 5%; gap: 28px; background: #fff; }
.brand { display: inline-block; flex-shrink: 0; }
.brand img { width: 220px; height: auto; }
.header nav { display: flex; align-items: center; gap: 25px; font-size: 0.875rem; white-space: nowrap; }
.button { display: inline-flex; align-items: center; justify-content: center; gap: 24px; min-height: 48px; padding: 10px 30px; border: 1px solid transparent; border-radius: 40px; background: linear-gradient(100deg, #2381c0, #31c5dc); color: white; font-size: 0.875rem; font-weight: 700; letter-spacing: .08em; white-space: nowrap; }
.button.small { min-width: 160px; }
.button.outline { background: white; color: var(--blue); border: 2px solid #238ee0; }
.hero { position: relative; display: grid; grid-template-columns: 1fr 1fr; align-items: center; min-height: 555px; padding: 65px 0 35px; max-width: 1200px; }
.hero-copy { position: relative; z-index: 1; }
.hero h1 { font-size: clamp(34px, 3.35vw, 50px); line-height: 1.55; letter-spacing: .05em; font-weight: 800; }
.hero h1 em { color: var(--blue); font-style: normal; }
.hero-copy > p { margin: 24px 0 35px; line-height: 2.05; font-size: 1.0625rem; letter-spacing: .04em; }
.hero-copy strong { color: var(--blue); }
.actions { display: flex; gap: 16px; flex-wrap: wrap; }
.actions .button { min-width: 200px; }
.hero-image { position: absolute; width: 60%; max-width: none; right: -9%; top: 30px; z-index: 2; pointer-events: none; }
.concerns { padding: 110px 0 95px; }
.japanese-title { text-align: center; font-family: inherit; font-size: 2.0rem; line-height: 1.55; letter-spacing: .06em; }
.center { text-align: center; font-size: 1.0rem; margin-top: 22px; }
.concern-grid { max-width: 780px; margin: 40px auto 45px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px 28px; }
.concern-grid p { position: relative; display: flex; align-items: center; justify-content: center; background: white; padding: 15px 8px 15px 52px; min-height: 92px; border-radius: 18px; font-size: 0.875rem; text-align: center; line-height: 1.55; }
.concern-grid img { position: absolute; left: 0; bottom: 0; width: 44px; height: auto; }
.concern-grid span { color: var(--ink); font-family: inherit; font-size: inherit; font-weight: 400; }
.concern-end { position: relative; text-align: center; border-inline: 1px solid #888; max-width: 680px; margin: auto; padding: 12px 10px; font-size: 1.0625rem; font-weight: 700; }
.concern-end::before { content: ''; position: absolute; width: 0; height: 0; border-left: 10px solid transparent; border-right: 10px solid transparent; border-top: 17px solid var(--blue); top: -25px; left: calc(50% - 10px); }
.concern-end strong { color: var(--blue); display: inline-block; margin-top: 7px; }
.about { position: relative; padding: 220px 0 0; background: var(--pale); }
.about-photo { position: absolute; inset: 0 0 auto; height: 420px; background: url('assets/about.webp') center top / cover; }
.about-panel { position: relative; display: grid; grid-template-columns: 1fr 1fr; background: linear-gradient(90deg, #3c91c3 50%, #539ecc 50%); color: white; padding: 42px 80px 65px; gap: 90px; border-radius: 5px; }
.about-panel h2 { color: white; margin-top: -72px; }
.about-panel h3 { margin: 32px 0 28px; font-size: 1.8125rem; }
.about-panel p { font-size: 0.9375rem; line-height: 1.95; }
.about-panel .eyebrow { font-size: 1.0rem; }
.about-values { align-self: center; }
.about-values article { border-top: 1px solid #ffffff70; padding: 19px 0; position: relative; }
.about-values article:last-child { border-bottom: 1px solid #ffffff70; }
.about-values article h3 { margin: 0 0 6px; padding-left: 40px; font-size: 1.5625rem; }
.about-values article > span { position: absolute; top: 24px; font-size: 1.0rem; color: #fce970; }
.about-values article p { padding-left: 0; font-size: 0.875rem; }
.services { padding-top: 65px; padding-bottom: 90px; }
.service-main { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; }
.service-card { position: relative; background: white; border: 1px solid #d9e9f1; box-shadow: 0 0 8px #3c759a0a; border-radius: 8px; padding: 23px 24px; text-align: center; }
.service-card h3 { font-size: 1.4375rem; color: var(--blue); letter-spacing: .02em; line-height: 1.3; }
.service-card p { font-size: 0.875rem; margin-top: 12px; line-height: 1.65; }
.service-icon { position: absolute; width: 48px; height: 48px; object-fit: contain; left: 12px; top: -20px; }
.service-sub { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; margin-top: 34px; }
.service-sub .service-card { padding: 30px 17px 22px; border-radius: 18px; }
.service-sub h3 { font-size: 1.3125rem; }
.service-sub .service-icon { width: 40px; height: 40px; top: -15px; }
.index { display: block; color: var(--blue); font-size: 1.0rem; font-weight: 700; letter-spacing: .03em; }
.index b { color: #fbb332; }
.platforms { position: relative; background: white; border: 1px solid #d9e9f1; border-radius: 18px; margin-top: 58px; padding: 28px 25px 22px; box-shadow: 0 1px 8px #3c759a0a; }
.platform-label { position: absolute; top: -18px; left: 50%; transform: translateX(-50%); background: white; border: 1px solid #d9e9f1; border-radius: 30px; padding: 0 28px; color: var(--blue); font-size: 1.125rem; font-weight: 700; white-space: nowrap; }
.platforms > div { display: grid; grid-template-columns: 1fr 1fr; text-align: center; gap: 35px; }
.platforms article + article { border-left: 1px solid #ddd; padding-left: 30px; }
.platforms h3 { color: var(--blue); font-size: 1.375rem; margin: 12px 0 6px; letter-spacing: -.02em; }
.platforms p:not(.platform-label) { font-size: 0.875rem; line-height: 1.6; }
.platform-logo { height: 33px; width: auto; margin: 0 auto; }
.features { color: white; background: linear-gradient(45deg, transparent 20%, #0973ae28 20%, #0973ae28 35%, transparent 35%), linear-gradient(135deg, transparent 63%, #ffffff03 63%, #ffffff03 79%, transparent 79%), #2381c0; padding-block: 65px; }
.features h2 { color: white; }
.features .section-heading { margin-bottom: 40px; }
.features .section-heading > h3 { line-height: 1.55; }
.feature-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 28px 55px; }
.feature-grid article { position: relative; text-align: center; padding: 78px 10px 10px; }
.feature-grid article::before { content: ''; position: absolute; top: 43px; left: 68px; right: 0; border-top: 1px dotted #9dd3eb; }
.feature-grid h3 { font-size: 1.6875rem; color: #fff2a5; line-height: 1.35; }
.feature-grid p { font-size: 0.9375rem; line-height: 1.7; }
.feature-number { position: absolute; left: 0; top: 0; width: 72px; height: 72px; line-height: 72px; font-size: 2.4375rem; font-family: Arial, sans-serif; font-weight: 200; letter-spacing: -.07em; border: 1px solid #9ed6ed; border-radius: 50%; color: white; }
.feature-icon { width: 64px; height: 64px; object-fit: contain; margin: 26px auto; }
.partners { padding-bottom: 80px; background: linear-gradient(var(--pale) 0 50%, white 50%); }
.partners .section-heading { margin-bottom: 35px; }
.pill { position: relative; width: max-content; max-width: 100%; margin: auto; border-radius: 35px; background: var(--blue); color: white; font-size: 1.125rem; font-weight: 700; padding: 8px 28px; }
.pill::after { content: ''; position: absolute; bottom: -9px; left: calc(50% - 11px); border-left: 11px solid transparent; border-right: 11px solid transparent; border-top: 10px solid var(--blue); }
.partners-image { width: 760px; margin: 18px auto 45px; }
.partner-grid { max-width: 900px; margin: auto; display: grid; grid-template-columns: repeat(3, 1fr); gap: 35px; }
.partner-tag { display: inline-block; color: white; background: var(--blue); padding: 1px 11px; border-radius: 30px; font-weight: 700; font-size: 1.0rem; line-height: 1.5; }
.partner-role { color: #00a2dd; font-family: Arial, sans-serif; font-size: 1.0625rem; font-weight: 700; line-height: 1.1; letter-spacing: 0; margin-top: 7px; min-height: 58px; }
.partner-grid h3 { display: flex; flex-wrap: wrap; align-content: end; font-family: Arial, 'Yu Gothic', sans-serif; font-size: 1.6875rem; letter-spacing: -.025em; line-height: 1.2; min-height: 88px; padding: 12px 0 10px; margin: 17px 0 13px; border-block: 1px solid #d4d4d4; }
.partner-grid h3 small { font-size: 1.125rem; display: block; width: 100%; font-family: 'Yu Gothic', sans-serif; }
.partner-grid h3 small.inline { display: inline; width: auto; align-self: end; }
.partner-grid article > p:not(.partner-role) { font-size: 0.875rem; line-height: 1.8; }
.partner-grid h3.secondary-partner { min-height: 0; margin-top: 28px; padding-top: 0; border-top: 0; font-family: inherit; font-size: 1.375rem; }
.support { display: grid; grid-template-columns: minmax(250px, 1fr) minmax(500px, 730px) minmax(35px, .6fr); gap: 62px; align-items: stretch; padding: 65px 0; }
.support-photo { width: 100%; height: 100%; max-height: 1000px; object-fit: cover; object-position: center; }
.support-copy { padding: 0; position: relative; }
.support-art { position: absolute; width: 285px; right: -25px; top: -95px; }
.support-copy > h3 { margin: 38px 0 14px; font-size: 1.875rem; }
.support-copy > p { font-size: 1.0rem; }
.support-copy article { padding: 0 0 35px; margin-top: 38px; border-top: 1px dotted #b5c5ce; }
.support-copy article:last-child { padding-bottom: 0; }
.support-copy article .index { margin: 1px 0 27px; color: #539ecc; }
.support-copy article h3 { font-size: 1.75rem; color: var(--blue); }
.support-copy article p { font-size: 1.0rem; }
.steps { padding: 0; list-style: none; display: grid; grid-template-columns: repeat(6, 1fr); gap: 18px; margin: 98px 0 0; }
.steps li { position: relative; background: #e6f1f7; padding: 22px 17px 30px; border-radius: 7px; }
.steps li::before { content: ''; position: absolute; top: -30px; left: 50%; width: calc(100% + 18px); border-top: 2px dotted #59b3dc; }
.steps li:last-child::before { display: none; }
.steps span { position: absolute; z-index: 1; left: 50%; top: -63px; transform: translateX(-50%); display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--blue); color: white; font-family: Arial; font-size: 1.3125rem; letter-spacing: 0; }
.steps span::after { content: ''; position: absolute; bottom: -5px; left: calc(50% - 5px); border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 6px solid var(--blue); }
.steps h3 { font-size: 0.9375rem; color: var(--blue); letter-spacing: 0; text-align: center; white-space: nowrap; }
.steps p { font-size: 0.875rem; margin-top: 17px; line-height: 1.85; }
.faq-list { max-width: 835px; margin: auto; display: grid; gap: 22px; }
.faq summary { cursor: pointer; position: relative; list-style: none; padding: 18px 58px 18px 74px; font-size: 1.0rem; line-height: 1.7; background: white; border-radius: 3px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::before { content: 'Q'; position: absolute; left: 20px; top: 8px; color: var(--blue); font-family: Arial; font-size: 1.875rem; font-weight: 700; }
.faq summary::after { content: '+'; position: absolute; right: 21px; font-size: 1.9375rem; line-height: 1; top: 14px; color: #555; font-weight: 200; }
.faq details[open] summary::after { content: '−'; }
.faq details > p { position: relative; border-top: 1px solid var(--pale); padding: 20px 25px 22px 74px; font-size: 0.875rem; background: white; }
.faq details > p::before { content: 'A'; position: absolute; left: 22px; top: 7px; color: #9dcced; font-family: Arial; font-size: 1.8125rem; }
.company { padding-bottom: 65px; }
.company-layout { display: grid; grid-template-columns: 1.25fr .8fr; gap: 45px; }
.company-copy > h3 { font-size: 1.6875rem; margin: 32px 0; line-height: 1.7; letter-spacing: .01em; }
.company-copy > p:not(.eyebrow):not(.index) { font-size: 1.0rem; line-height: 1.8; }
.greeting-label { margin-top: 55px; }
.greeting-label, .company-copy h3.index { border-left: 3px solid var(--blue); padding-left: 8px; line-height: 1.2; }
.signature { text-align: right; margin: 40px 0 65px; padding-right: 80px; }
.signature strong { font-size: 1.375rem; margin-left: 8px; font-weight: 500; }
.company-copy h3.index { font-size: 1.25rem; margin: 0 0 20px; }
.company-table { margin: 0; }
.company-table > div { display: grid; grid-template-columns: 180px 1fr; background: #edf3f6; border-bottom: 3px solid white; font-size: 0.875rem; }
.company-table dt { padding: 15px; background: #e8edef; border-right: 3px solid white; }
.company-table dd { margin: 0; padding: 15px; overflow-wrap: anywhere; }
.company-visual { position: relative; margin-right: -85px; }
.office-photo { width: 100%; height: 100%; object-fit: cover; object-position: top center; }
.contact { border-top: 60px solid var(--pale); background: linear-gradient(45deg, transparent 20%, #ffffff07 20%, #ffffff07 36%, transparent 36%), linear-gradient(105deg, #197bb8, #2bb9d1); color: white; padding: 58px 0; }
.contact h2 { color: white; }
.contact-inner { max-width: 1000px; display: grid; grid-template-columns: 1fr 1.2fr; gap: 45px; }
.contact-inner p { font-size: 0.875rem; }
.contact-inner .eyebrow { margin-bottom: 28px; font-size: 1.0rem; }
.contact-action { text-align: center; align-self: center; }
.contact-action h3 { font-size: 1.4375rem; letter-spacing: .04em; }
.contact-button { border: 2px solid #fff; background: #ffffff08; min-width: 315px; margin-top: 35px; font-size: 1.125rem; box-shadow: 0 3px 3px #234b6230; }
.telephone { display: block; font-size: 1.75rem; font-weight: 700; line-height: 1.6; margin-top: 15px; letter-spacing: 0; }
.footer-inner { max-width: 1000px; display: flex; justify-content: space-between; gap: 30px; padding-block: 38px; }
.footer-inner .brand { margin: 6px 0 17px; }
.footer-inner p { font-size: 0.8125rem; color: #666; line-height: 1.7; }
.footer-inner nav { display: grid; align-content: center; grid-template-columns: repeat(3, 1fr); gap: 16px 24px; font-size: 0.875rem; }
.copyright { text-align: center; background: #075ba8; color: white; font-size: 0.75rem; padding: 10px; }
.menu-toggle { display: none; }
@media (min-width: 1700px) {
 .wrap { width: min(1440px, calc(100% - 100px)); }
 .narrow { max-width: 1200px; }
 .hero { min-height: 705px; max-width: 1440px; }
 .hero h1 { font-size: 4.0rem; }
 .hero-copy > p { font-size: 1.3125rem; }
 .hero-image { top: 45px; }
 .hero .button { min-width: 260px; min-height: 60px; font-size: 1.0rem; }
 .concerns { padding-top: 130px; padding-bottom: 120px; }
 .concern-grid { max-width: 940px; }
 .concern-grid p { min-height: 110px; font-size: 1.0625rem; padding-left: 65px; }
 .concern-grid img { width: 55px; }
 .concern-end { max-width: 790px; font-size: 1.25rem; }
 .japanese-title { font-size: 2.5rem; }
 h2 { font-size: 3.625rem; }
 .section { padding-block: 90px; }
 .about { padding-top: 300px; }
 .about-panel { padding: 55px 115px 80px; gap: 110px; }
 .about-panel h2 { margin-top: -85px; }
 .about-panel h3 { font-size: 2.125rem; }
 .about-panel p { font-size: 1.0625rem; }
 .partner-grid { max-width: 1050px; }
 .support { grid-template-columns: minmax(400px, 1fr) 880px minmax(60px, .6fr); gap: 78px; }
 .company-visual { margin-right: -120px; }
 .contact-inner, .footer-inner { max-width: 1200px; }
}
@media (max-width: 1300px) {
 .header nav { gap: 17px; font-size: 0.75rem; }
 .header { padding-inline: 30px; }
 .brand img { width: 190px; }
 .header .button { min-width: 125px; font-size: 0.75rem; padding-inline: 18px; }
 .hero { width: calc(100% - 110px); min-height: 515px; }
 .hero h1 { font-size: 2.5rem; }
 .hero-copy > p { font-size: 0.9375rem; }
 .hero-image { right: -3%; width: 53%; top: 50px; }
 .hero .button { min-width: 170px; padding-inline: 20px; }
 .about-panel { padding-inline: 60px; gap: 60px; }
 .support { grid-template-columns: 31% 1fr; gap: 45px; padding-right: 60px; }
 .company-layout { width: calc(100% - 110px); gap: 30px; }
 .company-visual { margin-right: -55px; }
 .company-copy > h3 { font-size: 1.4375rem; }
 .company-table > div { grid-template-columns: 135px 1fr; }
 .signature { padding-right: 20px; }
}
@media (max-width: 1100px) {
 .header { min-height: 80px; padding: 15px 25px; position: sticky; top: 0; z-index: 10; box-shadow: 0 2px 12px #233d4410; }
 .header nav { display: none; position: absolute; left: 0; right: 0; top: 80px; background: white; padding: 20px 25px; flex-direction: column; align-items: stretch; font-size: 1.0rem; gap: 0; box-shadow: 0 10px 15px #00000010; max-height: calc(100dvh - 80px); overflow-y: auto; }
 .header nav.is-open { display: flex; }
 .header nav > a { padding: 10px; }
 .header nav > .button { font-size: 1.0rem; margin-top: 10px; }
 .menu-toggle { display: flex; flex-direction: column; justify-content: center; gap: 6px; width: 44px; height: 44px; border: 0; background: none; padding: 9px; cursor: pointer; }
 .menu-toggle span { width: 26px; height: 2px; background: var(--blue); }
 .hero { width: calc(100% - 60px); min-height: 475px; }
 .hero h1 { font-size: 2.1875rem; }
 .hero-image { top: 65px; }
 .hero-copy > p br { display: none; }
 .hero-copy > p { max-width: 410px; }
 .hero .button { font-size: 0.8125rem; min-width: 145px; gap: 15px; padding-inline: 15px; }
 .concerns { padding-top: 80px; }
 .about-panel { padding: 35px 35px 40px; gap: 45px; }
 .about-panel h2 { margin-top: -64px; }
 .about-panel h3 { font-size: 1.5625rem; }
 .service-sub { gap: 18px; }
 .service-sub h3 { font-size: 1.1875rem; }
 .platforms h3 { font-size: 1.1875rem; }
 .partner-grid { gap: 25px; }
 .partner-role { font-size: 0.9375rem; }
 .partner-grid h3 { font-size: 1.5rem; }
 .support { gap: 30px; padding-right: 35px; }
 .support-art { width: 215px; right: -10px; top: -80px; }
 .support-copy > h3 { font-size: 1.5625rem; }
 .steps { grid-template-columns: repeat(3, 1fr); row-gap: 90px; }
 .steps li:nth-child(3)::before { display: none; }
 .steps h3 { font-size: 1.0625rem; }
 .steps p { font-size: 0.9375rem; }
 .company-layout { width: calc(100% - 60px); grid-template-columns: 1.35fr .7fr; gap: 20px; }
 .company-copy > h3 { font-size: 1.25rem; }
 .company-copy > p:not(.eyebrow):not(.index) { font-size: 0.9375rem; }
 .company-visual { margin-right: -30px; }
 .company-table > div { grid-template-columns: 100px 1fr; }
 .company-table dt, .company-table dd { padding: 11px; }
 .contact-inner { gap: 20px; }
 .contact-action h3 { font-size: 1.25rem; }
 .contact-button { min-width: 270px; }
 .footer-inner nav { gap: 15px; }
}
@media (max-width: 700px) {
 html { scroll-padding-top: 80px; }
 .wrap, .hero, .company-layout { width: calc(100% - 40px); }
 .section { padding: 55px 0; }
 h2 { font-size: 2.1875rem; }
 .hero { display: flex; flex-direction: column; align-items: stretch; padding: 35px 0 0; gap: 15px; }
 .hero h1 { font-size: clamp(30px, 6vw, 40px); line-height: 1.65; }
 .hero-copy > p { font-size: 1.0rem; max-width: 100%; margin: 20px 0 25px; }
 .hero-copy > p br { display: initial; }
 .hero-image { position: relative; inset: auto; width: 85%; align-self: end; max-width: 420px; margin-bottom: -40px; }
 .actions { gap: 12px; }
 .hero .button { min-width: 0; flex: 1; max-width: 220px; font-size: 0.875rem; gap: 12px; padding: 10px 15px; }
 .concerns { padding: 80px 0 65px; }
 .japanese-title { font-size: 1.625rem; line-height: 1.6; }
 .concern-grid { grid-template-columns: repeat(2, 1fr); gap: 26px 15px; margin: 35px 0 40px; }
 .concern-grid p { min-height: 90px; font-size: 0.875rem; padding: 12px 7px 12px 45px; }
 .concern-grid img { width: 38px; }
 .concern-end { font-size: 0.9375rem; padding: 10px; }
 .about { padding-top: 150px; }
 .about-photo { height: 300px; }
 .about-panel { grid-template-columns: 1fr; padding: 35px 28px; gap: 20px; background: #3c91c3; }
 .about-panel h2 { margin-top: -58px; }
 .about-panel h3 { font-size: 1.625rem; margin: 24px 0 20px; }
 .about-panel p { font-size: 1.0rem; }
 .about-values article h3 { margin: 0 0 8px; font-size: 1.4375rem; }
 .about-values article p { font-size: 0.9375rem; }
 .section-heading { margin-bottom: 42px; }
 .section-heading > h3 { font-size: 1.5rem; }
 .section-heading > h3 + p { font-size: 0.9375rem; }
 .service-main { grid-template-columns: 1fr; gap: 32px; }
 .service-card { padding: 27px 20px 22px; }
 .service-card h3 { font-size: 1.4375rem; }
 .service-card p { font-size: 0.9375rem; }
 .service-sub { grid-template-columns: repeat(2, 1fr); gap: 30px 18px; }
 .service-sub h3 { font-size: 1.1875rem; }
 .service-sub .service-card { padding: 27px 15px 20px; }
 .platforms { padding: 28px 18px 22px; }
 .platform-label { font-size: 0.9375rem; padding-inline: 15px; }
 .platforms > div { grid-template-columns: 1fr; gap: 25px; }
 .platforms article + article { padding: 25px 0 0; border-left: 0; border-top: 1px solid #ddd; }
 .platforms h3 { font-size: 1.3125rem; }
 .platforms p:not(.platform-label) { font-size: 0.9375rem; }
 .feature-grid { gap: 32px 20px; }
 .feature-grid article { padding: 65px 0 0; }
 .feature-grid article::before { left: 50px; top: 32px; }
 .feature-grid h3 { font-size: 1.3125rem; letter-spacing: .02em; }
 .feature-grid p { font-size: 0.875rem; }
 .feature-grid p br { display: none; }
 .feature-number { width: 52px; height: 52px; line-height: 52px; font-size: 1.75rem; }
 .feature-icon { width: 54px; height: 54px; margin-block: 22px; }
 .partners { background: linear-gradient(var(--pale) 0 25%, white 25%); }
 .partners-image { margin-bottom: 30px; }
 .partner-grid { grid-template-columns: 1fr; gap: 28px; }
 .partner-role { min-height: 0; font-size: 1.0625rem; }
 .partner-grid h3 { min-height: 0; font-size: 1.8125rem; padding-block: 15px; margin-top: 20px; }
 .partner-grid article > p:not(.partner-role) { font-size: 1.0rem; }
 .partner-grid h3.secondary-partner { font-size: 1.5rem; }
 .support { display: flex; flex-direction: column; padding: 40px 0; gap: 32px; }
 .support-photo { height: 260px; object-position: center 54%; width: 100%; }
 .support-copy { padding: 0 20px; }
 .support-copy .eyebrow { max-width: 55%; }
 .support-art { width: 175px; right: 10px; top: -40px; }
 .support-copy > h3 { margin-top: 45px; font-size: 1.5625rem; }
 .support-copy article { margin-top: 28px; padding-bottom: 12px; }
 .support-copy article h3 { font-size: 1.625rem; }
 .support-copy article .index { margin-bottom: 20px; }
 .process h2 { font-size: 1.875rem; }
 .process .section-heading h3 { font-size: 1.375rem; }
 .steps { gap: 75px 12px; margin-top: 85px; }
 .steps li { padding: 18px 12px 22px; }
 .steps h3 { font-size: 0.875rem; white-space: normal; min-height: 45px; }
 .steps p { font-size: 0.875rem; margin-top: 8px; }
 .steps span { font-size: 1.1875rem; }
 .faq-list { gap: 16px; }
 .faq summary { font-size: 0.9375rem; padding: 16px 42px 16px 48px; }
 .faq summary::before { left: 12px; top: 11px; font-size: 1.5625rem; }
 .faq summary::after { right: 13px; top: 15px; font-size: 1.6875rem; }
 .faq details > p { padding: 17px 18px 20px 48px; font-size: 0.9375rem; }
 .faq details > p::before { left: 12px; top: 10px; font-size: 1.5625rem; }
 .company-layout { display: flex; flex-direction: column; gap: 25px; }
 .company-copy > h3 { font-size: 1.375rem; margin-block: 25px; }
 .company-copy > p:not(.eyebrow):not(.index) { font-size: 1.0rem; }
 .greeting-label { margin-top: 38px; }
 .signature { margin: 28px 0 45px; padding: 0; }
 .company-table > div { grid-template-columns: 90px 1fr; }
 .company-table dt, .company-table dd { padding: 12px 10px; font-size: 0.875rem; }
 .company-visual { margin: 0; height: 480px; overflow: hidden; }
 .office-photo { width: 100%; height: auto; object-fit: contain; }
 .contact { padding-block: 40px; border-top-width: 30px; }
 .contact-inner { grid-template-columns: 1fr; gap: 28px; }
 .contact-inner p { font-size: 0.9375rem; }
 .contact-action { text-align: left; }
 .contact-action h3 { font-size: 1.3125rem; }
 .contact-button { width: 100%; margin-top: 25px; }
 .telephone { text-align: center; font-size: 1.8125rem; }
 .footer-inner { flex-direction: column; padding-block: 30px; }
 .footer-inner nav { font-size: 0.875rem; gap: 17px 10px; }
}
@media (max-width: 390px) {
 .hero h1 { font-size: 1.75rem; }
 .hero-copy > p { font-size: 0.9375rem; }
 .hero-copy > p br { display: none; }
 .hero .button { font-size: 0.75rem; gap: 5px; padding-inline: 10px; }
 .japanese-title { font-size: 1.4375rem; }
 .concern-grid { gap: 24px 10px; }
 .concern-grid p { font-size: 0.75rem; padding-left: 33px; }
 .concern-grid img { width: 30px; }
 .service-sub { gap: 28px 10px; }
 .service-sub .service-card { padding-inline: 10px; }
 .service-sub h3 { font-size: 1.0625rem; }
 .feature-grid h3 { font-size: 1.125rem; }
 .feature-grid { column-gap: 14px; }
 .support-art { width: 140px; }
 .process h2 { font-size: 1.5625rem; }
 .steps { grid-template-columns: repeat(2, 1fr); }
 .steps li:nth-child(3)::before { display: block; }
 .steps li:nth-child(2n)::before { display: none; }
 .company-copy > h3 { font-size: 1.1875rem; }
 .footer-inner nav { grid-template-columns: repeat(2, 1fr); }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* Keep offset artwork inside intermediate desktop viewports. */
@media (min-width: 1301px) and (max-width: 1699px) {
 .hero-image { right: max(-9%, calc((1200px - 100vw) / 2 + 16px)); }
 .company-visual { margin-right: max(-85px, calc((1200px - 100vw) / 2 + 16px)); }
}
@media (min-width: 701px) and (max-width: 950px) { .footer-inner { flex-wrap: wrap; } }

/* Semantic headings retain the supplied bilingual design. */
.heading-ja { display:block; font-family:'Hiragino Kaku Gothic ProN','Yu Gothic',Meiryo,sans-serif; font-size:1rem; line-height:1.7; letter-spacing:.04em; margin-top:1rem; color:var(--ink); }
.heading-ja::before {content:'';display:block;width:24px;height:1px;background:currentColor;margin:0 0 .65rem;}
.section-heading .heading-ja::before {margin-inline:auto;}
.about .heading-ja,.features .heading-ja,.contact .heading-ja {color:white;}
.support-copy>h2,.company-copy>h2 {margin-bottom:1.5rem;}
.contact h2 {margin-bottom:1.75rem;}
.skip-link {position:fixed;top:10px;left:10px;z-index:100;background:white;color:#075ba8;padding:12px 20px;transform:translateY(-160%);}
.skip-link:focus {transform:none;}
.hero-copy,.support-copy,.company-copy,.service-card,.partner-grid>article,.steps>li {min-width:0;}
.service-card p,.platforms p:not(.platform-label),.feature-grid p,.partner-grid article>p:not(.partner-role),.steps p,.faq details>p,.contact-inner p {font-size:1rem;}
.faq details>p a {text-decoration:underline;}
@media (min-width:1101px) and (max-width:1450px) { .header nav {gap:12px;font-size:.875rem;} .header {padding-inline:20px;gap:18px;} .header .brand img {width:180px;} .header .button {min-width:110px;padding-inline:12px;font-size:.875rem;} }
@media (max-width:700px) {
 .hero h1 {font-size:clamp(1.65rem,6vw,2.5rem);}
 .hero-copy>p {font-size:1rem;}
 .hero .button {font-size:.875rem;white-space:normal;}
 .concern-grid p {font-size:.875rem;}
 .steps {grid-template-columns:1fr;gap:24px;margin-top:30px;}
 .steps li {padding:20px 20px 20px 75px;}
 .steps span {left:18px;top:20px;transform:none;}
 .steps li::before,.steps li:nth-child(3)::before {display:none;}
 .steps h3 {min-height:0;text-align:left;font-size:1rem;}
 .company-visual {height:auto;overflow:visible;}
 .support-art {position:relative;inset:auto;width:175px;margin:-110px 0 18px auto;}
 .support-copy .heading-ja {max-width:100%;}
 .contact-button {min-width:0;}
}
@media (max-width:430px) {
 .concern-grid,.service-sub,.feature-grid {grid-template-columns:1fr;}
 .concern-grid p {min-height:90px;font-size:1rem;padding-left:55px;}
 .concern-grid img {width:42px;}
 .service-sub h3,.feature-grid h3 {font-size:1.375rem;}
 .hero-copy>p br,.company-copy>h3 br {display:none;}
 .process h2 {font-size:1.75rem;overflow-wrap:anywhere;}
 .company-copy>h3 {font-size:1.375rem;}
}
@media (scripting:none) and (max-width:1100px) {
 .header {position:relative;flex-wrap:wrap;}
 .menu-toggle {display:none;}
 .header nav {display:flex;position:static;max-height:none;box-shadow:none;width:100%;padding:0;}
}


/* Contact form */
.contact-inner { max-width: 1180px; grid-template-columns: .82fr 1.35fr; align-items: start; }
.contact-form-card { background: #fff; color: #22313b; border-radius: 18px; padding: 34px; text-align: left; box-shadow: 0 15px 45px rgba(4, 65, 104, .18); }
.contact-form-card h3 { margin: 0 0 24px; color: #164d70; line-height: 1.55; }
.contact-form { display: grid; gap: 18px; }
.contact-field { display: grid; gap: 7px; }
.contact-field > label, .contact-field-half label { font-size: .9rem; font-weight: 700; color: #284b60; }
.contact-field-half { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.contact-field-half > div { display: grid; gap: 7px; }
.contact-field input, .contact-field select, .contact-field textarea {
  width: 100%; box-sizing: border-box; border: 1px solid #bfd0db; border-radius: 9px; background: #fff; color: #24343e;
  padding: 12px 13px; font: inherit; line-height: 1.5; transition: border-color .2s, box-shadow .2s;
}
.contact-field textarea { resize: vertical; min-height: 150px; }
.contact-field input:focus, .contact-field select:focus, .contact-field textarea:focus { outline: none; border-color: #2381c0; box-shadow: 0 0 0 3px rgba(35,129,192,.14); }
.required, .optional { display: inline-block; margin-left: 5px; padding: 2px 6px; border-radius: 4px; font-size: .68rem; line-height: 1.3; vertical-align: .08em; }
.required { background: #e95555; color: #fff; }
.optional { background: #e7eef2; color: #637987; }
.contact-consent { display: flex; gap: 10px; align-items: flex-start; font-size: .8rem; line-height: 1.6; color: #536b79; cursor: pointer; }
.contact-consent input { width: 18px; height: 18px; margin-top: 3px; flex: 0 0 auto; accent-color: #2381c0; }
.contact-form-button { width: 100%; min-height: 56px; border: 0; cursor: pointer; font-size: 1rem; }
.contact-back-button { background: #e8eef2; color: #365363; border: 0; cursor: pointer; }
.contact-direct { margin: 16px 0 0 !important; text-align: center; color: #6a7d88; font-size: .82rem !important; }
.contact-direct a { color: #197bb8; font-weight: 700; }
.contact-errors { margin-bottom: 18px; padding: 13px 15px; border: 1px solid #e49b9b; border-radius: 8px; background: #fff2f2; color: #a62929; }
.contact-errors p { margin: 0; font-size: .82rem !important; line-height: 1.6; }
.contact-honeypot { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.contact-confirm { overflow: hidden; border: 1px solid #d9e4ea; border-radius: 10px; }
.contact-confirm dl { margin: 0; }
.contact-confirm dl > div { display: grid; grid-template-columns: 145px 1fr; border-bottom: 1px solid #e7eef2; }
.contact-confirm dl > div:last-child { border-bottom: 0; }
.contact-confirm dt, .contact-confirm dd { margin: 0; padding: 12px 14px; font-size: .86rem; line-height: 1.65; overflow-wrap: anywhere; }
.contact-confirm dt { background: #f1f6f8; font-weight: 700; color: #3f6072; }
.contact-confirm dd { background: #fff; }
.contact-confirm-actions { display: grid; grid-template-columns: 1fr 1.4fr; gap: 12px; margin-top: 20px; }
.contact-complete { text-align: center; padding: 10px 4px; }
.contact-complete-icon { display: inline-grid; place-items: center; width: 64px; height: 64px; margin-bottom: 18px; border-radius: 50%; background: #e7f8ef; color: #16935c; font-size: 2rem; font-weight: 800; }
.contact-complete h3 { color: #164d70; }
.contact-complete p { color: #536b79; font-size: .95rem !important; line-height: 1.8; }
.contact-complete .contact-note { margin-bottom: 22px; font-size: .82rem !important; }
@media (max-width: 900px) {
  .contact-inner { grid-template-columns: 1fr; }
  .contact-form-card { padding: 28px; }
}
@media (max-width: 600px) {
  .contact-form-card { padding: 22px 16px; border-radius: 14px; }
  .contact-field-half { grid-template-columns: 1fr; }
  .contact-confirm dl > div { grid-template-columns: 1fr; }
  .contact-confirm dt { padding-bottom: 6px; }
  .contact-confirm dd { padding-top: 6px; }
  .contact-confirm-actions { grid-template-columns: 1fr; }
}

/* Privacy Policy */
.privacy-page { background: #fff; }
.privacy-hero { padding: 84px 0 72px; border-top: 1px solid var(--line); }
.privacy-kicker { color: var(--blue); font-family: "Josefin Sans", sans-serif; font-size: 1rem; font-weight: 700; letter-spacing: .12em; margin-bottom: 10px; }
.privacy-hero h1 { color: var(--ink); font-size: clamp(2rem, 4vw, 3rem); line-height: 1.35; letter-spacing: .05em; }
.privacy-hero h1 + p { max-width: 820px; margin-top: 22px; font-size: .98rem; line-height: 1.95; }
.privacy-content { padding-top: 70px; padding-bottom: 95px; }
.privacy-card { max-width: 900px; }
.privacy-card article { padding: 0 0 34px; margin-bottom: 34px; border-bottom: 1px solid var(--line); }
.privacy-card article:last-of-type { margin-bottom: 24px; }
.privacy-card h2 { font-family: inherit; color: var(--ink); font-size: 1.35rem; line-height: 1.55; letter-spacing: .04em; margin-bottom: 15px; }
.privacy-card h2::before { content: ''; display: inline-block; width: 5px; height: 1.2em; margin-right: 12px; vertical-align: -.18em; border-radius: 4px; background: linear-gradient(var(--blue), var(--cyan)); }
.privacy-card p, .privacy-card li { font-size: .95rem; line-height: 1.95; }
.privacy-card ul { margin: 12px 0 14px; padding-left: 1.5em; }
.privacy-card li + li { margin-top: 5px; }
.privacy-card a:not(.button) { color: var(--blue); text-decoration: underline; text-underline-offset: 3px; }
.privacy-date { text-align: right; color: #667; font-size: .88rem !important; margin-top: 14px; }
.privacy-back { display: flex; justify-content: center; margin-top: 48px; }
.privacy-back .button { min-width: 220px; }
.contact-consent a { color: var(--blue); text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 700px) {
  .privacy-hero { padding: 58px 0 50px; }
  .privacy-content { padding-top: 48px; padding-bottom: 70px; }
  .privacy-card article { padding-bottom: 27px; margin-bottom: 27px; }
  .privacy-card h2 { font-size: 1.16rem; }
  .privacy-card p, .privacy-card li { font-size: .9rem; }
  .privacy-date { text-align: left; }
}
