/* ===== Design tokens (design.md) ===== */
:root{
  --color-accent:#F28F27;
  --color-accent-strong:#F25D07;
  --color-accent-deep:#BF4906;
  --color-accent-deep-hover:#A84005;
  --color-accent-soft:#FFDC92;
  --color-bg:#F7F4EF;
  --color-surface:#FFFFFF;
  --color-surface-alt:#EFEAE2;
  --color-contrast:#1A1A1A;
  --color-text:#2B2A28;
  --color-text-muted:#6B6862;
  --color-text-faint:#A9A59E;
  --color-text-inverse:#FFFFFF;
  --color-border:#E2DDD5;
  --color-label-on-alt:#A63D05;

  --font-ja:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;
  --font-en:"Montserrat","Jost","Outfit",system-ui,sans-serif;
  --tracking-label:.16em;
  --tracking-hero:.16em;
  --leading-body:2.0;

  --space-1:8px;
  --space-2:16px;
  --space-3:32px;
  --space-4:64px;
  --space-5:120px;
  --space-6:160px;
  --gutter:80px;

  --content-max:1280px;
  --text-max:640px;
  --header-height:72px;

  --radius-bleed:56px;
  --radius-tag:4px;
  --radius-thumb:8px;
  --radius-card:16px;
  --radius-media:32px;
  --radius-pill:9999px;

  --shadow-card:0 8px 32px rgba(60,50,40,.06);
  --shadow-card-hover:0 16px 40px rgba(60,50,40,.10);
  --shadow-media:0 24px 60px rgba(60,50,40,.10);

  --dur-fast:200ms;
  --dur-base:400ms;
  --dur-slow:800ms;
  --dur-hero:1400ms;
  --ease-out:cubic-bezier(.22,1,.36,1);
  --ease-io:cubic-bezier(.4,0,.2,1);
}
@media (max-width:1023px){
  :root{
    --space-5:64px;
    --space-6:80px;
    --gutter:40px;
    --radius-media:20px;
    --tracking-hero:.06em;
    --leading-body:1.9;
  }
}
@media (max-width:639px){
  :root{
    --gutter:24px;
    --header-height:64px;
    --radius-bleed:48px;
  }
}

/* ===== Reset / base ===== */
*{box-sizing:border-box}
html{overflow-x:clip;scroll-behavior:smooth}
body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-ja);-webkit-font-smoothing:antialiased}
img{max-width:100%}
a{color:var(--color-text);text-decoration:none}
a:hover{color:var(--color-accent-deep)}
h1,h2,h3,p,dl,dd,ul,figure{margin:0}
ul{padding:0}
button{font-family:inherit;cursor:pointer}
:focus-visible{outline:2px solid var(--color-accent-deep);outline-offset:3px}

.container{max-width:calc(var(--content-max) + var(--gutter) * 2);margin:0 auto;padding-inline:var(--gutter)}

.eyebrow{display:flex;align-items:center;gap:16px}
.eyebrow-line{display:block;width:40px;height:1px;background:var(--color-accent);transform-origin:left}
.eyebrow-label{font-family:var(--font-en);font-size:12px;letter-spacing:var(--tracking-label);color:var(--color-accent-deep)}
.eyebrow-label--on-alt{color:var(--color-label-on-alt)}

.section{padding-block:var(--space-6)}
.section--tight{padding-block:var(--space-5)}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* ===== Motion keyframes ===== */
@keyframes ubpFade{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes ubpWipe{from{clip-path:inset(0 100% 0 0);opacity:0}to{clip-path:inset(0 0 0 0);opacity:1}}
@keyframes ubpGrow{from{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}
@keyframes ubpDrawX{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes ubpHeroImg{from{transform:scale(1.08)}to{transform:scale(1)}}
@keyframes ubpBlob{0%{border-radius:58% 42% 40% 60% / 52% 48% 52% 48%}50%{border-radius:38% 62% 60% 40% / 46% 58% 42% 54%}100%{border-radius:60% 40% 44% 56% / 58% 42% 56% 44%}}
@keyframes ubpSoft{0%{border-radius:62% 38% 44% 56% / 42% 58% 40% 60%}33%{border-radius:42% 58% 60% 40% / 56% 44% 62% 38%}66%{border-radius:56% 44% 36% 64% / 62% 38% 52% 48%}100%{border-radius:38% 62% 58% 42% / 44% 56% 38% 62%}}
@keyframes ubpBreath{from{transform:scale(1)}to{transform:scale(1.06)}}
@keyframes ubpDotRail{0%{transform:translateY(0);opacity:0}25%{opacity:1}75%{opacity:1}100%{transform:translateY(64px);opacity:0}}

[data-reveal]{opacity:0;transform:translateY(24px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}
[data-reveal].is-visible{opacity:1;transform:none}
[data-stagger-item]{opacity:0;transform:translateY(20px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}
[data-stagger-item].is-visible{opacity:1;transform:none}
.no-js [data-reveal],.no-js [data-stagger-item]{opacity:1;transform:none}

.blob{animation:ubpSoft 22s ease-in-out infinite alternate}
.blob--breath{animation:ubpSoft 22s ease-in-out infinite alternate,ubpBreath 12s ease-in-out infinite alternate}
.blob--wander{animation:ubpBlob 22s ease-in-out infinite alternate}
.motion-off .blob,.motion-off .blob--breath,.motion-off .blob--wander{animation:none}

/* ===== Header ===== */
.site-header{position:sticky;top:0;z-index:40;height:var(--header-height);display:flex;align-items:center;justify-content:space-between;padding-inline:var(--gutter);background:rgba(247,244,239,.9);backdrop-filter:blur(12px)}
.site-header__logo img{height:40px;display:block}
.site-header__nav{display:flex;align-items:center;gap:32px}
.nav-link{position:relative;font-family:var(--font-en);font-size:12px;letter-spacing:var(--tracking-label);text-transform:uppercase;padding-bottom:6px;transition:color var(--dur-fast)}
.nav-link[aria-current="page"]{color:var(--color-accent-deep)}
.nav-link[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--color-accent-deep)}
.nav-cta{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-en);font-size:12px;letter-spacing:.12em;text-transform:uppercase;background:var(--color-accent-deep);color:#fff;border-radius:var(--radius-pill);padding:12px 28px;margin-left:8px;transition:gap var(--dur-base) var(--ease-io),background var(--dur-base),transform var(--dur-base)}
.nav-cta:hover{background:var(--color-accent-deep-hover);color:#fff;gap:16px;transform:translateY(-2px)}
.nav-toggle{display:none;align-items:center;justify-content:center;width:44px;height:44px;background:none;border:none;padding:0;color:var(--color-text)}
.nav-toggle svg{width:22px;height:22px}

@media (max-width:1023px){
  .site-header__nav{position:fixed;inset:0;top:var(--header-height);height:calc(100vh - var(--header-height));background:var(--color-bg);flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:8px;padding:var(--space-3) var(--gutter);clip-path:inset(0 0 0 100%);transition:clip-path var(--dur-base) var(--ease-io);overflow-y:auto;pointer-events:none}
  .site-header__nav.is-open{clip-path:inset(0 0 0 0);pointer-events:auto}
  .no-js .site-header__nav{position:static;height:auto;clip-path:none;pointer-events:auto;flex-direction:row;align-items:center;padding:0}
  .nav-link{font-size:20px;padding:16px 0;width:100%;border-bottom:1px solid var(--color-border)}
  .no-js .nav-link{font-size:12px;padding-bottom:6px;width:auto;border-bottom:none}
  .nav-cta{margin:16px 0 0;justify-content:center;width:100%}
  .no-js .nav-cta{margin-left:8px;margin-top:0;width:auto}
  .nav-toggle{display:flex}
  .no-js .nav-toggle{display:none}
}

/* ===== Buttons ===== */
.btn{display:inline-flex;align-items:center;gap:16px;border-radius:var(--radius-pill);padding:16px 40px;font-family:inherit;font-size:13px;letter-spacing:.12em;white-space:nowrap;border:none;transition:gap var(--dur-base) var(--ease-io),background var(--dur-base),color var(--dur-base),transform var(--dur-base)}
.btn:hover{transform:translateY(-2px)}
.btn-arrow{font-family:var(--font-en)}
.btn--primary{background:var(--color-accent-deep);color:#fff}
.btn--primary:hover{background:var(--color-accent-deep-hover);color:#fff;gap:24px}
.btn--dark{background:var(--color-contrast);color:#fff}
.btn--dark:hover{background:#000;color:#fff;gap:24px}
.btn--ghost{background:var(--color-surface);color:var(--color-accent-deep);border:1px solid var(--color-accent-deep)}
.btn--ghost:hover{background:var(--color-accent-deep);color:#fff;gap:22px}
.link-more{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-en);font-size:12px;letter-spacing:var(--tracking-label);transition:gap var(--dur-base)}
.link-more:hover{gap:20px;color:var(--color-accent-deep)}
.link-more__chevron{color:var(--color-accent-deep)}

@media (max-width:639px){
  .btn{width:100%;justify-content:center;height:56px;padding-inline:24px}
}

/* ===== Media / blobs ===== */
.media{position:relative;overflow:hidden}
.media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--dur-slow) var(--ease-out)}
.media:hover img{transform:scale(1.04)}
.media--radius{border-radius:var(--radius-media)}
.media--organic-a{border-radius:58% 42% 40% 60% / 52% 48% 52% 48%}
.media--organic-b{border-radius:42% 58% 60% 40% / 56% 44% 62% 38%}
.media--organic-c{border-radius:56% 44% 36% 64% / 62% 38% 52% 48%}
.media--organic-d{border-radius:38% 62% 58% 42% / 44% 56% 38% 62%}
.media--shadow{box-shadow:var(--shadow-media)}
.media--bleed-left{border-radius:0 var(--radius-bleed) var(--radius-bleed) 0}

.deco-circle{border-radius:62% 38% 44% 56% / 42% 58% 40% 60%}

/* ===== Cards / tags / lists ===== */
.card{background:var(--color-surface);border-radius:var(--radius-card);padding:var(--space-3);box-shadow:var(--shadow-card);transition:transform var(--dur-base),box-shadow var(--dur-base)}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-card-hover)}

.tag{display:inline-block;font-size:12px;letter-spacing:.06em;padding:6px 12px;border:1px solid var(--color-border);border-radius:var(--radius-tag);color:var(--color-text)}
.tag-row{display:flex;flex-wrap:wrap;gap:8px}

.spec-list{margin:0;display:grid;grid-template-columns:200px minmax(0,1fr);column-gap:24px;font-size:15px;line-height:1.9;letter-spacing:.04em}
.spec-list dt{display:flex;align-items:center;gap:16px;padding:20px 0;border-top:1px solid var(--color-border);font-weight:500;color:var(--color-accent-deep)}
.spec-list dt::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--color-accent-deep);flex:none}
.spec-list dd{padding:20px 0;border-top:1px solid var(--color-border)}
.spec-list.is-last dt,.spec-list.is-last dd{border-bottom:1px solid var(--color-border)}
@media (max-width:639px){
  .spec-list{grid-template-columns:minmax(0,1fr)}
  .spec-list dd{padding-top:0}
}

.note-list{list-style:none;margin:0;display:flex;flex-direction:column;gap:6px}
.note-list li{font-size:13px;line-height:1.9;color:var(--color-text-muted);text-indent:-1.2em;padding-left:1.2em}

.link-row{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:32px 0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);transition:color var(--dur-fast)}
.link-row:hover{color:var(--color-accent-deep)}
.link-row + .link-row{border-top:none}
.link-row__meta{display:flex;flex-direction:column;gap:10px}
.link-row__eyebrow{font-family:var(--font-en);font-size:12px;letter-spacing:var(--tracking-label);color:var(--color-text-muted)}
.link-row__title{font-size:16px;letter-spacing:.06em}
.link-row__chevron{font-family:var(--font-en);font-size:18px;color:var(--color-accent-deep)}

.related-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
@media (max-width:767px){
  .related-grid{grid-template-columns:minmax(0,1fr)}
}

/* ===== CTA banner ===== */
.cta-banner{position:relative;background:var(--color-accent-soft);border-radius:56px;padding:88px 96px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:64px;align-items:center;overflow:hidden}
.cta-banner__deco{position:absolute;background:var(--color-accent);opacity:.32}
.cta-banner__deco--b{opacity:.16}
.cta-banner h2{font-size:34px;font-weight:400;letter-spacing:.08em;line-height:1.6;color:var(--color-text)}
.cta-banner p{margin-top:20px;font-size:15px;line-height:2;letter-spacing:.05em;color:var(--color-text)}
@media (max-width:767px){
  .cta-banner{grid-template-columns:minmax(0,1fr);padding:56px 32px;border-radius:32px;text-align:left}
  .cta-banner h2{font-size:26px}
}

/* ===== Footer ===== */
.site-footer{background:var(--color-surface-alt);border-radius:56px 56px 0 0;padding:var(--space-6) var(--gutter) var(--space-3)}
.footer-nav{display:flex;justify-content:center;flex-wrap:wrap;gap:48px;padding-bottom:40px;border-bottom:1px solid var(--color-border)}
.footer-nav a{font-family:var(--font-en);font-size:12px;letter-spacing:var(--tracking-label);text-transform:uppercase;transition:color var(--dur-fast)}
.footer-body{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:64px;padding-block:var(--space-4);align-items:start}
.footer-brand{display:flex;flex-direction:column;gap:24px}
.footer-brand img{height:36px;width:auto;display:block}
.footer-address{display:flex;flex-direction:column;gap:6px;font-size:13px;line-height:1.9;letter-spacing:.04em;color:var(--color-text-muted)}
.footer-legal{display:flex;flex-direction:column;gap:14px;text-align:right}
.footer-legal a{font-size:12px;letter-spacing:.08em;color:var(--color-text-muted);transition:color var(--dur-fast)}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;border-top:1px solid var(--color-border);gap:24px}
.footer-copy{font-family:var(--font-en);font-size:12px;letter-spacing:.1em;color:var(--color-text-muted)}
.footer-top{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-en);font-size:12px;letter-spacing:var(--tracking-label);color:var(--color-text-muted);transition:gap var(--dur-base),color var(--dur-fast)}
.footer-top:hover{color:var(--color-accent-deep);gap:20px}
@media (max-width:767px){
  .footer-body{grid-template-columns:minmax(0,1fr);gap:32px}
  .footer-legal{text-align:left}
  .footer-bottom{flex-direction:column;align-items:flex-start;gap:16px}
}

/* ===== Page hero (下層ページ) ===== */
.page-hero{position:relative;padding:var(--space-6) var(--gutter) var(--space-5);overflow:hidden}
.page-hero__deco{position:absolute}
.page-hero__title{display:flex;align-items:center;gap:20px;margin:0;font-family:var(--font-en);font-size:clamp(2rem,4vw,3rem);font-weight:400;letter-spacing:.08em;line-height:1.2}
.page-hero__dot{width:20px;height:20px;background:var(--color-accent-deep);flex:none}
.page-hero__lede{margin-top:8px;font-size:16px;line-height:2.1;letter-spacing:.05em;max-width:34em}

/* ===== Forms ===== */
.field{display:flex;flex-direction:column;gap:12px}
.field__label{font-size:13px;letter-spacing:.08em;display:inline-flex;align-items:center;gap:10px}
.field__required{font-size:11px;letter-spacing:.06em;color:var(--color-accent-deep)}
input,select,textarea{font-family:inherit;font-size:15px;letter-spacing:.04em;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:16px 18px;width:100%}
input::placeholder,textarea::placeholder{color:var(--color-text-faint)}
.form-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
@media (max-width:639px){.form-grid-2{grid-template-columns:minmax(0,1fr)}}
.checkbox-field{display:flex;align-items:flex-start;gap:14px;font-size:14px;line-height:1.9;letter-spacing:.04em}
.checkbox-field input{width:20px;height:20px;flex:none;margin-top:6px;padding:0;border-radius:4px}
.form-error{display:none;margin:0;font-size:14px;line-height:1.9;letter-spacing:.04em;color:var(--color-accent-deep)}
.form-error.is-visible{display:block}
.form-thanks{display:none;background:var(--color-accent-soft);border-radius:16px;padding:32px;flex-direction:column;gap:12px}
.form-thanks.is-visible{display:flex}

/* ===== Pagination ===== */
.pagination{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:var(--space-4)}
.pagination a,.pagination span{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:44px;padding:0 4px;font-family:var(--font-en);font-size:13px;letter-spacing:.08em}
.pagination [aria-disabled]{color:var(--color-text-faint);font-size:18px}
.pagination [aria-current]{border-radius:var(--radius-pill);background:var(--color-accent-deep);color:#fff}

.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ===== TOP: Hero ===== */
.hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 520px;gap:64px;align-items:center;padding:calc(var(--header-height) + var(--space-4)) var(--gutter) var(--space-5);overflow:hidden}
.hero__outline{position:absolute;left:calc(-1 * var(--gutter));top:12%;width:56%;height:70%;border:1px solid var(--color-border);border-radius:45% 55% 58% 42% / 48% 56% 44% 52%;z-index:0}
.hero__media{position:relative;order:1}
.hero__photo{aspect-ratio:6/5;border-radius:0 var(--radius-bleed) var(--radius-bleed) 0;margin-left:calc(-1 * var(--gutter))}
.hero__satellite{position:absolute;right:12%;bottom:-40px;width:30%;aspect-ratio:1;border-radius:56% 44% 48% 52% / 46% 54% 46% 54%;box-shadow:var(--shadow-media);z-index:2}
.hero__satellite-caption{position:absolute;left:12%;bottom:-56px;display:flex;align-items:center;gap:14px;z-index:2}
.hero__caption-line{width:40px;height:1px;background:var(--color-border)}
.hero__caption-text{font-size:12px;letter-spacing:.1em;color:var(--color-text-muted);white-space:nowrap}
.hero__content{position:relative;order:2;display:flex;flex-direction:column;gap:32px}
.hero__title{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:20px;font-size:clamp(1.75rem,3.4vw,3.25rem);font-weight:300;letter-spacing:var(--tracking-hero);line-height:1.6}
.hero__title-dot{width:22px;height:22px;background:var(--color-accent-deep);flex:none}
.hero__lede{font-size:15px;line-height:2.1;letter-spacing:.05em;color:var(--color-text-muted);max-width:30em}
.hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:24px}
.hero__note{display:inline-flex;align-items:center;gap:10px;font-size:13px;letter-spacing:.08em;color:var(--color-text-muted)}
.hero__note-dot{width:6px;height:6px;border-radius:50%;background:var(--color-accent-deep)}
.hero__scroll{grid-column:1 / -1;justify-self:start;display:inline-flex;align-items:center;gap:18px;margin-top:var(--space-4);font-family:var(--font-en);font-size:12px;letter-spacing:var(--tracking-label);color:var(--color-accent-deep)}
.hero__scroll-rail{position:relative;display:block;width:1px;height:64px;background:var(--color-border)}
.hero__scroll-dot{position:absolute;left:-4px;top:0;width:9px;height:9px;border-radius:50%;background:var(--color-accent-deep);animation:ubpDotRail 2.6s var(--ease-io) infinite}
.motion-off .hero__scroll-dot{animation:none}

@media (max-width:1023px){
  .hero{grid-template-columns:minmax(0,1fr);gap:var(--space-3);padding-top:calc(var(--header-height) + var(--space-3))}
  .hero__outline{display:none}
  .hero__photo{margin-left:calc(-1 * var(--gutter));margin-right:calc(-1 * var(--gutter));border-radius:0 0 var(--radius-bleed) var(--radius-bleed);width:calc(100% + var(--gutter) * 2)}
  .hero__satellite{width:34%;right:8%}
  .hero__satellite-caption{left:8%;bottom:-64px}
  .hero__content{order:2;margin-top:var(--space-3)}
  .hero__scroll{display:none}
}
@media (max-width:639px){
  .hero__satellite-caption .hero__caption-text{font-size:11px}
}

/* ===== TOP: About / mission ===== */
.about{display:grid;grid-template-columns:480px minmax(0,1fr);gap:96px;align-items:center}
.about__media{position:relative}
.about__photo{aspect-ratio:1/1;border-radius:56% 44% 48% 52% / 46% 54% 46% 54%}
.about__since{position:absolute;left:24px;bottom:8px;display:flex;align-items:center;gap:14px}
.about h2{position:relative;font-size:clamp(1.75rem,3vw,2.375rem);font-weight:300;letter-spacing:.08em;line-height:1.6;color:var(--color-accent-deep)}
.section-blob-accent{position:absolute;left:-24px;top:-14px;width:72px;height:72px;background:var(--color-accent-soft);z-index:0}
.about h2 span{position:relative;z-index:1}
@media (max-width:1023px){
  .about{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}
  .about__media{max-width:420px}
}

/* ===== TOP: Service list ===== */
.service-list{background:var(--color-surface-alt);border-radius:56px 56px 0 0;padding:var(--space-5) var(--gutter) var(--space-6)}
.service-list__head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--space-4)}
.service-rows{display:flex;flex-direction:column;gap:var(--space-5)}
.service-row{display:grid;grid-template-columns:560px minmax(0,1fr);gap:64px;align-items:center}
.service-row--reverse{grid-template-columns:minmax(0,1fr) 560px}
.service-row--reverse .service-row__media{order:2}
.service-row--reverse .service-row__text{order:1}
.service-row__media{position:relative}
.service-row__photo{aspect-ratio:7/5}
.service-row__index{position:absolute;top:-54px;font-family:var(--font-en);font-size:96px;font-weight:300;line-height:1;color:var(--color-text-muted)}
.service-row--reverse .service-row__index{left:8px}
.service-row:not(.service-row--reverse) .service-row__index{right:8px}
.service-row__deco{position:absolute;width:92px;height:92px;top:-34px;background:var(--color-accent-soft)}
.service-row--reverse .service-row__deco{left:-8px}
.service-row:not(.service-row--reverse) .service-row__deco{right:-8px}
.service-row__text{display:flex;flex-direction:column;gap:24px;max-width:560px}
.service-row__text h3{font-size:22px;font-weight:400;letter-spacing:.08em;line-height:1.7}
.service-row__text p{font-size:15px;line-height:2;letter-spacing:.04em}
@media (max-width:1023px){
  .service-row,.service-row--reverse{grid-template-columns:minmax(0,1fr);gap:32px}
  .service-row--reverse .service-row__media,.service-row--reverse .service-row__text{order:initial}
  .service-row__index{font-size:64px;top:-38px}
}

/* ===== NEWS list ===== */
.news-row{display:grid;grid-template-columns:280px 180px minmax(0,1fr) auto;gap:40px;align-items:center;padding:28px 0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);transition:color var(--dur-base)}
.news-row:hover{color:var(--color-accent-deep)}
.news-row__thumb{aspect-ratio:2/1;border-radius:var(--radius-thumb);overflow:hidden}
.news-row__date{display:flex;align-items:center;gap:16px;font-family:var(--font-en);font-size:13px;letter-spacing:.1em;color:var(--color-text-muted)}
.news-row__dot{width:7px;height:7px;border-radius:50%;background:var(--color-accent-deep);flex:none}
.news-row__title{font-size:17px;font-weight:400;letter-spacing:.06em;line-height:1.7}
.news-row__chevron{font-family:var(--font-en);font-size:18px;color:var(--color-accent-deep)}
@media (max-width:767px){
  .news-row{grid-template-columns:minmax(0,1fr);gap:16px}
  .news-row__thumb{order:-1}
}

/* ===== CONTACT teaser (TOP) ===== */
.contact-teaser{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:36px}
.contact-teaser h2{position:relative;font-family:var(--font-en);font-size:clamp(2.5rem,6vw,4.5rem);font-weight:300;letter-spacing:.14em;line-height:1.3;color:var(--color-text)}
.contact-teaser__deco{position:absolute;left:50%;top:-30px;width:128px;height:128px;margin-left:-64px;background:var(--color-accent-soft);z-index:0}
.contact-teaser h2 span{position:relative;z-index:1}
.contact-teaser p{font-size:16px;line-height:2;letter-spacing:.08em;color:var(--color-text-muted)}

/* ===== COMPANY: alliance diagram ===== */
.alliance{background:var(--color-surface-alt);border-radius:56px;margin-inline:var(--gutter);padding:var(--space-5) 96px}
.alliance__head{display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center;margin-bottom:var(--space-5)}
.alliance__head h2{font-size:clamp(1.75rem,3vw,2.125rem);font-weight:300;letter-spacing:.12em;line-height:1.6;color:var(--color-accent-deep)}
.alliance__head p{font-size:15px;line-height:2;letter-spacing:.05em;color:var(--color-text-muted);max-width:34em}
.diagram{position:relative;width:100%;max-width:840px;height:640px;margin:0 auto}
.diagram__line{position:absolute;background:var(--color-accent-deep);opacity:.5}
.diagram__node{position:absolute;width:180px;height:180px;background:var(--color-accent-soft);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}
.diagram__node-en{font-family:var(--font-en);font-size:11px;letter-spacing:.18em}
.diagram__node-ja{font-size:18px;letter-spacing:.1em}
.diagram__core{width:200px;height:200px;background:var(--color-accent-deep);color:#fff}
.diagram__core .diagram__node-en{color:#fff}
.diagram__core-desc{font-size:12px;letter-spacing:.06em;line-height:1.8;color:#fff;max-width:120px}
@media (max-width:900px){
  .diagram{height:auto;max-width:420px}
  .diagram__line{display:none}
  .diagram{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;justify-items:center}
  .diagram__node,.diagram__core{position:static;width:100%;aspect-ratio:1;height:auto}
  .diagram__core{grid-column:1 / -1;max-width:220px;margin:0 auto}
}

/* ===== COMPANY / SERVICE: 2-col detail sections ===== */
.detail{display:grid;grid-template-columns:minmax(0,1fr) 520px;gap:96px;align-items:start}
.detail--media-right{grid-template-columns:minmax(0,1fr) 520px}
.detail__media{position:relative}
.detail__photo{aspect-ratio:1/1}
@media (max-width:1023px){
  .detail{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}
}

.values-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
@media (max-width:639px){.values-grid{grid-template-columns:minmax(0,1fr)}}
.value-card{display:flex;gap:28px;align-items:flex-start}
.value-card__badge{flex:none;width:64px;height:64px;background:var(--color-accent-soft);display:flex;align-items:center;justify-content:center;font-family:var(--font-en);font-size:15px}
.value-card h3{font-family:var(--font-en);font-size:20px;font-weight:400;letter-spacing:.08em;color:var(--color-accent-deep)}
.value-card p{margin-top:12px;font-size:15px;line-height:1.9;letter-spacing:.04em}

.profile{display:grid;grid-template-columns:320px minmax(0,1fr);gap:96px;align-items:start}
.profile__label{position:sticky;top:calc(var(--header-height) + 32px);display:flex;flex-direction:column;gap:16px}
.profile__body{display:flex;flex-direction:column;gap:var(--space-4)}
.business-list{list-style:none;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 32px}
.business-list li{display:flex;align-items:flex-start;gap:14px;font-size:15px;line-height:1.9;letter-spacing:.04em}
.business-list li::before{content:"";margin-top:10px;width:6px;height:6px;border-radius:50%;background:var(--color-accent);flex:none}
@media (max-width:1023px){
  .profile{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}
  .profile__label{position:static}
}
@media (max-width:639px){.business-list{grid-template-columns:minmax(0,1fr)}}

/* ===== SERVICE page ===== */
.service-pills{display:flex;gap:16px;flex-wrap:wrap;margin-top:24px}
.pill-link{display:inline-flex;align-items:center;gap:14px;padding:14px 28px;border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);font-size:13px;letter-spacing:.08em;transition:gap var(--dur-base),border-color var(--dur-base),transform var(--dur-base)}
.pill-link:hover{border-color:var(--color-accent-deep);color:var(--color-accent-deep);gap:20px;transform:translateY(-2px)}
.pill-link__num{font-family:var(--font-en);color:var(--color-accent-deep)}
.service-detail{padding-block:var(--space-5)}
.service-detail--alt{background:var(--color-surface-alt);border-radius:56px;margin-inline:var(--gutter);padding-inline:72px}
@media (max-width:639px){.service-detail--alt{margin-inline:var(--space-2);padding-inline:24px;border-radius:32px}}

/* ===== NEWS page ===== */
.news-list-head{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:24px}
.news-detail{background:var(--color-surface-alt);border-radius:56px;margin-inline:var(--gutter);padding:96px 96px 104px;display:grid;grid-template-columns:minmax(0,1fr) 520px;gap:80px;align-items:center}
@media (max-width:1023px){.news-detail{grid-template-columns:minmax(0,1fr);gap:32px;margin-inline:var(--space-2);padding:56px 32px}}

/* ===== CONTACT page ===== */
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px}
.step{position:relative;display:flex;flex-direction:column;gap:24px;align-items:flex-start}
.step__connector{position:absolute;left:112px;top:56px;right:-40px;height:1px;background:var(--color-border)}
.step__badge{position:relative;width:112px;height:112px;background:var(--color-accent-soft);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.step__badge--final{background:var(--color-accent-deep);color:#fff}
.step__badge-label{font-family:var(--font-en);font-size:11px;letter-spacing:.16em}
.step__badge-num{font-family:var(--font-en);font-size:22px;font-weight:300}
.step h3{font-size:18px;font-weight:500;letter-spacing:.06em;line-height:1.6}
.step p{font-size:14px;line-height:1.9;letter-spacing:.04em;color:var(--color-text-muted);max-width:24em}
@media (max-width:1023px){
  .steps{grid-template-columns:minmax(0,1fr);gap:40px}
  .step__connector{display:none}
}

.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:96px;align-items:start}
.contact-aside{position:sticky;top:calc(var(--header-height) + 32px);display:flex;flex-direction:column;gap:32px}
.office-card{background:var(--color-surface);border-radius:var(--radius-card);padding:var(--space-3);box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:24px}
.office-card__head{display:flex;align-items:center;gap:12px}
.office-dl{margin:0;display:flex;flex-direction:column;gap:8px;font-size:14px;line-height:1.9;letter-spacing:.04em}
.office-dl > div{display:flex;gap:4px}
.office-dl dt{color:var(--color-text-muted)}
.aside-links{display:flex;flex-direction:column;gap:14px}
.aside-links a{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 0;border-top:1px solid var(--color-border);font-size:15px;letter-spacing:.06em;transition:color var(--dur-fast)}
.aside-links a:last-child{border-bottom:1px solid var(--color-border)}
@media (max-width:1023px){
  .contact-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}
  .contact-aside{position:static}
}
